-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.ts
73 lines (62 loc) · 1.86 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// DOM Window Manager
// https://github.com/michaelkolesidis/dom-window-manager
// https://www.npmjs.com/package/dom-window-manager
// Copyright (c) 2023 Michael Kolesidis ([email protected])
// Licensed under the GNU Affero General Public License v3.0.
// https://www.gnu.org/licenses/gpl-3.0.html
let instance: any = null;
export class WindowManager {
// base z-index to be used as the initial value of all elements
base!: string;
// highest z-index amongst all elements
highZ!: string;
constructor(base = 1) {
if (instance) {
return instance;
}
instance = this;
this.base = base.toString();
this.highZ = this.base;
}
// move elements on top of all other elements
moveOnTop() {
let newHigh = parseInt(this.highZ) + 1;
this.highZ = newHigh.toString();
return newHigh.toString();
}
}
// make element draggable
export function dragElement(element: any) {
let pos1 = 0,
pos2 = 0,
pos3 = 0,
pos4 = 0;
element.onmousedown = dragMouseDown;
function dragMouseDown(e: any) {
e = e || window.event; // for IE
e.preventDefault();
// get the mouse cursor position at startup:
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = closeDragElement;
// call a function whenever the cursor moves:
document.onmousemove = elementDrag;
}
function elementDrag(e: any) {
e = e || window.event; // for IE
e.preventDefault();
// calculate the new cursor position:
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
// Set the element's new position:
element.style.top = element.offsetTop - pos2 + "px";
element.style.left = element.offsetLeft - pos1 + "px";
}
function closeDragElement() {
// stop moving when mouse button is released:
document.onmouseup = null;
document.onmousemove = null;
}
}