mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-05-26 18:44:08 +03:00
improve api
This commit is contained in:
@@ -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<Initialization>): void;
|
||||
setDefaultInitialization(newDefaultInitialization: DeepPartial<Initialization>): 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<Options>): void;
|
||||
setDefaultOptions(newDefaultOptions: DeepPartial<Options>): Options;
|
||||
}
|
||||
|
||||
export interface InternalEnvironment {
|
||||
@@ -87,9 +89,9 @@ export interface InternalEnvironment {
|
||||
readonly _staticDefaultOptions: Options;
|
||||
_addListener(listener: EventListener<EnvironmentEventMap, '_'>): () => void;
|
||||
_getDefaultInitialization(): Initialization;
|
||||
_setDefaultInitialization(newInitialization: DeepPartial<Initialization>): void;
|
||||
_setDefaultInitialization(newInitialization: DeepPartial<Initialization>): Initialization;
|
||||
_getDefaultOptions(): Options;
|
||||
_setDefaultOptions(newDefaultOptions: DeepPartial<Options>): void;
|
||||
_setDefaultOptions(newDefaultOptions: DeepPartial<Options>): Options;
|
||||
}
|
||||
|
||||
let environmentInstance: InternalEnvironment;
|
||||
@@ -210,6 +212,14 @@ const createEnvironment = (): InternalEnvironment => {
|
||||
},
|
||||
};
|
||||
const staticDefaultOptions = assignDeep({}, defaultOptions);
|
||||
const getDefaultOptions = (assignDeep as typeof assignDeep<Options, Options>).bind(
|
||||
0,
|
||||
{} as Options,
|
||||
staticDefaultOptions
|
||||
);
|
||||
const getDefaultInitialization = (
|
||||
assignDeep as typeof assignDeep<Initialization, Initialization>
|
||||
).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<Initialization, Initialization>
|
||||
).bind(0, {} as Initialization, staticDefaultInitialization),
|
||||
_setDefaultInitialization(newInitializationStrategy) {
|
||||
assignDeep(staticDefaultInitialization, newInitializationStrategy);
|
||||
},
|
||||
_getDefaultOptions: (assignDeep as typeof assignDeep<Options, Options>).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),
|
||||
};
|
||||
|
||||
@@ -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>): 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<N extends keyof EventListenerMap>(name: N, listener: EventListener<N>): () => 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<N extends keyof EventListenerMap>(name: N, listener: EventListener<N>[]): () => void;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user