@anov/3d-ability 0.0.165 → 0.0.167
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/dist/business/Animation/motion/index.d.ts +3 -2
- package/dist/business/Animation/motion/index.js +6 -1
- package/dist/business/Animation/motion/index.js.map +1 -1
- package/dist/business/Area/Fence/FenceBase.d.ts +2 -2
- package/dist/business/Area/Fence/FenceBase.js +1 -1
- package/dist/business/Area/Fence/FenceBase.js.map +1 -1
- package/dist/business/Area/Fence/fence_base_01.js +1 -1
- package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.d.ts +2 -2
- package/dist/business/Area/FillArea/FillAreaBase.js +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
- package/dist/business/Area/index.d.ts +2 -1
- package/dist/business/Area/index.js +2 -2
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Base/ObjectLayer.d.ts +4 -2
- package/dist/business/Base/ObjectLayer.js +7 -11
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Batch/index.d.ts +1 -1
- package/dist/business/Batch/index.js +2 -2
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Box/index.d.ts +1 -1
- package/dist/business/Box/index.js +2 -2
- package/dist/business/Box/index.js.map +1 -1
- package/dist/business/Box/interface.js.map +1 -1
- package/dist/business/Box/types.js.map +1 -1
- package/dist/business/Cylinder/index.d.ts +1 -1
- package/dist/business/Cylinder/index.js +2 -2
- package/dist/business/Cylinder/index.js.map +1 -1
- package/dist/business/Cylinder/interface.d.ts +1 -1
- package/dist/business/Cylinder/interface.js.map +1 -1
- package/dist/business/Cylinder/types.js.map +1 -1
- package/dist/business/Flyline/index.d.ts +2 -2
- package/dist/business/Flyline/index.js +8 -8
- package/dist/business/Flyline/index.js.map +1 -1
- package/dist/business/Flyline/line/ArcLine.d.ts +1 -1
- package/dist/business/Flyline/line/ArcLine.js +3 -3
- package/dist/business/Flyline/line/ArcLine.js.map +1 -1
- package/dist/business/HeatMap/HeatMap.d.ts +3 -59
- package/dist/business/HeatMap/HeatMap.js +7 -95
- package/dist/business/HeatMap/HeatMap.js.map +1 -1
- package/dist/business/InfoPanel/index.d.ts +3 -4
- package/dist/business/InfoPanel/index.js +13 -19
- package/dist/business/InfoPanel/index.js.map +1 -1
- package/dist/business/InfoPanel/type.js.map +1 -1
- package/dist/business/Line/index.d.ts +3 -3
- package/dist/business/Line/index.js +8 -7
- package/dist/business/Line/index.js.map +1 -1
- package/dist/business/Line/interface.d.ts +4 -4
- package/dist/business/Line/interface.js.map +1 -1
- package/dist/business/Line/types.js.map +1 -1
- package/dist/business/Mark/index.d.ts +2 -1
- package/dist/business/Mark/index.js +3 -3
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.d.ts +5 -3
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +14 -10
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/index.js.map +1 -1
- package/dist/business/Plane/index.d.ts +3 -2
- package/dist/business/Plane/index.js +2 -2
- package/dist/business/Plane/index.js.map +1 -1
- package/dist/business/Plane/interface.d.ts +5 -5
- package/dist/business/Plane/interface.js.map +1 -1
- package/dist/business/Plane/types.js.map +1 -1
- package/dist/business/Poi/index.d.ts +2 -3
- package/dist/business/Poi/index.js +25 -54
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/link/Cylinder.d.ts +2 -1
- package/dist/business/Poi/link/Cylinder.js +3 -3
- package/dist/business/Poi/link/Cylinder.js.map +1 -1
- package/dist/business/Poi/link/Pyramid.d.ts +2 -1
- package/dist/business/Poi/link/Pyramid.js +2 -2
- package/dist/business/Poi/link/Pyramid.js.map +1 -1
- package/dist/business/Poi/link/index.d.ts +3 -3
- package/dist/business/Poi/link/index.js +2 -2
- package/dist/business/Poi/link/index.js.map +1 -1
- package/dist/business/Poi/panel/index.d.ts +3 -3
- package/dist/business/Poi/panel/index.js +7 -6
- package/dist/business/Poi/panel/index.js.map +1 -1
- package/dist/business/Poi/panel/interfaces.js.map +1 -1
- package/dist/business/Poi/panel/utils.d.ts +1 -1
- package/dist/business/Poi/panel/utils.js +3 -3
- package/dist/business/Poi/panel/utils.js.map +1 -1
- package/dist/business/Poi/particle/DoubleCircle.d.ts +2 -1
- package/dist/business/Poi/particle/DoubleCircle.js +3 -2
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/DynamicCircle.d.ts +2 -1
- package/dist/business/Poi/particle/DynamicCircle.js +3 -2
- package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.d.ts +2 -1
- package/dist/business/Poi/particle/SingleCircle.js +3 -2
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/particle/index.d.ts +2 -2
- package/dist/business/Poi/particle/index.js +2 -2
- package/dist/business/Poi/particle/index.js.map +1 -1
- package/dist/business/Poi/title/Border.d.ts +2 -1
- package/dist/business/Poi/title/Border.js +2 -2
- package/dist/business/Poi/title/Border.js.map +1 -1
- package/dist/business/Poi/title/Ellipse.d.ts +2 -1
- package/dist/business/Poi/title/Ellipse.js +2 -2
- package/dist/business/Poi/title/Ellipse.js.map +1 -1
- package/dist/business/Poi/title/index.d.ts +3 -2
- package/dist/business/Poi/title/index.js +2 -2
- package/dist/business/Poi/title/index.js.map +1 -1
- package/dist/business/Sphere/index.d.ts +2 -2
- package/dist/business/Sphere/index.js +2 -2
- package/dist/business/Sphere/index.js.map +1 -1
- package/dist/business/Sphere/interface.js.map +1 -1
- package/dist/business/Sphere/types.js.map +1 -1
- package/dist/business/Spline/index.d.ts +2 -1
- package/dist/business/Spline/index.js +14 -28
- package/dist/business/Spline/index.js.map +1 -1
- package/dist/business/SplitBuilding/index.d.ts +2 -2
- package/dist/business/SplitBuilding/index.js +2 -2
- package/dist/business/SplitBuilding/index.js.map +1 -1
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.d.ts +2 -2
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +6 -5
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.d.ts +2 -2
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +3 -3
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/base.d.ts +4 -4
- package/dist/business/TrafficComponents/base.js +6 -6
- package/dist/business/TrafficComponents/base.js.map +1 -1
- package/dist/business/TrafficComponents/index.d.ts +4 -2
- package/dist/business/TrafficComponents/index.js +2 -2
- package/dist/business/TrafficComponents/index.js.map +1 -1
- package/dist/business/Utils/defineProps.js +3 -3
- package/dist/business/Utils/defineProps.js.map +1 -1
- package/dist/business/VideoPanel/index.d.ts +4 -4
- package/dist/business/VideoPanel/index.js +11 -13
- package/dist/business/VideoPanel/index.js.map +1 -1
- package/dist/business/VideoPanel/type.d.ts +8 -8
- package/dist/business/VideoPanel/type.js.map +1 -1
- package/dist/business/Water/index.d.ts +3 -1
- package/dist/business/Water/index.js +5 -5
- package/dist/business/Water/index.js.map +1 -1
- package/dist/business/index.d.ts +21 -18
- package/dist/business/index.js +18 -18
- package/dist/business/index.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.d.ts +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +4 -4
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/dist/core/Camera/index.d.ts +2 -1
- package/dist/core/Camera/index.js +1 -1
- package/dist/core/Camera/index.js.map +1 -1
- package/dist/core/Controls/FirstViewControl/index.d.ts +3 -2
- package/dist/core/Controls/FirstViewControl/index.js +4 -2
- package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/index.d.ts +3 -2
- package/dist/core/Controls/ThirdViewControl/index.js +6 -3
- package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/camera.d.ts +4 -2
- package/dist/core/Controls/ThirdViewControl/player/camera.js +5 -2
- package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player.d.ts +4 -2
- package/dist/core/Controls/ThirdViewControl/player.js +6 -2
- package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
- package/dist/core/Controls/base.d.ts +4 -3
- package/dist/core/Controls/base.js +5 -3
- package/dist/core/Controls/base.js.map +1 -1
- package/dist/core/Curve/index.d.ts +2 -1
- package/dist/core/Curve/index.js +1 -1
- package/dist/core/Curve/index.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/dist/core/Material/index.d.ts +5 -3
- package/dist/core/Material/index.js +3 -3
- package/dist/core/Material/index.js.map +1 -1
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.d.ts +2 -1
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +4 -4
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
- package/dist/core/PostEffects/addBrightnessContrastPass.d.ts +2 -1
- package/dist/core/PostEffects/addBrightnessContrastPass.js +4 -4
- package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
- package/dist/core/PostEffects/bloomPass.d.ts +2 -1
- package/dist/core/PostEffects/bloomPass.js +6 -5
- package/dist/core/PostEffects/bloomPass.js.map +1 -1
- package/dist/core/PostEffects/bloomSelect.d.ts +2 -2
- package/dist/core/PostEffects/bloomSelect.js +7 -6
- package/dist/core/PostEffects/bloomSelect.js.map +1 -1
- package/dist/core/PostEffects/colorifyPass.d.ts +2 -2
- package/dist/core/PostEffects/colorifyPass.js +4 -4
- package/dist/core/PostEffects/colorifyPass.js.map +1 -1
- package/dist/core/PostEffects/index.d.ts +4 -13
- package/dist/core/PostEffects/index.js +14 -20
- package/dist/core/PostEffects/index.js.map +1 -1
- package/dist/core/PostEffects/outlinePass.d.ts +2 -2
- package/dist/core/PostEffects/outlinePass.js +4 -5
- package/dist/core/PostEffects/outlinePass.js.map +1 -1
- package/dist/core/PostEffects/postprocessing.d.ts +2 -2
- package/dist/core/PostEffects/postprocessing.js +2 -2
- package/dist/core/PostEffects/postprocessing.js.map +1 -1
- package/dist/core/PostEffects/saoPass.d.ts +2 -1
- package/dist/core/PostEffects/saoPass.js +4 -5
- package/dist/core/PostEffects/saoPass.js.map +1 -1
- package/dist/core/SceneEffect/grow/grow.d.ts +3 -1
- package/dist/core/SceneEffect/grow/grow.js +5 -3
- package/dist/core/SceneEffect/grow/grow.js.map +1 -1
- package/dist/core/WeatherSystem/DynamicWeatherSystem.d.ts +3 -1
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js +6 -4
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
- package/dist/core/WeatherSystem/color/index.d.ts +3 -0
- package/dist/core/WeatherSystem/color/index.js +9 -14
- package/dist/core/WeatherSystem/color/index.js.map +1 -1
- package/dist/core/WeatherSystem/controller/ColorController.d.ts +3 -1
- package/dist/core/WeatherSystem/controller/ColorController.js +5 -3
- package/dist/core/WeatherSystem/controller/ColorController.js.map +1 -1
- package/dist/core/WeatherSystem/controller/HDRController.d.ts +3 -1
- package/dist/core/WeatherSystem/controller/HDRController.js +5 -3
- package/dist/core/WeatherSystem/controller/HDRController.js.map +1 -1
- package/dist/core/WeatherSystem/controller/SkyController.d.ts +3 -1
- package/dist/core/WeatherSystem/controller/SkyController.js +4 -2
- package/dist/core/WeatherSystem/controller/SkyController.js.map +1 -1
- package/dist/core/WeatherSystem/hdr/index.d.ts +4 -2
- package/dist/core/WeatherSystem/hdr/index.js +12 -11
- package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
- package/dist/core/WeatherSystem/index.d.ts +3 -2
- package/dist/core/WeatherSystem/index.js +7 -4
- package/dist/core/WeatherSystem/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/index.d.ts +2 -1
- package/dist/core/WeatherSystem/objects/rain/index.js +3 -3
- package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/lineRain.d.ts +3 -1
- package/dist/core/WeatherSystem/objects/rain/lineRain.js +7 -5
- package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/plane.d.ts +3 -1
- package/dist/core/WeatherSystem/objects/rain/plane.js +6 -4
- package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/point.d.ts +3 -1
- package/dist/core/WeatherSystem/objects/rain/point.js +3 -0
- package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
- package/dist/core/WeatherSystem/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
- package/dist/core/WeatherSystem/weather/index.d.ts +3 -2
- package/dist/core/WeatherSystem/weather/index.js +7 -5
- package/dist/core/WeatherSystem/weather/index.js.map +1 -1
- package/dist/index.d.ts +13 -8
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -32,14 +32,10 @@ var defaultGradient = {
|
|
|
32
32
|
0.85: 'yellow',
|
|
33
33
|
1.0: 'rgb(255,0,0)'
|
|
34
34
|
};
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* 区域热力图
|
|
38
|
-
*/
|
|
39
35
|
var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
40
36
|
_inherits(HeatMap, _Object3D);
|
|
41
37
|
var _super = _createSuper(HeatMap);
|
|
42
|
-
function HeatMap(options) {
|
|
38
|
+
function HeatMap(options, sceneControl) {
|
|
43
39
|
var _options$radius, _options$height, _options$isPixel;
|
|
44
40
|
var _this;
|
|
45
41
|
_classCallCheck(this, HeatMap);
|
|
@@ -55,13 +51,13 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
55
51
|
_defineProperty(_assertThisInitialized(_this), "_attachmentMesh", void 0);
|
|
56
52
|
_defineProperty(_assertThisInitialized(_this), "_supercluster", void 0);
|
|
57
53
|
_defineProperty(_assertThisInitialized(_this), "_range", void 0);
|
|
54
|
+
_defineProperty(_assertThisInitialized(_this), "sceneControl", void 0);
|
|
55
|
+
_this.sceneControl = sceneControl;
|
|
58
56
|
_this._colorMap = options.colorMap || defaultGradient;
|
|
59
57
|
_this._radius = (_options$radius = options.radius) !== null && _options$radius !== void 0 ? _options$radius : 40;
|
|
60
58
|
_this._height = (_options$height = options.height) !== null && _options$height !== void 0 ? _options$height : 70;
|
|
61
59
|
_this._isPixel = (_options$isPixel = options.isPixel) !== null && _options$isPixel !== void 0 ? _options$isPixel : false;
|
|
62
60
|
_this._range = options.range;
|
|
63
|
-
|
|
64
|
-
// this.initSupercluster()
|
|
65
61
|
return _this;
|
|
66
62
|
}
|
|
67
63
|
_createClass(HeatMap, [{
|
|
@@ -85,10 +81,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
85
81
|
maxZoom: 16
|
|
86
82
|
});
|
|
87
83
|
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* set supercluster data
|
|
91
|
-
*/
|
|
92
84
|
}, {
|
|
93
85
|
key: "setSuperclusterData",
|
|
94
86
|
value: function setSuperclusterData() {
|
|
@@ -105,12 +97,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
105
97
|
console.log('正在加载点数据到supercluster:', featuresPoints.length);
|
|
106
98
|
this._supercluster.load(featuresPoints);
|
|
107
99
|
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* get zoom level
|
|
111
|
-
* @param camera
|
|
112
|
-
* @returns
|
|
113
|
-
*/
|
|
114
100
|
}, {
|
|
115
101
|
key: "getZoomLevel",
|
|
116
102
|
value: function getZoomLevel(camera) {
|
|
@@ -120,26 +106,16 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
120
106
|
var maxHeight = 1000;
|
|
121
107
|
return Math.max(minZoom, Math.min(maxZoom, (maxHeight - camera.position.y) / (maxHeight - minHeight) * (maxZoom - minZoom) + minZoom));
|
|
122
108
|
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* get supercluster data
|
|
126
|
-
* @returns
|
|
127
|
-
*/
|
|
128
109
|
}, {
|
|
129
110
|
key: "getSuperclusterData",
|
|
130
111
|
value: function getSuperclusterData() {
|
|
131
112
|
var _this$calDataMaxMin = this.calDataMaxMin(),
|
|
132
113
|
max = _this$calDataMaxMin.max;
|
|
133
|
-
var zoom = this.getZoomLevel(use.useScene().camera);
|
|
114
|
+
var zoom = this.getZoomLevel(use.useScene(this.sceneControl).camera);
|
|
134
115
|
var clusters = this._supercluster.getClusters([-max, -max, max, max], zoom);
|
|
135
116
|
console.log('当前缩放级别:', zoom, '输入点数量:', this.data.length, '聚类后点数量:', clusters.length);
|
|
136
117
|
return clusters;
|
|
137
118
|
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* calculate data max and min
|
|
141
|
-
* @returns
|
|
142
|
-
*/
|
|
143
119
|
}, {
|
|
144
120
|
key: "calDataMaxMin",
|
|
145
121
|
value: function calDataMaxMin() {
|
|
@@ -180,11 +156,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
180
156
|
maxRadius: maxRadius
|
|
181
157
|
};
|
|
182
158
|
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* generateAsitePoints
|
|
186
|
-
* @param data
|
|
187
|
-
*/
|
|
188
159
|
}, {
|
|
189
160
|
key: "generateAsitePoints",
|
|
190
161
|
value: function generateAsitePoints(data) {
|
|
@@ -239,15 +210,9 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
239
210
|
maxRadius: maxRadius
|
|
240
211
|
};
|
|
241
212
|
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* generate new origin
|
|
245
|
-
* @returns
|
|
246
|
-
*/
|
|
247
213
|
}, {
|
|
248
214
|
key: "newOrigin",
|
|
249
215
|
get: function get() {
|
|
250
|
-
// need to consider one point and multiple points
|
|
251
216
|
var _this$calDataMaxMin2 = this.calDataMaxMin(),
|
|
252
217
|
minX = _this$calDataMaxMin2.minX,
|
|
253
218
|
minZ = _this$calDataMaxMin2.minZ,
|
|
@@ -258,12 +223,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
258
223
|
z: (maxZ + minZ) / 2
|
|
259
224
|
};
|
|
260
225
|
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* coordinate 3D transformation
|
|
264
|
-
* @param data
|
|
265
|
-
* @returns
|
|
266
|
-
*/
|
|
267
226
|
}, {
|
|
268
227
|
key: "coordinate3DTransformation",
|
|
269
228
|
value: function coordinate3DTransformation(data) {
|
|
@@ -280,12 +239,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
280
239
|
});
|
|
281
240
|
});
|
|
282
241
|
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* coordinate transformation, to canvas coordinate
|
|
286
|
-
* @param data
|
|
287
|
-
* @returns
|
|
288
|
-
*/
|
|
289
242
|
}, {
|
|
290
243
|
key: "coordinateTransformation",
|
|
291
244
|
value: function coordinateTransformation(data) {
|
|
@@ -308,21 +261,8 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
308
261
|
isBoundary: item === null || item === void 0 ? void 0 : item.isBoundary
|
|
309
262
|
};
|
|
310
263
|
});
|
|
311
|
-
|
|
312
|
-
// console.log('原始', data, realShowWidth, realShowHeight)
|
|
313
|
-
// console.log('newOrigin', this.newOrigin)
|
|
314
|
-
// console.log('hanldeData', hanldeData)
|
|
315
|
-
// console.log('结果', result)
|
|
316
|
-
// console.log('resolutionScale', resolutionScale, realShowWidth, realShowHeight, realShowWidth * resolutionScale, realShowHeight * resolutionScale)
|
|
317
|
-
|
|
318
264
|
return result;
|
|
319
265
|
}
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* generate heatmap texture
|
|
323
|
-
* @param canvasBox
|
|
324
|
-
* @returns
|
|
325
|
-
*/
|
|
326
266
|
}, {
|
|
327
267
|
key: "createHeatmapTool",
|
|
328
268
|
value: function createHeatmapTool() {
|
|
@@ -335,11 +275,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
335
275
|
});
|
|
336
276
|
return heatmap;
|
|
337
277
|
}
|
|
338
|
-
|
|
339
|
-
/**
|
|
340
|
-
* create heatmap container canvas
|
|
341
|
-
* @returns
|
|
342
|
-
*/
|
|
343
278
|
}, {
|
|
344
279
|
key: "createCanvas",
|
|
345
280
|
value: function createCanvas(width, height) {
|
|
@@ -348,15 +283,9 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
348
283
|
canvasBox.style.height = "".concat(height, "px");
|
|
349
284
|
canvasBox.style.top = '0';
|
|
350
285
|
canvasBox.style.right = '0';
|
|
351
|
-
use.useScene().domElement.parentElement.appendChild(canvasBox);
|
|
286
|
+
use.useScene(this.sceneControl).domElement.parentElement.appendChild(canvasBox);
|
|
352
287
|
return canvasBox;
|
|
353
288
|
}
|
|
354
|
-
|
|
355
|
-
/**
|
|
356
|
-
* calculate resolution scale
|
|
357
|
-
* @param width
|
|
358
|
-
* @returns
|
|
359
|
-
*/
|
|
360
289
|
}, {
|
|
361
290
|
key: "calResolutionScale",
|
|
362
291
|
value: function calResolutionScale() {
|
|
@@ -394,10 +323,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
394
323
|
}
|
|
395
324
|
return 1;
|
|
396
325
|
}
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* create attachment mesh
|
|
400
|
-
*/
|
|
401
326
|
}, {
|
|
402
327
|
key: "createAttachmentMesh",
|
|
403
328
|
value: function createAttachmentMesh() {
|
|
@@ -453,11 +378,6 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
453
378
|
this._attachmentMesh = mesh;
|
|
454
379
|
this.add(mesh);
|
|
455
380
|
}
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
* set heatmap data
|
|
459
|
-
* @param data
|
|
460
|
-
*/
|
|
461
381
|
}, {
|
|
462
382
|
key: "setData",
|
|
463
383
|
value: function setData(data) {
|
|
@@ -466,7 +386,7 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
466
386
|
boundaryPoints = _this$generateAsitePo.boundaryPoints;
|
|
467
387
|
this.data = [].concat(_toConsumableArray(boundaryPoints), _toConsumableArray(data));
|
|
468
388
|
var heatmapData = this.coordinateTransformation(this.data);
|
|
469
|
-
this._canvasBox && use.useScene().domElement.parentElement.removeChild(this._canvasBox);
|
|
389
|
+
this._canvasBox && use.useScene(this.sceneControl).domElement.parentElement.removeChild(this._canvasBox);
|
|
470
390
|
this._canvasBox = this.createCanvas(Math.max.apply(Math, _toConsumableArray(heatmapData.map(function (item) {
|
|
471
391
|
return item.x;
|
|
472
392
|
}))), Math.max.apply(Math, _toConsumableArray(heatmapData.map(function (item) {
|
|
@@ -481,22 +401,14 @@ var HeatMap = /*#__PURE__*/function (_Object3D) {
|
|
|
481
401
|
min: (_this$_range$min = (_this$_range2 = this._range) === null || _this$_range2 === void 0 ? void 0 : _this$_range2.min) !== null && _this$_range$min !== void 0 ? _this$_range$min : 0
|
|
482
402
|
});
|
|
483
403
|
this.createAttachmentMesh();
|
|
484
|
-
|
|
485
|
-
// 聚类暂时不实现
|
|
486
|
-
// this.setSuperclusterData()
|
|
487
|
-
// use.useScene().orbitControls.addEventListener('change', () => {
|
|
488
|
-
// const clusters = this.getSuperclusterData()
|
|
489
|
-
// console.log(clusters)
|
|
490
|
-
// })
|
|
491
404
|
}
|
|
492
405
|
}, {
|
|
493
406
|
key: "removeFromParent",
|
|
494
407
|
value: function removeFromParent() {
|
|
495
408
|
_get(_getPrototypeOf(HeatMap.prototype), "removeFromParent", this).call(this);
|
|
496
|
-
// todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系
|
|
497
409
|
if (this.parent) {
|
|
498
410
|
var _this$_attachmentMesh;
|
|
499
|
-
use.useScene().domElement.parentElement.removeChild(this._canvasBox);
|
|
411
|
+
use.useScene(this.sceneControl).domElement.parentElement.removeChild(this._canvasBox);
|
|
500
412
|
|
|
501
413
|
// @ts-ignore
|
|
502
414
|
(_this$_attachmentMesh = this._attachmentMesh) === null || _this$_attachmentMesh === void 0 || _this$_attachmentMesh.material.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CanvasTexture","DoubleSide","Mesh","NearestFilter","Object3D","PlaneGeometry","ShaderMaterial","Vector2","use","h","Supercluster","heightFragmentShader","heightVertexShader","defaultGradient","HeatMap","_Object3D","_inherits","_super","_createSuper","options","_options$radius","_options$height","_options$isPixel","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_colorMap","colorMap","_radius","radius","_height","height","_isPixel","isPixel","_range","range","_createClass","key","get","Math","max","apply","_toConsumableArray","data","map","item","value","_url","initSupercluster","_supercluster","minZoom","maxZoom","setSuperclusterData","featuresPoints","type","properties","geometry","coordinates","x","z","console","log","length","load","getZoomLevel","camera","minHeight","maxHeight","min","position","y","getSuperclusterData","_this$calDataMaxMin","calDataMaxMin","zoom","useScene","clusters","getClusters","_this2","maxX","minX","maxZ","minZ","abs","ceil","maxRadius","_item$radius","concat","width","realShowWidth","realShowHeight","realShowMax","generateAsitePoints","_this3","_item$radius2","boundaryPoints","isBoundary","_this$calDataMaxMin2","coordinate3DTransformation","_this4","_this$newOrigin","newOrigin","_item$radius3","_objectSpread","coordinateTransformation","_this5","hanldeData","_this$calDataMaxMin3","resolutionScale","calResolutionScale","result","_item$radius4","floor","createHeatmapTool","heatmap","create","container","_canvasBox","gradient","maxOpacity","minOpacity","createCanvas","canvasBox","document","createElement","style","top","right","domElement","parentElement","appendChild","_this$calDataMaxMin4","maxY","scale","createAttachmentMesh","_attachmentMesh","remove","_this$calDataMaxMin5","canvas","_heatmap","_renderer","texture","minFilter","magFilter","toDataURL","threshold","shaderMaterial","uniforms","granularity","uOpacity","uHeight","uRange","vertexShader","fragmentShader","transparent","side","depthTest","mesh","_this$newOrigin2","rotation","PI","set","renderOrder","add","setData","_this$_range$max","_this$_range","_this$_range$min","_this$_range2","_this$generateAsitePo","heatmapData","removeChild","filter","defaultMax","removeFromParent","_get","_getPrototypeOf","prototype","parent","_this$_attachmentMesh","material","dispose"],"sources":["../../../src/business/HeatMap/HeatMap.ts"],"sourcesContent":["import type { PerspectiveCamera } from '@anov/3d-core'\nimport { CanvasTexture, DoubleSide, Mesh, NearestFilter, Object3D, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport h from 'anov-heat-map'\nimport type { AnyProps } from 'supercluster'\nimport Supercluster from 'supercluster'\nimport { heightFragmentShader, heightVertexShader } from './shader'\nimport type { HeatMapData, HeatMapnterface } from './index'\n\ntype RangeType = {\n min: number\n max: number\n}\n\ntype HeatMapOptions = {\n colorMap?: {\n [key: number]: string\n }\n max?: number\n radius?: number\n height?: number\n isPixel?: boolean\n range?: RangeType\n}\n\nconst defaultGradient = { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' }\n\n/**\n * 区域热力图\n */\n\nclass HeatMap extends Object3D implements HeatMapnterface {\n public data: HeatMapData[] = []\n\n private _height: number\n private _radius: number\n private _heatmap: any\n private _url: string\n private _colorMap: {\n [key: number]: string\n }\n\n private _isPixel: boolean\n private _canvasBox: HTMLDivElement | undefined\n private _attachmentMesh: Mesh | undefined\n private _supercluster: Supercluster\n private _range: RangeType | undefined\n\n private get defaultMax() {\n return Math.max(...this.data.map(item => item.value))\n }\n\n public get url() {\n return this._url\n }\n\n constructor(options: HeatMapOptions) {\n super()\n\n this._colorMap = options.colorMap || defaultGradient\n this._radius = options.radius ?? 40\n this._height = options.height ?? 70\n this._isPixel = options.isPixel ?? false\n this._range = options.range\n\n // this.initSupercluster()\n }\n\n private initSupercluster() {\n this._supercluster = new Supercluster({\n radius: 40,\n minZoom: 1,\n maxZoom: 16,\n })\n }\n\n /**\n * set supercluster data\n */\n private setSuperclusterData() {\n const featuresPoints = this.data.map((item) => {\n return {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Point',\n coordinates: [item.x, item.z],\n },\n }\n })\n\n console.log('正在加载点数据到supercluster:', featuresPoints.length)\n this._supercluster.load(featuresPoints as Supercluster.PointFeature<AnyProps>[])\n }\n\n /**\n * get zoom level\n * @param camera\n * @returns\n */\n private getZoomLevel(camera: PerspectiveCamera) {\n const minZoom = 10\n const maxZoom = 16\n const minHeight = 10\n const maxHeight = 1000\n\n return Math.max(minZoom, Math.min(maxZoom,\n ((maxHeight - camera.position.y) / (maxHeight - minHeight)) * (maxZoom - minZoom) + minZoom,\n ))\n }\n\n /**\n * get supercluster data\n * @returns\n */\n private getSuperclusterData() {\n const { max } = this.calDataMaxMin()\n const zoom = this.getZoomLevel(use.useScene().camera)\n const clusters = this._supercluster.getClusters([-max, -max, max, max], zoom)\n\n console.log('当前缩放级别:', zoom, '输入点数量:', this.data.length, '聚类后点数量:', clusters.length)\n\n return clusters\n }\n\n /**\n * calculate data max and min\n * @returns\n */\n private calDataMaxMin() {\n const maxX = Math.max(...this.data.map(item => item.x))\n const minX = Math.min(...this.data.map(item => item.x))\n const maxZ = Math.max(...this.data.map(item => item.z))\n const minZ = Math.min(...this.data.map(item => item.z))\n\n const max = Math.max(Math.abs(Math.ceil(maxX)), Math.abs(Math.ceil(minX)), Math.abs(Math.ceil(maxZ)), Math.abs(Math.ceil(minZ)), 60)\n const maxRadius = Math.max(...this.data.map(item => item.radius ?? this._radius), this._radius)\n\n const width = max * 2\n const height = max * 2\n\n const realShowWidth = maxX - minX\n const realShowHeight = maxZ - minZ\n\n const realShowMax = Math.max(Math.ceil(realShowWidth), Math.ceil(realShowHeight), 60)\n\n return { width, height, max, minX, minZ, maxX, maxZ, realShowMax, realShowWidth, realShowHeight, maxRadius }\n }\n\n /**\n * generateAsitePoints\n * @param data\n */\n private generateAsitePoints(data: HeatMapData[]) {\n const maxX = Math.max(...data.map(item => item.x))\n const minX = Math.min(...data.map(item => item.x))\n const maxZ = Math.max(...data.map(item => item.z))\n const minZ = Math.min(...data.map(item => item.z))\n\n const maxRadius = 2 * Math.max(...data.map(item => item.radius ?? this._radius), this._radius)\n\n const boundaryPoints = [\n { x: minX - maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: minX - maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n ]\n\n return { boundaryPoints, maxRadius }\n }\n\n /**\n * generate new origin\n * @returns\n */\n private get newOrigin() {\n // need to consider one point and multiple points\n const { minX, minZ, maxX, maxZ } = this.calDataMaxMin()\n\n return {\n x: (maxX + minX) / 2,\n z: (maxZ + minZ) / 2,\n }\n }\n\n /**\n * coordinate 3D transformation\n * @param data\n * @returns\n */\n private coordinate3DTransformation(data: HeatMapData[]) {\n const { x, z } = this.newOrigin\n return data.map(item => ({\n ...item,\n x: item.x - x,\n z: item.z - z,\n radius: item.radius ?? this._radius,\n }))\n }\n\n /**\n * coordinate transformation, to canvas coordinate\n * @param data\n * @returns\n */\n private coordinateTransformation(data: HeatMapData[]) {\n const hanldeData = this.coordinate3DTransformation(data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const resolutionScale = this.calResolutionScale()\n\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width) * resolutionScale,\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height) * resolutionScale,\n value: item.value,\n radius: (item.radius ?? this._radius) * resolutionScale * 2,\n // @ts-ignore\n isBoundary: item?.isBoundary,\n }))\n\n // console.log('原始', data, realShowWidth, realShowHeight)\n // console.log('newOrigin', this.newOrigin)\n // console.log('hanldeData', hanldeData)\n // console.log('结果', result)\n // console.log('resolutionScale', resolutionScale, realShowWidth, realShowHeight, realShowWidth * resolutionScale, realShowHeight * resolutionScale)\n\n return result\n }\n\n /**\n * generate heatmap texture\n * @param canvasBox\n * @returns\n */\n private createHeatmapTool() {\n const heatmap = h.create({\n container: this._canvasBox,\n radius: this._radius,\n gradient: this._colorMap,\n maxOpacity: 1,\n minOpacity: 0,\n })\n\n return heatmap\n }\n\n /**\n * create heatmap container canvas\n * @returns\n */\n private createCanvas(width: number, height: number) {\n const canvasBox = document.createElement('div')\n\n canvasBox.style.width = `${width}px`\n canvasBox.style.height = `${height}px`\n canvasBox.style.top = '0'\n canvasBox.style.right = '0'\n\n use.useScene().domElement.parentElement.appendChild(canvasBox)\n\n return canvasBox\n }\n\n /**\n * calculate resolution scale\n * @param width\n * @returns\n */\n private calResolutionScale() {\n const hanldeData = this.coordinate3DTransformation(this.data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width),\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height),\n value: item.value,\n radius: item.radius * 2,\n }))\n\n const maxRadius = Math.max(...result.map(item => item.radius))\n const maxX = Math.max(...result.map(item => item.x))\n const maxY = Math.max(...result.map(item => item.y))\n const max = Math.max(maxX, maxY)\n\n if (max <= 1000) {\n const scale = (1000 - max) / 1000 * 15 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n if (max <= 5000) {\n const scale = (5000 - max) / 5000 * 5 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n return 1\n }\n\n /**\n * create attachment mesh\n */\n private createAttachmentMesh() {\n if (this._attachmentMesh)\n this.remove(this._attachmentMesh)\n\n const { realShowMax, max, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const canvas = this._heatmap._renderer.canvas\n const texture = new CanvasTexture(canvas)\n\n texture.minFilter = NearestFilter\n texture.magFilter = NearestFilter\n\n this._url = canvas.toDataURL('image/png')\n\n const threshold = (0.3 / 1000 * realShowMax)\n const shaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: texture },\n granularity: { value: realShowMax / 3 < 300 ? 300 : realShowMax / 3 },\n threshold: { value: threshold > 0.6 ? 0.6 : threshold < 0.25 ? 0.25 : threshold },\n uOpacity: { value: 2.0 },\n uHeight: { value: this._height },\n isPixel: { value: this._isPixel },\n uRange: { value: new Vector2(-max, max) },\n\n },\n vertexShader: heightVertexShader,\n fragmentShader: heightFragmentShader,\n transparent: true,\n side: DoubleSide,\n depthTest: false,\n })\n\n const mesh = new Mesh(new PlaneGeometry(realShowWidth, realShowHeight, 500, 500), shaderMaterial)\n const { x, z } = this.newOrigin\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(x, 0, z)\n mesh.renderOrder = 1000\n\n this._attachmentMesh = mesh\n this.add(mesh)\n }\n\n /**\n * set heatmap data\n * @param data\n */\n public setData(data: HeatMapData[]) {\n const { boundaryPoints } = this.generateAsitePoints(data)\n this.data = [...boundaryPoints, ...data]\n\n const heatmapData = this.coordinateTransformation(this.data)\n this._canvasBox && use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n this._canvasBox = this.createCanvas(Math.max(...heatmapData.map(item => item.x)), Math.max(...heatmapData.map(item => item.y)))\n this._heatmap = this.createHeatmapTool()\n\n this._heatmap.setData({\n data: heatmapData.filter(item => !item.isBoundary),\n max: this._range?.max ?? this.defaultMax,\n min: this._range?.min ?? 0,\n })\n\n this.createAttachmentMesh()\n\n // 聚类暂时不实现\n // this.setSuperclusterData()\n // use.useScene().orbitControls.addEventListener('change', () => {\n // const clusters = this.getSuperclusterData()\n // console.log(clusters)\n // })\n }\n\n override removeFromParent(): this {\n super.removeFromParent()\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n if (this.parent) {\n use.useScene().domElement.parentElement.removeChild(this._canvasBox)\n\n // @ts-ignore\n this._attachmentMesh?.material.dispose()\n }\n\n return this\n }\n}\n\nexport default HeatMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["CanvasTexture","DoubleSide","Mesh","NearestFilter","Object3D","PlaneGeometry","ShaderMaterial","Vector2","use","h","Supercluster","heightFragmentShader","heightVertexShader","defaultGradient","HeatMap","_Object3D","_inherits","_super","_createSuper","options","sceneControl","_options$radius","_options$height","_options$isPixel","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_colorMap","colorMap","_radius","radius","_height","height","_isPixel","isPixel","_range","range","_createClass","key","get","Math","max","apply","_toConsumableArray","data","map","item","value","_url","initSupercluster","_supercluster","minZoom","maxZoom","setSuperclusterData","featuresPoints","type","properties","geometry","coordinates","x","z","console","log","length","load","getZoomLevel","camera","minHeight","maxHeight","min","position","y","getSuperclusterData","_this$calDataMaxMin","calDataMaxMin","zoom","useScene","clusters","getClusters","_this2","maxX","minX","maxZ","minZ","abs","ceil","maxRadius","_item$radius","concat","width","realShowWidth","realShowHeight","realShowMax","generateAsitePoints","_this3","_item$radius2","boundaryPoints","isBoundary","_this$calDataMaxMin2","coordinate3DTransformation","_this4","_this$newOrigin","newOrigin","_item$radius3","_objectSpread","coordinateTransformation","_this5","hanldeData","_this$calDataMaxMin3","resolutionScale","calResolutionScale","result","_item$radius4","floor","createHeatmapTool","heatmap","create","container","_canvasBox","gradient","maxOpacity","minOpacity","createCanvas","canvasBox","document","createElement","style","top","right","domElement","parentElement","appendChild","_this$calDataMaxMin4","maxY","scale","createAttachmentMesh","_attachmentMesh","remove","_this$calDataMaxMin5","canvas","_heatmap","_renderer","texture","minFilter","magFilter","toDataURL","threshold","shaderMaterial","uniforms","granularity","uOpacity","uHeight","uRange","vertexShader","fragmentShader","transparent","side","depthTest","mesh","_this$newOrigin2","rotation","PI","set","renderOrder","add","setData","_this$_range$max","_this$_range","_this$_range$min","_this$_range2","_this$generateAsitePo","heatmapData","removeChild","filter","defaultMax","removeFromParent","_get","_getPrototypeOf","prototype","parent","_this$_attachmentMesh","material","dispose"],"sources":["../../../src/business/HeatMap/HeatMap.ts"],"sourcesContent":["import type { PerspectiveCamera, SceneControl } from '@anov/3d-core'\nimport { CanvasTexture, DoubleSide, Mesh, NearestFilter, Object3D, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport h from 'anov-heat-map'\nimport type { AnyProps } from 'supercluster'\nimport Supercluster from 'supercluster'\nimport { heightFragmentShader, heightVertexShader } from './shader'\nimport type { HeatMapData, HeatMapnterface } from './index'\n\ntype RangeType = {\n min: number\n max: number\n}\n\ntype HeatMapOptions = {\n colorMap?: {\n [key: number]: string\n }\n max?: number\n radius?: number\n height?: number\n isPixel?: boolean\n range?: RangeType\n}\n\nconst defaultGradient = { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' }\n\nclass HeatMap extends Object3D implements HeatMapnterface {\n public data: HeatMapData[] = []\n\n private _height: number\n private _radius: number\n private _heatmap: any\n private _url: string\n private _colorMap: {\n [key: number]: string\n }\n\n private _isPixel: boolean\n private _canvasBox: HTMLDivElement | undefined\n private _attachmentMesh: Mesh | undefined\n private _supercluster: Supercluster\n private _range: RangeType | undefined\n private sceneControl?: SceneControl\n\n private get defaultMax() {\n return Math.max(...this.data.map(item => item.value))\n }\n\n public get url() {\n return this._url\n }\n\n constructor(options: HeatMapOptions, sceneControl?: SceneControl) {\n super()\n this.sceneControl = sceneControl\n\n this._colorMap = options.colorMap || defaultGradient\n this._radius = options.radius ?? 40\n this._height = options.height ?? 70\n this._isPixel = options.isPixel ?? false\n this._range = options.range\n }\n\n private initSupercluster() {\n this._supercluster = new Supercluster({\n radius: 40,\n minZoom: 1,\n maxZoom: 16,\n })\n }\n\n private setSuperclusterData() {\n const featuresPoints = this.data.map((item) => {\n return {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Point',\n coordinates: [item.x, item.z],\n },\n }\n })\n\n console.log('正在加载点数据到supercluster:', featuresPoints.length)\n this._supercluster.load(featuresPoints as Supercluster.PointFeature<AnyProps>[])\n }\n\n private getZoomLevel(camera: PerspectiveCamera) {\n const minZoom = 10\n const maxZoom = 16\n const minHeight = 10\n const maxHeight = 1000\n\n return Math.max(minZoom, Math.min(maxZoom,\n ((maxHeight - camera.position.y) / (maxHeight - minHeight)) * (maxZoom - minZoom) + minZoom,\n ))\n }\n\n private getSuperclusterData() {\n const { max } = this.calDataMaxMin()\n const zoom = this.getZoomLevel(use.useScene(this.sceneControl).camera)\n const clusters = this._supercluster.getClusters([-max, -max, max, max], zoom)\n\n console.log('当前缩放级别:', zoom, '输入点数量:', this.data.length, '聚类后点数量:', clusters.length)\n\n return clusters\n }\n\n private calDataMaxMin() {\n const maxX = Math.max(...this.data.map(item => item.x))\n const minX = Math.min(...this.data.map(item => item.x))\n const maxZ = Math.max(...this.data.map(item => item.z))\n const minZ = Math.min(...this.data.map(item => item.z))\n\n const max = Math.max(Math.abs(Math.ceil(maxX)), Math.abs(Math.ceil(minX)), Math.abs(Math.ceil(maxZ)), Math.abs(Math.ceil(minZ)), 60)\n const maxRadius = Math.max(...this.data.map(item => item.radius ?? this._radius), this._radius)\n\n const width = max * 2\n const height = max * 2\n\n const realShowWidth = maxX - minX\n const realShowHeight = maxZ - minZ\n\n const realShowMax = Math.max(Math.ceil(realShowWidth), Math.ceil(realShowHeight), 60)\n\n return { width, height, max, minX, minZ, maxX, maxZ, realShowMax, realShowWidth, realShowHeight, maxRadius }\n }\n\n private generateAsitePoints(data: HeatMapData[]) {\n const maxX = Math.max(...data.map(item => item.x))\n const minX = Math.min(...data.map(item => item.x))\n const maxZ = Math.max(...data.map(item => item.z))\n const minZ = Math.min(...data.map(item => item.z))\n\n const maxRadius = 2 * Math.max(...data.map(item => item.radius ?? this._radius), this._radius)\n\n const boundaryPoints = [\n { x: minX - maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: minZ - maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: minX - maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n { x: maxX + maxRadius, z: maxZ + maxRadius, value: 0, y: 0, isBoundary: true, radius: 0.001 },\n ]\n\n return { boundaryPoints, maxRadius }\n }\n\n private get newOrigin() {\n const { minX, minZ, maxX, maxZ } = this.calDataMaxMin()\n\n return {\n x: (maxX + minX) / 2,\n z: (maxZ + minZ) / 2,\n }\n }\n\n private coordinate3DTransformation(data: HeatMapData[]) {\n const { x, z } = this.newOrigin\n return data.map(item => ({\n ...item,\n x: item.x - x,\n z: item.z - z,\n radius: item.radius ?? this._radius,\n }))\n }\n\n private coordinateTransformation(data: HeatMapData[]) {\n const hanldeData = this.coordinate3DTransformation(data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const resolutionScale = this.calResolutionScale()\n\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width) * resolutionScale,\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height) * resolutionScale,\n value: item.value,\n radius: (item.radius ?? this._radius) * resolutionScale * 2,\n // @ts-ignore\n isBoundary: item?.isBoundary,\n }))\n\n return result\n }\n\n private createHeatmapTool() {\n const heatmap = h.create({\n container: this._canvasBox,\n radius: this._radius,\n gradient: this._colorMap,\n maxOpacity: 1,\n minOpacity: 0,\n })\n\n return heatmap\n }\n\n private createCanvas(width: number, height: number) {\n const canvasBox = document.createElement('div')\n\n canvasBox.style.width = `${width}px`\n canvasBox.style.height = `${height}px`\n canvasBox.style.top = '0'\n canvasBox.style.right = '0'\n\n use.useScene(this.sceneControl).domElement.parentElement.appendChild(canvasBox)\n\n return canvasBox\n }\n\n private calResolutionScale() {\n const hanldeData = this.coordinate3DTransformation(this.data)\n const { width, height, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const result = hanldeData.map(item => ({\n x: Math.floor((item.x - (-realShowWidth / 2)) / (realShowWidth / 2 - (-realShowWidth / 2)) * width),\n y: Math.floor((item.z - (-realShowHeight / 2)) / (realShowHeight / 2 - (-realShowHeight / 2)) * height),\n value: item.value,\n radius: item.radius * 2,\n }))\n\n const maxRadius = Math.max(...result.map(item => item.radius))\n const maxX = Math.max(...result.map(item => item.x))\n const maxY = Math.max(...result.map(item => item.y))\n const max = Math.max(maxX, maxY)\n\n if (max <= 1000) {\n const scale = (1000 - max) / 1000 * 15 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n if (max <= 5000) {\n const scale = (5000 - max) / 5000 * 5 + 1\n return Math.floor(maxRadius < 40 ? scale : 1)\n }\n\n return 1\n }\n\n private createAttachmentMesh() {\n if (this._attachmentMesh)\n this.remove(this._attachmentMesh)\n\n const { realShowMax, max, realShowWidth, realShowHeight } = this.calDataMaxMin()\n const canvas = this._heatmap._renderer.canvas\n const texture = new CanvasTexture(canvas)\n\n texture.minFilter = NearestFilter\n texture.magFilter = NearestFilter\n\n this._url = canvas.toDataURL('image/png')\n\n const threshold = (0.3 / 1000 * realShowMax)\n const shaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: texture },\n granularity: { value: realShowMax / 3 < 300 ? 300 : realShowMax / 3 },\n threshold: { value: threshold > 0.6 ? 0.6 : threshold < 0.25 ? 0.25 : threshold },\n uOpacity: { value: 2.0 },\n uHeight: { value: this._height },\n isPixel: { value: this._isPixel },\n uRange: { value: new Vector2(-max, max) },\n\n },\n vertexShader: heightVertexShader,\n fragmentShader: heightFragmentShader,\n transparent: true,\n side: DoubleSide,\n depthTest: false,\n })\n\n const mesh = new Mesh(new PlaneGeometry(realShowWidth, realShowHeight, 500, 500), shaderMaterial)\n const { x, z } = this.newOrigin\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(x, 0, z)\n mesh.renderOrder = 1000\n\n this._attachmentMesh = mesh\n this.add(mesh)\n }\n\n public setData(data: HeatMapData[]) {\n const { boundaryPoints } = this.generateAsitePoints(data)\n this.data = [...boundaryPoints, ...data]\n\n const heatmapData = this.coordinateTransformation(this.data)\n this._canvasBox && use.useScene(this.sceneControl).domElement.parentElement.removeChild(this._canvasBox)\n this._canvasBox = this.createCanvas(Math.max(...heatmapData.map(item => item.x)), Math.max(...heatmapData.map(item => item.y)))\n this._heatmap = this.createHeatmapTool()\n\n this._heatmap.setData({\n data: heatmapData.filter(item => !item.isBoundary),\n max: this._range?.max ?? this.defaultMax,\n min: this._range?.min ?? 0,\n })\n\n this.createAttachmentMesh()\n }\n\n override removeFromParent(): this {\n super.removeFromParent()\n if (this.parent) {\n use.useScene(this.sceneControl).domElement.parentElement.removeChild(this._canvasBox)\n\n // @ts-ignore\n this._attachmentMesh?.material.dispose()\n }\n\n return this\n }\n}\n\nexport default HeatMap\n"],"mappings":"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"}
|
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
* @createTime 2025-08-22
|
|
6
6
|
* @lastEditTime 2025-08-22
|
|
7
7
|
*/
|
|
8
|
-
import ObjectLayer from
|
|
9
|
-
import type { Option } from './type';
|
|
10
|
-
import { IPanel } from './type';
|
|
8
|
+
import ObjectLayer from '../Base/ObjectLayer';
|
|
9
|
+
import type { IPanel, Option } from './type';
|
|
11
10
|
declare class InfoPanel extends ObjectLayer implements IPanel {
|
|
12
11
|
private _title;
|
|
13
12
|
private _content;
|
|
@@ -25,7 +24,7 @@ declare class InfoPanel extends ObjectLayer implements IPanel {
|
|
|
25
24
|
private _group;
|
|
26
25
|
private _onClose;
|
|
27
26
|
visible: boolean;
|
|
28
|
-
constructor(option: Option);
|
|
27
|
+
constructor(option: Option, sceneControl?: any);
|
|
29
28
|
private init;
|
|
30
29
|
private createBox;
|
|
31
30
|
/** 创建背景 */
|
|
@@ -30,9 +30,9 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
30
30
|
* @lastEditTime 2025-08-22
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
import ObjectLayer from "../Base/ObjectLayer";
|
|
34
33
|
import _ from 'lodash';
|
|
35
34
|
import { Group, Vector3, createLabel } from '@anov/3d-core';
|
|
35
|
+
import ObjectLayer from "../Base/ObjectLayer";
|
|
36
36
|
var DEFAULT_OPTION = {
|
|
37
37
|
position: [0, 0, 0],
|
|
38
38
|
type: 'info',
|
|
@@ -54,10 +54,10 @@ var DEFAULT_OPTION = {
|
|
|
54
54
|
var InfoPanel = /*#__PURE__*/function (_ObjectLayer) {
|
|
55
55
|
_inherits(InfoPanel, _ObjectLayer);
|
|
56
56
|
var _super = _createSuper(InfoPanel);
|
|
57
|
-
function InfoPanel(option) {
|
|
57
|
+
function InfoPanel(option, sceneControl) {
|
|
58
58
|
var _this;
|
|
59
59
|
_classCallCheck(this, InfoPanel);
|
|
60
|
-
_this = _super.call(this);
|
|
60
|
+
_this = _super.call(this, sceneControl);
|
|
61
61
|
_defineProperty(_assertThisInitialized(_this), "_title", void 0);
|
|
62
62
|
_defineProperty(_assertThisInitialized(_this), "_content", void 0);
|
|
63
63
|
_defineProperty(_assertThisInitialized(_this), "_width", void 0);
|
|
@@ -120,22 +120,18 @@ var InfoPanel = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
120
120
|
value: function createBox() {
|
|
121
121
|
// 使用 DocumentFragment 减少重排
|
|
122
122
|
// const fragment = document.createDocumentFragment();
|
|
123
|
-
var bgDom = this.createBgDom();
|
|
124
|
-
var headerDom = this.createHeaderDom();
|
|
123
|
+
var bgDom = this.createBgDom(); // 创建容器盒子
|
|
124
|
+
var headerDom = this.createHeaderDom(); // 创建头部盒子
|
|
125
125
|
|
|
126
126
|
// 创建内容
|
|
127
127
|
var contentDom = document.createElement('div');
|
|
128
128
|
contentDom.className = 'panel-content';
|
|
129
|
-
if (typeof this._content.value === 'string')
|
|
130
|
-
contentDom.textContent = this._content.value;
|
|
131
|
-
} else if (this._content.value instanceof HTMLElement) {
|
|
132
|
-
contentDom.appendChild(this._content.value);
|
|
133
|
-
}
|
|
129
|
+
if (typeof this._content.value === 'string') contentDom.textContent = this._content.value;else if (this._content.value instanceof HTMLElement) contentDom.appendChild(this._content.value);
|
|
134
130
|
var _this$_content = this._content,
|
|
135
131
|
value = _this$_content.value,
|
|
136
132
|
contentStyle = _objectWithoutProperties(_this$_content, _excluded);
|
|
137
133
|
// 正确设置样式的方式
|
|
138
|
-
Object.assign(contentDom.style, contentStyle);
|
|
134
|
+
Object.assign(contentDom.style, contentStyle); // 待测试
|
|
139
135
|
|
|
140
136
|
bgDom.appendChild(headerDom);
|
|
141
137
|
bgDom.appendChild(contentDom);
|
|
@@ -146,11 +142,12 @@ var InfoPanel = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
146
142
|
this.add(this._group);
|
|
147
143
|
this.applyPosition(); // 初始化自动定位
|
|
148
144
|
}
|
|
145
|
+
|
|
149
146
|
/** 创建背景 */
|
|
150
147
|
}, {
|
|
151
148
|
key: "createBgDom",
|
|
152
149
|
value: function createBgDom() {
|
|
153
|
-
|
|
150
|
+
// 创建容器盒子
|
|
154
151
|
var bgDom = document.createElement('div');
|
|
155
152
|
Object.assign(bgDom.style, {
|
|
156
153
|
width: "".concat(this._width, "px"),
|
|
@@ -170,6 +167,7 @@ var InfoPanel = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
170
167
|
if (this._customStyle) Object.assign(bgDom.style, this._customStyle);
|
|
171
168
|
return bgDom;
|
|
172
169
|
}
|
|
170
|
+
|
|
173
171
|
/** 创建头部 */
|
|
174
172
|
}, {
|
|
175
173
|
key: "createHeaderDom",
|
|
@@ -189,7 +187,7 @@ var InfoPanel = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
189
187
|
titleValue = _this$_title.value,
|
|
190
188
|
titleStyle = _objectWithoutProperties(_this$_title, _excluded2);
|
|
191
189
|
// 正确设置样式的方式
|
|
192
|
-
Object.assign(titleDom.style, titleStyle);
|
|
190
|
+
Object.assign(titleDom.style, titleStyle); // 待测试
|
|
193
191
|
|
|
194
192
|
headerDom.appendChild(titleDom);
|
|
195
193
|
|
|
@@ -249,9 +247,7 @@ var InfoPanel = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
249
247
|
// child.element.style.display = 'none';
|
|
250
248
|
// }
|
|
251
249
|
// });
|
|
252
|
-
if (this._onClose)
|
|
253
|
-
this._onClose();
|
|
254
|
-
}
|
|
250
|
+
if (this._onClose) this._onClose();
|
|
255
251
|
}
|
|
256
252
|
}, {
|
|
257
253
|
key: "update",
|
|
@@ -276,9 +272,7 @@ var InfoPanel = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
276
272
|
this.remove(this._group);
|
|
277
273
|
// 清理DOM引用
|
|
278
274
|
this._group.children.forEach(function (child) {
|
|
279
|
-
if (child.element && child.element.parentNode)
|
|
280
|
-
child.element.parentNode.removeChild(child.element);
|
|
281
|
-
}
|
|
275
|
+
if (child.element && child.element.parentNode) child.element.parentNode.removeChild(child.element);
|
|
282
276
|
});
|
|
283
277
|
}
|
|
284
278
|
}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ObjectLayer","_","Group","Vector3","createLabel","DEFAULT_OPTION","position","type","title","value","fontSize","content","width","height","bgColor","borderRadius","closable","padding","InfoPanel","_ObjectLayer","_inherits","_super","_createSuper","option","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","params","mergeWith","cloneDeep","_title","_content","_width","_height","_bgColor","_position","_type","_bgUrl","bgUrl","_className","className","_customStyle","customStyle","_borderRadius","_padding","_closeable","_onClose","onClose","Object","assign","_group","visible","init","_createClass","key","createBox","bgDom","createBgDom","headerDom","createHeaderDom","contentDom","document","createElement","textContent","HTMLElement","appendChild","_this$_content","contentStyle","_objectWithoutProperties","_excluded","style","bgObject","set","center","add","applyPosition","concat","overflow","backgroundColor","backgroundImage","backgroundSize","backgroundRepeat","boxSizing","_this2","display","alignItems","titleDom","flex","_this$_title","titleValue","titleStyle","_excluded2","closeDom","cursor","color","pointerEvents","onclick","close","offset","arguments","length","undefined","Array","isArray","_this$_position","_slicedToArray","x","y","z","open","update","merged","clear","destroy","remove","children","forEach","child","element","parentNode","removeChild"],"sources":["../../../src/business/InfoPanel/index.ts"],"sourcesContent":["/**\n * @file index.ts\n * @description 信息面板\n * @author xingwei\n * @createTime 2025-08-22\n * @lastEditTime 2025-08-22\n */\n\n\nimport ObjectLayer from \"../Base/ObjectLayer\";\nimport _ from 'lodash'\nimport { Group, Vector3, createLabel, CSS2DRenderer, Mesh, SphereGeometry, MeshBasicMaterial } from '@anov/3d-core'\nimport type {Option, TitleOption, ContentOption, PanelType, PanelPosition} from './type'\nimport { IPanel } from './type'\n\nconst DEFAULT_OPTION = {\n position: [0, 0, 0],\n type: 'info',\n title: {\n value: '面板标题',\n fontSize: '20px',\n },\n content: {\n value: '面板内容',\n fontSize: '16px',\n },\n width: 300,\n height: 200,\n bgColor: '#fff',\n borderRadius: 8,\n closable: true,\n padding: '10px'\n}\n\nclass InfoPanel extends ObjectLayer implements IPanel{\n private _title: TitleOption\n private _content: ContentOption\n private _width: number\n private _height: number\n private _bgColor: string\n private _position: Array<number>\n private _type: PanelType\n private _borderRadius: number = 10\n private _bgUrl: string\n private _className: string\n private _customStyle: any\n private _closeable: boolean\n private _padding: string \n private _group: Group\n private _onClose: Function\n visible: boolean = false;\n\n constructor(option: Option) {\n super();\n const params = _.mergeWith(_.cloneDeep(DEFAULT_OPTION), option)\n const {\n title: _title,\n content: _content,\n width: _width,\n height: _height,\n bgColor: _bgColor,\n position: _position,\n type: _type,\n bgUrl: _bgUrl,\n className: _className,\n customStyle: _customStyle,\n borderRadius: _borderRadius,\n padding: _padding,\n closable: _closeable,\n onClose: _onClose\n } = params;\n\n Object.assign(this, {\n _title, _content, _width, _height, _bgColor, _position, _type,\n _bgUrl, _className, _customStyle, _borderRadius, _padding,_closeable, _onClose\n });\n \n this._group = new Group()\n this._group.visible = this.visible\n this.init()\n }\n private init(){\n this.createBox()\n \n }\n\n\n private createBox(){\n\n // 使用 DocumentFragment 减少重排\n // const fragment = document.createDocumentFragment();\n const bgDom = this.createBgDom() //创建容器盒子\n const headerDom = this.createHeaderDom() //创建头部盒子\n\n\n // 创建内容\n const contentDom = document.createElement('div')\n contentDom.className = 'panel-content'\n if(typeof this._content.value === 'string'){\n contentDom.textContent = this._content.value\n }else if(this._content.value instanceof HTMLElement){\n contentDom.appendChild(this._content.value)\n }\n \n const {value, ...contentStyle} = this._content\n // 正确设置样式的方式\n Object.assign(contentDom.style, contentStyle) //待测试\n\n bgDom.appendChild(headerDom)\n bgDom.appendChild(contentDom)\n\n\n const bgObject = createLabel(bgDom);\n bgObject.position.set(0, 0, 0);\n bgObject.center.set(0, 0);\n\n this._group.add(bgObject);\n\n this.add(this._group)\n this.applyPosition(); // 初始化自动定位\n }\n /** 创建背景 */\n private createBgDom(){\n //创建容器盒子\n const bgDom = document.createElement('div');\n Object.assign(bgDom.style, {\n width: `${this._width}px`,\n height: `${this._height}px`,\n // left: `${this._position[0]}px`,\n // top: `${this._position[1]}px`,\n overflow: 'hidden',\n padding: this._padding,\n borderRadius: this._bgUrl ? '' : `${this._borderRadius}px`,\n backgroundColor: this._bgUrl ? '' : this._bgColor,\n backgroundImage: this._bgUrl ? `url(${this._bgUrl})` : '',\n backgroundSize: this._bgUrl ? 'contain' : '',\n backgroundRepeat: this._bgUrl ? 'no-repeat' : '',\n boxSizing: 'border-box'\n \n });\n if (this._className) bgDom.className = this._className;\n if (this._customStyle) Object.assign(bgDom.style, this._customStyle);\n return bgDom;\n }\n /** 创建头部 */\n private createHeaderDom(){\n const headerDom = document.createElement('div')\n headerDom.className = 'panel-header'\n headerDom.style.display = 'flex'\n headerDom.style.alignItems = 'center'\n // 创建标题\n const titleDom = document.createElement('p')\n titleDom.className = 'panel-title'\n titleDom.style.display = 'flex'\n titleDom.style.flex = '1'\n titleDom.textContent = this._title.value\n const {value: titleValue, ...titleStyle} = this._title\n // 正确设置样式的方式\n Object.assign(titleDom.style, titleStyle) //待测试\n\n headerDom.appendChild(titleDom)\n\n // 创建关闭按钮\n if(this._closeable){\n const closeDom = document.createElement('div')\n closeDom.className = 'panel-close'\n closeDom.style.cursor = 'pointer'\n closeDom.style.fontSize = this._title.fontSize\n closeDom.style.color = this._title.color\n closeDom.textContent = 'x'\n closeDom.style.pointerEvents = 'auto'\n closeDom.onclick = () => {\n this.close()\n }\n headerDom.appendChild(closeDom)\n }\n return headerDom\n }\n\n /** 自动定位面板 */\n private applyPosition(offset: Vector3 = new Vector3(0, 0, 0)) {\n if (Array.isArray(this._position)) {\n // 如果是数组 [x, y]\n const [x, y, z] = this._position;\n this._group.position.set(x, y, z); // 注意y轴取反\n }\n }\n\n public open(){\n this.visible = true\n this._group.visible = true;\n\n // 同步 DOM 节点显示\n // this._group.children.forEach((child: any) => {\n // if (child.element) {\n // child.element.style.display = 'block';\n // }\n // });\n }\n public close(){\n this.visible = false\n this._group.visible = false;\n\n // 同步 DOM 节点隐藏\n // this._group.children.forEach((child: any) => {\n // if (child.element) {\n // child.element.style.display = 'none';\n // }\n // });\n if(this._onClose){\n this._onClose()\n }\n }\n public update(option: Option){\n const merged = _.mergeWith(_.cloneDeep(DEFAULT_OPTION), option);\n this._title = merged.title;\n this._content = merged.content;\n this._width = merged.width;\n this._height = merged.height;\n this._bgColor = merged.bgColor;\n this._borderRadius = merged.borderRadius || 0;\n this._bgUrl = merged.bgUrl;\n this._className = merged.className;\n this._customStyle = merged.style;\n\n this._group.clear();\n this.init();\n }\n destroy(): void {\n this._group.clear();\n this.remove(this._group)\n // 清理DOM引用\n this._group.children.forEach((child: any) => {\n if (child.element && child.element.parentNode) {\n child.element.parentNode.removeChild(child.element);\n }\n });\n }\n}\n\nexport {InfoPanel}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_","Group","Vector3","createLabel","ObjectLayer","DEFAULT_OPTION","position","type","title","value","fontSize","content","width","height","bgColor","borderRadius","closable","padding","InfoPanel","_ObjectLayer","_inherits","_super","_createSuper","option","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","params","mergeWith","cloneDeep","_title","_content","_width","_height","_bgColor","_position","_type","_bgUrl","bgUrl","_className","className","_customStyle","customStyle","_borderRadius","_padding","_closeable","_onClose","onClose","Object","assign","_group","visible","init","_createClass","key","createBox","bgDom","createBgDom","headerDom","createHeaderDom","contentDom","document","createElement","textContent","HTMLElement","appendChild","_this$_content","contentStyle","_objectWithoutProperties","_excluded","style","bgObject","set","center","add","applyPosition","concat","overflow","backgroundColor","backgroundImage","backgroundSize","backgroundRepeat","boxSizing","_this2","display","alignItems","titleDom","flex","_this$_title","titleValue","titleStyle","_excluded2","closeDom","cursor","color","pointerEvents","onclick","close","offset","arguments","length","undefined","Array","isArray","_this$_position","_slicedToArray","x","y","z","open","update","merged","clear","destroy","remove","children","forEach","child","element","parentNode","removeChild"],"sources":["../../../src/business/InfoPanel/index.ts"],"sourcesContent":["/**\n * @file index.ts\n * @description 信息面板\n * @author xingwei\n * @createTime 2025-08-22\n * @lastEditTime 2025-08-22\n */\n\nimport _ from 'lodash'\nimport { Group, Vector3, createLabel } from '@anov/3d-core'\nimport ObjectLayer from '../Base/ObjectLayer'\nimport type { ContentOption, IPanel, Option, PanelType, TitleOption } from './type'\n\nconst DEFAULT_OPTION = {\n position: [0, 0, 0],\n type: 'info',\n title: {\n value: '面板标题',\n fontSize: '20px',\n },\n content: {\n value: '面板内容',\n fontSize: '16px',\n },\n width: 300,\n height: 200,\n bgColor: '#fff',\n borderRadius: 8,\n closable: true,\n padding: '10px',\n}\n\nclass InfoPanel extends ObjectLayer implements IPanel {\n private _title: TitleOption\n private _content: ContentOption\n private _width: number\n private _height: number\n private _bgColor: string\n private _position: Array<number>\n private _type: PanelType\n private _borderRadius = 10\n private _bgUrl: string\n private _className: string\n private _customStyle: any\n private _closeable: boolean\n private _padding: string\n private _group: Group\n private _onClose: Function\n visible = false\n\n constructor(option: Option, sceneControl?: any) {\n super(sceneControl)\n const params = _.mergeWith(_.cloneDeep(DEFAULT_OPTION), option)\n const {\n title: _title,\n content: _content,\n width: _width,\n height: _height,\n bgColor: _bgColor,\n position: _position,\n type: _type,\n bgUrl: _bgUrl,\n className: _className,\n customStyle: _customStyle,\n borderRadius: _borderRadius,\n padding: _padding,\n closable: _closeable,\n onClose: _onClose,\n } = params\n\n Object.assign(this, {\n _title,\n _content,\n _width,\n _height,\n _bgColor,\n _position,\n _type,\n _bgUrl,\n _className,\n _customStyle,\n _borderRadius,\n _padding,\n _closeable,\n _onClose,\n })\n\n this._group = new Group()\n this._group.visible = this.visible\n this.init()\n }\n\n private init() {\n this.createBox()\n }\n\n private createBox() {\n // 使用 DocumentFragment 减少重排\n // const fragment = document.createDocumentFragment();\n const bgDom = this.createBgDom() // 创建容器盒子\n const headerDom = this.createHeaderDom() // 创建头部盒子\n\n // 创建内容\n const contentDom = document.createElement('div')\n contentDom.className = 'panel-content'\n if (typeof this._content.value === 'string')\n contentDom.textContent = this._content.value\n\n else if (this._content.value instanceof HTMLElement)\n contentDom.appendChild(this._content.value)\n\n const { value, ...contentStyle } = this._content\n // 正确设置样式的方式\n Object.assign(contentDom.style, contentStyle) // 待测试\n\n bgDom.appendChild(headerDom)\n bgDom.appendChild(contentDom)\n\n const bgObject = createLabel(bgDom)\n bgObject.position.set(0, 0, 0)\n bgObject.center.set(0, 0)\n\n this._group.add(bgObject)\n\n this.add(this._group)\n this.applyPosition() // 初始化自动定位\n }\n\n /** 创建背景 */\n private createBgDom() {\n // 创建容器盒子\n const bgDom = document.createElement('div')\n Object.assign(bgDom.style, {\n width: `${this._width}px`,\n height: `${this._height}px`,\n // left: `${this._position[0]}px`,\n // top: `${this._position[1]}px`,\n overflow: 'hidden',\n padding: this._padding,\n borderRadius: this._bgUrl ? '' : `${this._borderRadius}px`,\n backgroundColor: this._bgUrl ? '' : this._bgColor,\n backgroundImage: this._bgUrl ? `url(${this._bgUrl})` : '',\n backgroundSize: this._bgUrl ? 'contain' : '',\n backgroundRepeat: this._bgUrl ? 'no-repeat' : '',\n boxSizing: 'border-box',\n\n })\n if (this._className)\n bgDom.className = this._className\n if (this._customStyle)\n Object.assign(bgDom.style, this._customStyle)\n return bgDom\n }\n\n /** 创建头部 */\n private createHeaderDom() {\n const headerDom = document.createElement('div')\n headerDom.className = 'panel-header'\n headerDom.style.display = 'flex'\n headerDom.style.alignItems = 'center'\n // 创建标题\n const titleDom = document.createElement('p')\n titleDom.className = 'panel-title'\n titleDom.style.display = 'flex'\n titleDom.style.flex = '1'\n titleDom.textContent = this._title.value\n const { value: titleValue, ...titleStyle } = this._title\n // 正确设置样式的方式\n Object.assign(titleDom.style, titleStyle) // 待测试\n\n headerDom.appendChild(titleDom)\n\n // 创建关闭按钮\n if (this._closeable) {\n const closeDom = document.createElement('div')\n closeDom.className = 'panel-close'\n closeDom.style.cursor = 'pointer'\n closeDom.style.fontSize = this._title.fontSize\n closeDom.style.color = this._title.color\n closeDom.textContent = 'x'\n closeDom.style.pointerEvents = 'auto'\n closeDom.onclick = () => {\n this.close()\n }\n headerDom.appendChild(closeDom)\n }\n return headerDom\n }\n\n /** 自动定位面板 */\n private applyPosition(offset: Vector3 = new Vector3(0, 0, 0)) {\n if (Array.isArray(this._position)) {\n // 如果是数组 [x, y]\n const [x, y, z] = this._position\n this._group.position.set(x, y, z) // 注意y轴取反\n }\n }\n\n public open() {\n this.visible = true\n this._group.visible = true\n\n // 同步 DOM 节点显示\n // this._group.children.forEach((child: any) => {\n // if (child.element) {\n // child.element.style.display = 'block';\n // }\n // });\n }\n\n public close() {\n this.visible = false\n this._group.visible = false\n\n // 同步 DOM 节点隐藏\n // this._group.children.forEach((child: any) => {\n // if (child.element) {\n // child.element.style.display = 'none';\n // }\n // });\n if (this._onClose)\n this._onClose()\n }\n\n public update(option: Option) {\n const merged = _.mergeWith(_.cloneDeep(DEFAULT_OPTION), option)\n this._title = merged.title\n this._content = merged.content\n this._width = merged.width\n this._height = merged.height\n this._bgColor = merged.bgColor\n this._borderRadius = merged.borderRadius || 0\n this._bgUrl = merged.bgUrl\n this._className = merged.className\n this._customStyle = merged.style\n\n this._group.clear()\n this.init()\n }\n\n destroy(): void {\n this._group.clear()\n this.remove(this._group)\n // 清理DOM引用\n this._group.children.forEach((child: any) => {\n if (child.element && child.element.parentNode)\n child.element.parentNode.removeChild(child.element)\n })\n }\n}\n\nexport { InfoPanel }"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,CAAC,MAAM,QAAQ;AACtB,SAASC,KAAK,EAAEC,OAAO,EAAEC,WAAW,QAAQ,eAAe;AAC3D,OAAOC,WAAW;AAGlB,IAAMC,cAAc,GAAG;EACrBC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACnBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE;IACLC,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDC,OAAO,EAAE;IACPF,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE;EACZ,CAAC;EACDE,KAAK,EAAE,GAAG;EACVC,MAAM,EAAE,GAAG;EACXC,OAAO,EAAE,MAAM;EACfC,YAAY,EAAE,CAAC;EACfC,QAAQ,EAAE,IAAI;EACdC,OAAO,EAAE;AACX,CAAC;AAAA,IAEKC,SAAS,0BAAAC,YAAA;EAAAC,SAAA,CAAAF,SAAA,EAAAC,YAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,SAAA;EAkBb,SAAAA,UAAYK,MAAc,EAAEC,YAAkB,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAR,SAAA;IAC9CO,KAAA,GAAAJ,MAAA,CAAAM,IAAA,OAAMH,YAAY;IAACI,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,oBAXG,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,cAQhB,KAAK;IAIb,IAAMK,MAAM,GAAG9B,CAAC,CAAC+B,SAAS,CAAC/B,CAAC,CAACgC,SAAS,CAAC3B,cAAc,CAAC,EAAEkB,MAAM,CAAC;IAC/D,IACSU,MAAM,GAcXH,MAAM,CAdRtB,KAAK;MACI0B,QAAQ,GAafJ,MAAM,CAbRnB,OAAO;MACAwB,MAAM,GAYXL,MAAM,CAZRlB,KAAK;MACGwB,OAAO,GAWbN,MAAM,CAXRjB,MAAM;MACGwB,QAAQ,GAUfP,MAAM,CAVRhB,OAAO;MACGwB,SAAS,GASjBR,MAAM,CATRxB,QAAQ;MACFiC,KAAK,GAQTT,MAAM,CARRvB,IAAI;MACGiC,MAAM,GAOXV,MAAM,CAPRW,KAAK;MACMC,UAAU,GAMnBZ,MAAM,CANRa,SAAS;MACIC,YAAY,GAKvBd,MAAM,CALRe,WAAW;MACGC,aAAa,GAIzBhB,MAAM,CAJRf,YAAY;MACHgC,QAAQ,GAGfjB,MAAM,CAHRb,OAAO;MACG+B,UAAU,GAElBlB,MAAM,CAFRd,QAAQ;MACCiC,QAAQ,GACfnB,MAAM,CADRoB,OAAO;IAGTC,MAAM,CAACC,MAAM,CAAAvB,sBAAA,CAAAJ,KAAA,GAAO;MAClBQ,MAAM,EAANA,MAAM;MACNC,QAAQ,EAARA,QAAQ;MACRC,MAAM,EAANA,MAAM;MACNC,OAAO,EAAPA,OAAO;MACPC,QAAQ,EAARA,QAAQ;MACRC,SAAS,EAATA,SAAS;MACTC,KAAK,EAALA,KAAK;MACLC,MAAM,EAANA,MAAM;MACNE,UAAU,EAAVA,UAAU;MACVE,YAAY,EAAZA,YAAY;MACZE,aAAa,EAAbA,aAAa;MACbC,QAAQ,EAARA,QAAQ;MACRC,UAAU,EAAVA,UAAU;MACVC,QAAQ,EAARA;IACF,CAAC,CAAC;IAEFxB,KAAA,CAAK4B,MAAM,GAAG,IAAIpD,KAAK,CAAC,CAAC;IACzBwB,KAAA,CAAK4B,MAAM,CAACC,OAAO,GAAG7B,KAAA,CAAK6B,OAAO;IAClC7B,KAAA,CAAK8B,IAAI,CAAC,CAAC;IAAA,OAAA9B,KAAA;EACb;EAAC+B,YAAA,CAAAtC,SAAA;IAAAuC,GAAA;IAAAhD,KAAA,EAED,SAAA8C,KAAA,EAAe;MACb,IAAI,CAACG,SAAS,CAAC,CAAC;IAClB;EAAC;IAAAD,GAAA;IAAAhD,KAAA,EAED,SAAAiD,UAAA,EAAoB;MAClB;MACA;MACA,IAAMC,KAAK,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC,EAAC;MACjC,IAAMC,SAAS,GAAG,IAAI,CAACC,eAAe,CAAC,CAAC,EAAC;;MAEzC;MACA,IAAMC,UAAU,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MAChDF,UAAU,CAACpB,SAAS,GAAG,eAAe;MACtC,IAAI,OAAO,IAAI,CAACT,QAAQ,CAACzB,KAAK,KAAK,QAAQ,EACzCsD,UAAU,CAACG,WAAW,GAAG,IAAI,CAAChC,QAAQ,CAACzB,KAAK,MAEzC,IAAI,IAAI,CAACyB,QAAQ,CAACzB,KAAK,YAAY0D,WAAW,EACjDJ,UAAU,CAACK,WAAW,CAAC,IAAI,CAAClC,QAAQ,CAACzB,KAAK,CAAC;MAE7C,IAAA4D,cAAA,GAAmC,IAAI,CAACnC,QAAQ;QAAxCzB,KAAK,GAAA4D,cAAA,CAAL5D,KAAK;QAAK6D,YAAY,GAAAC,wBAAA,CAAAF,cAAA,EAAAG,SAAA;MAC9B;MACArB,MAAM,CAACC,MAAM,CAACW,UAAU,CAACU,KAAK,EAAEH,YAAY,CAAC,EAAC;;MAE9CX,KAAK,CAACS,WAAW,CAACP,SAAS,CAAC;MAC5BF,KAAK,CAACS,WAAW,CAACL,UAAU,CAAC;MAE7B,IAAMW,QAAQ,GAAGvE,WAAW,CAACwD,KAAK,CAAC;MACnCe,QAAQ,CAACpE,QAAQ,CAACqE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAC9BD,QAAQ,CAACE,MAAM,CAACD,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;MAEzB,IAAI,CAACtB,MAAM,CAACwB,GAAG,CAACH,QAAQ,CAAC;MAEzB,IAAI,CAACG,GAAG,CAAC,IAAI,CAACxB,MAAM,CAAC;MACrB,IAAI,CAACyB,aAAa,CAAC,CAAC,EAAC;IACvB;;IAEA;EAAA;IAAArB,GAAA;IAAAhD,KAAA,EACA,SAAAmD,YAAA,EAAsB;MACpB;MACA,IAAMD,KAAK,GAAGK,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MAC3Cd,MAAM,CAACC,MAAM,CAACO,KAAK,CAACc,KAAK,EAAE;QACzB7D,KAAK,KAAAmE,MAAA,CAAK,IAAI,CAAC5C,MAAM,OAAI;QACzBtB,MAAM,KAAAkE,MAAA,CAAK,IAAI,CAAC3C,OAAO,OAAI;QAC3B;QACA;QACA4C,QAAQ,EAAE,QAAQ;QAClB/D,OAAO,EAAE,IAAI,CAAC8B,QAAQ;QACtBhC,YAAY,EAAE,IAAI,CAACyB,MAAM,GAAG,EAAE,MAAAuC,MAAA,CAAM,IAAI,CAACjC,aAAa,OAAI;QAC1DmC,eAAe,EAAE,IAAI,CAACzC,MAAM,GAAG,EAAE,GAAG,IAAI,CAACH,QAAQ;QACjD6C,eAAe,EAAE,IAAI,CAAC1C,MAAM,UAAAuC,MAAA,CAAU,IAAI,CAACvC,MAAM,SAAM,EAAE;QACzD2C,cAAc,EAAE,IAAI,CAAC3C,MAAM,GAAG,SAAS,GAAG,EAAE;QAC5C4C,gBAAgB,EAAE,IAAI,CAAC5C,MAAM,GAAG,WAAW,GAAG,EAAE;QAChD6C,SAAS,EAAE;MAEb,CAAC,CAAC;MACF,IAAI,IAAI,CAAC3C,UAAU,EACjBiB,KAAK,CAAChB,SAAS,GAAG,IAAI,CAACD,UAAU;MACnC,IAAI,IAAI,CAACE,YAAY,EACnBO,MAAM,CAACC,MAAM,CAACO,KAAK,CAACc,KAAK,EAAE,IAAI,CAAC7B,YAAY,CAAC;MAC/C,OAAOe,KAAK;IACd;;IAEA;EAAA;IAAAF,GAAA;IAAAhD,KAAA,EACA,SAAAqD,gBAAA,EAA0B;MAAA,IAAAwB,MAAA;MACxB,IAAMzB,SAAS,GAAGG,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;MAC/CJ,SAAS,CAAClB,SAAS,GAAG,cAAc;MACpCkB,SAAS,CAACY,KAAK,CAACc,OAAO,GAAG,MAAM;MAChC1B,SAAS,CAACY,KAAK,CAACe,UAAU,GAAG,QAAQ;MACrC;MACA,IAAMC,QAAQ,GAAGzB,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC;MAC5CwB,QAAQ,CAAC9C,SAAS,GAAG,aAAa;MAClC8C,QAAQ,CAAChB,KAAK,CAACc,OAAO,GAAG,MAAM;MAC/BE,QAAQ,CAAChB,KAAK,CAACiB,IAAI,GAAG,GAAG;MACzBD,QAAQ,CAACvB,WAAW,GAAG,IAAI,CAACjC,MAAM,CAACxB,KAAK;MACxC,IAAAkF,YAAA,GAA6C,IAAI,CAAC1D,MAAM;QAAzC2D,UAAU,GAAAD,YAAA,CAAjBlF,KAAK;QAAiBoF,UAAU,GAAAtB,wBAAA,CAAAoB,YAAA,EAAAG,UAAA;MACxC;MACA3C,MAAM,CAACC,MAAM,CAACqC,QAAQ,CAAChB,KAAK,EAAEoB,UAAU,CAAC,EAAC;;MAE1ChC,SAAS,CAACO,WAAW,CAACqB,QAAQ,CAAC;;MAE/B;MACA,IAAI,IAAI,CAACzC,UAAU,EAAE;QACnB,IAAM+C,QAAQ,GAAG/B,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;QAC9C8B,QAAQ,CAACpD,SAAS,GAAG,aAAa;QAClCoD,QAAQ,CAACtB,KAAK,CAACuB,MAAM,GAAG,SAAS;QACjCD,QAAQ,CAACtB,KAAK,CAAC/D,QAAQ,GAAG,IAAI,CAACuB,MAAM,CAACvB,QAAQ;QAC9CqF,QAAQ,CAACtB,KAAK,CAACwB,KAAK,GAAG,IAAI,CAAChE,MAAM,CAACgE,KAAK;QACxCF,QAAQ,CAAC7B,WAAW,GAAG,GAAG;QAC1B6B,QAAQ,CAACtB,KAAK,CAACyB,aAAa,GAAG,MAAM;QACrCH,QAAQ,CAACI,OAAO,GAAG,YAAM;UACvBb,MAAI,CAACc,KAAK,CAAC,CAAC;QACd,CAAC;QACDvC,SAAS,CAACO,WAAW,CAAC2B,QAAQ,CAAC;MACjC;MACA,OAAOlC,SAAS;IAClB;;IAEA;EAAA;IAAAJ,GAAA;IAAAhD,KAAA,EACA,SAAAqE,cAAA,EAA8D;MAAA,IAAxCuB,MAAe,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAIpG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAC1D,IAAIuG,KAAK,CAACC,OAAO,CAAC,IAAI,CAACpE,SAAS,CAAC,EAAE;QACjC;QACA,IAAAqE,eAAA,GAAAC,cAAA,CAAkB,IAAI,CAACtE,SAAS;UAAzBuE,CAAC,GAAAF,eAAA;UAAEG,CAAC,GAAAH,eAAA;UAAEI,CAAC,GAAAJ,eAAA;QACd,IAAI,CAACtD,MAAM,CAAC/C,QAAQ,CAACqE,GAAG,CAACkC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,EAAC;MACpC;IACF;EAAC;IAAAtD,GAAA;IAAAhD,KAAA,EAED,SAAAuG,KAAA,EAAc;MACZ,IAAI,CAAC1D,OAAO,GAAG,IAAI;MACnB,IAAI,CAACD,MAAM,CAACC,OAAO,GAAG,IAAI;;MAE1B;MACA;MACA;MACA;MACA;MACA;IACF;EAAC;IAAAG,GAAA;IAAAhD,KAAA,EAED,SAAA2F,MAAA,EAAe;MACb,IAAI,CAAC9C,OAAO,GAAG,KAAK;MACpB,IAAI,CAACD,MAAM,CAACC,OAAO,GAAG,KAAK;;MAE3B;MACA;MACA;MACA;MACA;MACA;MACA,IAAI,IAAI,CAACL,QAAQ,EACf,IAAI,CAACA,QAAQ,CAAC,CAAC;IACnB;EAAC;IAAAQ,GAAA;IAAAhD,KAAA,EAED,SAAAwG,OAAc1F,MAAc,EAAE;MAC5B,IAAM2F,MAAM,GAAGlH,CAAC,CAAC+B,SAAS,CAAC/B,CAAC,CAACgC,SAAS,CAAC3B,cAAc,CAAC,EAAEkB,MAAM,CAAC;MAC/D,IAAI,CAACU,MAAM,GAAGiF,MAAM,CAAC1G,KAAK;MAC1B,IAAI,CAAC0B,QAAQ,GAAGgF,MAAM,CAACvG,OAAO;MAC9B,IAAI,CAACwB,MAAM,GAAG+E,MAAM,CAACtG,KAAK;MAC1B,IAAI,CAACwB,OAAO,GAAG8E,MAAM,CAACrG,MAAM;MAC5B,IAAI,CAACwB,QAAQ,GAAG6E,MAAM,CAACpG,OAAO;MAC9B,IAAI,CAACgC,aAAa,GAAGoE,MAAM,CAACnG,YAAY,IAAI,CAAC;MAC7C,IAAI,CAACyB,MAAM,GAAG0E,MAAM,CAACzE,KAAK;MAC1B,IAAI,CAACC,UAAU,GAAGwE,MAAM,CAACvE,SAAS;MAClC,IAAI,CAACC,YAAY,GAAGsE,MAAM,CAACzC,KAAK;MAEhC,IAAI,CAACpB,MAAM,CAAC8D,KAAK,CAAC,CAAC;MACnB,IAAI,CAAC5D,IAAI,CAAC,CAAC;IACb;EAAC;IAAAE,GAAA;IAAAhD,KAAA,EAED,SAAA2G,QAAA,EAAgB;MACd,IAAI,CAAC/D,MAAM,CAAC8D,KAAK,CAAC,CAAC;MACnB,IAAI,CAACE,MAAM,CAAC,IAAI,CAAChE,MAAM,CAAC;MACxB;MACA,IAAI,CAACA,MAAM,CAACiE,QAAQ,CAACC,OAAO,CAAC,UAACC,KAAU,EAAK;QAC3C,IAAIA,KAAK,CAACC,OAAO,IAAID,KAAK,CAACC,OAAO,CAACC,UAAU,EAC3CF,KAAK,CAACC,OAAO,CAACC,UAAU,CAACC,WAAW,CAACH,KAAK,CAACC,OAAO,CAAC;MACvD,CAAC,CAAC;IACJ;EAAC;EAAA,OAAAvG,SAAA;AAAA,EAxNqBd,WAAW;AA2NnC,SAASc,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/business/InfoPanel/type.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/business/InfoPanel/type.ts"],"sourcesContent":["export interface IPanel {\n /** 打开面板 */\n open: () => void\n /** 关闭面板 */\n close: () => void\n /** 更新面板 */\n update: (option: Option) => void\n /** 销毁面板 */\n destroy: () => void\n}\n\n// 面板配置项\nexport type Option = Partial<{\n position: Array<number> // 位置\n type: PanelType // 类型\n title: TitleOption // 标题\n content: ContentOption // 内容\n width: number // 宽度\n height: number // 高度\n bgColor: string // 背景颜色\n bgUrl: string // 背景图片\n borderRadius: number // 圆角\n padding: string // 内边距\n closeable: boolean // 是否显示关闭按钮\n className: string // 自定义类名\n customStyle: object // 自定义样式\n onClose: () => void // 关闭回调\n}>\n\n// 面板位置\nexport type PanelPosition = 'left' | 'right' | 'top' | 'bottom' | 'center'\n\n// 面板类型\nexport type PanelType = 'info' | 'warning' | 'error' | 'success'\n\n// 标题\nexport type TitleOption = Partial<{\n value: string\n fontSize: string\n color: string\n fontFamily: string\n fontWeight: number\n lineHeight: number | string\n textAlign: string\n padding: string\n margin: string\n icon: string\n}>\n\n// 内容\nexport type ContentOption = Partial<{\n value: string | HTMLElement\n fontSize: string\n color: string\n fontFamily: string\n fontWeight: number\n lineHeight: string\n textAlign: string\n padding: string\n margin: string\n textIndent: string\n}>\n"],"mappings":""}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import type { SceneControl, Line as TLine } from '@anov/3d-core';
|
|
1
2
|
import ObjectLayer from '../Base/ObjectLayer';
|
|
2
3
|
import type { options } from './types';
|
|
3
|
-
import { ILine } from './interface';
|
|
4
|
-
import type { Line as TLine } from '@anov/3d-core';
|
|
4
|
+
import type { ILine } from './interface';
|
|
5
5
|
export declare class Line extends ObjectLayer implements ILine {
|
|
6
6
|
private line;
|
|
7
|
-
constructor(options: options);
|
|
7
|
+
constructor(options: options, sceneControl: SceneControl);
|
|
8
8
|
createLine(options: options): TLine;
|
|
9
9
|
/** 更新线条 */
|
|
10
10
|
updateLine(options: options): void;
|