Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v6.0.1 #25

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# v6.0.1

- [*] Удален lodash из списка peer dependencies
- [*] Добавлен хук usePreventDefaultTouchMove

# v6.0.0

- [*] checkDev: добавлен аргумент apiUrl
Expand Down
5 changes: 1 addition & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ktsstudio/mediaproject-utils",
"version": "6.0.0",
"version": "6.0.1",
"author": "KTS Studio",
"license": "MIT",
"description": "Package with basic utils for media projects",
Expand Down Expand Up @@ -60,7 +60,6 @@
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@types/jest": "^29.5.0",
"@types/lodash": "^4.14.192",
"@types/node": "^16.4.5",
"@types/react": ">=17",
"@typescript-eslint/eslint-plugin": "^4.13.0",
Expand All @@ -76,7 +75,6 @@
"jest": "^29.5.0",
"jest-environment-jsdom": "^29.5.0",
"lint-staged": "^11.0.0",
"lodash": "^4.17.21",
"prettier": "^2.5.1",
"react": ">=17",
"react-dom": "^17.0.0 || ^18.0.0",
Expand All @@ -88,7 +86,6 @@
},
"peerDependencies": {
"axios": "^0.24.0",
"lodash": "^4.17.21",
"react": ">=17"
},
"repository": {
Expand Down
15 changes: 15 additions & 0 deletions src/__tests__/utils/getTag.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

/**
* Возвращает строковое представление типа значения `value`.
* Если значение `value` равно `null` или `undefined`, возвращает соответствующую строку.
* В противном случае возвращает результат вызова метода `toString` для `value`.
*
* @param {any} value - Значение для получения его тега.
* @returns {string} Возвращает строковое представление типа значения.
*/
export function getTag(value: any):string {
if (value == null) {
return value === undefined ? '[object Undefined]' : '[object Null]'
}
return toString.call(value)
}
13 changes: 13 additions & 0 deletions src/__tests__/utils/isNumber.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { getTag } from './getTag';
import { isObjectLike } from './isObjectLike';

/**
* Проверяет, является ли значение числом. Это замена оригинальной функции `isNumber` из библиотеки lodash.
* @param {any} value - Значение, которое необходимо проверить.
* @returns {boolean} Возвращает `true`, если значение является числом, иначе `false`.
*/
export function isNumber(value: any): value is number {
return (
typeof value === 'number' || (isObjectLike(value) && getTag(value) === '[object Number]')
);
}
9 changes: 9 additions & 0 deletions src/__tests__/utils/isObjectLike.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/**
* Проверяет, является ли `value` похожим на объект. Значение считается похожим на объект, если оно не `null` и имеет результат `typeof` равный "object".
*
* @param {any} value - Значение для проверки.
* @returns {boolean} Возвращает `true`, если `value` похоже на объект, иначе `false`.
*/
export function isObjectLike(value: any): value is object {
return typeof value === 'object' && value !== null;
}
12 changes: 12 additions & 0 deletions src/__tests__/utils/random.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* Генерирует случайное число в заданном диапазоне. Это замена оригинальной функции `random` из библиотеки lodash.
* @param {number} min - Нижняя граница диапазона.
* @param {number} [max=0] - Верхняя граница диапазона. По умолчанию равна 0. Если передано только одно значение, оно будет считаться верхней границей, а нижней границей будет 0.
* @returns {number} Возвращает случайное число в заданном диапазоне.
*/
export function random(min: number, max: number = 0): number {
if (min < max) {
[min, max] = [max, min];
}
return Math.floor(Math.random() * (min - max + 1)) + max;
}
10 changes: 10 additions & 0 deletions src/__tests__/utils/range.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* Создает массив чисел, увеличивающихся на единицу, начиная с начального числа и заканчивая конечным числом.
* Это замена оригинальной функции `range` из библиотеки lodash.
* @param {number} start - Начальное число диапазона.
* @param {number} end - Конечное число диапазона.
* @returns {number[]} Возвращает новый массив чисел от `start` до `end`.
*/
export function range(start: number, end: number): number[] {
return Array.from({length: (end - start)}, (_, i) => start + i);
}
3 changes: 1 addition & 2 deletions src/__tests__/utils/window.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { isNumber } from 'lodash';
import { act } from 'react-dom/test-utils';

import { isNumber } from './isNumber';
export enum WindowSizeEnum {
big = 1200,
small = 300,
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/useAndroidKeyboard.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
*/

import { renderHook } from '@testing-library/react';
import { noop } from 'lodash';

import {
WindowSizeEnum,
Expand All @@ -14,6 +13,7 @@ import {
} from '__tests__/utils/window';

import useAndroidKeyboard from './useAndroidKeyboard';
import noop from "../noop";

const KEYBOARD_HEIGHT_IN_PERCENT = 21;

Expand Down
34 changes: 34 additions & 0 deletions src/hooks/usePreventDefaultTouchMove.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import * as React from 'react';

/**
* Предотвращает стандартное поведение браузера при скролле на мобильных устройствах.
*/
export const usePreventDefaultTouchMove = (): React.RefObject<HTMLDivElement> => {
const refContainer = React.useRef<HTMLDivElement>(null);

React.useEffect(() => {
const container = refContainer.current;

if (!container) {
return;
}

const preventDefaultTouchMove = (e: TouchEvent) => {
e.stopPropagation();
e.preventDefault();
};

container.addEventListener('touchmove', preventDefaultTouchMove, {
capture: true,
passive: false,
});

return () => {
container.removeEventListener('touchmove', preventDefaultTouchMove);
};
}, []);

return refContainer;
};

export default usePreventDefaultTouchMove;
6 changes: 3 additions & 3 deletions src/pluralize.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { random, range } from 'lodash';

import pluralize, { plural } from './pluralize';
import { PluralizeWordsType } from './types/pluralize';
import { PluralizeWordsType } from 'types/pluralize';
import {random} from '__tests__/utils/random';
import {range} from '__tests__/utils/range';

const variants: PluralizeWordsType = {
one: 'кот',
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"types/*": ["types/*"],
"hooks/*": ["hooks/*"]
},
"types": ["axios", "react", "lodash", "node"]
"types": ["axios", "react", "node"]
},
"main": "./src/index.ts",
"include": ["src"],
Expand Down
Loading