UNPKG

@atlaskit/app-provider

Version:

A top level provider for the Design System.

31 lines (30 loc) 1.5 kB
import { useEffect } from 'react'; import { getDocument } from '@atlaskit/browser-apis'; import { fg } from '@atlaskit/platform-feature-flags/fg'; import { installScrollbarHarmonisation } from './install-scrollbar-harmonisation'; import { installScrollbarHarmonisationTransparentTrack } from './install-scrollbar-harmonisation-transparent-track'; /** * Activates the harmonised scrollbar appearance. An explicit value overrides the shared rollout * gate; when omitted, the shared gate controls the appearance. */ export function useScrollbarHarmonisation(isEnabled) { var isGateEnabled = fg('platform_dst_scrollbar_harmonisation'); var shouldEnable = isEnabled !== null && isEnabled !== void 0 ? isEnabled : isGateEnabled; var isTransparentTrackGateEnabled = fg('platform_dst_scrollbar_harmonisation_transparent'); var shouldUseTransparentTrack = isGateEnabled && isTransparentTrackGateEnabled; useEffect(function () { if (!shouldEnable) { return; } var targetDocument = getDocument(); if (!targetDocument) { return; } var cleanupHarmonisation = installScrollbarHarmonisation(targetDocument); var cleanupTransparentTrack = shouldUseTransparentTrack ? installScrollbarHarmonisationTransparentTrack(targetDocument) : undefined; return function () { cleanupTransparentTrack === null || cleanupTransparentTrack === void 0 || cleanupTransparentTrack(); cleanupHarmonisation(); }; }, [shouldEnable, shouldUseTransparentTrack]); }