@microsoft/applicationinsights-debugplugin-js 3.0.0-beta.2303-11 → 3.0.0-nightly3.2304-28

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.
Files changed (101) hide show
  1. package/browser/{ai.dbg.3.0.0-beta.2303-11.cjs.js → es5/ai.dbg.3.0.0-nightly3.2304-28.cjs.js} +794 -773
  2. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.cjs.js.map +1 -0
  3. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.cjs.min.js +6 -0
  4. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.cjs.min.js.map +1 -0
  5. package/browser/{ai.dbg.3.0.0-beta.2303-11.gbl.js → es5/ai.dbg.3.0.0-nightly3.2304-28.gbl.js} +795 -774
  6. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.gbl.js.map +1 -0
  7. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.gbl.min.js +6 -0
  8. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.gbl.min.js.map +1 -0
  9. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.integrity.json +66 -0
  10. package/browser/{ai.dbg.3.0.0-beta.2303-11.js → es5/ai.dbg.3.0.0-nightly3.2304-28.js} +795 -774
  11. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.js.map +1 -0
  12. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.min.js +6 -0
  13. package/browser/es5/ai.dbg.3.0.0-nightly3.2304-28.min.js.map +1 -0
  14. package/browser/{ai.dbg.3.cjs.js → es5/ai.dbg.3.cjs.js} +793 -772
  15. package/browser/es5/ai.dbg.3.cjs.js.map +1 -0
  16. package/browser/es5/ai.dbg.3.cjs.min.js +6 -0
  17. package/browser/es5/ai.dbg.3.cjs.min.js.map +1 -0
  18. package/browser/{ai.dbg.3.gbl.js → es5/ai.dbg.3.gbl.js} +794 -773
  19. package/browser/es5/ai.dbg.3.gbl.js.map +1 -0
  20. package/browser/es5/ai.dbg.3.gbl.min.js +6 -0
  21. package/browser/es5/ai.dbg.3.gbl.min.js.map +1 -0
  22. package/browser/{ai.dbg.3.js → es5/ai.dbg.3.js} +794 -773
  23. package/browser/es5/ai.dbg.3.js.map +1 -0
  24. package/browser/es5/ai.dbg.3.min.js +6 -0
  25. package/browser/es5/ai.dbg.3.min.js.map +1 -0
  26. package/dist/{applicationinsights-debugplugin-js.js → es5/applicationinsights-debugplugin-js.js} +794 -773
  27. package/dist/es5/applicationinsights-debugplugin-js.js.map +1 -0
  28. package/dist/es5/applicationinsights-debugplugin-js.min.js +6 -0
  29. package/dist/es5/applicationinsights-debugplugin-js.min.js.map +1 -0
  30. package/{dist-esm → dist-es5}/DebugPlugin.js +1 -1
  31. package/{dist-esm → dist-es5}/__DynamicConstants.js +1 -1
  32. package/dist-es5/applicationinsights-debugplugin-js.js +9 -0
  33. package/{dist-esm → dist-es5}/components/Dashboard.js +1 -1
  34. package/{dist-esm → dist-es5}/components/LogEntry.js +1 -1
  35. package/{dist-esm → dist-es5}/components/debugBins.js +1 -1
  36. package/{dist-esm → dist-es5}/components/filterList.js +1 -1
  37. package/{dist-esm → dist-es5}/components/helpers.js +1 -1
  38. package/{dist-esm → dist-es5}/components/styleNodeSrc.js +1 -1
  39. package/dist-es5/interfaces/IDebugPluginConfig.js +8 -0
  40. package/package.json +18 -17
  41. package/tsconfig.json +4 -3
  42. package/types/applicationinsights-debugplugin-js.d.ts +59 -2
  43. package/{dist/applicationinsights-debugplugin-js.d.ts → types/applicationinsights-debugplugin-js.namespaced.d.ts} +1 -1
  44. package/browser/ai.dbg.3.0.0-beta.2303-11.cjs.js.map +0 -1
  45. package/browser/ai.dbg.3.0.0-beta.2303-11.cjs.min.js +0 -6
  46. package/browser/ai.dbg.3.0.0-beta.2303-11.cjs.min.js.map +0 -1
  47. package/browser/ai.dbg.3.0.0-beta.2303-11.gbl.js.map +0 -1
  48. package/browser/ai.dbg.3.0.0-beta.2303-11.gbl.min.js +0 -6
  49. package/browser/ai.dbg.3.0.0-beta.2303-11.gbl.min.js.map +0 -1
  50. package/browser/ai.dbg.3.0.0-beta.2303-11.integrity.json +0 -66
  51. package/browser/ai.dbg.3.0.0-beta.2303-11.js.map +0 -1
  52. package/browser/ai.dbg.3.0.0-beta.2303-11.min.js +0 -6
  53. package/browser/ai.dbg.3.0.0-beta.2303-11.min.js.map +0 -1
  54. package/browser/ai.dbg.3.cjs.js.map +0 -1
  55. package/browser/ai.dbg.3.cjs.min.js +0 -6
  56. package/browser/ai.dbg.3.cjs.min.js.map +0 -1
  57. package/browser/ai.dbg.3.gbl.js.map +0 -1
  58. package/browser/ai.dbg.3.gbl.min.js +0 -6
  59. package/browser/ai.dbg.3.gbl.min.js.map +0 -1
  60. package/browser/ai.dbg.3.js.map +0 -1
  61. package/browser/ai.dbg.3.min.js +0 -6
  62. package/browser/ai.dbg.3.min.js.map +0 -1
  63. package/dist/applicationinsights-debugplugin-js.api.json +0 -464
  64. package/dist/applicationinsights-debugplugin-js.api.md +0 -32
  65. package/dist/applicationinsights-debugplugin-js.js.map +0 -1
  66. package/dist/applicationinsights-debugplugin-js.min.js +0 -6
  67. package/dist/applicationinsights-debugplugin-js.min.js.map +0 -1
  68. package/dist/applicationinsights-debugplugin-js.rollup.d.ts +0 -60
  69. package/dist-esm/applicationinsights-debugplugin-js.js +0 -9
  70. package/dist-esm/interfaces/IDebugPluginConfig.js +0 -8
  71. package/src/DebugPlugin.ts +0 -397
  72. package/src/__DynamicConstants.ts +0 -51
  73. package/src/applicationinsights-debugplugin-js.ts +0 -6
  74. package/src/components/Dashboard.ts +0 -288
  75. package/src/components/LogEntry.ts +0 -102
  76. package/src/components/debugBins.ts +0 -127
  77. package/src/components/filterList.ts +0 -128
  78. package/src/components/helpers.ts +0 -474
  79. package/src/components/styleNodeSrc.ts +0 -435
  80. package/src/interfaces/IDebugPluginConfig.ts +0 -39
  81. package/src/localization/EN-US.json +0 -0
  82. package/types/DebugPlugin.d.ts +0 -9
  83. package/types/__DynamicConstants.d.ts +0 -39
  84. package/types/components/Dashboard.d.ts +0 -19
  85. package/types/components/LogEntry.d.ts +0 -9
  86. package/types/components/debugBins.d.ts +0 -24
  87. package/types/components/filterList.d.ts +0 -7
  88. package/types/components/helpers.d.ts +0 -9
  89. package/types/components/styleNodeSrc.d.ts +0 -2
  90. package/types/interfaces/IDebugPluginConfig.d.ts +0 -28
  91. package/types/tsdoc-metadata.json +0 -11
  92. /package/{dist-esm → dist-es5}/DebugPlugin.js.map +0 -0
  93. /package/{dist-esm → dist-es5}/__DynamicConstants.js.map +0 -0
  94. /package/{dist-esm → dist-es5}/applicationinsights-debugplugin-js.js.map +0 -0
  95. /package/{dist-esm → dist-es5}/components/Dashboard.js.map +0 -0
  96. /package/{dist-esm → dist-es5}/components/LogEntry.js.map +0 -0
  97. /package/{dist-esm → dist-es5}/components/debugBins.js.map +0 -0
  98. /package/{dist-esm → dist-es5}/components/filterList.js.map +0 -0
  99. /package/{dist-esm → dist-es5}/components/helpers.js.map +0 -0
  100. /package/{dist-esm → dist-es5}/components/styleNodeSrc.js.map +0 -0
  101. /package/{dist-esm → dist-es5}/interfaces/IDebugPluginConfig.js.map +0 -0
@@ -1,474 +0,0 @@
1
- // Copyright (c) Microsoft Corporation. All rights reserved.
2
- // Licensed under the MIT License.
3
-
4
- import {
5
- arrForEach, arrIndexOf, getIEVersion, isArray, isError, isFunction, isObject, isString, isSymbol, objKeys
6
- } from "@microsoft/applicationinsights-core-js";
7
- import { strShimPrototype } from "@microsoft/applicationinsights-shims";
8
- import { objHasOwnProperty } from "@nevware21/ts-utils";
9
-
10
- const strConstructor = "constructor";
11
- const strGetOwnPropertyNames = "getOwnPropertyNames";
12
-
13
- export const MAX_DEPTH = 16;
14
-
15
- export function makeRegex(value: string) {
16
- if (value && value.length > 0) {
17
- // Escape any slashes first!
18
- value = value.replace(/\\/g, "\\\\");
19
- // eslint-disable-next-line security/detect-non-literal-regexp
20
- value = value.replace(/([\+\?\|\{\}\[\]\(\)\^\$\#\.\=\!\:\/])/g, "\\$1");
21
- value = value.replace(/\*/g, ".*");
22
- return new RegExp("(" + value + ")");
23
- }
24
-
25
- return null;
26
- }
27
-
28
- export function toggleClassName(el: HTMLElement, className: string) {
29
- const idx = el.className.indexOf(className);
30
- if (idx === -1) {
31
- el.className += className;
32
- } else {
33
- el.className = el.className.substring(0, idx) + el.className.substring(idx + className.length);
34
- }
35
- }
36
-
37
- export function traverseAndReplace(target: Object, maxDepth: number, currentDepth: number, thingsReferenced: any[], excludedKeys: string[], includeFunctions: boolean): Object {
38
- const out = {};
39
-
40
- if (!thingsReferenced) {
41
- thingsReferenced = [];
42
- }
43
- if (isObject(target)) {
44
- for (const key of getTargetKeys(target, excludedKeys, includeFunctions)) {
45
- let targetValue = target[key];
46
- if (isSymbol(targetValue)) {
47
- targetValue = targetValue.toString();
48
- }
49
-
50
- if (targetValue !== null && arrIndexOf(thingsReferenced, targetValue) !== -1) {
51
- out[key] = `<circular (${key} - "${getTargetName(targetValue)}")>`;
52
- } else if (targetValue !== null && isObject(targetValue)) {
53
- if (currentDepth >= maxDepth) {
54
- out[key] = "<max allowed depth reached>";
55
- } else {
56
- thingsReferenced.push(target);
57
- out[key] = traverseAndReplace(targetValue, maxDepth, currentDepth + 1, thingsReferenced, excludedKeys, includeFunctions);
58
- thingsReferenced.pop();
59
- }
60
- } else {
61
- out[key] = targetValue;
62
- }
63
- }
64
- }
65
-
66
- return out;
67
- }
68
-
69
- function _sanitizeText(value: string) {
70
- if (value) {
71
- value = value.replace(/&/g, "&amp;");
72
- value = value.replace(/>/g, "&gt;");
73
- value = value.replace(/</g, "&lt;");
74
- }
75
-
76
- return value;
77
- }
78
-
79
- function _setInnerText(elm: HTMLElement, theText: string, textFilter: string): boolean {
80
- let innerText = theText;
81
- let matchPos = -1;
82
- let matchLen = 0;
83
- let rg = makeRegex(textFilter);
84
- if (rg) {
85
- let matchTxt = rg.exec(innerText);
86
- if (matchTxt && matchTxt[1]) {
87
- matchPos = theText.indexOf(matchTxt[1]);
88
- matchLen = matchTxt[1].length;
89
- }
90
- }
91
-
92
- if (matchPos !== -1) {
93
- let innerHtml =
94
- _sanitizeText(theText.substring(0, matchPos)) +
95
- "<span class=\"matched-text-filter\">" +
96
- _sanitizeText(theText.substring(matchPos, matchPos + matchLen)) +
97
- "</span>" +
98
- theText.substring(matchPos + matchLen);
99
-
100
- elm.innerHTML = innerHtml;
101
- return true;
102
- }
103
-
104
- elm.innerText = theText;
105
- return false;
106
- }
107
-
108
- let lastSelectedElement: HTMLElement;
109
- let selectedObject: object;
110
-
111
- export function copySelectedTree() {
112
- const toCopy: Object = selectedObject;
113
- if (!toCopy) {
114
- return;
115
- }
116
-
117
- const textArea = document.createElement("textarea");
118
- textArea.innerText = JSON.stringify(toCopy);
119
- textArea.style.opacity = "0";
120
- document.body.appendChild(textArea);
121
- textArea.select();
122
- document.execCommand("copy");
123
- textArea.parentElement.removeChild(textArea);
124
- }
125
-
126
- export function focusHandler(evt: Event, target: Object, level: number, excludeKeys: string[], includeFunctions: boolean) {
127
- if (lastSelectedElement) {
128
- toggleClassName(lastSelectedElement, " last-selected-element");
129
- }
130
- lastSelectedElement = (evt.target as HTMLElement);
131
- for (let i = 0; i < 10; i++) {
132
- if (lastSelectedElement.tagName === "DIV") {
133
- break;
134
- }
135
- lastSelectedElement = lastSelectedElement.parentElement;
136
- }
137
- lastSelectedElement.className += " last-selected-element";
138
- selectedObject = traverseAndReplace(target, MAX_DEPTH, level, null, excludeKeys, includeFunctions);
139
- }
140
-
141
- function _navHandler(evt: KeyboardEvent, openHandler?: (evt: Event, forceState?: boolean) => void, currentState?: boolean) {
142
- const el = evt.target as HTMLElement;
143
- switch (evt.which) {
144
- // Enter
145
- case 13: (openHandler) ? openHandler(evt) : void 0; break;
146
- // ArrowUp
147
- case 38:
148
- evt.preventDefault();
149
- const prev = el.previousElementSibling as HTMLElement;
150
- if (prev && prev.tagName !== "BUTTON") {
151
- prev.focus();
152
- }
153
- break;
154
- // ArrowDown
155
- case 40:
156
- evt.preventDefault();
157
- const next = el.nextElementSibling as HTMLElement;
158
- if (next) {
159
- next.focus();
160
- }
161
- break;
162
- // ArrowRight
163
- case 39:
164
- if (openHandler) {
165
- openHandler(evt, true);
166
- if (currentState) {
167
- (el.firstElementChild.nextSibling as HTMLElement).focus();
168
- }
169
- }
170
- break;
171
- // ArrowLeft
172
- case 37:
173
- if (openHandler) {
174
- openHandler(evt, false);
175
- }
176
- if (!currentState) {
177
- (el.parentElement as HTMLElement).focus();
178
- }
179
- break;
180
- // c
181
- case 67:
182
- if (evt.ctrlKey) {
183
- copySelectedTree();
184
- (evt.target as HTMLElement).focus();
185
- }
186
- break;
187
- }
188
- }
189
-
190
- export function getTargetName(target: any) {
191
- if (target) {
192
- if (isString(target.identifier)) {
193
- return target.identifier;
194
- }
195
-
196
- if (isString(target.name)) {
197
- return target.name;
198
- }
199
-
200
- if (objHasOwnProperty(target, strShimPrototype)) {
201
- // Look like a prototype
202
- return target.name || "";
203
- }
204
-
205
- return ((target[strConstructor]) || {}).name || "";
206
- }
207
-
208
- return "";
209
- }
210
-
211
- function _toString(value: any) {
212
- if (isString(value)) {
213
- return value;
214
- }
215
-
216
- if (isSymbol(value)) {
217
- return value.toString();
218
- }
219
-
220
- if (isFunction(value["toString"])) {
221
- return (value["toString"] as any)() || "";
222
- }
223
-
224
- return "";
225
- }
226
-
227
- export function getTargetKeys(target: any, excludedKeys: string[], includeFunctions: boolean) {
228
- let keys: string[] = objKeys(target);
229
-
230
- if (!isArray(target)) {
231
- try {
232
- if (Object[strGetOwnPropertyNames]) {
233
- // We need to use this for built in objects such as Error which don't return their values via objKeys because they are not enumerable for example
234
- let propKeys = Object[strGetOwnPropertyNames](target);
235
- if (propKeys) {
236
- arrForEach(propKeys, (key) => {
237
- const theKey = _toString(key);
238
- if (theKey && arrIndexOf(keys, theKey) === -1) {
239
- keys.push(key);
240
- }
241
- });
242
- }
243
- }
244
- } catch (ex) {
245
- // getOwnPropertyNames can fail in ES5, if the argument to this method is not an object (a primitive),
246
- // then it will cause a TypeError. In ES2015, a non-object argument will be coerced to an object.
247
- }
248
- }
249
-
250
- let theKeys: string[] = [];
251
- arrForEach(keys, (key) => {
252
-
253
- if (!includeFunctions && isFunction(target[key])) {
254
- return;
255
- }
256
-
257
- const theKey = _toString(key);
258
- if (theKey && arrIndexOf(excludedKeys, theKey) === -1) {
259
- theKeys.push(theKey);
260
- }
261
- });
262
-
263
- return theKeys;
264
- }
265
-
266
- export function formatLogElements(target: Object, tmLabel: string, key: string, level: number, textFilter: string, excludeKeys: string[], thingsReferenced?: any[], includeFunctions?:boolean): any {
267
- let openState = false;
268
- if (!level) {
269
- level = 0;
270
- }
271
-
272
- if (!thingsReferenced) {
273
- thingsReferenced = [];
274
- }
275
-
276
- let isObj = isObject(target) || isError(target);
277
- let isErr = target["baseType"] === "ExceptionData" || isError(target);
278
-
279
- const children: HTMLElement[] = [];
280
-
281
- function _openNode(currentLine: HTMLElement) {
282
- openState = true;
283
- arrForEach(children, (child) => {
284
- rootDiv.appendChild(child);
285
- });
286
-
287
- currentLine.className = "obj-key expandable open"
288
- }
289
-
290
- function _collapseNode(currentLine: HTMLElement) {
291
- // rootDiv.innerHTML = '';
292
- arrForEach(children, (child) => {
293
- rootDiv.removeChild(child);
294
- });
295
- // rootDiv.appendChild(currentLine);
296
- openState = false;
297
- currentLine.className = "obj-key expandable closed"
298
- }
299
-
300
- let matched = false;
301
- let childOpened = false;
302
- const keys = getTargetKeys(target, excludeKeys, includeFunctions);
303
- if (keys.length === 0) {
304
- keys.push("<empty>");
305
- }
306
- if (level >= MAX_DEPTH) {
307
- keys.unshift("<maxdepth>");
308
- }
309
- for (const key of keys) {
310
- if (arrIndexOf(excludeKeys, key) !== -1) {
311
- continue;
312
- }
313
-
314
- let targetValue = target[key];
315
- if (isSymbol(targetValue)) {
316
- targetValue = targetValue.toString();
317
- }
318
-
319
- if (key === "<maxdepth>") {
320
- const builder = document.createElement("div");
321
- builder.className = "empty";
322
- builder.innerText = "<max allowed depth reached>";
323
- children.push(builder);
324
- break;
325
- } else if (key === "<empty>") {
326
- const builder = document.createElement("div");
327
- builder.className = "empty";
328
- builder.innerText = "<empty>";
329
- children.push(builder);
330
- } else if (targetValue !== null && arrIndexOf(thingsReferenced, targetValue) !== -1) {
331
- const builder = document.createElement("div");
332
- builder.className = "empty";
333
- builder.innerText = `<circular (${key}) - "${getTargetName(targetValue)}">`;
334
- children.push(builder);
335
- } else if (targetValue !== null && (isObject(targetValue) || isError(targetValue))) {
336
- thingsReferenced.push(target);
337
- let formatted = formatLogElements(targetValue, null, key, level + 1, textFilter, excludeKeys, thingsReferenced, includeFunctions);
338
- thingsReferenced.pop();
339
- if (formatted.matched) {
340
- childOpened = true;
341
- }
342
- if (formatted.isErr) {
343
- isErr = true;
344
- }
345
-
346
- children.push(formatted.root);
347
- } else {
348
- const builder = document.createElement("div");
349
- builder.setAttribute("tabindex", "0");
350
- builder.onclick = (evt: MouseEvent) => {
351
- evt.stopPropagation();
352
- }
353
- builder.ontouchend = (evt: TouchEvent) => {
354
- evt.stopPropagation();
355
- }
356
- builder.onkeydown = (evt: KeyboardEvent) => {
357
- evt.stopPropagation();
358
- _navHandler(evt);
359
- }
360
- builder.onfocus = (evt: Event) => {
361
- focusHandler(evt, target, level, excludeKeys, includeFunctions);
362
- }
363
-
364
- const outerSpan = document.createElement("span");
365
- const keySpan = document.createElement("span");
366
- keySpan.className = "key";
367
- if (_setInnerText(keySpan, `${key}: `, textFilter)) {
368
- childOpened = true;
369
- }
370
-
371
- outerSpan.appendChild(keySpan);
372
-
373
- const valueSpan = document.createElement("span");
374
- if (isFunction(targetValue)) {
375
- const fnStr = targetValue.toString();
376
- const fnHead = fnStr.match(/^([^{]+)/)[1];
377
- valueSpan.textContent = `${fnHead}{...}`;
378
- } else {
379
- if (_setInnerText(valueSpan, `${targetValue}`, textFilter)) {
380
- childOpened = true;
381
- }
382
- }
383
- valueSpan.className = `${typeof targetValue}`;
384
- outerSpan.appendChild(valueSpan);
385
- builder.appendChild(outerSpan);
386
- children.push(builder);
387
- }
388
- }
389
-
390
- const rootDiv = document.createElement("div");
391
-
392
- let innerText = "";
393
- let currentLine = document.createElement("span");
394
- if (isObj || children.length) {
395
- innerText = `${key ? key : "obj"}: `;
396
- if (isArray(target)) {
397
- innerText += `[${getTargetKeys(target, excludeKeys, includeFunctions).length}]`;
398
- } else {
399
- let targetName = getTargetName(target);
400
- if (targetName) {
401
- innerText += ` <"${targetName}"> `
402
- }
403
- innerText += `{${getTargetKeys(target, excludeKeys, includeFunctions).length}}`;
404
- }
405
-
406
- matched = _setInnerText(currentLine, innerText, textFilter);
407
-
408
- if (tmLabel) {
409
- const tmWrapper = document.createElement("span");
410
- const tmDetails = document.createElement("span");
411
- tmDetails.className = "obj-time";
412
- tmDetails.innerText = tmLabel;
413
- tmWrapper.appendChild(tmDetails);
414
- tmWrapper.appendChild(currentLine);
415
-
416
- currentLine = tmWrapper;
417
- }
418
-
419
- currentLine.className = "obj-key expandable closed"
420
- } else {
421
- innerText = `${key ? key : "obj"}: ${target.toString()}`;
422
- matched = _setInnerText(currentLine, innerText, textFilter);
423
-
424
- currentLine.className = "obj-key";
425
- }
426
-
427
- rootDiv.appendChild(currentLine);
428
- rootDiv.setAttribute("tabindex", "0");
429
-
430
- if (childOpened) {
431
- // A child node matched so auto-expand
432
- _openNode(currentLine);
433
- }
434
- if (isObj) {
435
- if (isErr) {
436
- rootDiv.className = "exception"
437
- }
438
- const openHandler = (evt: Event, forceState?: boolean) => {
439
- evt.stopPropagation();
440
- if (getIEVersion()) {
441
- focusHandler(evt, target, level, excludeKeys, includeFunctions);
442
- }
443
- if (forceState !== undefined && openState === forceState) {
444
- return;
445
- }
446
- if (lastSelectedElement === rootDiv) {
447
- if (openState) {
448
- _collapseNode(currentLine);
449
- } else {
450
- _openNode(currentLine);
451
- }
452
- }
453
- }
454
-
455
- rootDiv.onkeydown = (evt: KeyboardEvent) => {
456
- _navHandler(evt, openHandler, openState);
457
- }
458
- rootDiv.onclick = (evt: MouseEvent) => {
459
- openHandler(evt);
460
- }
461
- rootDiv.ontouchend = (evt: TouchEvent) => {
462
- openHandler(evt);
463
- }
464
- rootDiv.onfocus = (evt: Event) => {
465
- focusHandler(evt, target, level, excludeKeys, includeFunctions);
466
- }
467
- }
468
-
469
- return {
470
- root: rootDiv,
471
- isErr: isErr,
472
- matched: matched || childOpened
473
- };
474
- }