@depup/react-virtualized 9.22.6-depup.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 (254) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +34 -0
  3. package/changes.json +22 -0
  4. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.example.js +184 -0
  5. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.jest.js +338 -0
  6. package/dist/commonjs/ArrowKeyStepper/ArrowKeyStepper.js +204 -0
  7. package/dist/commonjs/ArrowKeyStepper/index.js +19 -0
  8. package/dist/commonjs/ArrowKeyStepper/types.js +5 -0
  9. package/dist/commonjs/AutoSizer/AutoSizer.example.js +104 -0
  10. package/dist/commonjs/AutoSizer/AutoSizer.jest.js +341 -0
  11. package/dist/commonjs/AutoSizer/AutoSizer.js +199 -0
  12. package/dist/commonjs/AutoSizer/AutoSizer.ssr.js +25 -0
  13. package/dist/commonjs/AutoSizer/index.js +19 -0
  14. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +100 -0
  15. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +99 -0
  16. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +107 -0
  17. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +102 -0
  18. package/dist/commonjs/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +107 -0
  19. package/dist/commonjs/CellMeasurer/CellMeasurer.example.js +129 -0
  20. package/dist/commonjs/CellMeasurer/CellMeasurer.jest.js +345 -0
  21. package/dist/commonjs/CellMeasurer/CellMeasurer.js +195 -0
  22. package/dist/commonjs/CellMeasurer/CellMeasurerCache.jest.js +298 -0
  23. package/dist/commonjs/CellMeasurer/CellMeasurerCache.js +202 -0
  24. package/dist/commonjs/CellMeasurer/index.js +22 -0
  25. package/dist/commonjs/CellMeasurer/types.js +14 -0
  26. package/dist/commonjs/Collection/Collection.example.js +231 -0
  27. package/dist/commonjs/Collection/Collection.jest.js +829 -0
  28. package/dist/commonjs/Collection/Collection.js +266 -0
  29. package/dist/commonjs/Collection/CollectionView.js +553 -0
  30. package/dist/commonjs/Collection/Section.jest.js +63 -0
  31. package/dist/commonjs/Collection/Section.js +57 -0
  32. package/dist/commonjs/Collection/SectionManager.jest.js +121 -0
  33. package/dist/commonjs/Collection/SectionManager.js +134 -0
  34. package/dist/commonjs/Collection/TestData.js +77 -0
  35. package/dist/commonjs/Collection/index.js +15 -0
  36. package/dist/commonjs/Collection/types.js +22 -0
  37. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.jest.js +34 -0
  38. package/dist/commonjs/Collection/utils/calculateSizeAndPositionData.js +38 -0
  39. package/dist/commonjs/ColumnSizer/ColumnSizer.example.js +159 -0
  40. package/dist/commonjs/ColumnSizer/ColumnSizer.jest.js +129 -0
  41. package/dist/commonjs/ColumnSizer/ColumnSizer.js +103 -0
  42. package/dist/commonjs/ColumnSizer/index.js +15 -0
  43. package/dist/commonjs/Grid/Grid.example.js +330 -0
  44. package/dist/commonjs/Grid/Grid.jest.js +2561 -0
  45. package/dist/commonjs/Grid/Grid.js +1432 -0
  46. package/dist/commonjs/Grid/Grid.ssr.js +62 -0
  47. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.jest.js +92 -0
  48. package/dist/commonjs/Grid/accessibilityOverscanIndicesGetter.js +40 -0
  49. package/dist/commonjs/Grid/defaultCellRangeRenderer.js +139 -0
  50. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.jest.js +92 -0
  51. package/dist/commonjs/Grid/defaultOverscanIndicesGetter.js +36 -0
  52. package/dist/commonjs/Grid/index.js +40 -0
  53. package/dist/commonjs/Grid/types.js +8 -0
  54. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.jest.js +375 -0
  55. package/dist/commonjs/Grid/utils/CellSizeAndPositionManager.js +296 -0
  56. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +201 -0
  57. package/dist/commonjs/Grid/utils/ScalingCellSizeAndPositionManager.js +204 -0
  58. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +84 -0
  59. package/dist/commonjs/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +59 -0
  60. package/dist/commonjs/Grid/utils/maxElementSize.js +22 -0
  61. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.jest.js +180 -0
  62. package/dist/commonjs/Grid/utils/updateScrollIndexHelper.js +85 -0
  63. package/dist/commonjs/InfiniteLoader/InfiniteLoader.example.js +179 -0
  64. package/dist/commonjs/InfiniteLoader/InfiniteLoader.jest.js +571 -0
  65. package/dist/commonjs/InfiniteLoader/InfiniteLoader.js +274 -0
  66. package/dist/commonjs/InfiniteLoader/index.js +15 -0
  67. package/dist/commonjs/List/List.example.js +236 -0
  68. package/dist/commonjs/List/List.jest.js +517 -0
  69. package/dist/commonjs/List/List.js +318 -0
  70. package/dist/commonjs/List/index.js +19 -0
  71. package/dist/commonjs/List/types.js +6 -0
  72. package/dist/commonjs/Masonry/Masonry.example.js +287 -0
  73. package/dist/commonjs/Masonry/Masonry.jest.js +450 -0
  74. package/dist/commonjs/Masonry/Masonry.js +431 -0
  75. package/dist/commonjs/Masonry/PositionCache.js +88 -0
  76. package/dist/commonjs/Masonry/createCellPositioner.js +59 -0
  77. package/dist/commonjs/Masonry/index.js +22 -0
  78. package/dist/commonjs/MultiGrid/CellMeasurerCacheDecorator.js +106 -0
  79. package/dist/commonjs/MultiGrid/MultiGrid.example.js +131 -0
  80. package/dist/commonjs/MultiGrid/MultiGrid.jest.js +584 -0
  81. package/dist/commonjs/MultiGrid/MultiGrid.js +743 -0
  82. package/dist/commonjs/MultiGrid/index.js +15 -0
  83. package/dist/commonjs/ScrollSync/ScrollSync.example.js +257 -0
  84. package/dist/commonjs/ScrollSync/ScrollSync.jest.js +66 -0
  85. package/dist/commonjs/ScrollSync/ScrollSync.js +88 -0
  86. package/dist/commonjs/ScrollSync/index.js +15 -0
  87. package/dist/commonjs/Table/Column.jest.js +90 -0
  88. package/dist/commonjs/Table/Column.js +93 -0
  89. package/dist/commonjs/Table/SortDirection.js +19 -0
  90. package/dist/commonjs/Table/SortIndicator.js +40 -0
  91. package/dist/commonjs/Table/Table.example.js +325 -0
  92. package/dist/commonjs/Table/Table.jest.js +1257 -0
  93. package/dist/commonjs/Table/Table.js +742 -0
  94. package/dist/commonjs/Table/createMultiSort.jest.js +165 -0
  95. package/dist/commonjs/Table/createMultiSort.js +99 -0
  96. package/dist/commonjs/Table/defaultCellDataGetter.js +21 -0
  97. package/dist/commonjs/Table/defaultCellRenderer.js +19 -0
  98. package/dist/commonjs/Table/defaultHeaderRenderer.js +35 -0
  99. package/dist/commonjs/Table/defaultHeaderRowRenderer.js +21 -0
  100. package/dist/commonjs/Table/defaultRowRenderer.js +87 -0
  101. package/dist/commonjs/Table/index.js +78 -0
  102. package/dist/commonjs/Table/types.js +39 -0
  103. package/dist/commonjs/WindowScroller/WindowScroller.e2e.js +298 -0
  104. package/dist/commonjs/WindowScroller/WindowScroller.example.js +167 -0
  105. package/dist/commonjs/WindowScroller/WindowScroller.header-resize.e2e.js +359 -0
  106. package/dist/commonjs/WindowScroller/WindowScroller.jest.js +536 -0
  107. package/dist/commonjs/WindowScroller/WindowScroller.js +268 -0
  108. package/dist/commonjs/WindowScroller/WindowScroller.ssr.js +25 -0
  109. package/dist/commonjs/WindowScroller/index.js +23 -0
  110. package/dist/commonjs/WindowScroller/utils/dimensions.js +89 -0
  111. package/dist/commonjs/WindowScroller/utils/onScroll.js +70 -0
  112. package/dist/commonjs/index.js +180 -0
  113. package/dist/commonjs/jest-setup.js +7 -0
  114. package/dist/commonjs/utils/TestHelper.js +36 -0
  115. package/dist/commonjs/utils/animationFrame.js +29 -0
  116. package/dist/commonjs/utils/createCallbackMemoizer.jest.js +219 -0
  117. package/dist/commonjs/utils/createCallbackMemoizer.js +31 -0
  118. package/dist/commonjs/utils/getUpdatedOffsetForIndex.jest.js +68 -0
  119. package/dist/commonjs/utils/getUpdatedOffsetForIndex.js +38 -0
  120. package/dist/commonjs/utils/initCellMetadata.js +37 -0
  121. package/dist/commonjs/utils/requestAnimationTimeout.js +38 -0
  122. package/dist/commonjs/vendor/binarySearchBounds.js +200 -0
  123. package/dist/commonjs/vendor/detectElementResize.js +192 -0
  124. package/dist/commonjs/vendor/intervalTree.js +361 -0
  125. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.example.js +176 -0
  126. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.jest.js +332 -0
  127. package/dist/es/ArrowKeyStepper/ArrowKeyStepper.js +197 -0
  128. package/dist/es/ArrowKeyStepper/index.js +3 -0
  129. package/dist/es/ArrowKeyStepper/types.js +4 -0
  130. package/dist/es/AutoSizer/AutoSizer.example.js +96 -0
  131. package/dist/es/AutoSizer/AutoSizer.jest.js +335 -0
  132. package/dist/es/AutoSizer/AutoSizer.js +190 -0
  133. package/dist/es/AutoSizer/AutoSizer.js.flow +200 -0
  134. package/dist/es/AutoSizer/AutoSizer.ssr.js +19 -0
  135. package/dist/es/AutoSizer/index.js +2 -0
  136. package/dist/es/AutoSizer/index.js.flow +4 -0
  137. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightGrid.example.js +91 -0
  138. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightList.example.js +90 -0
  139. package/dist/es/CellMeasurer/CellMeasurer.DynamicHeightTableColumn.example.js +98 -0
  140. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthGrid.example.js +93 -0
  141. package/dist/es/CellMeasurer/CellMeasurer.DynamicWidthMultiGrid.example.js +98 -0
  142. package/dist/es/CellMeasurer/CellMeasurer.example.js +120 -0
  143. package/dist/es/CellMeasurer/CellMeasurer.jest.js +340 -0
  144. package/dist/es/CellMeasurer/CellMeasurer.js +187 -0
  145. package/dist/es/CellMeasurer/CellMeasurerCache.jest.js +293 -0
  146. package/dist/es/CellMeasurer/CellMeasurerCache.js +196 -0
  147. package/dist/es/CellMeasurer/index.js +4 -0
  148. package/dist/es/CellMeasurer/types.js +13 -0
  149. package/dist/es/Collection/Collection.example.js +223 -0
  150. package/dist/es/Collection/Collection.jest.js +824 -0
  151. package/dist/es/Collection/Collection.js +257 -0
  152. package/dist/es/Collection/CollectionView.js +544 -0
  153. package/dist/es/Collection/Section.jest.js +60 -0
  154. package/dist/es/Collection/Section.js +51 -0
  155. package/dist/es/Collection/SectionManager.jest.js +118 -0
  156. package/dist/es/Collection/SectionManager.js +128 -0
  157. package/dist/es/Collection/TestData.js +71 -0
  158. package/dist/es/Collection/index.js +3 -0
  159. package/dist/es/Collection/types.js +21 -0
  160. package/dist/es/Collection/utils/calculateSizeAndPositionData.jest.js +31 -0
  161. package/dist/es/Collection/utils/calculateSizeAndPositionData.js +31 -0
  162. package/dist/es/ColumnSizer/ColumnSizer.example.js +150 -0
  163. package/dist/es/ColumnSizer/ColumnSizer.jest.js +123 -0
  164. package/dist/es/ColumnSizer/ColumnSizer.js +95 -0
  165. package/dist/es/ColumnSizer/index.js +3 -0
  166. package/dist/es/Grid/Grid.example.js +321 -0
  167. package/dist/es/Grid/Grid.jest.js +2555 -0
  168. package/dist/es/Grid/Grid.js +1425 -0
  169. package/dist/es/Grid/Grid.ssr.js +57 -0
  170. package/dist/es/Grid/accessibilityOverscanIndicesGetter.jest.js +87 -0
  171. package/dist/es/Grid/accessibilityOverscanIndicesGetter.js +33 -0
  172. package/dist/es/Grid/defaultCellRangeRenderer.js +134 -0
  173. package/dist/es/Grid/defaultOverscanIndicesGetter.jest.js +87 -0
  174. package/dist/es/Grid/defaultOverscanIndicesGetter.js +29 -0
  175. package/dist/es/Grid/index.js +15 -0
  176. package/dist/es/Grid/types.js +96 -0
  177. package/dist/es/Grid/utils/CellSizeAndPositionManager.jest.js +372 -0
  178. package/dist/es/Grid/utils/CellSizeAndPositionManager.js +290 -0
  179. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.jest.js +198 -0
  180. package/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js +198 -0
  181. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.jest.js +81 -0
  182. package/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js +53 -0
  183. package/dist/es/Grid/utils/maxElementSize.js +16 -0
  184. package/dist/es/Grid/utils/updateScrollIndexHelper.jest.js +174 -0
  185. package/dist/es/Grid/utils/updateScrollIndexHelper.js +79 -0
  186. package/dist/es/InfiniteLoader/InfiniteLoader.example.js +170 -0
  187. package/dist/es/InfiniteLoader/InfiniteLoader.jest.js +565 -0
  188. package/dist/es/InfiniteLoader/InfiniteLoader.js +263 -0
  189. package/dist/es/InfiniteLoader/index.js +3 -0
  190. package/dist/es/List/List.example.js +227 -0
  191. package/dist/es/List/List.jest.js +511 -0
  192. package/dist/es/List/List.js +312 -0
  193. package/dist/es/List/index.js +3 -0
  194. package/dist/es/List/types.js +21 -0
  195. package/dist/es/Masonry/Masonry.example.js +278 -0
  196. package/dist/es/Masonry/Masonry.jest.js +444 -0
  197. package/dist/es/Masonry/Masonry.js +421 -0
  198. package/dist/es/Masonry/PositionCache.js +82 -0
  199. package/dist/es/Masonry/createCellPositioner.js +53 -0
  200. package/dist/es/Masonry/index.js +4 -0
  201. package/dist/es/MultiGrid/CellMeasurerCacheDecorator.js +100 -0
  202. package/dist/es/MultiGrid/MultiGrid.example.js +122 -0
  203. package/dist/es/MultiGrid/MultiGrid.jest.js +579 -0
  204. package/dist/es/MultiGrid/MultiGrid.js +733 -0
  205. package/dist/es/MultiGrid/index.js +3 -0
  206. package/dist/es/ScrollSync/ScrollSync.example.js +248 -0
  207. package/dist/es/ScrollSync/ScrollSync.jest.js +60 -0
  208. package/dist/es/ScrollSync/ScrollSync.js +80 -0
  209. package/dist/es/ScrollSync/index.js +3 -0
  210. package/dist/es/Table/Column.jest.js +84 -0
  211. package/dist/es/Table/Column.js +85 -0
  212. package/dist/es/Table/SortDirection.js +13 -0
  213. package/dist/es/Table/SortIndicator.js +31 -0
  214. package/dist/es/Table/Table.example.js +316 -0
  215. package/dist/es/Table/Table.jest.js +1251 -0
  216. package/dist/es/Table/Table.js +735 -0
  217. package/dist/es/Table/createMultiSort.jest.js +162 -0
  218. package/dist/es/Table/createMultiSort.js +93 -0
  219. package/dist/es/Table/defaultCellDataGetter.js +15 -0
  220. package/dist/es/Table/defaultCellRenderer.js +13 -0
  221. package/dist/es/Table/defaultHeaderRenderer.js +25 -0
  222. package/dist/es/Table/defaultHeaderRowRenderer.js +12 -0
  223. package/dist/es/Table/defaultRowRenderer.js +77 -0
  224. package/dist/es/Table/index.js +12 -0
  225. package/dist/es/Table/types.js +38 -0
  226. package/dist/es/WindowScroller/WindowScroller.e2e.js +295 -0
  227. package/dist/es/WindowScroller/WindowScroller.example.js +158 -0
  228. package/dist/es/WindowScroller/WindowScroller.header-resize.e2e.js +356 -0
  229. package/dist/es/WindowScroller/WindowScroller.jest.js +530 -0
  230. package/dist/es/WindowScroller/WindowScroller.js +259 -0
  231. package/dist/es/WindowScroller/WindowScroller.js.flow +277 -0
  232. package/dist/es/WindowScroller/WindowScroller.ssr.js +19 -0
  233. package/dist/es/WindowScroller/index.js +3 -0
  234. package/dist/es/WindowScroller/index.js.flow +6 -0
  235. package/dist/es/WindowScroller/utils/dimensions.js +81 -0
  236. package/dist/es/WindowScroller/utils/dimensions.js.flow +91 -0
  237. package/dist/es/WindowScroller/utils/onScroll.js +64 -0
  238. package/dist/es/WindowScroller/utils/onScroll.js.flow +94 -0
  239. package/dist/es/index.js +13 -0
  240. package/dist/es/jest-setup.js +5 -0
  241. package/dist/es/utils/TestHelper.js +30 -0
  242. package/dist/es/utils/animationFrame.js +23 -0
  243. package/dist/es/utils/createCallbackMemoizer.jest.js +216 -0
  244. package/dist/es/utils/createCallbackMemoizer.js +25 -0
  245. package/dist/es/utils/getUpdatedOffsetForIndex.jest.js +65 -0
  246. package/dist/es/utils/getUpdatedOffsetForIndex.js +32 -0
  247. package/dist/es/utils/initCellMetadata.js +31 -0
  248. package/dist/es/utils/requestAnimationTimeout.js +32 -0
  249. package/dist/es/vendor/binarySearchBounds.js +194 -0
  250. package/dist/es/vendor/detectElementResize.js +186 -0
  251. package/dist/es/vendor/intervalTree.js +354 -0
  252. package/dist/umd/react-virtualized.js +4638 -0
  253. package/package.json +188 -0
  254. package/styles.css +80 -0
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = createDetectElementResize;
7
+ /**
8
+ * Detect Element Resize.
9
+ * https://github.com/sdecima/javascript-detect-element-resize
10
+ * Sebastian Decima
11
+ *
12
+ * Forked from version 0.5.3; includes the following modifications:
13
+ * 1) Guard against unsafe 'window' and 'document' references (to support SSR).
14
+ * 2) Defer initialization code via a top-level function wrapper (to support SSR).
15
+ * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.
16
+ * 4) Add nonce for style element.
17
+ * 5) Added support for injecting custom window object
18
+ **/
19
+
20
+ function createDetectElementResize(nonce, hostWindow) {
21
+ // Check `document` and `window` in case of server-side rendering
22
+ var _window;
23
+ if (typeof hostWindow !== 'undefined') {
24
+ _window = hostWindow;
25
+ } else if (typeof window !== 'undefined') {
26
+ _window = window;
27
+ } else if (typeof self !== 'undefined') {
28
+ _window = self;
29
+ } else {
30
+ _window = global;
31
+ }
32
+ var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;
33
+ if (!attachEvent) {
34
+ var requestFrame = function () {
35
+ var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {
36
+ return _window.setTimeout(fn, 20);
37
+ };
38
+ return function (fn) {
39
+ return raf(fn);
40
+ };
41
+ }();
42
+ var cancelFrame = function () {
43
+ var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;
44
+ return function (id) {
45
+ return cancel(id);
46
+ };
47
+ }();
48
+ var resetTriggers = function resetTriggers(element) {
49
+ var triggers = element.__resizeTriggers__,
50
+ expand = triggers.firstElementChild,
51
+ contract = triggers.lastElementChild,
52
+ expandChild = expand.firstElementChild;
53
+ contract.scrollLeft = contract.scrollWidth;
54
+ contract.scrollTop = contract.scrollHeight;
55
+ expandChild.style.width = expand.offsetWidth + 1 + 'px';
56
+ expandChild.style.height = expand.offsetHeight + 1 + 'px';
57
+ expand.scrollLeft = expand.scrollWidth;
58
+ expand.scrollTop = expand.scrollHeight;
59
+ };
60
+ var checkTriggers = function checkTriggers(element) {
61
+ return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;
62
+ };
63
+ var scrollListener = function scrollListener(e) {
64
+ // Don't measure (which forces) reflow for scrolls that happen inside of children!
65
+ if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {
66
+ return;
67
+ }
68
+ var element = this;
69
+ resetTriggers(this);
70
+ if (this.__resizeRAF__) {
71
+ cancelFrame(this.__resizeRAF__);
72
+ }
73
+ this.__resizeRAF__ = requestFrame(function () {
74
+ if (checkTriggers(element)) {
75
+ element.__resizeLast__.width = element.offsetWidth;
76
+ element.__resizeLast__.height = element.offsetHeight;
77
+ element.__resizeListeners__.forEach(function (fn) {
78
+ fn.call(element, e);
79
+ });
80
+ }
81
+ });
82
+ };
83
+
84
+ /* Detect CSS Animations support to detect element display/re-attach */
85
+ var animation = false,
86
+ keyframeprefix = '',
87
+ animationstartevent = 'animationstart',
88
+ domPrefixes = 'Webkit Moz O ms'.split(' '),
89
+ startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),
90
+ pfx = '';
91
+ {
92
+ var elm = _window.document.createElement('fakeelement');
93
+ if (elm.style.animationName !== undefined) {
94
+ animation = true;
95
+ }
96
+ if (animation === false) {
97
+ for (var i = 0; i < domPrefixes.length; i++) {
98
+ if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
99
+ pfx = domPrefixes[i];
100
+ keyframeprefix = '-' + pfx.toLowerCase() + '-';
101
+ animationstartevent = startEvents[i];
102
+ animation = true;
103
+ break;
104
+ }
105
+ }
106
+ }
107
+ }
108
+ var animationName = 'resizeanim';
109
+ var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';
110
+ var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';
111
+ }
112
+ var createStyles = function createStyles(doc) {
113
+ if (!doc.getElementById('detectElementResize')) {
114
+ //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360
115
+ var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',
116
+ head = doc.head || doc.getElementsByTagName('head')[0],
117
+ style = doc.createElement('style');
118
+ style.id = 'detectElementResize';
119
+ style.type = 'text/css';
120
+ if (nonce != null) {
121
+ style.setAttribute('nonce', nonce);
122
+ }
123
+ if (style.styleSheet) {
124
+ style.styleSheet.cssText = css;
125
+ } else {
126
+ style.appendChild(doc.createTextNode(css));
127
+ }
128
+ head.appendChild(style);
129
+ }
130
+ };
131
+ var addResizeListener = function addResizeListener(element, fn) {
132
+ if (attachEvent) {
133
+ element.attachEvent('onresize', fn);
134
+ } else {
135
+ if (!element.__resizeTriggers__) {
136
+ var doc = element.ownerDocument;
137
+ var elementStyle = _window.getComputedStyle(element);
138
+ if (elementStyle && elementStyle.position == 'static') {
139
+ element.style.position = 'relative';
140
+ }
141
+ createStyles(doc);
142
+ element.__resizeLast__ = {};
143
+ element.__resizeListeners__ = [];
144
+ (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';
145
+ var expandTrigger = doc.createElement('div');
146
+ expandTrigger.className = 'expand-trigger';
147
+ expandTrigger.appendChild(doc.createElement('div'));
148
+ var contractTrigger = doc.createElement('div');
149
+ contractTrigger.className = 'contract-trigger';
150
+ element.__resizeTriggers__.appendChild(expandTrigger);
151
+ element.__resizeTriggers__.appendChild(contractTrigger);
152
+ element.appendChild(element.__resizeTriggers__);
153
+ resetTriggers(element);
154
+ element.addEventListener('scroll', scrollListener, true);
155
+
156
+ /* Listen for a css animation to detect element display/re-attach */
157
+ if (animationstartevent) {
158
+ element.__resizeTriggers__.__animationListener__ = function animationListener(e) {
159
+ if (e.animationName == animationName) {
160
+ resetTriggers(element);
161
+ }
162
+ };
163
+ element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
164
+ }
165
+ }
166
+ element.__resizeListeners__.push(fn);
167
+ }
168
+ };
169
+ var removeResizeListener = function removeResizeListener(element, fn) {
170
+ if (attachEvent) {
171
+ element.detachEvent('onresize', fn);
172
+ } else {
173
+ element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
174
+ if (!element.__resizeListeners__.length) {
175
+ element.removeEventListener('scroll', scrollListener, true);
176
+ if (element.__resizeTriggers__.__animationListener__) {
177
+ element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);
178
+ element.__resizeTriggers__.__animationListener__ = null;
179
+ }
180
+ try {
181
+ element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);
182
+ } catch (e) {
183
+ // Preact compat; see developit/preact-compat/issues/228
184
+ }
185
+ }
186
+ }
187
+ };
188
+ return {
189
+ addResizeListener: addResizeListener,
190
+ removeResizeListener: removeResizeListener
191
+ };
192
+ }
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = createWrapper;
8
+ var _binarySearchBounds = _interopRequireDefault(require("./binarySearchBounds"));
9
+ /**
10
+ * Binary Search Bounds
11
+ * https://github.com/mikolalysenko/interval-tree-1d
12
+ * Mikola Lysenko
13
+ *
14
+ * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.
15
+ * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5
16
+ **/
17
+
18
+ var NOT_FOUND = 0;
19
+ var SUCCESS = 1;
20
+ var EMPTY = 2;
21
+ function IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {
22
+ this.mid = mid;
23
+ this.left = left;
24
+ this.right = right;
25
+ this.leftPoints = leftPoints;
26
+ this.rightPoints = rightPoints;
27
+ this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;
28
+ }
29
+ var proto = IntervalTreeNode.prototype;
30
+ function copy(a, b) {
31
+ a.mid = b.mid;
32
+ a.left = b.left;
33
+ a.right = b.right;
34
+ a.leftPoints = b.leftPoints;
35
+ a.rightPoints = b.rightPoints;
36
+ a.count = b.count;
37
+ }
38
+ function rebuild(node, intervals) {
39
+ var ntree = createIntervalTree(intervals);
40
+ node.mid = ntree.mid;
41
+ node.left = ntree.left;
42
+ node.right = ntree.right;
43
+ node.leftPoints = ntree.leftPoints;
44
+ node.rightPoints = ntree.rightPoints;
45
+ node.count = ntree.count;
46
+ }
47
+ function rebuildWithInterval(node, interval) {
48
+ var intervals = node.intervals([]);
49
+ intervals.push(interval);
50
+ rebuild(node, intervals);
51
+ }
52
+ function rebuildWithoutInterval(node, interval) {
53
+ var intervals = node.intervals([]);
54
+ var idx = intervals.indexOf(interval);
55
+ if (idx < 0) {
56
+ return NOT_FOUND;
57
+ }
58
+ intervals.splice(idx, 1);
59
+ rebuild(node, intervals);
60
+ return SUCCESS;
61
+ }
62
+ proto.intervals = function (result) {
63
+ result.push.apply(result, this.leftPoints);
64
+ if (this.left) {
65
+ this.left.intervals(result);
66
+ }
67
+ if (this.right) {
68
+ this.right.intervals(result);
69
+ }
70
+ return result;
71
+ };
72
+ proto.insert = function (interval) {
73
+ var weight = this.count - this.leftPoints.length;
74
+ this.count += 1;
75
+ if (interval[1] < this.mid) {
76
+ if (this.left) {
77
+ if (4 * (this.left.count + 1) > 3 * (weight + 1)) {
78
+ rebuildWithInterval(this, interval);
79
+ } else {
80
+ this.left.insert(interval);
81
+ }
82
+ } else {
83
+ this.left = createIntervalTree([interval]);
84
+ }
85
+ } else if (interval[0] > this.mid) {
86
+ if (this.right) {
87
+ if (4 * (this.right.count + 1) > 3 * (weight + 1)) {
88
+ rebuildWithInterval(this, interval);
89
+ } else {
90
+ this.right.insert(interval);
91
+ }
92
+ } else {
93
+ this.right = createIntervalTree([interval]);
94
+ }
95
+ } else {
96
+ var l = _binarySearchBounds["default"].ge(this.leftPoints, interval, compareBegin);
97
+ var r = _binarySearchBounds["default"].ge(this.rightPoints, interval, compareEnd);
98
+ this.leftPoints.splice(l, 0, interval);
99
+ this.rightPoints.splice(r, 0, interval);
100
+ }
101
+ };
102
+ proto.remove = function (interval) {
103
+ var weight = this.count - this.leftPoints;
104
+ if (interval[1] < this.mid) {
105
+ if (!this.left) {
106
+ return NOT_FOUND;
107
+ }
108
+ var rw = this.right ? this.right.count : 0;
109
+ if (4 * rw > 3 * (weight - 1)) {
110
+ return rebuildWithoutInterval(this, interval);
111
+ }
112
+ var r = this.left.remove(interval);
113
+ if (r === EMPTY) {
114
+ this.left = null;
115
+ this.count -= 1;
116
+ return SUCCESS;
117
+ } else if (r === SUCCESS) {
118
+ this.count -= 1;
119
+ }
120
+ return r;
121
+ } else if (interval[0] > this.mid) {
122
+ if (!this.right) {
123
+ return NOT_FOUND;
124
+ }
125
+ var lw = this.left ? this.left.count : 0;
126
+ if (4 * lw > 3 * (weight - 1)) {
127
+ return rebuildWithoutInterval(this, interval);
128
+ }
129
+ var r = this.right.remove(interval);
130
+ if (r === EMPTY) {
131
+ this.right = null;
132
+ this.count -= 1;
133
+ return SUCCESS;
134
+ } else if (r === SUCCESS) {
135
+ this.count -= 1;
136
+ }
137
+ return r;
138
+ } else {
139
+ if (this.count === 1) {
140
+ if (this.leftPoints[0] === interval) {
141
+ return EMPTY;
142
+ } else {
143
+ return NOT_FOUND;
144
+ }
145
+ }
146
+ if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {
147
+ if (this.left && this.right) {
148
+ var p = this;
149
+ var n = this.left;
150
+ while (n.right) {
151
+ p = n;
152
+ n = n.right;
153
+ }
154
+ if (p === this) {
155
+ n.right = this.right;
156
+ } else {
157
+ var l = this.left;
158
+ var r = this.right;
159
+ p.count -= n.count;
160
+ p.right = n.left;
161
+ n.left = l;
162
+ n.right = r;
163
+ }
164
+ copy(this, n);
165
+ this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;
166
+ } else if (this.left) {
167
+ copy(this, this.left);
168
+ } else {
169
+ copy(this, this.right);
170
+ }
171
+ return SUCCESS;
172
+ }
173
+ for (var l = _binarySearchBounds["default"].ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {
174
+ if (this.leftPoints[l][0] !== interval[0]) {
175
+ break;
176
+ }
177
+ if (this.leftPoints[l] === interval) {
178
+ this.count -= 1;
179
+ this.leftPoints.splice(l, 1);
180
+ for (var r = _binarySearchBounds["default"].ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {
181
+ if (this.rightPoints[r][1] !== interval[1]) {
182
+ break;
183
+ } else if (this.rightPoints[r] === interval) {
184
+ this.rightPoints.splice(r, 1);
185
+ return SUCCESS;
186
+ }
187
+ }
188
+ }
189
+ }
190
+ return NOT_FOUND;
191
+ }
192
+ };
193
+ function reportLeftRange(arr, hi, cb) {
194
+ for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {
195
+ var r = cb(arr[i]);
196
+ if (r) {
197
+ return r;
198
+ }
199
+ }
200
+ }
201
+ function reportRightRange(arr, lo, cb) {
202
+ for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {
203
+ var r = cb(arr[i]);
204
+ if (r) {
205
+ return r;
206
+ }
207
+ }
208
+ }
209
+ function reportRange(arr, cb) {
210
+ for (var i = 0; i < arr.length; ++i) {
211
+ var r = cb(arr[i]);
212
+ if (r) {
213
+ return r;
214
+ }
215
+ }
216
+ }
217
+ proto.queryPoint = function (x, cb) {
218
+ if (x < this.mid) {
219
+ if (this.left) {
220
+ var r = this.left.queryPoint(x, cb);
221
+ if (r) {
222
+ return r;
223
+ }
224
+ }
225
+ return reportLeftRange(this.leftPoints, x, cb);
226
+ } else if (x > this.mid) {
227
+ if (this.right) {
228
+ var r = this.right.queryPoint(x, cb);
229
+ if (r) {
230
+ return r;
231
+ }
232
+ }
233
+ return reportRightRange(this.rightPoints, x, cb);
234
+ } else {
235
+ return reportRange(this.leftPoints, cb);
236
+ }
237
+ };
238
+ proto.queryInterval = function (lo, hi, cb) {
239
+ if (lo < this.mid && this.left) {
240
+ var r = this.left.queryInterval(lo, hi, cb);
241
+ if (r) {
242
+ return r;
243
+ }
244
+ }
245
+ if (hi > this.mid && this.right) {
246
+ var r = this.right.queryInterval(lo, hi, cb);
247
+ if (r) {
248
+ return r;
249
+ }
250
+ }
251
+ if (hi < this.mid) {
252
+ return reportLeftRange(this.leftPoints, hi, cb);
253
+ } else if (lo > this.mid) {
254
+ return reportRightRange(this.rightPoints, lo, cb);
255
+ } else {
256
+ return reportRange(this.leftPoints, cb);
257
+ }
258
+ };
259
+ function compareNumbers(a, b) {
260
+ return a - b;
261
+ }
262
+ function compareBegin(a, b) {
263
+ var d = a[0] - b[0];
264
+ if (d) {
265
+ return d;
266
+ }
267
+ return a[1] - b[1];
268
+ }
269
+ function compareEnd(a, b) {
270
+ var d = a[1] - b[1];
271
+ if (d) {
272
+ return d;
273
+ }
274
+ return a[0] - b[0];
275
+ }
276
+ function createIntervalTree(intervals) {
277
+ if (intervals.length === 0) {
278
+ return null;
279
+ }
280
+ var pts = [];
281
+ for (var i = 0; i < intervals.length; ++i) {
282
+ pts.push(intervals[i][0], intervals[i][1]);
283
+ }
284
+ pts.sort(compareNumbers);
285
+ var mid = pts[pts.length >> 1];
286
+ var leftIntervals = [];
287
+ var rightIntervals = [];
288
+ var centerIntervals = [];
289
+ for (var i = 0; i < intervals.length; ++i) {
290
+ var s = intervals[i];
291
+ if (s[1] < mid) {
292
+ leftIntervals.push(s);
293
+ } else if (mid < s[0]) {
294
+ rightIntervals.push(s);
295
+ } else {
296
+ centerIntervals.push(s);
297
+ }
298
+ }
299
+
300
+ //Split center intervals
301
+ var leftPoints = centerIntervals;
302
+ var rightPoints = centerIntervals.slice();
303
+ leftPoints.sort(compareBegin);
304
+ rightPoints.sort(compareEnd);
305
+ return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);
306
+ }
307
+
308
+ //User friendly wrapper that makes it possible to support empty trees
309
+ function IntervalTree(root) {
310
+ this.root = root;
311
+ }
312
+ var tproto = IntervalTree.prototype;
313
+ tproto.insert = function (interval) {
314
+ if (this.root) {
315
+ this.root.insert(interval);
316
+ } else {
317
+ this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);
318
+ }
319
+ };
320
+ tproto.remove = function (interval) {
321
+ if (this.root) {
322
+ var r = this.root.remove(interval);
323
+ if (r === EMPTY) {
324
+ this.root = null;
325
+ }
326
+ return r !== NOT_FOUND;
327
+ }
328
+ return false;
329
+ };
330
+ tproto.queryPoint = function (p, cb) {
331
+ if (this.root) {
332
+ return this.root.queryPoint(p, cb);
333
+ }
334
+ };
335
+ tproto.queryInterval = function (lo, hi, cb) {
336
+ if (lo <= hi && this.root) {
337
+ return this.root.queryInterval(lo, hi, cb);
338
+ }
339
+ };
340
+ Object.defineProperty(tproto, 'count', {
341
+ get: function get() {
342
+ if (this.root) {
343
+ return this.root.count;
344
+ }
345
+ return 0;
346
+ }
347
+ });
348
+ Object.defineProperty(tproto, 'intervals', {
349
+ get: function get() {
350
+ if (this.root) {
351
+ return this.root.intervals([]);
352
+ }
353
+ return [];
354
+ }
355
+ });
356
+ function createWrapper(intervals) {
357
+ if (!intervals || intervals.length === 0) {
358
+ return new IntervalTree(null);
359
+ }
360
+ return new IntervalTree(createIntervalTree(intervals));
361
+ }