tree-element 0.1.1 → 0.3.0

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.
Files changed (155) hide show
  1. package/README.md +43 -31
  2. package/lib/animation.d.ts +2 -2
  3. package/lib/animation.d.ts.map +1 -1
  4. package/lib/animation.js +16 -12
  5. package/lib/animation.js.map +1 -1
  6. package/lib/classNames.d.ts.map +1 -1
  7. package/lib/classNames.js +2 -2
  8. package/lib/classNames.js.map +1 -1
  9. package/lib/dataLoader.d.ts +1 -0
  10. package/lib/dataLoader.d.ts.map +1 -1
  11. package/lib/dataLoader.js +22 -20
  12. package/lib/dataLoader.js.map +1 -1
  13. package/lib/dragAndDropHandler/binarySearch.js +3 -3
  14. package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
  15. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
  16. package/lib/dragAndDropHandler/dragElement.js +11 -13
  17. package/lib/dragAndDropHandler/dragElement.js.map +1 -1
  18. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  19. package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
  20. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  21. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  22. package/lib/dragAndDropHandler/index.js +125 -158
  23. package/lib/dragAndDropHandler/index.js.map +1 -1
  24. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
  25. package/lib/dragAndDropHandler/iterateVisibleNodes.js +23 -22
  26. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
  27. package/lib/dragAndDropHandler/types.d.ts.map +1 -1
  28. package/lib/elementsRenderer.d.ts +20 -7
  29. package/lib/elementsRenderer.d.ts.map +1 -1
  30. package/lib/elementsRenderer.js +195 -136
  31. package/lib/elementsRenderer.js.map +1 -1
  32. package/lib/events.d.ts +44 -11
  33. package/lib/events.d.ts.map +1 -1
  34. package/lib/index.d.ts +36 -13
  35. package/lib/index.d.ts.map +1 -1
  36. package/lib/index.js +386 -349
  37. package/lib/index.js.map +1 -1
  38. package/lib/keyHandler.d.ts +13 -8
  39. package/lib/keyHandler.d.ts.map +1 -1
  40. package/lib/keyHandler.js +106 -51
  41. package/lib/keyHandler.js.map +1 -1
  42. package/lib/methodTypes.d.ts +3 -3
  43. package/lib/methodTypes.d.ts.map +1 -1
  44. package/lib/mouseHandler.d.ts +1 -1
  45. package/lib/mouseHandler.d.ts.map +1 -1
  46. package/lib/mouseHandler.js +36 -49
  47. package/lib/mouseHandler.js.map +1 -1
  48. package/lib/mouseUtils.d.ts.map +1 -1
  49. package/lib/mouseUtils.js +2 -2
  50. package/lib/mouseUtils.js.map +1 -1
  51. package/lib/node.d.ts +47 -16
  52. package/lib/node.d.ts.map +1 -1
  53. package/lib/node.js +169 -171
  54. package/lib/node.js.map +1 -1
  55. package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
  56. package/lib/nodeElement/borderDropHint.js +4 -5
  57. package/lib/nodeElement/borderDropHint.js.map +1 -1
  58. package/lib/nodeElement/folderElement.d.ts +8 -5
  59. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  60. package/lib/nodeElement/folderElement.js +75 -67
  61. package/lib/nodeElement/folderElement.js.map +1 -1
  62. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
  63. package/lib/nodeElement/ghostDropHint.js +13 -13
  64. package/lib/nodeElement/ghostDropHint.js.map +1 -1
  65. package/lib/nodeElement/index.d.ts +2 -1
  66. package/lib/nodeElement/index.d.ts.map +1 -1
  67. package/lib/nodeElement/index.js +38 -30
  68. package/lib/nodeElement/index.js.map +1 -1
  69. package/lib/nodeUtils.d.ts.map +1 -1
  70. package/lib/nodeUtils.js +1 -1
  71. package/lib/nodeUtils.js.map +1 -1
  72. package/lib/options.d.ts +19 -3
  73. package/lib/options.d.ts.map +1 -1
  74. package/lib/positionUtils.js +3 -3
  75. package/lib/positionUtils.js.map +1 -1
  76. package/lib/requestUrl.d.ts +1 -1
  77. package/lib/requestUrl.d.ts.map +1 -1
  78. package/lib/requestUrl.js +6 -17
  79. package/lib/requestUrl.js.map +1 -1
  80. package/lib/saveStateHandler.d.ts.map +1 -1
  81. package/lib/saveStateHandler.js +59 -89
  82. package/lib/saveStateHandler.js.map +1 -1
  83. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
  84. package/lib/scrollHandler/containerScrollParent.js +11 -18
  85. package/lib/scrollHandler/containerScrollParent.js.map +1 -1
  86. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
  87. package/lib/scrollHandler/createScrollParent.js +12 -13
  88. package/lib/scrollHandler/createScrollParent.js.map +1 -1
  89. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
  90. package/lib/scrollHandler/documentScrollParent.js +18 -27
  91. package/lib/scrollHandler/documentScrollParent.js.map +1 -1
  92. package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
  93. package/lib/scrollHandler/scrollParent.js +30 -34
  94. package/lib/scrollHandler/scrollParent.js.map +1 -1
  95. package/lib/scrollHandler.d.ts.map +1 -1
  96. package/lib/scrollHandler.js +11 -14
  97. package/lib/scrollHandler.js.map +1 -1
  98. package/lib/selectNodeHandler.d.ts +4 -2
  99. package/lib/selectNodeHandler.d.ts.map +1 -1
  100. package/lib/selectNodeHandler.js +64 -83
  101. package/lib/selectNodeHandler.js.map +1 -1
  102. package/lib/setDefaultOptions.d.ts.map +1 -1
  103. package/lib/setDefaultOptions.js +34 -38
  104. package/lib/setDefaultOptions.js.map +1 -1
  105. package/lib/triggerCustomEvent.d.ts.map +1 -1
  106. package/lib/triggerCustomEvent.js +2 -2
  107. package/lib/triggerCustomEvent.js.map +1 -1
  108. package/lib/util.d.ts.map +1 -1
  109. package/lib/util.js +2 -2
  110. package/lib/util.js.map +1 -1
  111. package/lib/version.d.ts +1 -1
  112. package/lib/version.js +1 -1
  113. package/lib/version.js.map +1 -1
  114. package/package.json +43 -32
  115. package/src/animation.ts +14 -12
  116. package/src/classNames.ts +52 -52
  117. package/src/dataLoader.ts +79 -71
  118. package/src/dragAndDropHandler/binarySearch.ts +17 -17
  119. package/src/dragAndDropHandler/dragElement.ts +51 -50
  120. package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
  121. package/src/dragAndDropHandler/index.ts +334 -348
  122. package/src/dragAndDropHandler/iterateVisibleNodes.ts +61 -63
  123. package/src/dragAndDropHandler/types.ts +5 -5
  124. package/src/elementsRenderer.ts +377 -294
  125. package/src/events.ts +241 -208
  126. package/src/header.txt +1 -1
  127. package/src/index.ts +259 -229
  128. package/src/keyHandler.ts +179 -115
  129. package/src/methodTypes.ts +7 -10
  130. package/src/mouseHandler.ts +316 -316
  131. package/src/mouseUtils.ts +14 -14
  132. package/src/node.ts +773 -771
  133. package/src/nodeElement/borderDropHint.ts +25 -25
  134. package/src/nodeElement/folderElement.ts +116 -102
  135. package/src/nodeElement/ghostDropHint.ts +64 -62
  136. package/src/nodeElement/index.ts +81 -73
  137. package/src/nodeUtils.ts +5 -5
  138. package/src/options.ts +25 -5
  139. package/src/requestUrl.ts +7 -14
  140. package/src/saveStateHandler.ts +191 -207
  141. package/src/scrollHandler/containerScrollParent.ts +40 -49
  142. package/src/scrollHandler/createScrollParent.ts +26 -27
  143. package/src/scrollHandler/documentScrollParent.ts +66 -72
  144. package/src/scrollHandler/scrollParent.ts +90 -86
  145. package/src/scrollHandler.ts +45 -45
  146. package/src/selectNodeHandler.ts +171 -165
  147. package/src/setDefaultOptions.ts +44 -32
  148. package/src/triggerCustomEvent.ts +7 -3
  149. package/src/util.ts +2 -3
  150. package/src/version.ts +1 -1
  151. package/tree_element.css +87 -69
  152. package/tree_element.debug.js +3866 -3831
  153. package/tree_element.debug.js.map +1 -1
  154. package/tree_element.js +2 -2
  155. package/tree_element.js.map +1 -1
package/src/animation.ts CHANGED
@@ -11,8 +11,7 @@ export const getAnimationDuration = (duration: AnimationSpeed): number => {
11
11
  export const slideDown = (
12
12
  element: HTMLElement,
13
13
  animationSpeed: AnimationSpeed,
14
- onFinished: () => void,
15
- ): void => {
14
+ ): Promise<void> => {
16
15
  element.style.display = "block";
17
16
 
18
17
  const animation = element.animate(
@@ -23,16 +22,17 @@ export const slideDown = (
23
22
  { duration: getAnimationDuration(animationSpeed) },
24
23
  );
25
24
 
26
- animation.onfinish = () => {
27
- onFinished();
28
- };
25
+ return new Promise((resolve) => {
26
+ animation.onfinish = () => {
27
+ resolve();
28
+ };
29
+ });
29
30
  };
30
31
 
31
32
  export const slideUp = (
32
33
  element: HTMLElement,
33
34
  animationSpeed: AnimationSpeed,
34
- onFinished: () => void,
35
- ): void => {
35
+ ): Promise<void> => {
36
36
  const animation = element.animate(
37
37
  [
38
38
  { height: `${element.scrollHeight}px`, overflow: "hidden" },
@@ -41,8 +41,10 @@ export const slideUp = (
41
41
  { duration: getAnimationDuration(animationSpeed) },
42
42
  );
43
43
 
44
- animation.onfinish = () => {
45
- element.style.display = "none";
46
- onFinished();
47
- };
48
- };
44
+ return new Promise((resolve) => {
45
+ animation.onfinish = () => {
46
+ element.style.display = "none";
47
+ resolve();
48
+ };
49
+ });
50
+ };
package/src/classNames.ts CHANGED
@@ -1,33 +1,33 @@
1
1
  export interface ClassNames {
2
- border: string;
3
- circle: string;
4
- closed: string;
5
- common: string;
6
- dnd: string;
7
- dragging: string;
8
- element: string;
9
- folder: string;
10
- ghost: string;
11
- inside: string;
12
- line: string;
13
- loading: string;
14
- moving: string;
15
- rtl: string;
16
- selected: string;
17
- title: string;
18
- titleButtonLeft: string;
19
- titleButtonRight: string;
20
- titleFolder: string;
21
- toggler: string;
22
- togglerLeft: string;
23
- togglerRight: string;
24
- tree: string;
2
+ border: string;
3
+ circle: string;
4
+ closed: string;
5
+ common: string;
6
+ dnd: string;
7
+ dragging: string;
8
+ element: string;
9
+ folder: string;
10
+ ghost: string;
11
+ inside: string;
12
+ line: string;
13
+ loading: string;
14
+ moving: string;
15
+ rtl: string;
16
+ selected: string;
17
+ title: string;
18
+ titleButtonLeft: string;
19
+ titleButtonRight: string;
20
+ titleFolder: string;
21
+ toggler: string;
22
+ togglerLeft: string;
23
+ togglerRight: string;
24
+ tree: string;
25
25
  }
26
26
 
27
27
  export interface ClassNamesOptions {
28
- classPrefix: string;
29
- commonClassName?: string;
30
- treeClassName?: string;
28
+ classPrefix: string;
29
+ commonClassName?: string;
30
+ treeClassName?: string;
31
31
  }
32
32
 
33
33
  export const DEFAULT_CLASS_PREFIX = "tree-element";
@@ -38,33 +38,33 @@ export const DEFAULT_CLASS_PREFIX = "tree-element";
38
38
  * their own.
39
39
  */
40
40
  const createClassNames = ({
41
- classPrefix,
42
- commonClassName,
43
- treeClassName,
41
+ classPrefix,
42
+ commonClassName,
43
+ treeClassName,
44
44
  }: ClassNamesOptions): ClassNames => ({
45
- border: `${classPrefix}-border`,
46
- circle: `${classPrefix}-circle`,
47
- closed: `${classPrefix}-closed`,
48
- common: commonClassName ?? `${classPrefix}-common`,
49
- dnd: `${classPrefix}-dnd`,
50
- dragging: `${classPrefix}-dragging`,
51
- element: `${classPrefix}-element`,
52
- folder: `${classPrefix}-folder`,
53
- ghost: `${classPrefix}-ghost`,
54
- inside: `${classPrefix}-inside`,
55
- line: `${classPrefix}-line`,
56
- loading: `${classPrefix}-loading`,
57
- moving: `${classPrefix}-moving`,
58
- rtl: `${classPrefix}-rtl`,
59
- selected: `${classPrefix}-selected`,
60
- title: `${classPrefix}-title`,
61
- titleButtonLeft: `${classPrefix}-title-button-left`,
62
- titleButtonRight: `${classPrefix}-title-button-right`,
63
- titleFolder: `${classPrefix}-title-folder`,
64
- toggler: `${classPrefix}-toggler`,
65
- togglerLeft: `${classPrefix}-toggler-left`,
66
- togglerRight: `${classPrefix}-toggler-right`,
67
- tree: treeClassName ?? classPrefix,
45
+ border: `${classPrefix}-border`,
46
+ circle: `${classPrefix}-circle`,
47
+ closed: `${classPrefix}-closed`,
48
+ common: commonClassName ?? `${classPrefix}-common`,
49
+ dnd: `${classPrefix}-dnd`,
50
+ dragging: `${classPrefix}-dragging`,
51
+ element: `${classPrefix}-element`,
52
+ folder: `${classPrefix}-folder`,
53
+ ghost: `${classPrefix}-ghost`,
54
+ inside: `${classPrefix}-inside`,
55
+ line: `${classPrefix}-line`,
56
+ loading: `${classPrefix}-loading`,
57
+ moving: `${classPrefix}-moving`,
58
+ rtl: `${classPrefix}-rtl`,
59
+ selected: `${classPrefix}-selected`,
60
+ title: `${classPrefix}-title`,
61
+ titleButtonLeft: `${classPrefix}-title-button-left`,
62
+ titleButtonRight: `${classPrefix}-title-button-right`,
63
+ titleFolder: `${classPrefix}-title-folder`,
64
+ toggler: `${classPrefix}-toggler`,
65
+ togglerLeft: `${classPrefix}-toggler-left`,
66
+ togglerRight: `${classPrefix}-toggler-right`,
67
+ tree: treeClassName ?? classPrefix,
68
68
  });
69
69
 
70
70
  export default createClassNames;
package/src/dataLoader.ts CHANGED
@@ -5,89 +5,97 @@ import type { DataFilter } from "./options";
5
5
  import type RequestUrl from "./requestUrl";
6
6
 
7
7
  interface DataLoaderParams {
8
- classNames: ClassNames;
9
- dataFilter?: DataFilter;
10
- loadData: LoadData;
11
- treeElement: HTMLElement;
12
- triggerEvent: TriggerEvent;
8
+ classNames: ClassNames;
9
+ dataFilter?: DataFilter;
10
+ loadData: LoadData;
11
+ treeElement: HTMLElement;
12
+ triggerEvent: TriggerEvent;
13
13
  }
14
14
 
15
15
  export default class DataLoader {
16
- private abortController: AbortController;
17
- private classNames: ClassNames;
18
- private dataFilter?: DataFilter;
19
- private loadData: LoadData;
20
- private treeElement: HTMLElement;
21
- private triggerEvent: TriggerEvent;
16
+ private abortController: AbortController;
17
+ private classNames: ClassNames;
18
+ private dataFilter?: DataFilter;
19
+ private loadData: LoadData;
20
+ private treeElement: HTMLElement;
21
+ private triggerEvent: TriggerEvent;
22
22
 
23
- constructor({
24
- classNames,
25
- dataFilter,
26
- loadData,
27
- treeElement,
28
- triggerEvent,
29
- }: DataLoaderParams) {
30
- this.abortController = new AbortController();
31
- this.classNames = classNames;
32
- this.dataFilter = dataFilter;
33
- this.loadData = loadData;
34
- this.treeElement = treeElement;
35
- this.triggerEvent = triggerEvent;
36
- }
23
+ constructor({
24
+ classNames,
25
+ dataFilter,
26
+ loadData,
27
+ treeElement,
28
+ triggerEvent,
29
+ }: DataLoaderParams) {
30
+ this.abortController = new AbortController();
31
+ this.classNames = classNames;
32
+ this.dataFilter = dataFilter;
33
+ this.loadData = loadData;
34
+ this.treeElement = treeElement;
35
+ this.triggerEvent = triggerEvent;
36
+ }
37
37
 
38
- public deinit(): void {
39
- this.abortController.abort();
40
- }
38
+ public deinit(): void {
39
+ this.abortController.abort();
40
+ }
41
41
 
42
- public async loadFromUrl(
43
- url: RequestUrl,
44
- node?: Node,
45
- ): Promise<void> {
46
- const element = node?.element ?? this.treeElement;
47
- element.classList.add(this.classNames.loading);
42
+ public async loadFromUrl(url: RequestUrl, node?: Node): Promise<void> {
43
+ const element = node?.element ?? this.treeElement;
44
+ element.classList.add(this.classNames.loading);
48
45
 
49
- this.triggerEvent("tree.loading_data", {
50
- element,
51
- node,
52
- });
46
+ // Tell screen readers that the children of the folder are loading
47
+ const titleSpan = node ? this.getTitleSpan(element) : null;
48
+ titleSpan?.setAttribute("aria-busy", "true");
53
49
 
54
- const stopLoading = (): void => {
55
- element.classList.remove(this.classNames.loading);
56
- this.triggerEvent("tree.loaded_data", {
57
- element,
58
- node,
59
- });
60
- };
50
+ this.triggerEvent("tree.loading_data", {
51
+ element,
52
+ node,
53
+ });
61
54
 
62
- const handleResponse = async (response: Response): Promise<void> => {
63
- if (response.ok) {
64
- const data = (await response.json()) as NodeData[];
55
+ const stopLoading = (): void => {
56
+ element.classList.remove(this.classNames.loading);
57
+ titleSpan?.removeAttribute("aria-busy");
58
+ this.triggerEvent("tree.loaded_data", {
59
+ element,
60
+ node,
61
+ });
62
+ };
65
63
 
66
- stopLoading();
67
- this.loadData(
68
- this.dataFilter ? this.dataFilter(data) : data,
69
- node
70
- );
71
- } else {
72
- stopLoading();
64
+ const handleResponse = async (response: Response): Promise<void> => {
65
+ if (response.ok) {
66
+ const data = (await response.json()) as NodeData[];
73
67
 
74
- this.triggerEvent("tree.load_failed", { response });
75
- }
76
- };
68
+ stopLoading();
69
+ this.loadData(this.dataFilter ? this.dataFilter(data) : data, node);
70
+ } else {
71
+ stopLoading();
77
72
 
78
- const signal = this.abortController.signal;
79
- url.setSearchParam("_", Date.now().toString());
73
+ this.triggerEvent("tree.load_failed", { response });
74
+ }
75
+ };
80
76
 
81
- return fetch(url.toString(), { headers: { "Content-Type": "application/json" }, signal })
82
- .then(handleResponse)
83
- .catch((error: unknown) => {
84
- if (this.abortController.signal.aborted) {
85
- // The request was aborted by deinit.
86
- return;
87
- }
77
+ const signal = this.abortController.signal;
78
+ url.setSearchParam("_", Date.now().toString());
88
79
 
89
- stopLoading();
90
- this.triggerEvent("tree.load_failed", { error });
91
- });
92
- }
80
+ return fetch(url.value(), {
81
+ headers: { "Content-Type": "application/json" },
82
+ signal,
83
+ })
84
+ .then(handleResponse)
85
+ .catch((error: unknown) => {
86
+ if (this.abortController.signal.aborted) {
87
+ // The request was aborted by deinit.
88
+ return;
89
+ }
90
+
91
+ stopLoading();
92
+ this.triggerEvent("tree.load_failed", { error });
93
+ });
94
+ }
95
+
96
+ private getTitleSpan(element: HTMLElement): HTMLElement | null {
97
+ return element.querySelector<HTMLElement>(
98
+ `:scope > .${this.classNames.element} > .${this.classNames.title}`,
99
+ );
100
+ }
93
101
  }
@@ -1,27 +1,27 @@
1
1
  function binarySearch<T>(items: T[], compareFn: (a: T) => number): null | T {
2
- let low = 0;
3
- let high = items.length;
2
+ let low = 0;
3
+ let high = items.length;
4
4
 
5
- while (low < high) {
6
- const mid = (low + high) >> 1;
7
- const item = items[mid];
5
+ while (low < high) {
6
+ const mid = (low + high) >> 1;
7
+ const item = items[mid];
8
8
 
9
- if (item === undefined) {
10
- return null;
11
- }
9
+ if (item === undefined) {
10
+ return null;
11
+ }
12
12
 
13
- const compareResult = compareFn(item);
13
+ const compareResult = compareFn(item);
14
14
 
15
- if (compareResult > 0) {
16
- high = mid;
17
- } else if (compareResult < 0) {
18
- low = mid + 1;
19
- } else {
20
- return item;
21
- }
15
+ if (compareResult > 0) {
16
+ high = mid;
17
+ } else if (compareResult < 0) {
18
+ low = mid + 1;
19
+ } else {
20
+ return item;
22
21
  }
22
+ }
23
23
 
24
- return null;
24
+ return null;
25
25
  }
26
26
 
27
27
  export default binarySearch;
@@ -1,62 +1,63 @@
1
1
  import type { ClassNames } from "../classNames";
2
2
 
3
3
  interface DragElementParams {
4
- autoEscape: boolean;
5
- classNames: ClassNames;
6
- nodeName: string;
7
- offsetX: number;
8
- offsetY: number;
9
- treeElement: HTMLElement;
4
+ autoEscape: boolean;
5
+ classNames: ClassNames;
6
+ nodeName: string;
7
+ offsetX: number;
8
+ offsetY: number;
9
+ treeElement: HTMLElement;
10
10
  }
11
11
 
12
12
  class DragElement {
13
- private element: HTMLElement;
14
- private offsetX: number;
15
- private offsetY: number;
16
-
17
- constructor({
18
- autoEscape,
19
- classNames,
20
- nodeName,
21
- offsetX,
22
- offsetY,
23
- treeElement,
24
- }: DragElementParams) {
25
- this.offsetX = offsetX;
26
- this.offsetY = offsetY;
27
-
28
- this.element = this.createElement(nodeName, autoEscape, classNames);
29
-
30
- treeElement.appendChild(this.element);
13
+ private element: HTMLElement;
14
+ private offsetX: number;
15
+ private offsetY: number;
16
+
17
+ constructor({
18
+ autoEscape,
19
+ classNames,
20
+ nodeName,
21
+ offsetX,
22
+ offsetY,
23
+ treeElement,
24
+ }: DragElementParams) {
25
+ this.offsetX = offsetX;
26
+ this.offsetY = offsetY;
27
+
28
+ this.element = this.createElement(nodeName, autoEscape, classNames);
29
+
30
+ treeElement.append(this.element);
31
+ }
32
+
33
+ public move(pageX: number, pageY: number): void {
34
+ this.element.style.left = `${pageX - this.offsetX}px`;
35
+ this.element.style.top = `${pageY - this.offsetY}px`;
36
+ }
37
+
38
+ public remove(): void {
39
+ this.element.remove();
40
+ }
41
+
42
+ private createElement(
43
+ nodeName: string,
44
+ autoEscape: boolean,
45
+ classNames: ClassNames,
46
+ ) {
47
+ const element = document.createElement("span");
48
+ element.classList.add(classNames.title, classNames.dragging);
49
+
50
+ if (autoEscape) {
51
+ element.textContent = nodeName;
52
+ } else {
53
+ // eslint-disable-next-line no-unsanitized/property -- the user opted out of escaping with autoEscape: false
54
+ element.innerHTML = nodeName;
31
55
  }
32
56
 
33
- public move(pageX: number, pageY: number): void {
34
- this.element.style.left = `${pageX - this.offsetX}px`;
35
- this.element.style.top = `${pageY - this.offsetY}px`;
36
- }
37
-
38
- public remove(): void {
39
- this.element.remove();
40
- }
41
-
42
- private createElement(
43
- nodeName: string,
44
- autoEscape: boolean,
45
- classNames: ClassNames,
46
- ) {
47
- const element = document.createElement("span");
48
- element.classList.add(classNames.title, classNames.dragging);
57
+ element.style.position = "absolute";
49
58
 
50
- if (autoEscape) {
51
- element.textContent = nodeName;
52
- } else {
53
- element.innerHTML = nodeName;
54
- }
55
-
56
- element.style.position = "absolute";
57
-
58
- return element;
59
- }
59
+ return element;
60
+ }
60
61
  }
61
62
 
62
63
  export default DragElement;