PageSourceSearch

https://gomontag.com/_content/Blazorise/modal.qtwglgivfv.js

js gomontag.com collected 2026-09-25 14:52:14 UTC 5,394 bytes, 163 lines download raw bytes

1import { registerDisconnectCleanup, unregisterDisconnectCleanup } from "./utilities.js?v=2.2.2.0";
2
3const modalDisconnectCleanupProperty = "blazoriseModalDisconnectCleanupId";
4const modalCountAttribute = "data-modals";
5
6export function registerModalDisconnectCleanup(element, closeCore) {
7    if (!element || typeof closeCore !== "function")
8        return;
9
10    unregisterModalDisconnectCleanup(element);
11
12    element[modalDisconnectCleanupProperty] = registerDisconnectCleanup(element, () => {
13        clearModalDisconnectCleanupHandle(element);
14        closeCore();
15    });
16}
17
18export function unregisterModalDisconnectCleanup(element) {
19    if (!element)
20        return;
21
22    unregisterDisconnectCleanup(element[modalDisconnectCleanupProperty]);
23    clearModalDisconnectCleanupHandle(element);
24}
25
26export function scrollModalBodyToTop(element, scrollToTop, selector) {
27    if (!element || !scrollToTop)
28        return;
29
30    const modalBody = element.querySelector(selector);
31
32    if (modalBody) {
33        modalBody.scrollTop = 0;
34    }
35}
36
37export function openStackedModal(element, options) {
38    const modalOptions = options || {};
39
40    if (typeof modalOptions.beforeOpen === "function") {
41        modalOptions.beforeOpen(element);
42    }
43
44    let modals = Number(document.body.getAttribute(modalCountAttribute) || "0");
45
46    if (modals === 0 && typeof modalOptions.onFirstModalOpen === "function") {
47        modalOptions.onFirstModalOpen(element);
48    }
49
50    modals += 1;
51
52    document.body.setAttribute(modalCountAttribute, modals.toString());
53
54    scrollModalBodyToTop(element, modalOptions.scrollToTop, modalOptions.bodySelector || ".modal-body");
55}
56
57export function closeStackedModal(element, options) {
58    const modalOptions = options || {};
59
60    let modals = Number(document.body.getAttribute(modalCountAttribute) || "0");
61
62    modals -= 1;
63
64    if (modals < 0) {
65        modals = 0;
66    }
67
68    if (modals === 0 && typeof modalOptions.onLastModalClose === "function") {
69        modalOptions.onLastModalClose(element);
70    }
71
72    document.body.setAttribute(modalCountAttribute, modals.toString());
73
74    if (typeof modalOptions.afterClose === "function") {
75        modalOptions.afterClose(element);
76    }
77}
78
79export function adjustDialogDimensionsBeforeShow(element, adjustmentSelectors) {
80    if (element) {
81        const rect = document.body.getBoundingClientRect();
82        const isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
83        const scrollbarWidth = getScrollBarWidth();
84        const selectors = adjustmentSelectors || {};
85        const fixedContent = queryElements(selectors.fixedContentSelector);
86        const stickyContent = queryElements(selectors.stickyContentSelector);
87
88        if (isBodyOverflowing) {
89            if (fixedContent) {
90                fixedContent.forEach((fixedContentElement) => {
91                    const calculatedPadding = fixedContentElement.style.paddingRight;
92
93                    fixedContentElement.style.paddingRight = `${parseFloat(calculatedPadding) + scrollbarWidth}px`;
94                });
95            }
96
97            if (stickyContent) {
98                stickyContent.forEach((stickyContentElement) => {
99                    const calculatedMargin = stickyContentElement.style.marginRight;
100
101                    stickyContentElement.style.marginRight = `${parseFloat(calculatedMargin) - scrollbarWidth}px`;
102                });
103            }
104
105            const calculatedPadding = document.body.style.paddingRight;
106
107            document.body.style.paddingRight = `${calculatedPadding + scrollbarWidth}px`;
108        }
109
110        const isModalOverflowing = element.scrollHeight > document.documentElement.clientHeight;
111
112        if (!isBodyOverflowing && isModalOverflowing) {
113            element.style.paddingLeft = `${scrollbarWidth}px`;
114        }
115
116        if (isBodyOverflowing && !isModalOverflowing) {
117            element.style.paddingRight = `${scrollbarWidth}px`;
118        }
119    }
120}
121
122export function resetAdjustments(element, adjustmentSelectors) {
123    if (element && element.style) {
124        element.style.paddingLeft = '';
125        element.style.paddingRight = '';
126    }
127
128    const selectors = adjustmentSelectors || {};
129    const fixedContent = queryElements(selectors.fixedContentSelector);
130    const stickyContent = queryElements(selectors.stickyContentSelector);
131
132    if (fixedContent) {
133        fixedContent.forEach((fixedContentElement) => {
134            fixedContentElement.style.paddingRight = '';
135        });
136    }
137
138    if (stickyContent) {
139        stickyContent.forEach((stickyContentElement) => {
140            stickyContentElement.style.marginRight = '';
141        });
142    }
143
144    document.body.style.paddingRight = '';
145}
146
147export function getScrollBarWidth() {
148    const documentWidth = document.documentElement.clientWidth;
149    return Math.abs(window.innerWidth - documentWidth);
150}
151
152function clearModalDisconnectCleanupHandle(element) {
153    if (element && Object.prototype.hasOwnProperty.call(element, modalDisconnectCleanupProperty)) {
154        delete element[modalDisconnectCleanupProperty];
155    }
156}
157
158function queryElements(selector) {
159    if (!selector)
160        return [];
161
162    return [].slice.call(document.querySelectorAll(selector));
163}

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.