Blame view

天文台pc/tianwentai-ui/node_modules/@radix-ui/react-primitive/dist/index.d.mts 2.67 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
  import * as React from 'react';
  
  declare const NODES: readonly ["a", "button", "div", "form", "h2", "h3", "img", "input", "label", "li", "nav", "ol", "p", "span", "svg", "ul"];
  type Primitives = {
      [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E>;
  };
  type PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {
      asChild?: boolean;
  };
  interface PrimitiveForwardRefComponent<E extends React.ElementType> extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {
  }
  declare const Primitive: Primitives;
  /**
   * Flush custom event dispatch
   * https://github.com/radix-ui/primitives/pull/1378
   *
   * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.
   *
   * Internally, React prioritises events in the following order:
   *  - discrete
   *  - continuous
   *  - default
   *
   * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350
   *
   * `discrete` is an  important distinction as updates within these events are applied immediately.
   * React however, is not able to infer the priority of custom event types due to how they are detected internally.
   * Because of this, it's possible for updates from custom events to be unexpectedly batched when
   * dispatched by another `discrete` event.
   *
   * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.
   * This utility should be used when dispatching a custom event from within another `discrete` event, this utility
   * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.
   * For example:
   *
   * dispatching a known click 👎
   * target.dispatchEvent(new Event(‘click’))
   *
   * dispatching a custom type within a non-discrete event 👎
   * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}
   *
   * dispatching a custom type within a `discrete` event 👍
   * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}
   *
   * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's  not recommended to use
   * this utility with them. This is because it's possible for those handlers to be called implicitly during render
   * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.
   */
  declare function dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E): void;
  declare const Root: Primitives;
  
  export { Primitive, type PrimitivePropsWithRef, Root, dispatchDiscreteCustomEvent };