tgui-core 1.3.1 → 1.4.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.
@@ -1,32 +1,33 @@
1
- import { jsx as p } from "react/jsx-runtime";
2
- import { useRef as a } from "react";
3
- import { computeBoxProps as f } from "./Box.js";
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { useRef as p } from "react";
3
+ import { computeBoxProps as f } from "../common/ui.js";
4
4
  const l = 5;
5
- function E(o) {
5
+ function E(m) {
6
6
  const {
7
- fixBlur: s = !0,
8
- fixErrors: m = !1,
9
- objectFit: n = "fill",
10
- src: e,
11
- ...c
12
- } = o, t = a(0), r = f(c);
13
- return r.style = {
14
- ...r.style,
15
- "-ms-interpolation-mode": s ? "nearest-neighbor" : "auto",
16
- objectFit: n
17
- }, /* @__PURE__ */ p(
7
+ fixBlur: r = !0,
8
+ fixErrors: n = !1,
9
+ objectFit: s = "fill",
10
+ src: o,
11
+ ...i
12
+ } = m, t = p(0), e = f(i);
13
+ return e.style = {
14
+ ...e.style,
15
+ "-ms-interpolation-mode": r ? "nearest-neighbor" : "auto",
16
+ imageRendering: r ? "pixelated" : "auto",
17
+ objectFit: s
18
+ }, /* @__PURE__ */ a(
18
19
  "img",
19
20
  {
20
- onError: (i) => {
21
- if (m && t.current < l) {
22
- const u = i.currentTarget;
21
+ onError: (c) => {
22
+ if (n && t.current < l) {
23
+ const u = c.currentTarget;
23
24
  setTimeout(() => {
24
- u.src = `${e}?attempt=${t.current}`, t.current++;
25
+ u.src = `${o}?attempt=${t.current}`, t.current++;
25
26
  }, 1e3);
26
27
  }
27
28
  },
28
- src: e,
29
- ...r,
29
+ src: o,
30
+ ...e,
30
31
  alt: "dm icon"
31
32
  }
32
33
  );
@@ -1,6 +1,6 @@
1
1
  import { jsxs as g, jsx as t } from "react/jsx-runtime";
2
2
  import { classes as l } from "../common/react.js";
3
- import { computeBoxProps as A } from "./Box.js";
3
+ import { computeBoxProps as A } from "../common/ui.js";
4
4
  import { DmIcon as D } from "./DmIcon.js";
5
5
  import { Icon as F } from "./Icon.js";
6
6
  import { Image as j } from "./Image.js";
@@ -1,6 +1,6 @@
1
1
  import { jsxs as l, jsx as n } from "react/jsx-runtime";
2
2
  import { Component as v } from "react";
3
- import { computeBoxProps as Z } from "./Box.js";
3
+ import { computeBoxProps as Z } from "../common/ui.js";
4
4
  import { Button as c } from "./Button.js";
5
5
  import { ProgressBar as g } from "./ProgressBar.js";
6
6
  import { Stack as d } from "./Stack.js";
@@ -38,18 +38,21 @@ type OptionalProps = Partial<{
38
38
  /** Fires when user is 'done typing': Clicked out, blur, enter key */
39
39
  onChange: (event: SyntheticEvent<HTMLInputElement>, value: string) => void;
40
40
  /** Fires once the enter key is pressed */
41
- onEnter?: (event: SyntheticEvent<HTMLInputElement>, value: string) => void;
41
+ onEnter: (event: SyntheticEvent<HTMLInputElement>, value: string) => void;
42
42
  /** Fires once the escape key is pressed */
43
43
  onEscape: (event: SyntheticEvent<HTMLInputElement>) => void;
44
44
  /** The placeholder text when everything is cleared */
45
45
  placeholder: string;
46
46
  /** Clears the input value on enter */
47
47
  selfClear: boolean;
48
+ /** Auto-updates the input value on props change, ie, data from Byond */
49
+ updateOnPropsChange: boolean;
48
50
  /** The state variable of the input. */
49
51
  value: string | number;
50
52
  }>;
51
- type Props = OptionalProps & ConditionalProps & BoxProps;
52
- export declare function toInputValue(value: string | number | undefined): string;
53
+ type Props = OptionalProps & ConditionalProps & Omit<BoxProps, 'children'>;
54
+ type InputValue = string | number | undefined;
55
+ export declare function toInputValue(value: InputValue): string;
53
56
  /**
54
57
  * ### Input
55
58
  * A basic text input which allow users to enter text into a UI.
@@ -1,81 +1,86 @@
1
- import { jsxs as E, jsx as p } from "react/jsx-runtime";
2
- import { useRef as K, useEffect as m } from "react";
3
- import { KEY as V, isEscape as j } from "../common/keys.js";
4
- import { classes as k } from "../common/react.js";
5
- import { debounce as B } from "../common/timer.js";
1
+ import { jsxs as j, jsx as p } from "react/jsx-runtime";
2
+ import { useRef as k, useEffect as m } from "react";
3
+ import { KEY as w, isEscape as B } from "../common/keys.js";
4
+ import { classes as F } from "../common/react.js";
5
+ import { debounce as O } from "../common/timer.js";
6
6
  import { Box as R } from "./Box.js";
7
- function l(u) {
8
- return typeof u != "number" && typeof u != "string" ? "" : String(u);
7
+ function d(r) {
8
+ return typeof r != "number" && typeof r != "string" ? "" : String(r);
9
9
  }
10
- const S = B((u) => u(), 250);
11
- function A(u) {
10
+ const V = O((r) => r(), 250);
11
+ function C(r) {
12
12
  const {
13
- autoFocus: d,
14
- autoSelect: s,
15
- className: g,
16
- disabled: I,
17
- expensive: T,
18
- fluid: b,
13
+ autoFocus: g,
14
+ autoSelect: l,
15
+ className: I,
16
+ disabled: T,
17
+ expensive: b,
18
+ fluid: h,
19
19
  maxLength: x,
20
20
  monospace: y,
21
- onChange: t,
22
- onEnter: n,
23
- onEscape: o,
21
+ onChange: n,
22
+ onEnter: c,
23
+ onEscape: s,
24
24
  onInput: i,
25
- placeholder: h,
26
- selfClear: w,
27
- value: a,
28
- ...N
29
- } = u, c = K(null);
30
- function _(e) {
31
- var f;
25
+ placeholder: N,
26
+ selfClear: _,
27
+ updateOnPropsChange: D,
28
+ value: o,
29
+ ...E
30
+ } = r, a = k(null);
31
+ function K(t) {
32
+ var u;
32
33
  if (!i) return;
33
- const r = (f = e.currentTarget) == null ? void 0 : f.value;
34
- T ? S(() => i(e, r)) : i(e, r);
34
+ const e = (u = t.currentTarget) == null ? void 0 : u.value;
35
+ b ? V(() => i(t, e)) : i(t, e);
35
36
  }
36
- function D(e) {
37
- if (e.key === V.Enter) {
38
- n == null || n(e, e.currentTarget.value), w ? e.currentTarget.value = "" : (e.currentTarget.blur(), t == null || t(e, e.currentTarget.value));
37
+ function S(t) {
38
+ if (t.key === w.Enter) {
39
+ c == null || c(t, t.currentTarget.value), _ ? t.currentTarget.value = "" : (t.currentTarget.blur(), n == null || n(t, t.currentTarget.value));
39
40
  return;
40
41
  }
41
- j(e.key) && (o == null || o(e), e.currentTarget.value = l(a), e.currentTarget.blur());
42
+ B(t.key) && (s == null || s(t), t.currentTarget.value = d(o), t.currentTarget.blur());
42
43
  }
43
- return m(() => {
44
- const e = c.current;
44
+ function f(t) {
45
+ const e = a.current;
45
46
  if (!e) return;
46
- const r = l(a);
47
- e.value !== r && (e.value = r), !(!d && !s) && setTimeout(() => {
48
- e.focus(), s && e.select();
49
- }, 1);
47
+ const u = d(t);
48
+ e.value !== u && (e.value = u);
49
+ }
50
+ return m(() => {
51
+ const t = a.current;
52
+ if (t) {
53
+ f(o);
54
+ const e = g || l, u = document.activeElement === t;
55
+ e && !u && setTimeout(() => {
56
+ t.focus(), l && t.select();
57
+ }, 1);
58
+ }
50
59
  }, []), m(() => {
51
- const e = c.current;
52
- if (!e || document.activeElement === e)
53
- return;
54
- const r = l(a);
55
- e.value !== r && (e.value = r);
56
- }), /* @__PURE__ */ E(
60
+ D && f(o);
61
+ }, [o]), /* @__PURE__ */ j(
57
62
  R,
58
63
  {
59
- className: k([
64
+ className: F([
60
65
  "Input",
61
- b && "Input--fluid",
66
+ h && "Input--fluid",
62
67
  y && "Input--monospace",
63
- g
68
+ I
64
69
  ]),
65
- ...N,
70
+ ...E,
66
71
  children: [
67
72
  /* @__PURE__ */ p("div", { className: "Input__baseline", children: "." }),
68
73
  /* @__PURE__ */ p(
69
74
  "input",
70
75
  {
71
76
  className: "Input__input",
72
- disabled: I,
77
+ disabled: T,
73
78
  maxLength: x,
74
- onBlur: (e) => t == null ? void 0 : t(e, e.target.value),
75
- onChange: _,
76
- onKeyDown: D,
77
- placeholder: h,
78
- ref: c
79
+ onBlur: (t) => n == null ? void 0 : n(t, t.target.value),
80
+ onChange: K,
81
+ onKeyDown: S,
82
+ placeholder: N,
83
+ ref: a
79
84
  }
80
85
  )
81
86
  ]
@@ -83,6 +88,6 @@ function A(u) {
83
88
  );
84
89
  }
85
90
  export {
86
- A as Input,
87
- l as toInputValue
91
+ C as Input,
92
+ d as toInputValue
88
93
  };
@@ -1,14 +1,8 @@
1
- import { Component } from 'react';
2
1
  import { KeyEvent } from '../common/events';
3
- type KeyListenerProps = Partial<{
2
+ type Props = Partial<{
4
3
  onKey: (key: KeyEvent) => void;
5
4
  onKeyDown: (key: KeyEvent) => void;
6
5
  onKeyUp: (key: KeyEvent) => void;
7
6
  }>;
8
- export declare class KeyListener extends Component<KeyListenerProps> {
9
- dispose: () => void;
10
- constructor(props: any);
11
- componentWillUnmount(): void;
12
- render(): null;
13
- }
7
+ export declare function KeyListener(props: Props): null;
14
8
  export {};
@@ -1,23 +1,15 @@
1
- var t = Object.defineProperty;
2
- var e = (s, o, p) => o in s ? t(s, o, { enumerable: !0, configurable: !0, writable: !0, value: p }) : s[o] = p;
3
- var i = (s, o, p) => e(s, typeof o != "symbol" ? o + "" : o, p);
4
- import { Component as r } from "react";
5
- import { listenForKeyEvents as h } from "../common/hotkeys.js";
6
- class d extends r {
7
- constructor(p) {
8
- super(p);
9
- i(this, "dispose");
10
- this.dispose = h((n) => {
11
- this.props.onKey && this.props.onKey(n), n.isDown() && this.props.onKeyDown && this.props.onKeyDown(n), n.isUp() && this.props.onKeyUp && this.props.onKeyUp(n);
1
+ import { useEffect as i } from "react";
2
+ import { listenForKeyEvents as t } from "../common/hotkeys.js";
3
+ function r(n) {
4
+ return i(() => {
5
+ const o = t((e) => {
6
+ n.onKey && n.onKey(e), e.isDown() && n.onKeyDown && n.onKeyDown(e), e.isUp() && n.onKeyUp && n.onKeyUp(e);
12
7
  });
13
- }
14
- componentWillUnmount() {
15
- this.dispose();
16
- }
17
- render() {
18
- return null;
19
- }
8
+ return () => {
9
+ o();
10
+ };
11
+ }, []), null;
20
12
  }
21
13
  export {
22
- d as KeyListener
14
+ r as KeyListener
23
15
  };
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as o } from "react/jsx-runtime";
2
2
  import { keyOfMatchingRange as $, scale as t } from "../common/math.js";
3
3
  import { classes as j } from "../common/react.js";
4
- import { computeBoxClassName as E, computeBoxProps as T } from "./Box.js";
4
+ import { computeBoxClassName as E, computeBoxProps as T } from "../common/ui.js";
5
5
  import { DraggableControl as I } from "./DraggableControl.js";
6
6
  function H(c) {
7
7
  const {
@@ -1,6 +1,7 @@
1
1
  import { jsx as e, jsxs as d } from "react/jsx-runtime";
2
2
  import { classes as c } from "../common/react.js";
3
- import { Box as s, unit as g } from "./Box.js";
3
+ import { unit as g } from "../common/ui.js";
4
+ import { Box as r } from "./Box.js";
4
5
  import { Divider as x } from "./Divider.js";
5
6
  import { Tooltip as N } from "./Tooltip.js";
6
7
  function b(l) {
@@ -11,19 +12,19 @@ function v(l) {
11
12
  const {
12
13
  className: t,
13
14
  label: a,
14
- labelColor: L = "label",
15
- labelWrap: m,
15
+ labelColor: m = "label",
16
+ labelWrap: L,
16
17
  color: p,
17
18
  textAlign: _,
18
19
  buttons: o,
19
- content: h,
20
- children: f,
21
- verticalAlign: r = "baseline",
20
+ content: f,
21
+ children: h,
22
+ verticalAlign: s = "baseline",
22
23
  tooltip: n
23
24
  } = l;
24
25
  let i;
25
26
  a && (i = a, typeof a == "string" && (i += ":")), n !== void 0 && (i = /* @__PURE__ */ e(N, { content: n, children: /* @__PURE__ */ e(
26
- s,
27
+ r,
27
28
  {
28
29
  as: "span",
29
30
  style: {
@@ -33,33 +34,33 @@ function v(l) {
33
34
  }
34
35
  ) }));
35
36
  const u = /* @__PURE__ */ e(
36
- s,
37
+ r,
37
38
  {
38
39
  as: "td",
39
- color: L,
40
+ color: m,
40
41
  className: c([
41
42
  "LabeledList__cell",
42
43
  // Kinda flipped because we want nowrap as default. Cleaner CSS this way though.
43
- !m && "LabeledList__label--nowrap"
44
+ !L && "LabeledList__label--nowrap"
44
45
  ]),
45
- verticalAlign: r,
46
+ verticalAlign: s,
46
47
  children: i
47
48
  }
48
49
  );
49
50
  return /* @__PURE__ */ d("tr", { className: c(["LabeledList__row", t]), children: [
50
51
  u,
51
52
  /* @__PURE__ */ d(
52
- s,
53
+ r,
53
54
  {
54
55
  as: "td",
55
56
  color: p,
56
57
  textAlign: _,
57
58
  className: "LabeledList__cell",
58
59
  colSpan: o ? void 0 : 2,
59
- verticalAlign: r,
60
+ verticalAlign: s,
60
61
  children: [
61
- h,
62
- f
62
+ f,
63
+ h
63
64
  ]
64
65
  }
65
66
  ),
@@ -1,6 +1,6 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { classes as t } from "../common/react.js";
3
- import { computeBoxClassName as a, computeBoxProps as c } from "./Box.js";
3
+ import { computeBoxClassName as a, computeBoxProps as c } from "../common/ui.js";
4
4
  import { Dimmer as i } from "./Dimmer.js";
5
5
  function f(m) {
6
6
  const { className: s, children: e, ...o } = m;
@@ -2,7 +2,7 @@ import { jsxs as B, jsx as i } from "react/jsx-runtime";
2
2
  import { CSS_COLORS as C } from "../common/constants.js";
3
3
  import { keyOfMatchingRange as P, toFixed as h, scale as x, clamp01 as _ } from "../common/math.js";
4
4
  import { classes as v } from "../common/react.js";
5
- import { computeBoxProps as y, computeBoxClassName as N } from "./Box.js";
5
+ import { computeBoxProps as y, computeBoxClassName as N } from "../common/ui.js";
6
6
  function j(n) {
7
7
  const {
8
8
  className: m,
@@ -1,3 +1,4 @@
1
+ import { CSSProperties } from 'react';
1
2
  import { BoxProps } from './Box';
2
3
  type Props = {
3
4
  /** The current value of the metric. */
@@ -20,7 +21,7 @@ type Props = {
20
21
  /** When provided scales the gauge. */
21
22
  size: number;
22
23
  /** Custom css */
23
- style: React.CSSProperties;
24
+ style: CSSProperties;
24
25
  }> & BoxProps;
25
26
  /**
26
27
  * ## RoundGauge
@@ -1,43 +1,44 @@
1
1
  import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
2
  import { scale as d, keyOfMatchingRange as M, clamp01 as k } from "../common/math.js";
3
- import { classes as h } from "../common/react.js";
4
- import { AnimatedNumber as v } from "./AnimatedNumber.js";
5
- import { Box as B, computeBoxClassName as $, computeBoxProps as j } from "./Box.js";
6
- function w(p) {
3
+ import { classes as p } from "../common/react.js";
4
+ import { computeBoxClassName as v, computeBoxProps as B } from "../common/ui.js";
5
+ import { AnimatedNumber as $ } from "./AnimatedNumber.js";
6
+ import { Box as j } from "./Box.js";
7
+ function z(h) {
7
8
  const {
8
9
  alertAfter: a,
9
10
  alertBefore: t,
10
11
  className: _,
11
12
  format: R,
12
13
  maxValue: c = 1,
13
- minValue: u = 1,
14
+ minValue: i = 1,
14
15
  ranges: n,
15
16
  size: y = 1,
16
17
  style: x,
17
18
  value: r,
18
19
  ...g
19
- } = p, G = d(r, u, c), f = k(G), l = n ? {} : { primary: [0, 1] };
20
+ } = h, G = d(r, i, c), f = k(G), l = n ? {} : { primary: [0, 1] };
20
21
  n && Object.keys(n).forEach((o) => {
21
22
  const s = n[o];
22
23
  l[o] = [
23
- d(s[0], u, c),
24
- d(s[1], u, c)
24
+ d(s[0], i, c),
25
+ d(s[1], i, c)
25
26
  ];
26
27
  });
27
28
  function N() {
28
29
  return !!(a && t && r > a && r < t || a && r > a || t && r < t);
29
30
  }
30
31
  const C = N() && M(f, l);
31
- return /* @__PURE__ */ m(B, { inline: !0, children: [
32
+ return /* @__PURE__ */ m(j, { inline: !0, children: [
32
33
  /* @__PURE__ */ e(
33
34
  "div",
34
35
  {
35
- className: h([
36
+ className: p([
36
37
  "RoundGauge",
37
38
  _,
38
- $(g)
39
+ v(g)
39
40
  ]),
40
- ...j({
41
+ ...B({
41
42
  style: {
42
43
  fontSize: `${y}em`,
43
44
  ...x
@@ -48,7 +49,7 @@ function w(p) {
48
49
  (a || t) && /* @__PURE__ */ e(
49
50
  "g",
50
51
  {
51
- className: h([
52
+ className: p([
52
53
  "RoundGauge__alert",
53
54
  C ? `active RoundGauge__alert--${C}` : ""
54
55
  ]),
@@ -57,18 +58,18 @@ function w(p) {
57
58
  ),
58
59
  /* @__PURE__ */ e("g", { children: /* @__PURE__ */ e("circle", { className: "RoundGauge__ringTrack", cx: "50", cy: "50", r: "45" }) }),
59
60
  /* @__PURE__ */ e("g", { children: Object.keys(l).map((o, s) => {
60
- const i = l[o];
61
+ const u = l[o];
61
62
  return /* @__PURE__ */ e(
62
63
  "circle",
63
64
  {
64
65
  className: `RoundGauge__ringFill RoundGauge--color--${o}`,
65
66
  style: {
66
67
  strokeDashoffset: Math.max(
67
- (2 - (i[1] - i[0])) * Math.PI * 50,
68
+ (2 - (u[1] - u[0])) * Math.PI * 50,
68
69
  0
69
70
  )
70
71
  },
71
- transform: `rotate(${180 + 180 * i[0]} 50 50)`,
72
+ transform: `rotate(${180 + 180 * u[0]} 50 50)`,
72
73
  cx: "50",
73
74
  cy: "50",
74
75
  r: "45"
@@ -105,9 +106,9 @@ function w(p) {
105
106
  ] })
106
107
  }
107
108
  ),
108
- /* @__PURE__ */ e(v, { value: r, format: R })
109
+ /* @__PURE__ */ e($, { value: r, format: R })
109
110
  ] });
110
111
  }
111
112
  export {
112
- w as RoundGauge
113
+ z as RoundGauge
113
114
  };
@@ -1,29 +1,4 @@
1
1
  import { ReactNode } from 'react';
2
- import { BoxProps } from './Box';
3
- type Props = Partial<{
4
- /** Buttons to render aside the section title. */
5
- buttons: ReactNode;
6
- /** id to assosiate with the parent div element used by this section, for uses with procs like getElementByID */
7
- container_id: string;
8
- /** If true, fills all available vertical space. */
9
- fill: boolean;
10
- /** If true, removes all section padding. */
11
- fitted: boolean;
12
- /** If true, fills the area without forcing height to 100% */
13
- flexGrow: boolean;
14
- /** If true, removes the section top padding */
15
- noTopPadding: boolean;
16
- /** @member Callback function for the `scroll` event */
17
- onScroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
18
- /** Shows or hides the scrollbar. */
19
- scrollable: boolean;
20
- /** Shows or hides the horizontal scrollbar. */
21
- scrollableHorizontal: boolean;
22
- /** If true, filly the area except for -3rem */
23
- stretchContents: boolean;
24
- /** Title of the section. */
25
- title: ReactNode;
26
- }> & BoxProps;
27
2
  /**
28
3
  * ## Section
29
4
  * Section is a surface that displays content and actions on a single topic.
@@ -51,5 +26,46 @@ type Props = Partial<{
51
26
  * </Section>
52
27
  * ```
53
28
  */
54
- export declare function Section(props: Props): import("react/jsx-runtime").JSX.Element;
55
- export {};
29
+ export declare const Section: import('react').ForwardRefExoticComponent<Partial<{
30
+ /** Buttons to render aside the section title. */
31
+ buttons: ReactNode;
32
+ /** id to assosiate with the parent div element used by this section, for uses with procs like getElementByID */
33
+ container_id: string;
34
+ /** If true, fills all available vertical space. */
35
+ fill: boolean;
36
+ /** If true, removes all section padding. */
37
+ fitted: boolean;
38
+ /** If true, fills the area without forcing height to 100% */
39
+ flexGrow: boolean;
40
+ /** If true, removes the section top padding */
41
+ noTopPadding: boolean;
42
+ /** @member Callback function for the `scroll` event */
43
+ onScroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;
44
+ /** Shows or hides the scrollbar. */
45
+ scrollable: boolean;
46
+ /** Shows or hides the horizontal scrollbar. */
47
+ scrollableHorizontal: boolean;
48
+ /** If true, filly the area except for -3rem */
49
+ stretchContents: boolean;
50
+ /** Title of the section. */
51
+ title: ReactNode;
52
+ }> & Partial<{
53
+ as: string;
54
+ children: ReactNode;
55
+ className: string | import('../common/react').BooleanLike;
56
+ id: string;
57
+ style: import('react').CSSProperties;
58
+ tw: string;
59
+ } & import('../common/ui').BooleanStyleMap & import('../common/ui').StringStyleMap & {
60
+ onClick: import('react').MouseEventHandler<HTMLDivElement>;
61
+ onContextMenu: import('react').MouseEventHandler<HTMLDivElement>;
62
+ onDoubleClick: import('react').MouseEventHandler<HTMLDivElement>;
63
+ onKeyDown: import('react').KeyboardEventHandler<HTMLDivElement>;
64
+ onKeyUp: import('react').KeyboardEventHandler<HTMLDivElement>;
65
+ onMouseDown: import('react').MouseEventHandler<HTMLDivElement>;
66
+ onMouseLeave: import('react').MouseEventHandler<HTMLDivElement>;
67
+ onMouseMove: import('react').MouseEventHandler<HTMLDivElement>;
68
+ onMouseOver: import('react').MouseEventHandler<HTMLDivElement>;
69
+ onMouseUp: import('react').MouseEventHandler<HTMLDivElement>;
70
+ onScroll: import('react').UIEventHandler<HTMLDivElement>;
71
+ }> & import('react').RefAttributes<HTMLDivElement>>;