summaryrefslogtreecommitdiff
path: root/static/script.js
blob: a579a3ed6a4773f18cad019799fd4642d671503e (plain)
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
74
75
76
77
78
"use strict";

(function () {
	const dropZone = document.body;
	if (!dropZone) {
		return;
	}

	const hoverClassName = "hover";

	// Handle drag* events to handle style
	// Add the css you want when the class "hover" is present
	dropZone.addEventListener("dragenter", function (e) {
		e.preventDefault();
		dropZone.classList.add(hoverClassName);
	});

	dropZone.addEventListener("dragover", function (e) {
		e.preventDefault();
		dropZone.classList.add(hoverClassName);
	});

	dropZone.addEventListener("dragleave", function (e) {
		e.preventDefault();
		dropZone.classList.remove(hoverClassName);
	});

	// Handle copy/paste
	dropZone.addEventListener("paste", function (e) {
		e.preventDefault();

		if (e.clipboardData.items.length != 1) {
			return
		}

		const item = e.clipboardData.items[0];
		if (item.type.indexOf("image") == -1) {
			return;
		}

		fetch('/', {
			method: 'POST',
			body: item.getAsFile(),
		})
			.then(response => response.text())
			.then(body => {  // Yes, this is ugly
				document.open()
				document.write(body)
				document.close()
			})

	});

	dropZone.addEventListener("drop", function (e) {
		e.preventDefault();
		dropZone.classList.remove(hoverClassName);

		const files = Array.from(e.dataTransfer.files);
		if (files.length != 1 ) {
			return;
		}
		const data = new FormData();
		for (const file of files) {
			data.append('file', file);
		}

		fetch('/', {
			method: 'POST',
			body: data,
		})
			.then(response => response.text())
			.then(body => {  // Yes, this is ugly
				document.open()
				document.write(body)
				document.close()
			})
	});
})();