@kep-platform/basic-component 0.0.35 → 0.0.37
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/ViewPort/ViewPort.d.ts +47 -9
- package/dist/ViewPort/ViewPort.js +129 -48
- package/dist/ViewPort/test.d.ts +2 -1
- package/dist/ViewPort/test.js +19 -29
- package/dist/Window/Window.d.ts +0 -4
- package/dist/Window/Window.js +30 -11
- package/dist/Window/WindowStore.d.ts +24 -12
- package/dist/Window/WindowStore.js +78 -23
- package/dist/Window/test.js +9 -11
- package/package.json +3 -3
@@ -1,10 +1,12 @@
|
|
1
1
|
import { Transform } from '@dnd-kit/utilities';
|
2
2
|
import React, { HtmlHTMLAttributes, ReactNode } from 'react';
|
3
|
+
import { WindowStore } from '../Window';
|
4
|
+
import { WindowProps } from '../Window/Window';
|
3
5
|
type ViewPortProps = {
|
4
6
|
children?: ReactNode;
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
viewPortStore: ViewPortStore;
|
8
|
+
onScale?: (left: number, top: number, scale: number, ratio: number) => void;
|
9
|
+
onScroll?: (left: number, top: number, scale: number, ratio: number) => void;
|
8
10
|
} & HtmlHTMLAttributes<HTMLDivElement>;
|
9
11
|
export declare class ViewPortStore {
|
10
12
|
transform: {
|
@@ -19,7 +21,7 @@ export declare class ViewPortStore {
|
|
19
21
|
width: number;
|
20
22
|
height: number;
|
21
23
|
ratio: number;
|
22
|
-
constructor(ratio?: number);
|
24
|
+
constructor(width?: number, height?: number, ratio?: number);
|
23
25
|
increaseScale(): void;
|
24
26
|
decreaseScale(): void;
|
25
27
|
move(transform: Transform): void;
|
@@ -34,12 +36,10 @@ export declare class ViewPortStore {
|
|
34
36
|
min: number;
|
35
37
|
};
|
36
38
|
};
|
37
|
-
|
39
|
+
formatedTransform(left: number, top: number): {
|
38
40
|
left: number;
|
39
41
|
top: number;
|
40
42
|
};
|
41
|
-
get minScale(): number;
|
42
|
-
get maxScale(): number;
|
43
43
|
get formatedScale(): number;
|
44
44
|
get contentStyle(): {
|
45
45
|
left: string;
|
@@ -55,5 +55,43 @@ export declare class ViewPortStore {
|
|
55
55
|
overflow: string;
|
56
56
|
};
|
57
57
|
}
|
58
|
-
|
59
|
-
|
58
|
+
declare function ViewPort(props: ViewPortProps): React.JSX.Element;
|
59
|
+
declare namespace ViewPort {
|
60
|
+
var Window: React.FunctionComponent<WindowProps & {
|
61
|
+
viewPortStore: ViewPortStore;
|
62
|
+
window: ViewPortWindowStore;
|
63
|
+
}>;
|
64
|
+
}
|
65
|
+
export default ViewPort;
|
66
|
+
export declare class ViewPortWindowStore extends WindowStore {
|
67
|
+
scale: number;
|
68
|
+
get style(): {
|
69
|
+
left: string;
|
70
|
+
top: string;
|
71
|
+
width: string;
|
72
|
+
height: string;
|
73
|
+
zIndex: number;
|
74
|
+
transform: string;
|
75
|
+
transition: string;
|
76
|
+
transformOrigin?: undefined;
|
77
|
+
} | {
|
78
|
+
left: string;
|
79
|
+
top: string;
|
80
|
+
width: number;
|
81
|
+
height: number;
|
82
|
+
zIndex: number;
|
83
|
+
transform: string;
|
84
|
+
transition: string;
|
85
|
+
transformOrigin?: undefined;
|
86
|
+
} | {
|
87
|
+
left: string;
|
88
|
+
top: string;
|
89
|
+
width: string;
|
90
|
+
height: string;
|
91
|
+
zIndex: number;
|
92
|
+
transform: string;
|
93
|
+
transformOrigin: string;
|
94
|
+
transition: string;
|
95
|
+
};
|
96
|
+
constructor(id: string, onClosedHandler?: (id: string) => void);
|
97
|
+
}
|
@@ -1,10 +1,15 @@
|
|
1
|
+
var _excluded = ["children", "viewPortStore"],
|
2
|
+
_excluded2 = ["viewPortStore", "window"];
|
1
3
|
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
|
3
|
-
function
|
4
|
-
function
|
5
|
-
function
|
6
|
-
function
|
7
|
-
function
|
4
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
5
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
6
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
7
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
8
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
9
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
10
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
11
|
+
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; }
|
12
|
+
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; }
|
8
13
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
9
14
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
10
15
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
@@ -13,10 +18,12 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
13
18
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
14
19
|
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); }
|
15
20
|
import { DndContext, useDraggable } from '@dnd-kit/core';
|
16
|
-
import { makeAutoObservable, runInAction } from 'mobx';
|
21
|
+
import { makeAutoObservable, makeObservable, observable, override, runInAction } from 'mobx';
|
17
22
|
import { observer } from 'mobx-react-lite';
|
18
|
-
import React, { useEffect, useRef
|
23
|
+
import React, { useEffect, useRef } from 'react';
|
19
24
|
import styled from 'styled-components';
|
25
|
+
import { WindowStore } from "../Window";
|
26
|
+
import { default as Window } from "../Window/Window";
|
20
27
|
import { GlobalStyles } from "../__styles";
|
21
28
|
var Container = styled.div.withConfig({
|
22
29
|
displayName: "Container",
|
@@ -28,7 +35,7 @@ var Content = styled.div.withConfig({
|
|
28
35
|
})(["position:absolute;"]);
|
29
36
|
export var ViewPortStore = /*#__PURE__*/function () {
|
30
37
|
//缩放比例
|
31
|
-
function ViewPortStore(ratio) {
|
38
|
+
function ViewPortStore(width, height, ratio) {
|
32
39
|
_classCallCheck(this, ViewPortStore);
|
33
40
|
_defineProperty(this, "transform", {
|
34
41
|
left: 0,
|
@@ -43,6 +50,8 @@ export var ViewPortStore = /*#__PURE__*/function () {
|
|
43
50
|
_defineProperty(this, "height", 800);
|
44
51
|
_defineProperty(this, "ratio", 5);
|
45
52
|
if (ratio) this.ratio = ratio;
|
53
|
+
if (width) this.width = width;
|
54
|
+
if (height) this.height = height;
|
46
55
|
makeAutoObservable(this);
|
47
56
|
}
|
48
57
|
_createClass(ViewPortStore, [{
|
@@ -53,13 +62,12 @@ export var ViewPortStore = /*#__PURE__*/function () {
|
|
53
62
|
}, {
|
54
63
|
key: "decreaseScale",
|
55
64
|
value: function decreaseScale() {
|
56
|
-
if (this.scale > this.
|
65
|
+
if (this.scale > parseFloat((1 / this.ratio).toFixed(1))) this.scale -= 0.03125;
|
57
66
|
}
|
58
67
|
}, {
|
59
68
|
key: "move",
|
60
69
|
value: function move(transform) {
|
61
|
-
this.transform
|
62
|
-
this.transform.top = transform.y - this.offset.y + this.transform.top;
|
70
|
+
this.transform = this.formatedTransform(transform.x - this.offset.x + this.transform.left, transform.y - this.offset.y + this.transform.top);
|
63
71
|
this.offset.x = transform.x;
|
64
72
|
this.offset.y = transform.y;
|
65
73
|
}
|
@@ -85,33 +93,23 @@ export var ViewPortStore = /*#__PURE__*/function () {
|
|
85
93
|
}
|
86
94
|
}, {
|
87
95
|
key: "formatedTransform",
|
88
|
-
|
96
|
+
value: function formatedTransform(left, top) {
|
89
97
|
return {
|
90
|
-
left: Math.max(this.transformLimit.left.min, Math.min(
|
91
|
-
top: Math.max(this.transformLimit.top.min, Math.min(
|
98
|
+
left: Math.max(this.transformLimit.left.min, Math.min(left, this.transformLimit.left.max)),
|
99
|
+
top: Math.max(this.transformLimit.top.min, Math.min(top, this.transformLimit.top.max))
|
92
100
|
};
|
93
101
|
}
|
94
|
-
}, {
|
95
|
-
key: "minScale",
|
96
|
-
get: function get() {
|
97
|
-
return parseFloat((1 / this.ratio).toFixed(1));
|
98
|
-
}
|
99
|
-
}, {
|
100
|
-
key: "maxScale",
|
101
|
-
get: function get() {
|
102
|
-
return 1;
|
103
|
-
}
|
104
102
|
}, {
|
105
103
|
key: "formatedScale",
|
106
104
|
get: function get() {
|
107
|
-
return Math.min(
|
105
|
+
return Math.min(1, Math.max(parseFloat((1 / this.ratio).toFixed(1)), this.scale));
|
108
106
|
}
|
109
107
|
}, {
|
110
108
|
key: "contentStyle",
|
111
109
|
get: function get() {
|
112
110
|
return {
|
113
|
-
left: this.
|
114
|
-
top: this.
|
111
|
+
left: this.transform.left + 'px',
|
112
|
+
top: this.transform.top + 'px',
|
115
113
|
transform: "scale(".concat(this.formatedScale, ")"),
|
116
114
|
width: this.width * this.ratio + 'px',
|
117
115
|
height: this.height * this.ratio + 'px',
|
@@ -132,7 +130,9 @@ export var ViewPortStore = /*#__PURE__*/function () {
|
|
132
130
|
}();
|
133
131
|
var ViewPortEntity = observer(function (props) {
|
134
132
|
var children = props.children,
|
135
|
-
viewPortStore = props.viewPortStore
|
133
|
+
viewPortStore = props.viewPortStore,
|
134
|
+
onScroll = props.onScroll,
|
135
|
+
onScale = props.onScale;
|
136
136
|
var _useDraggable = useDraggable({
|
137
137
|
id: 'ViewPortEntity'
|
138
138
|
}),
|
@@ -145,6 +145,7 @@ var ViewPortEntity = observer(function (props) {
|
|
145
145
|
useEffect(function () {
|
146
146
|
if (transform) {
|
147
147
|
viewPortStore.move(transform);
|
148
|
+
onScroll === null || onScroll === void 0 || onScroll(viewPortStore.transform.left, viewPortStore.transform.top, viewPortStore.scale, viewPortStore.ratio);
|
148
149
|
} else {
|
149
150
|
viewPortStore.endMove();
|
150
151
|
}
|
@@ -159,6 +160,7 @@ var ViewPortEntity = observer(function (props) {
|
|
159
160
|
} else {
|
160
161
|
viewPortStore.decreaseScale();
|
161
162
|
}
|
163
|
+
onScale === null || onScale === void 0 || onScale(viewPortStore.transform.left, viewPortStore.transform.top, viewPortStore.scale, viewPortStore.ratio);
|
162
164
|
}
|
163
165
|
(_ref$current = _ref.current) === null || _ref$current === void 0 || _ref$current.addEventListener('wheel', scaleHandler, {
|
164
166
|
passive: false
|
@@ -178,28 +180,107 @@ var ViewPortEntity = observer(function (props) {
|
|
178
180
|
}
|
179
181
|
}, attributes, listeners, {
|
180
182
|
style: viewPortStore.contentStyle
|
181
|
-
}),
|
183
|
+
}), children));
|
182
184
|
});
|
183
185
|
export default function ViewPort(props) {
|
184
186
|
var children = props.children,
|
185
|
-
|
186
|
-
|
187
|
-
height = props.height;
|
188
|
-
var _useState = useState(function () {
|
189
|
-
return new ViewPortStore(ratio);
|
190
|
-
}),
|
191
|
-
_useState2 = _slicedToArray(_useState, 1),
|
192
|
-
viewPortStore = _useState2[0];
|
193
|
-
useEffect(function () {
|
194
|
-
runInAction(function () {
|
195
|
-
if (ratio) viewPortStore.ratio = ratio;
|
196
|
-
if (width) viewPortStore.width = width;
|
197
|
-
if (height) viewPortStore.height = height;
|
198
|
-
});
|
199
|
-
}, [ratio, width, height]);
|
187
|
+
viewPortStore = props.viewPortStore,
|
188
|
+
rest = _objectWithoutProperties(props, _excluded);
|
200
189
|
return /*#__PURE__*/React.createElement(DndContext, null, /*#__PURE__*/React.createElement(GlobalStyles, {
|
201
190
|
$css: []
|
202
|
-
}), /*#__PURE__*/React.createElement(ViewPortEntity, {
|
191
|
+
}), /*#__PURE__*/React.createElement(ViewPortEntity, _extends({
|
203
192
|
viewPortStore: viewPortStore
|
204
|
-
}, children));
|
205
|
-
}
|
193
|
+
}, rest), children));
|
194
|
+
}
|
195
|
+
export var ViewPortWindowStore = /*#__PURE__*/function (_WindowStore) {
|
196
|
+
_inherits(ViewPortWindowStore, _WindowStore);
|
197
|
+
var _super = _createSuper(ViewPortWindowStore);
|
198
|
+
function ViewPortWindowStore(id, onClosedHandler) {
|
199
|
+
var _this;
|
200
|
+
_classCallCheck(this, ViewPortWindowStore);
|
201
|
+
_this = _super.call(this, id, onClosedHandler);
|
202
|
+
_defineProperty(_assertThisInitialized(_this), "scale", 1);
|
203
|
+
makeObservable(_assertThisInitialized(_this), {
|
204
|
+
style: override,
|
205
|
+
scale: observable
|
206
|
+
});
|
207
|
+
return _this;
|
208
|
+
}
|
209
|
+
_createClass(ViewPortWindowStore, [{
|
210
|
+
key: "style",
|
211
|
+
get: function get() {
|
212
|
+
if (this.isClosed) {
|
213
|
+
return {
|
214
|
+
left: this.left + 'px',
|
215
|
+
top: this.top + 'px',
|
216
|
+
width: this.width + 'px',
|
217
|
+
height: this.height + 'px',
|
218
|
+
zIndex: this.zIndex,
|
219
|
+
transform: 'scale(0)',
|
220
|
+
transition: 'all 0.5s ease-out'
|
221
|
+
};
|
222
|
+
}
|
223
|
+
if (this.isMinimize && this.minimizePos) {
|
224
|
+
return {
|
225
|
+
left: this.minimizePos.left + 'px',
|
226
|
+
top: this.minimizePos.top + 'px',
|
227
|
+
width: 0,
|
228
|
+
height: 0,
|
229
|
+
zIndex: this.zIndex,
|
230
|
+
transform: 'scale(0)',
|
231
|
+
transition: 'all 0.5s ease-out'
|
232
|
+
};
|
233
|
+
}
|
234
|
+
if (this.fullscreen) {
|
235
|
+
return {
|
236
|
+
left: this.fullscreenPos.left / this.scale + 'px',
|
237
|
+
top: this.fullscreenPos.top / this.scale + 'px',
|
238
|
+
width: this.fullscreenPos.width + 'px',
|
239
|
+
height: this.fullscreenPos.height + 'px',
|
240
|
+
zIndex: this.zIndex,
|
241
|
+
transform: "scale(".concat(1 / this.scale, ") "),
|
242
|
+
transformOrigin: 'left top',
|
243
|
+
transition: 'width height 0.5s ease-out'
|
244
|
+
};
|
245
|
+
}
|
246
|
+
if (this.isMoving || this.isResizing) {
|
247
|
+
return {
|
248
|
+
left: this.left + 'px',
|
249
|
+
top: this.top + 'px',
|
250
|
+
width: this.width + 'px',
|
251
|
+
height: this.height + 'px',
|
252
|
+
zIndex: this.zIndex,
|
253
|
+
transform: 'none',
|
254
|
+
transition: 'none'
|
255
|
+
};
|
256
|
+
}
|
257
|
+
return {
|
258
|
+
left: this.left + 'px',
|
259
|
+
top: this.top + 'px',
|
260
|
+
width: this.width + 'px',
|
261
|
+
height: this.height + 'px',
|
262
|
+
zIndex: this.zIndex,
|
263
|
+
transform: 'none',
|
264
|
+
transition: 'all 0.5s ease-out'
|
265
|
+
};
|
266
|
+
}
|
267
|
+
}]);
|
268
|
+
return ViewPortWindowStore;
|
269
|
+
}(WindowStore);
|
270
|
+
ViewPort.Window = observer(function ViewPortWindow(props) {
|
271
|
+
var viewPortStore = props.viewPortStore,
|
272
|
+
window = props.window,
|
273
|
+
rest = _objectWithoutProperties(props, _excluded2);
|
274
|
+
useEffect(function () {
|
275
|
+
runInAction(function () {
|
276
|
+
window.fullscreenPos.left = -viewPortStore.transform.left;
|
277
|
+
window.fullscreenPos.top = -viewPortStore.transform.top;
|
278
|
+
window.fullscreenPos.width = viewPortStore.width;
|
279
|
+
window.fullscreenPos.height = viewPortStore.height;
|
280
|
+
window.scale = viewPortStore.scale;
|
281
|
+
});
|
282
|
+
}, [viewPortStore.transform.left, viewPortStore.transform.top, viewPortStore.scale, viewPortStore.ratio, viewPortStore.width, viewPortStore.height]);
|
283
|
+
return /*#__PURE__*/React.createElement(Window, _extends({
|
284
|
+
window: window
|
285
|
+
}, rest));
|
286
|
+
});
|
package/dist/ViewPort/test.d.ts
CHANGED
package/dist/ViewPort/test.js
CHANGED
@@ -1,24 +1,18 @@
|
|
1
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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
3
|
-
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."); }
|
4
|
-
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); }
|
5
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
6
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
7
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
8
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
9
3
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
10
4
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
11
5
|
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; }
|
12
6
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
13
7
|
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); }
|
14
|
-
import { makeAutoObservable } from 'mobx';
|
15
|
-
import
|
16
|
-
import {
|
17
|
-
import ViewPort from "./ViewPort";
|
8
|
+
import { makeAutoObservable, runInAction } from 'mobx';
|
9
|
+
import { observer, useLocalObservable } from 'mobx-react-lite';
|
10
|
+
import React, { useEffect } from 'react';
|
11
|
+
import ViewPort, { ViewPortStore, ViewPortWindowStore } from "./ViewPort";
|
18
12
|
var WindowManager = /*#__PURE__*/function () {
|
19
13
|
function WindowManager() {
|
20
14
|
_classCallCheck(this, WindowManager);
|
21
|
-
_defineProperty(this, "windows", [new
|
15
|
+
_defineProperty(this, "windows", [new ViewPortWindowStore('jss', this.closeWindowHanlder.bind(this))]);
|
22
16
|
makeAutoObservable(this);
|
23
17
|
}
|
24
18
|
_createClass(WindowManager, [{
|
@@ -39,19 +33,16 @@ var WindowManager = /*#__PURE__*/function () {
|
|
39
33
|
return WindowManager;
|
40
34
|
}();
|
41
35
|
var windowManager = new WindowManager();
|
42
|
-
export default function Test() {
|
43
|
-
var
|
44
|
-
|
45
|
-
|
46
|
-
setWidth = _useState2[1];
|
47
|
-
var _useState3 = useState(0),
|
48
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
49
|
-
height = _useState4[0],
|
50
|
-
setHeight = _useState4[1];
|
36
|
+
export default observer(function Test() {
|
37
|
+
var viewPortStore = useLocalObservable(function () {
|
38
|
+
return new ViewPortStore(0, 0, 5);
|
39
|
+
});
|
51
40
|
useEffect(function () {
|
52
41
|
function setWidthHeight() {
|
53
|
-
|
54
|
-
|
42
|
+
runInAction(function () {
|
43
|
+
viewPortStore.width = 800;
|
44
|
+
viewPortStore.height = 800;
|
45
|
+
});
|
55
46
|
}
|
56
47
|
window.addEventListener('resize', setWidthHeight);
|
57
48
|
setWidthHeight();
|
@@ -60,14 +51,13 @@ export default function Test() {
|
|
60
51
|
};
|
61
52
|
}, []);
|
62
53
|
return /*#__PURE__*/React.createElement(ViewPort, {
|
63
|
-
|
64
|
-
width: width,
|
65
|
-
height: height
|
54
|
+
viewPortStore: viewPortStore
|
66
55
|
}, windowManager.windows.map(function (windowStore) {
|
67
|
-
return /*#__PURE__*/React.createElement(Window, {
|
56
|
+
return /*#__PURE__*/React.createElement(ViewPort.Window, {
|
68
57
|
window: windowStore,
|
69
58
|
key: windowStore.id,
|
70
|
-
title: 'xixi'
|
71
|
-
|
59
|
+
title: 'xixi',
|
60
|
+
viewPortStore: viewPortStore
|
61
|
+
}, /*#__PURE__*/React.createElement("br", null));
|
72
62
|
}));
|
73
|
-
}
|
63
|
+
});
|
package/dist/Window/Window.d.ts
CHANGED
package/dist/Window/Window.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { CloseCircleOutlined, FullscreenExitOutlined, FullscreenOutlined, MinusCircleOutlined } from '@ant-design/icons';
|
2
2
|
import { observer } from 'mobx-react-lite';
|
3
|
-
import React from 'react';
|
3
|
+
import React, { useEffect, useRef } from 'react';
|
4
4
|
import styled, { css } from 'styled-components';
|
5
5
|
import { Space } from "../Space";
|
6
6
|
import WindowController from "./WindowController";
|
@@ -74,12 +74,20 @@ var WindowControllerRightBottom = styled(WindowController).withConfig({
|
|
74
74
|
var Window = observer(function (props) {
|
75
75
|
var window = props.window,
|
76
76
|
title = props.title,
|
77
|
-
children = props.children
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
77
|
+
children = props.children;
|
78
|
+
var windowContainerRef = useRef(null);
|
79
|
+
useEffect(function () {
|
80
|
+
var _windowContainerRef$c;
|
81
|
+
function stopWheel(e) {
|
82
|
+
e.stopPropagation();
|
83
|
+
e.preventDefault();
|
84
|
+
}
|
85
|
+
(_windowContainerRef$c = windowContainerRef.current) === null || _windowContainerRef$c === void 0 || _windowContainerRef$c.addEventListener('wheel', stopWheel);
|
86
|
+
return function () {
|
87
|
+
var _windowContainerRef$c2;
|
88
|
+
(_windowContainerRef$c2 = windowContainerRef.current) === null || _windowContainerRef$c2 === void 0 || _windowContainerRef$c2.removeEventListener('wheel', stopWheel);
|
89
|
+
};
|
90
|
+
}, []);
|
83
91
|
/* style 的原因是因为性能问题 */
|
84
92
|
return /*#__PURE__*/React.createElement(WindowContainer, {
|
85
93
|
style: window.style,
|
@@ -89,7 +97,11 @@ var Window = observer(function (props) {
|
|
89
97
|
var _window$onClosedHandl;
|
90
98
|
(_window$onClosedHandl = window.onClosedHandler) === null || _window$onClosedHandl === void 0 || _window$onClosedHandl.call(window, window.id);
|
91
99
|
}
|
92
|
-
}
|
100
|
+
},
|
101
|
+
onPointerDown: function onPointerDown(e) {
|
102
|
+
e.stopPropagation();
|
103
|
+
},
|
104
|
+
ref: windowContainerRef
|
93
105
|
}, /*#__PURE__*/React.createElement(WindowControllerLeft, {
|
94
106
|
window: window,
|
95
107
|
type: "left"
|
@@ -118,7 +130,14 @@ var Window = observer(function (props) {
|
|
118
130
|
window: window,
|
119
131
|
type: "move"
|
120
132
|
}, /*#__PURE__*/React.createElement(WindowHeader, {
|
121
|
-
isDragging: window.isMoving
|
133
|
+
isDragging: window.isMoving,
|
134
|
+
onDoubleClick: function onDoubleClick() {
|
135
|
+
if (window.fullscreen) {
|
136
|
+
window.fullscreenExitWindow();
|
137
|
+
} else {
|
138
|
+
window.fullscreenWindow();
|
139
|
+
}
|
140
|
+
}
|
122
141
|
}, /*#__PURE__*/React.createElement("h5", null, title), /*#__PURE__*/React.createElement(WindowHeaderOptions, {
|
123
142
|
onPointerDown: function onPointerDown(e) {
|
124
143
|
e.stopPropagation();
|
@@ -139,7 +158,7 @@ var Window = observer(function (props) {
|
|
139
158
|
color: "var(--kep-platform-green-3)",
|
140
159
|
icon: /*#__PURE__*/React.createElement(MinusCircleOutlined, null),
|
141
160
|
onClick: function onClick() {
|
142
|
-
window.minimizeWindow(
|
161
|
+
window.minimizeWindow();
|
143
162
|
}
|
144
163
|
}), /*#__PURE__*/React.createElement(WindowOption, {
|
145
164
|
onClick: function onClick() {
|
@@ -147,6 +166,6 @@ var Window = observer(function (props) {
|
|
147
166
|
},
|
148
167
|
icon: /*#__PURE__*/React.createElement(CloseCircleOutlined, null),
|
149
168
|
color: "var(--kep-platform-red)"
|
150
|
-
}))))), /*#__PURE__*/React.createElement(WindowBody, null, children)));
|
169
|
+
}))))), /*#__PURE__*/React.createElement(WindowBody, null, window.info, children)));
|
151
170
|
});
|
152
171
|
export default Window;
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { Transform } from '@dnd-kit/utilities';
|
2
2
|
import { WindowControllerType } from './WindowController';
|
3
3
|
export default class WindowStore {
|
4
|
-
width:
|
5
|
-
height:
|
6
|
-
left:
|
7
|
-
top:
|
4
|
+
width: number;
|
5
|
+
height: number;
|
6
|
+
left: number;
|
7
|
+
top: number;
|
8
8
|
zIndex: number;
|
9
9
|
fullscreen: boolean;
|
10
10
|
id: string;
|
@@ -18,6 +18,12 @@ export default class WindowStore {
|
|
18
18
|
left: number;
|
19
19
|
top: number;
|
20
20
|
} | null;
|
21
|
+
fullscreenPos: {
|
22
|
+
left: number;
|
23
|
+
top: number;
|
24
|
+
width: number;
|
25
|
+
height: number;
|
26
|
+
};
|
21
27
|
isMinimize: boolean;
|
22
28
|
isClosed: boolean;
|
23
29
|
onClosedHandler: ((id: string) => void) | undefined;
|
@@ -31,19 +37,25 @@ export default class WindowStore {
|
|
31
37
|
};
|
32
38
|
controll(transform: Transform, type: WindowControllerType): void;
|
33
39
|
endControll(): void;
|
34
|
-
minimizeWindow(
|
35
|
-
left: number;
|
36
|
-
top: number;
|
37
|
-
}): void;
|
40
|
+
minimizeWindow(): void;
|
38
41
|
normalizeWindow(): void;
|
39
42
|
closeWindow(): void;
|
40
43
|
get style(): {
|
41
|
-
left: string
|
42
|
-
top: string
|
43
|
-
width: string
|
44
|
-
height: string
|
44
|
+
left: string;
|
45
|
+
top: string;
|
46
|
+
width: string;
|
47
|
+
height: string;
|
48
|
+
zIndex: number;
|
49
|
+
transform: string;
|
50
|
+
transition: string;
|
51
|
+
} | {
|
52
|
+
left: string;
|
53
|
+
top: string;
|
54
|
+
width: number;
|
55
|
+
height: number;
|
45
56
|
zIndex: number;
|
46
57
|
transform: string;
|
47
58
|
transition: string;
|
48
59
|
};
|
60
|
+
get info(): string;
|
49
61
|
}
|
@@ -9,10 +9,10 @@ import { action, computed, makeObservable, observable } from 'mobx';
|
|
9
9
|
var WindowStore = /*#__PURE__*/function () {
|
10
10
|
function WindowStore(id, onClosedHandler) {
|
11
11
|
_classCallCheck(this, WindowStore);
|
12
|
-
_defineProperty(this, "width",
|
13
|
-
_defineProperty(this, "height",
|
14
|
-
_defineProperty(this, "left",
|
15
|
-
_defineProperty(this, "top",
|
12
|
+
_defineProperty(this, "width", 400);
|
13
|
+
_defineProperty(this, "height", 400);
|
14
|
+
_defineProperty(this, "left", 0);
|
15
|
+
_defineProperty(this, "top", 0);
|
16
16
|
_defineProperty(this, "zIndex", 1);
|
17
17
|
_defineProperty(this, "fullscreen", false);
|
18
18
|
_defineProperty(this, "id", '');
|
@@ -20,6 +20,12 @@ var WindowStore = /*#__PURE__*/function () {
|
|
20
20
|
_defineProperty(this, "isMoving", false);
|
21
21
|
_defineProperty(this, "isResizing", false);
|
22
22
|
_defineProperty(this, "minimizePos", null);
|
23
|
+
_defineProperty(this, "fullscreenPos", {
|
24
|
+
left: 0,
|
25
|
+
top: 0,
|
26
|
+
width: 0,
|
27
|
+
height: 0
|
28
|
+
});
|
23
29
|
_defineProperty(this, "isMinimize", false);
|
24
30
|
_defineProperty(this, "isClosed", false);
|
25
31
|
_defineProperty(this, "onClosedHandler", void 0);
|
@@ -41,10 +47,12 @@ var WindowStore = /*#__PURE__*/function () {
|
|
41
47
|
style: computed.struct,
|
42
48
|
isMinimize: observable,
|
43
49
|
minimizePos: observable.struct,
|
50
|
+
fullscreenPos: observable.struct,
|
44
51
|
minimizeWindow: action,
|
45
52
|
normalizeWindow: action,
|
46
53
|
closeWindow: action,
|
47
|
-
resetState: action
|
54
|
+
resetState: action,
|
55
|
+
info: computed
|
48
56
|
});
|
49
57
|
this.id = id;
|
50
58
|
this.onClosedHandler = onClosedHandler;
|
@@ -87,22 +95,22 @@ var WindowStore = /*#__PURE__*/function () {
|
|
87
95
|
this.isResizing = true;
|
88
96
|
}
|
89
97
|
if (type.includes('left')) {
|
90
|
-
this.left = Math.round(
|
91
|
-
this.width = Math.round(
|
98
|
+
this.left = Math.round(this.left + offsetTransform.x);
|
99
|
+
this.width = Math.round(this.width - offsetTransform.x);
|
92
100
|
}
|
93
101
|
if (type.includes('right')) {
|
94
|
-
this.width = Math.round(
|
102
|
+
this.width = Math.round(this.width + offsetTransform.x);
|
95
103
|
}
|
96
104
|
if (type.includes('top')) {
|
97
|
-
this.top = Math.round(
|
98
|
-
this.height = Math.round(
|
105
|
+
this.top = Math.round(this.top + offsetTransform.y);
|
106
|
+
this.height = Math.round(this.height - offsetTransform.y);
|
99
107
|
}
|
100
108
|
if (type.includes('bottom')) {
|
101
|
-
this.height = Math.round(
|
109
|
+
this.height = Math.round(this.height + offsetTransform.y);
|
102
110
|
}
|
103
111
|
if (type.includes('move')) {
|
104
|
-
this.left = Math.round(
|
105
|
-
this.top = Math.round(
|
112
|
+
this.left = Math.round(this.left + offsetTransform.x);
|
113
|
+
this.top = Math.round(this.top + offsetTransform.y);
|
106
114
|
}
|
107
115
|
this.transform = transform;
|
108
116
|
}
|
@@ -115,8 +123,7 @@ var WindowStore = /*#__PURE__*/function () {
|
|
115
123
|
}
|
116
124
|
}, {
|
117
125
|
key: "minimizeWindow",
|
118
|
-
value: function minimizeWindow(
|
119
|
-
this.minimizePos = minimize;
|
126
|
+
value: function minimizeWindow() {
|
120
127
|
this.isMinimize = true;
|
121
128
|
this.fullscreen = false;
|
122
129
|
this.resetState();
|
@@ -138,16 +145,64 @@ var WindowStore = /*#__PURE__*/function () {
|
|
138
145
|
}, {
|
139
146
|
key: "style",
|
140
147
|
get: function get() {
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
148
|
+
if (this.isClosed) {
|
149
|
+
return {
|
150
|
+
left: this.left + 'px',
|
151
|
+
top: this.top + 'px',
|
152
|
+
width: this.width + 'px',
|
153
|
+
height: this.height + 'px',
|
154
|
+
zIndex: this.zIndex,
|
155
|
+
transform: 'scale(0)',
|
156
|
+
transition: 'all 0.5s ease-out'
|
157
|
+
};
|
158
|
+
}
|
159
|
+
if (this.isMinimize && this.minimizePos) {
|
160
|
+
return {
|
161
|
+
left: this.minimizePos.left + 'px',
|
162
|
+
top: this.minimizePos.top + 'px',
|
163
|
+
width: 0,
|
164
|
+
height: 0,
|
165
|
+
zIndex: this.zIndex,
|
166
|
+
transform: 'scale(0)',
|
167
|
+
transition: 'all 0.5s ease-out'
|
168
|
+
};
|
169
|
+
}
|
170
|
+
if (this.fullscreen) {
|
171
|
+
return {
|
172
|
+
left: this.fullscreenPos.left + 'px',
|
173
|
+
top: this.fullscreenPos.top + 'px',
|
174
|
+
width: this.fullscreenPos.width + 'px',
|
175
|
+
height: this.fullscreenPos.height + 'px',
|
176
|
+
zIndex: this.zIndex,
|
177
|
+
transform: 'none',
|
178
|
+
transition: 'all 0.5s ease-out'
|
179
|
+
};
|
180
|
+
}
|
181
|
+
if (this.isMoving || this.isResizing) {
|
182
|
+
return {
|
183
|
+
left: this.left + 'px',
|
184
|
+
top: this.top + 'px',
|
185
|
+
width: this.width + 'px',
|
186
|
+
height: this.height + 'px',
|
187
|
+
zIndex: this.zIndex,
|
188
|
+
transform: 'none',
|
189
|
+
transition: 'none'
|
190
|
+
};
|
191
|
+
}
|
192
|
+
return {
|
193
|
+
left: this.left + 'px',
|
194
|
+
top: this.top + 'px',
|
195
|
+
width: this.width + 'px',
|
196
|
+
height: this.height + 'px',
|
146
197
|
zIndex: this.zIndex,
|
147
|
-
transform:
|
148
|
-
transition:
|
198
|
+
transform: 'none',
|
199
|
+
transition: 'all 0.5s ease-out'
|
149
200
|
};
|
150
|
-
|
201
|
+
}
|
202
|
+
}, {
|
203
|
+
key: "info",
|
204
|
+
get: function get() {
|
205
|
+
return JSON.stringify(this.fullscreenPos, null, 4);
|
151
206
|
}
|
152
207
|
}]);
|
153
208
|
return WindowStore;
|
package/dist/Window/test.js
CHANGED
@@ -7,10 +7,9 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
7
7
|
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); }
|
8
8
|
import { DndContext } from '@dnd-kit/core';
|
9
9
|
import { makeAutoObservable } from 'mobx';
|
10
|
-
import { observer } from 'mobx-react-lite';
|
10
|
+
import { observer, useLocalObservable } from 'mobx-react-lite';
|
11
11
|
import React from 'react';
|
12
|
-
import {
|
13
|
-
import { Space } from "../Space";
|
12
|
+
import { ViewPort, ViewPortStore } from "../ViewPort";
|
14
13
|
import { GlobalStyles } from "../__styles";
|
15
14
|
import Window from "./Window";
|
16
15
|
import { WindowStore } from "./index";
|
@@ -39,19 +38,18 @@ var WindowManager = /*#__PURE__*/function () {
|
|
39
38
|
}();
|
40
39
|
var windowManager = new WindowManager();
|
41
40
|
export default observer(function Test() {
|
41
|
+
var viewPortStore = useLocalObservable(function () {
|
42
|
+
return new ViewPortStore();
|
43
|
+
});
|
42
44
|
return /*#__PURE__*/React.createElement(DndContext, null, /*#__PURE__*/React.createElement(GlobalStyles, {
|
43
45
|
$css: []
|
44
|
-
}), /*#__PURE__*/React.createElement(
|
45
|
-
|
46
|
-
|
47
|
-
window.normalizeWindow();
|
48
|
-
});
|
49
|
-
}
|
50
|
-
}, "\u5C55\u5F00")), windowManager.windows.map(function (windowStore) {
|
46
|
+
}), /*#__PURE__*/React.createElement(ViewPort, {
|
47
|
+
viewPortStore: viewPortStore
|
48
|
+
}, windowManager.windows.map(function (windowStore) {
|
51
49
|
return /*#__PURE__*/React.createElement(Window, {
|
52
50
|
window: windowStore,
|
53
51
|
key: windowStore.id,
|
54
52
|
title: 'xixi'
|
55
53
|
}, "123");
|
56
|
-
}));
|
54
|
+
})));
|
57
55
|
});
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@kep-platform/basic-component",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.37",
|
4
4
|
"description": "A react library developed with dumi",
|
5
5
|
"license": "MIT",
|
6
6
|
"module": "dist/index.js",
|
@@ -47,7 +47,7 @@
|
|
47
47
|
},
|
48
48
|
"dependencies": {
|
49
49
|
"@ant-design/icons": "^5.3.7",
|
50
|
-
"@kep-platform/hooks": "^0.0.
|
50
|
+
"@kep-platform/hooks": "^0.0.37",
|
51
51
|
"color": "^4.2.3",
|
52
52
|
"rc-pagination": "^4.1.0",
|
53
53
|
"styled-components": "^6.1.11"
|
@@ -87,5 +87,5 @@
|
|
87
87
|
"authors": [
|
88
88
|
"lee-step-jss 1599925910@qq.com"
|
89
89
|
],
|
90
|
-
"gitHead": "
|
90
|
+
"gitHead": "80925e92fb2de497863b5dd479f24a343e62ca38"
|
91
91
|
}
|