Skip to content

Latest commit

 

History

History
302 lines (193 loc) · 13.8 KB

README.ru.md

File metadata and controls

302 lines (193 loc) · 13.8 KB

@funboxteam/diamonds

Set of diamonds

npm

В этом репозитории хранится набор различных хелперов, которые когда-то пригодились нам в проектах, и возможно ещё пригодятся в будущем.

Все хэлперы независимы друг от друга, а потому при импорте конкретных функций в итоговый бандл будут попадать только они, а не вся библиотека.

Содержание

Назначение

Когда разработчики работают над проектами, они используют большое количество маленьких функций, которые не связаны с проектом контекстуально. Обычно такие функции хранятся в папках вроде utils или helpers.

Чтобы избавиться от копи-паста таких функций из проекта в проект, мы создали этот пакет.

Все функции, что в нём лежат, не нацелены на то, чтобы быть абсолютно готовыми к непредвиденному использованию. Они делают то, что заявлено, так, как заявлено, и ничего сверх.

Установка

Добавить пакет в зависимости:

npm install --save @funboxteam/diamonds 

Импортировать необходимые функции:

import { getUniqueId } from '@funboxteam/diamonds';

Список хэлперов

Вообще легче просто посмотреть исходный код хэлперов, ибо они достаточно маленькие. Но если нужно описание, то вот оно.

Преобразует Base64-строку в Uint8Array.

Первая функция отключает скролл на текущей страницы (с возможностью сохранения текущего местоположения), а вторая возвращает всё как было, восстанавливая местоположение, если оно было сохранено.

Пригождается, когда нужно, например, отключить скролл при открытии сайдбара, а при закрытии включить.

Переводит строку из camelCase в kebab-case.

Приводит первый символ строки к верхнему регистру.

Возвращает переданные параметры в виде строки с цветовыми тегами внутри.

Пригождается, когда нужно раскрасить логи в консоли.

Превращает строку с куками (обычно, возвращаемую document.cookie) в объект.

Конвертирует DataURI строку в объект Blob.

Пригождается, когда нужно отправить на сервер изображение, полученное из редактора на Canvas.

Возвращает функцию, которая вызовет колбэк только через указанное количество времени, прошедшее с момента последнего вызова этой функции.

Пригождается, когда нужно, например, повесить обработчик на скролл, который вызовется только через N мс после завершения потока событий.

Возвращает подробную копию переданного объекта. Не работает с циклическими ссылками.

Пригождается, когда нужно «глубоко» скопировать объект, т. к. просто Object.assign не подходит, ибо создаёт только поверхностную копию, и если у объекта есть вложенные объекты, они не копируются, а линкуются.

Производит «глубокое» сравнение двух переданных параметров.

Возвращает значение последнего найденного в массиве элемента, которое удовлетворяет условию переданному в колбэке. Или undefined, если такого элемента нет.

Преобразует размер в байтах в KB, MB, GB и т. д.

Форматирует число (или корректную строку с числом) по правилам русской типографики.

Пригождается, когда нужно отформатировать, например, стоимость чего-то.

Форматирует число (или корректную строку с числом) по маске мобильных номеров телефонов РФ.

Возвращает ширину скроллбара в браузере.

Используется при формировании свойства displayName для HOC-компонентов в Реакте.

Извлекает из EXIF информацию об ориентации изображения.

Пример использования:

getImageOrientation.call(this, image, orientation => {
  let rotate;

  switch (orientation) {
    case 8:
      rotate = 270;
      break;
    case 6:
      rotate = 90;
      break;
    case 3:
      rotate = 180;
      break;
    default:
      rotate = 0;
  }

  this.setState({ rotate });
});

Возвращает свойство из объекта по указанному «пути».

Пригождается, когда приходится работать с объектами с большой вложенностью, и не хочется писать длинные условия. getObjectPath(obj, 'key1.key2.key3') и готово.

Выбирает и возвращает правильное название единиц для переданного числа.

Пригождается, когда в зависимости от числа нужно менять связанное с ним слово: «1 день», «2 дня», «5 дней».

Возвращает псевдослучайное число в указанном диапазоне.

Возвращает строку сгенерированную по принципу «префикс-число», где префикс — это значение переданного параметра (или «id»), а число каждый раз уникальное.

Пригождается, когда нужно, например, контролам на странице выдать уникальные ID, чтобы связать их с лэйблами.

Переводит строку с HEX-нотацией цвета в объект с RGB-нотацией.

Возвращает true, если переданный элемент полностью (или нет, в зависимости от переданного параметра) виден во вьюпорте пользователя.

Возвращает true, если переданная строка — валидный адрес эл. почты.

Проверяет поддержку браузером переданного значения атрибута type блока input.

Пригождается, когда нужно проверить, поддерживает ли браузер какой-то специфический тип input (в старых или мобильных браузерах, например).

Возвращает true, если по UA кажется, что браузер пользователя мобильный.

Пригождается, когда не нужна точная проверка (используемые внутри проверки довольно простые).

Переводит строку из kebab-case в camelCase.

Превращает объект, в котором значения ключей представлены примитивными типами или массивами примитивных типов, в query-строку.

Берёт передаваемый объект, и возвращает новый такой же, но без перечисленных ключей.

Типичный пример использования в Реакте: omit(this.props, 'mods', 'mix').

Берёт передаваемый объект, и возвращает новый такой же, но только с перечисленными ключами, опуская все остальные.

Превращает query-строку в объект.

Переводит объект с RGB-нотацией цвета в строку с HEX-нотацией.

Перемешивает переданный массив и возвращает его.

Возвращает Promise, который ждёт указанное количество миллисекунд прежде чем зарезолвиться.

Предоставляет возможность безопасного использования localStorage.

Превращает переданный колбэк в функцию, при вызове которой колбэк вызовется только в том случае, если прошло указанное количество времени.

Пригождается, когда нужно, например, отправлять данные при скролле, но делать это не мгновенно, а каждые N мс, чтобы не плодить кучу запросов.

Благодарности

Клёвую картинку для репозитория нарисовал Игорь Гарибальди.

Sponsored by FunBox