mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-20 07:20:36 +03:00
improve code
This commit is contained in:
@@ -62,15 +62,15 @@ module.exports = () => {
|
|||||||
({ close, url, output } = await createRollupBundle(dirname(file), true, config.quiet));
|
({ close, url, output } = await createRollupBundle(dirname(file), true, config.quiet));
|
||||||
});
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ page, browserName }) => {
|
test.beforeEach(async ({ page, browserName }, { config }) => {
|
||||||
await page.goto(url);
|
await page.goto(url);
|
||||||
if (browserName === 'chromium') {
|
if (browserName === 'chromium' && config.quiet) {
|
||||||
await page.coverage.startJSCoverage();
|
await page.coverage.startJSCoverage();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.afterEach(async ({ page, browserName }, { file }) => {
|
test.afterEach(async ({ page, browserName }, { file, config }) => {
|
||||||
if (browserName === 'chromium') {
|
if (browserName === 'chromium' && config.quiet) {
|
||||||
const coverage = await page.coverage.stopJSCoverage();
|
const coverage = await page.coverage.stopJSCoverage();
|
||||||
await collectCoverage(originalCwd, dirname(output), coverage, file);
|
await collectCoverage(originalCwd, dirname(output), coverage, file);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { OverlayScrollbars } from 'overlayscrollbars';
|
import { OverlayScrollbars } from 'overlayscrollbars';
|
||||||
|
|
||||||
const targets: Set<Element> = new Set();
|
|
||||||
const targetInstanceMap: WeakMap<Element, OverlayScrollbars> = new WeakMap();
|
const targetInstanceMap: WeakMap<Element, OverlayScrollbars> = new WeakMap();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -10,7 +9,6 @@ const targetInstanceMap: WeakMap<Element, OverlayScrollbars> = new WeakMap();
|
|||||||
*/
|
*/
|
||||||
export const addInstance = (target: Element, osInstance: OverlayScrollbars): void => {
|
export const addInstance = (target: Element, osInstance: OverlayScrollbars): void => {
|
||||||
targetInstanceMap.set(target, osInstance);
|
targetInstanceMap.set(target, osInstance);
|
||||||
targets.add(target);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,7 +17,6 @@ export const addInstance = (target: Element, osInstance: OverlayScrollbars): voi
|
|||||||
*/
|
*/
|
||||||
export const removeInstance = (target: Element): void => {
|
export const removeInstance = (target: Element): void => {
|
||||||
targetInstanceMap.delete(target);
|
targetInstanceMap.delete(target);
|
||||||
targets.delete(target);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -28,26 +25,3 @@ export const removeInstance = (target: Element): void => {
|
|||||||
*/
|
*/
|
||||||
export const getInstance = (target: Element): OverlayScrollbars | undefined =>
|
export const getInstance = (target: Element): OverlayScrollbars | undefined =>
|
||||||
targetInstanceMap.get(target);
|
targetInstanceMap.get(target);
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets a Map which represents all active OverayScrollbars instances.
|
|
||||||
* The Key is the element and the value is the instance.
|
|
||||||
*/
|
|
||||||
export const allInstances = (): ReadonlyMap<Element, OverlayScrollbars> => {
|
|
||||||
const validTargetInstanceMap: Map<Element, OverlayScrollbars> = new Map();
|
|
||||||
|
|
||||||
targets.forEach((target: Element) => {
|
|
||||||
/* istanbul ignore else */
|
|
||||||
if (targetInstanceMap.has(target)) {
|
|
||||||
validTargetInstanceMap.set(target, targetInstanceMap.get(target)!);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
targets.clear();
|
|
||||||
|
|
||||||
validTargetInstanceMap.forEach((instance: OverlayScrollbars, validTarget: Element) => {
|
|
||||||
targets.add(validTarget);
|
|
||||||
});
|
|
||||||
|
|
||||||
return validTargetInstanceMap;
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ export const createStructureSetupElements = (
|
|||||||
const { _target, _host, _padding, _viewport, _content, _viewportArrange } = evaluatedTargetObj;
|
const { _target, _host, _padding, _viewport, _content, _viewportArrange } = evaluatedTargetObj;
|
||||||
const destroyFns: (() => any)[] = [];
|
const destroyFns: (() => any)[] = [];
|
||||||
const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host);
|
const isTextareaHostGenerated = isTextarea && elementIsGenerated(_host);
|
||||||
const targetContents = isTextarea
|
let targetContents = isTextarea
|
||||||
? _target
|
? _target
|
||||||
: contents(
|
: contents(
|
||||||
[_content, _viewport, _padding, _host, _target].find(
|
[_content, _viewport, _padding, _host, _target].find(
|
||||||
@@ -240,6 +240,9 @@ export const createStructureSetupElements = (
|
|||||||
insertBefore(_viewport, _viewportArrange);
|
insertBefore(_viewport, _viewportArrange);
|
||||||
push(destroyFns, removeElements.bind(0, _viewportArrange));
|
push(destroyFns, removeElements.bind(0, _viewportArrange));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
targetContents = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
return [evaluatedTargetObj, appendElements, runEachAndClear.bind(0, destroyFns)];
|
return [evaluatedTargetObj, appendElements, runEachAndClear.bind(0, destroyFns)];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { addInstance, removeInstance, getInstance, allInstances } from 'instances';
|
import { addInstance, removeInstance, getInstance } from 'instances';
|
||||||
import { OverlayScrollbars } from 'overlayscrollbars';
|
import { OverlayScrollbars } from 'overlayscrollbars';
|
||||||
|
|
||||||
const testElm = document.body;
|
const testElm = document.body;
|
||||||
@@ -12,14 +12,14 @@ describe('instances', () => {
|
|||||||
test('add instance', () => {
|
test('add instance', () => {
|
||||||
addInstance(testElm, testInstance);
|
addInstance(testElm, testInstance);
|
||||||
|
|
||||||
expect(allInstances().size).toBe(1);
|
expect(getInstance(testElm)).toBe(testInstance);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('remove instance', () => {
|
test('remove instance', () => {
|
||||||
addInstance(testElm, testInstance);
|
addInstance(testElm, testInstance);
|
||||||
removeInstance(testElm);
|
removeInstance(testElm);
|
||||||
|
|
||||||
expect(allInstances().size).toBe(0);
|
expect(getInstance(testElm)).toBe(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('get instance', () => {
|
test('get instance', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user