@huridocs/react-text-selection-handler 0.2.9 → 0.2.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"HandleTextSelection.d.ts","sourceRoot":"","sources":["../src/HandleTextSelection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAqB,MAAM,OAAO,CAAC;AAGpE,OAAO,EAA+B,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7E,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,GAAG,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAcD,QAAA,MAAM,mBAAmB,EAAE,iBAAiB,CAAC,qBAAqB,CA8DjE,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"HandleTextSelection.d.ts","sourceRoot":"","sources":["../src/HandleTextSelection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,iBAAiB,EAAU,MAAM,OAAO,CAAC;AAGzD,OAAO,EAA+B,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7E,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,GAAG,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAcD,QAAA,MAAM,mBAAmB,EAAE,iBAAiB,CAAC,qBAAqB,CAgDjE,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useRef } from 'react';
1
+ import React, { useRef } from 'react';
2
2
  import { elementContainsDomRect } from './elementContainsDomRect';
3
3
  import { rangeToTextRects } from './rangeToTextRects';
4
4
  import { domRectToSelectionRectangle } from './TextSelection';
@@ -11,27 +11,17 @@ const normalizedFirefoxRange = (selection) => {
11
11
  range.setEnd(finalRange.endContainer, finalRange.endOffset);
12
12
  return range;
13
13
  };
14
- const HandleTextSelection = ({ onSelect, onDeselect, children, }) => {
14
+ const HandleTextSelection = ({ onSelect, onDeselect = () => { }, children, }) => {
15
15
  const ref = useRef(null);
16
- const hasSelected = useRef(false);
17
- const deselectionHandler = () => {
18
- if (onDeselect && hasSelected.current) {
19
- onDeselect();
20
- hasSelected.current = false;
21
- }
22
- };
23
- useEffect(() => {
24
- document.addEventListener('selectionchange', deselectionHandler);
25
- return () => {
26
- document.removeEventListener('selectionchange', deselectionHandler);
27
- };
28
- }, []);
29
16
  const getSelection = () => {
30
17
  const selection = window.getSelection();
31
- if (!ref.current || !(selection === null || selection === void 0 ? void 0 : selection.toString().trim())) {
18
+ if (!ref.current) {
19
+ return;
20
+ }
21
+ if (!(selection === null || selection === void 0 ? void 0 : selection.toString().trim())) {
22
+ onDeselect();
32
23
  return;
33
24
  }
34
- hasSelected.current = true;
35
25
  const regionElements = Array.from(ref.current.querySelectorAll('div[data-region-selector-id]'));
36
26
  const range = normalizedFirefoxRange(selection);
37
27
  const selectionRectangles = rangeToTextRects(range)
@@ -1 +1 @@
1
- {"version":3,"file":"HandleTextSelection.js","sourceRoot":"","sources":["../src/HandleTextSelection.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleTextSelection.js","sourceRoot":"","sources":["../src/HandleTextSelection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAqB,MAAM,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAiB,MAAM,iBAAiB,CAAC;AAQ7E,MAAM,OAAO,GAAG,CAAK,KAAe,EAAc,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;AAEpE,MAAM,sBAAsB,GAAG,CAAC,SAAoB,EAAE,EAAE;IACtD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAE3C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAClE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAA6C,CAAC,EACrE,QAAQ,EACR,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,EACrB,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,GAAG,IAAI,EAAE,CAAA,EAAE,CAAC;YAClC,UAAU,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAEhG,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,KAAK,CAAC;aAChD,GAAG,CAAC,SAAS,CAAC,EAAE;YACf,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,OAAO,CACL,6BACE,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,CAAC,CAAC,EAAE;;YACf,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChB,MAAA,MAAM,CAAC,YAAY,EAAE,0CAAE,eAAe,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC,EACD,SAAS,EAAE,YAAY,IAEtB,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huridocs/react-text-selection-handler",
3
- "version": "0.2.9",
3
+ "version": "0.2.11",
4
4
  "main": "./dist/index.js",
5
5
  "description": "React pdf handler allows to render a PDF and handle text selection and highlights.",
6
6
  "author": "HURIDOCS",
@@ -10,7 +10,7 @@
10
10
  "url": "git+https://github.com/huridocs/react-text-selection-handler.git"
11
11
  },
12
12
  "engines": {
13
- "node": ">=20.12.0",
13
+ "node": ">=20.9.0",
14
14
  "npm": ">=9"
15
15
  },
16
16
  "publishConfig": {
@@ -1,4 +1,4 @@
1
- import React, { FunctionComponent, useEffect, useRef } from 'react';
1
+ import React, { FunctionComponent, useRef } from 'react';
2
2
  import { elementContainsDomRect } from './elementContainsDomRect';
3
3
  import { rangeToTextRects } from './rangeToTextRects';
4
4
  import { domRectToSelectionRectangle, TextSelection } from './TextSelection';
@@ -23,34 +23,20 @@ const normalizedFirefoxRange = (selection: Selection) => {
23
23
 
24
24
  const HandleTextSelection: FunctionComponent<SelectionHandlerProps> = ({
25
25
  onSelect,
26
- onDeselect,
26
+ onDeselect = () => {},
27
27
  children,
28
28
  }) => {
29
29
  const ref = useRef<HTMLDivElement>(null);
30
- const hasSelected = useRef(false);
31
-
32
- const deselectionHandler = () => {
33
- if (onDeselect && hasSelected.current) {
34
- onDeselect();
35
- hasSelected.current = false;
36
- }
37
- };
38
-
39
- useEffect(() => {
40
- document.addEventListener('selectionchange', deselectionHandler);
41
- return () => {
42
- document.removeEventListener('selectionchange', deselectionHandler);
43
- };
44
- }, []);
45
30
 
46
31
  const getSelection = () => {
47
32
  const selection = window.getSelection();
48
-
49
- if (!ref.current || !selection?.toString().trim()) {
33
+ if (!ref.current) {
34
+ return;
35
+ }
36
+ if (!selection?.toString().trim()) {
37
+ onDeselect();
50
38
  return;
51
39
  }
52
-
53
- hasSelected.current = true;
54
40
 
55
41
  const regionElements = Array.from(ref.current.querySelectorAll('div[data-region-selector-id]'));
56
42