@splunk/react-ui 4.42.0 → 4.43.0

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 (62) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/Code.js +611 -426
  3. package/ComboBox.js +25 -32
  4. package/Date.js +21 -26
  5. package/Dropdown.js +1 -1
  6. package/JSONTree.js +30 -24
  7. package/MIGRATION.mdx +48 -53
  8. package/Menu.js +12 -8
  9. package/Multiselect.js +1 -1
  10. package/Number.js +418 -392
  11. package/Paginator.js +269 -251
  12. package/Popover.js +412 -345
  13. package/RadioList.js +44 -43
  14. package/ResultsMenu.d.ts +2 -0
  15. package/Search.js +56 -65
  16. package/Select.js +1 -1
  17. package/TabBar.js +4 -0
  18. package/Table.js +146 -146
  19. package/TransitionOpen.js +16 -14
  20. package/Tree.js +20 -14
  21. package/package.json +6 -6
  22. package/types/src/Button/Button.d.ts +1 -0
  23. package/types/src/Code/Code.d.ts +1 -1
  24. package/types/src/ComboBox/ComboBox.d.ts +6 -3
  25. package/types/src/Date/Date.d.ts +0 -1
  26. package/types/src/Dropdown/docs/examples/TooltipButtonToggle.d.ts +2 -0
  27. package/types/src/Multiselect/Multiselect.d.ts +2 -0
  28. package/types/src/Number/Number.d.ts +3 -10
  29. package/types/src/Number/utils.d.ts +29 -0
  30. package/types/src/Paginator/Paginator.d.ts +15 -2
  31. package/types/src/Paginator/docs/examples/CustomPages.d.ts +2 -0
  32. package/types/src/Popover/Popover.d.ts +17 -8
  33. package/types/src/Popover/PopoverMenuContext.d.ts +6 -0
  34. package/types/src/Popover/PopoverProvider.d.ts +23 -0
  35. package/types/src/Popover/index.d.ts +2 -1
  36. package/types/src/RadioList/RadioList.d.ts +1 -1
  37. package/types/src/Select/SelectBase.d.ts +1 -1
  38. package/types/src/Select/docs/examples/Appearance.d.ts +1 -11
  39. package/types/src/Select/docs/examples/Basic.d.ts +1 -9
  40. package/types/src/Select/docs/examples/Children.d.ts +1 -9
  41. package/types/src/Select/docs/examples/Descriptions.d.ts +1 -9
  42. package/types/src/Select/docs/examples/Fetching.d.ts +1 -22
  43. package/types/src/Select/docs/examples/Filter.d.ts +1 -9
  44. package/types/src/Select/docs/examples/Headings.d.ts +1 -9
  45. package/types/src/Select/docs/examples/LoadMoreOnScrollBottom.d.ts +1 -24
  46. package/types/src/Select/docs/examples/Prefix.d.ts +1 -9
  47. package/types/src/Select/docs/examples/Truncate.d.ts +1 -9
  48. package/types/src/Table/docs/examples/Click.d.ts +2 -16
  49. package/types/src/Table/docs/examples/ClickRows.d.ts +2 -16
  50. package/types/src/Table/docs/examples/Complex.d.ts +2 -50
  51. package/types/src/Table/docs/examples/FilterColumnValues.d.ts +1 -13
  52. package/types/src/Table/docs/examples/HeadDropdownCell.d.ts +1 -17
  53. package/types/src/Table/docs/examples/ReorderColumns.d.ts +2 -21
  54. package/types/src/Table/docs/examples/ReorderRows.d.ts +2 -21
  55. package/types/src/Table/docs/examples/Resizable.d.ts +2 -23
  56. package/types/src/Table/docs/examples/ResizableFill.d.ts +2 -23
  57. package/types/src/Table/docs/examples/RowActions.d.ts +2 -39
  58. package/types/src/Table/docs/examples/Selectable.d.ts +2 -18
  59. package/types/src/Table/docs/examples/SortableColumns.d.ts +1 -11
  60. package/useResizeObserver.js +122 -90
  61. package/types/src/Dropdown/docs/examples/OtherToggles.d.ts +0 -2
  62. package/types/src/Popover/PopoverContext.d.ts +0 -6
package/RadioList.js CHANGED
@@ -185,8 +185,8 @@
185
185
  prisma: (0, u.css)([ "&:active + ", "::before{background-color:", ";}&:active + ", "::after{background-color:", ";}&:checked:active + ", "::before{border-color:transparent;background-color:", ";}&:disabled + ", ":hover::before{box-shadow:none;}&:checked:disabled + ", "{&::before{background-color:", ";}&::after{background-color:rgba(255,255,255,0.3);}}" ], /* sc-sel */ f, p.mixins.overlayColors(p.variables.backgroundColorPage, p.variables.interactiveColorOverlayActive), /* sc-sel */ f, p.mixins.overlayColors(p.variables.white, p.variables.interactiveColorOverlayActive), /* sc-sel */ f, p.mixins.overlayColors(p.variables.interactiveColorPrimary, p.variables.interactiveColorOverlayActive), /* sc-sel */ f, /* sc-sel */ f, p.variables.interactiveColorBackgroundDisabled)
186
186
  }));
187
187
  // CONCATENATED MODULE: ./src/RadioList/Option.tsx
188
- function g() {
189
- return g = Object.assign ? Object.assign.bind() : function(e) {
188
+ function m() {
189
+ return m = Object.assign ? Object.assign.bind() : function(e) {
190
190
  for (var r = 1; r < arguments.length; r++) {
191
191
  var a = arguments[r];
192
192
  for (var o in a) {
@@ -194,9 +194,9 @@
194
194
  }
195
195
  }
196
196
  return e;
197
- }, g.apply(null, arguments);
197
+ }, m.apply(null, arguments);
198
198
  }
199
- function m(e, r) {
199
+ function g(e, r) {
200
200
  if (null == e) return {};
201
201
  var a, o, i = h(e, r);
202
202
  if (Object.getOwnPropertySymbols) {
@@ -227,7 +227,7 @@
227
227
  value: t().any.isRequired
228
228
  };
229
229
  function x(e) {
230
- var r = e.children, i = e.disabled, t = i === void 0 ? false : i, n = e.error, l = n === void 0 ? false : n, c = e.id, u = e.onChange, b = e.value, p = m(e, [ "children", "disabled", "error", "id", "onChange", "value" ]);
230
+ var r = e.children, i = e.disabled, t = i === void 0 ? false : i, n = e.error, l = n === void 0 ? false : n, c = e.id, u = e.onChange, b = e.value, p = g(e, [ "children", "disabled", "error", "id", "onChange", "value" ]);
231
231
  // @docs-props-type OptionPropsBase
232
232
  var h = (0, a.useRef)(c || (0, s.createDOMID)("radio-option")), k = h.current;
233
233
  var x = (0, a.useContext)(d);
@@ -256,7 +256,7 @@
256
256
  S = x.error;
257
257
  }
258
258
 
259
- return o().createElement(v, g({
259
+ return o().createElement(v, m({
260
260
  "data-test": "option",
261
261
  "data-test-value": b
262
262
  }, p, {
@@ -304,26 +304,26 @@
304
304
  }, j.apply(null, arguments);
305
305
  }
306
306
  function q(e, r) {
307
- return E(e) || A(e, r) || I(e, r) || P();
307
+ return A(e) || _(e, r) || I(e, r) || P();
308
308
  }
309
309
  function P() {
310
310
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
311
311
  }
312
312
  function I(e, r) {
313
313
  if (e) {
314
- if ("string" == typeof e) return _(e, r);
314
+ if ("string" == typeof e) return R(e, r);
315
315
  var a = {}.toString.call(e).slice(8, -1);
316
- return "Object" === a && e.constructor && (a = e.constructor.name), "Map" === a || "Set" === a ? Array.from(e) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? _(e, r) : void 0;
316
+ return "Object" === a && e.constructor && (a = e.constructor.name), "Map" === a || "Set" === a ? Array.from(e) : "Arguments" === a || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a) ? R(e, r) : void 0;
317
317
  }
318
318
  }
319
- function _(e, r) {
319
+ function R(e, r) {
320
320
  (null == r || r > e.length) && (r = e.length);
321
321
  for (var a = 0, o = Array(r); a < r; a++) {
322
322
  o[a] = e[a];
323
323
  }
324
324
  return o;
325
325
  }
326
- function A(e, r) {
326
+ function _(e, r) {
327
327
  var a = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
328
328
  if (null != a) {
329
329
  var o, i, t, n, l = [], s = !0, c = !1;
@@ -345,12 +345,12 @@
345
345
  return l;
346
346
  }
347
347
  }
348
- function E(e) {
348
+ function A(e) {
349
349
  if (Array.isArray(e)) return e;
350
350
  }
351
- function B(e, r) {
351
+ function E(e, r) {
352
352
  if (null == e) return {};
353
- var a, o, i = D(e, r);
353
+ var a, o, i = B(e, r);
354
354
  if (Object.getOwnPropertySymbols) {
355
355
  var t = Object.getOwnPropertySymbols(e);
356
356
  for (o = 0; o < t.length; o++) {
@@ -359,7 +359,7 @@
359
359
  }
360
360
  return i;
361
361
  }
362
- function D(e, r) {
362
+ function B(e, r) {
363
363
  if (null == e) return {};
364
364
  var a = {};
365
365
  for (var o in e) {
@@ -370,7 +370,7 @@
370
370
  }
371
371
  return a;
372
372
  }
373
- /** @public */ var N = {
373
+ /** @public */ var D = {
374
374
  children: t().node,
375
375
  defaultValue: t().any,
376
376
  describedBy: t().string,
@@ -385,19 +385,19 @@
385
385
  required: t().bool,
386
386
  value: t().any
387
387
  };
388
- function R(e) {
389
- var r = e.children, i = e.defaultValue, t = e.describedBy, n = e.direction, c = n === void 0 ? "column" : n, u = e.disabled, b = u === void 0 ? false : u, p = e.error, v = p === void 0 ? false : p, f = e.labelledBy, y = e.name, g = e.onChange, m = e.required, h = e.value, k = B(e, [ "children", "defaultValue", "describedBy", "direction", "disabled", "error", "labelledBy", "name", "onChange", "required", "value" ]);
388
+ function N(e) {
389
+ var r = e.children, i = e.defaultValue, t = e.describedBy, n = e.direction, c = n === void 0 ? "column" : n, u = e.disabled, b = u === void 0 ? false : u, p = e.elementRef, v = e.error, f = v === void 0 ? false : v, y = e.labelledBy, m = e.name, g = e.onChange, h = e.required, k = e.value, x = E(e, [ "children", "defaultValue", "describedBy", "direction", "disabled", "elementRef", "error", "labelledBy", "name", "onChange", "required", "value" ]);
390
390
  // @docs-props-type RadioListPropsBase
391
391
  // TODO: Implement shared isControlled hook (SUI-5283).
392
392
  // See material-ui for similar pattern to handle controlled/un-controlled in functional components w/ hooks
393
393
  // https://github.com/mui-org/material-ui/blob/60d99a39836fb82f4da1477a717f642c216fb0b9/packages/material-ui/src/utils/useControlled.js
394
- var x = (0, a.useRef)(h !== undefined), C = x.current;
395
- var O = (0, a.useState)(i), w = q(O, 2), P = w[0], I = w[1];
396
- var _ = C ? h : P;
397
- var A = (0, a.useRef)(y || (0, s.createDOMID)("radio-name")), E = A.current;
394
+ var C = (0, a.useRef)(k !== undefined), O = C.current;
395
+ var w = (0, a.useState)(i), P = q(w, 2), I = P[0], R = P[1];
396
+ var _ = O ? k : I;
397
+ var A = (0, a.useRef)(m || (0, s.createDOMID)("radio-name")), B = A.current;
398
398
  var D = function e(r, a) {
399
- if (!C) {
400
- I(a.value);
399
+ if (!O) {
400
+ R(a.value);
401
401
  }
402
402
  g === null || g === void 0 ? void 0 : g(r, a);
403
403
  };
@@ -407,41 +407,42 @@
407
407
  // Check if changing from controlled to un-controlled
408
408
  (0, a.useEffect)((function() {
409
409
  if (false) {}
410
- }), [ h, C ]);
411
- var N = (0, a.useRef)(i), R = N.current;
410
+ }), [ k, O ]);
411
+ var N = (0, a.useRef)(i), M = N.current;
412
412
  (0, a.useEffect)((function() {
413
413
  if (false) {}
414
- }), [ R, i, C ]);
415
- var M = (0, a.useMemo)((function() {
414
+ }), [ M, i, O ]);
415
+ var T = (0, a.useMemo)((function() {
416
416
  return {
417
417
  disabled: b,
418
- error: v,
418
+ error: f,
419
419
  onChange: D,
420
- name: E,
421
- required: m,
420
+ name: B,
421
+ required: h,
422
422
  value: _
423
423
  };
424
- }), [ b, v, D, E, m, _ ]);
425
- var T = k["aria-labelledby"];
426
- var L = k["aria-describedby"];
424
+ }), [ b, f, D, B, h, _ ]);
425
+ var L = x["aria-labelledby"];
426
+ var z = x["aria-describedby"];
427
427
 
428
428
  return o().createElement(d.Provider, {
429
- value: M
429
+ value: T
430
430
  }, o().createElement(S, j({
431
431
  flex: true,
432
432
  direction: c,
433
433
  role: "radiogroup",
434
434
  "data-test": "radio-list",
435
- "data-test-value": _
436
- }, l()(k, [ "aria-labelledby", "aria-describedby" ]), {
437
- "aria-labelledby": T ? "".concat(T, " ").concat(f) : f,
438
- "aria-describedby": L ? "".concat(L, " ").concat(t) : t,
439
- "aria-invalid": v
435
+ "data-test-value": _,
436
+ elementRef: p
437
+ }, l()(x, [ "aria-labelledby", "aria-describedby" ]), {
438
+ "aria-labelledby": L ? "".concat(L, " ").concat(y) : y,
439
+ "aria-describedby": z ? "".concat(z, " ").concat(t) : t,
440
+ "aria-invalid": f
440
441
  }), r));
441
442
  }
442
- R.propTypes = N;
443
- R.Option = C;
444
- /* harmony default export */ const M = R;
443
+ N.propTypes = D;
444
+ N.Option = C;
445
+ /* harmony default export */ const M = N;
445
446
  // only for styled components using RadioList
446
447
  // CONCATENATED MODULE: ./src/RadioList/index.ts
447
448
  module.exports = r;
@@ -0,0 +1,2 @@
1
+ export { default } from './types/src/ResultsMenu';
2
+ export * from './types/src/ResultsMenu';
package/Search.js CHANGED
@@ -536,23 +536,22 @@
536
536
  var Se = (0, r.useRef)(null);
537
537
  var je = (0, r.useRef)(null);
538
538
  var Pe = (0, r.useRef)(F !== undefined && F !== null);
539
- var ke = (0, r.useRef)(false);
540
- var Ce = (0, r.useRef)([]);
541
- var Ie = (0, r.useRef)(we);
542
- var Me = (0, r.useRef)(undefined);
543
- var Re = function e(n) {
539
+ var ke = (0, r.useRef)([]);
540
+ var Ce = (0, r.useRef)(we);
541
+ var Ie = (0, r.useRef)(undefined);
542
+ var Me = function e(n) {
544
543
  $(Se, n);
545
544
  $(d, n);
546
545
  };
547
- var Ee = function e(n) {
546
+ var Re = function e(n) {
548
547
  $(je, n);
549
548
  $(C, n);
550
549
  };
551
- var qe = function e() {
550
+ var Ee = function e() {
552
551
  return Pe.current ? F : se;
553
552
  };
554
- var De = function e() {
555
- var n = qe();
553
+ var qe = function e() {
554
+ var n = Ee();
556
555
  var t = r.Children.toArray(i).filter(r.isValidElement);
557
556
  var o = !ae && t.find((function(e) {
558
557
  return e.props.label !== undefined && e.props.value === n;
@@ -562,32 +561,25 @@
562
561
  }
563
562
  return n;
564
563
  };
565
- var xe = function e() {
564
+ var De = function e() {
566
565
  re(true);
567
566
  G(-1);
568
567
  V === null || V === void 0 ? void 0 : V();
569
568
  };
570
- var Ae = function e() {
569
+ var xe = function e() {
571
570
  re(false);
572
- Ie.current = null;
571
+ Ce.current = null;
573
572
  _ === null || _ === void 0 ? void 0 : _();
574
573
  };
575
- var Be = function e() {
574
+ var Ae = function e() {
576
575
  var n;
577
576
  (n = je.current) === null || n === void 0 ? void 0 : n.focus();
578
577
  };
579
- var Te = function e(n, r) {
580
- /* SUI-930 On IE 11 this handler is essentially deferred after calling
581
- * this.textInput.focus(). this.focusCalledInternally enables the focus event to be ignored
582
- * when the menu closes. */
583
- if (ke.current) {
584
- ke.current = false;
585
- } else {
586
- xe();
587
- }
578
+ var Be = function e(n, r) {
579
+ De();
588
580
  H === null || H === void 0 ? void 0 : H(n, r);
589
581
  };
590
- var _e = function e(n, r) {
582
+ var Te = function e(n, r) {
591
583
  var t = r.value;
592
584
  if (!Pe.current) {
593
585
  pe(t);
@@ -599,14 +591,13 @@
599
591
  name: A
600
592
  });
601
593
  };
602
- var He = function e(n, r) {
603
- _e(n, Z({}, r));
604
- ke.current = true;
605
- Be();
594
+ var _e = function e(n, r) {
595
+ Te(n, Z({}, r));
606
596
  Ae();
597
+ xe();
607
598
  };
608
- var Le = function e(n) {
609
- var r = Ce.current.length;
599
+ var He = function e(n) {
600
+ var r = ke.current.length;
610
601
  var t = (0, h.keycode)(n.nativeEvent);
611
602
  if (ne) {
612
603
  switch (t) {
@@ -621,7 +612,7 @@
621
612
  }
622
613
 
623
614
  case "tab":
624
- Ae();
615
+ xe();
625
616
  break;
626
617
 
627
618
  case "down":
@@ -638,41 +629,41 @@
638
629
  } else if ((0, h.addsCharacter)(n.nativeEvent) !== false ||
639
630
  // Safari 9.0 returns undefined
640
631
  t === "enter" || t === "backspace" || t === "down" || t === "up") {
641
- xe();
632
+ De();
642
633
  }
643
634
  L === null || L === void 0 ? void 0 : L(n);
644
635
  };
645
- var Ve = function e() {
636
+ var Le = function e() {
646
637
  if (!ne && !s) {
647
- xe();
638
+ De();
648
639
  }
649
640
  };
650
- var Ke = function e(n) {
641
+ var Ve = function e(n) {
651
642
  var r = n.event, t = n.reason;
652
643
  var o = t === "offScreen" || t === "escapeKey" || t === "clickAway" && Se.current && !de(Se.current, r);
653
644
  if (o) {
654
- Ae();
645
+ xe();
655
646
  }
656
647
  };
657
- var Ne = function e(n) {
658
- if (Ie.current !== Y) {
648
+ var Ke = function e(n) {
649
+ if (Ce.current !== Y) {
659
650
  n === null || n === void 0 ? void 0 : n.scrollIntoViewIfNeeded();
660
651
  }
661
652
  };
662
- var Fe = function e(n) {
653
+ var Ne = function e(n) {
663
654
  var a = n.anchorWidth, u = n.maxHeight;
664
655
  var l = r.Children.toArray(i).filter(r.isValidElement);
665
656
  // Highlight Active
666
- Me.current = undefined;
657
+ Ie.current = undefined;
667
658
  // Only update the menu options if they are valid and the dropdown is open.
668
659
  // This is necessary to handle the outro animation of the dropdown.
669
660
  if (z && ne) {
670
- Ce.current = l.map((function(e, n) {
661
+ ke.current = l.map((function(e, n) {
671
662
  var t = function n(r, t) {
672
663
  var o, i;
673
664
  var a = (o = (i = e.props).onClick) === null || o === void 0 ? void 0 : o.call(i, r, t);
674
665
  if (a !== false) {
675
- He(r, t);
666
+ _e(r, t);
676
667
  }
677
668
  };
678
669
  if (!c()(e.props, "active")) {
@@ -681,11 +672,11 @@
681
672
  }
682
673
  if (n === Y) {
683
674
  if (!e.props.disabled) {
684
- Me.current = e.props.value;
675
+ Ie.current = e.props.value;
685
676
  }
686
677
 
687
678
  return (0, r.cloneElement)(e, {
688
- ref: Ne,
679
+ ref: Ke,
689
680
  id: Oe,
690
681
  onClick: t,
691
682
  active: true
@@ -713,16 +704,16 @@
713
704
  animateLoading: o,
714
705
  loadingMessage: q,
715
706
  menuId: ge
716
- }), Ce.current);
707
+ }), ke.current);
717
708
  };
709
+ var Fe = Ee();
718
710
  var We = qe();
719
- var ze = De();
720
- var Ue = ne && !!Se.current && z;
721
- var Xe = z ? "combobox" : "searchbox";
722
- var Ye = {
723
- "aria-activedescendant": Ue && Y > -1 ? Oe : undefined,
711
+ var ze = ne && !!Se.current && z;
712
+ var Ue = z ? "combobox" : "searchbox";
713
+ var Xe = {
714
+ "aria-activedescendant": ze && Y > -1 ? Oe : undefined,
724
715
  "aria-expanded": z ? ne && !!Se.current : undefined,
725
- "aria-controls": Ue ? ge : undefined
716
+ "aria-controls": ze ? ge : undefined
726
717
  };
727
718
 
728
719
  return t().createElement(I(), J({
@@ -733,26 +724,26 @@
733
724
  autoComplete: "off",
734
725
  autoCorrect: "off",
735
726
  "data-test-popover-id": he,
736
- "data-test-label": ze,
737
- "data-test-value": We,
738
- "data-test-open": Ue,
727
+ "data-test-label": We,
728
+ "data-test-value": Fe,
729
+ "data-test-open": ze,
739
730
  describedBy: l,
740
731
  disabled: s,
741
- elementRef: Re,
732
+ elementRef: Me,
742
733
  error: g,
743
734
  inline: P,
744
- inputRef: Ee,
735
+ inputRef: Re,
745
736
  labelledBy: E,
746
737
  name: A,
747
- onFocus: Te,
748
- onClick: Ve,
749
- onChange: _e,
750
- onKeyDown: Le,
738
+ onFocus: Be,
739
+ onClick: Le,
740
+ onChange: Te,
741
+ onKeyDown: He,
751
742
  placeholder: N,
752
743
  spellCheck: false,
753
- value: ze,
754
- role: Xe
755
- }, Ye), t().createElement(j(), {
744
+ value: We,
745
+ role: Ue
746
+ }, Xe), t().createElement(j(), {
756
747
  anchor: function() {
757
748
  return Se.current;
758
749
  }(),
@@ -760,10 +751,10 @@
760
751
  canCoverAnchor: false,
761
752
  defaultPlacement: a,
762
753
  id: he,
763
- onRequestClose: Ke,
764
- open: Ue,
754
+ onRequestClose: Ve,
755
+ open: ze,
765
756
  repositionMode: "flip"
766
- }, Fe));
757
+ }, Ne));
767
758
  }
768
759
  pe.propTypes = se;
769
760
  pe.Option = Y;
package/Select.js CHANGED
@@ -935,7 +935,7 @@
935
935
  role: "combobox",
936
936
  "aria-expanded": "true",
937
937
  "aria-controls": s,
938
- "aria-owns": a ? r : undefined,
938
+ "aria-owns": S && a ? r : undefined,
939
939
  "aria-label": (0, u._)("Filter"),
940
940
  "aria-autocomplete": "list",
941
941
  "aria-activedescendant": S && a ? r : undefined,
package/TabBar.js CHANGED
@@ -861,6 +861,10 @@
861
861
  }), [ q ]);
862
862
  var V = m && m > ke ? m : null;
863
863
  var K = (0, r.useCallback)((function(e) {
864
+ // if command key on Mac was pressed ignore
865
+ if (e.nativeEvent.metaKey) {
866
+ return;
867
+ }
864
868
  var t = (0, a.keycode)(e.nativeEvent);
865
869
  var r;
866
870
  if (t === E) {