UNPKG

@atlaskit/app-provider

Version:

A top level provider for the Design System.

36 lines (35 loc) 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useScrollbarHarmonisation = useScrollbarHarmonisation; var _react = require("react"); var _browserApis = require("@atlaskit/browser-apis"); var _fg = require("@atlaskit/platform-feature-flags/fg"); var _installScrollbarHarmonisation = require("./install-scrollbar-harmonisation"); var _installScrollbarHarmonisationTransparentTrack = require("./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. */ function useScrollbarHarmonisation(isEnabled) { var isGateEnabled = (0, _fg.fg)('platform_dst_scrollbar_harmonisation'); var shouldEnable = isEnabled !== null && isEnabled !== void 0 ? isEnabled : isGateEnabled; var isTransparentTrackGateEnabled = (0, _fg.fg)('platform_dst_scrollbar_harmonisation_transparent'); var shouldUseTransparentTrack = isGateEnabled && isTransparentTrackGateEnabled; (0, _react.useEffect)(function () { if (!shouldEnable) { return; } var targetDocument = (0, _browserApis.getDocument)(); if (!targetDocument) { return; } var cleanupHarmonisation = (0, _installScrollbarHarmonisation.installScrollbarHarmonisation)(targetDocument); var cleanupTransparentTrack = shouldUseTransparentTrack ? (0, _installScrollbarHarmonisationTransparentTrack.installScrollbarHarmonisationTransparentTrack)(targetDocument) : undefined; return function () { cleanupTransparentTrack === null || cleanupTransparentTrack === void 0 || cleanupTransparentTrack(); cleanupHarmonisation(); }; }, [shouldEnable, shouldUseTransparentTrack]); }