@fluentui-copilot/react-preview 0.5.1 → 0.5.3
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 +43 -1
- package/CHANGELOG.md +22 -2
- package/lib/components/Preview/usePreview.js +9 -1
- package/lib/components/Preview/usePreview.js.map +1 -1
- package/lib/components/PreviewContent/usePreviewContentStyles.styles.js +2 -2
- package/lib/components/PreviewContent/usePreviewContentStyles.styles.js.map +1 -1
- package/lib/components/PreviewSurface/usePreviewSurfaceStyles.styles.js +9 -6
- package/lib/components/PreviewSurface/usePreviewSurfaceStyles.styles.js.map +1 -1
- package/lib-commonjs/components/Preview/usePreview.js +8 -1
- package/lib-commonjs/components/Preview/usePreview.js.map +1 -1
- package/lib-commonjs/components/PreviewContent/usePreviewContentStyles.styles.js +2 -3
- package/lib-commonjs/components/PreviewContent/usePreviewContentStyles.styles.js.map +1 -1
- package/lib-commonjs/components/PreviewSurface/usePreviewSurfaceStyles.styles.js +11 -14
- package/lib-commonjs/components/PreviewSurface/usePreviewSurfaceStyles.styles.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,49 @@
|
|
|
2
2
|
"name": "@fluentui-copilot/react-preview",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Fri, 23 Aug 2024 01:04:50 GMT",
|
|
6
|
+
"tag": "@fluentui-copilot/react-preview_v0.5.3",
|
|
7
|
+
"version": "0.5.3",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "makotom@microsoft.com",
|
|
12
|
+
"package": "@fluentui-copilot/react-preview",
|
|
13
|
+
"commit": "32a2c49c4a177e9348d522b4700644d16c535007",
|
|
14
|
+
"comment": "feat: Setting autoSize to true by default for Preview."
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Wed, 21 Aug 2024 00:26:06 GMT",
|
|
21
|
+
"tag": "@fluentui-copilot/react-preview_v0.5.2",
|
|
22
|
+
"version": "0.5.2",
|
|
23
|
+
"comments": {
|
|
24
|
+
"patch": [
|
|
25
|
+
{
|
|
26
|
+
"author": "Humberto.Morimoto@microsoft.com",
|
|
27
|
+
"package": "@fluentui-copilot/react-preview",
|
|
28
|
+
"commit": "6ce23774f5f2055977299510e8df454d86a1a313",
|
|
29
|
+
"comment": "chore: Removing shorthands' usage now that griffel supports them."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"author": "ololubek@microsoft.com",
|
|
33
|
+
"package": "@fluentui-copilot/react-preview",
|
|
34
|
+
"commit": "0a6327b6b174fc99abed7fa70ed0542e698bcf40",
|
|
35
|
+
"comment": "chore: bump react-components version to 9.54.10."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"author": "Humberto.Morimoto@microsoft.com",
|
|
39
|
+
"package": "@fluentui-copilot/react-preview",
|
|
40
|
+
"commit": "907c63c4da894b41cad4601b30e0df6d9f269056",
|
|
41
|
+
"comment": "chore: Bumping versions of @fluentui/* and @griffel/* packages to latest (corresponding to version 9.54.8 of @fluentui/react-components)."
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"date": "Tue, 23 Jul 2024 00:56:26 GMT",
|
|
6
48
|
"tag": "@fluentui-copilot/react-preview_v0.5.1",
|
|
7
49
|
"version": "0.5.1",
|
|
8
50
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,32 @@
|
|
|
1
1
|
# Change Log - @fluentui-copilot/react-preview
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Fri, 23 Aug 2024 01:04:50 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## [0.5.3](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/react-preview_v0.5.3)
|
|
8
|
+
|
|
9
|
+
Fri, 23 Aug 2024 01:04:50 GMT
|
|
10
|
+
[Compare changes](https://github.com/microsoft/fluentai/compare/@fluentui-copilot/react-preview_v0.5.2..@fluentui-copilot/react-preview_v0.5.3)
|
|
11
|
+
|
|
12
|
+
### Patches
|
|
13
|
+
|
|
14
|
+
- feat: Setting autoSize to true by default for Preview. ([PR #2083](https://github.com/microsoft/fluentai/pull/2083) by makotom@microsoft.com)
|
|
15
|
+
|
|
16
|
+
## [0.5.2](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/react-preview_v0.5.2)
|
|
17
|
+
|
|
18
|
+
Wed, 21 Aug 2024 00:26:06 GMT
|
|
19
|
+
[Compare changes](https://github.com/microsoft/fluentai/compare/@fluentui-copilot/react-preview_v0.5.1..@fluentui-copilot/react-preview_v0.5.2)
|
|
20
|
+
|
|
21
|
+
### Patches
|
|
22
|
+
|
|
23
|
+
- chore: Removing shorthands' usage now that griffel supports them. ([PR #1994](https://github.com/microsoft/fluentai/pull/1994) by Humberto.Morimoto@microsoft.com)
|
|
24
|
+
- chore: bump react-components version to 9.54.10. ([PR #2018](https://github.com/microsoft/fluentai/pull/2018) by ololubek@microsoft.com)
|
|
25
|
+
- chore: Bumping versions of @fluentui/* and @griffel/* packages to latest (corresponding to version 9.54.8 of @fluentui/react-components). ([PR #1993](https://github.com/microsoft/fluentai/pull/1993) by Humberto.Morimoto@microsoft.com)
|
|
26
|
+
|
|
7
27
|
## [0.5.1](https://github.com/microsoft/fluentai/tree/@fluentui-copilot/react-preview_v0.5.1)
|
|
8
28
|
|
|
9
|
-
Tue, 23 Jul 2024 00:
|
|
29
|
+
Tue, 23 Jul 2024 00:56:26 GMT
|
|
10
30
|
[Compare changes](https://github.com/microsoft/fluentai/compare/@fluentui-copilot/react-preview_v0.5.0..@fluentui-copilot/react-preview_v0.5.1)
|
|
11
31
|
|
|
12
32
|
### Patches
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Enter, Escape } from '@fluentui/keyboard-keys';
|
|
3
|
-
import { mergeCallbacks, useFluent, useId, useIsomorphicLayoutEffect, usePopover_unstable } from '@fluentui/react-components';
|
|
3
|
+
import { mergeCallbacks, resolvePositioningShorthand, useFluent, useId, useIsomorphicLayoutEffect, usePopover_unstable } from '@fluentui/react-components';
|
|
4
4
|
import { useTimeout } from '@fluentui/react-utilities';
|
|
5
5
|
import { addOpenedByHoverPreview, closeAllOpenedByHoverPreviews, removeOpenedByHoverPreview } from '../../utils';
|
|
6
6
|
const POPOVER_MOUSE_HIDE_DELAY = 500;
|
|
@@ -24,6 +24,7 @@ export const usePreview_unstable = props => {
|
|
|
24
24
|
const {
|
|
25
25
|
onOpenChange,
|
|
26
26
|
open,
|
|
27
|
+
positioning,
|
|
27
28
|
unstable_disableAutoFocus
|
|
28
29
|
} = props;
|
|
29
30
|
const children = React.Children.toArray(props.children);
|
|
@@ -240,6 +241,13 @@ export const usePreview_unstable = props => {
|
|
|
240
241
|
children: resolvedChildren,
|
|
241
242
|
onOpenChange: onPopoverOpenChange,
|
|
242
243
|
open: open !== null && open !== void 0 ? open : isPopoverOpen,
|
|
244
|
+
positioning: typeof positioning === 'string' ? {
|
|
245
|
+
autoSize: true,
|
|
246
|
+
...resolvePositioningShorthand(positioning)
|
|
247
|
+
} : {
|
|
248
|
+
autoSize: true,
|
|
249
|
+
...positioning
|
|
250
|
+
},
|
|
243
251
|
unstable_disableAutoFocus: unstable_disableAutoFocus !== null && unstable_disableAutoFocus !== void 0 ? unstable_disableAutoFocus : disableAutoFocus
|
|
244
252
|
});
|
|
245
253
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePreview.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Enter, Escape } from '@fluentui/keyboard-keys';\nimport {\n mergeCallbacks,\n useFluent,\n useId,\n useIsomorphicLayoutEffect,\n usePopover_unstable,\n} from '@fluentui/react-components';\nimport { useTimeout } from '@fluentui/react-utilities';\nimport type { OnOpenChangeData, OpenPopoverEvents } from '@fluentui/react-components';\n\nimport { addOpenedByHoverPreview, closeAllOpenedByHoverPreviews, removeOpenedByHoverPreview } from '../../utils';\nimport type { PreviewProps, PreviewState } from './Preview.types';\n\ntype PreviewInternalState = {\n openByClick: boolean;\n openByHoverOverTrigger: boolean;\n openByHoverOverPopover: boolean;\n openByKeyboard: boolean;\n};\n\nconst POPOVER_MOUSE_HIDE_DELAY = 500;\nconst POPOVER_KEYBOARD_HIDE_DELAY = 0;\n\nconst getDelay = (type: string): number => {\n if (type === 'focus' || type === 'blur') {\n return POPOVER_KEYBOARD_HIDE_DELAY;\n }\n\n return POPOVER_MOUSE_HIDE_DELAY;\n};\n\ntype TargetEvent<T> = React.MouseEvent<T> | React.FocusEvent<T>;\n\n/**\n * Create the state required to render Preview.\n *\n * The returned state can be modified with hooks such as usePreviewStyles_unstable,\n * before being passed to renderPreview_unstable.\n *\n * @param props - props from this instance of Preview\n * @param ref - reference to root HTMLElement of Preview\n */\nexport const usePreview_unstable = (props: PreviewProps): PreviewState => {\n const { onOpenChange, open, unstable_disableAutoFocus } = props;\n\n const children = React.Children.toArray(props.children) as React.ReactElement[];\n\n const { targetDocument } = useFluent();\n const [setTimeout, clearTimeout] = useTimeout();\n\n const [disableAutoFocus, setDisableAutoFocus] = React.useState(true);\n\n const { current: previewInternalState } = React.useRef<PreviewInternalState>({\n openByClick: false,\n openByHoverOverTrigger: false,\n openByHoverOverPopover: false,\n openByKeyboard: false,\n });\n const triggerMousedOver = React.useRef(false);\n\n const isOpen = () => {\n return (\n previewInternalState.openByClick ||\n previewInternalState.openByHoverOverTrigger ||\n previewInternalState.openByHoverOverPopover ||\n previewInternalState.openByKeyboard\n );\n };\n\n const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);\n const preventDefaultClose = React.useRef(false);\n\n let popoverTrigger: React.ReactElement | undefined = undefined;\n let popoverSurface: React.ReactElement | undefined = undefined;\n if (children.length === 2) {\n popoverTrigger = children[0];\n popoverSurface = children[1];\n } else if (children.length === 1) {\n popoverSurface = children[0];\n }\n\n const popoverSurfaceId = useId('preview-surface', popoverSurface?.props.id);\n\n const closeCallback = () => {\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n setIsPopoverOpen(isOpen());\n };\n\n React.useEffect(() => {\n return () => {\n // Remove all instances of the current popover from the openedByHoverPreviewManager when the component is unmounted.\n removeOpenedByHoverPreview(popoverSurfaceId);\n };\n }, [popoverSurfaceId]);\n\n if (popoverSurface && popoverTrigger) {\n const handleTriggerTargetEnter = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = true;\n triggerMousedOver.current = true;\n\n // We want to disable auto focus only if the popover is being opened by hovering over the trigger\n if (!previewInternalState.openByClick && !previewInternalState.openByKeyboard && !isPopoverOpen) {\n setDisableAutoFocus(true);\n onOpenChange?.(e, { open: true });\n closeAllOpenedByHoverPreviews(popoverSurfaceId);\n addOpenedByHoverPreview(popoverSurfaceId, closeCallback);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerTargetLeave = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = false;\n triggerMousedOver.current = false;\n\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the trigger\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverPopover &&\n isPopoverOpen\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n const handleTriggerClick = (e: TargetEvent<HTMLSpanElement>): void => {\n // Setting preventDefaultClose so that onPopoverOpenChange does not apply its logic when click is on the trigger as we want to control that behavior.\n preventDefaultClose.current = true;\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via click.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByKeyboard is true, then the popover was already opened via keyboard and we always want to close it.\n previewInternalState.openByClick = previewInternalState.openByKeyboard\n ? false\n : !previewInternalState.openByClick;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n\n // We set triggerMousedOver to false when clicking, since we just interacted with the trigger via click, and not hover.\n if (triggerMousedOver.current) {\n previewInternalState.openByClick = false;\n triggerMousedOver.current = false;\n }\n // If it was not moused over, we want to prevent the default click action from opening a link, so the preview can open first\n else {\n e.preventDefault();\n }\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByClick });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>): void => {\n if (e.key === Enter) {\n clearTimeout();\n\n // Setting default prevented so that Enter key does not trigger a click event or onPopoverOpenChange.\n e.preventDefault();\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via keyboard.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByClick is true, then the popover was already opened via click and we always want to close it.\n previewInternalState.openByKeyboard = previewInternalState.openByClick\n ? false\n : !previewInternalState.openByKeyboard;\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByKeyboard });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n }\n };\n\n const handlePopoverTargetEnter = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = true;\n setIsPopoverOpen(isOpen());\n };\n\n const handlePopoverTargetLeave = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = false;\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the popover\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverTrigger\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n popoverTrigger = React.cloneElement(popoverTrigger, {\n ...popoverTrigger.props,\n children: React.cloneElement(popoverTrigger.props.children as React.ReactElement, {\n ...popoverTrigger.props.children.props,\n onBlur: mergeCallbacks(popoverTrigger.props.children.props.onBlur, handleTriggerTargetLeave),\n onClick: mergeCallbacks(popoverTrigger.props.children.props.onClick, handleTriggerClick),\n onKeyDown: mergeCallbacks(popoverTrigger.props.children.props.onKeyDown, handleTriggerKeyDown),\n onMouseEnter: mergeCallbacks(popoverTrigger.props.children.props.onMouseEnter, handleTriggerTargetEnter),\n onMouseLeave: mergeCallbacks(popoverTrigger.props.children.props.onMouseLeave, handleTriggerTargetLeave),\n }),\n });\n\n popoverSurface = React.cloneElement(popoverSurface, {\n ...popoverSurface.props,\n 'aria-labelledby':\n popoverSurface.props['aria-labelledby'] ?? popoverSurface.props['aria-label'] ? undefined : popoverSurfaceId,\n id: popoverSurfaceId,\n onMouseEnter: mergeCallbacks(popoverSurface.props.onMouseEnter, handlePopoverTargetEnter),\n onMouseLeave: mergeCallbacks(popoverSurface.props.onMouseLeave, handlePopoverTargetLeave),\n onFocus: mergeCallbacks(popoverSurface.props.onFocus, handlePopoverTargetEnter),\n });\n }\n\n // Hitting Escape key should close the popover if it was opened by hover.\n // This is necessary to attach to the document because focus is likely not within the trigger or popover.\n useIsomorphicLayoutEffect(() => {\n if (isPopoverOpen) {\n const onDocumentKeyDown = (e: KeyboardEvent) => {\n const openedByHover = !previewInternalState.openByClick && !previewInternalState.openByKeyboard;\n\n if (openedByHover && e.key === Escape) {\n clearTimeout();\n\n // We set state back to its default if the Escape key has been pressed\n setDisableAutoFocus(true);\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n\n onOpenChange?.(e as unknown as OpenPopoverEvents, { open: false });\n\n e.stopPropagation();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, { capture: true });\n\n return () => {\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n };\n }\n }, [targetDocument, isPopoverOpen]);\n\n const onPopoverOpenChange = (e: OpenPopoverEvents, data: OnOpenChangeData): void => {\n if (!preventDefaultClose.current) {\n // We set all open state to false if preventDefaultClose was not set to true and the popover is closing.\n if (!data.open) {\n clearTimeout();\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n onOpenChange?.(e, data);\n }\n\n preventDefaultClose.current = false;\n };\n\n let resolvedChildren = children as [JSX.Element, JSX.Element] | JSX.Element;\n if (popoverSurface) {\n if (popoverTrigger) {\n resolvedChildren = [popoverTrigger, popoverSurface];\n } else {\n resolvedChildren = popoverSurface;\n }\n }\n\n const popoverState = usePopover_unstable({\n ...props,\n children: resolvedChildren,\n onOpenChange: onPopoverOpenChange,\n open: open ?? isPopoverOpen,\n unstable_disableAutoFocus: unstable_disableAutoFocus ?? disableAutoFocus,\n });\n\n return {\n ...popoverState,\n isPreviewLocked: previewInternalState.openByClick || previewInternalState.openByKeyboard,\n };\n};\n"],"names":["React","Enter","Escape","mergeCallbacks","useFluent","useId","useIsomorphicLayoutEffect","usePopover_unstable","useTimeout","addOpenedByHoverPreview","closeAllOpenedByHoverPreviews","removeOpenedByHoverPreview","POPOVER_MOUSE_HIDE_DELAY","POPOVER_KEYBOARD_HIDE_DELAY","getDelay","type","usePreview_unstable","props","onOpenChange","open","unstable_disableAutoFocus","children","Children","toArray","targetDocument","setTimeout","clearTimeout","disableAutoFocus","setDisableAutoFocus","useState","current","previewInternalState","useRef","openByClick","openByHoverOverTrigger","openByHoverOverPopover","openByKeyboard","triggerMousedOver","isOpen","isPopoverOpen","setIsPopoverOpen","preventDefaultClose","popoverTrigger","undefined","popoverSurface","length","popoverSurfaceId","id","closeCallback","useEffect","handleTriggerTargetEnter","e","handleTriggerTargetLeave","handleTriggerClick","tmpOpenByHoverOverTrigger","preventDefault","handleTriggerKeyDown","key","handlePopoverTargetEnter","handlePopoverTargetLeave","cloneElement","onBlur","onClick","onKeyDown","onMouseEnter","onMouseLeave","onFocus","onDocumentKeyDown","openedByHover","stopPropagation","addEventListener","capture","removeEventListener","onPopoverOpenChange","data","resolvedChildren","popoverState","isPreviewLocked"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["usePreview.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Enter, Escape } from '@fluentui/keyboard-keys';\nimport {\n mergeCallbacks,\n resolvePositioningShorthand,\n useFluent,\n useId,\n useIsomorphicLayoutEffect,\n usePopover_unstable,\n} from '@fluentui/react-components';\nimport { useTimeout } from '@fluentui/react-utilities';\nimport type { OnOpenChangeData, OpenPopoverEvents } from '@fluentui/react-components';\n\nimport { addOpenedByHoverPreview, closeAllOpenedByHoverPreviews, removeOpenedByHoverPreview } from '../../utils';\nimport type { PreviewProps, PreviewState } from './Preview.types';\n\ntype PreviewInternalState = {\n openByClick: boolean;\n openByHoverOverTrigger: boolean;\n openByHoverOverPopover: boolean;\n openByKeyboard: boolean;\n};\n\nconst POPOVER_MOUSE_HIDE_DELAY = 500;\nconst POPOVER_KEYBOARD_HIDE_DELAY = 0;\n\nconst getDelay = (type: string): number => {\n if (type === 'focus' || type === 'blur') {\n return POPOVER_KEYBOARD_HIDE_DELAY;\n }\n\n return POPOVER_MOUSE_HIDE_DELAY;\n};\n\ntype TargetEvent<T> = React.MouseEvent<T> | React.FocusEvent<T>;\n\n/**\n * Create the state required to render Preview.\n *\n * The returned state can be modified with hooks such as usePreviewStyles_unstable,\n * before being passed to renderPreview_unstable.\n *\n * @param props - props from this instance of Preview\n * @param ref - reference to root HTMLElement of Preview\n */\nexport const usePreview_unstable = (props: PreviewProps): PreviewState => {\n const { onOpenChange, open, positioning, unstable_disableAutoFocus } = props;\n\n const children = React.Children.toArray(props.children) as React.ReactElement[];\n\n const { targetDocument } = useFluent();\n const [setTimeout, clearTimeout] = useTimeout();\n\n const [disableAutoFocus, setDisableAutoFocus] = React.useState(true);\n\n const { current: previewInternalState } = React.useRef<PreviewInternalState>({\n openByClick: false,\n openByHoverOverTrigger: false,\n openByHoverOverPopover: false,\n openByKeyboard: false,\n });\n const triggerMousedOver = React.useRef(false);\n\n const isOpen = () => {\n return (\n previewInternalState.openByClick ||\n previewInternalState.openByHoverOverTrigger ||\n previewInternalState.openByHoverOverPopover ||\n previewInternalState.openByKeyboard\n );\n };\n\n const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);\n const preventDefaultClose = React.useRef(false);\n\n let popoverTrigger: React.ReactElement | undefined = undefined;\n let popoverSurface: React.ReactElement | undefined = undefined;\n if (children.length === 2) {\n popoverTrigger = children[0];\n popoverSurface = children[1];\n } else if (children.length === 1) {\n popoverSurface = children[0];\n }\n\n const popoverSurfaceId = useId('preview-surface', popoverSurface?.props.id);\n\n const closeCallback = () => {\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n setIsPopoverOpen(isOpen());\n };\n\n React.useEffect(() => {\n return () => {\n // Remove all instances of the current popover from the openedByHoverPreviewManager when the component is unmounted.\n removeOpenedByHoverPreview(popoverSurfaceId);\n };\n }, [popoverSurfaceId]);\n\n if (popoverSurface && popoverTrigger) {\n const handleTriggerTargetEnter = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = true;\n triggerMousedOver.current = true;\n\n // We want to disable auto focus only if the popover is being opened by hovering over the trigger\n if (!previewInternalState.openByClick && !previewInternalState.openByKeyboard && !isPopoverOpen) {\n setDisableAutoFocus(true);\n onOpenChange?.(e, { open: true });\n closeAllOpenedByHoverPreviews(popoverSurfaceId);\n addOpenedByHoverPreview(popoverSurfaceId, closeCallback);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerTargetLeave = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = false;\n triggerMousedOver.current = false;\n\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the trigger\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverPopover &&\n isPopoverOpen\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n const handleTriggerClick = (e: TargetEvent<HTMLSpanElement>): void => {\n // Setting preventDefaultClose so that onPopoverOpenChange does not apply its logic when click is on the trigger as we want to control that behavior.\n preventDefaultClose.current = true;\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via click.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByKeyboard is true, then the popover was already opened via keyboard and we always want to close it.\n previewInternalState.openByClick = previewInternalState.openByKeyboard\n ? false\n : !previewInternalState.openByClick;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n\n // We set triggerMousedOver to false when clicking, since we just interacted with the trigger via click, and not hover.\n if (triggerMousedOver.current) {\n previewInternalState.openByClick = false;\n triggerMousedOver.current = false;\n }\n // If it was not moused over, we want to prevent the default click action from opening a link, so the preview can open first\n else {\n e.preventDefault();\n }\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByClick });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>): void => {\n if (e.key === Enter) {\n clearTimeout();\n\n // Setting default prevented so that Enter key does not trigger a click event or onPopoverOpenChange.\n e.preventDefault();\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via keyboard.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByClick is true, then the popover was already opened via click and we always want to close it.\n previewInternalState.openByKeyboard = previewInternalState.openByClick\n ? false\n : !previewInternalState.openByKeyboard;\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByKeyboard });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n }\n };\n\n const handlePopoverTargetEnter = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = true;\n setIsPopoverOpen(isOpen());\n };\n\n const handlePopoverTargetLeave = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = false;\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the popover\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverTrigger\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n popoverTrigger = React.cloneElement(popoverTrigger, {\n ...popoverTrigger.props,\n children: React.cloneElement(popoverTrigger.props.children as React.ReactElement, {\n ...popoverTrigger.props.children.props,\n onBlur: mergeCallbacks(popoverTrigger.props.children.props.onBlur, handleTriggerTargetLeave),\n onClick: mergeCallbacks(popoverTrigger.props.children.props.onClick, handleTriggerClick),\n onKeyDown: mergeCallbacks(popoverTrigger.props.children.props.onKeyDown, handleTriggerKeyDown),\n onMouseEnter: mergeCallbacks(popoverTrigger.props.children.props.onMouseEnter, handleTriggerTargetEnter),\n onMouseLeave: mergeCallbacks(popoverTrigger.props.children.props.onMouseLeave, handleTriggerTargetLeave),\n }),\n });\n\n popoverSurface = React.cloneElement(popoverSurface, {\n ...popoverSurface.props,\n 'aria-labelledby':\n popoverSurface.props['aria-labelledby'] ?? popoverSurface.props['aria-label'] ? undefined : popoverSurfaceId,\n id: popoverSurfaceId,\n onMouseEnter: mergeCallbacks(popoverSurface.props.onMouseEnter, handlePopoverTargetEnter),\n onMouseLeave: mergeCallbacks(popoverSurface.props.onMouseLeave, handlePopoverTargetLeave),\n onFocus: mergeCallbacks(popoverSurface.props.onFocus, handlePopoverTargetEnter),\n });\n }\n\n // Hitting Escape key should close the popover if it was opened by hover.\n // This is necessary to attach to the document because focus is likely not within the trigger or popover.\n useIsomorphicLayoutEffect(() => {\n if (isPopoverOpen) {\n const onDocumentKeyDown = (e: KeyboardEvent) => {\n const openedByHover = !previewInternalState.openByClick && !previewInternalState.openByKeyboard;\n\n if (openedByHover && e.key === Escape) {\n clearTimeout();\n\n // We set state back to its default if the Escape key has been pressed\n setDisableAutoFocus(true);\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n\n onOpenChange?.(e as unknown as OpenPopoverEvents, { open: false });\n\n e.stopPropagation();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, { capture: true });\n\n return () => {\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n };\n }\n }, [targetDocument, isPopoverOpen]);\n\n const onPopoverOpenChange = (e: OpenPopoverEvents, data: OnOpenChangeData): void => {\n if (!preventDefaultClose.current) {\n // We set all open state to false if preventDefaultClose was not set to true and the popover is closing.\n if (!data.open) {\n clearTimeout();\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n onOpenChange?.(e, data);\n }\n\n preventDefaultClose.current = false;\n };\n\n let resolvedChildren = children as [JSX.Element, JSX.Element] | JSX.Element;\n if (popoverSurface) {\n if (popoverTrigger) {\n resolvedChildren = [popoverTrigger, popoverSurface];\n } else {\n resolvedChildren = popoverSurface;\n }\n }\n\n const popoverState = usePopover_unstable({\n ...props,\n children: resolvedChildren,\n onOpenChange: onPopoverOpenChange,\n open: open ?? isPopoverOpen,\n positioning:\n typeof positioning === 'string'\n ? { autoSize: true, ...resolvePositioningShorthand(positioning) }\n : { autoSize: true, ...positioning },\n unstable_disableAutoFocus: unstable_disableAutoFocus ?? disableAutoFocus,\n });\n\n return {\n ...popoverState,\n isPreviewLocked: previewInternalState.openByClick || previewInternalState.openByKeyboard,\n };\n};\n"],"names":["React","Enter","Escape","mergeCallbacks","resolvePositioningShorthand","useFluent","useId","useIsomorphicLayoutEffect","usePopover_unstable","useTimeout","addOpenedByHoverPreview","closeAllOpenedByHoverPreviews","removeOpenedByHoverPreview","POPOVER_MOUSE_HIDE_DELAY","POPOVER_KEYBOARD_HIDE_DELAY","getDelay","type","usePreview_unstable","props","onOpenChange","open","positioning","unstable_disableAutoFocus","children","Children","toArray","targetDocument","setTimeout","clearTimeout","disableAutoFocus","setDisableAutoFocus","useState","current","previewInternalState","useRef","openByClick","openByHoverOverTrigger","openByHoverOverPopover","openByKeyboard","triggerMousedOver","isOpen","isPopoverOpen","setIsPopoverOpen","preventDefaultClose","popoverTrigger","undefined","popoverSurface","length","popoverSurfaceId","id","closeCallback","useEffect","handleTriggerTargetEnter","e","handleTriggerTargetLeave","handleTriggerClick","tmpOpenByHoverOverTrigger","preventDefault","handleTriggerKeyDown","key","handlePopoverTargetEnter","handlePopoverTargetLeave","cloneElement","onBlur","onClick","onKeyDown","onMouseEnter","onMouseLeave","onFocus","onDocumentKeyDown","openedByHover","stopPropagation","addEventListener","capture","removeEventListener","onPopoverOpenChange","data","resolvedChildren","popoverState","autoSize","isPreviewLocked"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { __resetStyles, mergeClasses,
|
|
1
|
+
import { __resetStyles, mergeClasses, tokens, typographyStyles } from '@fluentui/react-components';
|
|
2
2
|
export const previewContentClassNames = {
|
|
3
3
|
root: 'fai-PreviewContent'
|
|
4
4
|
};
|
|
5
5
|
/**
|
|
6
6
|
* Styles for the root slot
|
|
7
7
|
*/
|
|
8
|
-
const useRootBaseClassName = __resetStyles("
|
|
8
|
+
const useRootBaseClassName = __resetStyles("r1jbsjc3", null, [".r1jbsjc3{color:var(--colorNeutralForeground3);display:flex;flex-direction:column;padding:var(--spacingVerticalS) var(--spacingHorizontalS);row-gap:var(--spacingVerticalXS);word-break:break-word;font-family:var(--fontFamilyBase);font-size:var(--fontSizeBase200);font-weight:var(--fontWeightRegular);line-height:var(--lineHeightBase200);}"]);
|
|
9
9
|
/**
|
|
10
10
|
* Apply styling to the PreviewContent slots based on the state
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePreviewContentStyles.styles.ts"],"sourcesContent":["import { makeResetStyles, mergeClasses,
|
|
1
|
+
{"version":3,"sources":["usePreviewContentStyles.styles.ts"],"sourcesContent":["import { makeResetStyles, mergeClasses, tokens, typographyStyles } from '@fluentui/react-components';\nimport type { PreviewContentSlots, PreviewContentState } from './PreviewContent.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\n\nexport const previewContentClassNames: SlotClassNames<PreviewContentSlots> = {\n root: 'fai-PreviewContent',\n};\n\n/**\n * Styles for the root slot\n */\nconst useRootBaseClassName = makeResetStyles({\n color: tokens.colorNeutralForeground3,\n display: 'flex',\n flexDirection: 'column',\n padding: `${tokens.spacingVerticalS} ${tokens.spacingHorizontalS}`,\n rowGap: tokens.spacingVerticalXS,\n wordBreak: 'break-word',\n\n ...typographyStyles.caption1,\n});\n\n/**\n * Apply styling to the PreviewContent slots based on the state\n */\nexport const usePreviewContentStyles_unstable = (state: PreviewContentState): PreviewContentState => {\n 'use no memo';\n\n const rootBaseClassName = useRootBaseClassName();\n\n state.root.className = mergeClasses(previewContentClassNames.root, rootBaseClassName, state.root.className);\n\n return state;\n};\n"],"names":["makeResetStyles","mergeClasses","tokens","typographyStyles","previewContentClassNames","root","useRootBaseClassName","color","colorNeutralForeground3","display","flexDirection","padding","spacingVerticalS","spacingHorizontalS","rowGap","spacingVerticalXS","wordBreak","caption1","usePreviewContentStyles_unstable","state","rootBaseClassName","className"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,eAAe,EAAEC,YAAY,EAAEC,MAAM,EAAEC,gBAAgB,QAAQ,6BAA6B;AAIrG,OAAO,MAAMC,2BAAgE;IAC3EC,MAAM;AACR,EAAE;AAEF;;CAEC,GACD,MAAMC,uBAAuBN,gBAAgB;IAC3CO,OAAOL,OAAOM,uBAAuB;IACrCC,SAAS;IACTC,eAAe;IACfC,SAAS,CAAC,EAAET,OAAOU,gBAAgB,CAAC,CAAC,EAAEV,OAAOW,kBAAkB,CAAC,CAAC;IAClEC,QAAQZ,OAAOa,iBAAiB;IAChCC,WAAW;IAEX,GAAGb,iBAAiBc,QAAQ;AAC9B;AAEA;;CAEC,GACD,OAAO,MAAMC,mCAAmC,CAACC;IAC/C;IAEA,MAAMC,oBAAoBd;IAE1Ba,MAAMd,IAAI,CAACgB,SAAS,GAAGpB,aAAaG,yBAAyBC,IAAI,EAAEe,mBAAmBD,MAAMd,IAAI,CAACgB,SAAS;IAE1G,OAAOF;AACT,EAAE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __styles, mergeClasses,
|
|
1
|
+
import { __styles, mergeClasses, tokens, usePopoverSurfaceStyles_unstable } from '@fluentui/react-components';
|
|
2
2
|
export const previewSurfaceClassNames = {
|
|
3
3
|
root: 'fai-PreviewSurface'
|
|
4
4
|
};
|
|
@@ -8,13 +8,16 @@ export const previewSurfaceClassNames = {
|
|
|
8
8
|
const useRootStyles = __styles({
|
|
9
9
|
base: {
|
|
10
10
|
B2u0y6b: "f2rbwfs",
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
Byoj8tv: 0,
|
|
12
|
+
uwmqm3: 0,
|
|
13
|
+
z189sj: 0,
|
|
14
|
+
z8tnut: 0,
|
|
15
|
+
B0ocmuz: "f16d74zd"
|
|
15
16
|
}
|
|
16
17
|
}, {
|
|
17
|
-
d: [".f2rbwfs{max-width:256px;}", ".
|
|
18
|
+
d: [".f2rbwfs{max-width:256px;}", [".f16d74zd{padding:var(--spacingVerticalXS) var(--spacingHorizontalXS);}", {
|
|
19
|
+
p: -1
|
|
20
|
+
}]]
|
|
18
21
|
});
|
|
19
22
|
/**
|
|
20
23
|
* Apply styling to the PreviewSurface slots based on the state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePreviewSurfaceStyles.styles.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["usePreviewSurfaceStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses, tokens, usePopoverSurfaceStyles_unstable } from '@fluentui/react-components';\nimport type { PreviewSurfaceSlots, PreviewSurfaceState } from './PreviewSurface.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\n\nexport const previewSurfaceClassNames: SlotClassNames<PreviewSurfaceSlots> = {\n root: 'fai-PreviewSurface',\n};\n\n/**\n * Styles for the root slot\n */\nconst useRootStyles = makeStyles({\n base: {\n maxWidth: '256px',\n padding: `${tokens.spacingVerticalXS} ${tokens.spacingHorizontalXS}`,\n },\n});\n\n/**\n * Apply styling to the PreviewSurface slots based on the state\n */\nexport const usePreviewSurfaceStyles_unstable = (state: PreviewSurfaceState): PreviewSurfaceState => {\n 'use no memo';\n\n const rootStyles = useRootStyles();\n\n state.root.className = mergeClasses(previewSurfaceClassNames.root, rootStyles.base, state.root.className);\n\n usePopoverSurfaceStyles_unstable(state);\n\n return state;\n};\n"],"names":["makeStyles","mergeClasses","tokens","usePopoverSurfaceStyles_unstable","previewSurfaceClassNames","root","useRootStyles","base","maxWidth","padding","spacingVerticalXS","spacingHorizontalXS","usePreviewSurfaceStyles_unstable","state","rootStyles","className"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,UAAU,EAAEC,YAAY,EAAEC,MAAM,EAAEC,gCAAgC,QAAQ,6BAA6B;AAIhH,OAAO,MAAMC,2BAAgE;IAC3EC,MAAM;AACR,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAgBN,WAAW;IAC/BO,MAAM;QACJC,UAAU;QACVC,SAAS,CAAC,EAAEP,OAAOQ,iBAAiB,CAAC,CAAC,EAAER,OAAOS,mBAAmB,CAAC,CAAC;IACtE;AACF;AAEA;;CAEC,GACD,OAAO,MAAMC,mCAAmC,CAACC;IAC/C;IAEA,MAAMC,aAAaR;IAEnBO,MAAMR,IAAI,CAACU,SAAS,GAAGd,aAAaG,yBAAyBC,IAAI,EAAES,WAAWP,IAAI,EAAEM,MAAMR,IAAI,CAACU,SAAS;IAExGZ,iCAAiCU;IAEjC,OAAOA;AACT,EAAE"}
|
|
@@ -23,7 +23,7 @@ const getDelay = (type)=>{
|
|
|
23
23
|
return POPOVER_MOUSE_HIDE_DELAY;
|
|
24
24
|
};
|
|
25
25
|
const usePreview_unstable = (props)=>{
|
|
26
|
-
const { onOpenChange, open, unstable_disableAutoFocus } = props;
|
|
26
|
+
const { onOpenChange, open, positioning, unstable_disableAutoFocus } = props;
|
|
27
27
|
const children = _react.Children.toArray(props.children);
|
|
28
28
|
const { targetDocument } = (0, _reactcomponents.useFluent)();
|
|
29
29
|
const [setTimeout, clearTimeout] = (0, _reactutilities.useTimeout)();
|
|
@@ -242,6 +242,13 @@ const usePreview_unstable = (props)=>{
|
|
|
242
242
|
children: resolvedChildren,
|
|
243
243
|
onOpenChange: onPopoverOpenChange,
|
|
244
244
|
open: open !== null && open !== void 0 ? open : isPopoverOpen,
|
|
245
|
+
positioning: typeof positioning === 'string' ? {
|
|
246
|
+
autoSize: true,
|
|
247
|
+
...(0, _reactcomponents.resolvePositioningShorthand)(positioning)
|
|
248
|
+
} : {
|
|
249
|
+
autoSize: true,
|
|
250
|
+
...positioning
|
|
251
|
+
},
|
|
245
252
|
unstable_disableAutoFocus: unstable_disableAutoFocus !== null && unstable_disableAutoFocus !== void 0 ? unstable_disableAutoFocus : disableAutoFocus
|
|
246
253
|
});
|
|
247
254
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePreview.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Enter, Escape } from '@fluentui/keyboard-keys';\nimport {\n mergeCallbacks,\n useFluent,\n useId,\n useIsomorphicLayoutEffect,\n usePopover_unstable,\n} from '@fluentui/react-components';\nimport { useTimeout } from '@fluentui/react-utilities';\nimport type { OnOpenChangeData, OpenPopoverEvents } from '@fluentui/react-components';\n\nimport { addOpenedByHoverPreview, closeAllOpenedByHoverPreviews, removeOpenedByHoverPreview } from '../../utils';\nimport type { PreviewProps, PreviewState } from './Preview.types';\n\ntype PreviewInternalState = {\n openByClick: boolean;\n openByHoverOverTrigger: boolean;\n openByHoverOverPopover: boolean;\n openByKeyboard: boolean;\n};\n\nconst POPOVER_MOUSE_HIDE_DELAY = 500;\nconst POPOVER_KEYBOARD_HIDE_DELAY = 0;\n\nconst getDelay = (type: string): number => {\n if (type === 'focus' || type === 'blur') {\n return POPOVER_KEYBOARD_HIDE_DELAY;\n }\n\n return POPOVER_MOUSE_HIDE_DELAY;\n};\n\ntype TargetEvent<T> = React.MouseEvent<T> | React.FocusEvent<T>;\n\n/**\n * Create the state required to render Preview.\n *\n * The returned state can be modified with hooks such as usePreviewStyles_unstable,\n * before being passed to renderPreview_unstable.\n *\n * @param props - props from this instance of Preview\n * @param ref - reference to root HTMLElement of Preview\n */\nexport const usePreview_unstable = (props: PreviewProps): PreviewState => {\n const { onOpenChange, open, unstable_disableAutoFocus } = props;\n\n const children = React.Children.toArray(props.children) as React.ReactElement[];\n\n const { targetDocument } = useFluent();\n const [setTimeout, clearTimeout] = useTimeout();\n\n const [disableAutoFocus, setDisableAutoFocus] = React.useState(true);\n\n const { current: previewInternalState } = React.useRef<PreviewInternalState>({\n openByClick: false,\n openByHoverOverTrigger: false,\n openByHoverOverPopover: false,\n openByKeyboard: false,\n });\n const triggerMousedOver = React.useRef(false);\n\n const isOpen = () => {\n return (\n previewInternalState.openByClick ||\n previewInternalState.openByHoverOverTrigger ||\n previewInternalState.openByHoverOverPopover ||\n previewInternalState.openByKeyboard\n );\n };\n\n const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);\n const preventDefaultClose = React.useRef(false);\n\n let popoverTrigger: React.ReactElement | undefined = undefined;\n let popoverSurface: React.ReactElement | undefined = undefined;\n if (children.length === 2) {\n popoverTrigger = children[0];\n popoverSurface = children[1];\n } else if (children.length === 1) {\n popoverSurface = children[0];\n }\n\n const popoverSurfaceId = useId('preview-surface', popoverSurface?.props.id);\n\n const closeCallback = () => {\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n setIsPopoverOpen(isOpen());\n };\n\n React.useEffect(() => {\n return () => {\n // Remove all instances of the current popover from the openedByHoverPreviewManager when the component is unmounted.\n removeOpenedByHoverPreview(popoverSurfaceId);\n };\n }, [popoverSurfaceId]);\n\n if (popoverSurface && popoverTrigger) {\n const handleTriggerTargetEnter = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = true;\n triggerMousedOver.current = true;\n\n // We want to disable auto focus only if the popover is being opened by hovering over the trigger\n if (!previewInternalState.openByClick && !previewInternalState.openByKeyboard && !isPopoverOpen) {\n setDisableAutoFocus(true);\n onOpenChange?.(e, { open: true });\n closeAllOpenedByHoverPreviews(popoverSurfaceId);\n addOpenedByHoverPreview(popoverSurfaceId, closeCallback);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerTargetLeave = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = false;\n triggerMousedOver.current = false;\n\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the trigger\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverPopover &&\n isPopoverOpen\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n const handleTriggerClick = (e: TargetEvent<HTMLSpanElement>): void => {\n // Setting preventDefaultClose so that onPopoverOpenChange does not apply its logic when click is on the trigger as we want to control that behavior.\n preventDefaultClose.current = true;\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via click.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByKeyboard is true, then the popover was already opened via keyboard and we always want to close it.\n previewInternalState.openByClick = previewInternalState.openByKeyboard\n ? false\n : !previewInternalState.openByClick;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n\n // We set triggerMousedOver to false when clicking, since we just interacted with the trigger via click, and not hover.\n if (triggerMousedOver.current) {\n previewInternalState.openByClick = false;\n triggerMousedOver.current = false;\n }\n // If it was not moused over, we want to prevent the default click action from opening a link, so the preview can open first\n else {\n e.preventDefault();\n }\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByClick });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>): void => {\n if (e.key === Enter) {\n clearTimeout();\n\n // Setting default prevented so that Enter key does not trigger a click event or onPopoverOpenChange.\n e.preventDefault();\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via keyboard.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByClick is true, then the popover was already opened via click and we always want to close it.\n previewInternalState.openByKeyboard = previewInternalState.openByClick\n ? false\n : !previewInternalState.openByKeyboard;\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByKeyboard });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n }\n };\n\n const handlePopoverTargetEnter = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = true;\n setIsPopoverOpen(isOpen());\n };\n\n const handlePopoverTargetLeave = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = false;\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the popover\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverTrigger\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n popoverTrigger = React.cloneElement(popoverTrigger, {\n ...popoverTrigger.props,\n children: React.cloneElement(popoverTrigger.props.children as React.ReactElement, {\n ...popoverTrigger.props.children.props,\n onBlur: mergeCallbacks(popoverTrigger.props.children.props.onBlur, handleTriggerTargetLeave),\n onClick: mergeCallbacks(popoverTrigger.props.children.props.onClick, handleTriggerClick),\n onKeyDown: mergeCallbacks(popoverTrigger.props.children.props.onKeyDown, handleTriggerKeyDown),\n onMouseEnter: mergeCallbacks(popoverTrigger.props.children.props.onMouseEnter, handleTriggerTargetEnter),\n onMouseLeave: mergeCallbacks(popoverTrigger.props.children.props.onMouseLeave, handleTriggerTargetLeave),\n }),\n });\n\n popoverSurface = React.cloneElement(popoverSurface, {\n ...popoverSurface.props,\n 'aria-labelledby':\n popoverSurface.props['aria-labelledby'] ?? popoverSurface.props['aria-label'] ? undefined : popoverSurfaceId,\n id: popoverSurfaceId,\n onMouseEnter: mergeCallbacks(popoverSurface.props.onMouseEnter, handlePopoverTargetEnter),\n onMouseLeave: mergeCallbacks(popoverSurface.props.onMouseLeave, handlePopoverTargetLeave),\n onFocus: mergeCallbacks(popoverSurface.props.onFocus, handlePopoverTargetEnter),\n });\n }\n\n // Hitting Escape key should close the popover if it was opened by hover.\n // This is necessary to attach to the document because focus is likely not within the trigger or popover.\n useIsomorphicLayoutEffect(() => {\n if (isPopoverOpen) {\n const onDocumentKeyDown = (e: KeyboardEvent) => {\n const openedByHover = !previewInternalState.openByClick && !previewInternalState.openByKeyboard;\n\n if (openedByHover && e.key === Escape) {\n clearTimeout();\n\n // We set state back to its default if the Escape key has been pressed\n setDisableAutoFocus(true);\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n\n onOpenChange?.(e as unknown as OpenPopoverEvents, { open: false });\n\n e.stopPropagation();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, { capture: true });\n\n return () => {\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n };\n }\n }, [targetDocument, isPopoverOpen]);\n\n const onPopoverOpenChange = (e: OpenPopoverEvents, data: OnOpenChangeData): void => {\n if (!preventDefaultClose.current) {\n // We set all open state to false if preventDefaultClose was not set to true and the popover is closing.\n if (!data.open) {\n clearTimeout();\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n onOpenChange?.(e, data);\n }\n\n preventDefaultClose.current = false;\n };\n\n let resolvedChildren = children as [JSX.Element, JSX.Element] | JSX.Element;\n if (popoverSurface) {\n if (popoverTrigger) {\n resolvedChildren = [popoverTrigger, popoverSurface];\n } else {\n resolvedChildren = popoverSurface;\n }\n }\n\n const popoverState = usePopover_unstable({\n ...props,\n children: resolvedChildren,\n onOpenChange: onPopoverOpenChange,\n open: open ?? isPopoverOpen,\n unstable_disableAutoFocus: unstable_disableAutoFocus ?? disableAutoFocus,\n });\n\n return {\n ...popoverState,\n isPreviewLocked: previewInternalState.openByClick || previewInternalState.openByKeyboard,\n };\n};\n"],"names":["onOpenChange","POPOVER_MOUSE_HIDE_DELAY","POPOVER_KEYBOARD_HIDE_DELAY","getDelay","type","unstable_disableAutoFocus","targetDocument","open","setDisableAutoFocus","props","openByClick","Children","toArray","children","openByHoverOverTrigger","openByHoverOverPopover","openByKeyboard","setTimeout","clearTimeout","useTimeout","disableAutoFocus","triggerMousedOver","React","useState","previewInternalState","useRef","isPopoverOpen","preventDefaultClose","undefined","popoverSurface","popoverTrigger","setIsPopoverOpen","useId","closeCallback","isOpen","popoverSurfaceId","id","removeOpenedByHoverPreview","useEffect","handleTriggerTargetEnter","e","closeAllOpenedByHoverPreviews","handleTriggerTargetLeave","current","handleTriggerClick","tmpOpenByHoverOverTrigger","preventDefault","Enter","handlePopoverTargetLeave","cloneElement","onClick","onMouseEnter","mergeCallbacks","onMouseLeave","onKeyDown","handleTriggerKeyDown","_popoverSurface_props_arialabelledby","useIsomorphicLayoutEffect","handlePopoverTargetEnter","onDocumentKeyDown","key","Escape","addEventListener","capture","resolvedChildren","popoverState","usePopover_unstable","isPreviewLocked"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["usePreview.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { Enter, Escape } from '@fluentui/keyboard-keys';\nimport {\n mergeCallbacks,\n resolvePositioningShorthand,\n useFluent,\n useId,\n useIsomorphicLayoutEffect,\n usePopover_unstable,\n} from '@fluentui/react-components';\nimport { useTimeout } from '@fluentui/react-utilities';\nimport type { OnOpenChangeData, OpenPopoverEvents } from '@fluentui/react-components';\n\nimport { addOpenedByHoverPreview, closeAllOpenedByHoverPreviews, removeOpenedByHoverPreview } from '../../utils';\nimport type { PreviewProps, PreviewState } from './Preview.types';\n\ntype PreviewInternalState = {\n openByClick: boolean;\n openByHoverOverTrigger: boolean;\n openByHoverOverPopover: boolean;\n openByKeyboard: boolean;\n};\n\nconst POPOVER_MOUSE_HIDE_DELAY = 500;\nconst POPOVER_KEYBOARD_HIDE_DELAY = 0;\n\nconst getDelay = (type: string): number => {\n if (type === 'focus' || type === 'blur') {\n return POPOVER_KEYBOARD_HIDE_DELAY;\n }\n\n return POPOVER_MOUSE_HIDE_DELAY;\n};\n\ntype TargetEvent<T> = React.MouseEvent<T> | React.FocusEvent<T>;\n\n/**\n * Create the state required to render Preview.\n *\n * The returned state can be modified with hooks such as usePreviewStyles_unstable,\n * before being passed to renderPreview_unstable.\n *\n * @param props - props from this instance of Preview\n * @param ref - reference to root HTMLElement of Preview\n */\nexport const usePreview_unstable = (props: PreviewProps): PreviewState => {\n const { onOpenChange, open, positioning, unstable_disableAutoFocus } = props;\n\n const children = React.Children.toArray(props.children) as React.ReactElement[];\n\n const { targetDocument } = useFluent();\n const [setTimeout, clearTimeout] = useTimeout();\n\n const [disableAutoFocus, setDisableAutoFocus] = React.useState(true);\n\n const { current: previewInternalState } = React.useRef<PreviewInternalState>({\n openByClick: false,\n openByHoverOverTrigger: false,\n openByHoverOverPopover: false,\n openByKeyboard: false,\n });\n const triggerMousedOver = React.useRef(false);\n\n const isOpen = () => {\n return (\n previewInternalState.openByClick ||\n previewInternalState.openByHoverOverTrigger ||\n previewInternalState.openByHoverOverPopover ||\n previewInternalState.openByKeyboard\n );\n };\n\n const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);\n const preventDefaultClose = React.useRef(false);\n\n let popoverTrigger: React.ReactElement | undefined = undefined;\n let popoverSurface: React.ReactElement | undefined = undefined;\n if (children.length === 2) {\n popoverTrigger = children[0];\n popoverSurface = children[1];\n } else if (children.length === 1) {\n popoverSurface = children[0];\n }\n\n const popoverSurfaceId = useId('preview-surface', popoverSurface?.props.id);\n\n const closeCallback = () => {\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n setIsPopoverOpen(isOpen());\n };\n\n React.useEffect(() => {\n return () => {\n // Remove all instances of the current popover from the openedByHoverPreviewManager when the component is unmounted.\n removeOpenedByHoverPreview(popoverSurfaceId);\n };\n }, [popoverSurfaceId]);\n\n if (popoverSurface && popoverTrigger) {\n const handleTriggerTargetEnter = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = true;\n triggerMousedOver.current = true;\n\n // We want to disable auto focus only if the popover is being opened by hovering over the trigger\n if (!previewInternalState.openByClick && !previewInternalState.openByKeyboard && !isPopoverOpen) {\n setDisableAutoFocus(true);\n onOpenChange?.(e, { open: true });\n closeAllOpenedByHoverPreviews(popoverSurfaceId);\n addOpenedByHoverPreview(popoverSurfaceId, closeCallback);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerTargetLeave = (e: TargetEvent<HTMLSpanElement>): void => {\n previewInternalState.openByHoverOverTrigger = false;\n triggerMousedOver.current = false;\n\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the trigger\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverPopover &&\n isPopoverOpen\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n const handleTriggerClick = (e: TargetEvent<HTMLSpanElement>): void => {\n // Setting preventDefaultClose so that onPopoverOpenChange does not apply its logic when click is on the trigger as we want to control that behavior.\n preventDefaultClose.current = true;\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via click.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByKeyboard is true, then the popover was already opened via keyboard and we always want to close it.\n previewInternalState.openByClick = previewInternalState.openByKeyboard\n ? false\n : !previewInternalState.openByClick;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n previewInternalState.openByKeyboard = false;\n\n // We set triggerMousedOver to false when clicking, since we just interacted with the trigger via click, and not hover.\n if (triggerMousedOver.current) {\n previewInternalState.openByClick = false;\n triggerMousedOver.current = false;\n }\n // If it was not moused over, we want to prevent the default click action from opening a link, so the preview can open first\n else {\n e.preventDefault();\n }\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByClick });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n };\n\n const handleTriggerKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>): void => {\n if (e.key === Enter) {\n clearTimeout();\n\n // Setting default prevented so that Enter key does not trigger a click event or onPopoverOpenChange.\n e.preventDefault();\n\n // We set disableAutoFocus to false so that interactive elements within popover can be focused when it opens via keyboard.\n setDisableAutoFocus(false);\n\n const tmpOpenByHoverOverTrigger = previewInternalState.openByHoverOverTrigger;\n\n // If openByClick is true, then the popover was already opened via click and we always want to close it.\n previewInternalState.openByKeyboard = previewInternalState.openByClick\n ? false\n : !previewInternalState.openByKeyboard;\n previewInternalState.openByClick = false;\n previewInternalState.openByHoverOverTrigger = false;\n previewInternalState.openByHoverOverPopover = false;\n\n if (!tmpOpenByHoverOverTrigger) {\n onOpenChange?.(e, { open: previewInternalState.openByKeyboard });\n }\n\n if (!isOpen()) {\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n setIsPopoverOpen(isOpen());\n }\n };\n\n const handlePopoverTargetEnter = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = true;\n setIsPopoverOpen(isOpen());\n };\n\n const handlePopoverTargetLeave = (e: TargetEvent<HTMLDivElement>): void => {\n previewInternalState.openByHoverOverPopover = false;\n setTimeout(() => {\n setIsPopoverOpen(isOpen());\n\n // We want to call onOpenChange only if the popover is actually closing when leaving the popover\n if (\n !previewInternalState.openByClick &&\n !previewInternalState.openByKeyboard &&\n !previewInternalState.openByHoverOverTrigger\n ) {\n onOpenChange?.(e, { open: false });\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n }, getDelay(e.type));\n };\n\n popoverTrigger = React.cloneElement(popoverTrigger, {\n ...popoverTrigger.props,\n children: React.cloneElement(popoverTrigger.props.children as React.ReactElement, {\n ...popoverTrigger.props.children.props,\n onBlur: mergeCallbacks(popoverTrigger.props.children.props.onBlur, handleTriggerTargetLeave),\n onClick: mergeCallbacks(popoverTrigger.props.children.props.onClick, handleTriggerClick),\n onKeyDown: mergeCallbacks(popoverTrigger.props.children.props.onKeyDown, handleTriggerKeyDown),\n onMouseEnter: mergeCallbacks(popoverTrigger.props.children.props.onMouseEnter, handleTriggerTargetEnter),\n onMouseLeave: mergeCallbacks(popoverTrigger.props.children.props.onMouseLeave, handleTriggerTargetLeave),\n }),\n });\n\n popoverSurface = React.cloneElement(popoverSurface, {\n ...popoverSurface.props,\n 'aria-labelledby':\n popoverSurface.props['aria-labelledby'] ?? popoverSurface.props['aria-label'] ? undefined : popoverSurfaceId,\n id: popoverSurfaceId,\n onMouseEnter: mergeCallbacks(popoverSurface.props.onMouseEnter, handlePopoverTargetEnter),\n onMouseLeave: mergeCallbacks(popoverSurface.props.onMouseLeave, handlePopoverTargetLeave),\n onFocus: mergeCallbacks(popoverSurface.props.onFocus, handlePopoverTargetEnter),\n });\n }\n\n // Hitting Escape key should close the popover if it was opened by hover.\n // This is necessary to attach to the document because focus is likely not within the trigger or popover.\n useIsomorphicLayoutEffect(() => {\n if (isPopoverOpen) {\n const onDocumentKeyDown = (e: KeyboardEvent) => {\n const openedByHover = !previewInternalState.openByClick && !previewInternalState.openByKeyboard;\n\n if (openedByHover && e.key === Escape) {\n clearTimeout();\n\n // We set state back to its default if the Escape key has been pressed\n setDisableAutoFocus(true);\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n\n onOpenChange?.(e as unknown as OpenPopoverEvents, { open: false });\n\n e.stopPropagation();\n }\n };\n\n targetDocument?.addEventListener('keydown', onDocumentKeyDown, { capture: true });\n\n return () => {\n targetDocument?.removeEventListener('keydown', onDocumentKeyDown, { capture: true });\n };\n }\n }, [targetDocument, isPopoverOpen]);\n\n const onPopoverOpenChange = (e: OpenPopoverEvents, data: OnOpenChangeData): void => {\n if (!preventDefaultClose.current) {\n // We set all open state to false if preventDefaultClose was not set to true and the popover is closing.\n if (!data.open) {\n clearTimeout();\n closeCallback();\n removeOpenedByHoverPreview(popoverSurfaceId);\n }\n\n onOpenChange?.(e, data);\n }\n\n preventDefaultClose.current = false;\n };\n\n let resolvedChildren = children as [JSX.Element, JSX.Element] | JSX.Element;\n if (popoverSurface) {\n if (popoverTrigger) {\n resolvedChildren = [popoverTrigger, popoverSurface];\n } else {\n resolvedChildren = popoverSurface;\n }\n }\n\n const popoverState = usePopover_unstable({\n ...props,\n children: resolvedChildren,\n onOpenChange: onPopoverOpenChange,\n open: open ?? isPopoverOpen,\n positioning:\n typeof positioning === 'string'\n ? { autoSize: true, ...resolvePositioningShorthand(positioning) }\n : { autoSize: true, ...positioning },\n unstable_disableAutoFocus: unstable_disableAutoFocus ?? disableAutoFocus,\n });\n\n return {\n ...popoverState,\n isPreviewLocked: previewInternalState.openByClick || previewInternalState.openByKeyboard,\n };\n};\n"],"names":["onOpenChange","POPOVER_MOUSE_HIDE_DELAY","POPOVER_KEYBOARD_HIDE_DELAY","getDelay","type","positioning","targetDocument","open","disableAutoFocus","unstable_disableAutoFocus","previewInternalState","openByHoverOverTrigger","toArray","props","children","openByHoverOverPopover","openByKeyboard","useFluent","setTimeout","triggerMousedOver","React","useRef","setDisableAutoFocus","useState","current","isPopoverOpen","openByClick","preventDefaultClose","undefined","length","popoverSurface","isOpen","popoverSurfaceId","setIsPopoverOpen","useId","id","removeOpenedByHoverPreview","e","closeAllOpenedByHoverPreviews","addOpenedByHoverPreview","handleTriggerTargetLeave","handleTriggerClick","preventDefault","tmpOpenByHoverOverTrigger","handleTriggerKeyDown","popoverTrigger","cloneElement","mergeCallbacks","onKeyDown","onMouseLeave","onBlur","onClick","onMouseEnter","handlePopoverTargetEnter","_popoverSurface_props_arialabelledby","useIsomorphicLayoutEffect","onDocumentKeyDown","openedByHover","closeCallback","key","Escape","capture","addEventListener","removeEventListener","onPopoverOpenChange","clearTimeout","data","resolvedChildren","autoSize","resolvePositioningShorthand","isPreviewLocked","popoverState"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -22,9 +22,8 @@ const previewContentClassNames = {
|
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* Styles for the root slot
|
|
25
|
-
*/ const useRootBaseClassName = (0, _reactcomponents.__resetStyles)("
|
|
26
|
-
".
|
|
27
|
-
".rbb2gfj{color:var(--colorNeutralForeground3);display:flex;flex-direction:column;padding-top:var(--spacingVerticalS);padding-left:var(--spacingHorizontalS);padding-bottom:var(--spacingVerticalS);padding-right:var(--spacingHorizontalS);row-gap:var(--spacingVerticalXS);word-break:break-word;font-family:var(--fontFamilyBase);font-size:var(--fontSizeBase200);font-weight:var(--fontWeightRegular);line-height:var(--lineHeightBase200);}"
|
|
25
|
+
*/ const useRootBaseClassName = (0, _reactcomponents.__resetStyles)("r1jbsjc3", null, [
|
|
26
|
+
".r1jbsjc3{color:var(--colorNeutralForeground3);display:flex;flex-direction:column;padding:var(--spacingVerticalS) var(--spacingHorizontalS);row-gap:var(--spacingVerticalXS);word-break:break-word;font-family:var(--fontFamilyBase);font-size:var(--fontSizeBase200);font-weight:var(--fontWeightRegular);line-height:var(--lineHeightBase200);}"
|
|
28
27
|
]);
|
|
29
28
|
const usePreviewContentStyles_unstable = (state)=>{
|
|
30
29
|
'use no memo';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePreviewContentStyles.styles.ts"],"sourcesContent":["import { makeResetStyles, mergeClasses,
|
|
1
|
+
{"version":3,"sources":["usePreviewContentStyles.styles.ts"],"sourcesContent":["import { makeResetStyles, mergeClasses, tokens, typographyStyles } from '@fluentui/react-components';\nimport type { PreviewContentSlots, PreviewContentState } from './PreviewContent.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\n\nexport const previewContentClassNames: SlotClassNames<PreviewContentSlots> = {\n root: 'fai-PreviewContent',\n};\n\n/**\n * Styles for the root slot\n */\nconst useRootBaseClassName = makeResetStyles({\n color: tokens.colorNeutralForeground3,\n display: 'flex',\n flexDirection: 'column',\n padding: `${tokens.spacingVerticalS} ${tokens.spacingHorizontalS}`,\n rowGap: tokens.spacingVerticalXS,\n wordBreak: 'break-word',\n\n ...typographyStyles.caption1,\n});\n\n/**\n * Apply styling to the PreviewContent slots based on the state\n */\nexport const usePreviewContentStyles_unstable = (state: PreviewContentState): PreviewContentState => {\n 'use no memo';\n\n const rootBaseClassName = useRootBaseClassName();\n\n state.root.className = mergeClasses(previewContentClassNames.root, rootBaseClassName, state.root.className);\n\n return state;\n};\n"],"names":["previewContentClassNames","tokens","root","color","colorNeutralForeground3","rowGap","state","rootBaseClassName","useRootBaseClassName","className","mergeClasses"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAIaA,wBAAAA;eAAAA;;IAYHC,gCAAwB;eAAxBA;;;iCAhBsD;AAIzD,MAAMD,2BAAgE;UAC3EE;AACF;AAEA;;CAEC,SAECC,uBAAcC,IAAAA,8BAAuB,EAAA,YAAA,MAAA;IAAA;CAAA;AAIrCC,MAAQJ,mCAAwBK,CAAAA;;IAIlC,MAAAC,oBAAAC;IAEAF,MAAAJ,IAAA,CAAAO,SAAA,GAAAC,IAAAA,6BAAA,EAAAV,yBAAAE,IAAA,EAAAK,mBAAAD,MAAAJ,IAAA,CAAAO,SAAA;;6DAIE"}
|
|
@@ -25,24 +25,21 @@ const previewSurfaceClassNames = {
|
|
|
25
25
|
*/ const useRootStyles = (0, _reactcomponents.__styles)({
|
|
26
26
|
base: {
|
|
27
27
|
B2u0y6b: "f2rbwfs",
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Byoj8tv: "f14wxoun",
|
|
34
|
-
uwmqm3: [
|
|
35
|
-
"fruq291",
|
|
36
|
-
"f7x41pl"
|
|
37
|
-
]
|
|
28
|
+
Byoj8tv: 0,
|
|
29
|
+
uwmqm3: 0,
|
|
30
|
+
z189sj: 0,
|
|
31
|
+
z8tnut: 0,
|
|
32
|
+
B0ocmuz: "f16d74zd"
|
|
38
33
|
}
|
|
39
34
|
}, {
|
|
40
35
|
d: [
|
|
41
36
|
".f2rbwfs{max-width:256px;}",
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
[
|
|
38
|
+
".f16d74zd{padding:var(--spacingVerticalXS) var(--spacingHorizontalXS);}",
|
|
39
|
+
{
|
|
40
|
+
p: -1
|
|
41
|
+
}
|
|
42
|
+
]
|
|
46
43
|
]
|
|
47
44
|
});
|
|
48
45
|
const usePreviewSurfaceStyles_unstable = (state)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePreviewSurfaceStyles.styles.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["usePreviewSurfaceStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses, tokens, usePopoverSurfaceStyles_unstable } from '@fluentui/react-components';\nimport type { PreviewSurfaceSlots, PreviewSurfaceState } from './PreviewSurface.types';\nimport type { SlotClassNames } from '@fluentui/react-components';\n\nexport const previewSurfaceClassNames: SlotClassNames<PreviewSurfaceSlots> = {\n root: 'fai-PreviewSurface',\n};\n\n/**\n * Styles for the root slot\n */\nconst useRootStyles = makeStyles({\n base: {\n maxWidth: '256px',\n padding: `${tokens.spacingVerticalXS} ${tokens.spacingHorizontalXS}`,\n },\n});\n\n/**\n * Apply styling to the PreviewSurface slots based on the state\n */\nexport const usePreviewSurfaceStyles_unstable = (state: PreviewSurfaceState): PreviewSurfaceState => {\n 'use no memo';\n\n const rootStyles = useRootStyles();\n\n state.root.className = mergeClasses(previewSurfaceClassNames.root, rootStyles.base, state.root.className);\n\n usePopoverSurfaceStyles_unstable(state);\n\n return state;\n};\n"],"names":["previewSurfaceClassNames","root","base","__styles","maxWidth","padding","Byoj8tv","uwmqm3","z189sj","B0ocmuz","state","mergeClasses","usePopoverSurfaceStyles_unstable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IAIaA,wBAAAA;eAAAA;;;;;;iCAJ8D;AAIpE,MAAMA,2BAAgE;UAC3EC;AACF;AAEA;;CAEC,SAECC,gBAAMC,IAAAA,yBAAA,EAAA;UACJC;iBACAC;QACFC,SAAA;QACFC,QAAA;QAEAC,QAAA;;QAGAC,SAAO;;;OAKLC;QAAAA;QAAuBC;YAAAA;YAAiF;gBAExGC,GAAAA,CAAAA;;SAEA;KAAA;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluentui-copilot/react-preview",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "Preview components.",
|
|
5
5
|
"main": "lib-commonjs/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"@fluentui/keyboard-keys": ">=9.0.7 <10.0.0",
|
|
19
|
-
"@fluentui/react-components": ">=9.54.
|
|
20
|
-
"@fluentui/react-context-selector": ">=9.1.
|
|
21
|
-
"@fluentui/react-jsx-runtime": ">=9.0.
|
|
22
|
-
"@fluentui/react-utilities": ">=9.18.
|
|
19
|
+
"@fluentui/react-components": ">=9.54.10 <10.0.0",
|
|
20
|
+
"@fluentui/react-context-selector": ">=9.1.65 <10.0.0",
|
|
21
|
+
"@fluentui/react-jsx-runtime": ">=9.0.42 <10.0.0",
|
|
22
|
+
"@fluentui/react-utilities": ">=9.18.13 <10.0.0",
|
|
23
23
|
"@types/react": ">=16.14.0 <19.0.0",
|
|
24
24
|
"@types/react-dom": ">=16.9.8 <19.0.0",
|
|
25
25
|
"react": ">=16.14.0 <19.0.0",
|