Changeset View
Changeset View
Standalone View
Standalone View
web/utils/tooltip-utils.js
Show All 13 Lines | |||||
import { | import { | ||||
isComposableMessageType, | isComposableMessageType, | ||||
messageTypes, | messageTypes, | ||||
} from 'lib/types/message-types.js'; | } from 'lib/types/message-types.js'; | ||||
import type { ThreadInfo } from 'lib/types/thread-types.js'; | import type { ThreadInfo } from 'lib/types/thread-types.js'; | ||||
import { threadPermissions } from 'lib/types/thread-types.js'; | import { threadPermissions } from 'lib/types/thread-types.js'; | ||||
import { longAbsoluteDate } from 'lib/utils/date-utils.js'; | import { longAbsoluteDate } from 'lib/utils/date-utils.js'; | ||||
import { getAppContainerPositionInfo } from './window-utils.js'; | |||||
import { | import { | ||||
tooltipButtonStyle, | tooltipButtonStyle, | ||||
tooltipLabelStyle, | tooltipLabelStyle, | ||||
tooltipStyle, | tooltipStyle, | ||||
} from '../chat/chat-constants.js'; | } from '../chat/chat-constants.js'; | ||||
import MessageTooltip from '../chat/message-tooltip.react.js'; | import MessageTooltip from '../chat/message-tooltip.react.js'; | ||||
import type { PositionInfo } from '../chat/position-types.js'; | import type { PositionInfo } from '../chat/position-types.js'; | ||||
import { useTooltipContext } from '../chat/tooltip-provider.js'; | import { useTooltipContext } from '../chat/tooltip-provider.js'; | ||||
Show All 34 Lines | |||||
export type TooltipPosition = $Values<typeof tooltipPositions>; | export type TooltipPosition = $Values<typeof tooltipPositions>; | ||||
export type MessageTooltipAction = { | export type MessageTooltipAction = { | ||||
+label: string, | +label: string, | ||||
+onClick: (SyntheticEvent<HTMLDivElement>) => mixed, | +onClick: (SyntheticEvent<HTMLDivElement>) => mixed, | ||||
+actionButtonContent: React.Node, | +actionButtonContent: React.Node, | ||||
}; | }; | ||||
const appTopBarHeight = 65; | |||||
const font = | const font = | ||||
'14px "Inter", -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", ' + | '14px "Inter", -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", ' + | ||||
'"Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", ui-sans-serif'; | '"Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", ui-sans-serif'; | ||||
type FindTooltipPositionArgs = { | type FindTooltipPositionArgs = { | ||||
+sourcePositionInfo: PositionInfo, | +sourcePositionInfo: PositionInfo, | ||||
+tooltipSize: TooltipSize, | +tooltipSize: TooltipSize, | ||||
+availablePositions: $ReadOnlyArray<TooltipPosition>, | +availablePositions: $ReadOnlyArray<TooltipPosition>, | ||||
+defaultPosition: TooltipPosition, | +defaultPosition: TooltipPosition, | ||||
+preventDisplayingBelowSource?: boolean, | +preventDisplayingBelowSource?: boolean, | ||||
}; | }; | ||||
function findTooltipPosition({ | function findTooltipPosition({ | ||||
sourcePositionInfo, | sourcePositionInfo, | ||||
tooltipSize, | tooltipSize, | ||||
availablePositions, | availablePositions, | ||||
defaultPosition, | defaultPosition, | ||||
preventDisplayingBelowSource, | preventDisplayingBelowSource, | ||||
}: FindTooltipPositionArgs): TooltipPosition { | }: FindTooltipPositionArgs): TooltipPosition { | ||||
if (!window) { | const appContainerPositionInfo = getAppContainerPositionInfo(); | ||||
if (!appContainerPositionInfo) { | |||||
return defaultPosition; | return defaultPosition; | ||||
} | } | ||||
const appContainerPositionInfo: PositionInfo = { | |||||
height: window.innerHeight - appTopBarHeight, | |||||
width: window.innerWidth, | |||||
top: appTopBarHeight, | |||||
bottom: window.innerHeight, | |||||
left: 0, | |||||
right: window.innerWidth, | |||||
}; | |||||
const pointingTo = sourcePositionInfo; | const pointingTo = sourcePositionInfo; | ||||
const { | const { | ||||
top: containerTop, | top: containerTop, | ||||
left: containerLeft, | left: containerLeft, | ||||
right: containerRight, | right: containerRight, | ||||
bottom: containerBottom, | bottom: containerBottom, | ||||
} = appContainerPositionInfo; | } = appContainerPositionInfo; | ||||
▲ Show 20 Lines • Show All 589 Lines • Show Last 20 Lines |