@atlaskit/app-provider
Version:
A top level provider for the Design System.
36 lines (35 loc) • 1.77 kB
JavaScript
;
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]);
}