mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-21 16:00:37 +03:00
add automatic paths to build tsconfig
This commit is contained in:
@@ -38,6 +38,7 @@
|
|||||||
"eslint-plugin-react-hooks": "^4.0.8",
|
"eslint-plugin-react-hooks": "^4.0.8",
|
||||||
"expect-playwright": "^0.3.1",
|
"expect-playwright": "^0.3.1",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
|
"glob": "^7.1.6",
|
||||||
"jest": "^26.6.0",
|
"jest": "^26.6.0",
|
||||||
"jest-dev-server": "^4.4.0",
|
"jest-dev-server": "^4.4.0",
|
||||||
"jest-playwright-preset": "^1.4.5",
|
"jest-playwright-preset": "^1.4.5",
|
||||||
|
|||||||
+1
-69
@@ -1,78 +1,10 @@
|
|||||||
import 'styles/overlayscrollbars.scss';
|
import 'styles/overlayscrollbars.scss';
|
||||||
import './index.scss';
|
import './index.scss';
|
||||||
import { createDiv, appendChildren, parent, style, on, off, addClass, WH, XY, clientSize } from 'support';
|
import { resize } from '@/testing-browser/Resize';
|
||||||
import { OverlayScrollbars } from 'overlayscrollbars';
|
import { OverlayScrollbars } from 'overlayscrollbars';
|
||||||
|
|
||||||
const targetElm = document.querySelector('#target') as HTMLElement;
|
const targetElm = document.querySelector('#target') as HTMLElement;
|
||||||
window.os = OverlayScrollbars({ target: targetElm, content: false });
|
window.os = OverlayScrollbars({ target: targetElm, content: false });
|
||||||
|
|
||||||
export const resize = (element: HTMLElement) => {
|
|
||||||
const strMouseTouchDownEvent = 'mousedown touchstart';
|
|
||||||
const strMouseTouchUpEvent = 'mouseup touchend';
|
|
||||||
const strMouseTouchMoveEvent = 'mousemove touchmove';
|
|
||||||
const strSelectStartEvent = 'selectstart';
|
|
||||||
const dragStartSize: WH<number> = { w: 0, h: 0 };
|
|
||||||
const dragStartPosition: XY<number> = { x: 0, y: 0 };
|
|
||||||
const resizeBtn = createDiv('resizeBtn');
|
|
||||||
appendChildren(element, resizeBtn);
|
|
||||||
addClass(element, 'resizer');
|
|
||||||
|
|
||||||
let dragResizeBtn: HTMLElement | undefined;
|
|
||||||
let dragResizer: HTMLElement | undefined;
|
|
||||||
|
|
||||||
const onSelectStart = (event: Event) => {
|
|
||||||
event.preventDefault();
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
const resizerResize = (event: MouseEvent | TouchEvent) => {
|
|
||||||
const isTouchEvent = (event as TouchEvent).touches !== undefined;
|
|
||||||
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
|
|
||||||
|
|
||||||
const sizeStyle = {
|
|
||||||
width: dragStartSize.w + mouseOffsetHolder.pageX - dragStartPosition.x,
|
|
||||||
height: dragStartSize.h + mouseOffsetHolder.pageY - dragStartPosition.y,
|
|
||||||
};
|
|
||||||
|
|
||||||
style(dragResizer, sizeStyle);
|
|
||||||
event.stopPropagation();
|
|
||||||
};
|
|
||||||
|
|
||||||
const resizerResized = () => {
|
|
||||||
off(document, strSelectStartEvent, onSelectStart);
|
|
||||||
off(document, strMouseTouchMoveEvent, resizerResize);
|
|
||||||
off(document, strMouseTouchUpEvent, resizerResized);
|
|
||||||
|
|
||||||
dragResizer = undefined;
|
|
||||||
dragResizeBtn = undefined;
|
|
||||||
};
|
|
||||||
|
|
||||||
on(resizeBtn, strMouseTouchDownEvent, (event: MouseEvent | TouchEvent) => {
|
|
||||||
const { currentTarget } = event;
|
|
||||||
const correctButton = (event as MouseEvent).buttons === 1 || event.which === 1;
|
|
||||||
const isTouchEvent = (event as TouchEvent).touches !== undefined;
|
|
||||||
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
|
|
||||||
|
|
||||||
if (correctButton || isTouchEvent) {
|
|
||||||
dragStartPosition.x = mouseOffsetHolder.pageX;
|
|
||||||
dragStartPosition.y = mouseOffsetHolder.pageY;
|
|
||||||
|
|
||||||
dragResizeBtn = currentTarget as HTMLElement;
|
|
||||||
dragResizer = parent(currentTarget as HTMLElement) as HTMLElement;
|
|
||||||
|
|
||||||
const cSize = clientSize(element);
|
|
||||||
dragStartSize.w = cSize.w;
|
|
||||||
dragStartSize.h = cSize.h;
|
|
||||||
|
|
||||||
on(document, strSelectStartEvent, onSelectStart);
|
|
||||||
on(document, strMouseTouchMoveEvent, resizerResize);
|
|
||||||
on(document, strMouseTouchUpEvent, resizerResized);
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
resize(document.querySelector('#resize')!);
|
resize(document.querySelector('#resize')!);
|
||||||
resize(document.querySelector('#target')!);
|
resize(document.querySelector('#target')!);
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
// @ts-ignore
|
||||||
|
import { createDiv, appendChildren, parent, style, on, off, addClass, WH, XY, clientSize } from '@/overlayscrollbars/support';
|
||||||
|
|
||||||
|
export const resize = (element: HTMLElement) => {
|
||||||
|
const strMouseTouchDownEvent = 'mousedown touchstart';
|
||||||
|
const strMouseTouchUpEvent = 'mouseup touchend';
|
||||||
|
const strMouseTouchMoveEvent = 'mousemove touchmove';
|
||||||
|
const strSelectStartEvent = 'selectstart';
|
||||||
|
const dragStartSize: WH<number> = { w: 0, h: 0 };
|
||||||
|
const dragStartPosition: XY<number> = { x: 0, y: 0 };
|
||||||
|
const resizeBtn = createDiv('resizeBtn');
|
||||||
|
appendChildren(element, resizeBtn);
|
||||||
|
addClass(element, 'resizer');
|
||||||
|
|
||||||
|
let dragResizeBtn: HTMLElement | undefined;
|
||||||
|
let dragResizer: HTMLElement | undefined;
|
||||||
|
|
||||||
|
const onSelectStart = (event: Event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
const resizerResize = (event: MouseEvent | TouchEvent) => {
|
||||||
|
const isTouchEvent = (event as TouchEvent).touches !== undefined;
|
||||||
|
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
|
||||||
|
|
||||||
|
const sizeStyle = {
|
||||||
|
width: dragStartSize.w + mouseOffsetHolder.pageX - dragStartPosition.x,
|
||||||
|
height: dragStartSize.h + mouseOffsetHolder.pageY - dragStartPosition.y,
|
||||||
|
};
|
||||||
|
|
||||||
|
style(dragResizer, sizeStyle);
|
||||||
|
event.stopPropagation();
|
||||||
|
};
|
||||||
|
|
||||||
|
const resizerResized = () => {
|
||||||
|
off(document, strSelectStartEvent, onSelectStart);
|
||||||
|
off(document, strMouseTouchMoveEvent, resizerResize);
|
||||||
|
off(document, strMouseTouchUpEvent, resizerResized);
|
||||||
|
|
||||||
|
dragResizer = undefined;
|
||||||
|
dragResizeBtn = undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
on(resizeBtn, strMouseTouchDownEvent, (event: MouseEvent | TouchEvent) => {
|
||||||
|
const { currentTarget } = event;
|
||||||
|
const correctButton = (event as MouseEvent).buttons === 1 || event.which === 1;
|
||||||
|
const isTouchEvent = (event as TouchEvent).touches !== undefined;
|
||||||
|
const mouseOffsetHolder = isTouchEvent ? (event as TouchEvent).touches[0] : (event as MouseEvent);
|
||||||
|
|
||||||
|
if (correctButton || isTouchEvent) {
|
||||||
|
dragStartPosition.x = mouseOffsetHolder.pageX;
|
||||||
|
dragStartPosition.y = mouseOffsetHolder.pageY;
|
||||||
|
|
||||||
|
dragResizeBtn = currentTarget as HTMLElement;
|
||||||
|
dragResizer = parent(currentTarget as HTMLElement) as HTMLElement;
|
||||||
|
|
||||||
|
const cSize = clientSize(element);
|
||||||
|
dragStartSize.w = cSize.w;
|
||||||
|
dragStartSize.h = cSize.h;
|
||||||
|
|
||||||
|
on(document, strSelectStartEvent, onSelectStart);
|
||||||
|
on(document, strMouseTouchMoveEvent, resizerResize);
|
||||||
|
on(document, strMouseTouchUpEvent, resizerResized);
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"extends": "../../tsconfig.base.json",
|
"extends": "../../tsconfig.base.json",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"baseUrl": "./src/"
|
"baseUrl": "./src/",
|
||||||
|
"paths": {
|
||||||
|
"@/overlayscrollbars*": ["../../overlayscrollbars/src*"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-1
@@ -9,6 +9,7 @@ const del = require('del');
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const chalk = require('chalk');
|
const chalk = require('chalk');
|
||||||
|
const glob = require('glob');
|
||||||
const resolve = require('./resolve.config.json');
|
const resolve = require('./resolve.config.json');
|
||||||
|
|
||||||
const isTestEnv = process.env.NODE_ENV === 'test';
|
const isTestEnv = process.env.NODE_ENV === 'test';
|
||||||
@@ -124,6 +125,7 @@ const resolveConfig = (config, userConfig) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, silent, fast } = {}) => {
|
const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, silent, fast } = {}) => {
|
||||||
|
const repoPackageJson = require(path.resolve(__dirname, 'package.json'));
|
||||||
const projectPath = resolvePath(__dirname, project);
|
const projectPath = resolvePath(__dirname, project);
|
||||||
const relativeBackPath = path.relative(projectPath, __dirname);
|
const relativeBackPath = path.relative(projectPath, __dirname);
|
||||||
const projectName = path.basename(project);
|
const projectName = path.basename(project);
|
||||||
@@ -189,6 +191,21 @@ const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, si
|
|||||||
});
|
});
|
||||||
|
|
||||||
const genConfig = ({ esm, typeDeclaration }) => {
|
const genConfig = ({ esm, typeDeclaration }) => {
|
||||||
|
const { exclude, compilerOptions } = require(tsconfigJSONPath);
|
||||||
|
const { paths } = compilerOptions || {};
|
||||||
|
const finalPaths = paths || {};
|
||||||
|
const workspacesPaths = repoPackageJson.workspaces
|
||||||
|
.map((pattern) => glob.sync(pattern, { cwd: __dirname }))
|
||||||
|
.reduce((arr, paths) => {
|
||||||
|
arr.push(...paths);
|
||||||
|
return arr;
|
||||||
|
}, [])
|
||||||
|
.reduce((obj, resolvedPath) => {
|
||||||
|
const absolutePath = path.resolve(__dirname, resolvedPath);
|
||||||
|
obj[`@/${path.basename(absolutePath)}*`] = [`${normalizePath(path.resolve(absolutePath, rollupConfigDefaults.src))}*`];
|
||||||
|
return obj;
|
||||||
|
}, {});
|
||||||
|
|
||||||
const pipelineMap = {
|
const pipelineMap = {
|
||||||
typescript: isTypeScriptProject
|
typescript: isTypeScriptProject
|
||||||
? rollupTypescript({
|
? rollupTypescript({
|
||||||
@@ -202,8 +219,12 @@ const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, si
|
|||||||
sourceMap: sourcemap,
|
sourceMap: sourcemap,
|
||||||
declaration: typeDeclaration && types !== null,
|
declaration: typeDeclaration && types !== null,
|
||||||
declarationDir: typesPath,
|
declarationDir: typesPath,
|
||||||
|
paths: {
|
||||||
|
...finalPaths,
|
||||||
|
...workspacesPaths,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
exclude: (require(tsconfigJSONPath).exclude || []).concat(testsPath),
|
exclude: (exclude || []).concat(testsPath),
|
||||||
},
|
},
|
||||||
include: ['*.ts+(|x)', '**/*.ts+(|x)'].map(prependBackPath),
|
include: ['*.ts+(|x)', '**/*.ts+(|x)'].map(prependBackPath),
|
||||||
exclude: ['*.d.ts', '**/*.d.ts'].map(prependBackPath),
|
exclude: ['*.d.ts', '**/*.d.ts'].map(prependBackPath),
|
||||||
|
|||||||
Reference in New Issue
Block a user