PageSourceSearch

https://gomontag.com/_content/Blazorise/filePicker.5gtrmbjo5q.js

js gomontag.com collected 2026-09-25 14:52:07 UTC 2,248 bytes, 77 lines download raw bytes

1import { getRequiredElement } from "./utilities.js?v=2.2.2.0";
2import { getFilesAsync } from "./fileInput.js?v=2.2.2.0";
3
4const _instances = [];
5export function initialize(element, elementId) {
6    element = getRequiredElement(element, elementId);
7
8    if (!element)
9        return;
10
11    _instances[elementId] = element;
12    initializeDropZone(element);
13}
14
15export function destroy(element, elementId) {
16    var instances = _instances || {};
17    delete instances[elementId];
18}
19
20function initializeDropZone(element) {
21    let fileInput = setFileInput(element);
22    if (fileInput) {
23        element.addEventListener("dragenter", async (e) => await onDragHover(e, element), false);
24        element.addEventListener("dragover", async (e) => await onDragHover(e, element), false);
25        element.addEventListener("dragleave", onDragLeave);
26        element.addEventListener("drop", async (e) => await onDrop(e, element), false);
27        element.addEventListener('paste', (e) => onPaste(e, element));
28    }
29}
30
31function onDragHover(e, element) {
32    if (element.fileInput.disabled) {
33        e.dataTransfer.dropEffect = "none";
34        if (element.fileInput == e.target) {
35            //Fallback to FileInput behavior
36            return;
37        }
38
39    }
40    e.preventDefault();
41}
42
43function onDragLeave(e) {
44    e.preventDefault();
45}
46
47async function onDrop(e, element) {
48    e.preventDefault();
49    let fileInput = getFileInput(element);
50
51    if (fileInput.disabled)
52        return;
53
54    let _files = await getFilesAsync(e.dataTransfer, fileInput.webkitdirectory, fileInput.multiple);
55    fileInput.files = _files;
56
57    const event = new Event('change', { bubbles: true });
58    fileInput.dispatchEvent(event);
59}
60
61function onPaste(e, element) {
62    let fileInput = getFileInput(element);
63
64    fileInput.files = e.clipboardData.files;
65    const event = new Event('change', { bubbles: true });
66    fileInput.dispatchEvent(event);
67}
68
69function setFileInput(element) {
70    let fileInput = element.querySelector("input[type=file]");
71    _instances[element.id].fileInput = fileInput;
72    return fileInput;
73}
74
75function getFileInput(element) {
76    return _instances[element.id].fileInput;
77}

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.