tree-element 0.1.1 → 0.2.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 (148) hide show
  1. package/README.md +33 -29
  2. package/lib/animation.js +5 -5
  3. package/lib/animation.js.map +1 -1
  4. package/lib/classNames.d.ts.map +1 -1
  5. package/lib/classNames.js +2 -2
  6. package/lib/classNames.js.map +1 -1
  7. package/lib/dataLoader.d.ts.map +1 -1
  8. package/lib/dataLoader.js +14 -20
  9. package/lib/dataLoader.js.map +1 -1
  10. package/lib/dragAndDropHandler/binarySearch.js +3 -3
  11. package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
  12. package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
  13. package/lib/dragAndDropHandler/dragElement.js +9 -12
  14. package/lib/dragAndDropHandler/dragElement.js.map +1 -1
  15. package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
  16. package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
  17. package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
  18. package/lib/dragAndDropHandler/index.d.ts.map +1 -1
  19. package/lib/dragAndDropHandler/index.js +90 -114
  20. package/lib/dragAndDropHandler/index.js.map +1 -1
  21. package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
  22. package/lib/dragAndDropHandler/iterateVisibleNodes.js +10 -10
  23. package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
  24. package/lib/dragAndDropHandler/types.d.ts.map +1 -1
  25. package/lib/elementsRenderer.d.ts +15 -6
  26. package/lib/elementsRenderer.d.ts.map +1 -1
  27. package/lib/elementsRenderer.js +157 -121
  28. package/lib/elementsRenderer.js.map +1 -1
  29. package/lib/events.d.ts.map +1 -1
  30. package/lib/index.d.ts +5 -5
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +249 -252
  33. package/lib/index.js.map +1 -1
  34. package/lib/keyHandler.d.ts +2 -3
  35. package/lib/keyHandler.d.ts.map +1 -1
  36. package/lib/keyHandler.js +26 -25
  37. package/lib/keyHandler.js.map +1 -1
  38. package/lib/methodTypes.d.ts +1 -1
  39. package/lib/methodTypes.d.ts.map +1 -1
  40. package/lib/mouseHandler.d.ts.map +1 -1
  41. package/lib/mouseHandler.js +26 -42
  42. package/lib/mouseHandler.js.map +1 -1
  43. package/lib/mouseUtils.d.ts.map +1 -1
  44. package/lib/mouseUtils.js +2 -2
  45. package/lib/mouseUtils.js.map +1 -1
  46. package/lib/node.d.ts +2 -1
  47. package/lib/node.d.ts.map +1 -1
  48. package/lib/node.js +36 -35
  49. package/lib/node.js.map +1 -1
  50. package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
  51. package/lib/nodeElement/borderDropHint.js +4 -5
  52. package/lib/nodeElement/borderDropHint.js.map +1 -1
  53. package/lib/nodeElement/folderElement.d.ts +7 -4
  54. package/lib/nodeElement/folderElement.d.ts.map +1 -1
  55. package/lib/nodeElement/folderElement.js +61 -42
  56. package/lib/nodeElement/folderElement.js.map +1 -1
  57. package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
  58. package/lib/nodeElement/ghostDropHint.js +5 -9
  59. package/lib/nodeElement/ghostDropHint.js.map +1 -1
  60. package/lib/nodeElement/index.d.ts +2 -1
  61. package/lib/nodeElement/index.d.ts.map +1 -1
  62. package/lib/nodeElement/index.js +34 -26
  63. package/lib/nodeElement/index.js.map +1 -1
  64. package/lib/nodeUtils.d.ts.map +1 -1
  65. package/lib/nodeUtils.js +1 -1
  66. package/lib/nodeUtils.js.map +1 -1
  67. package/lib/options.d.ts.map +1 -1
  68. package/lib/positionUtils.js +3 -3
  69. package/lib/positionUtils.js.map +1 -1
  70. package/lib/requestUrl.d.ts +1 -1
  71. package/lib/requestUrl.d.ts.map +1 -1
  72. package/lib/requestUrl.js +4 -6
  73. package/lib/requestUrl.js.map +1 -1
  74. package/lib/saveStateHandler.d.ts.map +1 -1
  75. package/lib/saveStateHandler.js +38 -48
  76. package/lib/saveStateHandler.js.map +1 -1
  77. package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
  78. package/lib/scrollHandler/containerScrollParent.js +9 -11
  79. package/lib/scrollHandler/containerScrollParent.js.map +1 -1
  80. package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
  81. package/lib/scrollHandler/createScrollParent.js +10 -10
  82. package/lib/scrollHandler/createScrollParent.js.map +1 -1
  83. package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
  84. package/lib/scrollHandler/documentScrollParent.js +16 -19
  85. package/lib/scrollHandler/documentScrollParent.js.map +1 -1
  86. package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
  87. package/lib/scrollHandler/scrollParent.js +11 -17
  88. package/lib/scrollHandler/scrollParent.js.map +1 -1
  89. package/lib/scrollHandler.d.ts.map +1 -1
  90. package/lib/scrollHandler.js +11 -14
  91. package/lib/scrollHandler.js.map +1 -1
  92. package/lib/selectNodeHandler.d.ts +2 -2
  93. package/lib/selectNodeHandler.d.ts.map +1 -1
  94. package/lib/selectNodeHandler.js +45 -54
  95. package/lib/selectNodeHandler.js.map +1 -1
  96. package/lib/setDefaultOptions.d.ts.map +1 -1
  97. package/lib/setDefaultOptions.js +23 -28
  98. package/lib/setDefaultOptions.js.map +1 -1
  99. package/lib/triggerCustomEvent.d.ts.map +1 -1
  100. package/lib/triggerCustomEvent.js +2 -2
  101. package/lib/triggerCustomEvent.js.map +1 -1
  102. package/lib/util.d.ts.map +1 -1
  103. package/lib/util.js +2 -2
  104. package/lib/util.js.map +1 -1
  105. package/lib/version.d.ts +1 -1
  106. package/lib/version.js +1 -1
  107. package/lib/version.js.map +1 -1
  108. package/package.json +5 -3
  109. package/src/animation.ts +1 -1
  110. package/src/classNames.ts +52 -52
  111. package/src/dataLoader.ts +68 -71
  112. package/src/dragAndDropHandler/binarySearch.ts +17 -17
  113. package/src/dragAndDropHandler/dragElement.ts +50 -50
  114. package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
  115. package/src/dragAndDropHandler/index.ts +342 -351
  116. package/src/dragAndDropHandler/iterateVisibleNodes.ts +59 -63
  117. package/src/dragAndDropHandler/types.ts +5 -5
  118. package/src/elementsRenderer.ts +351 -298
  119. package/src/events.ts +216 -216
  120. package/src/header.txt +1 -1
  121. package/src/index.ts +52 -82
  122. package/src/keyHandler.ts +125 -115
  123. package/src/methodTypes.ts +4 -7
  124. package/src/mouseHandler.ts +314 -317
  125. package/src/mouseUtils.ts +14 -14
  126. package/src/node.ts +761 -766
  127. package/src/nodeElement/borderDropHint.ts +25 -25
  128. package/src/nodeElement/folderElement.ts +135 -112
  129. package/src/nodeElement/ghostDropHint.ts +62 -62
  130. package/src/nodeElement/index.ts +88 -74
  131. package/src/nodeUtils.ts +5 -5
  132. package/src/options.ts +6 -2
  133. package/src/requestUrl.ts +3 -3
  134. package/src/saveStateHandler.ts +204 -206
  135. package/src/scrollHandler/containerScrollParent.ts +49 -52
  136. package/src/scrollHandler/createScrollParent.ts +27 -27
  137. package/src/scrollHandler/documentScrollParent.ts +70 -70
  138. package/src/scrollHandler/scrollParent.ts +98 -98
  139. package/src/scrollHandler.ts +45 -45
  140. package/src/selectNodeHandler.ts +176 -166
  141. package/src/setDefaultOptions.ts +25 -22
  142. package/src/triggerCustomEvent.ts +7 -3
  143. package/src/util.ts +2 -2
  144. package/src/version.ts +1 -1
  145. package/tree_element.debug.js +3752 -3784
  146. package/tree_element.debug.js.map +1 -1
  147. package/tree_element.js +2 -2
  148. package/tree_element.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"createScrollParent.js","sources":["../../src/scrollHandler/createScrollParent.ts"],"sourcesContent":["import type { ScrollParent } from \"./scrollParent\";\n\nimport ContainerScrollParent from \"./containerScrollParent\";\nimport DocumentScrollParent from \"./documentScrollParent\";\n\nconst isOverflow = (overflowValue: string) =>\n overflowValue === \"auto\" || overflowValue === \"scroll\";\n\nconst hasOverFlow = (element: HTMLElement): boolean => {\n const style = getComputedStyle(element);\n\n return isOverflow(style.overflowX) || isOverflow(style.overflowY);\n};\n\nconst getParentWithOverflow = (\n treeElement: HTMLElement,\n): HTMLElement | null => {\n if (hasOverFlow(treeElement)) {\n return treeElement;\n }\n\n let parent = treeElement.parentElement;\n\n while (parent) {\n if (hasOverFlow(parent)) {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nconst createScrollParent = (\n treeElement: HTMLElement,\n refreshHitAreas: () => void,\n): ScrollParent => {\n const container = getParentWithOverflow(treeElement);\n\n if (container && container.tagName !== \"HTML\") {\n return new ContainerScrollParent({\n container,\n refreshHitAreas,\n });\n } else {\n return new DocumentScrollParent({ refreshHitAreas, treeElement });\n }\n};\n\nexport default createScrollParent;\n"],"names":[],"mappings":";;;AAKA,MAAM,UAAU,GAAI,aAAqB,IACrC,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,QAAQ;AAE1D,MAAM,WAAW,GAAI,OAAoB,IAAc;AACnD,EAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEvC,EAAA,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;AACrE,CAAC;AAED,MAAM,qBAAqB,GACvB,WAAwB,IACH;AACrB,EAAA,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE;AAC1B,IAAA,OAAO,WAAW;AACtB,EAAA;AAEA,EAAA,IAAI,MAAM,GAAG,WAAW,CAAC,aAAa;AAEtC,EAAA,OAAO,MAAM,EAAE;AACX,IAAA,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AACrB,MAAA,OAAO,MAAM;AACjB,IAAA;IAEA,MAAM,GAAG,MAAM,CAAC,aAAa;AACjC,EAAA;AAEA,EAAA,OAAO,IAAI;AACf,CAAC;AAED,MAAM,kBAAkB,GAAG,CACvB,WAAwB,EACxB,eAA2B,KACZ;AACf,EAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,CAAC;AAEpD,EAAA,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,MAAM,EAAE;IAC3C,OAAO,IAAI,qBAAqB,CAAC;MAC7B,SAAS;AACT,MAAA;AACJ,KAAC,CAAC;AACN,EAAA,CAAC,MAAM;IACH,OAAO,IAAI,oBAAoB,CAAC;MAAE,eAAe;AAAE,MAAA;AAAY,KAAC,CAAC;AACrE,EAAA;AACJ;;"}
1
+ {"version":3,"file":"createScrollParent.js","sources":["../../src/scrollHandler/createScrollParent.ts"],"sourcesContent":["import type { ScrollParent } from \"./scrollParent\";\n\nimport ContainerScrollParent from \"./containerScrollParent\";\nimport DocumentScrollParent from \"./documentScrollParent\";\n\nconst isOverflow = (overflowValue: string) =>\n overflowValue === \"auto\" || overflowValue === \"scroll\";\n\nconst hasOverFlow = (element: HTMLElement): boolean => {\n const style = getComputedStyle(element);\n\n return isOverflow(style.overflowX) || isOverflow(style.overflowY);\n};\n\nconst getParentWithOverflow = (\n treeElement: HTMLElement,\n): HTMLElement | null => {\n if (hasOverFlow(treeElement)) {\n return treeElement;\n }\n\n let parent = treeElement.parentElement;\n\n while (parent) {\n if (hasOverFlow(parent)) {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nconst createScrollParent = (\n treeElement: HTMLElement,\n refreshHitAreas: () => void,\n): ScrollParent => {\n const container = getParentWithOverflow(treeElement);\n\n if (container && container.tagName !== \"HTML\") {\n return new ContainerScrollParent({\n container,\n refreshHitAreas,\n });\n } else {\n return new DocumentScrollParent({ refreshHitAreas, treeElement });\n }\n};\n\nexport default createScrollParent;\n"],"names":[],"mappings":";;;AAKA,IAAM,UAAU,GAAI,aAAqB,IACvC,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,QAAQ;AAExD,IAAM,WAAW,GAAI,OAAoB,IAAc;AACrD,EAAA,IAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEvC,EAAA,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,IAAM,qBAAqB,GACzB,WAAwB,IACD;AACvB,EAAA,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE;AAC5B,IAAA,OAAO,WAAW;AACpB,EAAA;AAEA,EAAA,IAAI,MAAM,GAAG,WAAW,CAAC,aAAa;AAEtC,EAAA,OAAO,MAAM,EAAE;AACb,IAAA,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AACvB,MAAA,OAAO,MAAM;AACf,IAAA;IAEA,MAAM,GAAG,MAAM,CAAC,aAAa;AAC/B,EAAA;AAEA,EAAA,OAAO,IAAI;AACb,CAAC;AAED,IAAM,kBAAkB,GAAG,CACzB,WAAwB,EACxB,eAA2B,KACV;AACjB,EAAA,IAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,CAAC;AAEpD,EAAA,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,MAAM,EAAE;IAC7C,OAAO,IAAI,qBAAqB,CAAC;MAC/B,UAAA,EAAA,SAAS;AACT,MAAA,gBAAA,EAAA;AACF,KAAC,CAAC;AACJ,EAAA,CAAC,MAAM;IACL,OAAO,IAAI,oBAAoB,CAAC;MAAE,gBAAA,EAAA,eAAe;AAAE,MAAA,YAAA,EAAA;AAAY,KAAC,CAAC;AACnE,EAAA;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"documentScrollParent.d.ts","sourceRoot":"","sources":["../../src/scrollHandler/documentScrollParent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,yBAAyB,EACzB,uBAAuB,EAC1B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,UAAU,MAAM;IACZ,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,YAAY;IAC1D,OAAO,CAAC,oBAAoB,CAAC,CAAS;IACtC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,WAAW,CAAc;gBAErB,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,MAAM;IAM7C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM5B,aAAa;IAOpB,SAAS,CAAC,+BAA+B,CACrC,KAAK,EAAE,MAAM,GACd,yBAAyB,GAAG,SAAS;IAkBxC,SAAS,CAAC,6BAA6B,CACnC,KAAK,EAAE,MAAM,GACd,SAAS,GAAG,uBAAuB;IAiBtC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,sBAAsB;CAMjC"}
1
+ {"version":3,"file":"documentScrollParent.d.ts","sourceRoot":"","sources":["../../src/scrollHandler/documentScrollParent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,UAAU,MAAM;IACd,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,YAAY;IAC5D,OAAO,CAAC,oBAAoB,CAAC,CAAS;IACtC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,WAAW,CAAc;gBAErB,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,MAAM;IAM7C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM5B,aAAa;IAOpB,SAAS,CAAC,+BAA+B,CACvC,KAAK,EAAE,MAAM,GACZ,yBAAyB,GAAG,SAAS;IAkBxC,SAAS,CAAC,6BAA6B,CACrC,KAAK,EAAE,MAAM,GACZ,SAAS,GAAG,uBAAuB;IAiBtC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -2,33 +2,30 @@ import { getOffsetTop } from '../positionUtils.js';
2
2
  import { ScrollParent } from './scrollParent.js';
3
3
 
4
4
  class DocumentScrollParent extends ScrollParent {
5
- _documentScrollHeight;
6
- _documentScrollWidth;
7
- _treeElement;
8
5
  constructor({
9
- refreshHitAreas,
10
- treeElement
6
+ _refreshHitAreas: refreshHitAreas,
7
+ _treeElement: treeElement
11
8
  }) {
12
9
  super({
13
- container: document.documentElement,
14
- refreshHitAreas
10
+ _container: document.documentElement,
11
+ _refreshHitAreas: refreshHitAreas
15
12
  });
16
13
  this._treeElement = treeElement;
17
14
  }
18
- scrollToY(top) {
19
- const treeTop = getOffsetTop(this._treeElement);
20
- super.scrollToY(top + treeTop);
15
+ _scrollToY(top) {
16
+ let treeTop = getOffsetTop(this._treeElement);
17
+ super._scrollToY(top + treeTop);
21
18
  }
22
- stopScrolling() {
23
- super.stopScrolling();
19
+ _stopScrolling() {
20
+ super._stopScrolling();
24
21
  this._documentScrollHeight = undefined;
25
22
  this._documentScrollWidth = undefined;
26
23
  }
27
24
  _getNewHorizontalScrollDirection(pageX) {
28
- const scrollLeft = this._container.scrollLeft;
29
- const windowWidth = window.innerWidth;
30
- const isNearRightEdge = pageX > windowWidth - 20;
31
- const isNearLeftEdge = pageX - scrollLeft < 20;
25
+ let scrollLeft = this._container.scrollLeft;
26
+ let windowWidth = window.innerWidth;
27
+ let isNearRightEdge = pageX > windowWidth - 20;
28
+ let isNearLeftEdge = pageX - scrollLeft < 20;
32
29
  if (isNearRightEdge && this._canScrollRight()) {
33
30
  return "right";
34
31
  }
@@ -38,12 +35,12 @@ class DocumentScrollParent extends ScrollParent {
38
35
  return undefined;
39
36
  }
40
37
  _getNewVerticalScrollDirection(pageY) {
41
- const scrollTop = this._container.scrollTop;
42
- const distanceTop = pageY - scrollTop;
38
+ let scrollTop = this._container.scrollTop;
39
+ let distanceTop = pageY - scrollTop;
43
40
  if (distanceTop < 20) {
44
41
  return "top";
45
42
  }
46
- const windowHeight = window.innerHeight;
43
+ let windowHeight = window.innerHeight;
47
44
  if (windowHeight - (pageY - scrollTop) < 20 && this._canScrollDown()) {
48
45
  return "bottom";
49
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"documentScrollParent.js","sources":["../../src/scrollHandler/documentScrollParent.ts"],"sourcesContent":["import type {\n HorizontalScrollDirection,\n VerticalScrollDirection,\n} from \"./scrollParent\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport { ScrollParent } from \"./scrollParent\";\n\ninterface Params {\n refreshHitAreas: () => void;\n treeElement: HTMLElement;\n}\n\nexport default class DocumentScrollParent extends ScrollParent {\n private documentScrollHeight?: number;\n private documentScrollWidth?: number;\n private treeElement: HTMLElement;\n\n constructor({ refreshHitAreas, treeElement }: Params) {\n super({ container: document.documentElement, refreshHitAreas });\n\n this.treeElement = treeElement;\n }\n\n public scrollToY(top: number): void {\n const treeTop = getOffsetTop(this.treeElement);\n\n super.scrollToY(top + treeTop);\n }\n\n public stopScrolling() {\n super.stopScrolling();\n\n this.documentScrollHeight = undefined;\n this.documentScrollWidth = undefined;\n }\n\n protected getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const scrollLeft = this.container.scrollLeft;\n const windowWidth = window.innerWidth;\n\n const isNearRightEdge = pageX > windowWidth - 20;\n const isNearLeftEdge = pageX - scrollLeft < 20;\n\n if (isNearRightEdge && this.canScrollRight()) {\n return \"right\";\n }\n\n if (isNearLeftEdge) {\n return \"left\";\n }\n\n return undefined;\n }\n\n protected getNewVerticalScrollDirection(\n pageY: number,\n ): undefined | VerticalScrollDirection {\n const scrollTop = this.container.scrollTop;\n const distanceTop = pageY - scrollTop;\n\n if (distanceTop < 20) {\n return \"top\";\n }\n\n const windowHeight = window.innerHeight;\n\n if (windowHeight - (pageY - scrollTop) < 20 && this.canScrollDown()) {\n return \"bottom\";\n }\n\n return undefined;\n }\n\n private canScrollDown() {\n return (\n this.container.scrollTop + this.container.clientHeight <\n this.getDocumentScrollHeight()\n );\n }\n\n private canScrollRight() {\n return (\n this.container.scrollLeft + this.container.clientWidth <\n this.getDocumentScrollWidth()\n );\n }\n\n private getDocumentScrollHeight() {\n // Store the original scroll height because the scroll height can increase when the drag element is moved beyond the scroll height.\n this.documentScrollHeight ??= this.container.scrollHeight;\n\n return this.documentScrollHeight;\n }\n\n private getDocumentScrollWidth() {\n // Store the original scroll width because the scroll width can increase when the drag element is moved beyond the scroll width.\n this.documentScrollWidth ??= this.container.scrollWidth;\n\n return this.documentScrollWidth;\n }\n}\n"],"names":["documentScrollHeight","documentScrollWidth","treeElement","getNewHorizontalScrollDirection","container","canScrollRight","getNewVerticalScrollDirection","canScrollDown","getDocumentScrollHeight","getDocumentScrollWidth"],"mappings":";;;AAae,MAAM,oBAAoB,SAAS,YAAY,CAAC;EACnDA,qBAAoB;EACpBC,oBAAmB;EACnBC,YAAW;AAEnB,EAAA,WAAW,CAAC;IAAE,eAAe;AAAE,IAAA;AAAoB,GAAC,EAAE;AAClD,IAAA,KAAK,CAAC;MAAE,SAAS,EAAE,QAAQ,CAAC,eAAe;AAAE,MAAA;AAAgB,KAAC,CAAC;IAE/D,IAAI,CAACA,YAAW,GAAG,WAAW;AAClC,EAAA;EAEO,SAAS,CAAC,GAAW,EAAQ;AAChC,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAACA,YAAW,CAAC;AAE9C,IAAA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAClC,EAAA;AAEO,EAAA,aAAa,GAAG;IACnB,KAAK,CAAC,aAAa,EAAE;IAErB,IAAI,CAACF,qBAAoB,GAAG,SAAS;IACrC,IAAI,CAACC,oBAAmB,GAAG,SAAS;AACxC,EAAA;EAEUE,gCAA+BA,CACrC,KAAa,EACwB;AACrC,IAAA,MAAM,UAAU,GAAG,IAAI,CAACC,UAAS,CAAC,UAAU;AAC5C,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU;AAErC,IAAA,MAAM,eAAe,GAAG,KAAK,GAAG,WAAW,GAAG,EAAE;AAChD,IAAA,MAAM,cAAc,GAAG,KAAK,GAAG,UAAU,GAAG,EAAE;AAE9C,IAAA,IAAI,eAAe,IAAI,IAAI,CAACC,eAAc,EAAE,EAAE;AAC1C,MAAA,OAAO,OAAO;AAClB,IAAA;AAEA,IAAA,IAAI,cAAc,EAAE;AAChB,MAAA,OAAO,MAAM;AACjB,IAAA;AAEA,IAAA,OAAO,SAAS;AACpB,EAAA;EAEUC,8BAA6BA,CACnC,KAAa,EACsB;AACnC,IAAA,MAAM,SAAS,GAAG,IAAI,CAACF,UAAS,CAAC,SAAS;AAC1C,IAAA,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS;IAErC,IAAI,WAAW,GAAG,EAAE,EAAE;AAClB,MAAA,OAAO,KAAK;AAChB,IAAA;AAEA,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW;AAEvC,IAAA,IAAI,YAAY,IAAI,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,IAAI,CAACG,cAAa,EAAE,EAAE;AACjE,MAAA,OAAO,QAAQ;AACnB,IAAA;AAEA,IAAA,OAAO,SAAS;AACpB,EAAA;AAEQA,EAAAA,cAAaA,GAAG;AACpB,IAAA,OACI,IAAI,CAACH,UAAS,CAAC,SAAS,GAAG,IAAI,CAACA,UAAS,CAAC,YAAY,GACtD,IAAI,CAACI,wBAAuB,EAAE;AAEtC,EAAA;AAEQH,EAAAA,eAAcA,GAAG;AACrB,IAAA,OACI,IAAI,CAACD,UAAS,CAAC,UAAU,GAAG,IAAI,CAACA,UAAS,CAAC,WAAW,GACtD,IAAI,CAACK,uBAAsB,EAAE;AAErC,EAAA;AAEQD,EAAAA,wBAAuBA,GAAG;AAC9B;AACA,IAAA,IAAI,CAACR,qBAAoB,KAAK,IAAI,CAACI,UAAS,CAAC,YAAY;IAEzD,OAAO,IAAI,CAACJ,qBAAoB;AACpC,EAAA;AAEQS,EAAAA,uBAAsBA,GAAG;AAC7B;AACA,IAAA,IAAI,CAACR,oBAAmB,KAAK,IAAI,CAACG,UAAS,CAAC,WAAW;IAEvD,OAAO,IAAI,CAACH,oBAAmB;AACnC,EAAA;AACJ;;"}
1
+ {"version":3,"file":"documentScrollParent.js","sources":["../../src/scrollHandler/documentScrollParent.ts"],"sourcesContent":["import type {\n HorizontalScrollDirection,\n VerticalScrollDirection,\n} from \"./scrollParent\";\n\nimport { getOffsetTop } from \"../positionUtils\";\nimport { ScrollParent } from \"./scrollParent\";\n\ninterface Params {\n refreshHitAreas: () => void;\n treeElement: HTMLElement;\n}\n\nexport default class DocumentScrollParent extends ScrollParent {\n private documentScrollHeight?: number;\n private documentScrollWidth?: number;\n private treeElement: HTMLElement;\n\n constructor({ refreshHitAreas, treeElement }: Params) {\n super({ container: document.documentElement, refreshHitAreas });\n\n this.treeElement = treeElement;\n }\n\n public scrollToY(top: number): void {\n const treeTop = getOffsetTop(this.treeElement);\n\n super.scrollToY(top + treeTop);\n }\n\n public stopScrolling() {\n super.stopScrolling();\n\n this.documentScrollHeight = undefined;\n this.documentScrollWidth = undefined;\n }\n\n protected getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined {\n const scrollLeft = this.container.scrollLeft;\n const windowWidth = window.innerWidth;\n\n const isNearRightEdge = pageX > windowWidth - 20;\n const isNearLeftEdge = pageX - scrollLeft < 20;\n\n if (isNearRightEdge && this.canScrollRight()) {\n return \"right\";\n }\n\n if (isNearLeftEdge) {\n return \"left\";\n }\n\n return undefined;\n }\n\n protected getNewVerticalScrollDirection(\n pageY: number,\n ): undefined | VerticalScrollDirection {\n const scrollTop = this.container.scrollTop;\n const distanceTop = pageY - scrollTop;\n\n if (distanceTop < 20) {\n return \"top\";\n }\n\n const windowHeight = window.innerHeight;\n\n if (windowHeight - (pageY - scrollTop) < 20 && this.canScrollDown()) {\n return \"bottom\";\n }\n\n return undefined;\n }\n\n private canScrollDown() {\n return (\n this.container.scrollTop + this.container.clientHeight <\n this.getDocumentScrollHeight()\n );\n }\n\n private canScrollRight() {\n return (\n this.container.scrollLeft + this.container.clientWidth <\n this.getDocumentScrollWidth()\n );\n }\n\n private getDocumentScrollHeight() {\n // Store the original scroll height because the scroll height can increase when the drag element is moved beyond the scroll height.\n this.documentScrollHeight ??= this.container.scrollHeight;\n\n return this.documentScrollHeight;\n }\n\n private getDocumentScrollWidth() {\n // Store the original scroll width because the scroll width can increase when the drag element is moved beyond the scroll width.\n this.documentScrollWidth ??= this.container.scrollWidth;\n\n return this.documentScrollWidth;\n }\n}\n"],"names":["treeElement","scrollToY","stopScrolling","documentScrollHeight","documentScrollWidth","getNewHorizontalScrollDirection","container","canScrollRight","getNewVerticalScrollDirection","canScrollDown","getDocumentScrollHeight","getDocumentScrollWidth"],"mappings":";;;AAae,MAAM,oBAAoB,SAAS,YAAY,CAAC;AAK7D,EAAA,WAAW,CAAC;IAAE,gBAAA,EAAA,eAAe;AAAE,IAAA,YAAA,EAAA;AAAoB,GAAC,EAAE;AACpD,IAAA,KAAK,CAAC;MAAE,UAAA,EAAW,QAAQ,CAAC,eAAe;AAAE,MAAA,gBAAA,EAAA;AAAgB,KAAC,CAAC;IAE/D,IAAI,CAACA,YAAW,GAAG,WAAW;AAChC,EAAA;EAEOC,UAASA,CAAC,GAAW,EAAQ;AAClC,IAAA,IAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAACD,YAAW,CAAC;AAE9C,IAAA,KAAK,CAACC,UAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAChC,EAAA;AAEOC,EAAAA,cAAaA,GAAG;IACrB,KAAK,CAACA,cAAa,EAAE;IAErB,IAAI,CAACC,qBAAoB,GAAG,SAAS;IACrC,IAAI,CAACC,oBAAmB,GAAG,SAAS;AACtC,EAAA;EAEUC,gCAA+BA,CACvC,KAAa,EAC0B;AACvC,IAAA,IAAM,UAAU,GAAG,IAAI,CAACC,UAAS,CAAC,UAAU;AAC5C,IAAA,IAAM,WAAW,GAAG,MAAM,CAAC,UAAU;AAErC,IAAA,IAAM,eAAe,GAAG,KAAK,GAAG,WAAW,GAAG,EAAE;AAChD,IAAA,IAAM,cAAc,GAAG,KAAK,GAAG,UAAU,GAAG,EAAE;AAE9C,IAAA,IAAI,eAAe,IAAI,IAAI,CAACC,eAAc,EAAE,EAAE;AAC5C,MAAA,OAAO,OAAO;AAChB,IAAA;AAEA,IAAA,IAAI,cAAc,EAAE;AAClB,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,OAAO,SAAS;AAClB,EAAA;EAEUC,8BAA6BA,CACrC,KAAa,EACwB;AACrC,IAAA,IAAM,SAAS,GAAG,IAAI,CAACF,UAAS,CAAC,SAAS;AAC1C,IAAA,IAAM,WAAW,GAAG,KAAK,GAAG,SAAS;IAErC,IAAI,WAAW,GAAG,EAAE,EAAE;AACpB,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,IAAM,YAAY,GAAG,MAAM,CAAC,WAAW;AAEvC,IAAA,IAAI,YAAY,IAAI,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,IAAI,CAACG,cAAa,EAAE,EAAE;AACnE,MAAA,OAAO,QAAQ;AACjB,IAAA;AAEA,IAAA,OAAO,SAAS;AAClB,EAAA;AAEQA,EAAAA,cAAaA,GAAG;AACtB,IAAA,OACE,IAAI,CAACH,UAAS,CAAC,SAAS,GAAG,IAAI,CAACA,UAAS,CAAC,YAAY,GACtD,IAAI,CAACI,wBAAuB,EAAE;AAElC,EAAA;AAEQH,EAAAA,eAAcA,GAAG;AACvB,IAAA,OACE,IAAI,CAACD,UAAS,CAAC,UAAU,GAAG,IAAI,CAACA,UAAS,CAAC,WAAW,GACtD,IAAI,CAACK,uBAAsB,EAAE;AAEjC,EAAA;AAEQD,EAAAA,wBAAuBA,GAAG;AAChC;AACA,IAAA,IAAI,CAACP,qBAAoB,KAAK,IAAI,CAACG,UAAS,CAAC,YAAY;IAEzD,OAAO,IAAI,CAACH,qBAAoB;AAClC,EAAA;AAEQQ,EAAAA,uBAAsBA,GAAG;AAC/B;AACA,IAAA,IAAI,CAACP,oBAAmB,KAAK,IAAI,CAACE,UAAS,CAAC,WAAW;IAEvD,OAAO,IAAI,CAACF,oBAAmB;AACjC,EAAA;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"scrollParent.d.ts","sourceRoot":"","sources":["../../src/scrollHandler/scrollParent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,OAAO,CAAC;AACzD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvD,UAAU,iBAAiB;IACvB,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,8BAAsB,YAAY;IAC9B,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;IACjC,SAAS,CAAC,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IAChE,SAAS,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAE3C,SAAS,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACtC,SAAS,CAAC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAC5D,SAAS,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;gBAE7B,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,iBAAiB;IAKtD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoB7C,sBAAsB,CAAC,KAAK,EAAE,MAAM;IAqBpC,aAAa,IAAI,MAAM;IAIvB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,aAAa;IAKpB,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAC9C,KAAK,EAAE,MAAM,GACd,yBAAyB,GAAG,SAAS;IACxC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAC5C,KAAK,EAAE,MAAM,GACd,SAAS,GAAG,uBAAuB;IAEtC,SAAS,CAAC,kBAAkB;IAiB5B,SAAS,CAAC,gBAAgB;CAgB7B"}
1
+ {"version":3,"file":"scrollParent.d.ts","sourceRoot":"","sources":["../../src/scrollHandler/scrollParent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,OAAO,CAAC;AACzD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvD,UAAU,iBAAiB;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,8BAAsB,YAAY;IAChC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;IACjC,SAAS,CAAC,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IAChE,SAAS,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAE3C,SAAS,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACtC,SAAS,CAAC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAC5D,SAAS,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;gBAE7B,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,iBAAiB;IAKtD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoB7C,sBAAsB,CAAC,KAAK,EAAE,MAAM;IAqBpC,aAAa,IAAI,MAAM;IAIvB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,aAAa;IAKpB,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAChD,KAAK,EAAE,MAAM,GACZ,yBAAyB,GAAG,SAAS;IACxC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAC9C,KAAK,EAAE,MAAM,GACZ,SAAS,GAAG,uBAAuB;IAEtC,SAAS,CAAC,kBAAkB;IAiB5B,SAAS,CAAC,gBAAgB;CAgB3B"}
@@ -1,19 +1,13 @@
1
1
  class ScrollParent {
2
- _container;
3
- _horizontalScrollDirection;
4
- _horizontalScrollTimeout;
5
- _refreshHitAreas;
6
- _verticalScrollDirection;
7
- _verticalScrollTimeout;
8
2
  constructor({
9
- container,
10
- refreshHitAreas
3
+ _container: container,
4
+ _refreshHitAreas: refreshHitAreas
11
5
  }) {
12
6
  this._container = container;
13
7
  this._refreshHitAreas = refreshHitAreas;
14
8
  }
15
- checkHorizontalScrolling(pageX) {
16
- const newHorizontalScrollDirection = this._getNewHorizontalScrollDirection(pageX);
9
+ _checkHorizontalScrolling(pageX) {
10
+ let newHorizontalScrollDirection = this._getNewHorizontalScrollDirection(pageX);
17
11
  if (this._horizontalScrollDirection !== newHorizontalScrollDirection) {
18
12
  this._horizontalScrollDirection = newHorizontalScrollDirection;
19
13
  if (this._horizontalScrollTimeout != null) {
@@ -24,8 +18,8 @@ class ScrollParent {
24
18
  }
25
19
  }
26
20
  }
27
- checkVerticalScrolling(pageY) {
28
- const newVerticalScrollDirection = this._getNewVerticalScrollDirection(pageY);
21
+ _checkVerticalScrolling(pageY) {
22
+ let newVerticalScrollDirection = this._getNewVerticalScrollDirection(pageY);
29
23
  if (this._verticalScrollDirection !== newVerticalScrollDirection) {
30
24
  this._verticalScrollDirection = newVerticalScrollDirection;
31
25
  if (this._verticalScrollTimeout != null) {
@@ -37,13 +31,13 @@ class ScrollParent {
37
31
  }
38
32
  }
39
33
  }
40
- getScrollLeft() {
34
+ _getScrollLeft() {
41
35
  return this._container.scrollLeft;
42
36
  }
43
- scrollToY(top) {
37
+ _scrollToY(top) {
44
38
  this._container.scrollTop = top;
45
39
  }
46
- stopScrolling() {
40
+ _stopScrolling() {
47
41
  this._horizontalScrollDirection = undefined;
48
42
  this._verticalScrollDirection = undefined;
49
43
  }
@@ -51,7 +45,7 @@ class ScrollParent {
51
45
  if (!this._horizontalScrollDirection) {
52
46
  return;
53
47
  }
54
- const distance = this._horizontalScrollDirection === "left" ? -20 : 20;
48
+ let distance = this._horizontalScrollDirection === "left" ? -20 : 20;
55
49
  this._container.scrollBy({
56
50
  behavior: "instant",
57
51
  left: distance,
@@ -64,7 +58,7 @@ class ScrollParent {
64
58
  if (!this._verticalScrollDirection) {
65
59
  return;
66
60
  }
67
- const distance = this._verticalScrollDirection === "top" ? -20 : 20;
61
+ let distance = this._verticalScrollDirection === "top" ? -20 : 20;
68
62
  this._container.scrollBy({
69
63
  behavior: "instant",
70
64
  left: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"scrollParent.js","sources":["../../src/scrollHandler/scrollParent.ts"],"sourcesContent":["export type HorizontalScrollDirection = \"left\" | \"right\";\nexport type VerticalScrollDirection = \"bottom\" | \"top\";\n\ninterface ConstructorParams {\n container: HTMLElement;\n refreshHitAreas: () => void;\n}\n\nexport abstract class ScrollParent {\n protected container: HTMLElement;\n protected horizontalScrollDirection?: HorizontalScrollDirection;\n protected horizontalScrollTimeout?: number;\n\n protected refreshHitAreas: () => void;\n protected verticalScrollDirection?: VerticalScrollDirection;\n protected verticalScrollTimeout?: number;\n\n constructor({ container, refreshHitAreas }: ConstructorParams) {\n this.container = container;\n this.refreshHitAreas = refreshHitAreas;\n }\n\n public checkHorizontalScrolling(pageX: number): void {\n const newHorizontalScrollDirection =\n this.getNewHorizontalScrollDirection(pageX);\n\n if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {\n this.horizontalScrollDirection = newHorizontalScrollDirection;\n\n if (this.horizontalScrollTimeout != null) {\n window.clearTimeout(this.horizontalScrollTimeout);\n }\n\n if (newHorizontalScrollDirection) {\n this.horizontalScrollTimeout = window.setTimeout(\n this.scrollHorizontally.bind(this),\n 40,\n );\n }\n }\n }\n\n public checkVerticalScrolling(pageY: number) {\n const newVerticalScrollDirection =\n this.getNewVerticalScrollDirection(pageY);\n\n if (this.verticalScrollDirection !== newVerticalScrollDirection) {\n this.verticalScrollDirection = newVerticalScrollDirection;\n\n if (this.verticalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n this.verticalScrollTimeout = undefined;\n }\n\n if (newVerticalScrollDirection) {\n this.verticalScrollTimeout = window.setTimeout(\n this.scrollVertically.bind(this),\n 40,\n );\n }\n }\n }\n\n public getScrollLeft(): number {\n return this.container.scrollLeft;\n }\n\n public scrollToY(top: number): void {\n this.container.scrollTop = top;\n }\n\n public stopScrolling() {\n this.horizontalScrollDirection = undefined;\n this.verticalScrollDirection = undefined;\n }\n\n protected abstract getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined;\n protected abstract getNewVerticalScrollDirection(\n pageY: number,\n ): undefined | VerticalScrollDirection;\n\n protected scrollHorizontally() {\n if (!this.horizontalScrollDirection) {\n return;\n }\n\n const distance = this.horizontalScrollDirection === \"left\" ? -20 : 20;\n this.container.scrollBy({\n behavior: \"instant\",\n left: distance,\n top: 0,\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollHorizontally.bind(this), 40);\n }\n\n protected scrollVertically() {\n if (!this.verticalScrollDirection) {\n return;\n }\n\n const distance = this.verticalScrollDirection === \"top\" ? -20 : 20;\n this.container.scrollBy({\n behavior: \"instant\",\n left: 0,\n top: distance,\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollVertically.bind(this), 40);\n }\n}\n"],"names":["container","horizontalScrollDirection","horizontalScrollTimeout","refreshHitAreas","verticalScrollDirection","verticalScrollTimeout","getNewHorizontalScrollDirection","scrollHorizontally","getNewVerticalScrollDirection","scrollVertically"],"mappings":"AAQO,MAAe,YAAY,CAAC;EACrBA,UAAS;EACTC,0BAAyB;EACzBC,wBAAuB;EAEvBC,gBAAe;EACfC,wBAAuB;EACvBC,sBAAqB;AAE/B,EAAA,WAAW,CAAC;IAAE,SAAS;AAAE,IAAA;AAAmC,GAAC,EAAE;IAC3D,IAAI,CAACL,UAAS,GAAG,SAAS;IAC1B,IAAI,CAACG,gBAAe,GAAG,eAAe;AAC1C,EAAA;EAEO,wBAAwB,CAAC,KAAa,EAAQ;AACjD,IAAA,MAAM,4BAA4B,GAC9B,IAAI,CAACG,gCAA+B,CAAC,KAAK,CAAC;AAE/C,IAAA,IAAI,IAAI,CAACL,0BAAyB,KAAK,4BAA4B,EAAE;MACjE,IAAI,CAACA,0BAAyB,GAAG,4BAA4B;AAE7D,MAAA,IAAI,IAAI,CAACC,wBAAuB,IAAI,IAAI,EAAE;AACtC,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAACA,wBAAuB,CAAC;AACrD,MAAA;AAEA,MAAA,IAAI,4BAA4B,EAAE;AAC9B,QAAA,IAAI,CAACA,wBAAuB,GAAG,MAAM,CAAC,UAAU,CAC5C,IAAI,CAACK,mBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,EACJ,CAAC;AACL,MAAA;AACJ,IAAA;AACJ,EAAA;EAEO,sBAAsB,CAAC,KAAa,EAAE;AACzC,IAAA,MAAM,0BAA0B,GAC5B,IAAI,CAACC,8BAA6B,CAAC,KAAK,CAAC;AAE7C,IAAA,IAAI,IAAI,CAACJ,wBAAuB,KAAK,0BAA0B,EAAE;MAC7D,IAAI,CAACA,wBAAuB,GAAG,0BAA0B;AAEzD,MAAA,IAAI,IAAI,CAACC,sBAAqB,IAAI,IAAI,EAAE;AACpC,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAACA,sBAAqB,CAAC;QAC/C,IAAI,CAACA,sBAAqB,GAAG,SAAS;AAC1C,MAAA;AAEA,MAAA,IAAI,0BAA0B,EAAE;AAC5B,QAAA,IAAI,CAACA,sBAAqB,GAAG,MAAM,CAAC,UAAU,CAC1C,IAAI,CAACI,iBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAChC,EACJ,CAAC;AACL,MAAA;AACJ,IAAA;AACJ,EAAA;AAEO,EAAA,aAAa,GAAW;AAC3B,IAAA,OAAO,IAAI,CAACT,UAAS,CAAC,UAAU;AACpC,EAAA;EAEO,SAAS,CAAC,GAAW,EAAQ;AAChC,IAAA,IAAI,CAACA,UAAS,CAAC,SAAS,GAAG,GAAG;AAClC,EAAA;AAEO,EAAA,aAAa,GAAG;IACnB,IAAI,CAACC,0BAAyB,GAAG,SAAS;IAC1C,IAAI,CAACG,wBAAuB,GAAG,SAAS;AAC5C,EAAA;AASUG,EAAAA,mBAAkBA,GAAG;AAC3B,IAAA,IAAI,CAAC,IAAI,CAACN,0BAAyB,EAAE;AACjC,MAAA;AACJ,IAAA;IAEA,MAAM,QAAQ,GAAG,IAAI,CAACA,0BAAyB,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AACrE,IAAA,IAAI,CAACD,UAAS,CAAC,QAAQ,CAAC;AACpB,MAAA,QAAQ,EAAE,SAAS;AACnB,MAAA,IAAI,EAAE,QAAQ;AACd,MAAA,GAAG,EAAE;AACT,KAAC,CAAC;IAEF,IAAI,CAACG,gBAAe,EAAE;IAEtB,UAAU,CAAC,IAAI,CAACI,mBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACtD,EAAA;AAEUE,EAAAA,iBAAgBA,GAAG;AACzB,IAAA,IAAI,CAAC,IAAI,CAACL,wBAAuB,EAAE;AAC/B,MAAA;AACJ,IAAA;IAEA,MAAM,QAAQ,GAAG,IAAI,CAACA,wBAAuB,KAAK,KAAK,GAAG,GAAG,GAAG,EAAE;AAClE,IAAA,IAAI,CAACJ,UAAS,CAAC,QAAQ,CAAC;AACpB,MAAA,QAAQ,EAAE,SAAS;AACnB,MAAA,IAAI,EAAE,CAAC;AACP,MAAA,GAAG,EAAE;AACT,KAAC,CAAC;IAEF,IAAI,CAACG,gBAAe,EAAE;IAEtB,UAAU,CAAC,IAAI,CAACM,iBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AACpD,EAAA;AACJ;;"}
1
+ {"version":3,"file":"scrollParent.js","sources":["../../src/scrollHandler/scrollParent.ts"],"sourcesContent":["export type HorizontalScrollDirection = \"left\" | \"right\";\nexport type VerticalScrollDirection = \"bottom\" | \"top\";\n\ninterface ConstructorParams {\n container: HTMLElement;\n refreshHitAreas: () => void;\n}\n\nexport abstract class ScrollParent {\n protected container: HTMLElement;\n protected horizontalScrollDirection?: HorizontalScrollDirection;\n protected horizontalScrollTimeout?: number;\n\n protected refreshHitAreas: () => void;\n protected verticalScrollDirection?: VerticalScrollDirection;\n protected verticalScrollTimeout?: number;\n\n constructor({ container, refreshHitAreas }: ConstructorParams) {\n this.container = container;\n this.refreshHitAreas = refreshHitAreas;\n }\n\n public checkHorizontalScrolling(pageX: number): void {\n const newHorizontalScrollDirection =\n this.getNewHorizontalScrollDirection(pageX);\n\n if (this.horizontalScrollDirection !== newHorizontalScrollDirection) {\n this.horizontalScrollDirection = newHorizontalScrollDirection;\n\n if (this.horizontalScrollTimeout != null) {\n window.clearTimeout(this.horizontalScrollTimeout);\n }\n\n if (newHorizontalScrollDirection) {\n this.horizontalScrollTimeout = window.setTimeout(\n this.scrollHorizontally.bind(this),\n 40,\n );\n }\n }\n }\n\n public checkVerticalScrolling(pageY: number) {\n const newVerticalScrollDirection =\n this.getNewVerticalScrollDirection(pageY);\n\n if (this.verticalScrollDirection !== newVerticalScrollDirection) {\n this.verticalScrollDirection = newVerticalScrollDirection;\n\n if (this.verticalScrollTimeout != null) {\n window.clearTimeout(this.verticalScrollTimeout);\n this.verticalScrollTimeout = undefined;\n }\n\n if (newVerticalScrollDirection) {\n this.verticalScrollTimeout = window.setTimeout(\n this.scrollVertically.bind(this),\n 40,\n );\n }\n }\n }\n\n public getScrollLeft(): number {\n return this.container.scrollLeft;\n }\n\n public scrollToY(top: number): void {\n this.container.scrollTop = top;\n }\n\n public stopScrolling() {\n this.horizontalScrollDirection = undefined;\n this.verticalScrollDirection = undefined;\n }\n\n protected abstract getNewHorizontalScrollDirection(\n pageX: number,\n ): HorizontalScrollDirection | undefined;\n protected abstract getNewVerticalScrollDirection(\n pageY: number,\n ): undefined | VerticalScrollDirection;\n\n protected scrollHorizontally() {\n if (!this.horizontalScrollDirection) {\n return;\n }\n\n const distance = this.horizontalScrollDirection === \"left\" ? -20 : 20;\n this.container.scrollBy({\n behavior: \"instant\",\n left: distance,\n top: 0,\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollHorizontally.bind(this), 40);\n }\n\n protected scrollVertically() {\n if (!this.verticalScrollDirection) {\n return;\n }\n\n const distance = this.verticalScrollDirection === \"top\" ? -20 : 20;\n this.container.scrollBy({\n behavior: \"instant\",\n left: 0,\n top: distance,\n });\n\n this.refreshHitAreas();\n\n setTimeout(this.scrollVertically.bind(this), 40);\n }\n}\n"],"names":["container","refreshHitAreas","checkHorizontalScrolling","getNewHorizontalScrollDirection","horizontalScrollDirection","horizontalScrollTimeout","scrollHorizontally","checkVerticalScrolling","getNewVerticalScrollDirection","verticalScrollDirection","verticalScrollTimeout","scrollVertically","getScrollLeft","scrollToY","stopScrolling"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scrollHandler.d.ts","sourceRoot":"","sources":["../src/scrollHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD,UAAU,mBAAmB;IACzB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,WAAW,CAAc;gBAErB,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,mBAAmB;IAM1D,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAKhD,aAAa,IAAI,MAAM;IAIvB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,aAAa;IAIpB,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,eAAe;CAQ1B"}
1
+ {"version":3,"file":"scrollHandler.d.ts","sourceRoot":"","sources":["../src/scrollHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD,UAAU,mBAAmB;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,WAAW,CAAc;gBAErB,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,mBAAmB;IAM1D,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAKhD,aAAa,IAAI,MAAM;IAIvB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,aAAa;IAIpB,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,eAAe;CAQxB"}
@@ -1,35 +1,32 @@
1
1
  import createScrollParent from './scrollHandler/createScrollParent.js';
2
2
 
3
3
  class ScrollHandler {
4
- _refreshHitAreas;
5
- _scrollParent;
6
- _treeElement;
7
4
  constructor({
8
- refreshHitAreas,
9
- treeElement
5
+ _refreshHitAreas: refreshHitAreas,
6
+ _treeElement: treeElement
10
7
  }) {
11
8
  this._refreshHitAreas = refreshHitAreas;
12
9
  this._scrollParent = undefined;
13
10
  this._treeElement = treeElement;
14
11
  }
15
- checkScrolling(positionInfo) {
12
+ _checkScrolling(positionInfo) {
16
13
  this._checkVerticalScrolling(positionInfo);
17
14
  this._checkHorizontalScrolling(positionInfo);
18
15
  }
19
- getScrollLeft() {
20
- return this._getScrollParent().getScrollLeft();
16
+ _getScrollLeft() {
17
+ return this._getScrollParent()._getScrollLeft();
21
18
  }
22
- scrollToY(top) {
23
- this._getScrollParent().scrollToY(top);
19
+ _scrollToY(top) {
20
+ this._getScrollParent()._scrollToY(top);
24
21
  }
25
- stopScrolling() {
26
- this._getScrollParent().stopScrolling();
22
+ _stopScrolling() {
23
+ this._getScrollParent()._stopScrolling();
27
24
  }
28
25
  _checkHorizontalScrolling(positionInfo) {
29
- this._getScrollParent().checkHorizontalScrolling(positionInfo.pageX);
26
+ this._getScrollParent()._checkHorizontalScrolling(positionInfo.pageX);
30
27
  }
31
28
  _checkVerticalScrolling(positionInfo) {
32
- this._getScrollParent().checkVerticalScrolling(positionInfo.pageY);
29
+ this._getScrollParent()._checkVerticalScrolling(positionInfo.pageY);
33
30
  }
34
31
  _getScrollParent() {
35
32
  this._scrollParent ??= createScrollParent(this._treeElement, this._refreshHitAreas);
@@ -1 +1 @@
1
- {"version":3,"file":"scrollHandler.js","sources":["../src/scrollHandler.ts"],"sourcesContent":["import type { PositionInfo } from \"./mouseUtils\";\nimport type { ScrollParent } from \"./scrollHandler/scrollParent\";\n\nimport createScrollParent from \"./scrollHandler/createScrollParent\";\n\ninterface ScrollHandlerParams {\n refreshHitAreas: () => void;\n treeElement: HTMLElement;\n}\n\nexport default class ScrollHandler {\n private refreshHitAreas: () => void;\n private scrollParent?: ScrollParent;\n private treeElement: HTMLElement;\n\n constructor({ refreshHitAreas, treeElement }: ScrollHandlerParams) {\n this.refreshHitAreas = refreshHitAreas;\n this.scrollParent = undefined;\n this.treeElement = treeElement;\n }\n\n public checkScrolling(positionInfo: PositionInfo): void {\n this.checkVerticalScrolling(positionInfo);\n this.checkHorizontalScrolling(positionInfo);\n }\n\n public getScrollLeft(): number {\n return this.getScrollParent().getScrollLeft();\n }\n\n public scrollToY(top: number): void {\n this.getScrollParent().scrollToY(top);\n }\n\n public stopScrolling() {\n this.getScrollParent().stopScrolling();\n }\n\n private checkHorizontalScrolling(positionInfo: PositionInfo): void {\n this.getScrollParent().checkHorizontalScrolling(positionInfo.pageX);\n }\n\n private checkVerticalScrolling(positionInfo: PositionInfo): void {\n this.getScrollParent().checkVerticalScrolling(positionInfo.pageY);\n }\n\n private getScrollParent(): ScrollParent {\n this.scrollParent ??= createScrollParent(\n this.treeElement,\n this.refreshHitAreas,\n );\n\n return this.scrollParent;\n }\n}\n"],"names":["refreshHitAreas","scrollParent","treeElement","checkVerticalScrolling","checkHorizontalScrolling","getScrollParent"],"mappings":";;AAUe,MAAM,aAAa,CAAC;EACvBA,gBAAe;EACfC,aAAY;EACZC,YAAW;AAEnB,EAAA,WAAW,CAAC;IAAE,eAAe;AAAE,IAAA;AAAiC,GAAC,EAAE;IAC/D,IAAI,CAACF,gBAAe,GAAG,eAAe;IACtC,IAAI,CAACC,aAAY,GAAG,SAAS;IAC7B,IAAI,CAACC,YAAW,GAAG,WAAW;AAClC,EAAA;EAEO,cAAc,CAAC,YAA0B,EAAQ;AACpD,IAAA,IAAI,CAACC,uBAAsB,CAAC,YAAY,CAAC;AACzC,IAAA,IAAI,CAACC,yBAAwB,CAAC,YAAY,CAAC;AAC/C,EAAA;AAEO,EAAA,aAAa,GAAW;IAC3B,OAAO,IAAI,CAACC,gBAAe,EAAE,CAAC,aAAa,EAAE;AACjD,EAAA;EAEO,SAAS,CAAC,GAAW,EAAQ;IAChC,IAAI,CAACA,gBAAe,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AACzC,EAAA;AAEO,EAAA,aAAa,GAAG;AACnB,IAAA,IAAI,CAACA,gBAAe,EAAE,CAAC,aAAa,EAAE;AAC1C,EAAA;EAEQD,yBAAwBA,CAAC,YAA0B,EAAQ;IAC/D,IAAI,CAACC,gBAAe,EAAE,CAAC,wBAAwB,CAAC,YAAY,CAAC,KAAK,CAAC;AACvE,EAAA;EAEQF,uBAAsBA,CAAC,YAA0B,EAAQ;IAC7D,IAAI,CAACE,gBAAe,EAAE,CAAC,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC;AACrE,EAAA;AAEQA,EAAAA,gBAAeA,GAAiB;AACpC,IAAA,IAAI,CAACJ,aAAY,KAAK,kBAAkB,CACpC,IAAI,CAACC,YAAW,EAChB,IAAI,CAACF,gBACT,CAAC;IAED,OAAO,IAAI,CAACC,aAAY;AAC5B,EAAA;AACJ;;"}
1
+ {"version":3,"file":"scrollHandler.js","sources":["../src/scrollHandler.ts"],"sourcesContent":["import type { PositionInfo } from \"./mouseUtils\";\nimport type { ScrollParent } from \"./scrollHandler/scrollParent\";\n\nimport createScrollParent from \"./scrollHandler/createScrollParent\";\n\ninterface ScrollHandlerParams {\n refreshHitAreas: () => void;\n treeElement: HTMLElement;\n}\n\nexport default class ScrollHandler {\n private refreshHitAreas: () => void;\n private scrollParent?: ScrollParent;\n private treeElement: HTMLElement;\n\n constructor({ refreshHitAreas, treeElement }: ScrollHandlerParams) {\n this.refreshHitAreas = refreshHitAreas;\n this.scrollParent = undefined;\n this.treeElement = treeElement;\n }\n\n public checkScrolling(positionInfo: PositionInfo): void {\n this.checkVerticalScrolling(positionInfo);\n this.checkHorizontalScrolling(positionInfo);\n }\n\n public getScrollLeft(): number {\n return this.getScrollParent().getScrollLeft();\n }\n\n public scrollToY(top: number): void {\n this.getScrollParent().scrollToY(top);\n }\n\n public stopScrolling() {\n this.getScrollParent().stopScrolling();\n }\n\n private checkHorizontalScrolling(positionInfo: PositionInfo): void {\n this.getScrollParent().checkHorizontalScrolling(positionInfo.pageX);\n }\n\n private checkVerticalScrolling(positionInfo: PositionInfo): void {\n this.getScrollParent().checkVerticalScrolling(positionInfo.pageY);\n }\n\n private getScrollParent(): ScrollParent {\n this.scrollParent ??= createScrollParent(\n this.treeElement,\n this.refreshHitAreas,\n );\n\n return this.scrollParent;\n }\n}\n"],"names":["refreshHitAreas","scrollParent","treeElement","checkScrolling","checkVerticalScrolling","checkHorizontalScrolling","getScrollLeft","getScrollParent","scrollToY","stopScrolling"],"mappings":";;AAUe,MAAM,aAAa,CAAC;AAKjC,EAAA,WAAW,CAAC;IAAE,gBAAA,EAAA,eAAe;AAAE,IAAA,YAAA,EAAA;AAAiC,GAAC,EAAE;IACjE,IAAI,CAACA,gBAAe,GAAG,eAAe;IACtC,IAAI,CAACC,aAAY,GAAG,SAAS;IAC7B,IAAI,CAACC,YAAW,GAAG,WAAW;AAChC,EAAA;EAEOC,eAAcA,CAAC,YAA0B,EAAQ;AACtD,IAAA,IAAI,CAACC,uBAAsB,CAAC,YAAY,CAAC;AACzC,IAAA,IAAI,CAACC,yBAAwB,CAAC,YAAY,CAAC;AAC7C,EAAA;AAEOC,EAAAA,cAAaA,GAAW;IAC7B,OAAO,IAAI,CAACC,gBAAe,EAAE,CAACD,cAAa,EAAE;AAC/C,EAAA;EAEOE,UAASA,CAAC,GAAW,EAAQ;IAClC,IAAI,CAACD,gBAAe,EAAE,CAACC,UAAS,CAAC,GAAG,CAAC;AACvC,EAAA;AAEOC,EAAAA,cAAaA,GAAG;AACrB,IAAA,IAAI,CAACF,gBAAe,EAAE,CAACE,cAAa,EAAE;AACxC,EAAA;EAEQJ,yBAAwBA,CAAC,YAA0B,EAAQ;IACjE,IAAI,CAACE,gBAAe,EAAE,CAACF,yBAAwB,CAAC,YAAY,CAAC,KAAK,CAAC;AACrE,EAAA;EAEQD,uBAAsBA,CAAC,YAA0B,EAAQ;IAC/D,IAAI,CAACG,gBAAe,EAAE,CAACH,uBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC;AACnE,EAAA;AAEQG,EAAAA,gBAAeA,GAAiB;AACtC,IAAA,IAAI,CAACN,aAAY,KAAK,kBAAkB,CACtC,IAAI,CAACC,YAAW,EAChB,IAAI,CAACF,gBACP,CAAC;IAED,OAAO,IAAI,CAACC,aAAY;AAC1B,EAAA;AACF;;"}
@@ -24,10 +24,10 @@ export default class SelectNodeHandler {
24
24
  private selectedNodes;
25
25
  private selectedSingleNode;
26
26
  private triggerEvent;
27
- constructor({ getNodeById, getNodeElementForNode, getOnCanSelectNode, getSelectable, openParents, saveState, triggerEvent }: SelectNodeHandlerParameters);
27
+ constructor({ getNodeById, getNodeElementForNode, getOnCanSelectNode, getSelectable, openParents, saveState, triggerEvent, }: SelectNodeHandlerParameters);
28
28
  addToSelection(node: Node): void;
29
29
  clear(): void;
30
- getSelectedNode(): false | Node;
30
+ getSelectedNode(): Node | null;
31
31
  getSelectedNodes(): Node[];
32
32
  getSelectedNodesUnder(parent: Node): Node[];
33
33
  isNodeSelected(node: Node): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"selectNodeHandler.d.ts","sourceRoot":"","sources":["../src/selectNodeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,KAAK,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,2BAA2B;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,kBAAkB,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;IACtD,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,kBAAkB,CAAoC;IAC9D,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,YAAY,CAAe;gBAEvB,EAAE,WAAW,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,2BAA2B;IAYjJ,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAQhC,KAAK,IAAI,IAAI;IAKb,eAAe,IAAI,KAAK,GAAG,IAAI;IAU/B,gBAAgB,IAAI,IAAI,EAAE;IAiB1B,qBAAqB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;IAqB3C,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAUnC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,UAAQ,GAAG,IAAI;IAgC9D,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,iBAAiB;CA8CvE"}
1
+ {"version":3,"file":"selectNodeHandler.d.ts","sourceRoot":"","sources":["../src/selectNodeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,qBAAqB,EACrB,WAAW,EACX,YAAY,EACb,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,2BAA2B;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,kBAAkB,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;IACtD,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,kBAAkB,CAAoC;IAC9D,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,YAAY,CAAe;gBAEvB,EACV,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,SAAS,EACT,YAAY,GACb,EAAE,2BAA2B;IAYvB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAQhC,KAAK,IAAI,IAAI;IAKb,eAAe,IAAI,IAAI,GAAG,IAAI;IAU9B,gBAAgB,IAAI,IAAI,EAAE;IAiB1B,qBAAqB,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;IAqB3C,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAUnC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,UAAQ,GAAG,IAAI;IA6B9D,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,iBAAiB;CA8CrE"}
@@ -1,21 +1,12 @@
1
1
  class SelectNodeHandler {
2
- _getNodeById;
3
- _getNodeElementForNode;
4
- _getOnCanSelectNode;
5
- _getSelectable;
6
- _openParents;
7
- _saveState;
8
- _selectedNodes;
9
- _selectedSingleNode;
10
- _triggerEvent;
11
2
  constructor({
12
- getNodeById,
13
- getNodeElementForNode,
14
- getOnCanSelectNode,
15
- getSelectable,
16
- openParents,
17
- saveState,
18
- triggerEvent
3
+ _getNodeById: getNodeById,
4
+ _getNodeElementForNode: getNodeElementForNode,
5
+ _getOnCanSelectNode: getOnCanSelectNode,
6
+ _getSelectable: getSelectable,
7
+ _openParents: openParents,
8
+ _saveState: saveState,
9
+ _triggerEvent: triggerEvent
19
10
  }) {
20
11
  this._getNodeById = getNodeById;
21
12
  this._getNodeElementForNode = getNodeElementForNode;
@@ -27,32 +18,32 @@ class SelectNodeHandler {
27
18
  this._selectedSingleNode = null;
28
19
  this._triggerEvent = triggerEvent;
29
20
  }
30
- addToSelection(node) {
21
+ _addToSelection(node) {
31
22
  if (node.id != null) {
32
23
  this._selectedNodes.add(node.id);
33
24
  } else {
34
25
  this._selectedSingleNode = node;
35
26
  }
36
27
  }
37
- clear() {
28
+ _clear() {
38
29
  this._selectedNodes.clear();
39
30
  this._selectedSingleNode = null;
40
31
  }
41
- getSelectedNode() {
42
- const selectedNodes = this.getSelectedNodes();
32
+ _getSelectedNode() {
33
+ let selectedNodes = this._getSelectedNodes();
43
34
  if (selectedNodes.length) {
44
- return selectedNodes[0] ?? false;
35
+ return selectedNodes[0] ?? null;
45
36
  } else {
46
- return false;
37
+ return null;
47
38
  }
48
39
  }
49
- getSelectedNodes() {
40
+ _getSelectedNodes() {
50
41
  if (this._selectedSingleNode) {
51
42
  return [this._selectedSingleNode];
52
43
  } else {
53
- const selectedNodes = [];
44
+ let selectedNodes = [];
54
45
  this._selectedNodes.forEach(id => {
55
- const node = this._getNodeById(id);
46
+ let node = this._getNodeById(id);
56
47
  if (node) {
57
48
  selectedNodes.push(node);
58
49
  }
@@ -60,7 +51,7 @@ class SelectNodeHandler {
60
51
  return selectedNodes;
61
52
  }
62
53
  }
63
- getSelectedNodesUnder(parent) {
54
+ _getSelectedNodesUnder(parent) {
64
55
  if (this._selectedSingleNode) {
65
56
  if (parent.isParentOf(this._selectedSingleNode)) {
66
57
  return [this._selectedSingleNode];
@@ -68,9 +59,9 @@ class SelectNodeHandler {
68
59
  return [];
69
60
  }
70
61
  } else {
71
- const selectedNodes = [];
62
+ let selectedNodes = [];
72
63
  this._selectedNodes.forEach(id => {
73
- const node = this._getNodeById(id);
64
+ let node = this._getNodeById(id);
74
65
  if (node && parent.isParentOf(node)) {
75
66
  selectedNodes.push(node);
76
67
  }
@@ -78,18 +69,18 @@ class SelectNodeHandler {
78
69
  return selectedNodes;
79
70
  }
80
71
  }
81
- isNodeSelected(node) {
72
+ _isNodeSelected(node) {
82
73
  if (node.id != null) {
83
74
  return this._selectedNodes.has(node.id);
84
75
  } else if (this._selectedSingleNode) {
85
- return this._selectedSingleNode.element === node.element;
76
+ return this._selectedSingleNode === node;
86
77
  } else {
87
78
  return false;
88
79
  }
89
80
  }
90
- removeFromSelection(node, includeChildren = false) {
81
+ _removeFromSelection(node, includeChildren = false) {
91
82
  if (node.id == null) {
92
- if (this._selectedSingleNode && node.element === this._selectedSingleNode.element) {
83
+ if (this._selectedSingleNode === node) {
93
84
  this._selectedSingleNode = null;
94
85
  }
95
86
  } else {
@@ -106,39 +97,39 @@ class SelectNodeHandler {
106
97
  }
107
98
 
108
99
  /* Select a single node.
109
- * Renders the changed elements.
110
- * Deselects if the node is currently selected (if the mustToggle is on).
111
- * Deselects the previously selected node.
112
- * Check if the node is selectable.
113
- * Saves the state.
114
- * Options:
115
- * mustSetFocus: set the focus to the selected node
116
- * mustToggle: support deselecting the selected node
117
- */
118
- selectSingleNode(node, optionsParam) {
119
- const defaultOptions = {
100
+ * Renders the changed elements.
101
+ * Deselects if the node is currently selected (if the mustToggle is on).
102
+ * Deselects the previously selected node.
103
+ * Check if the node is selectable.
104
+ * Saves the state.
105
+ * Options:
106
+ * mustSetFocus: set the focus to the selected node
107
+ * mustToggle: support deselecting the selected node
108
+ */
109
+ _selectSingleNode(node, optionsParam) {
110
+ let defaultOptions = {
120
111
  mustSetFocus: true,
121
112
  mustToggle: true
122
113
  };
123
- const selectOptions = {
114
+ let selectOptions = {
124
115
  ...defaultOptions,
125
116
  ...(optionsParam ?? {})
126
117
  };
127
- const canSelect = () => {
118
+ let canSelect = () => {
128
119
  if (!this._getSelectable()) {
129
120
  return false;
130
121
  }
131
- const onCanSelectNode = this._getOnCanSelectNode();
122
+ let onCanSelectNode = this._getOnCanSelectNode();
132
123
  return onCanSelectNode ? onCanSelectNode(node) : true;
133
124
  };
134
125
  if (!canSelect()) {
135
126
  return;
136
127
  }
137
- const deselectCurrentNode = deselectedNode => {
138
- this.removeFromSelection(deselectedNode);
139
- this._getNodeElementForNode(deselectedNode).deselect();
128
+ let deselectCurrentNode = deselectedNode => {
129
+ this._removeFromSelection(deselectedNode);
130
+ this._getNodeElementForNode(deselectedNode)._deselect();
140
131
  };
141
- if (this.isNodeSelected(node)) {
132
+ if (this._isNodeSelected(node)) {
142
133
  if (selectOptions.mustToggle) {
143
134
  deselectCurrentNode(node);
144
135
  this._triggerEvent("tree.deselect", {
@@ -146,15 +137,15 @@ class SelectNodeHandler {
146
137
  });
147
138
  }
148
139
  } else {
149
- const deselectedNode = this.getSelectedNode();
140
+ let deselectedNode = this._getSelectedNode();
150
141
  if (deselectedNode) {
151
142
  deselectCurrentNode(deselectedNode);
152
143
  }
153
- this.addToSelection(node);
144
+ this._addToSelection(node);
154
145
  this._openParents(node);
155
- this._getNodeElementForNode(node).select(selectOptions.mustSetFocus);
146
+ this._getNodeElementForNode(node)._select(selectOptions.mustSetFocus);
156
147
  this._triggerEvent("tree.select", {
157
- deselectedNode: deselectedNode || null,
148
+ deselectedNode,
158
149
  node
159
150
  });
160
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"selectNodeHandler.js","sources":["../src/selectNodeHandler.ts"],"sourcesContent":["import type { GetNodeById, GetNodeElementForNode, OpenParents, TriggerEvent } from \"./methodTypes\";\nimport type { Node, NodeId } from \"./node\";\nimport type { OnCanSelectNode } from \"./options\";\n\nexport interface SelectNodeOptions {\n mustSetFocus?: boolean;\n mustToggle?: boolean;\n}\n\ninterface SelectNodeHandlerParameters {\n getNodeById: GetNodeById;\n getNodeElementForNode: GetNodeElementForNode;\n getOnCanSelectNode: () => OnCanSelectNode | undefined;\n getSelectable: () => boolean;\n openParents: OpenParents;\n saveState: () => void;\n triggerEvent: TriggerEvent;\n}\n\nexport default class SelectNodeHandler {\n private getNodeById: GetNodeById;\n private getNodeElementForNode: GetNodeElementForNode;\n private getOnCanSelectNode: () => OnCanSelectNode | undefined;\n private getSelectable: () => boolean;\n private openParents: OpenParents;\n private saveState: () => void;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n private triggerEvent: TriggerEvent;\n\n constructor({ getNodeById, getNodeElementForNode, getOnCanSelectNode, getSelectable, openParents, saveState, triggerEvent }: SelectNodeHandlerParameters) {\n this.getNodeById = getNodeById;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getOnCanSelectNode = getOnCanSelectNode;\n this.getSelectable = getSelectable;\n this.openParents = openParents;\n this.saveState = saveState;\n this.selectedNodes = new Set<NodeId>();\n this.selectedSingleNode = null;\n this.triggerEvent = triggerEvent;\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public getSelectedNode(): false | Node {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0] ?? false;\n } else {\n return false;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode.element === node.element;\n } else {\n return false;\n }\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (\n this.selectedSingleNode &&\n node.element === this.selectedSingleNode.element\n ) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n /* Select a single node.\n * Renders the changed elements.\n * Deselects if the node is currently selected (if the mustToggle is on).\n * Deselects the previously selected node.\n * Check if the node is selectable.\n * Saves the state.\n * Options:\n * mustSetFocus: set the focus to the selected node\n * mustToggle: support deselecting the selected node\n */\n public selectSingleNode(node: Node, optionsParam?: SelectNodeOptions) {\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam ?? {}) };\n\n const canSelect = (): boolean => {\n if (!this.getSelectable()) {\n return false;\n }\n\n const onCanSelectNode = this.getOnCanSelectNode();\n return onCanSelectNode ? onCanSelectNode(node) : true;\n };\n\n if (!canSelect()) {\n return;\n }\n\n const deselectCurrentNode = (deselectedNode: Node) => {\n this.removeFromSelection(deselectedNode);\n this.getNodeElementForNode(deselectedNode).deselect();\n };\n\n if (this.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n deselectCurrentNode(node);\n this.triggerEvent(\"tree.deselect\", { node });\n }\n } else {\n const deselectedNode = this.getSelectedNode();\n\n if (deselectedNode) {\n deselectCurrentNode(deselectedNode);\n }\n\n this.addToSelection(node);\n this.openParents(node);\n this.getNodeElementForNode(node).select(selectOptions.mustSetFocus);\n\n this.triggerEvent(\"tree.select\", {\n deselectedNode: deselectedNode || null,\n node,\n });\n }\n\n this.saveState();\n }\n}\n"],"names":["getNodeById","getNodeElementForNode","getOnCanSelectNode","getSelectable","openParents","saveState","selectedNodes","selectedSingleNode","triggerEvent"],"mappings":"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"}
1
+ {"version":3,"file":"selectNodeHandler.js","sources":["../src/selectNodeHandler.ts"],"sourcesContent":["import type {\n GetNodeById,\n GetNodeElementForNode,\n OpenParents,\n TriggerEvent,\n} from \"./methodTypes\";\nimport type { Node, NodeId } from \"./node\";\nimport type { OnCanSelectNode } from \"./options\";\n\nexport interface SelectNodeOptions {\n mustSetFocus?: boolean;\n mustToggle?: boolean;\n}\n\ninterface SelectNodeHandlerParameters {\n getNodeById: GetNodeById;\n getNodeElementForNode: GetNodeElementForNode;\n getOnCanSelectNode: () => OnCanSelectNode | undefined;\n getSelectable: () => boolean;\n openParents: OpenParents;\n saveState: () => void;\n triggerEvent: TriggerEvent;\n}\n\nexport default class SelectNodeHandler {\n private getNodeById: GetNodeById;\n private getNodeElementForNode: GetNodeElementForNode;\n private getOnCanSelectNode: () => OnCanSelectNode | undefined;\n private getSelectable: () => boolean;\n private openParents: OpenParents;\n private saveState: () => void;\n private selectedNodes: Set<NodeId>;\n private selectedSingleNode: Node | null;\n private triggerEvent: TriggerEvent;\n\n constructor({\n getNodeById,\n getNodeElementForNode,\n getOnCanSelectNode,\n getSelectable,\n openParents,\n saveState,\n triggerEvent,\n }: SelectNodeHandlerParameters) {\n this.getNodeById = getNodeById;\n this.getNodeElementForNode = getNodeElementForNode;\n this.getOnCanSelectNode = getOnCanSelectNode;\n this.getSelectable = getSelectable;\n this.openParents = openParents;\n this.saveState = saveState;\n this.selectedNodes = new Set<NodeId>();\n this.selectedSingleNode = null;\n this.triggerEvent = triggerEvent;\n }\n\n public addToSelection(node: Node): void {\n if (node.id != null) {\n this.selectedNodes.add(node.id);\n } else {\n this.selectedSingleNode = node;\n }\n }\n\n public clear(): void {\n this.selectedNodes.clear();\n this.selectedSingleNode = null;\n }\n\n public getSelectedNode(): Node | null {\n const selectedNodes = this.getSelectedNodes();\n\n if (selectedNodes.length) {\n return selectedNodes[0] ?? null;\n } else {\n return null;\n }\n }\n\n public getSelectedNodes(): Node[] {\n if (this.selectedSingleNode) {\n return [this.selectedSingleNode];\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public getSelectedNodesUnder(parent: Node): Node[] {\n if (this.selectedSingleNode) {\n if (parent.isParentOf(this.selectedSingleNode)) {\n return [this.selectedSingleNode];\n } else {\n return [];\n }\n } else {\n const selectedNodes: Node[] = [];\n\n this.selectedNodes.forEach((id) => {\n const node = this.getNodeById(id);\n if (node && parent.isParentOf(node)) {\n selectedNodes.push(node);\n }\n });\n\n return selectedNodes;\n }\n }\n\n public isNodeSelected(node: Node): boolean {\n if (node.id != null) {\n return this.selectedNodes.has(node.id);\n } else if (this.selectedSingleNode) {\n return this.selectedSingleNode === node;\n } else {\n return false;\n }\n }\n\n public removeFromSelection(node: Node, includeChildren = false): void {\n if (node.id == null) {\n if (this.selectedSingleNode === node) {\n this.selectedSingleNode = null;\n }\n } else {\n this.selectedNodes.delete(node.id);\n\n if (includeChildren) {\n node.iterate(() => {\n if (node.id != null) {\n this.selectedNodes.delete(node.id);\n }\n return true;\n });\n }\n }\n }\n\n /* Select a single node.\n * Renders the changed elements.\n * Deselects if the node is currently selected (if the mustToggle is on).\n * Deselects the previously selected node.\n * Check if the node is selectable.\n * Saves the state.\n * Options:\n * mustSetFocus: set the focus to the selected node\n * mustToggle: support deselecting the selected node\n */\n public selectSingleNode(node: Node, optionsParam?: SelectNodeOptions) {\n const defaultOptions = { mustSetFocus: true, mustToggle: true };\n const selectOptions = { ...defaultOptions, ...(optionsParam ?? {}) };\n\n const canSelect = (): boolean => {\n if (!this.getSelectable()) {\n return false;\n }\n\n const onCanSelectNode = this.getOnCanSelectNode();\n return onCanSelectNode ? onCanSelectNode(node) : true;\n };\n\n if (!canSelect()) {\n return;\n }\n\n const deselectCurrentNode = (deselectedNode: Node) => {\n this.removeFromSelection(deselectedNode);\n this.getNodeElementForNode(deselectedNode).deselect();\n };\n\n if (this.isNodeSelected(node)) {\n if (selectOptions.mustToggle) {\n deselectCurrentNode(node);\n this.triggerEvent(\"tree.deselect\", { node });\n }\n } else {\n const deselectedNode = this.getSelectedNode();\n\n if (deselectedNode) {\n deselectCurrentNode(deselectedNode);\n }\n\n this.addToSelection(node);\n this.openParents(node);\n this.getNodeElementForNode(node).select(selectOptions.mustSetFocus);\n\n this.triggerEvent(\"tree.select\", {\n deselectedNode,\n node,\n });\n }\n\n this.saveState();\n }\n}\n"],"names":["getNodeById","getNodeElementForNode","getOnCanSelectNode","getSelectable","openParents","saveState","selectedNodes","selectedSingleNode","triggerEvent","addToSelection","clear","getSelectedNode","getSelectedNodes","getSelectedNodesUnder","isNodeSelected","removeFromSelection","selectSingleNode","deselect","select"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setDefaultOptions.d.ts","sourceRoot":"","sources":["../src/setDefaultOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AA6CpD,QAAA,MAAM,iBAAiB,GAAI,aAAa,WAAW,EAAE,cAAc,OAAO,CAAC,kBAAkB,CAAC,KAAG,kBAShG,CAAA;AAwBD,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"setDefaultOptions.d.ts","sourceRoot":"","sources":["../src/setDefaultOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AA6CpD,QAAA,MAAM,iBAAiB,GACrB,aAAa,WAAW,EACxB,cAAc,OAAO,CAAC,kBAAkB,CAAC,KACxC,kBASF,CAAC;AAwBF,eAAe,iBAAiB,CAAC"}