@qtpy/use-ref-map 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  | `getRef` | `(key: string) => RefObject<T>` | Возвращает ссылку (`RefObject`) для указанного ключа. Если ссылка не существует, создаётся новая с `current: null`. |
19
19
  | `deleteRef` | `(key: string) => void` | Удаляет ссылку и соответствующий ключ из внутреннего хранилища. |
20
20
  | `clearAllRefs` | `() => void` | Очищает все ссылки и ключи из внутреннего хранилища. |
21
- | `allKeys` | `string[]` | Возвращает массив всех ключей, связанных с существующими ссылками. |
21
+ | `getAllKeys` | `() => string[]` | Возвращает массив всех ключей, связанных с существующими ссылками. |
22
22
 
23
23
  ## Использование
24
24
 
@@ -32,7 +32,7 @@ import useEvent from '@qtpy/use-event'; // хук для обработки со
32
32
  import { useState } from 'react';
33
33
 
34
34
  function ProjectsPage() {
35
- const { getRef, allKeys } = useRefMap<HTMLDivElement>();
35
+ const { getRef, getAllKeys } = useRefMap<HTMLDivElement>();
36
36
  const [activeIndex, setActiveIndex] = useState(0);
37
37
  const projects = ['Проект 1', 'Проект 2', 'Проект 3'];
38
38
 
@@ -64,7 +64,7 @@ function ProjectsPage() {
64
64
  ))}
65
65
  </div>
66
66
  <p>Активный проект: {projects[activeIndex]}</p>
67
- <p>Ключи ссылок: {allKeys.join(', ')}</p>
67
+ <p>Ключи ссылок: {getAllKeys.join(', ')}</p>
68
68
  </div>
69
69
  );
70
70
  }
@@ -72,7 +72,7 @@ function ProjectsPage() {
72
72
 
73
73
  Ссылка на хук [**useEvent**](https://www.npmjs.com/package/@qtpy/use-event)
74
74
 
75
- В этом примере хук `useRefMap` используется для создания ссылок на элементы `<div>` с помощью метода `map` и ключей вида `project_${index}`. При прокрутке страницы хук `useEvent` проверяет положение каждого элемента через `getBoundingClientRect` и обновляет `activeIndex`, если элемент выходит за верхнюю границу окна, подсвечивая активный проект. Список ключей выводится через `allKeys`.
75
+ В этом примере хук `useRefMap` используется для создания ссылок на элементы `<div>` с помощью метода `map` и ключей вида `project_${index}`. При прокрутке страницы хук `useEvent` проверяет положение каждого элемента через `getBoundingClientRect` и обновляет `activeIndex`, если элемент выходит за верхнюю границу окна, подсвечивая активный проект. Список ключей выводится через `getAllKeys`.
76
76
 
77
77
  ### Императивное управление (вызов метода компонента)
78
78
 
@@ -135,11 +135,11 @@ function Component() {
135
135
  import useRefMap from '@qtpy/use-ref-map';
136
136
 
137
137
  function Component() {
138
- const { getRef, clearAllRefs, allKeys } = useRefMap<HTMLElement>();
138
+ const { getRef, clearAllRefs, getAllKeys } = useRefMap<HTMLElement>();
139
139
 
140
140
  const clearRefs = () => {
141
141
  clearAllRefs();
142
- console.log('Все ссылки очищены. Текущие ключи:', allKeys);
142
+ console.log('Все ссылки очищены. Текущие ключи:', getAllKeys());
143
143
  };
144
144
 
145
145
  return (
@@ -147,7 +147,7 @@ function Component() {
147
147
  <section ref={getRef('section1')}>Секция 1</section>
148
148
  <section ref={getRef('section2')}>Секция 2</section>
149
149
  <button onClick={clearRefs}>Очистить все ссылки</button>
150
- <p>Ключи: {allKeys.join(', ')}</p>
150
+ <p>Ключи: {getAllKeys().join(', ')}</p>
151
151
  </div>
152
152
  );
153
153
  }
@@ -161,10 +161,10 @@ function Component() {
161
161
  import useRefMap from '@qtpy/use-ref-map';
162
162
 
163
163
  function Component() {
164
- const { getRef, allKeys } = useRefMap<HTMLElement>();
164
+ const { getRef, getAllKeys } = useRefMap<HTMLElement>();
165
165
 
166
166
  const logKeys = () => {
167
- console.log('Текущие ключи:', allKeys);
167
+ console.log('Текущие ключи:', getAllKeys());
168
168
  };
169
169
 
170
170
  return (
@@ -172,7 +172,7 @@ function Component() {
172
172
  <section ref={getRef('section1')}>Секция 1</section>
173
173
  <section ref={getRef('section2')}>Секция 2</section>
174
174
  <button onClick={logKeys}>Вывести ключи</button>
175
- <p>Ключи: {allKeys.join(', ')}</p>
175
+ <p>Ключи: {getAllKeys().join(', ')}</p>
176
176
  </div>
177
177
  );
178
178
  }
@@ -189,7 +189,7 @@ export type RefMapMethods<T> = {
189
189
  getRef: (key: string) => RefObject<T>;
190
190
  deleteRef: (key: string) => void;
191
191
  clearAllRefs: () => void;
192
- allKeys: string[];
192
+ getAllKeys: () => string[];
193
193
  };
194
194
 
195
195
  export type UseRefMapReturn<T, E extends keyof RefMapMethods<T>> = Pick<RefMapMethods<T>, E>;
@@ -205,5 +205,5 @@ export type UseRefMapReturn<T, E extends keyof RefMapMethods<T>> = Pick<RefMapMe
205
205
  - **Инициализация ссылок**: Метод `getRef` создаёт новую ссылку с `current: null`, если ссылка для указанного ключа ещё не существует.
206
206
  - **Типизация**: Хук поддерживает обобщённый тип `T` для работы с любыми типами данных (например, пользовательскими интерфейсами компонентов или `HTMLElement`). В отличие от предыдущей версии, `getRef` возвращает `RefObject<T>` вместо `RefObject<Partial<T>>`, предполагая, что `current` может быть `null`, но типизация остаётся строгой.
207
207
  - **Управление памятью**: Метод `deleteRef` удаляет отдельные ссылки, а `clearAllRefs` очищает все ссылки, предотвращая утечки памяти. Хук автоматически очищает все ссылки при размонтировании компонента через `useEffect`.
208
- - **Сохранение состояния**: Хук использует `useRef` для хранения ссылок и ключей, а `useMemo` для кэширования массива ключей, обновляемого через внутренний счётчик версии (`version`).
209
- - **Ограничение типизации**: Свойство `allKeys` возвращает `string[]` напрямую, а не функцию, что упрощает доступ к ключам, но требует использования `useMemo` для оптимизации рендеринга.
208
+ - **Сохранение состояния**: Хук использует `useRef` для хранения ссылок и ключей.
209
+ - **Ограничение типизации**: Свойство `getAllKeys` возвращает `string[]`.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";const t=require("react");function l(){const r=t.useRef({}),n=t.useRef(new Set),[u,f]=t.useState(0),o=e=>(r.current[e]||(r.current[e]={current:null},n.current.add(e)),r.current[e]),c=e=>{r.current[e]&&(delete r.current[e],n.current.delete(e))},s=()=>{Object.keys(r.current).forEach(c),f(e=>e+1)};return t.useEffect(()=>()=>s(),[]),{getRef:o,deleteRef:c,clearAllRefs:s,allKeys:t.useMemo(()=>Array.from(n.current),[u])}}module.exports=l;
1
+ "use strict";const c=require("react");function f(){const r=c.useRef({}),t=c.useRef(new Set),s=e=>(r.current[e]||(r.current[e]={current:null},t.current.add(e)),r.current[e]),n=e=>{r.current[e]&&(delete r.current[e],t.current.delete(e))},u=()=>{Object.keys(r.current).forEach(n)};return c.useEffect(()=>u,[]),{getRef:s,deleteRef:n,clearAllRefs:u,getAllKeys:()=>Array.from(t.current)}}module.exports=f;
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export type RefMapMethods<T> = {
4
4
  getRef: (key: string) => RefObject<T>;
5
5
  deleteRef: (key: string) => void;
6
6
  clearAllRefs: () => void;
7
- allKeys: string[];
7
+ getAllKeys: () => string[];
8
8
  };
9
9
  export default function useRefMap<T>(): RefMapMethods<T>;
10
10
  export type UseRefMapReturn<T, E extends keyof RefMapMethods<T>> = Pick<RefMapMethods<T>, E>;
package/dist/index.mjs CHANGED
@@ -1,17 +1,17 @@
1
- import { useRef as s, useState as l, useEffect as a, useMemo as d } from "react";
2
- function R() {
3
- const r = s({}), t = s(/* @__PURE__ */ new Set()), [u, f] = l(0), o = (e) => (r.current[e] || (r.current[e] = { current: null }, t.current.add(e)), r.current[e]), n = (e) => {
1
+ import { useRef as u, useEffect as s } from "react";
2
+ function o() {
3
+ const r = u({}), t = u(/* @__PURE__ */ new Set()), f = (e) => (r.current[e] || (r.current[e] = { current: null }, t.current.add(e)), r.current[e]), n = (e) => {
4
4
  r.current[e] && (delete r.current[e], t.current.delete(e));
5
5
  }, c = () => {
6
- Object.keys(r.current).forEach(n), f((e) => e + 1);
6
+ Object.keys(r.current).forEach(n);
7
7
  };
8
- return a(() => () => c(), []), {
9
- getRef: o,
8
+ return s(() => c, []), {
9
+ getRef: f,
10
10
  deleteRef: n,
11
11
  clearAllRefs: c,
12
- allKeys: d(() => Array.from(t.current), [u])
12
+ getAllKeys: () => Array.from(t.current)
13
13
  };
14
14
  }
15
15
  export {
16
- R as default
16
+ o as default
17
17
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qtpy/use-ref-map",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "author": "QtPy",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/TheOnlyFastCoder2/QtPy-library/tree/main/useRefMap",