mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-21 09:30:37 +03:00
improve api
This commit is contained in:
@@ -66,14 +66,16 @@ export interface Environment {
|
|||||||
* Sets a new default Initialization.
|
* Sets a new default Initialization.
|
||||||
* If the new default Initialization is partially filled, its deeply merged with the current default Initialization.
|
* If the new default Initialization is partially filled, its deeply merged with the current default Initialization.
|
||||||
* @param newDefaultInitialization The new 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.
|
* Sets new default Options.
|
||||||
* If the new default Options are partially filled, they're deeply merged with the current 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.
|
* @param newDefaultOptions The new default Options.
|
||||||
|
* @returns The current default options.
|
||||||
*/
|
*/
|
||||||
setDefaultOptions(newDefaultOptions: DeepPartial<Options>): void;
|
setDefaultOptions(newDefaultOptions: DeepPartial<Options>): Options;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface InternalEnvironment {
|
export interface InternalEnvironment {
|
||||||
@@ -87,9 +89,9 @@ export interface InternalEnvironment {
|
|||||||
readonly _staticDefaultOptions: Options;
|
readonly _staticDefaultOptions: Options;
|
||||||
_addListener(listener: EventListener<EnvironmentEventMap, '_'>): () => void;
|
_addListener(listener: EventListener<EnvironmentEventMap, '_'>): () => void;
|
||||||
_getDefaultInitialization(): Initialization;
|
_getDefaultInitialization(): Initialization;
|
||||||
_setDefaultInitialization(newInitialization: DeepPartial<Initialization>): void;
|
_setDefaultInitialization(newInitialization: DeepPartial<Initialization>): Initialization;
|
||||||
_getDefaultOptions(): Options;
|
_getDefaultOptions(): Options;
|
||||||
_setDefaultOptions(newDefaultOptions: DeepPartial<Options>): void;
|
_setDefaultOptions(newDefaultOptions: DeepPartial<Options>): Options;
|
||||||
}
|
}
|
||||||
|
|
||||||
let environmentInstance: InternalEnvironment;
|
let environmentInstance: InternalEnvironment;
|
||||||
@@ -210,6 +212,14 @@ const createEnvironment = (): InternalEnvironment => {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
const staticDefaultOptions = assignDeep({}, defaultOptions);
|
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 = {
|
const env: InternalEnvironment = {
|
||||||
_nativeScrollbarsSize: nativeScrollbarsSize,
|
_nativeScrollbarsSize: nativeScrollbarsSize,
|
||||||
@@ -219,20 +229,13 @@ const createEnvironment = (): InternalEnvironment => {
|
|||||||
_rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),
|
_rtlScrollBehavior: getRtlScrollBehavior(envElm, envChildElm),
|
||||||
_flexboxGlue: getFlexboxGlue(envElm, envChildElm),
|
_flexboxGlue: getFlexboxGlue(envElm, envChildElm),
|
||||||
_addListener: (listener) => addEvent('_', listener),
|
_addListener: (listener) => addEvent('_', listener),
|
||||||
_getDefaultInitialization: (
|
_getDefaultInitialization: getDefaultInitialization,
|
||||||
assignDeep as typeof assignDeep<Initialization, Initialization>
|
_setDefaultInitialization: (newInitializationStrategy) =>
|
||||||
).bind(0, {} as Initialization, staticDefaultInitialization),
|
assignDeep(staticDefaultInitialization, newInitializationStrategy) &&
|
||||||
_setDefaultInitialization(newInitializationStrategy) {
|
getDefaultInitialization(),
|
||||||
assignDeep(staticDefaultInitialization, newInitializationStrategy);
|
_getDefaultOptions: getDefaultOptions,
|
||||||
},
|
_setDefaultOptions: (newDefaultOptions) =>
|
||||||
_getDefaultOptions: (assignDeep as typeof assignDeep<Options, Options>).bind(
|
assignDeep(staticDefaultOptions, newDefaultOptions) && getDefaultOptions(),
|
||||||
0,
|
|
||||||
{} as Options,
|
|
||||||
staticDefaultOptions
|
|
||||||
),
|
|
||||||
_setDefaultOptions(newDefaultOptions) {
|
|
||||||
assignDeep(staticDefaultOptions, newDefaultOptions);
|
|
||||||
},
|
|
||||||
_staticDefaultInitialization: assignDeep({}, staticDefaultInitialization),
|
_staticDefaultInitialization: assignDeep({}, staticDefaultInitialization),
|
||||||
_staticDefaultOptions: assignDeep({}, staticDefaultOptions),
|
_staticDefaultOptions: assignDeep({}, staticDefaultOptions),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ export interface OverlayScrollbars {
|
|||||||
* Sets the options of the instance.
|
* Sets the options of the instance.
|
||||||
* If the new options are partially filled, they're deeply merged with the current options.
|
* If the new options are partially filled, they're deeply merged with the current options.
|
||||||
* @param newOptions The new options.
|
* @param newOptions The new options.
|
||||||
|
* @returns Returns the current options of the instance.
|
||||||
*/
|
*/
|
||||||
options(newOptions: DeepPartial<Options>): Options;
|
options(newOptions: DeepPartial<Options>): Options;
|
||||||
|
|
||||||
@@ -173,12 +174,14 @@ export interface OverlayScrollbars {
|
|||||||
* Adds an event listener to the instance.
|
* Adds an event listener to the instance.
|
||||||
* @param name The name of the event.
|
* @param name The name of the event.
|
||||||
* @param listener The listener which is invoked on that 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;
|
on<N extends keyof EventListenerMap>(name: N, listener: EventListener<N>): () => void;
|
||||||
/**
|
/**
|
||||||
* Adds multiple event listeners to the instance.
|
* Adds multiple event listeners to the instance.
|
||||||
* @param name The name of the event.
|
* @param name The name of the event.
|
||||||
* @param listener The listeners which are invoked on that 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;
|
on<N extends keyof EventListenerMap>(name: N, listener: EventListener<N>[]): () => void;
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ describe('environment', () => {
|
|||||||
expect(_getDefaultOptions()).not.toBe(defaultOptions);
|
expect(_getDefaultOptions()).not.toBe(defaultOptions);
|
||||||
expect(_getDefaultOptions()).toEqual(defaultOptions);
|
expect(_getDefaultOptions()).toEqual(defaultOptions);
|
||||||
|
|
||||||
_setDefaultOptions(newDefaultOptions);
|
expect(_setDefaultOptions(newDefaultOptions)).toEqual(_getDefaultOptions());
|
||||||
|
|
||||||
expect(_getDefaultOptions()).toEqual({
|
expect(_getDefaultOptions()).toEqual({
|
||||||
...defaultOptions,
|
...defaultOptions,
|
||||||
@@ -125,7 +125,9 @@ describe('environment', () => {
|
|||||||
expect(_getDefaultInitialization()).not.toBe(defaultInitialization);
|
expect(_getDefaultInitialization()).not.toBe(defaultInitialization);
|
||||||
expect(_getDefaultInitialization()).toEqual(defaultInitialization);
|
expect(_getDefaultInitialization()).toEqual(defaultInitialization);
|
||||||
|
|
||||||
_setDefaultInitialization(newDefaultInitialization);
|
expect(_setDefaultInitialization(newDefaultInitialization)).toEqual(
|
||||||
|
_getDefaultInitialization()
|
||||||
|
);
|
||||||
|
|
||||||
expect(_getDefaultInitialization()).toEqual({
|
expect(_getDefaultInitialization()).toEqual({
|
||||||
...defaultInitialization,
|
...defaultInitialization,
|
||||||
|
|||||||
Reference in New Issue
Block a user