mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-05-26 15:24:06 +03:00
add automatic paths to build tsconfig
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
"eslint-plugin-react-hooks": "^4.0.8",
|
||||
"expect-playwright": "^0.3.1",
|
||||
"express": "^4.17.1",
|
||||
"glob": "^7.1.6",
|
||||
"jest": "^26.6.0",
|
||||
"jest-dev-server": "^4.4.0",
|
||||
"jest-playwright-preset": "^1.4.5",
|
||||
|
||||
+1
-69
@@ -1,78 +1,10 @@
|
||||
import 'styles/overlayscrollbars.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';
|
||||
|
||||
const targetElm = document.querySelector('#target') as HTMLElement;
|
||||
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('#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",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "./src/"
|
||||
"baseUrl": "./src/",
|
||||
"paths": {
|
||||
"@/overlayscrollbars*": ["../../overlayscrollbars/src*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+22
-1
@@ -9,6 +9,7 @@ const del = require('del');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const chalk = require('chalk');
|
||||
const glob = require('glob');
|
||||
const resolve = require('./resolve.config.json');
|
||||
|
||||
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 repoPackageJson = require(path.resolve(__dirname, 'package.json'));
|
||||
const projectPath = resolvePath(__dirname, project);
|
||||
const relativeBackPath = path.relative(projectPath, __dirname);
|
||||
const projectName = path.basename(project);
|
||||
@@ -189,6 +191,21 @@ const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, si
|
||||
});
|
||||
|
||||
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 = {
|
||||
typescript: isTypeScriptProject
|
||||
? rollupTypescript({
|
||||
@@ -202,8 +219,12 @@ const rollupConfig = (config = {}, { project = process.cwd(), overwrite = {}, si
|
||||
sourceMap: sourcemap,
|
||||
declaration: typeDeclaration && types !== null,
|
||||
declarationDir: typesPath,
|
||||
paths: {
|
||||
...finalPaths,
|
||||
...workspacesPaths,
|
||||
},
|
||||
},
|
||||
exclude: (require(tsconfigJSONPath).exclude || []).concat(testsPath),
|
||||
exclude: (exclude || []).concat(testsPath),
|
||||
},
|
||||
include: ['*.ts+(|x)', '**/*.ts+(|x)'].map(prependBackPath),
|
||||
exclude: ['*.d.ts', '**/*.d.ts'].map(prependBackPath),
|
||||
|
||||
Reference in New Issue
Block a user