diff --git a/packages/overlayscrollbars/src/environment.ts b/packages/overlayscrollbars/src/environment.ts index b0bb3ea..f66090a 100644 --- a/packages/overlayscrollbars/src/environment.ts +++ b/packages/overlayscrollbars/src/environment.ts @@ -66,14 +66,16 @@ export interface Environment { * Sets a new default Initialization. * If the new default Initialization is partially filled, its deeply merged with the current default Initialization. * @param newDefaultInitialization The new default Initialization. + * @returns The current default Initialization. */ - setDefaultInitialization(newDefaultInitialization: DeepPartial): void; + setDefaultInitialization(newDefaultInitialization: DeepPartial): Initialization; /** * Sets new default Options. * If the new default Options are partially filled, they're deeply merged with the current default Options. * @param newDefaultOptions The new default Options. + * @returns The current default options. */ - setDefaultOptions(newDefaultOptions: DeepPartial): void; + setDefaultOptions(newDefaultOptions: DeepPartial): Options; } export interface InternalEnvironment { @@ -87,9 +89,9 @@ export interface InternalEnvironment { readonly _staticDefaultOptions: Options; _addListener(listener: EventListener): () => void; _getDefaultInitialization(): Initialization; - _setDefaultInitialization(newInitialization: DeepPartial): void; + _setDefaultInitialization(newInitialization: DeepPartial): Initialization; _getDefaultOptions(): Options; - _setDefaultOptions(newDefaultOptions: DeepPartial): void; + _setDefaultOptions(newDefaultOptions: DeepPartial): Options; } let environmentInstance: InternalEnvironment; @@ -210,6 +212,14 @@ const createEnvironment = (): InternalEnvironment => { }, }; const staticDefaultOptions = assignDeep({}, defaultOptions); + const getDefaultOptions = (assignDeep as typeof assignDeep).bind( + 0, + {} as Options, + staticDefaultOptions + ); + const getDefaultInitialization = ( + assignDeep as typeof assignDeep + ).bind(0, {} as Initialization, staticDefaultInitialization); const env: InternalEnvironment = { _nativeScrollbarsSize: nativeScrollbarsSize, @@ -219,20 +229,13 @@ const createEnvironment = (): InternalEnvironment => { _rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm), _flexboxGlue: getFlexboxGlue(envElm, envChildElm), _addListener: (listener) => addEvent('_', listener), - _getDefaultInitialization: ( - assignDeep as typeof assignDeep - ).bind(0, {} as Initialization, staticDefaultInitialization), - _setDefaultInitialization(newInitializationStrategy) { - assignDeep(staticDefaultInitialization, newInitializationStrategy); - }, - _getDefaultOptions: (assignDeep as typeof assignDeep).bind( - 0, - {} as Options, - staticDefaultOptions - ), - _setDefaultOptions(newDefaultOptions) { - assignDeep(staticDefaultOptions, newDefaultOptions); - }, + _getDefaultInitialization: getDefaultInitialization, + _setDefaultInitialization: (newInitializationStrategy) => + assignDeep(staticDefaultInitialization, newInitializationStrategy) && + getDefaultInitialization(), + _getDefaultOptions: getDefaultOptions, + _setDefaultOptions: (newDefaultOptions) => + assignDeep(staticDefaultOptions, newDefaultOptions) && getDefaultOptions(), _staticDefaultInitialization: assignDeep({}, staticDefaultInitialization), _staticDefaultOptions: assignDeep({}, staticDefaultOptions), }; diff --git a/packages/overlayscrollbars/src/overlayscrollbars.ts b/packages/overlayscrollbars/src/overlayscrollbars.ts index f918d5a..2488be7 100644 --- a/packages/overlayscrollbars/src/overlayscrollbars.ts +++ b/packages/overlayscrollbars/src/overlayscrollbars.ts @@ -166,6 +166,7 @@ export interface OverlayScrollbars { * Sets the options of the instance. * If the new options are partially filled, they're deeply merged with the current options. * @param newOptions The new options. + * @returns Returns the current options of the instance. */ options(newOptions: DeepPartial): Options; @@ -173,12 +174,14 @@ export interface OverlayScrollbars { * Adds an event listener to the instance. * @param name The name of the event. * @param listener The listener which is invoked on that event. + * @returns Returns a function which removes the added listeners. */ on(name: N, listener: EventListener): () => void; /** * Adds multiple event listeners to the instance. * @param name The name of the event. * @param listener The listeners which are invoked on that event. + * @returns Returns a function which removes the added listeners. */ on(name: N, listener: EventListener[]): () => void; diff --git a/packages/overlayscrollbars/test/jest-jsdom/environment.test.ts b/packages/overlayscrollbars/test/jest-jsdom/environment.test.ts index 6439120..1e9dc01 100644 --- a/packages/overlayscrollbars/test/jest-jsdom/environment.test.ts +++ b/packages/overlayscrollbars/test/jest-jsdom/environment.test.ts @@ -90,7 +90,7 @@ describe('environment', () => { expect(_getDefaultOptions()).not.toBe(defaultOptions); expect(_getDefaultOptions()).toEqual(defaultOptions); - _setDefaultOptions(newDefaultOptions); + expect(_setDefaultOptions(newDefaultOptions)).toEqual(_getDefaultOptions()); expect(_getDefaultOptions()).toEqual({ ...defaultOptions, @@ -125,7 +125,9 @@ describe('environment', () => { expect(_getDefaultInitialization()).not.toBe(defaultInitialization); expect(_getDefaultInitialization()).toEqual(defaultInitialization); - _setDefaultInitialization(newDefaultInitialization); + expect(_setDefaultInitialization(newDefaultInitialization)).toEqual( + _getDefaultInitialization() + ); expect(_getDefaultInitialization()).toEqual({ ...defaultInitialization,