Path: blob/main/src/vs/base/browser/ui/hover/hoverDelegateFactory.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { IHoverDelegate, IScopedHoverDelegate } from './hoverDelegate.js';6import { Lazy } from '../../../common/lazy.js';78const nullHoverDelegateFactory = () => ({9get delay(): number { return -1; },10dispose: () => { },11showHover: () => { return undefined; },12});1314let hoverDelegateFactory: (placement: 'mouse' | 'element', enableInstantHover: boolean) => IScopedHoverDelegate = nullHoverDelegateFactory;15const defaultHoverDelegateMouse = new Lazy<IHoverDelegate>(() => hoverDelegateFactory('mouse', false));16const defaultHoverDelegateElement = new Lazy<IHoverDelegate>(() => hoverDelegateFactory('element', false));1718// TODO: Remove when getDefaultHoverDelegate is no longer used19export function setHoverDelegateFactory(hoverDelegateProvider: ((placement: 'mouse' | 'element', enableInstantHover: boolean) => IScopedHoverDelegate)): void {20hoverDelegateFactory = hoverDelegateProvider;21}2223// TODO: Refine type for use in new IHoverService interface24export function getDefaultHoverDelegate(placement: 'mouse' | 'element'): IHoverDelegate {25if (placement === 'element') {26return defaultHoverDelegateElement.value;27}28return defaultHoverDelegateMouse.value;29}3031// TODO: Create equivalent in IHoverService32export function createInstantHoverDelegate(): IScopedHoverDelegate {33// Creates a hover delegate with instant hover enabled.34// This hover belongs to the consumer and requires the them to dispose it.35// Instant hover only makes sense for 'element' placement.36return hoverDelegateFactory('element', true);37}383940