yard 0.9.41 → 0.9.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,208 +1,203 @@
1
- (function() {
2
- function query(selector, root) {
3
- return (root || document).querySelector(selector);
4
- }
5
-
6
- function ready(callback) {
7
- if (document.readyState === "loading") {
8
- document.addEventListener("DOMContentLoaded", callback, { once: true });
9
- } else {
10
- callback();
11
- }
12
- }
13
-
14
- function createAutocomplete(input) {
15
- var form = input.form;
16
- var results = document.createElement("div");
17
- var list = document.createElement("ul");
18
- var requestTimer = null;
19
- var controller = null;
20
- var items = [];
21
- var activeIndex = -1;
22
- var blurTimer = null;
23
-
24
- if (!form) return;
25
-
26
- results.className = "ac_results";
27
- results.hidden = true;
28
- results.setAttribute("role", "listbox");
29
- results.id = input.id + "_results";
30
- list.setAttribute("role", "presentation");
31
- results.appendChild(list);
32
- input.setAttribute("autocomplete", "off");
33
- input.setAttribute("aria-autocomplete", "list");
34
- input.setAttribute("aria-controls", results.id);
35
- input.setAttribute("aria-expanded", "false");
36
- form.appendChild(results);
37
-
38
- function syncResultsWidth() {
39
- results.style.width = input.offsetWidth + "px";
40
- }
41
-
42
- function hideResults() {
43
- results.hidden = true;
44
- input.setAttribute("aria-expanded", "false");
45
- input.removeAttribute("aria-activedescendant");
46
- activeIndex = -1;
47
- items = [];
48
- list.innerHTML = "";
49
- }
50
-
51
- function setActive(index) {
52
- if (!items.length) return;
53
- activeIndex = (index + items.length) % items.length;
54
- items.forEach(function(item, itemIndex) {
55
- item.element.classList.toggle("ac_over", itemIndex === activeIndex);
56
- });
57
- input.setAttribute("aria-activedescendant", items[activeIndex].element.id);
58
- }
59
-
60
- function selectItem(item) {
61
- input.value = item.values[1];
62
- window.location.href = item.values[3];
63
- }
64
-
65
- function renderItems(lines) {
66
- syncResultsWidth();
67
- list.innerHTML = "";
68
- items = lines.map(function(line, index) {
69
- var values = line.split(",");
70
- var element = document.createElement("li");
71
- var label = document.createElement("span");
72
- var namespace = document.createElement("small");
73
-
74
- element.id = results.id + "_item_" + index;
75
- element.setAttribute("role", "option");
76
- element.className = index % 2 === 0 ? "ac_even" : "ac_odd";
77
- label.textContent = values[0];
78
- element.appendChild(label);
79
-
80
- if (values[1] !== "") {
81
- namespace.textContent = "(" + values[1] + ")";
82
- element.appendChild(document.createTextNode(" "));
83
- element.appendChild(namespace);
84
- }
85
-
86
- element.addEventListener("mouseenter", function() {
87
- setActive(index);
88
- });
89
- element.addEventListener("mousedown", function(event) {
90
- event.preventDefault();
91
- selectItem(items[index]);
92
- });
93
-
94
- list.appendChild(element);
95
-
96
- return { element: element, values: values };
97
- });
98
-
99
- if (items.length) {
100
- results.hidden = false;
101
- input.setAttribute("aria-expanded", "true");
102
- setActive(0);
103
- } else {
104
- hideResults();
105
- }
106
- }
107
-
108
- function fetchResults(term) {
109
- if (controller) controller.abort();
110
- controller = new AbortController();
111
- input.classList.add("ac_loading");
112
-
113
- fetch(
114
- form.action +
115
- "?q=" +
116
- encodeURIComponent(term) +
117
- "&_=" +
118
- new Date().getTime(),
119
- {
120
- headers: {
121
- "X-Requested-With": "XMLHttpRequest"
122
- },
123
- signal: controller.signal
124
- }
125
- )
126
- .then(function(response) {
127
- return response.text();
128
- })
129
- .then(function(text) {
130
- var lines = text
131
- .split("\n")
132
- .map(function(line) {
133
- return line.trim();
134
- })
135
- .filter(Boolean);
136
-
137
- renderItems(lines);
138
- })
139
- .catch(function(error) {
140
- if (error.name !== "AbortError") hideResults();
141
- })
142
- .finally(function() {
143
- input.classList.remove("ac_loading");
144
- });
145
- }
146
-
147
- input.addEventListener("input", function() {
148
- clearTimeout(requestTimer);
149
- if (blurTimer) clearTimeout(blurTimer);
150
-
151
- if (!input.value.trim()) {
152
- hideResults();
153
- return;
154
- }
155
-
156
- requestTimer = setTimeout(function() {
157
- fetchResults(input.value.trim());
158
- }, 200);
159
- });
160
-
161
- input.addEventListener("keydown", function(event) {
162
- if (results.hidden && (event.key === "ArrowDown" || event.key === "ArrowUp")) {
163
- if (!input.value.trim()) return;
164
- fetchResults(input.value.trim());
165
- return;
166
- }
167
-
168
- if (event.key === "ArrowDown") {
169
- event.preventDefault();
170
- setActive(activeIndex + 1);
171
- } else if (event.key === "ArrowUp") {
172
- event.preventDefault();
173
- setActive(activeIndex - 1);
174
- } else if (event.key === "Enter") {
175
- if (activeIndex >= 0 && items[activeIndex]) {
176
- event.preventDefault();
177
- selectItem(items[activeIndex]);
178
- }
179
- } else if (event.key === "Escape") {
180
- hideResults();
181
- }
182
- });
183
-
184
- input.addEventListener("blur", function() {
185
- blurTimer = setTimeout(hideResults, 150);
186
- });
187
-
188
- input.addEventListener("focus", function() {
189
- syncResultsWidth();
190
- if (items.length) {
191
- results.hidden = false;
192
- input.setAttribute("aria-expanded", "true");
193
- }
194
- });
195
-
196
- document.addEventListener("click", function(event) {
197
- if (!form.contains(event.target)) hideResults();
198
- });
199
-
200
- window.addEventListener("resize", syncResultsWidth);
201
- syncResultsWidth();
202
- }
203
-
204
- ready(function() {
205
- var input = query("#search_box");
206
- if (input) createAutocomplete(input);
207
- });
1
+ (() => {
2
+ function query(selector, root) {
3
+ return (root || document).querySelector(selector);
4
+ }
5
+
6
+ function ready(callback) {
7
+ if (document.readyState === "loading") {
8
+ document.addEventListener("DOMContentLoaded", callback, { once: true });
9
+ } else {
10
+ callback();
11
+ }
12
+ }
13
+
14
+ function createAutocomplete(input) {
15
+ const form = input.form;
16
+ const results = document.createElement("div");
17
+ const list = document.createElement("ul");
18
+ let requestTimer = null;
19
+ let controller = null;
20
+ let items = [];
21
+ let activeIndex = -1;
22
+ let blurTimer = null;
23
+
24
+ if (!form) return;
25
+
26
+ results.className = "ac_results";
27
+ results.hidden = true;
28
+ results.setAttribute("role", "listbox");
29
+ results.id = `${input.id}_results`;
30
+ list.setAttribute("role", "presentation");
31
+ results.appendChild(list);
32
+ input.setAttribute("autocomplete", "off");
33
+ input.setAttribute("aria-autocomplete", "list");
34
+ input.setAttribute("aria-controls", results.id);
35
+ input.setAttribute("aria-expanded", "false");
36
+ form.appendChild(results);
37
+
38
+ function syncResultsWidth() {
39
+ results.style.width = `${input.offsetWidth}px`;
40
+ }
41
+
42
+ function hideResults() {
43
+ results.hidden = true;
44
+ input.setAttribute("aria-expanded", "false");
45
+ input.removeAttribute("aria-activedescendant");
46
+ activeIndex = -1;
47
+ items = [];
48
+ list.innerHTML = "";
49
+ }
50
+
51
+ function setActive(index) {
52
+ if (!items.length) return;
53
+ activeIndex = (index + items.length) % items.length;
54
+ items.forEach((item, itemIndex) => {
55
+ item.element.classList.toggle("ac_over", itemIndex === activeIndex);
56
+ });
57
+ input.setAttribute(
58
+ "aria-activedescendant",
59
+ items[activeIndex].element.id,
60
+ );
61
+ }
62
+
63
+ function selectItem(item) {
64
+ input.value = item.values[1];
65
+ window.location.href = item.values[3];
66
+ }
67
+
68
+ function renderItems(lines) {
69
+ syncResultsWidth();
70
+ list.innerHTML = "";
71
+ items = lines.map((line, index) => {
72
+ const values = line.split(",");
73
+ const element = document.createElement("li");
74
+ const label = document.createElement("span");
75
+ const namespace = document.createElement("small");
76
+
77
+ element.id = `${results.id}_item_${index}`;
78
+ element.setAttribute("role", "option");
79
+ element.className = index % 2 === 0 ? "ac_even" : "ac_odd";
80
+ label.textContent = values[0];
81
+ element.appendChild(label);
82
+
83
+ if (values[1] !== "") {
84
+ namespace.textContent = `(${values[1]})`;
85
+ element.appendChild(document.createTextNode(" "));
86
+ element.appendChild(namespace);
87
+ }
88
+
89
+ element.addEventListener("mouseenter", () => {
90
+ setActive(index);
91
+ });
92
+ element.addEventListener("mousedown", (event) => {
93
+ event.preventDefault();
94
+ selectItem(items[index]);
95
+ });
96
+
97
+ list.appendChild(element);
98
+
99
+ return { element: element, values: values };
100
+ });
101
+
102
+ if (items.length) {
103
+ results.hidden = false;
104
+ input.setAttribute("aria-expanded", "true");
105
+ setActive(0);
106
+ } else {
107
+ hideResults();
108
+ }
109
+ }
110
+
111
+ function fetchResults(term) {
112
+ if (controller) controller.abort();
113
+ controller = new AbortController();
114
+ input.classList.add("ac_loading");
115
+
116
+ fetch(`${form.action}?q=${encodeURIComponent(term)}&_=${Date.now()}`, {
117
+ headers: {
118
+ "X-Requested-With": "XMLHttpRequest",
119
+ },
120
+ signal: controller.signal,
121
+ })
122
+ .then((response) => response.text())
123
+ .then((text) => {
124
+ const lines = text
125
+ .split("\n")
126
+ .map((line) => line.trim())
127
+ .filter(Boolean);
128
+
129
+ renderItems(lines);
130
+ })
131
+ .catch((error) => {
132
+ if (error.name !== "AbortError") hideResults();
133
+ })
134
+ .finally(() => {
135
+ input.classList.remove("ac_loading");
136
+ });
137
+ }
138
+
139
+ input.addEventListener("input", () => {
140
+ clearTimeout(requestTimer);
141
+ if (blurTimer) clearTimeout(blurTimer);
142
+
143
+ if (!input.value.trim()) {
144
+ hideResults();
145
+ return;
146
+ }
147
+
148
+ requestTimer = setTimeout(() => {
149
+ fetchResults(input.value.trim());
150
+ }, 200);
151
+ });
152
+
153
+ input.addEventListener("keydown", (event) => {
154
+ if (
155
+ results.hidden &&
156
+ (event.key === "ArrowDown" || event.key === "ArrowUp")
157
+ ) {
158
+ if (!input.value.trim()) return;
159
+ fetchResults(input.value.trim());
160
+ return;
161
+ }
162
+
163
+ if (event.key === "ArrowDown") {
164
+ event.preventDefault();
165
+ setActive(activeIndex + 1);
166
+ } else if (event.key === "ArrowUp") {
167
+ event.preventDefault();
168
+ setActive(activeIndex - 1);
169
+ } else if (event.key === "Enter") {
170
+ if (activeIndex >= 0 && items[activeIndex]) {
171
+ event.preventDefault();
172
+ selectItem(items[activeIndex]);
173
+ }
174
+ } else if (event.key === "Escape") {
175
+ hideResults();
176
+ }
177
+ });
178
+
179
+ input.addEventListener("blur", () => {
180
+ blurTimer = setTimeout(hideResults, 150);
181
+ });
182
+
183
+ input.addEventListener("focus", () => {
184
+ syncResultsWidth();
185
+ if (items.length) {
186
+ results.hidden = false;
187
+ input.setAttribute("aria-expanded", "true");
188
+ }
189
+ });
190
+
191
+ document.addEventListener("click", (event) => {
192
+ if (!form.contains(event.target)) hideResults();
193
+ });
194
+
195
+ window.addEventListener("resize", syncResultsWidth);
196
+ syncResultsWidth();
197
+ }
198
+
199
+ ready(() => {
200
+ const input = query("#search_box");
201
+ if (input) createAutocomplete(input);
202
+ });
208
203
  })();
data/lib/yard/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module YARD
5
- VERSION = '0.9.41'
5
+ VERSION = '0.9.42'
6
6
  end
@@ -1 +1 @@
1
- /* Override this file with custom rules */
1
+ /* Override this file with custom rules */