PageSourceSearch

https://vestnikkui.ru/bundles/asutemplate/Base/js/editorum-ui/editorum-ui-core.js?v=20260328-editorum-ui-split

js vestnikkui.ru collected 2026-10-02 20:03:22 UTC 4,727 bytes, 176 lines download raw bytes

1(function (window, document) {
2    var namespace = window.EditorumUi = window.EditorumUi || {};
3    var internals = namespace.__internals = namespace.__internals || {};
4
5    function ready(callback) {
6        if (document.readyState === 'loading') {
7            document.addEventListener('DOMContentLoaded', callback);
8            return;
9        }
10
11        callback();
12    }
13
14    function matches(element, selector) {
15        var matcher;
16
17        if (!element || element.nodeType !== 1) {
18            return false;
19        }
20
21        matcher = element.matches
22            || element.msMatchesSelector
23            || element.webkitMatchesSelector;
24
25        if (!matcher) {
26            return false;
27        }
28
29        return matcher.call(element, selector);
30    }
31
32    function closest(element, selector) {
33        var current = element;
34
35        while (current && current !== document) {
36            if (matches(current, selector)) {
37                return current;
38            }
39
40            current = current.parentNode;
41        }
42
43        return null;
44    }
45
46    function normalizeSelector(selector) {
47        if (typeof selector !== 'string') {
48            return selector;
49        }
50
51        return selector
52            .replace(/:checkbox\b/g, 'input[type="checkbox"]')
53            .replace(/:radio\b/g, 'input[type="radio"]');
54    }
55
56    function warnInvalidSelector(selector, error) {
57        if (window.console && typeof window.console.warn === 'function') {
58            window.console.warn('EditorumUi: invalid selector "' + selector + '"', error);
59        }
60    }
61
62    function query(selector, root) {
63        var resolvedSelector = normalizeSelector(selector);
64
65        try {
66            return (root || document).querySelector(resolvedSelector);
67        } catch (error) {
68            warnInvalidSelector(selector, error);
69            return null;
70        }
71    }
72
73    function queryAll(selector, root) {
74        var resolvedSelector = normalizeSelector(selector);
75
76        try {
77            return Array.prototype.slice.call((root || document).querySelectorAll(resolvedSelector));
78        } catch (error) {
79            warnInvalidSelector(selector, error);
80            return [];
81        }
82    }
83
84    function each(items, callback) {
85        var index;
86
87        for (index = 0; index < items.length; index += 1) {
88            callback(items[index], index);
89        }
90    }
91
92    function show(element, displayValue) {
93        if (!element) {
94            return;
95        }
96
97        element.hidden = false;
98        element.style.display = displayValue || '';
99
100        if (window.getComputedStyle(element).display === 'none') {
101            element.style.display = displayValue || 'block';
102        }
103    }
104
105    function hide(element) {
106        if (!element) {
107            return;
108        }
109
110        element.hidden = true;
111        element.style.display = 'none';
112    }
113
114    function toggle(element, shouldShow, displayValue) {
115        if (shouldShow) {
116            show(element, displayValue);
117            return;
118        }
119
120        hide(element);
121    }
122
123    function dispatch(element, name, options) {
124        var settings = options || {};
125        var event;
126        var jqEvent = null;
127        var jqResult = false;
128        var domResult;
129
130        if (!element) {
131            return {
132                prevented: false
133            };
134        }
135
136        if (typeof window.CustomEvent === 'function') {
137            event = new window.CustomEvent(name, {
138                bubbles: settings.bubbles !== false,
139                cancelable: !!settings.cancelable,
140                detail: settings.detail || null
141            });
142        } else {
143            event = document.createEvent('CustomEvent');
144            event.initCustomEvent(name, settings.bubbles !== false, !!settings.cancelable, settings.detail || null);
145        }
146
147        if (settings.relatedTarget) {
148            try {
149                event.relatedTarget = settings.relatedTarget;
150            } catch (error) {
151                // Older browsers expose read-only event fields; ignore gracefully.
152            }
153        }
154
155        domResult = element.dispatchEvent(event);
156
157        return {
158            domEvent: event,
159            jqEvent: jqEvent,
160            prevented: domResult === false || jqResult
161        };
162    }
163
164    internals.ready = ready;
165    internals.matches = matches;
166    internals.closest = closest;
167    internals.normalizeSelector = normalizeSelector;
168    internals.warnInvalidSelector = warnInvalidSelector;
169    internals.query = query;
170    internals.queryAll = queryAll;
171    internals.each = each;
172    internals.show = show;
173    internals.hide = hide;
174    internals.toggle = toggle;
175    internals.dispatch = dispatch;
176})(window, document);

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.