PageSourceSearch

https://www.ekmd.de/assetm/@symfony/ux-dropzone/controller-30c0311e191abd454f58dde62a3d0a6a.js

js ekmd.de collected 2026-10-09 22:39:54 UTC 2,782 bytes, 81 lines download raw bytes

1import { Controller } from "@hotwired/stimulus";
2var _Class = class extends Controller {
3	initialize() {
4		this.clear = this.clear.bind(this);
5		this.onInputChange = this.onInputChange.bind(this);
6		this.onDragEnter = this.onDragEnter.bind(this);
7		this.onDragLeave = this.onDragLeave.bind(this);
8	}
9	connect() {
10		this.clear();
11		this.previewClearButtonTarget.addEventListener("click", this.clear);
12		this.inputTarget.addEventListener("change", this.onInputChange);
13		this.element.addEventListener("dragenter", this.onDragEnter);
14		this.element.addEventListener("dragleave", this.onDragLeave);
15		this.dispatchEvent("connect");
16	}
17	disconnect() {
18		this.previewClearButtonTarget.removeEventListener("click", this.clear);
19		this.inputTarget.removeEventListener("change", this.onInputChange);
20		this.element.removeEventListener("dragenter", this.onDragEnter);
21		this.element.removeEventListener("dragleave", this.onDragLeave);
22	}
23	clear() {
24		this.inputTarget.value = "";
25		this.inputTarget.style.display = "block";
26		this.placeholderTarget.style.display = "block";
27		this.previewTarget.style.display = "none";
28		this.previewImageTarget.style.display = "none";
29		this.previewImageTarget.style.backgroundImage = "none";
30		this.previewFilenameTarget.textContent = "";
31		this.dispatchEvent("clear");
32	}
33	onInputChange(event) {
34		const file = event.target.files[0];
35		if (typeof file === "undefined") return;
36		this.inputTarget.style.display = "none";
37		this.placeholderTarget.style.display = "none";
38		this.previewFilenameTarget.textContent = file.name;
39		this.previewTarget.style.display = "flex";
40		this.previewImageTarget.style.display = "none";
41		if (file.type && file.type.indexOf("image") !== -1) this._populateImagePreview(file);
42		this.dispatchEvent("change", file);
43	}
44	_populateImagePreview(file) {
45		if (typeof FileReader === "undefined") return;
46		const reader = new FileReader();
47		reader.addEventListener("load", (event) => {
48			this.previewImageTarget.style.display = "block";
49			this.previewImageTarget.style.backgroundImage = `url("${event.target.result}")`;
50		});
51		reader.readAsDataURL(file);
52	}
53	onDragEnter() {
54		this.inputTarget.style.display = "block";
55		this.placeholderTarget.style.display = "block";
56		this.previewTarget.style.display = "none";
57	}
58	onDragLeave(event) {
59		event.preventDefault();
60		if (!this.element.contains(event.relatedTarget)) {
61			this.inputTarget.style.display = "none";
62			this.placeholderTarget.style.display = "none";
63			this.previewTarget.style.display = "block";
64		}
65	}
66	dispatchEvent(name, payload = {}) {
67		this.dispatch(name, {
68			detail: payload,
69			prefix: "dropzone"
70		});
71	}
72};
73_Class.targets = [
74	"input",
75	"placeholder",
76	"preview",
77	"previewClearButton",
78	"previewFilename",
79	"previewImage"
80];
81export { _Class as default };

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.