@jdultra/threedtiles 11.1.8 → 11.1.10
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.
- package/dist/docs/InstancedOGC3DTile.html +3 -0
- package/dist/docs/InstancedTile.html +3 -0
- package/dist/docs/InstancedTileLoader.html +3 -0
- package/dist/docs/OGC3DTile.html +3 -0
- package/dist/docs/OGC3DTile.js.html +1451 -0
- package/dist/docs/OcclusionCullingService.html +3 -0
- package/dist/docs/OcclusionCullingService.js.html +84 -0
- package/dist/docs/TileLoader.html +3 -0
- package/dist/docs/TileLoader.js.html +550 -0
- package/dist/docs/data/search.json +1 -0
- package/dist/docs/fonts/Inconsolata-Regular.ttf +0 -0
- package/dist/docs/fonts/OpenSans-Regular.ttf +0 -0
- package/dist/docs/fonts/WorkSans-Bold.ttf +0 -0
- package/dist/docs/global.html +3 -0
- package/dist/docs/index.html +338 -0
- package/dist/docs/instanced_InstancedOGC3DTile.js.html +106 -0
- package/dist/docs/instanced_InstancedTile.js.html +701 -0
- package/dist/docs/instanced_InstancedTileLoader.js.html +497 -0
- package/dist/docs/scripts/core.js +726 -0
- package/dist/docs/scripts/core.min.js +23 -0
- package/dist/docs/scripts/resize.js +90 -0
- package/dist/docs/scripts/search.js +265 -0
- package/dist/docs/scripts/search.min.js +6 -0
- package/dist/docs/scripts/third-party/Apache-License-2.0.txt +202 -0
- package/dist/docs/scripts/third-party/fuse.js +9 -0
- package/dist/docs/scripts/third-party/hljs-line-num-original.js +369 -0
- package/dist/docs/scripts/third-party/hljs-line-num.js +1 -0
- package/dist/docs/scripts/third-party/hljs-original.js +5171 -0
- package/dist/docs/scripts/third-party/hljs.js +1 -0
- package/dist/docs/scripts/third-party/popper.js +5 -0
- package/dist/docs/scripts/third-party/tippy.js +1 -0
- package/dist/docs/scripts/third-party/tocbot.js +672 -0
- package/dist/docs/scripts/third-party/tocbot.min.js +1 -0
- package/dist/docs/styles/clean-jsdoc-theme-base.css +1159 -0
- package/dist/docs/styles/clean-jsdoc-theme-dark.css +412 -0
- package/dist/docs/styles/clean-jsdoc-theme-light.css +482 -0
- package/dist/docs/styles/clean-jsdoc-theme-scrollbar.css +30 -0
- package/dist/docs/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
- package/dist/docs/styles/clean-jsdoc-theme.min.css +1 -0
- package/dist/entry.d.ts +1 -1
- package/dist/threedtiles.min.js +1 -1
- package/dist/threedtiles.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,726 @@
|
|
|
1
|
+
/* global document */
|
|
2
|
+
var accordionLocalStorageKey = 'accordion-id';
|
|
3
|
+
var themeLocalStorageKey = 'theme';
|
|
4
|
+
var fontSizeLocalStorageKey = 'font-size';
|
|
5
|
+
var html = document.querySelector('html');
|
|
6
|
+
|
|
7
|
+
var MAX_FONT_SIZE = 30;
|
|
8
|
+
var MIN_FONT_SIZE = 10;
|
|
9
|
+
|
|
10
|
+
// eslint-disable-next-line no-undef
|
|
11
|
+
var localStorage = window.localStorage;
|
|
12
|
+
|
|
13
|
+
function getTheme() {
|
|
14
|
+
var theme = localStorage.getItem(themeLocalStorageKey);
|
|
15
|
+
|
|
16
|
+
if (theme) return theme;
|
|
17
|
+
|
|
18
|
+
theme = document.body.getAttribute('data-theme');
|
|
19
|
+
|
|
20
|
+
switch (theme) {
|
|
21
|
+
case 'dark':
|
|
22
|
+
case 'light':
|
|
23
|
+
return theme;
|
|
24
|
+
case 'fallback-dark':
|
|
25
|
+
if (
|
|
26
|
+
// eslint-disable-next-line no-undef
|
|
27
|
+
window.matchMedia('(prefers-color-scheme)').matches &&
|
|
28
|
+
// eslint-disable-next-line no-undef
|
|
29
|
+
window.matchMedia('(prefers-color-scheme: light)').matches
|
|
30
|
+
) {
|
|
31
|
+
return 'light';
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return 'dark';
|
|
35
|
+
|
|
36
|
+
case 'fallback-light':
|
|
37
|
+
if (
|
|
38
|
+
// eslint-disable-next-line no-undef
|
|
39
|
+
window.matchMedia('(prefers-color-scheme)').matches &&
|
|
40
|
+
// eslint-disable-next-line no-undef
|
|
41
|
+
window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
42
|
+
) {
|
|
43
|
+
return 'dark';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return 'light';
|
|
47
|
+
|
|
48
|
+
default:
|
|
49
|
+
return 'dark';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function localUpdateTheme(theme) {
|
|
54
|
+
var body = document.body;
|
|
55
|
+
var svgUse = document.querySelectorAll('.theme-svg-use');
|
|
56
|
+
var iconID = theme === 'dark' ? '#light-theme-icon' : '#dark-theme-icon';
|
|
57
|
+
|
|
58
|
+
body.setAttribute('data-theme', theme);
|
|
59
|
+
body.classList.remove('dark', 'light');
|
|
60
|
+
body.classList.add(theme);
|
|
61
|
+
|
|
62
|
+
svgUse.forEach(function (svg) {
|
|
63
|
+
svg.setAttribute('xlink:href', iconID);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function updateTheme(theme) {
|
|
68
|
+
localUpdateTheme(theme);
|
|
69
|
+
localStorage.setItem(themeLocalStorageKey, theme);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function toggleTheme() {
|
|
73
|
+
var body = document.body;
|
|
74
|
+
var theme = body.getAttribute('data-theme');
|
|
75
|
+
|
|
76
|
+
var newTheme = theme === 'dark' ? 'light' : 'dark';
|
|
77
|
+
|
|
78
|
+
updateTheme(newTheme);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
(function () {
|
|
82
|
+
var theme = getTheme();
|
|
83
|
+
|
|
84
|
+
updateTheme(theme);
|
|
85
|
+
})();
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Function to set accordion id to localStorage.
|
|
89
|
+
* @param {string} id Accordion id
|
|
90
|
+
*/
|
|
91
|
+
function setAccordionIdToLocalStorage(id) {
|
|
92
|
+
/**
|
|
93
|
+
* @type {object}
|
|
94
|
+
*/
|
|
95
|
+
var ids = JSON.parse(localStorage.getItem(accordionLocalStorageKey));
|
|
96
|
+
|
|
97
|
+
ids[id] = id;
|
|
98
|
+
localStorage.setItem(accordionLocalStorageKey, JSON.stringify(ids));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Function to remove accordion id from localStorage.
|
|
103
|
+
* @param {string} id Accordion id
|
|
104
|
+
*/
|
|
105
|
+
function removeAccordionIdFromLocalStorage(id) {
|
|
106
|
+
/**
|
|
107
|
+
* @type {object}
|
|
108
|
+
*/
|
|
109
|
+
var ids = JSON.parse(localStorage.getItem(accordionLocalStorageKey));
|
|
110
|
+
|
|
111
|
+
delete ids[id];
|
|
112
|
+
localStorage.setItem(accordionLocalStorageKey, JSON.stringify(ids));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Function to get all accordion ids from localStorage.
|
|
117
|
+
*
|
|
118
|
+
* @returns {object}
|
|
119
|
+
*/
|
|
120
|
+
function getAccordionIdsFromLocalStorage() {
|
|
121
|
+
/**
|
|
122
|
+
* @type {object}
|
|
123
|
+
*/
|
|
124
|
+
var ids = JSON.parse(localStorage.getItem(accordionLocalStorageKey));
|
|
125
|
+
|
|
126
|
+
return ids || {};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function toggleAccordion(element) {
|
|
130
|
+
var currentNode = element;
|
|
131
|
+
var isCollapsed = currentNode.getAttribute('data-isopen') === 'false';
|
|
132
|
+
|
|
133
|
+
if (isCollapsed) {
|
|
134
|
+
currentNode.setAttribute('data-isopen', 'true');
|
|
135
|
+
setAccordionIdToLocalStorage(currentNode.id);
|
|
136
|
+
} else {
|
|
137
|
+
currentNode.setAttribute('data-isopen', 'false');
|
|
138
|
+
removeAccordionIdFromLocalStorage(currentNode.id);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function initAccordion() {
|
|
143
|
+
if (
|
|
144
|
+
localStorage.getItem(accordionLocalStorageKey) === undefined ||
|
|
145
|
+
localStorage.getItem(accordionLocalStorageKey) === null
|
|
146
|
+
) {
|
|
147
|
+
localStorage.setItem(accordionLocalStorageKey, '{}');
|
|
148
|
+
}
|
|
149
|
+
var allAccordion = document.querySelectorAll('.sidebar-section-title');
|
|
150
|
+
var ids = getAccordionIdsFromLocalStorage();
|
|
151
|
+
|
|
152
|
+
allAccordion.forEach(function (item) {
|
|
153
|
+
item.addEventListener('click', function () {
|
|
154
|
+
toggleAccordion(item);
|
|
155
|
+
});
|
|
156
|
+
if (item.id in ids) {
|
|
157
|
+
toggleAccordion(item);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function isSourcePage() {
|
|
163
|
+
return Boolean(document.querySelector('#source-page'));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function bringElementIntoView(element, updateHistory = true) {
|
|
167
|
+
// If element is null then we are not going further
|
|
168
|
+
if (!element) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* tocbotInstance is defined in layout.tmpl
|
|
174
|
+
* It is defined when we are initializing tocbot.
|
|
175
|
+
*
|
|
176
|
+
*/
|
|
177
|
+
// eslint-disable-next-line no-undef
|
|
178
|
+
if (tocbotInstance) {
|
|
179
|
+
setTimeout(
|
|
180
|
+
// eslint-disable-next-line no-undef
|
|
181
|
+
() => tocbotInstance.updateTocListActiveElement(element),
|
|
182
|
+
60
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
var navbar = document.querySelector('.navbar-container');
|
|
186
|
+
var body = document.querySelector('.main-content');
|
|
187
|
+
var elementTop = element.getBoundingClientRect().top;
|
|
188
|
+
|
|
189
|
+
var offset = 16;
|
|
190
|
+
|
|
191
|
+
if (navbar) {
|
|
192
|
+
offset += navbar.scrollHeight;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (body) {
|
|
196
|
+
body.scrollBy(0, elementTop - offset);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (updateHistory) {
|
|
200
|
+
// eslint-disable-next-line no-undef
|
|
201
|
+
history.pushState(null, null, '#' + element.id);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// eslint-disable-next-line no-unused-vars
|
|
206
|
+
function bringLinkToView(event) {
|
|
207
|
+
event.preventDefault();
|
|
208
|
+
event.stopPropagation();
|
|
209
|
+
var id = event.currentTarget.getAttribute('href');
|
|
210
|
+
|
|
211
|
+
if (!id) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
var element = document.getElementById(id.slice(1));
|
|
216
|
+
|
|
217
|
+
if (element) {
|
|
218
|
+
bringElementIntoView(element);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function bringIdToViewOnMount() {
|
|
223
|
+
if (isSourcePage()) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// eslint-disable-next-line no-undef
|
|
228
|
+
var id = window.location.hash;
|
|
229
|
+
|
|
230
|
+
if (id === '') {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
var element = document.getElementById(id.slice(1));
|
|
235
|
+
|
|
236
|
+
if (!element) {
|
|
237
|
+
id = decodeURI(id);
|
|
238
|
+
element = document.getElementById(id.slice(1));
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (element) {
|
|
242
|
+
bringElementIntoView(element, false);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function createAnchorElement(id) {
|
|
247
|
+
var anchor = document.createElement('a');
|
|
248
|
+
|
|
249
|
+
anchor.textContent = '#';
|
|
250
|
+
anchor.href = '#' + id;
|
|
251
|
+
anchor.classList.add('link-anchor');
|
|
252
|
+
anchor.onclick = bringLinkToView;
|
|
253
|
+
|
|
254
|
+
return anchor;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function addAnchor() {
|
|
258
|
+
var main = document.querySelector('.main-content').querySelector('section');
|
|
259
|
+
|
|
260
|
+
var h1 = main.querySelectorAll('h1');
|
|
261
|
+
var h2 = main.querySelectorAll('h2');
|
|
262
|
+
var h3 = main.querySelectorAll('h3');
|
|
263
|
+
var h4 = main.querySelectorAll('h4');
|
|
264
|
+
|
|
265
|
+
var targets = [h1, h2, h3, h4];
|
|
266
|
+
|
|
267
|
+
targets.forEach(function (target) {
|
|
268
|
+
target.forEach(function (heading) {
|
|
269
|
+
var anchor = createAnchorElement(heading.id);
|
|
270
|
+
|
|
271
|
+
heading.classList.add('has-anchor');
|
|
272
|
+
heading.append(anchor);
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
*
|
|
279
|
+
* @param {string} value
|
|
280
|
+
*/
|
|
281
|
+
function copy(value) {
|
|
282
|
+
const el = document.createElement('textarea');
|
|
283
|
+
|
|
284
|
+
el.value = value;
|
|
285
|
+
document.body.appendChild(el);
|
|
286
|
+
el.select();
|
|
287
|
+
document.execCommand('copy');
|
|
288
|
+
document.body.removeChild(el);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function showTooltip(id) {
|
|
292
|
+
var tooltip = document.getElementById(id);
|
|
293
|
+
|
|
294
|
+
tooltip.classList.add('show-tooltip');
|
|
295
|
+
setTimeout(function () {
|
|
296
|
+
tooltip.classList.remove('show-tooltip');
|
|
297
|
+
}, 3000);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* eslint-disable-next-line */
|
|
301
|
+
function copyFunction(id) {
|
|
302
|
+
// selecting the pre element
|
|
303
|
+
var code = document.getElementById(id);
|
|
304
|
+
|
|
305
|
+
// selecting the ol.linenums
|
|
306
|
+
var element = code.querySelector('.linenums');
|
|
307
|
+
|
|
308
|
+
if (!element) {
|
|
309
|
+
// selecting the code block
|
|
310
|
+
element = code.querySelector('code');
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// copy
|
|
314
|
+
copy(element.innerText.trim().replace(/(^\t)/gm, ''));
|
|
315
|
+
|
|
316
|
+
// show tooltip
|
|
317
|
+
showTooltip('tooltip-' + id);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
function hideTocOnSourcePage() {
|
|
321
|
+
if (isSourcePage()) {
|
|
322
|
+
document.querySelector('.toc-container').style.display = 'none';
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
function getPreTopBar(id, lang = '') {
|
|
327
|
+
// tooltip
|
|
328
|
+
var tooltip = '<div class="tooltip" id="tooltip-' + id + '">Copied!</div>';
|
|
329
|
+
|
|
330
|
+
// template of copy to clipboard icon container
|
|
331
|
+
var copyToClipboard =
|
|
332
|
+
'<button aria-label="copy code" class="icon-button copy-code" onclick="copyFunction(\'' +
|
|
333
|
+
id +
|
|
334
|
+
'\')"><svg class="sm-icon" alt="click to copy"><use xlink:href="#copy-icon"></use></svg>' +
|
|
335
|
+
tooltip +
|
|
336
|
+
'</button>';
|
|
337
|
+
|
|
338
|
+
var langNameDiv =
|
|
339
|
+
'<div class="code-lang-name-container"><div class="code-lang-name">' +
|
|
340
|
+
lang.toLocaleUpperCase() +
|
|
341
|
+
'</div></div>';
|
|
342
|
+
|
|
343
|
+
var topBar =
|
|
344
|
+
'<div class="pre-top-bar-container">' +
|
|
345
|
+
langNameDiv +
|
|
346
|
+
copyToClipboard +
|
|
347
|
+
'</div>';
|
|
348
|
+
|
|
349
|
+
return topBar;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
function getPreDiv() {
|
|
353
|
+
var divElement = document.createElement('div');
|
|
354
|
+
|
|
355
|
+
divElement.classList.add('pre-div');
|
|
356
|
+
|
|
357
|
+
return divElement;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
function processAllPre() {
|
|
361
|
+
var targets = document.querySelectorAll('pre');
|
|
362
|
+
var footer = document.querySelector('#PeOAagUepe');
|
|
363
|
+
var navbar = document.querySelector('#VuAckcnZhf');
|
|
364
|
+
|
|
365
|
+
var navbarHeight = 0;
|
|
366
|
+
var footerHeight = 0;
|
|
367
|
+
|
|
368
|
+
if (footer) {
|
|
369
|
+
footerHeight = footer.getBoundingClientRect().height;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
if (navbar) {
|
|
373
|
+
navbarHeight = navbar.getBoundingClientRect().height;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// eslint-disable-next-line no-undef
|
|
377
|
+
var preMaxHeight = window.innerHeight - navbarHeight - footerHeight - 250;
|
|
378
|
+
|
|
379
|
+
targets.forEach(function (pre, idx) {
|
|
380
|
+
var parent = pre.parentNode;
|
|
381
|
+
|
|
382
|
+
if (parent && parent.getAttribute('data-skip-pre-process') === 'true') {
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
var div = getPreDiv();
|
|
387
|
+
var id = 'ScDloZOMdL' + idx;
|
|
388
|
+
|
|
389
|
+
var lang = pre.getAttribute('data-lang') || 'code';
|
|
390
|
+
var topBar = getPreTopBar(id, lang);
|
|
391
|
+
|
|
392
|
+
div.innerHTML = topBar;
|
|
393
|
+
|
|
394
|
+
pre.style.maxHeight = preMaxHeight + 'px';
|
|
395
|
+
pre.id = id;
|
|
396
|
+
pre.classList.add('prettyprint');
|
|
397
|
+
pre.parentNode.insertBefore(div, pre);
|
|
398
|
+
div.appendChild(pre);
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
function highlightAndBringLineIntoView() {
|
|
403
|
+
// eslint-disable-next-line no-undef
|
|
404
|
+
var lineNumber = window.location.hash.replace('#line', '');
|
|
405
|
+
|
|
406
|
+
try {
|
|
407
|
+
var selector = '[data-line-number="' + lineNumber + '"';
|
|
408
|
+
|
|
409
|
+
var element = document.querySelector(selector);
|
|
410
|
+
|
|
411
|
+
element.scrollIntoView();
|
|
412
|
+
element.parentNode.classList.add('selected');
|
|
413
|
+
} catch (error) {
|
|
414
|
+
console.error(error);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
function getFontSize() {
|
|
419
|
+
var currentFontSize = 16;
|
|
420
|
+
|
|
421
|
+
try {
|
|
422
|
+
currentFontSize = Number.parseInt(
|
|
423
|
+
html.style.fontSize.split('px')[0],
|
|
424
|
+
10
|
|
425
|
+
);
|
|
426
|
+
} catch (error) {
|
|
427
|
+
console.log(error);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return currentFontSize;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
function localUpdateFontSize(fontSize) {
|
|
434
|
+
html.style.fontSize = fontSize + 'px';
|
|
435
|
+
|
|
436
|
+
var fontSizeText = document.querySelector(
|
|
437
|
+
'#b77a68a492f343baabea06fad81f651e'
|
|
438
|
+
);
|
|
439
|
+
|
|
440
|
+
if (fontSizeText) {
|
|
441
|
+
fontSizeText.innerHTML = fontSize;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
function updateFontSize(fontSize) {
|
|
446
|
+
localUpdateFontSize(fontSize);
|
|
447
|
+
localStorage.setItem(fontSizeLocalStorageKey, fontSize);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
(function () {
|
|
451
|
+
var fontSize = getFontSize();
|
|
452
|
+
var fontSizeInLocalStorage = localStorage.getItem(fontSizeLocalStorageKey);
|
|
453
|
+
|
|
454
|
+
if (fontSizeInLocalStorage) {
|
|
455
|
+
var n = Number.parseInt(fontSizeInLocalStorage, 10);
|
|
456
|
+
|
|
457
|
+
if (n === fontSize) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
updateFontSize(n);
|
|
461
|
+
} else {
|
|
462
|
+
updateFontSize(fontSize);
|
|
463
|
+
}
|
|
464
|
+
})();
|
|
465
|
+
|
|
466
|
+
// eslint-disable-next-line no-unused-vars
|
|
467
|
+
function incrementFont(event) {
|
|
468
|
+
var n = getFontSize();
|
|
469
|
+
|
|
470
|
+
if (n < MAX_FONT_SIZE) {
|
|
471
|
+
updateFontSize(n + 1);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// eslint-disable-next-line no-unused-vars
|
|
476
|
+
function decrementFont(event) {
|
|
477
|
+
var n = getFontSize();
|
|
478
|
+
|
|
479
|
+
if (n > MIN_FONT_SIZE) {
|
|
480
|
+
updateFontSize(n - 1);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
function fontSizeTooltip() {
|
|
485
|
+
var fontSize = getFontSize();
|
|
486
|
+
|
|
487
|
+
return `
|
|
488
|
+
<div class="font-size-tooltip">
|
|
489
|
+
<button aria-label="decrease-font-size" class="icon-button ${
|
|
490
|
+
fontSize >= MAX_FONT_SIZE ? 'disabled' : ''
|
|
491
|
+
}" onclick="decrementFont(event)">
|
|
492
|
+
<svg>
|
|
493
|
+
<use xlink:href="#minus-icon"></use>
|
|
494
|
+
</svg>
|
|
495
|
+
</button>
|
|
496
|
+
<div class="font-size-text" id="b77a68a492f343baabea06fad81f651e">
|
|
497
|
+
${fontSize}
|
|
498
|
+
</div>
|
|
499
|
+
<button aria-label="increase-font-size" class="icon-button ${
|
|
500
|
+
fontSize <= MIN_FONT_SIZE ? 'disabled' : ''
|
|
501
|
+
}" onclick="incrementFont(event)">
|
|
502
|
+
<svg>
|
|
503
|
+
<use xlink:href="#add-icon"></use>
|
|
504
|
+
</svg>
|
|
505
|
+
</button>
|
|
506
|
+
<button class="icon-button" onclick="updateFontSize(16)">
|
|
507
|
+
<svg>
|
|
508
|
+
<use xlink:href="#reset-icon"></use>
|
|
509
|
+
</svg>
|
|
510
|
+
</button>
|
|
511
|
+
</div>
|
|
512
|
+
|
|
513
|
+
`;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
function initTooltip() {
|
|
517
|
+
// add tooltip to navbar item
|
|
518
|
+
// eslint-disable-next-line no-undef
|
|
519
|
+
tippy('.theme-toggle', {
|
|
520
|
+
content: 'Toggle Theme',
|
|
521
|
+
delay: 500,
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
// eslint-disable-next-line no-undef
|
|
525
|
+
tippy('.search-button', {
|
|
526
|
+
content: 'Search',
|
|
527
|
+
delay: 500,
|
|
528
|
+
});
|
|
529
|
+
|
|
530
|
+
// eslint-disable-next-line no-undef
|
|
531
|
+
tippy('.font-size', {
|
|
532
|
+
content: 'Change font size',
|
|
533
|
+
delay: 500,
|
|
534
|
+
});
|
|
535
|
+
|
|
536
|
+
// eslint-disable-next-line no-undef
|
|
537
|
+
tippy('.codepen-button', {
|
|
538
|
+
content: 'Open code in CodePen',
|
|
539
|
+
placement: 'left',
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
// eslint-disable-next-line no-undef
|
|
543
|
+
tippy('.copy-code', {
|
|
544
|
+
content: 'Copy this code',
|
|
545
|
+
placement: 'left',
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
// eslint-disable-next-line no-undef
|
|
549
|
+
tippy('.font-size', {
|
|
550
|
+
content: fontSizeTooltip(),
|
|
551
|
+
trigger: 'click',
|
|
552
|
+
interactive: true,
|
|
553
|
+
allowHTML: true,
|
|
554
|
+
placement: 'left',
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
function fixTable() {
|
|
559
|
+
const tables = document.querySelectorAll('table');
|
|
560
|
+
|
|
561
|
+
for (const table of tables) {
|
|
562
|
+
if (table.classList.contains('hljs-ln')) {
|
|
563
|
+
// don't want to wrap code blocks.
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
var div = document.createElement('div');
|
|
568
|
+
|
|
569
|
+
div.classList.add('table-div');
|
|
570
|
+
table.parentNode.insertBefore(div, table);
|
|
571
|
+
div.appendChild(table);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
function hideMobileMenu() {
|
|
576
|
+
var mobileMenuContainer = document.querySelector('#mobile-sidebar');
|
|
577
|
+
var target = document.querySelector('#mobile-menu');
|
|
578
|
+
var svgUse = target.querySelector('use');
|
|
579
|
+
|
|
580
|
+
if (mobileMenuContainer) {
|
|
581
|
+
mobileMenuContainer.classList.remove('show');
|
|
582
|
+
}
|
|
583
|
+
if (target) {
|
|
584
|
+
target.setAttribute('data-isopen', 'false');
|
|
585
|
+
}
|
|
586
|
+
if (svgUse) {
|
|
587
|
+
svgUse.setAttribute('xlink:href', '#menu-icon');
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
function showMobileMenu() {
|
|
592
|
+
var mobileMenuContainer = document.querySelector('#mobile-sidebar');
|
|
593
|
+
var target = document.querySelector('#mobile-menu');
|
|
594
|
+
var svgUse = target.querySelector('use');
|
|
595
|
+
|
|
596
|
+
if (mobileMenuContainer) {
|
|
597
|
+
mobileMenuContainer.classList.add('show');
|
|
598
|
+
}
|
|
599
|
+
if (target) {
|
|
600
|
+
target.setAttribute('data-isopen', 'true');
|
|
601
|
+
}
|
|
602
|
+
if (svgUse) {
|
|
603
|
+
svgUse.setAttribute('xlink:href', '#close-icon');
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
function onMobileMenuClick() {
|
|
608
|
+
var target = document.querySelector('#mobile-menu');
|
|
609
|
+
var isOpen = target.getAttribute('data-isopen') === 'true';
|
|
610
|
+
|
|
611
|
+
if (isOpen) {
|
|
612
|
+
hideMobileMenu();
|
|
613
|
+
} else {
|
|
614
|
+
showMobileMenu();
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
function initMobileMenu() {
|
|
619
|
+
var menu = document.querySelector('#mobile-menu');
|
|
620
|
+
|
|
621
|
+
if (menu) {
|
|
622
|
+
menu.addEventListener('click', onMobileMenuClick);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
function addHrefToSidebarTitle() {
|
|
627
|
+
var titles = document.querySelectorAll('.sidebar-title-anchor');
|
|
628
|
+
|
|
629
|
+
titles.forEach(function (title) {
|
|
630
|
+
// eslint-disable-next-line no-undef
|
|
631
|
+
title.setAttribute('href', baseURL);
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
function highlightActiveLinkInSidebar() {
|
|
636
|
+
const list = document.location.href.split('/');
|
|
637
|
+
const targetURL = decodeURI(list[list.length - 1]);
|
|
638
|
+
let element = document.querySelector(`.sidebar a[href*='${targetURL}']`);
|
|
639
|
+
|
|
640
|
+
if (!element) {
|
|
641
|
+
try {
|
|
642
|
+
element = document.querySelector(
|
|
643
|
+
`.sidebar a[href*='${targetURL.split('#')[0]}']`
|
|
644
|
+
);
|
|
645
|
+
} catch (e) {
|
|
646
|
+
console.error(e);
|
|
647
|
+
|
|
648
|
+
return;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
if (!element) return;
|
|
653
|
+
|
|
654
|
+
element.parentElement.classList.add('active');
|
|
655
|
+
element.scrollIntoView();
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
function onDomContentLoaded() {
|
|
659
|
+
var themeButton = document.querySelectorAll('.theme-toggle');
|
|
660
|
+
|
|
661
|
+
initMobileMenu();
|
|
662
|
+
|
|
663
|
+
if (themeButton) {
|
|
664
|
+
themeButton.forEach(function (button) {
|
|
665
|
+
button.addEventListener('click', toggleTheme);
|
|
666
|
+
});
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
// Highlighting code
|
|
670
|
+
|
|
671
|
+
// eslint-disable-next-line no-undef
|
|
672
|
+
hljs.addPlugin({
|
|
673
|
+
'after:highlightElement': function (obj) {
|
|
674
|
+
// Replace 'code' with result.language when
|
|
675
|
+
// we are able to cross-check the correctness of
|
|
676
|
+
// result.
|
|
677
|
+
obj.el.parentNode.setAttribute('data-lang', 'code');
|
|
678
|
+
},
|
|
679
|
+
});
|
|
680
|
+
// eslint-disable-next-line no-undef
|
|
681
|
+
hljs.highlightAll();
|
|
682
|
+
// eslint-disable-next-line no-undef
|
|
683
|
+
hljs.initLineNumbersOnLoad({
|
|
684
|
+
singleLine: true,
|
|
685
|
+
});
|
|
686
|
+
|
|
687
|
+
// Highlight complete
|
|
688
|
+
|
|
689
|
+
initAccordion();
|
|
690
|
+
addAnchor();
|
|
691
|
+
processAllPre();
|
|
692
|
+
hideTocOnSourcePage();
|
|
693
|
+
setTimeout(function () {
|
|
694
|
+
bringIdToViewOnMount();
|
|
695
|
+
if (isSourcePage()) {
|
|
696
|
+
highlightAndBringLineIntoView();
|
|
697
|
+
}
|
|
698
|
+
}, 1000);
|
|
699
|
+
initTooltip();
|
|
700
|
+
fixTable();
|
|
701
|
+
addHrefToSidebarTitle();
|
|
702
|
+
highlightActiveLinkInSidebar();
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
// eslint-disable-next-line no-undef
|
|
706
|
+
window.addEventListener('DOMContentLoaded', onDomContentLoaded);
|
|
707
|
+
|
|
708
|
+
// eslint-disable-next-line no-undef
|
|
709
|
+
window.addEventListener('hashchange', (event) => {
|
|
710
|
+
const url = new URL(event.newURL);
|
|
711
|
+
|
|
712
|
+
if (url.hash !== '') {
|
|
713
|
+
bringIdToViewOnMount(url.hash);
|
|
714
|
+
}
|
|
715
|
+
});
|
|
716
|
+
|
|
717
|
+
// eslint-disable-next-line no-undef
|
|
718
|
+
window.addEventListener('storage', (event) => {
|
|
719
|
+
if (event.newValue === 'undefined') return;
|
|
720
|
+
|
|
721
|
+
initTooltip();
|
|
722
|
+
|
|
723
|
+
if (event.key === themeLocalStorageKey) localUpdateTheme(event.newValue);
|
|
724
|
+
if (event.key === fontSizeLocalStorageKey)
|
|
725
|
+
localUpdateFontSize(event.newValue);
|
|
726
|
+
});
|