@fluentui/react-utilities 9.25.0 → 9.25.1

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/CHANGELOG.md CHANGED
@@ -1,12 +1,21 @@
1
1
  # Change Log - @fluentui/react-utilities
2
2
 
3
- This log was last generated on Thu, 02 Oct 2025 15:06:58 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 08 Oct 2025 12:00:19 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.25.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-utilities_v9.25.1)
8
+
9
+ Wed, 08 Oct 2025 12:00:19 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-utilities_v9.25.0..@fluentui/react-utilities_v9.25.1)
11
+
12
+ ### Patches
13
+
14
+ - refactor: derive JSXIntrinsicElementKeys type for React instead of using generated type ([PR #35290](https://github.com/microsoft/fluentui/pull/35290) by dmytrokirpa@microsoft.com)
15
+
7
16
  ## [9.25.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-utilities_v9.25.0)
8
17
 
9
- Thu, 02 Oct 2025 15:06:58 GMT
18
+ Thu, 02 Oct 2025 15:12:09 GMT
10
19
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-utilities_v9.24.1..@fluentui/react-utilities_v9.25.0)
11
20
 
12
21
  ### Minor changes
package/dist/index.d.ts CHANGED
@@ -540,27 +540,26 @@ export declare type JSXElement = React_2.ReactElement<any, any>;
540
540
  export declare type JSXIntrinsicElement<Element extends JSXIntrinsicElementKeys> = React_2.ComponentProps<Element>;
541
541
 
542
542
  /**
543
- * Union of all intrinsic element keys in React.
544
- * Based on the React version, it will either be the latest set of intrinsic elements or the legacy set.
545
- */
546
- export declare type JSXIntrinsicElementKeys = ReactVersionDependent<JSXIntrinsicElementKeysLatest, JSXIntrinsicElementKeysCompat>;
547
-
548
- /**
549
- * ============================================
550
- * 💡 DO NOT EDIT THIS FILE.
551
- * - This file is automatically generated and should not be edited manually.
552
- * - To regenerate run `yarn nx run react-utilities:build`.
553
- * ============================================
554
- */
555
- /**
556
- * Unwrapped type for 'keyof JSX.IntrinsicElement'. (Backwards compatible with older versions of '\@types/react')
557
- */
558
- declare type JSXIntrinsicElementKeysCompat = 'a' | 'abbr' | 'address' | 'animate' | 'animateMotion' | 'animateTransform' | 'area' | 'article' | 'aside' | 'audio' | 'b' | 'base' | 'bdi' | 'bdo' | 'big' | 'blockquote' | 'body' | 'br' | 'button' | 'canvas' | 'caption' | 'circle' | 'cite' | 'clipPath' | 'code' | 'col' | 'colgroup' | 'data' | 'datalist' | 'dd' | 'defs' | 'del' | 'desc' | 'details' | 'dfn' | 'dialog' | 'div' | 'dl' | 'dt' | 'ellipse' | 'em' | 'embed' | 'feBlend' | 'feColorMatrix' | 'feComponentTransfer' | 'feComposite' | 'feConvolveMatrix' | 'feDiffuseLighting' | 'feDisplacementMap' | 'feDistantLight' | 'feDropShadow' | 'feFlood' | 'feFuncA' | 'feFuncB' | 'feFuncG' | 'feFuncR' | 'feGaussianBlur' | 'feImage' | 'feMerge' | 'feMergeNode' | 'feMorphology' | 'feOffset' | 'fePointLight' | 'feSpecularLighting' | 'feSpotLight' | 'feTile' | 'feTurbulence' | 'fieldset' | 'figcaption' | 'figure' | 'filter' | 'footer' | 'foreignObject' | 'form' | 'g' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'head' | 'header' | 'hgroup' | 'hr' | 'html' | 'i' | 'iframe' | 'image' | 'img' | 'input' | 'ins' | 'kbd' | 'keygen' | 'label' | 'legend' | 'li' | 'line' | 'linearGradient' | 'link' | 'main' | 'map' | 'mark' | 'marker' | 'mask' | 'menu' | 'menuitem' | 'meta' | 'metadata' | 'meter' | 'mpath' | 'nav' | 'noindex' | 'noscript' | 'object' | 'ol' | 'optgroup' | 'option' | 'output' | 'p' | 'param' | 'path' | 'pattern' | 'picture' | 'polygon' | 'polyline' | 'pre' | 'progress' | 'q' | 'radialGradient' | 'rect' | 'rp' | 'rt' | 'ruby' | 's' | 'samp' | 'script' | 'section' | 'select' | 'slot' | 'small' | 'source' | 'span' | 'stop' | 'strong' | 'style' | 'sub' | 'summary' | 'sup' | 'svg' | 'switch' | 'symbol' | 'table' | 'tbody' | 'td' | 'template' | 'text' | 'textPath' | 'textarea' | 'tfoot' | 'th' | 'thead' | 'time' | 'title' | 'tr' | 'track' | 'tspan' | 'u' | 'ul' | 'use' | 'var' | 'video' | 'view' | 'wbr' | 'webview';
559
-
560
- /**
561
- * Unwrapped type for 'keyof JSX.IntrinsicElement'
543
+ * Type representing all valid JSX intrinsic element names (e.g., 'div', 'button', 'input').
544
+ * It's derived from `React.ElementType` by excluding all custom component types (`React.ComponentType`), ensuring it only includes standard HTML and SVG elements.
545
+ *
546
+ * Use this type when you need to restrict a type to only valid intrinsic element names.
547
+ *
548
+ * @example
549
+ * ```tsx
550
+ * import * as React from 'react';
551
+ * import type { JSXIntrinsicElementKeys } from '@fluentui/react-utilities';
552
+ *
553
+ * const createElement = (tag: JSXIntrinsicElementKeys) => React.createElement(tag, {});
554
+ *
555
+ * createElement('div'); // Valid
556
+ * createElement('span'); // Valid
557
+ * createElement('unknown'); // Error: Argument of type '"unknown"' is not assignable to parameter of type 'JSXIntrinsicElementKeys'.
558
+ * ```
559
+ *
560
+ * This type helps ensure that only valid intrinsic elements are used in scenarios where custom components are not allowed.
562
561
  */
563
- declare type JSXIntrinsicElementKeysLatest = 'set' | 'center' | 'search' | JSXIntrinsicElementKeysCompat;
562
+ export declare type JSXIntrinsicElementKeys = Exclude<React_2.ElementType, React_2.ComponentType>;
564
563
 
565
564
  /**
566
565
  * @internal
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { JSXIntrinsicElementKeysCompat, JSXIntrinsicElementKeysLatest } from './generated-types';\n\n/**\n * Helper type that works similar to Omit,\n * but when modifying an union type it will distribute the omission to all the union members.\n *\n * See [distributive conditional types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types) for more information\n */\n// Traditional Omit is basically equivalent to => Pick<T, Exclude<keyof T, K>>\n//\n// let's say we have Omit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Pick<{ a: string } | { b: string }, Exclude<keyof ({ a: string } | { b: string }), 'a'>>\n// The expected result would be {} | { b: string }, the omission of 'a' from all the union members,\n// but keyof ({ a: string } | { b: string }) is never as they don't share common keys\n// so Exclude<never, 'a'> is never,\n// and Pick<{ a: string } | { b: string }, never> is {}.\n//\n// With DistributiveOmit on the other hand it becomes like this:\n// DistributiveOmit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Omit<{ a: string }, 'a'> | Omit<{ b: string }, 'a'>\n// Since every single Omit clause in this case is being applied to a single union member there's no conflicts on keyof evaluation and in the second clause Omit<{ b: string }, 'a'> becomes { b: string },\n// so the result is {} | { b: string }, as expected.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type DistributiveOmit<T, K extends keyof any> = T extends unknown ? Omit<T, K> : T;\n\n/**\n * @public\n *\n * Helper type that works similar to Pick,\n * but when modifying an union type it will distribute the picking to all the union members.\n *\n * See {@link https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types} for more information\n */\nexport type DistributivePick<T, K> = T extends unknown ? Pick<T, K & keyof T> : never;\n\n/**\n * Converts a union type (`A | B | C`) to an intersection type (`A & B & C`)\n */\nexport type UnionToIntersection<U> = (U extends unknown ? (x: U) => U : never) extends (x: infer I) => U ? I : never;\n\n/**\n * @internal\n * If type T includes `null`, remove it and add `undefined` instead.\n */\nexport type ReplaceNullWithUndefined<T> = T extends null ? Exclude<T, null> | undefined : T;\n\n/**\n * @internal\n * With react 18, our `children` type starts leaking everywhere and that causes conflicts on component declaration, specially in the `propTypes` property of\n * both `ComponentClass` and `FunctionComponent`.\n *\n * This type substitutes `React.ComponentType` only keeping the function signature, it omits `propTypes`, `displayName` and other properties that are not\n * required for the inference.\n */\nexport type ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P>;\n\n/**\n * @internal\n *\n * On types/react 18 there are two types being delivered,\n * they rely on the typescript version to decide which will be consumed {@link https://github.com/DefinitelyTyped/DefinitelyTyped/blob/b59dc3ac1e2770fbd6cdbb90ba52abe04c168196/types/react/package.json#L10}\n *\n * If TS is higher than 5.0 then the `FunctionComponent` will be returning ReactNode (which we don't support)\n * If TS is below or equal to 5.0 then the `FunctionComponent` will be returning ReactElement | null (which we support)\n *\n * Since it's not possible to have a single type that works for both cases\n * (as ReactNode is more specific, and this will break while evaluating functions),\n * we need to create our own `FunctionComponent` type\n * that will work for both cases.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface FunctionComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n displayName?: string;\n}\n\nexport type FC<P> = FunctionComponent<P>;\n\nexport interface ExoticComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n $$typeof: symbol;\n}\n\nexport interface NamedExoticComponent<P> extends ExoticComponent<P> {\n displayName?: string;\n}\n\n/**\n * @internal\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface ComponentClass<P = {}, S = React.ComponentState> extends React.StaticLifecycle<P, S> {\n new (props: P): React.Component<P, S>;\n}\n\n/**\n * @internal\n *\n * on types/react 18 ReactNode becomes a more strict type, which is not compatible with our current implementation. to avoid any issues we are creating our own ReactNode type which allows anything.\n *\n * This type should only be used for inference purposes, and should never be exposed.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ReactNode = any;\n\n/**\n * Removes the 'ref' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutRef<P> = 'ref' extends keyof P ? DistributiveOmit<P, 'ref'> : P;\n\n/**\n * Removes the 'children' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutChildren<P> = 'children' extends keyof P ? DistributiveOmit<P, 'children'> : P;\n\n/**\n * @internal\n *\n * This type is used to determine if the current version of React is 18+ or not.\n *\n * It checks if the `React.ReactNode` has `{}` it its type.\n * If it is, then it means that the current version of React is lower than 18.\n * If it is not, then it means that the current version of React is 18 or higher.\n * This is useful for ensuring compatibility with different versions of React.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport type ReactVersionDependent<Modern, Legacy> = {} extends React.ReactNode ? Legacy : Modern;\n\n/**\n * Our own alias for `JSX.Element` type that is compatible with both React 17 and React 18+.\n * Use this type when annotating JSX markup in all our code in order to avoid issues between different React versions.\n *\n * Example usage:\n *\n * BAD:\n * ```tsx\n * const renderFoo = (state: FooState) = <div {...props}>Hello World</div>;\n * // infers\n * // R17: declare const renderFoo: (state: FooState) => JSX.Element;\n * // R18+: declare const renderFoo: (state: FooState) => React.JSX.Element;\n * ```\n *\n * GOOD:\n * ```tsx\n * import type { JSXElement } from '@fluentui/react-utilities';\n * const renderFoo = (state: FooState): JSXElement = <div {...props}>Hello World</div>;\n * ```\n */\nexport type JSXElement = React.ReactElement<\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any,\n any\n /* eslint-enable @typescript-eslint/no-explicit-any */\n>;\n\n/**\n * Union of all intrinsic element keys in React.\n * Based on the React version, it will either be the latest set of intrinsic elements or the legacy set.\n */\nexport type JSXIntrinsicElementKeys = ReactVersionDependent<\n JSXIntrinsicElementKeysLatest,\n JSXIntrinsicElementKeysCompat\n>;\n\n/**\n * Our own alias for `JSX.IntrinsicElements` type that is compatible with both React 17 and React 18+.\n * Use this type to get the intrinsic elements from React types in order to avoid issues between different React versions.\n */\nexport type JSXIntrinsicElement<Element extends JSXIntrinsicElementKeys> = React.ComponentProps<Element>;\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
1
+ {"version":3,"sources":["../src/utils/types.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Helper type that works similar to Omit,\n * but when modifying an union type it will distribute the omission to all the union members.\n *\n * See [distributive conditional types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types) for more information\n */\n// Traditional Omit is basically equivalent to => Pick<T, Exclude<keyof T, K>>\n//\n// let's say we have Omit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Pick<{ a: string } | { b: string }, Exclude<keyof ({ a: string } | { b: string }), 'a'>>\n// The expected result would be {} | { b: string }, the omission of 'a' from all the union members,\n// but keyof ({ a: string } | { b: string }) is never as they don't share common keys\n// so Exclude<never, 'a'> is never,\n// and Pick<{ a: string } | { b: string }, never> is {}.\n//\n// With DistributiveOmit on the other hand it becomes like this:\n// DistributiveOmit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Omit<{ a: string }, 'a'> | Omit<{ b: string }, 'a'>\n// Since every single Omit clause in this case is being applied to a single union member there's no conflicts on keyof evaluation and in the second clause Omit<{ b: string }, 'a'> becomes { b: string },\n// so the result is {} | { b: string }, as expected.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type DistributiveOmit<T, K extends keyof any> = T extends unknown ? Omit<T, K> : T;\n\n/**\n * @public\n *\n * Helper type that works similar to Pick,\n * but when modifying an union type it will distribute the picking to all the union members.\n *\n * See {@link https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types} for more information\n */\nexport type DistributivePick<T, K> = T extends unknown ? Pick<T, K & keyof T> : never;\n\n/**\n * Converts a union type (`A | B | C`) to an intersection type (`A & B & C`)\n */\nexport type UnionToIntersection<U> = (U extends unknown ? (x: U) => U : never) extends (x: infer I) => U ? I : never;\n\n/**\n * @internal\n * If type T includes `null`, remove it and add `undefined` instead.\n */\nexport type ReplaceNullWithUndefined<T> = T extends null ? Exclude<T, null> | undefined : T;\n\n/**\n * @internal\n * With react 18, our `children` type starts leaking everywhere and that causes conflicts on component declaration, specially in the `propTypes` property of\n * both `ComponentClass` and `FunctionComponent`.\n *\n * This type substitutes `React.ComponentType` only keeping the function signature, it omits `propTypes`, `displayName` and other properties that are not\n * required for the inference.\n */\nexport type ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P>;\n\n/**\n * @internal\n *\n * On types/react 18 there are two types being delivered,\n * they rely on the typescript version to decide which will be consumed {@link https://github.com/DefinitelyTyped/DefinitelyTyped/blob/b59dc3ac1e2770fbd6cdbb90ba52abe04c168196/types/react/package.json#L10}\n *\n * If TS is higher than 5.0 then the `FunctionComponent` will be returning ReactNode (which we don't support)\n * If TS is below or equal to 5.0 then the `FunctionComponent` will be returning ReactElement | null (which we support)\n *\n * Since it's not possible to have a single type that works for both cases\n * (as ReactNode is more specific, and this will break while evaluating functions),\n * we need to create our own `FunctionComponent` type\n * that will work for both cases.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface FunctionComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n displayName?: string;\n}\n\nexport type FC<P> = FunctionComponent<P>;\n\nexport interface ExoticComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n $$typeof: symbol;\n}\n\nexport interface NamedExoticComponent<P> extends ExoticComponent<P> {\n displayName?: string;\n}\n\n/**\n * @internal\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface ComponentClass<P = {}, S = React.ComponentState> extends React.StaticLifecycle<P, S> {\n new (props: P): React.Component<P, S>;\n}\n\n/**\n * @internal\n *\n * on types/react 18 ReactNode becomes a more strict type, which is not compatible with our current implementation. to avoid any issues we are creating our own ReactNode type which allows anything.\n *\n * This type should only be used for inference purposes, and should never be exposed.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ReactNode = any;\n\n/**\n * Removes the 'ref' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutRef<P> = 'ref' extends keyof P ? DistributiveOmit<P, 'ref'> : P;\n\n/**\n * Removes the 'children' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutChildren<P> = 'children' extends keyof P ? DistributiveOmit<P, 'children'> : P;\n\n/**\n * @internal\n *\n * This type is used to determine if the current version of React is 18+ or not.\n *\n * It checks if the `React.ReactNode` has `{}` it its type.\n * If it is, then it means that the current version of React is lower than 18.\n * If it is not, then it means that the current version of React is 18 or higher.\n * This is useful for ensuring compatibility with different versions of React.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport type ReactVersionDependent<Modern, Legacy> = {} extends React.ReactNode ? Legacy : Modern;\n\n/**\n * Our own alias for `JSX.Element` type that is compatible with both React 17 and React 18+.\n * Use this type when annotating JSX markup in all our code in order to avoid issues between different React versions.\n *\n * Example usage:\n *\n * BAD:\n * ```tsx\n * const renderFoo = (state: FooState) = <div {...props}>Hello World</div>;\n * // infers\n * // R17: declare const renderFoo: (state: FooState) => JSX.Element;\n * // R18+: declare const renderFoo: (state: FooState) => React.JSX.Element;\n * ```\n *\n * GOOD:\n * ```tsx\n * import type { JSXElement } from '@fluentui/react-utilities';\n * const renderFoo = (state: FooState): JSXElement = <div {...props}>Hello World</div>;\n * ```\n */\nexport type JSXElement = React.ReactElement<\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any,\n any\n /* eslint-enable @typescript-eslint/no-explicit-any */\n>;\n\n/**\n * Type representing all valid JSX intrinsic element names (e.g., 'div', 'button', 'input').\n * It's derived from `React.ElementType` by excluding all custom component types (`React.ComponentType`), ensuring it only includes standard HTML and SVG elements.\n *\n * Use this type when you need to restrict a type to only valid intrinsic element names.\n *\n * @example\n * ```tsx\n * import * as React from 'react';\n * import type { JSXIntrinsicElementKeys } from '@fluentui/react-utilities';\n *\n * const createElement = (tag: JSXIntrinsicElementKeys) => React.createElement(tag, {});\n *\n * createElement('div'); // Valid\n * createElement('span'); // Valid\n * createElement('unknown'); // Error: Argument of type '\"unknown\"' is not assignable to parameter of type 'JSXIntrinsicElementKeys'.\n * ```\n *\n * This type helps ensure that only valid intrinsic elements are used in scenarios where custom components are not allowed.\n */\nexport type JSXIntrinsicElementKeys = Exclude<React.ElementType, React.ComponentType>;\n\n/**\n * Our own alias for `JSX.IntrinsicElements` type that is compatible with both React 17 and React 18+.\n * Use this type to get the intrinsic elements from React types in order to avoid issues between different React versions.\n */\nexport type JSXIntrinsicElement<Element extends JSXIntrinsicElementKeys> = React.ComponentProps<Element>;\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { JSXIntrinsicElementKeysCompat, JSXIntrinsicElementKeysLatest } from './generated-types';\n\n/**\n * Helper type that works similar to Omit,\n * but when modifying an union type it will distribute the omission to all the union members.\n *\n * See [distributive conditional types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types) for more information\n */\n// Traditional Omit is basically equivalent to => Pick<T, Exclude<keyof T, K>>\n//\n// let's say we have Omit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Pick<{ a: string } | { b: string }, Exclude<keyof ({ a: string } | { b: string }), 'a'>>\n// The expected result would be {} | { b: string }, the omission of 'a' from all the union members,\n// but keyof ({ a: string } | { b: string }) is never as they don't share common keys\n// so Exclude<never, 'a'> is never,\n// and Pick<{ a: string } | { b: string }, never> is {}.\n//\n// With DistributiveOmit on the other hand it becomes like this:\n// DistributiveOmit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Omit<{ a: string }, 'a'> | Omit<{ b: string }, 'a'>\n// Since every single Omit clause in this case is being applied to a single union member there's no conflicts on keyof evaluation and in the second clause Omit<{ b: string }, 'a'> becomes { b: string },\n// so the result is {} | { b: string }, as expected.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type DistributiveOmit<T, K extends keyof any> = T extends unknown ? Omit<T, K> : T;\n\n/**\n * @public\n *\n * Helper type that works similar to Pick,\n * but when modifying an union type it will distribute the picking to all the union members.\n *\n * See {@link https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types} for more information\n */\nexport type DistributivePick<T, K> = T extends unknown ? Pick<T, K & keyof T> : never;\n\n/**\n * Converts a union type (`A | B | C`) to an intersection type (`A & B & C`)\n */\nexport type UnionToIntersection<U> = (U extends unknown ? (x: U) => U : never) extends (x: infer I) => U ? I : never;\n\n/**\n * @internal\n * If type T includes `null`, remove it and add `undefined` instead.\n */\nexport type ReplaceNullWithUndefined<T> = T extends null ? Exclude<T, null> | undefined : T;\n\n/**\n * @internal\n * With react 18, our `children` type starts leaking everywhere and that causes conflicts on component declaration, specially in the `propTypes` property of\n * both `ComponentClass` and `FunctionComponent`.\n *\n * This type substitutes `React.ComponentType` only keeping the function signature, it omits `propTypes`, `displayName` and other properties that are not\n * required for the inference.\n */\nexport type ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P>;\n\n/**\n * @internal\n *\n * On types/react 18 there are two types being delivered,\n * they rely on the typescript version to decide which will be consumed {@link https://github.com/DefinitelyTyped/DefinitelyTyped/blob/b59dc3ac1e2770fbd6cdbb90ba52abe04c168196/types/react/package.json#L10}\n *\n * If TS is higher than 5.0 then the `FunctionComponent` will be returning ReactNode (which we don't support)\n * If TS is below or equal to 5.0 then the `FunctionComponent` will be returning ReactElement | null (which we support)\n *\n * Since it's not possible to have a single type that works for both cases\n * (as ReactNode is more specific, and this will break while evaluating functions),\n * we need to create our own `FunctionComponent` type\n * that will work for both cases.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface FunctionComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n displayName?: string;\n}\n\nexport type FC<P> = FunctionComponent<P>;\n\nexport interface ExoticComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n $$typeof: symbol;\n}\n\nexport interface NamedExoticComponent<P> extends ExoticComponent<P> {\n displayName?: string;\n}\n\n/**\n * @internal\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface ComponentClass<P = {}, S = React.ComponentState> extends React.StaticLifecycle<P, S> {\n new (props: P): React.Component<P, S>;\n}\n\n/**\n * @internal\n *\n * on types/react 18 ReactNode becomes a more strict type, which is not compatible with our current implementation. to avoid any issues we are creating our own ReactNode type which allows anything.\n *\n * This type should only be used for inference purposes, and should never be exposed.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ReactNode = any;\n\n/**\n * Removes the 'ref' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutRef<P> = 'ref' extends keyof P ? DistributiveOmit<P, 'ref'> : P;\n\n/**\n * Removes the 'children' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutChildren<P> = 'children' extends keyof P ? DistributiveOmit<P, 'children'> : P;\n\n/**\n * @internal\n *\n * This type is used to determine if the current version of React is 18+ or not.\n *\n * It checks if the `React.ReactNode` has `{}` it its type.\n * If it is, then it means that the current version of React is lower than 18.\n * If it is not, then it means that the current version of React is 18 or higher.\n * This is useful for ensuring compatibility with different versions of React.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport type ReactVersionDependent<Modern, Legacy> = {} extends React.ReactNode ? Legacy : Modern;\n\n/**\n * Our own alias for `JSX.Element` type that is compatible with both React 17 and React 18+.\n * Use this type when annotating JSX markup in all our code in order to avoid issues between different React versions.\n *\n * Example usage:\n *\n * BAD:\n * ```tsx\n * const renderFoo = (state: FooState) = <div {...props}>Hello World</div>;\n * // infers\n * // R17: declare const renderFoo: (state: FooState) => JSX.Element;\n * // R18+: declare const renderFoo: (state: FooState) => React.JSX.Element;\n * ```\n *\n * GOOD:\n * ```tsx\n * import type { JSXElement } from '@fluentui/react-utilities';\n * const renderFoo = (state: FooState): JSXElement = <div {...props}>Hello World</div>;\n * ```\n */\nexport type JSXElement = React.ReactElement<\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any,\n any\n /* eslint-enable @typescript-eslint/no-explicit-any */\n>;\n\n/**\n * Union of all intrinsic element keys in React.\n * Based on the React version, it will either be the latest set of intrinsic elements or the legacy set.\n */\nexport type JSXIntrinsicElementKeys = ReactVersionDependent<\n JSXIntrinsicElementKeysLatest,\n JSXIntrinsicElementKeysCompat\n>;\n\n/**\n * Our own alias for `JSX.IntrinsicElements` type that is compatible with both React 17 and React 18+.\n * Use this type to get the intrinsic elements from React types in order to avoid issues between different React versions.\n */\nexport type JSXIntrinsicElement<Element extends JSXIntrinsicElementKeys> = React.ComponentProps<Element>;\n"],"names":[],"mappings":";;;;;iEAAuB"}
1
+ {"version":3,"sources":["../src/utils/types.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Helper type that works similar to Omit,\n * but when modifying an union type it will distribute the omission to all the union members.\n *\n * See [distributive conditional types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types) for more information\n */\n// Traditional Omit is basically equivalent to => Pick<T, Exclude<keyof T, K>>\n//\n// let's say we have Omit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Pick<{ a: string } | { b: string }, Exclude<keyof ({ a: string } | { b: string }), 'a'>>\n// The expected result would be {} | { b: string }, the omission of 'a' from all the union members,\n// but keyof ({ a: string } | { b: string }) is never as they don't share common keys\n// so Exclude<never, 'a'> is never,\n// and Pick<{ a: string } | { b: string }, never> is {}.\n//\n// With DistributiveOmit on the other hand it becomes like this:\n// DistributiveOmit<{ a: string } | { b: string }, 'a'>\n// equivalent to: Omit<{ a: string }, 'a'> | Omit<{ b: string }, 'a'>\n// Since every single Omit clause in this case is being applied to a single union member there's no conflicts on keyof evaluation and in the second clause Omit<{ b: string }, 'a'> becomes { b: string },\n// so the result is {} | { b: string }, as expected.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type DistributiveOmit<T, K extends keyof any> = T extends unknown ? Omit<T, K> : T;\n\n/**\n * @public\n *\n * Helper type that works similar to Pick,\n * but when modifying an union type it will distribute the picking to all the union members.\n *\n * See {@link https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types} for more information\n */\nexport type DistributivePick<T, K> = T extends unknown ? Pick<T, K & keyof T> : never;\n\n/**\n * Converts a union type (`A | B | C`) to an intersection type (`A & B & C`)\n */\nexport type UnionToIntersection<U> = (U extends unknown ? (x: U) => U : never) extends (x: infer I) => U ? I : never;\n\n/**\n * @internal\n * If type T includes `null`, remove it and add `undefined` instead.\n */\nexport type ReplaceNullWithUndefined<T> = T extends null ? Exclude<T, null> | undefined : T;\n\n/**\n * @internal\n * With react 18, our `children` type starts leaking everywhere and that causes conflicts on component declaration, specially in the `propTypes` property of\n * both `ComponentClass` and `FunctionComponent`.\n *\n * This type substitutes `React.ComponentType` only keeping the function signature, it omits `propTypes`, `displayName` and other properties that are not\n * required for the inference.\n */\nexport type ComponentType<P = {}> = ComponentClass<P> | FunctionComponent<P>;\n\n/**\n * @internal\n *\n * On types/react 18 there are two types being delivered,\n * they rely on the typescript version to decide which will be consumed {@link https://github.com/DefinitelyTyped/DefinitelyTyped/blob/b59dc3ac1e2770fbd6cdbb90ba52abe04c168196/types/react/package.json#L10}\n *\n * If TS is higher than 5.0 then the `FunctionComponent` will be returning ReactNode (which we don't support)\n * If TS is below or equal to 5.0 then the `FunctionComponent` will be returning ReactElement | null (which we support)\n *\n * Since it's not possible to have a single type that works for both cases\n * (as ReactNode is more specific, and this will break while evaluating functions),\n * we need to create our own `FunctionComponent` type\n * that will work for both cases.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface FunctionComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n displayName?: string;\n}\n\nexport type FC<P> = FunctionComponent<P>;\n\nexport interface ExoticComponent<P> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (props: P): any;\n $$typeof: symbol;\n}\n\nexport interface NamedExoticComponent<P> extends ExoticComponent<P> {\n displayName?: string;\n}\n\n/**\n * @internal\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport interface ComponentClass<P = {}, S = React.ComponentState> extends React.StaticLifecycle<P, S> {\n new (props: P): React.Component<P, S>;\n}\n\n/**\n * @internal\n *\n * on types/react 18 ReactNode becomes a more strict type, which is not compatible with our current implementation. to avoid any issues we are creating our own ReactNode type which allows anything.\n *\n * This type should only be used for inference purposes, and should never be exposed.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ReactNode = any;\n\n/**\n * Removes the 'ref' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutRef<P> = 'ref' extends keyof P ? DistributiveOmit<P, 'ref'> : P;\n\n/**\n * Removes the 'children' prop from the given Props type, leaving unions intact (such as the discriminated union created by\n * IntrinsicSlotProps). This allows IntrinsicSlotProps to be used with React.forwardRef.\n */\nexport type PropsWithoutChildren<P> = 'children' extends keyof P ? DistributiveOmit<P, 'children'> : P;\n\n/**\n * @internal\n *\n * This type is used to determine if the current version of React is 18+ or not.\n *\n * It checks if the `React.ReactNode` has `{}` it its type.\n * If it is, then it means that the current version of React is lower than 18.\n * If it is not, then it means that the current version of React is 18 or higher.\n * This is useful for ensuring compatibility with different versions of React.\n *\n * **THIS TYPE IS INTERNAL AND SHOULD NEVER BE EXPOSED**\n */\nexport type ReactVersionDependent<Modern, Legacy> = {} extends React.ReactNode ? Legacy : Modern;\n\n/**\n * Our own alias for `JSX.Element` type that is compatible with both React 17 and React 18+.\n * Use this type when annotating JSX markup in all our code in order to avoid issues between different React versions.\n *\n * Example usage:\n *\n * BAD:\n * ```tsx\n * const renderFoo = (state: FooState) = <div {...props}>Hello World</div>;\n * // infers\n * // R17: declare const renderFoo: (state: FooState) => JSX.Element;\n * // R18+: declare const renderFoo: (state: FooState) => React.JSX.Element;\n * ```\n *\n * GOOD:\n * ```tsx\n * import type { JSXElement } from '@fluentui/react-utilities';\n * const renderFoo = (state: FooState): JSXElement = <div {...props}>Hello World</div>;\n * ```\n */\nexport type JSXElement = React.ReactElement<\n /* eslint-disable @typescript-eslint/no-explicit-any */\n any,\n any\n /* eslint-enable @typescript-eslint/no-explicit-any */\n>;\n\n/**\n * Type representing all valid JSX intrinsic element names (e.g., 'div', 'button', 'input').\n * It's derived from `React.ElementType` by excluding all custom component types (`React.ComponentType`), ensuring it only includes standard HTML and SVG elements.\n *\n * Use this type when you need to restrict a type to only valid intrinsic element names.\n *\n * @example\n * ```tsx\n * import * as React from 'react';\n * import type { JSXIntrinsicElementKeys } from '@fluentui/react-utilities';\n *\n * const createElement = (tag: JSXIntrinsicElementKeys) => React.createElement(tag, {});\n *\n * createElement('div'); // Valid\n * createElement('span'); // Valid\n * createElement('unknown'); // Error: Argument of type '\"unknown\"' is not assignable to parameter of type 'JSXIntrinsicElementKeys'.\n * ```\n *\n * This type helps ensure that only valid intrinsic elements are used in scenarios where custom components are not allowed.\n */\nexport type JSXIntrinsicElementKeys = Exclude<React.ElementType, React.ComponentType>;\n\n/**\n * Our own alias for `JSX.IntrinsicElements` type that is compatible with both React 17 and React 18+.\n * Use this type to get the intrinsic elements from React types in order to avoid issues between different React versions.\n */\nexport type JSXIntrinsicElement<Element extends JSXIntrinsicElementKeys> = React.ComponentProps<Element>;\n"],"names":[],"mappings":";;;;;iEAAuB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-utilities",
3
- "version": "9.25.0",
3
+ "version": "9.25.1",
4
4
  "description": "A set of general React-specific utilities.",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -1,11 +0,0 @@
1
- /**
2
- * ============================================
3
- * 💡 DO NOT EDIT THIS FILE.
4
- * - This file is automatically generated and should not be edited manually.
5
- * - To regenerate run `yarn nx run react-utilities:build`.
6
- * ============================================
7
- */ /**
8
- * Unwrapped type for 'keyof JSX.IntrinsicElement'. (Backwards compatible with older versions of '\@types/react')
9
- */ /**
10
- * Unwrapped type for 'keyof JSX.IntrinsicElement'
11
- */ export { };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/generated-types.ts"],"sourcesContent":["/**\n * ============================================\n * 💡 DO NOT EDIT THIS FILE.\n * - This file is automatically generated and should not be edited manually.\n * - To regenerate run `yarn nx run react-utilities:build`.\n * ============================================\n */\n\n/**\n * Unwrapped type for 'keyof JSX.IntrinsicElement'. (Backwards compatible with older versions of '\\@types/react')\n */\nexport type JSXIntrinsicElementKeysCompat =\n | 'a'\n | 'abbr'\n | 'address'\n | 'animate'\n | 'animateMotion'\n | 'animateTransform'\n | 'area'\n | 'article'\n | 'aside'\n | 'audio'\n | 'b'\n | 'base'\n | 'bdi'\n | 'bdo'\n | 'big'\n | 'blockquote'\n | 'body'\n | 'br'\n | 'button'\n | 'canvas'\n | 'caption'\n | 'circle'\n | 'cite'\n | 'clipPath'\n | 'code'\n | 'col'\n | 'colgroup'\n | 'data'\n | 'datalist'\n | 'dd'\n | 'defs'\n | 'del'\n | 'desc'\n | 'details'\n | 'dfn'\n | 'dialog'\n | 'div'\n | 'dl'\n | 'dt'\n | 'ellipse'\n | 'em'\n | 'embed'\n | 'feBlend'\n | 'feColorMatrix'\n | 'feComponentTransfer'\n | 'feComposite'\n | 'feConvolveMatrix'\n | 'feDiffuseLighting'\n | 'feDisplacementMap'\n | 'feDistantLight'\n | 'feDropShadow'\n | 'feFlood'\n | 'feFuncA'\n | 'feFuncB'\n | 'feFuncG'\n | 'feFuncR'\n | 'feGaussianBlur'\n | 'feImage'\n | 'feMerge'\n | 'feMergeNode'\n | 'feMorphology'\n | 'feOffset'\n | 'fePointLight'\n | 'feSpecularLighting'\n | 'feSpotLight'\n | 'feTile'\n | 'feTurbulence'\n | 'fieldset'\n | 'figcaption'\n | 'figure'\n | 'filter'\n | 'footer'\n | 'foreignObject'\n | 'form'\n | 'g'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'head'\n | 'header'\n | 'hgroup'\n | 'hr'\n | 'html'\n | 'i'\n | 'iframe'\n | 'image'\n | 'img'\n | 'input'\n | 'ins'\n | 'kbd'\n | 'keygen'\n | 'label'\n | 'legend'\n | 'li'\n | 'line'\n | 'linearGradient'\n | 'link'\n | 'main'\n | 'map'\n | 'mark'\n | 'marker'\n | 'mask'\n | 'menu'\n | 'menuitem'\n | 'meta'\n | 'metadata'\n | 'meter'\n | 'mpath'\n | 'nav'\n | 'noindex'\n | 'noscript'\n | 'object'\n | 'ol'\n | 'optgroup'\n | 'option'\n | 'output'\n | 'p'\n | 'param'\n | 'path'\n | 'pattern'\n | 'picture'\n | 'polygon'\n | 'polyline'\n | 'pre'\n | 'progress'\n | 'q'\n | 'radialGradient'\n | 'rect'\n | 'rp'\n | 'rt'\n | 'ruby'\n | 's'\n | 'samp'\n | 'script'\n | 'section'\n | 'select'\n | 'slot'\n | 'small'\n | 'source'\n | 'span'\n | 'stop'\n | 'strong'\n | 'style'\n | 'sub'\n | 'summary'\n | 'sup'\n | 'svg'\n | 'switch'\n | 'symbol'\n | 'table'\n | 'tbody'\n | 'td'\n | 'template'\n | 'text'\n | 'textPath'\n | 'textarea'\n | 'tfoot'\n | 'th'\n | 'thead'\n | 'time'\n | 'title'\n | 'tr'\n | 'track'\n | 'tspan'\n | 'u'\n | 'ul'\n | 'use'\n | 'var'\n | 'video'\n | 'view'\n | 'wbr'\n | 'webview';\n/**\n * Unwrapped type for 'keyof JSX.IntrinsicElement'\n */\nexport type JSXIntrinsicElementKeysLatest = 'set' | 'center' | 'search' | JSXIntrinsicElementKeysCompat;\n"],"names":[],"mappings":"AAAA;;;;;;CAMC,GAED;;CAEC,GAiLD;;CAEC,GACD,WAAwG"}
@@ -1,12 +0,0 @@
1
- /**
2
- * ============================================
3
- * 💡 DO NOT EDIT THIS FILE.
4
- * - This file is automatically generated and should not be edited manually.
5
- * - To regenerate run `yarn nx run react-utilities:build`.
6
- * ============================================
7
- */ /**
8
- * Unwrapped type for 'keyof JSX.IntrinsicElement'. (Backwards compatible with older versions of '\@types/react')
9
- */ "use strict";
10
- Object.defineProperty(exports, "__esModule", {
11
- value: true
12
- });
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/generated-types.ts"],"sourcesContent":["/**\n * ============================================\n * 💡 DO NOT EDIT THIS FILE.\n * - This file is automatically generated and should not be edited manually.\n * - To regenerate run `yarn nx run react-utilities:build`.\n * ============================================\n */\n\n/**\n * Unwrapped type for 'keyof JSX.IntrinsicElement'. (Backwards compatible with older versions of '\\@types/react')\n */\nexport type JSXIntrinsicElementKeysCompat =\n | 'a'\n | 'abbr'\n | 'address'\n | 'animate'\n | 'animateMotion'\n | 'animateTransform'\n | 'area'\n | 'article'\n | 'aside'\n | 'audio'\n | 'b'\n | 'base'\n | 'bdi'\n | 'bdo'\n | 'big'\n | 'blockquote'\n | 'body'\n | 'br'\n | 'button'\n | 'canvas'\n | 'caption'\n | 'circle'\n | 'cite'\n | 'clipPath'\n | 'code'\n | 'col'\n | 'colgroup'\n | 'data'\n | 'datalist'\n | 'dd'\n | 'defs'\n | 'del'\n | 'desc'\n | 'details'\n | 'dfn'\n | 'dialog'\n | 'div'\n | 'dl'\n | 'dt'\n | 'ellipse'\n | 'em'\n | 'embed'\n | 'feBlend'\n | 'feColorMatrix'\n | 'feComponentTransfer'\n | 'feComposite'\n | 'feConvolveMatrix'\n | 'feDiffuseLighting'\n | 'feDisplacementMap'\n | 'feDistantLight'\n | 'feDropShadow'\n | 'feFlood'\n | 'feFuncA'\n | 'feFuncB'\n | 'feFuncG'\n | 'feFuncR'\n | 'feGaussianBlur'\n | 'feImage'\n | 'feMerge'\n | 'feMergeNode'\n | 'feMorphology'\n | 'feOffset'\n | 'fePointLight'\n | 'feSpecularLighting'\n | 'feSpotLight'\n | 'feTile'\n | 'feTurbulence'\n | 'fieldset'\n | 'figcaption'\n | 'figure'\n | 'filter'\n | 'footer'\n | 'foreignObject'\n | 'form'\n | 'g'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'head'\n | 'header'\n | 'hgroup'\n | 'hr'\n | 'html'\n | 'i'\n | 'iframe'\n | 'image'\n | 'img'\n | 'input'\n | 'ins'\n | 'kbd'\n | 'keygen'\n | 'label'\n | 'legend'\n | 'li'\n | 'line'\n | 'linearGradient'\n | 'link'\n | 'main'\n | 'map'\n | 'mark'\n | 'marker'\n | 'mask'\n | 'menu'\n | 'menuitem'\n | 'meta'\n | 'metadata'\n | 'meter'\n | 'mpath'\n | 'nav'\n | 'noindex'\n | 'noscript'\n | 'object'\n | 'ol'\n | 'optgroup'\n | 'option'\n | 'output'\n | 'p'\n | 'param'\n | 'path'\n | 'pattern'\n | 'picture'\n | 'polygon'\n | 'polyline'\n | 'pre'\n | 'progress'\n | 'q'\n | 'radialGradient'\n | 'rect'\n | 'rp'\n | 'rt'\n | 'ruby'\n | 's'\n | 'samp'\n | 'script'\n | 'section'\n | 'select'\n | 'slot'\n | 'small'\n | 'source'\n | 'span'\n | 'stop'\n | 'strong'\n | 'style'\n | 'sub'\n | 'summary'\n | 'sup'\n | 'svg'\n | 'switch'\n | 'symbol'\n | 'table'\n | 'tbody'\n | 'td'\n | 'template'\n | 'text'\n | 'textPath'\n | 'textarea'\n | 'tfoot'\n | 'th'\n | 'thead'\n | 'time'\n | 'title'\n | 'tr'\n | 'track'\n | 'tspan'\n | 'u'\n | 'ul'\n | 'use'\n | 'var'\n | 'video'\n | 'view'\n | 'wbr'\n | 'webview';\n/**\n * Unwrapped type for 'keyof JSX.IntrinsicElement'\n */\nexport type JSXIntrinsicElementKeysLatest = 'set' | 'center' | 'search' | JSXIntrinsicElementKeysCompat;\n"],"names":[],"mappings":"AAAA;;;;;;CAMC,GAED;;CAEC"}