@fluentui/react-utilities 9.3.1 → 9.5.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.
package/CHANGELOG.json CHANGED
@@ -2,7 +2,60 @@
2
2
  "name": "@fluentui/react-utilities",
3
3
  "entries": [
4
4
  {
5
- "date": "Wed, 04 Jan 2023 01:36:04 GMT",
5
+ "date": "Thu, 26 Jan 2023 13:27:53 GMT",
6
+ "tag": "@fluentui/react-utilities_v9.5.0",
7
+ "version": "9.5.0",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "author": "olfedias@microsoft.com",
12
+ "package": "@fluentui/react-utilities",
13
+ "commit": "403e1370f1effca7d3db131eda381abf31cf66b1",
14
+ "comment": "feat: add IdPrefixProvider"
15
+ }
16
+ ],
17
+ "patch": [
18
+ {
19
+ "author": "esteban.230@hotmail.com",
20
+ "package": "@fluentui/react-utilities",
21
+ "commit": "4f3871db826e542114d853b57fb2f740787f91e8",
22
+ "comment": "fix: Leverage React.useId when available for our useId hook."
23
+ }
24
+ ]
25
+ }
26
+ },
27
+ {
28
+ "date": "Mon, 16 Jan 2023 08:38:52 GMT",
29
+ "tag": "@fluentui/react-utilities_v9.4.0",
30
+ "version": "9.4.0",
31
+ "comments": {
32
+ "none": [
33
+ {
34
+ "author": "martinhochel@microsoft.com",
35
+ "package": "@fluentui/react-utilities",
36
+ "commit": "64bb45980d68de1219c6b36a7db5363f0a9cff9f",
37
+ "comment": "chore: migrate to packaged scripts"
38
+ }
39
+ ]
40
+ }
41
+ },
42
+ {
43
+ "date": "Mon, 09 Jan 2023 14:35:02 GMT",
44
+ "tag": "@fluentui/react-utilities_v9.4.0",
45
+ "version": "9.4.0",
46
+ "comments": {
47
+ "minor": [
48
+ {
49
+ "author": "lingfangao@hotmail.com",
50
+ "package": "@fluentui/react-utilities",
51
+ "commit": "3c3291c008824d45e18580d51b6eb1526ea3792d",
52
+ "comment": "feat: implement `useScrollbarWidth` utility hook"
53
+ }
54
+ ]
55
+ }
56
+ },
57
+ {
58
+ "date": "Wed, 04 Jan 2023 01:40:43 GMT",
6
59
  "tag": "@fluentui/react-utilities_v9.3.1",
7
60
  "version": "9.3.1",
8
61
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,34 @@
1
1
  # Change Log - @fluentui/react-utilities
2
2
 
3
- This log was last generated on Wed, 04 Jan 2023 01:36:04 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 26 Jan 2023 13:27:53 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.5.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-utilities_v9.5.0)
8
+
9
+ Thu, 26 Jan 2023 13:27:53 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-utilities_v9.4.0..@fluentui/react-utilities_v9.5.0)
11
+
12
+ ### Minor changes
13
+
14
+ - feat: add IdPrefixProvider ([PR #26496](https://github.com/microsoft/fluentui/pull/26496) by olfedias@microsoft.com)
15
+
16
+ ### Patches
17
+
18
+ - fix: Leverage React.useId when available for our useId hook. ([PR #26465](https://github.com/microsoft/fluentui/pull/26465) by esteban.230@hotmail.com)
19
+
20
+ ## [9.4.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-utilities_v9.4.0)
21
+
22
+ Mon, 09 Jan 2023 14:35:02 GMT
23
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-utilities_v9.3.1..@fluentui/react-utilities_v9.4.0)
24
+
25
+ ### Minor changes
26
+
27
+ - feat: implement `useScrollbarWidth` utility hook ([PR #26144](https://github.com/microsoft/fluentui/pull/26144) by lingfangao@hotmail.com)
28
+
7
29
  ## [9.3.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-utilities_v9.3.1)
8
30
 
9
- Wed, 04 Jan 2023 01:36:04 GMT
31
+ Wed, 04 Jan 2023 01:40:43 GMT
10
32
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-utilities_v9.3.0..@fluentui/react-utilities_v9.3.1)
11
33
 
12
34
  ### Patches
package/dist/index.d.ts CHANGED
@@ -172,6 +172,12 @@ export declare function getTriggerChild<TriggerChildProps>(children: TriggerProp
172
172
  ref?: React_2.Ref<any>;
173
173
  }) | null;
174
174
 
175
+ /**
176
+ * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions
177
+ * between different bundles.
178
+ */
179
+ export declare const IdPrefixProvider: React_2.Provider<string | undefined>;
180
+
175
181
  /**
176
182
  * Helper type for {@link Slot}. Modifies `JSX.IntrinsicElements[Type]`:
177
183
  * * Removes legacy string ref.
@@ -575,6 +581,22 @@ export declare const useOnScrollOutside: (options: UseOnClickOrScrollOutsideOpti
575
581
  */
576
582
  export declare const usePrevious: <ValueType = unknown>(value: ValueType) => ValueType | null;
577
583
 
584
+ /**
585
+ * @returns The width in pixels of the scrollbar in the user agent
586
+ */
587
+ export declare function useScrollbarWidth(options: UseScrollbarWidthOptions): number | undefined;
588
+
589
+ declare interface UseScrollbarWidthOptions {
590
+ /**
591
+ * Reference document to measure the scrollbar width
592
+ */
593
+ targetDocument: Document | null | undefined;
594
+ /**
595
+ * Does not use the cache and recalculates the scrollbar width
596
+ */
597
+ force?: boolean;
598
+ }
599
+
578
600
  /**
579
601
  * @internal
580
602
  * Helper to manage a browser timeout.
@@ -8,5 +8,6 @@ export * from './useMergedRefs';
8
8
  export * from './useOnClickOutside';
9
9
  export * from './useOnScrollOutside';
10
10
  export * from './usePrevious';
11
+ export * from './useScrollbarWidth';
11
12
  export * from './useTimeout';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC","sourcesContent":["export * from './useControllableState';\nexport * from './useEventCallback';\nexport * from './useFirstMount';\nexport * from './useForceUpdate';\nexport * from './useId';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMergedRefs';\nexport * from './useOnClickOutside';\nexport * from './useOnScrollOutside';\nexport * from './usePrevious';\nexport * from './useTimeout';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC","sourcesContent":["export * from './useControllableState';\nexport * from './useEventCallback';\nexport * from './useFirstMount';\nexport * from './useForceUpdate';\nexport * from './useId';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMergedRefs';\nexport * from './useOnClickOutside';\nexport * from './useOnScrollOutside';\nexport * from './usePrevious';\nexport * from './useScrollbarWidth';\nexport * from './useTimeout';\n"]}
@@ -1,5 +1,14 @@
1
1
  import * as React from 'react';
2
2
  import { defaultSSRContextValue, useSSRContext } from '../ssr/index';
3
+ const IdPrefixContext = /*#__PURE__*/React.createContext(undefined);
4
+ /**
5
+ * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions
6
+ * between different bundles.
7
+ */
8
+ export const IdPrefixProvider = IdPrefixContext.Provider;
9
+ function useIdPrefix() {
10
+ return React.useContext(IdPrefixContext) || '';
11
+ }
3
12
  /**
4
13
  * Resets generated IDs, should be used only in tests.
5
14
  */
@@ -16,11 +25,21 @@ export function resetIdsForTests() {
16
25
  */
17
26
  export function useId(prefix = 'fui-', providedId) {
18
27
  const contextValue = useSSRContext();
28
+ const idPrefix = useIdPrefix();
29
+ // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to
30
+ // prevent bundlers from complaining with older versions of React.
31
+ const _useId = React['use' + 'Id'];
32
+ if (_useId) {
33
+ return providedId || `${idPrefix}${prefix}${_useId()}`;
34
+ }
35
+ // Hooks appear to be running conditionally, but they will always run in the same order since it's based on
36
+ // the version of React being used. This is safe to ignore.
37
+ // eslint-disable-next-line react-hooks/rules-of-hooks
19
38
  return React.useMemo(() => {
20
39
  if (providedId) {
21
40
  return providedId;
22
41
  }
23
- return `${prefix}${++contextValue.current}`;
24
- }, [prefix, providedId, contextValue]);
42
+ return `${idPrefix}${prefix}${++contextValue.current}`;
43
+ }, [idPrefix, prefix, providedId, contextValue]);
25
44
  }
26
45
  //# sourceMappingURL=useId.js.map
@@ -1 +1 @@
1
- {"version":3,"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,cAAc;AAEpE;;;AAGA,OAAM,SAAUC,gBAAgB;EAC9BF,sBAAsB,CAACG,OAAO,GAAG,CAAC;AACpC;AAEA;;;;;;;;AAQA,OAAM,SAAUC,KAAK,CAACC,SAAiB,MAAM,EAAEC,UAAmB;EAChE,MAAMC,YAAY,GAAGN,aAAa,EAAE;EAEpC,OAAOF,KAAK,CAACS,OAAO,CAAC,MAAK;IACxB,IAAIF,UAAU,EAAE;MACd,OAAOA,UAAU;;IAGnB,OAAO,GAAGD,MAAM,GAAG,EAAEE,YAAY,CAACJ,OAAO,EAAE;EAC7C,CAAC,EAAE,CAACE,MAAM,EAAEC,UAAU,EAAEC,YAAY,CAAC,CAAC;AACxC","names":["React","defaultSSRContextValue","useSSRContext","resetIdsForTests","current","useId","prefix","providedId","contextValue","useMemo"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/useId.ts"],"sourcesContent":["import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\n\n/**\n * Resets generated IDs, should be used only in tests.\n */\nexport function resetIdsForTests(): void {\n defaultSSRContextValue.current = 0;\n}\n\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix: string = 'fui-', providedId?: string): string {\n const contextValue = useSSRContext();\n\n return React.useMemo(() => {\n if (providedId) {\n return providedId;\n }\n\n return `${prefix}${++contextValue.current}`;\n }, [prefix, providedId, contextValue]);\n}\n"]}
1
+ {"version":3,"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,cAAc;AAEpE,MAAMC,eAAe,gBAAGH,KAAK,CAACI,aAAa,CAAqBC,SAAS,CAAC;AAE1E;;;;AAIA,OAAO,MAAMC,gBAAgB,GAAGH,eAAe,CAACI,QAAQ;AAExD,SAASC,WAAW;EAClB,OAAOR,KAAK,CAACS,UAAU,CAACN,eAAe,CAAC,IAAI,EAAE;AAChD;AAEA;;;AAGA,OAAM,SAAUO,gBAAgB;EAC9BT,sBAAsB,CAACU,OAAO,GAAG,CAAC;AACpC;AAEA;;;;;;;;AAQA,OAAM,SAAUC,KAAK,CAACC,SAAiB,MAAM,EAAEC,UAAmB;EAChE,MAAMC,YAAY,GAAGb,aAAa,EAAE;EACpC,MAAMc,QAAQ,GAAGR,WAAW,EAAE;EAE9B;EACA;EACA,MAAMS,MAAM,GAA8BjB,KAAe,CAAC,KAAK,GAAG,IAAI,CAAC;EAEvE,IAAIiB,MAAM,EAAE;IACV,OAAOH,UAAU,IAAI,GAAGE,QAAQ,GAAGH,MAAM,GAAGI,MAAM,EAAE,EAAE;;EAGxD;EACA;EACA;EACA,OAAOjB,KAAK,CAACkB,OAAO,CAAC,MAAK;IACxB,IAAIJ,UAAU,EAAE;MACd,OAAOA,UAAU;;IAGnB,OAAO,GAAGE,QAAQ,GAAGH,MAAM,GAAG,EAAEE,YAAY,CAACJ,OAAO,EAAE;EACxD,CAAC,EAAE,CAACK,QAAQ,EAAEH,MAAM,EAAEC,UAAU,EAAEC,YAAY,CAAC,CAAC;AAClD","names":["React","defaultSSRContextValue","useSSRContext","IdPrefixContext","createContext","undefined","IdPrefixProvider","Provider","useIdPrefix","useContext","resetIdsForTests","current","useId","prefix","providedId","contextValue","idPrefix","_useId","useMemo"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/useId.ts"],"sourcesContent":["import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\n\nconst IdPrefixContext = React.createContext<string | undefined>(undefined);\n\n/**\n * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions\n * between different bundles.\n */\nexport const IdPrefixProvider = IdPrefixContext.Provider;\n\nfunction useIdPrefix(): string {\n return React.useContext(IdPrefixContext) || '';\n}\n\n/**\n * Resets generated IDs, should be used only in tests.\n */\nexport function resetIdsForTests(): void {\n defaultSSRContextValue.current = 0;\n}\n\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix: string = 'fui-', providedId?: string): string {\n const contextValue = useSSRContext();\n const idPrefix = useIdPrefix();\n\n // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to\n // prevent bundlers from complaining with older versions of React.\n const _useId: () => string | undefined = (React as never)['use' + 'Id'];\n\n if (_useId) {\n return providedId || `${idPrefix}${prefix}${_useId()}`;\n }\n\n // Hooks appear to be running conditionally, but they will always run in the same order since it's based on\n // the version of React being used. This is safe to ignore.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return React.useMemo(() => {\n if (providedId) {\n return providedId;\n }\n\n return `${idPrefix}${prefix}${++contextValue.current}`;\n }, [idPrefix, prefix, providedId, contextValue]);\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ const cache = /*#__PURE__*/new WeakMap();
3
+ /**
4
+ * @returns The width in pixels of the scrollbar in the user agent
5
+ */
6
+ export function useScrollbarWidth(options) {
7
+ const {
8
+ targetDocument,
9
+ force
10
+ } = options;
11
+ return React.useMemo(() => {
12
+ if (!targetDocument) {
13
+ return 0;
14
+ }
15
+ if (!force && cache.has(targetDocument)) {
16
+ return cache.get(targetDocument);
17
+ }
18
+ const outer = targetDocument.createElement('div');
19
+ outer.style.visibility = 'hidden';
20
+ outer.style.overflow = 'scroll';
21
+ const inner = targetDocument.createElement('div');
22
+ outer.appendChild(inner);
23
+ targetDocument.body.appendChild(outer);
24
+ const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
25
+ outer.remove();
26
+ cache.set(targetDocument, scrollbarWidth);
27
+ return scrollbarWidth;
28
+ }, [targetDocument, force]);
29
+ }
30
+ //# sourceMappingURL=useScrollbarWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,KAAK,gBAAG,IAAIC,OAAO,EAAoB;AAc7C;;;AAGA,OAAM,SAAUC,iBAAiB,CAACC,OAAiC;EACjE,MAAM;IAAEC,cAAc;IAAEC;EAAK,CAAE,GAAGF,OAAO;EACzC,OAAOJ,KAAK,CAACO,OAAO,CAAC,MAAK;IACxB,IAAI,CAACF,cAAc,EAAE;MACnB,OAAO,CAAC;;IAGV,IAAI,CAACC,KAAK,IAAIL,KAAK,CAACO,GAAG,CAACH,cAAc,CAAC,EAAE;MACvC,OAAOJ,KAAK,CAACQ,GAAG,CAACJ,cAAc,CAAC;;IAGlC,MAAMK,KAAK,GAAGL,cAAc,CAACM,aAAa,CAAC,KAAK,CAAC;IACjDD,KAAK,CAACE,KAAK,CAACC,UAAU,GAAG,QAAQ;IACjCH,KAAK,CAACE,KAAK,CAACE,QAAQ,GAAG,QAAQ;IAE/B,MAAMC,KAAK,GAAGV,cAAc,CAACM,aAAa,CAAC,KAAK,CAAC;IACjDD,KAAK,CAACM,WAAW,CAACD,KAAK,CAAC;IAExBV,cAAc,CAACY,IAAI,CAACD,WAAW,CAACN,KAAK,CAAC;IACtC,MAAMQ,cAAc,GAAGR,KAAK,CAACS,WAAW,GAAGJ,KAAK,CAACI,WAAW;IAC5DT,KAAK,CAACU,MAAM,EAAE;IACdnB,KAAK,CAACoB,GAAG,CAAChB,cAAc,EAAEa,cAAc,CAAC;IACzC,OAAOA,cAAc;EACvB,CAAC,EAAE,CAACb,cAAc,EAAEC,KAAK,CAAC,CAAC;AAC7B","names":["React","cache","WeakMap","useScrollbarWidth","options","targetDocument","force","useMemo","has","get","outer","createElement","style","visibility","overflow","inner","appendChild","body","scrollbarWidth","offsetWidth","remove","set"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/useScrollbarWidth.ts"],"sourcesContent":["import * as React from 'react';\n\nconst cache = new WeakMap<Document, number>();\n\ninterface UseScrollbarWidthOptions {\n /**\n * Reference document to measure the scrollbar width\n */\n targetDocument: Document | null | undefined;\n\n /**\n * Does not use the cache and recalculates the scrollbar width\n */\n force?: boolean;\n}\n\n/**\n * @returns The width in pixels of the scrollbar in the user agent\n */\nexport function useScrollbarWidth(options: UseScrollbarWidthOptions) {\n const { targetDocument, force } = options;\n return React.useMemo(() => {\n if (!targetDocument) {\n return 0;\n }\n\n if (!force && cache.has(targetDocument)) {\n return cache.get(targetDocument);\n }\n\n const outer = targetDocument.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n\n const inner = targetDocument.createElement('div');\n outer.appendChild(inner);\n\n targetDocument.body.appendChild(outer);\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.remove();\n cache.set(targetDocument, scrollbarWidth);\n return scrollbarWidth;\n }, [targetDocument, force]);\n}\n"]}
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { getSlots, resolveShorthand, isResolvedShorthand } from './compose/index';
2
- export { resetIdsForTests, useControllableState, useEventCallback, useFirstMount, useForceUpdate, useId, useIsomorphicLayoutEffect, useMergedRefs, useOnClickOutside, useOnScrollOutside, usePrevious, useTimeout } from './hooks/index';
2
+ export { IdPrefixProvider, resetIdsForTests, useControllableState, useEventCallback, useFirstMount, useForceUpdate, useId, useIsomorphicLayoutEffect, useMergedRefs, useOnClickOutside, useOnScrollOutside, usePrevious, useScrollbarWidth, useTimeout } from './hooks/index';
3
3
  export { canUseDOM, useIsSSR, SSRProvider } from './ssr/index';
4
4
  export { clamp, getNativeElementProps, getPartitionedNativeProps, getRTLSafeKey, mergeCallbacks, isHTMLElement, isInteractiveHTMLElement } from './utils/index';
5
5
  export { applyTriggerPropsToChildren, getTriggerChild, isFluentTrigger } from './trigger/index';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"mappings":"AAAA,SAASA,QAAQ,EAAEC,gBAAgB,EAAEC,mBAAmB,QAAQ,iBAAiB;AAgBjF,SACEC,gBAAgB,EAChBC,oBAAoB,EACpBC,gBAAgB,EAChBC,aAAa,EACbC,cAAc,EACdC,KAAK,EACLC,yBAAyB,EACzBC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,QACL,eAAe;AAGtB,SAASC,SAAS,EAAEC,QAAQ,EAAEC,WAAW,QAAQ,aAAa;AAE9D,SACEC,KAAK,EACLC,qBAAqB,EACrBC,yBAAyB,EACzBC,aAAa,EACbC,cAAc,EACdC,aAAa,EACbC,wBAAwB,QACnB,eAAe;AAEtB,SAASC,2BAA2B,EAAEC,eAAe,EAAEC,eAAe,QAAQ,iBAAiB","names":["getSlots","resolveShorthand","isResolvedShorthand","resetIdsForTests","useControllableState","useEventCallback","useFirstMount","useForceUpdate","useId","useIsomorphicLayoutEffect","useMergedRefs","useOnClickOutside","useOnScrollOutside","usePrevious","useTimeout","canUseDOM","useIsSSR","SSRProvider","clamp","getNativeElementProps","getPartitionedNativeProps","getRTLSafeKey","mergeCallbacks","isHTMLElement","isInteractiveHTMLElement","applyTriggerPropsToChildren","getTriggerChild","isFluentTrigger"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/index.ts"],"sourcesContent":["export { getSlots, resolveShorthand, isResolvedShorthand } from './compose/index';\nexport type {\n ExtractSlotProps,\n ComponentProps,\n ComponentState,\n ForwardRefComponent,\n ResolveShorthandFunction,\n ResolveShorthandOptions,\n Slot,\n Slots,\n SlotClassNames,\n SlotPropsRecord,\n SlotRenderFunction,\n SlotShorthandValue,\n} from './compose/index';\n\nexport {\n resetIdsForTests,\n useControllableState,\n useEventCallback,\n useFirstMount,\n useForceUpdate,\n useId,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n usePrevious,\n useTimeout,\n} from './hooks/index';\nexport type { RefObjectFunction, UseControllableStateOptions, UseOnClickOrScrollOutsideOptions } from './hooks/index';\n\nexport { canUseDOM, useIsSSR, SSRProvider } from './ssr/index';\n\nexport {\n clamp,\n getNativeElementProps,\n getPartitionedNativeProps,\n getRTLSafeKey,\n mergeCallbacks,\n isHTMLElement,\n isInteractiveHTMLElement,\n} from './utils/index';\n\nexport { applyTriggerPropsToChildren, getTriggerChild, isFluentTrigger } from './trigger/index';\n\nexport type { FluentTriggerComponent, TriggerProps } from './trigger/index';\n"]}
1
+ {"version":3,"mappings":"AAAA,SAASA,QAAQ,EAAEC,gBAAgB,EAAEC,mBAAmB,QAAQ,iBAAiB;AAgBjF,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,oBAAoB,EACpBC,gBAAgB,EAChBC,aAAa,EACbC,cAAc,EACdC,KAAK,EACLC,yBAAyB,EACzBC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAClBC,WAAW,EACXC,iBAAiB,EACjBC,UAAU,QACL,eAAe;AAGtB,SAASC,SAAS,EAAEC,QAAQ,EAAEC,WAAW,QAAQ,aAAa;AAE9D,SACEC,KAAK,EACLC,qBAAqB,EACrBC,yBAAyB,EACzBC,aAAa,EACbC,cAAc,EACdC,aAAa,EACbC,wBAAwB,QACnB,eAAe;AAEtB,SAASC,2BAA2B,EAAEC,eAAe,EAAEC,eAAe,QAAQ,iBAAiB","names":["getSlots","resolveShorthand","isResolvedShorthand","IdPrefixProvider","resetIdsForTests","useControllableState","useEventCallback","useFirstMount","useForceUpdate","useId","useIsomorphicLayoutEffect","useMergedRefs","useOnClickOutside","useOnScrollOutside","usePrevious","useScrollbarWidth","useTimeout","canUseDOM","useIsSSR","SSRProvider","clamp","getNativeElementProps","getPartitionedNativeProps","getRTLSafeKey","mergeCallbacks","isHTMLElement","isInteractiveHTMLElement","applyTriggerPropsToChildren","getTriggerChild","isFluentTrigger"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/index.ts"],"sourcesContent":["export { getSlots, resolveShorthand, isResolvedShorthand } from './compose/index';\nexport type {\n ExtractSlotProps,\n ComponentProps,\n ComponentState,\n ForwardRefComponent,\n ResolveShorthandFunction,\n ResolveShorthandOptions,\n Slot,\n Slots,\n SlotClassNames,\n SlotPropsRecord,\n SlotRenderFunction,\n SlotShorthandValue,\n} from './compose/index';\n\nexport {\n IdPrefixProvider,\n resetIdsForTests,\n useControllableState,\n useEventCallback,\n useFirstMount,\n useForceUpdate,\n useId,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n usePrevious,\n useScrollbarWidth,\n useTimeout,\n} from './hooks/index';\nexport type { RefObjectFunction, UseControllableStateOptions, UseOnClickOrScrollOutsideOptions } from './hooks/index';\n\nexport { canUseDOM, useIsSSR, SSRProvider } from './ssr/index';\n\nexport {\n clamp,\n getNativeElementProps,\n getPartitionedNativeProps,\n getRTLSafeKey,\n mergeCallbacks,\n isHTMLElement,\n isInteractiveHTMLElement,\n} from './utils/index';\n\nexport { applyTriggerPropsToChildren, getTriggerChild, isFluentTrigger } from './trigger/index';\n\nexport type { FluentTriggerComponent, TriggerProps } from './trigger/index';\n"]}
@@ -1,4 +1,4 @@
1
- define(["require", "exports", "tslib", "./useControllableState", "./useEventCallback", "./useFirstMount", "./useForceUpdate", "./useId", "./useIsomorphicLayoutEffect", "./useMergedRefs", "./useOnClickOutside", "./useOnScrollOutside", "./usePrevious", "./useTimeout"], function (require, exports, tslib_1, useControllableState_1, useEventCallback_1, useFirstMount_1, useForceUpdate_1, useId_1, useIsomorphicLayoutEffect_1, useMergedRefs_1, useOnClickOutside_1, useOnScrollOutside_1, usePrevious_1, useTimeout_1) {
1
+ define(["require", "exports", "tslib", "./useControllableState", "./useEventCallback", "./useFirstMount", "./useForceUpdate", "./useId", "./useIsomorphicLayoutEffect", "./useMergedRefs", "./useOnClickOutside", "./useOnScrollOutside", "./usePrevious", "./useScrollbarWidth", "./useTimeout"], function (require, exports, tslib_1, useControllableState_1, useEventCallback_1, useFirstMount_1, useForceUpdate_1, useId_1, useIsomorphicLayoutEffect_1, useMergedRefs_1, useOnClickOutside_1, useOnScrollOutside_1, usePrevious_1, useScrollbarWidth_1, useTimeout_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  tslib_1.__exportStar(useControllableState_1, exports);
@@ -11,6 +11,7 @@ define(["require", "exports", "tslib", "./useControllableState", "./useEventCall
11
11
  tslib_1.__exportStar(useOnClickOutside_1, exports);
12
12
  tslib_1.__exportStar(useOnScrollOutside_1, exports);
13
13
  tslib_1.__exportStar(usePrevious_1, exports);
14
+ tslib_1.__exportStar(useScrollbarWidth_1, exports);
14
15
  tslib_1.__exportStar(useTimeout_1, exports);
15
16
  });
16
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/react-components/react-utilities/src/hooks/index.ts"],"names":[],"mappings":";;;IAAA,sDAAuC;IACvC,kDAAmC;IACnC,+CAAgC;IAChC,gDAAiC;IACjC,uCAAwB;IACxB,2DAA4C;IAC5C,+CAAgC;IAChC,mDAAoC;IACpC,oDAAqC;IACrC,6CAA8B;IAC9B,4CAA6B","sourcesContent":["export * from './useControllableState';\nexport * from './useEventCallback';\nexport * from './useFirstMount';\nexport * from './useForceUpdate';\nexport * from './useId';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMergedRefs';\nexport * from './useOnClickOutside';\nexport * from './useOnScrollOutside';\nexport * from './usePrevious';\nexport * from './useTimeout';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/react-components/react-utilities/src/hooks/index.ts"],"names":[],"mappings":";;;IAAA,sDAAuC;IACvC,kDAAmC;IACnC,+CAAgC;IAChC,gDAAiC;IACjC,uCAAwB;IACxB,2DAA4C;IAC5C,+CAAgC;IAChC,mDAAoC;IACpC,oDAAqC;IACrC,6CAA8B;IAC9B,mDAAoC;IACpC,4CAA6B","sourcesContent":["export * from './useControllableState';\nexport * from './useEventCallback';\nexport * from './useFirstMount';\nexport * from './useForceUpdate';\nexport * from './useId';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMergedRefs';\nexport * from './useOnClickOutside';\nexport * from './useOnScrollOutside';\nexport * from './usePrevious';\nexport * from './useScrollbarWidth';\nexport * from './useTimeout';\n"]}
@@ -1,7 +1,16 @@
1
1
  define(["require", "exports", "react", "../ssr/index"], function (require, exports, React, index_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.useId = exports.resetIdsForTests = void 0;
4
+ exports.useId = exports.resetIdsForTests = exports.IdPrefixProvider = void 0;
5
+ var IdPrefixContext = React.createContext(undefined);
6
+ /**
7
+ * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions
8
+ * between different bundles.
9
+ */
10
+ exports.IdPrefixProvider = IdPrefixContext.Provider;
11
+ function useIdPrefix() {
12
+ return React.useContext(IdPrefixContext) || '';
13
+ }
5
14
  /**
6
15
  * Resets generated IDs, should be used only in tests.
7
16
  */
@@ -20,12 +29,22 @@ define(["require", "exports", "react", "../ssr/index"], function (require, expor
20
29
  function useId(prefix, providedId) {
21
30
  if (prefix === void 0) { prefix = 'fui-'; }
22
31
  var contextValue = index_1.useSSRContext();
32
+ var idPrefix = useIdPrefix();
33
+ // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to
34
+ // prevent bundlers from complaining with older versions of React.
35
+ var _useId = React['use' + 'Id'];
36
+ if (_useId) {
37
+ return providedId || "" + idPrefix + prefix + _useId();
38
+ }
39
+ // Hooks appear to be running conditionally, but they will always run in the same order since it's based on
40
+ // the version of React being used. This is safe to ignore.
41
+ // eslint-disable-next-line react-hooks/rules-of-hooks
23
42
  return React.useMemo(function () {
24
43
  if (providedId) {
25
44
  return providedId;
26
45
  }
27
- return "" + prefix + ++contextValue.current;
28
- }, [prefix, providedId, contextValue]);
46
+ return "" + idPrefix + prefix + ++contextValue.current;
47
+ }, [idPrefix, prefix, providedId, contextValue]);
29
48
  }
30
49
  exports.useId = useId;
31
50
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useId.js","sourceRoot":"","sources":["../../../../../../../../packages/react-components/react-utilities/src/hooks/useId.ts"],"names":[],"mappings":";;;;IAGA;;OAEG;IACH,SAAgB,gBAAgB;QAC9B,8BAAsB,CAAC,OAAO,GAAG,CAAC,CAAC;IACrC,CAAC;IAFD,4CAEC;IAED;;;;;;;OAOG;IACH,SAAgB,KAAK,CAAC,MAAuB,EAAE,UAAmB;QAA5C,uBAAA,EAAA,eAAuB;QAC3C,IAAM,YAAY,GAAG,qBAAa,EAAE,CAAC;QAErC,OAAO,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,UAAU,EAAE;gBACd,OAAO,UAAU,CAAC;aACnB;YAED,OAAO,KAAG,MAAM,GAAG,EAAE,YAAY,CAAC,OAAS,CAAC;QAC9C,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IACzC,CAAC;IAVD,sBAUC","sourcesContent":["import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\n\n/**\n * Resets generated IDs, should be used only in tests.\n */\nexport function resetIdsForTests(): void {\n defaultSSRContextValue.current = 0;\n}\n\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix: string = 'fui-', providedId?: string): string {\n const contextValue = useSSRContext();\n\n return React.useMemo(() => {\n if (providedId) {\n return providedId;\n }\n\n return `${prefix}${++contextValue.current}`;\n }, [prefix, providedId, contextValue]);\n}\n"]}
1
+ {"version":3,"file":"useId.js","sourceRoot":"","sources":["../../../../../../../../packages/react-components/react-utilities/src/hooks/useId.ts"],"names":[],"mappings":";;;;IAGA,IAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAqB,SAAS,CAAC,CAAC;IAE3E;;;OAGG;IACU,QAAA,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC;IAEzD,SAAS,WAAW;QAClB,OAAO,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,SAAgB,gBAAgB;QAC9B,8BAAsB,CAAC,OAAO,GAAG,CAAC,CAAC;IACrC,CAAC;IAFD,4CAEC;IAED;;;;;;;OAOG;IACH,SAAgB,KAAK,CAAC,MAAuB,EAAE,UAAmB;QAA5C,uBAAA,EAAA,eAAuB;QAC3C,IAAM,YAAY,GAAG,qBAAa,EAAE,CAAC;QACrC,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAE/B,mHAAmH;QACnH,kEAAkE;QAClE,IAAM,MAAM,GAA8B,KAAe,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAExE,IAAI,MAAM,EAAE;YACV,OAAO,UAAU,IAAI,KAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAI,CAAC;SACxD;QAED,2GAA2G;QAC3G,2DAA2D;QAC3D,sDAAsD;QACtD,OAAO,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,UAAU,EAAE;gBACd,OAAO,UAAU,CAAC;aACnB;YAED,OAAO,KAAG,QAAQ,GAAG,MAAM,GAAG,EAAE,YAAY,CAAC,OAAS,CAAC;QACzD,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IACnD,CAAC;IAtBD,sBAsBC","sourcesContent":["import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\n\nconst IdPrefixContext = React.createContext<string | undefined>(undefined);\n\n/**\n * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions\n * between different bundles.\n */\nexport const IdPrefixProvider = IdPrefixContext.Provider;\n\nfunction useIdPrefix(): string {\n return React.useContext(IdPrefixContext) || '';\n}\n\n/**\n * Resets generated IDs, should be used only in tests.\n */\nexport function resetIdsForTests(): void {\n defaultSSRContextValue.current = 0;\n}\n\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix: string = 'fui-', providedId?: string): string {\n const contextValue = useSSRContext();\n const idPrefix = useIdPrefix();\n\n // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to\n // prevent bundlers from complaining with older versions of React.\n const _useId: () => string | undefined = (React as never)['use' + 'Id'];\n\n if (_useId) {\n return providedId || `${idPrefix}${prefix}${_useId()}`;\n }\n\n // Hooks appear to be running conditionally, but they will always run in the same order since it's based on\n // the version of React being used. This is safe to ignore.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return React.useMemo(() => {\n if (providedId) {\n return providedId;\n }\n\n return `${idPrefix}${prefix}${++contextValue.current}`;\n }, [idPrefix, prefix, providedId, contextValue]);\n}\n"]}
@@ -0,0 +1,32 @@
1
+ define(["require", "exports", "react"], function (require, exports, React) {
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.useScrollbarWidth = void 0;
5
+ var cache = new WeakMap();
6
+ /**
7
+ * @returns The width in pixels of the scrollbar in the user agent
8
+ */
9
+ function useScrollbarWidth(options) {
10
+ var targetDocument = options.targetDocument, force = options.force;
11
+ return React.useMemo(function () {
12
+ if (!targetDocument) {
13
+ return 0;
14
+ }
15
+ if (!force && cache.has(targetDocument)) {
16
+ return cache.get(targetDocument);
17
+ }
18
+ var outer = targetDocument.createElement('div');
19
+ outer.style.visibility = 'hidden';
20
+ outer.style.overflow = 'scroll';
21
+ var inner = targetDocument.createElement('div');
22
+ outer.appendChild(inner);
23
+ targetDocument.body.appendChild(outer);
24
+ var scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
25
+ outer.remove();
26
+ cache.set(targetDocument, scrollbarWidth);
27
+ return scrollbarWidth;
28
+ }, [targetDocument, force]);
29
+ }
30
+ exports.useScrollbarWidth = useScrollbarWidth;
31
+ });
32
+ //# sourceMappingURL=useScrollbarWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollbarWidth.js","sourceRoot":"","sources":["../../../../../../../../packages/react-components/react-utilities/src/hooks/useScrollbarWidth.ts"],"names":[],"mappings":";;;;IAEA,IAAM,KAAK,GAAG,IAAI,OAAO,EAAoB,CAAC;IAc9C;;OAEG;IACH,SAAgB,iBAAiB,CAAC,OAAiC;QACzD,IAAA,cAAc,GAAY,OAAO,eAAnB,EAAE,KAAK,GAAK,OAAO,MAAZ,CAAa;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,CAAC,cAAc,EAAE;gBACnB,OAAO,CAAC,CAAC;aACV;YAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;gBACvC,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;aAClC;YAED,IAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClD,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YAClC,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEhC,IAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEzB,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvC,IAAM,cAAc,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YAC7D,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC1C,OAAO,cAAc,CAAC;QACxB,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9B,CAAC;IAxBD,8CAwBC","sourcesContent":["import * as React from 'react';\n\nconst cache = new WeakMap<Document, number>();\n\ninterface UseScrollbarWidthOptions {\n /**\n * Reference document to measure the scrollbar width\n */\n targetDocument: Document | null | undefined;\n\n /**\n * Does not use the cache and recalculates the scrollbar width\n */\n force?: boolean;\n}\n\n/**\n * @returns The width in pixels of the scrollbar in the user agent\n */\nexport function useScrollbarWidth(options: UseScrollbarWidthOptions) {\n const { targetDocument, force } = options;\n return React.useMemo(() => {\n if (!targetDocument) {\n return 0;\n }\n\n if (!force && cache.has(targetDocument)) {\n return cache.get(targetDocument);\n }\n\n const outer = targetDocument.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n\n const inner = targetDocument.createElement('div');\n outer.appendChild(inner);\n\n targetDocument.body.appendChild(outer);\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.remove();\n cache.set(targetDocument, scrollbarWidth);\n return scrollbarWidth;\n }, [targetDocument, force]);\n}\n"]}
package/lib-amd/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  define(["require", "exports", "./compose/index", "./hooks/index", "./ssr/index", "./utils/index", "./trigger/index"], function (require, exports, index_1, index_2, index_3, index_4, index_5) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.isFluentTrigger = exports.getTriggerChild = exports.applyTriggerPropsToChildren = exports.isInteractiveHTMLElement = exports.isHTMLElement = exports.mergeCallbacks = exports.getRTLSafeKey = exports.getPartitionedNativeProps = exports.getNativeElementProps = exports.clamp = exports.SSRProvider = exports.useIsSSR = exports.canUseDOM = exports.useTimeout = exports.usePrevious = exports.useOnScrollOutside = exports.useOnClickOutside = exports.useMergedRefs = exports.useIsomorphicLayoutEffect = exports.useId = exports.useForceUpdate = exports.useFirstMount = exports.useEventCallback = exports.useControllableState = exports.resetIdsForTests = exports.isResolvedShorthand = exports.resolveShorthand = exports.getSlots = void 0;
4
+ exports.isFluentTrigger = exports.getTriggerChild = exports.applyTriggerPropsToChildren = exports.isInteractiveHTMLElement = exports.isHTMLElement = exports.mergeCallbacks = exports.getRTLSafeKey = exports.getPartitionedNativeProps = exports.getNativeElementProps = exports.clamp = exports.SSRProvider = exports.useIsSSR = exports.canUseDOM = exports.useTimeout = exports.useScrollbarWidth = exports.usePrevious = exports.useOnScrollOutside = exports.useOnClickOutside = exports.useMergedRefs = exports.useIsomorphicLayoutEffect = exports.useId = exports.useForceUpdate = exports.useFirstMount = exports.useEventCallback = exports.useControllableState = exports.resetIdsForTests = exports.IdPrefixProvider = exports.isResolvedShorthand = exports.resolveShorthand = exports.getSlots = void 0;
5
5
  Object.defineProperty(exports, "getSlots", { enumerable: true, get: function () { return index_1.getSlots; } });
6
6
  Object.defineProperty(exports, "resolveShorthand", { enumerable: true, get: function () { return index_1.resolveShorthand; } });
7
7
  Object.defineProperty(exports, "isResolvedShorthand", { enumerable: true, get: function () { return index_1.isResolvedShorthand; } });
8
+ Object.defineProperty(exports, "IdPrefixProvider", { enumerable: true, get: function () { return index_2.IdPrefixProvider; } });
8
9
  Object.defineProperty(exports, "resetIdsForTests", { enumerable: true, get: function () { return index_2.resetIdsForTests; } });
9
10
  Object.defineProperty(exports, "useControllableState", { enumerable: true, get: function () { return index_2.useControllableState; } });
10
11
  Object.defineProperty(exports, "useEventCallback", { enumerable: true, get: function () { return index_2.useEventCallback; } });
@@ -16,6 +17,7 @@ define(["require", "exports", "./compose/index", "./hooks/index", "./ssr/index",
16
17
  Object.defineProperty(exports, "useOnClickOutside", { enumerable: true, get: function () { return index_2.useOnClickOutside; } });
17
18
  Object.defineProperty(exports, "useOnScrollOutside", { enumerable: true, get: function () { return index_2.useOnScrollOutside; } });
18
19
  Object.defineProperty(exports, "usePrevious", { enumerable: true, get: function () { return index_2.usePrevious; } });
20
+ Object.defineProperty(exports, "useScrollbarWidth", { enumerable: true, get: function () { return index_2.useScrollbarWidth; } });
19
21
  Object.defineProperty(exports, "useTimeout", { enumerable: true, get: function () { return index_2.useTimeout; } });
20
22
  Object.defineProperty(exports, "canUseDOM", { enumerable: true, get: function () { return index_3.canUseDOM; } });
21
23
  Object.defineProperty(exports, "useIsSSR", { enumerable: true, get: function () { return index_3.useIsSSR; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/react-components/react-utilities/src/index.ts"],"names":[],"mappings":";;;;IAAS,iGAAA,QAAQ,OAAA;IAAE,yGAAA,gBAAgB,OAAA;IAAE,4GAAA,mBAAmB,OAAA;IAiBtD,yGAAA,gBAAgB,OAAA;IAChB,6GAAA,oBAAoB,OAAA;IACpB,yGAAA,gBAAgB,OAAA;IAChB,sGAAA,aAAa,OAAA;IACb,uGAAA,cAAc,OAAA;IACd,8FAAA,KAAK,OAAA;IACL,kHAAA,yBAAyB,OAAA;IACzB,sGAAA,aAAa,OAAA;IACb,0GAAA,iBAAiB,OAAA;IACjB,2GAAA,kBAAkB,OAAA;IAClB,oGAAA,WAAW,OAAA;IACX,mGAAA,UAAU,OAAA;IAIH,kGAAA,SAAS,OAAA;IAAE,iGAAA,QAAQ,OAAA;IAAE,oGAAA,WAAW,OAAA;IAGvC,8FAAA,KAAK,OAAA;IACL,8GAAA,qBAAqB,OAAA;IACrB,kHAAA,yBAAyB,OAAA;IACzB,sGAAA,aAAa,OAAA;IACb,uGAAA,cAAc,OAAA;IACd,sGAAA,aAAa,OAAA;IACb,iHAAA,wBAAwB,OAAA;IAGjB,oHAAA,2BAA2B,OAAA;IAAE,wGAAA,eAAe,OAAA;IAAE,wGAAA,eAAe,OAAA","sourcesContent":["export { getSlots, resolveShorthand, isResolvedShorthand } from './compose/index';\nexport type {\n ExtractSlotProps,\n ComponentProps,\n ComponentState,\n ForwardRefComponent,\n ResolveShorthandFunction,\n ResolveShorthandOptions,\n Slot,\n Slots,\n SlotClassNames,\n SlotPropsRecord,\n SlotRenderFunction,\n SlotShorthandValue,\n} from './compose/index';\n\nexport {\n resetIdsForTests,\n useControllableState,\n useEventCallback,\n useFirstMount,\n useForceUpdate,\n useId,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n usePrevious,\n useTimeout,\n} from './hooks/index';\nexport type { RefObjectFunction, UseControllableStateOptions, UseOnClickOrScrollOutsideOptions } from './hooks/index';\n\nexport { canUseDOM, useIsSSR, SSRProvider } from './ssr/index';\n\nexport {\n clamp,\n getNativeElementProps,\n getPartitionedNativeProps,\n getRTLSafeKey,\n mergeCallbacks,\n isHTMLElement,\n isInteractiveHTMLElement,\n} from './utils/index';\n\nexport { applyTriggerPropsToChildren, getTriggerChild, isFluentTrigger } from './trigger/index';\n\nexport type { FluentTriggerComponent, TriggerProps } from './trigger/index';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/react-components/react-utilities/src/index.ts"],"names":[],"mappings":";;;;IAAS,iGAAA,QAAQ,OAAA;IAAE,yGAAA,gBAAgB,OAAA;IAAE,4GAAA,mBAAmB,OAAA;IAiBtD,yGAAA,gBAAgB,OAAA;IAChB,yGAAA,gBAAgB,OAAA;IAChB,6GAAA,oBAAoB,OAAA;IACpB,yGAAA,gBAAgB,OAAA;IAChB,sGAAA,aAAa,OAAA;IACb,uGAAA,cAAc,OAAA;IACd,8FAAA,KAAK,OAAA;IACL,kHAAA,yBAAyB,OAAA;IACzB,sGAAA,aAAa,OAAA;IACb,0GAAA,iBAAiB,OAAA;IACjB,2GAAA,kBAAkB,OAAA;IAClB,oGAAA,WAAW,OAAA;IACX,0GAAA,iBAAiB,OAAA;IACjB,mGAAA,UAAU,OAAA;IAIH,kGAAA,SAAS,OAAA;IAAE,iGAAA,QAAQ,OAAA;IAAE,oGAAA,WAAW,OAAA;IAGvC,8FAAA,KAAK,OAAA;IACL,8GAAA,qBAAqB,OAAA;IACrB,kHAAA,yBAAyB,OAAA;IACzB,sGAAA,aAAa,OAAA;IACb,uGAAA,cAAc,OAAA;IACd,sGAAA,aAAa,OAAA;IACb,iHAAA,wBAAwB,OAAA;IAGjB,oHAAA,2BAA2B,OAAA;IAAE,wGAAA,eAAe,OAAA;IAAE,wGAAA,eAAe,OAAA","sourcesContent":["export { getSlots, resolveShorthand, isResolvedShorthand } from './compose/index';\nexport type {\n ExtractSlotProps,\n ComponentProps,\n ComponentState,\n ForwardRefComponent,\n ResolveShorthandFunction,\n ResolveShorthandOptions,\n Slot,\n Slots,\n SlotClassNames,\n SlotPropsRecord,\n SlotRenderFunction,\n SlotShorthandValue,\n} from './compose/index';\n\nexport {\n IdPrefixProvider,\n resetIdsForTests,\n useControllableState,\n useEventCallback,\n useFirstMount,\n useForceUpdate,\n useId,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n usePrevious,\n useScrollbarWidth,\n useTimeout,\n} from './hooks/index';\nexport type { RefObjectFunction, UseControllableStateOptions, UseOnClickOrScrollOutsideOptions } from './hooks/index';\n\nexport { canUseDOM, useIsSSR, SSRProvider } from './ssr/index';\n\nexport {\n clamp,\n getNativeElementProps,\n getPartitionedNativeProps,\n getRTLSafeKey,\n mergeCallbacks,\n isHTMLElement,\n isInteractiveHTMLElement,\n} from './utils/index';\n\nexport { applyTriggerPropsToChildren, getTriggerChild, isFluentTrigger } from './trigger/index';\n\nexport type { FluentTriggerComponent, TriggerProps } from './trigger/index';\n"]}
@@ -14,5 +14,6 @@ tslib_1.__exportStar(require("./useMergedRefs"), exports);
14
14
  tslib_1.__exportStar(require("./useOnClickOutside"), exports);
15
15
  tslib_1.__exportStar(require("./useOnScrollOutside"), exports);
16
16
  tslib_1.__exportStar(require("./usePrevious"), exports);
17
+ tslib_1.__exportStar(require("./useScrollbarWidth"), exports);
17
18
  tslib_1.__exportStar(require("./useTimeout"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"mappings":";;;;;;AAAAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/index.ts"],"sourcesContent":["export * from './useControllableState';\nexport * from './useEventCallback';\nexport * from './useFirstMount';\nexport * from './useForceUpdate';\nexport * from './useId';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMergedRefs';\nexport * from './useOnClickOutside';\nexport * from './useOnScrollOutside';\nexport * from './usePrevious';\nexport * from './useTimeout';\n"]}
1
+ {"version":3,"mappings":";;;;;;AAAAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/index.ts"],"sourcesContent":["export * from './useControllableState';\nexport * from './useEventCallback';\nexport * from './useFirstMount';\nexport * from './useForceUpdate';\nexport * from './useId';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMergedRefs';\nexport * from './useOnClickOutside';\nexport * from './useOnScrollOutside';\nexport * from './usePrevious';\nexport * from './useScrollbarWidth';\nexport * from './useTimeout';\n"]}
@@ -3,9 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useId = exports.resetIdsForTests = void 0;
6
+ exports.useId = exports.resetIdsForTests = exports.IdPrefixProvider = void 0;
7
7
  const React = /*#__PURE__*/require("react");
8
8
  const index_1 = /*#__PURE__*/require("../ssr/index");
9
+ const IdPrefixContext = /*#__PURE__*/React.createContext(undefined);
10
+ /**
11
+ * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions
12
+ * between different bundles.
13
+ */
14
+ exports.IdPrefixProvider = IdPrefixContext.Provider;
15
+ function useIdPrefix() {
16
+ return React.useContext(IdPrefixContext) || '';
17
+ }
9
18
  /**
10
19
  * Resets generated IDs, should be used only in tests.
11
20
  */
@@ -23,12 +32,22 @@ exports.resetIdsForTests = resetIdsForTests;
23
32
  */
24
33
  function useId(prefix = 'fui-', providedId) {
25
34
  const contextValue = index_1.useSSRContext();
35
+ const idPrefix = useIdPrefix();
36
+ // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to
37
+ // prevent bundlers from complaining with older versions of React.
38
+ const _useId = React['use' + 'Id'];
39
+ if (_useId) {
40
+ return providedId || `${idPrefix}${prefix}${_useId()}`;
41
+ }
42
+ // Hooks appear to be running conditionally, but they will always run in the same order since it's based on
43
+ // the version of React being used. This is safe to ignore.
44
+ // eslint-disable-next-line react-hooks/rules-of-hooks
26
45
  return React.useMemo(() => {
27
46
  if (providedId) {
28
47
  return providedId;
29
48
  }
30
- return `${prefix}${++contextValue.current}`;
31
- }, [prefix, providedId, contextValue]);
49
+ return `${idPrefix}${prefix}${++contextValue.current}`;
50
+ }, [idPrefix, prefix, providedId, contextValue]);
32
51
  }
33
52
  exports.useId = useId;
34
53
  //# sourceMappingURL=useId.js.map
@@ -1 +1 @@
1
- {"version":3,"mappings":";;;;;;AAAA;AACA;AAEA;;;AAGA,SAAgBA,gBAAgB;EAC9BC,8BAAsB,CAACC,OAAO,GAAG,CAAC;AACpC;AAFAC;AAIA;;;;;;;;AAQA,SAAgBC,KAAK,CAACC,SAAiB,MAAM,EAAEC,UAAmB;EAChE,MAAMC,YAAY,GAAGN,qBAAa,EAAE;EAEpC,OAAOO,KAAK,CAACC,OAAO,CAAC,MAAK;IACxB,IAAIH,UAAU,EAAE;MACd,OAAOA,UAAU;;IAGnB,OAAO,GAAGD,MAAM,GAAG,EAAEE,YAAY,CAACL,OAAO,EAAE;EAC7C,CAAC,EAAE,CAACG,MAAM,EAAEC,UAAU,EAAEC,YAAY,CAAC,CAAC;AACxC;AAVAJ","names":["resetIdsForTests","index_1","current","exports","useId","prefix","providedId","contextValue","React","useMemo"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/useId.ts"],"sourcesContent":["import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\n\n/**\n * Resets generated IDs, should be used only in tests.\n */\nexport function resetIdsForTests(): void {\n defaultSSRContextValue.current = 0;\n}\n\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix: string = 'fui-', providedId?: string): string {\n const contextValue = useSSRContext();\n\n return React.useMemo(() => {\n if (providedId) {\n return providedId;\n }\n\n return `${prefix}${++contextValue.current}`;\n }, [prefix, providedId, contextValue]);\n}\n"]}
1
+ {"version":3,"mappings":";;;;;;AAAA;AACA;AAEA,MAAMA,eAAe,gBAAGC,KAAK,CAACC,aAAa,CAAqBC,SAAS,CAAC;AAE1E;;;;AAIaC,wBAAgB,GAAGJ,eAAe,CAACK,QAAQ;AAExD,SAASC,WAAW;EAClB,OAAOL,KAAK,CAACM,UAAU,CAACP,eAAe,CAAC,IAAI,EAAE;AAChD;AAEA;;;AAGA,SAAgBQ,gBAAgB;EAC9BC,8BAAsB,CAACC,OAAO,GAAG,CAAC;AACpC;AAFAN;AAIA;;;;;;;;AAQA,SAAgBO,KAAK,CAACC,SAAiB,MAAM,EAAEC,UAAmB;EAChE,MAAMC,YAAY,GAAGL,qBAAa,EAAE;EACpC,MAAMM,QAAQ,GAAGT,WAAW,EAAE;EAE9B;EACA;EACA,MAAMU,MAAM,GAA8Bf,KAAe,CAAC,KAAK,GAAG,IAAI,CAAC;EAEvE,IAAIe,MAAM,EAAE;IACV,OAAOH,UAAU,IAAI,GAAGE,QAAQ,GAAGH,MAAM,GAAGI,MAAM,EAAE,EAAE;;EAGxD;EACA;EACA;EACA,OAAOf,KAAK,CAACgB,OAAO,CAAC,MAAK;IACxB,IAAIJ,UAAU,EAAE;MACd,OAAOA,UAAU;;IAGnB,OAAO,GAAGE,QAAQ,GAAGH,MAAM,GAAG,EAAEE,YAAY,CAACJ,OAAO,EAAE;EACxD,CAAC,EAAE,CAACK,QAAQ,EAAEH,MAAM,EAAEC,UAAU,EAAEC,YAAY,CAAC,CAAC;AAClD;AAtBAV","names":["IdPrefixContext","React","createContext","undefined","exports","Provider","useIdPrefix","useContext","resetIdsForTests","index_1","current","useId","prefix","providedId","contextValue","idPrefix","_useId","useMemo"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/useId.ts"],"sourcesContent":["import * as React from 'react';\nimport { defaultSSRContextValue, useSSRContext } from '../ssr/index';\n\nconst IdPrefixContext = React.createContext<string | undefined>(undefined);\n\n/**\n * Allows to define a prefix that will be used for all IDs generated by useId() hook. It's useful to avoid collisions\n * between different bundles.\n */\nexport const IdPrefixProvider = IdPrefixContext.Provider;\n\nfunction useIdPrefix(): string {\n return React.useContext(IdPrefixContext) || '';\n}\n\n/**\n * Resets generated IDs, should be used only in tests.\n */\nexport function resetIdsForTests(): void {\n defaultSSRContextValue.current = 0;\n}\n\n/**\n * Hook to generate a unique ID.\n *\n * @param prefix - Optional prefix for the ID. Defaults to 'fui-'.\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix: string = 'fui-', providedId?: string): string {\n const contextValue = useSSRContext();\n const idPrefix = useIdPrefix();\n\n // Checking if useId is available on React, if it is, we use it to generate the id. String concatenation is used to\n // prevent bundlers from complaining with older versions of React.\n const _useId: () => string | undefined = (React as never)['use' + 'Id'];\n\n if (_useId) {\n return providedId || `${idPrefix}${prefix}${_useId()}`;\n }\n\n // Hooks appear to be running conditionally, but they will always run in the same order since it's based on\n // the version of React being used. This is safe to ignore.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return React.useMemo(() => {\n if (providedId) {\n return providedId;\n }\n\n return `${idPrefix}${prefix}${++contextValue.current}`;\n }, [idPrefix, prefix, providedId, contextValue]);\n}\n"]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useScrollbarWidth = void 0;
7
+ const React = /*#__PURE__*/require("react");
8
+ const cache = /*#__PURE__*/new WeakMap();
9
+ /**
10
+ * @returns The width in pixels of the scrollbar in the user agent
11
+ */
12
+ function useScrollbarWidth(options) {
13
+ const {
14
+ targetDocument,
15
+ force
16
+ } = options;
17
+ return React.useMemo(() => {
18
+ if (!targetDocument) {
19
+ return 0;
20
+ }
21
+ if (!force && cache.has(targetDocument)) {
22
+ return cache.get(targetDocument);
23
+ }
24
+ const outer = targetDocument.createElement('div');
25
+ outer.style.visibility = 'hidden';
26
+ outer.style.overflow = 'scroll';
27
+ const inner = targetDocument.createElement('div');
28
+ outer.appendChild(inner);
29
+ targetDocument.body.appendChild(outer);
30
+ const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
31
+ outer.remove();
32
+ cache.set(targetDocument, scrollbarWidth);
33
+ return scrollbarWidth;
34
+ }, [targetDocument, force]);
35
+ }
36
+ exports.useScrollbarWidth = useScrollbarWidth;
37
+ //# sourceMappingURL=useScrollbarWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":";;;;;;AAAA;AAEA,MAAMA,KAAK,gBAAG,IAAIC,OAAO,EAAoB;AAc7C;;;AAGA,SAAgBC,iBAAiB,CAACC,OAAiC;EACjE,MAAM;IAAEC,cAAc;IAAEC;EAAK,CAAE,GAAGF,OAAO;EACzC,OAAOG,KAAK,CAACC,OAAO,CAAC,MAAK;IACxB,IAAI,CAACH,cAAc,EAAE;MACnB,OAAO,CAAC;;IAGV,IAAI,CAACC,KAAK,IAAIL,KAAK,CAACQ,GAAG,CAACJ,cAAc,CAAC,EAAE;MACvC,OAAOJ,KAAK,CAACS,GAAG,CAACL,cAAc,CAAC;;IAGlC,MAAMM,KAAK,GAAGN,cAAc,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDD,KAAK,CAACE,KAAK,CAACC,UAAU,GAAG,QAAQ;IACjCH,KAAK,CAACE,KAAK,CAACE,QAAQ,GAAG,QAAQ;IAE/B,MAAMC,KAAK,GAAGX,cAAc,CAACO,aAAa,CAAC,KAAK,CAAC;IACjDD,KAAK,CAACM,WAAW,CAACD,KAAK,CAAC;IAExBX,cAAc,CAACa,IAAI,CAACD,WAAW,CAACN,KAAK,CAAC;IACtC,MAAMQ,cAAc,GAAGR,KAAK,CAACS,WAAW,GAAGJ,KAAK,CAACI,WAAW;IAC5DT,KAAK,CAACU,MAAM,EAAE;IACdpB,KAAK,CAACqB,GAAG,CAACjB,cAAc,EAAEc,cAAc,CAAC;IACzC,OAAOA,cAAc;EACvB,CAAC,EAAE,CAACd,cAAc,EAAEC,KAAK,CAAC,CAAC;AAC7B;AAxBAiB","names":["cache","WeakMap","useScrollbarWidth","options","targetDocument","force","React","useMemo","has","get","outer","createElement","style","visibility","overflow","inner","appendChild","body","scrollbarWidth","offsetWidth","remove","set","exports"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/hooks/useScrollbarWidth.ts"],"sourcesContent":["import * as React from 'react';\n\nconst cache = new WeakMap<Document, number>();\n\ninterface UseScrollbarWidthOptions {\n /**\n * Reference document to measure the scrollbar width\n */\n targetDocument: Document | null | undefined;\n\n /**\n * Does not use the cache and recalculates the scrollbar width\n */\n force?: boolean;\n}\n\n/**\n * @returns The width in pixels of the scrollbar in the user agent\n */\nexport function useScrollbarWidth(options: UseScrollbarWidthOptions) {\n const { targetDocument, force } = options;\n return React.useMemo(() => {\n if (!targetDocument) {\n return 0;\n }\n\n if (!force && cache.has(targetDocument)) {\n return cache.get(targetDocument);\n }\n\n const outer = targetDocument.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll';\n\n const inner = targetDocument.createElement('div');\n outer.appendChild(inner);\n\n targetDocument.body.appendChild(outer);\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.remove();\n cache.set(targetDocument, scrollbarWidth);\n return scrollbarWidth;\n }, [targetDocument, force]);\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isFluentTrigger = exports.getTriggerChild = exports.applyTriggerPropsToChildren = exports.isInteractiveHTMLElement = exports.isHTMLElement = exports.mergeCallbacks = exports.getRTLSafeKey = exports.getPartitionedNativeProps = exports.getNativeElementProps = exports.clamp = exports.SSRProvider = exports.useIsSSR = exports.canUseDOM = exports.useTimeout = exports.usePrevious = exports.useOnScrollOutside = exports.useOnClickOutside = exports.useMergedRefs = exports.useIsomorphicLayoutEffect = exports.useId = exports.useForceUpdate = exports.useFirstMount = exports.useEventCallback = exports.useControllableState = exports.resetIdsForTests = exports.isResolvedShorthand = exports.resolveShorthand = exports.getSlots = void 0;
6
+ exports.isFluentTrigger = exports.getTriggerChild = exports.applyTriggerPropsToChildren = exports.isInteractiveHTMLElement = exports.isHTMLElement = exports.mergeCallbacks = exports.getRTLSafeKey = exports.getPartitionedNativeProps = exports.getNativeElementProps = exports.clamp = exports.SSRProvider = exports.useIsSSR = exports.canUseDOM = exports.useTimeout = exports.useScrollbarWidth = exports.usePrevious = exports.useOnScrollOutside = exports.useOnClickOutside = exports.useMergedRefs = exports.useIsomorphicLayoutEffect = exports.useId = exports.useForceUpdate = exports.useFirstMount = exports.useEventCallback = exports.useControllableState = exports.resetIdsForTests = exports.IdPrefixProvider = exports.isResolvedShorthand = exports.resolveShorthand = exports.getSlots = void 0;
7
7
  var index_1 = /*#__PURE__*/require("./compose/index");
8
8
  Object.defineProperty(exports, "getSlots", {
9
9
  enumerable: true,
@@ -24,6 +24,12 @@ Object.defineProperty(exports, "isResolvedShorthand", {
24
24
  }
25
25
  });
26
26
  var index_2 = /*#__PURE__*/require("./hooks/index");
27
+ Object.defineProperty(exports, "IdPrefixProvider", {
28
+ enumerable: true,
29
+ get: function () {
30
+ return index_2.IdPrefixProvider;
31
+ }
32
+ });
27
33
  Object.defineProperty(exports, "resetIdsForTests", {
28
34
  enumerable: true,
29
35
  get: function () {
@@ -90,6 +96,12 @@ Object.defineProperty(exports, "usePrevious", {
90
96
  return index_2.usePrevious;
91
97
  }
92
98
  });
99
+ Object.defineProperty(exports, "useScrollbarWidth", {
100
+ enumerable: true,
101
+ get: function () {
102
+ return index_2.useScrollbarWidth;
103
+ }
104
+ });
93
105
  Object.defineProperty(exports, "useTimeout", {
94
106
  enumerable: true,
95
107
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"mappings":";;;;;;AAAA;AAASA;EAAAC;EAAAC;IAAA,uBAAQ;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,+BAAgB;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,kCAAmB;EAAA;AAAA;AAgBxD;AACEF;EAAAC;EAAAC;IAAA,+BAAgB;EAAA;AAAA;AAChBF;EAAAC;EAAAC;IAAA,mCAAoB;EAAA;AAAA;AACpBF;EAAAC;EAAAC;IAAA,+BAAgB;EAAA;AAAA;AAChBF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,6BAAc;EAAA;AAAA;AACdF;EAAAC;EAAAC;IAAA,oBAAK;EAAA;AAAA;AACLF;EAAAC;EAAAC;IAAA,wCAAyB;EAAA;AAAA;AACzBF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,gCAAiB;EAAA;AAAA;AACjBF;EAAAC;EAAAC;IAAA,iCAAkB;EAAA;AAAA;AAClBF;EAAAC;EAAAC;IAAA,0BAAW;EAAA;AAAA;AACXF;EAAAC;EAAAC;IAAA,yBAAU;EAAA;AAAA;AAIZ;AAASF;EAAAC;EAAAC;IAAA,wBAAS;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,uBAAQ;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,0BAAW;EAAA;AAAA;AAEzC;AACEF;EAAAC;EAAAC;IAAA,oBAAK;EAAA;AAAA;AACLF;EAAAC;EAAAC;IAAA,oCAAqB;EAAA;AAAA;AACrBF;EAAAC;EAAAC;IAAA,wCAAyB;EAAA;AAAA;AACzBF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,6BAAc;EAAA;AAAA;AACdF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,uCAAwB;EAAA;AAAA;AAG1B;AAASF;EAAAC;EAAAC;IAAA,0CAA2B;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,8BAAe;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,8BAAe;EAAA;AAAA","names":["Object","enumerable","get"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/index.ts"],"sourcesContent":["export { getSlots, resolveShorthand, isResolvedShorthand } from './compose/index';\nexport type {\n ExtractSlotProps,\n ComponentProps,\n ComponentState,\n ForwardRefComponent,\n ResolveShorthandFunction,\n ResolveShorthandOptions,\n Slot,\n Slots,\n SlotClassNames,\n SlotPropsRecord,\n SlotRenderFunction,\n SlotShorthandValue,\n} from './compose/index';\n\nexport {\n resetIdsForTests,\n useControllableState,\n useEventCallback,\n useFirstMount,\n useForceUpdate,\n useId,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n usePrevious,\n useTimeout,\n} from './hooks/index';\nexport type { RefObjectFunction, UseControllableStateOptions, UseOnClickOrScrollOutsideOptions } from './hooks/index';\n\nexport { canUseDOM, useIsSSR, SSRProvider } from './ssr/index';\n\nexport {\n clamp,\n getNativeElementProps,\n getPartitionedNativeProps,\n getRTLSafeKey,\n mergeCallbacks,\n isHTMLElement,\n isInteractiveHTMLElement,\n} from './utils/index';\n\nexport { applyTriggerPropsToChildren, getTriggerChild, isFluentTrigger } from './trigger/index';\n\nexport type { FluentTriggerComponent, TriggerProps } from './trigger/index';\n"]}
1
+ {"version":3,"mappings":";;;;;;AAAA;AAASA;EAAAC;EAAAC;IAAA,uBAAQ;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,+BAAgB;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,kCAAmB;EAAA;AAAA;AAgBxD;AACEF;EAAAC;EAAAC;IAAA,+BAAgB;EAAA;AAAA;AAChBF;EAAAC;EAAAC;IAAA,+BAAgB;EAAA;AAAA;AAChBF;EAAAC;EAAAC;IAAA,mCAAoB;EAAA;AAAA;AACpBF;EAAAC;EAAAC;IAAA,+BAAgB;EAAA;AAAA;AAChBF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,6BAAc;EAAA;AAAA;AACdF;EAAAC;EAAAC;IAAA,oBAAK;EAAA;AAAA;AACLF;EAAAC;EAAAC;IAAA,wCAAyB;EAAA;AAAA;AACzBF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,gCAAiB;EAAA;AAAA;AACjBF;EAAAC;EAAAC;IAAA,iCAAkB;EAAA;AAAA;AAClBF;EAAAC;EAAAC;IAAA,0BAAW;EAAA;AAAA;AACXF;EAAAC;EAAAC;IAAA,gCAAiB;EAAA;AAAA;AACjBF;EAAAC;EAAAC;IAAA,yBAAU;EAAA;AAAA;AAIZ;AAASF;EAAAC;EAAAC;IAAA,wBAAS;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,uBAAQ;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,0BAAW;EAAA;AAAA;AAEzC;AACEF;EAAAC;EAAAC;IAAA,oBAAK;EAAA;AAAA;AACLF;EAAAC;EAAAC;IAAA,oCAAqB;EAAA;AAAA;AACrBF;EAAAC;EAAAC;IAAA,wCAAyB;EAAA;AAAA;AACzBF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,6BAAc;EAAA;AAAA;AACdF;EAAAC;EAAAC;IAAA,4BAAa;EAAA;AAAA;AACbF;EAAAC;EAAAC;IAAA,uCAAwB;EAAA;AAAA;AAG1B;AAASF;EAAAC;EAAAC;IAAA,0CAA2B;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,8BAAe;EAAA;AAAA;AAAEF;EAAAC;EAAAC;IAAA,8BAAe;EAAA;AAAA","names":["Object","enumerable","get"],"sourceRoot":"../src/","sources":["packages/react-components/react-utilities/src/index.ts"],"sourcesContent":["export { getSlots, resolveShorthand, isResolvedShorthand } from './compose/index';\nexport type {\n ExtractSlotProps,\n ComponentProps,\n ComponentState,\n ForwardRefComponent,\n ResolveShorthandFunction,\n ResolveShorthandOptions,\n Slot,\n Slots,\n SlotClassNames,\n SlotPropsRecord,\n SlotRenderFunction,\n SlotShorthandValue,\n} from './compose/index';\n\nexport {\n IdPrefixProvider,\n resetIdsForTests,\n useControllableState,\n useEventCallback,\n useFirstMount,\n useForceUpdate,\n useId,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n useOnClickOutside,\n useOnScrollOutside,\n usePrevious,\n useScrollbarWidth,\n useTimeout,\n} from './hooks/index';\nexport type { RefObjectFunction, UseControllableStateOptions, UseOnClickOrScrollOutsideOptions } from './hooks/index';\n\nexport { canUseDOM, useIsSSR, SSRProvider } from './ssr/index';\n\nexport {\n clamp,\n getNativeElementProps,\n getPartitionedNativeProps,\n getRTLSafeKey,\n mergeCallbacks,\n isHTMLElement,\n isInteractiveHTMLElement,\n} from './utils/index';\n\nexport { applyTriggerPropsToChildren, getTriggerChild, isFluentTrigger } from './trigger/index';\n\nexport type { FluentTriggerComponent, TriggerProps } from './trigger/index';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-utilities",
3
- "version": "9.3.1",
3
+ "version": "9.5.0",
4
4
  "description": "A set of general React-specific utilities.",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -24,7 +24,8 @@
24
24
  },
25
25
  "devDependencies": {
26
26
  "@fluentui/eslint-plugin": "*",
27
- "@fluentui/scripts": "*"
27
+ "@fluentui/scripts-api-extractor": "*",
28
+ "@fluentui/scripts-tasks": "*"
28
29
  },
29
30
  "dependencies": {
30
31
  "@fluentui/keyboard-keys": "^9.0.1",