react-virtuoso 2.2.6-beta.2 → 2.2.9-beta.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 (139) hide show
  1. package/dist/Grid.d.ts +27 -30
  2. package/dist/List.d.ts +230 -206
  3. package/dist/__examples.cc6a8f9f.js +10236 -620
  4. package/dist/__examples.cc6a8f9f.js.map +1 -1
  5. package/dist/__examples.js +1 -1
  6. package/dist/__examples.js.map +1 -1
  7. package/dist/align-to-bottom.7fcd2087.js +206 -1
  8. package/dist/align-to-bottom.7fcd2087.js.map +1 -1
  9. package/dist/alignToBottomSystem.d.ts +21 -21
  10. package/dist/at-bottom-detection.a5d019c3.js +441 -0
  11. package/dist/at-bottom-detection.a5d019c3.js.map +1 -0
  12. package/dist/auto-prepend-items.bd7e9b90.js +206 -1
  13. package/dist/auto-prepend-items.bd7e9b90.js.map +1 -1
  14. package/dist/benchmark.66d31485.js +206 -1
  15. package/dist/benchmark.66d31485.js.map +1 -1
  16. package/dist/chat.d4f93b8b.js +206 -1
  17. package/dist/chat.d4f93b8b.js.map +1 -1
  18. package/dist/components.d.ts +8 -6
  19. package/dist/context.a45abc98.js +380 -0
  20. package/dist/context.a45abc98.js.map +1 -0
  21. package/dist/contextSystem.d.ts +4 -0
  22. package/dist/custom-components.5aeaa7ef.js +206 -1
  23. package/dist/custom-components.5aeaa7ef.js.map +1 -1
  24. package/dist/custom-scroller.b0240d14.js +206 -1
  25. package/dist/custom-scroller.b0240d14.js.map +1 -1
  26. package/dist/data.26707046.js +206 -1
  27. package/dist/data.26707046.js.map +1 -1
  28. package/dist/decrease-items.e2211e50.js +206 -1
  29. package/dist/decrease-items.e2211e50.js.map +1 -1
  30. package/dist/default-item-height.b77ada36.js +206 -1
  31. package/dist/default-item-height.b77ada36.js.map +1 -1
  32. package/dist/domIOSystem.d.ts +1 -4
  33. package/dist/empty-placeholder.00607a6e.js +206 -1
  34. package/dist/empty-placeholder.00607a6e.js.map +1 -1
  35. package/dist/end-reached.8531e5b1.js +206 -1
  36. package/dist/end-reached.8531e5b1.js.map +1 -1
  37. package/dist/endless-scrolling.bc4101f0.js +206 -1
  38. package/dist/endless-scrolling.bc4101f0.js.map +1 -1
  39. package/dist/expandable-cards.5439f51b.js +206 -1
  40. package/dist/expandable-cards.5439f51b.js.map +1 -1
  41. package/dist/follow-output.4e36fca8.js +206 -1
  42. package/dist/follow-output.4e36fca8.js.map +1 -1
  43. package/dist/followOutputSystem.d.ts +36 -12
  44. package/dist/grid-optimize-rendering.b49e36f5.js +206 -1
  45. package/dist/grid-optimize-rendering.b49e36f5.js.map +1 -1
  46. package/dist/grid-scroll-seek-placeholder.b2862006.js +415 -0
  47. package/dist/grid-scroll-seek-placeholder.b2862006.js.map +1 -0
  48. package/dist/grid.d5d77b6a.js +206 -1
  49. package/dist/grid.d5d77b6a.js.map +1 -1
  50. package/dist/gridSystem.d.ts +20 -19
  51. package/dist/grouped-endless-scrolling.24985a0f.js +206 -1
  52. package/dist/grouped-endless-scrolling.24985a0f.js.map +1 -1
  53. package/dist/grouped-load-more.bce8f6e4.js +206 -1
  54. package/dist/grouped-load-more.bce8f6e4.js.map +1 -1
  55. package/dist/grouped-topmost-item.34960f5e.js +206 -1
  56. package/dist/grouped-topmost-item.34960f5e.js.map +1 -1
  57. package/dist/grouped.a2908632.js +206 -1
  58. package/dist/grouped.a2908632.js.map +1 -1
  59. package/dist/groupedListSystem.d.ts +2 -2
  60. package/dist/header-footer.49733d45.js +206 -1
  61. package/dist/header-footer.49733d45.js.map +1 -1
  62. package/dist/hello.54765c26.js +206 -1
  63. package/dist/hello.54765c26.js.map +1 -1
  64. package/dist/hooks/useChangedChildSizes.d.ts +1 -1
  65. package/dist/hooks/useScrollTop.d.ts +1 -1
  66. package/dist/index.js +1 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/index.m.js +1 -1
  69. package/dist/index.m.js.map +1 -1
  70. package/dist/initial-from-zero.22ad1626.js +206 -1
  71. package/dist/initial-from-zero.22ad1626.js.map +1 -1
  72. package/dist/initial-scroll-top.90db1920.js +206 -1
  73. package/dist/initial-scroll-top.90db1920.js.map +1 -1
  74. package/dist/initial-topmost-item-default-height.43a95247.js +206 -1
  75. package/dist/initial-topmost-item-default-height.43a95247.js.map +1 -1
  76. package/dist/initial-topmost-item.61c0e169.js +206 -1
  77. package/dist/initial-topmost-item.61c0e169.js.map +1 -1
  78. package/dist/initialItemCountSystem.d.ts +17 -17
  79. package/dist/initialScrollTopSystem.d.ts +21 -21
  80. package/dist/initialTopMostItemIndexSystem.d.ts +4 -4
  81. package/dist/interfaces.d.ts +11 -5
  82. package/dist/listStateSystem.d.ts +16 -16
  83. package/dist/listSystem.d.ts +217 -193
  84. package/dist/long-last-item.b56ff89c.js +206 -2
  85. package/dist/long-last-item.b56ff89c.js.map +1 -1
  86. package/dist/prepend-items.f2bda34b.js +206 -1
  87. package/dist/prepend-items.f2bda34b.js.map +1 -1
  88. package/dist/prepend-last-tall-item.168a9e65.js +206 -1
  89. package/dist/prepend-last-tall-item.168a9e65.js.map +1 -1
  90. package/dist/react-beautiful-dnd-window-scroller.0a227511.js +206 -1
  91. package/dist/react-beautiful-dnd-window-scroller.0a227511.js.map +1 -1
  92. package/dist/react-beautiful-dnd.817e9251.js +206 -1
  93. package/dist/react-beautiful-dnd.817e9251.js.map +1 -1
  94. package/dist/rerender.ddd61b7c.js +206 -1
  95. package/dist/rerender.ddd61b7c.js.map +1 -1
  96. package/dist/resize-loop.309b1dac.js +206 -1
  97. package/dist/resize-loop.309b1dac.js.map +1 -1
  98. package/dist/resizing-items.c09b5e1b.js +206 -1
  99. package/dist/resizing-items.c09b5e1b.js.map +1 -1
  100. package/dist/scroll-into-view.39b77fe9.js +206 -1
  101. package/dist/scroll-into-view.39b77fe9.js.map +1 -1
  102. package/dist/scroll-seek-placeholder.69fb85c6.js +206 -1
  103. package/dist/scroll-seek-placeholder.69fb85c6.js.map +1 -1
  104. package/dist/scroll-to-index.e72249cf.js +206 -1
  105. package/dist/scroll-to-index.e72249cf.js.map +1 -1
  106. package/dist/scrollIntoViewSystem.d.ts +21 -21
  107. package/dist/scrollSeekSystem.d.ts +7 -7
  108. package/dist/scrollToIndexSystem.d.ts +2 -2
  109. package/dist/sizeRangeSystem.d.ts +3 -3
  110. package/dist/ssr.8f31b042.js +206 -1
  111. package/dist/ssr.8f31b042.js.map +1 -1
  112. package/dist/start-reached.2990ece7.js +206 -1
  113. package/dist/start-reached.2990ece7.js.map +1 -1
  114. package/dist/stateFlagsSystem.d.ts +8 -5
  115. package/dist/tall-item-reverse-scrolling.58bcd140.js +206 -1
  116. package/dist/tall-item-reverse-scrolling.58bcd140.js.map +1 -1
  117. package/dist/test-case-446.dce9595c.js +206 -1
  118. package/dist/test-case-446.dce9595c.js.map +1 -1
  119. package/dist/test-case-460.6d75ad1f.js +206 -1
  120. package/dist/test-case-460.6d75ad1f.js.map +1 -1
  121. package/dist/test-case-463.525f34ba.js +206 -1
  122. package/dist/test-case-463.525f34ba.js.map +1 -1
  123. package/dist/toggle-display-grouped.4f4ae058.js +206 -1
  124. package/dist/toggle-display-grouped.4f4ae058.js.map +1 -1
  125. package/dist/toggle.7047c23e.js +447 -0
  126. package/dist/toggle.7047c23e.js.map +1 -0
  127. package/dist/top-items.f724bf61.js +206 -1
  128. package/dist/top-items.f724bf61.js.map +1 -1
  129. package/dist/topItemCountSystem.d.ts +17 -17
  130. package/dist/totalListHeightSystem.d.ts +19 -19
  131. package/dist/upward-scroll.d49e0815.js +206 -1
  132. package/dist/upward-scroll.d49e0815.js.map +1 -1
  133. package/dist/upwardScrollFixSystem.d.ts +25 -25
  134. package/dist/window-grid.b22094fd.js +206 -1
  135. package/dist/window-grid.b22094fd.js.map +1 -1
  136. package/dist/window-scroller.a979c6d6.js +206 -1
  137. package/dist/window-scroller.a979c6d6.js.map +1 -1
  138. package/dist/windowScrollerSystem.d.ts +2 -2
  139. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["grouped-endless-scrolling.tsx"],"names":[],"mappings":"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","file":"grouped-endless-scrolling.24985a0f.js","sourceRoot":"../e2e","sourcesContent":["import * as React from 'react'\nimport { Components, GroupedVirtuoso } from '../src'\nimport { useMemo, useRef, useState, useEffect, useCallback } from 'react'\nimport faker from 'faker'\nimport { groupBy } from 'lodash'\n\nconst getUser = () => {\n const firstName = faker.name.firstName()\n const lastName = faker.name.lastName()\n return {\n name: `${firstName} ${lastName}`,\n initials: `${firstName.substr(0, 1)}${lastName.substr(0, 1)}`,\n description: faker.company.catchPhrase(),\n avatar: faker.internet.avatar(),\n }\n}\n\ntype User = ReturnType<typeof getUser>\n\nconst sortUser = (a: User, b: User) => {\n if (a.name < b.name) {\n return -1\n }\n if (a.name > b.name) {\n return 1\n }\n return 0\n}\n\nconst useGroupedUsers = (count: number) => {\n const allUsers = useMemo(() => Array.from({ length: count }, getUser).sort(sortUser), [count])\n\n const loadedCount = useRef(0)\n const loadedUsers = useRef<User[]>([])\n const groups = useRef<string[]>([])\n const [endReached, setEndReached] = useState(false)\n const [groupCounts, setGroupCounts] = useState<number[]>([])\n\n const loadMore = useCallback(() => {\n if (!endReached) {\n setTimeout(() => {\n loadedCount.current += 50\n\n // in a real world scenario, you would fetch the next\n // slice and append it to the existing records\n loadedUsers.current = allUsers.slice(0, loadedCount.current)\n\n // the code below calculates the group counts\n // for the users loaded so far;\n // this should be performed on the server too\n const groupedUsers = groupBy(loadedUsers.current, (user) => user.name[0])\n groups.current = Object.keys(groupedUsers)\n setGroupCounts(Object.values(groupedUsers).map((users) => users.length))\n\n if (loadedCount.current === count) {\n setEndReached(true)\n }\n }, 30)\n }\n }, [allUsers, endReached, count])\n\n return {\n loadMore,\n endReached,\n groupCounts,\n users: loadedUsers.current,\n groups: groups.current,\n }\n}\n\nconst components: Partial<Components> = {\n Footer: () => <div>Footer</div>,\n\n List: React.forwardRef(({ style, children }, listRef) => {\n return (\n <div ref={listRef} style={style}>\n {children}\n </div>\n )\n }),\n\n Item: ({ children, ...props }) => {\n return (\n <div {...props} style={{ margin: 0 }}>\n {children}\n </div>\n )\n },\n\n Group: ({ children, ...props }) => {\n return <div {...props}>{children}</div>\n },\n}\nconst Style = { height: '350px', width: '300px' }\n\nexport default function App() {\n const { loadMore, groupCounts, users, groups } = useGroupedUsers(12500)\n console.log(groupCounts)\n\n useEffect(loadMore, [loadMore])\n\n return (\n <GroupedVirtuoso\n components={components}\n style={Style}\n groupCounts={groupCounts}\n groupContent={(index) => <div>Group {groups[index]}</div>}\n overscan={400}\n endReached={(_) => {\n loadMore()\n }}\n itemContent={(index) => (\n <div>\n <div>\n <strong>{users[index].name}</strong>\n </div>\n <div>\n {users[index].description}\n {users[index].description}\n </div>\n </div>\n )}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["grouped-endless-scrolling.tsx","../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","handled","assets","forEach","asset","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","every","generated","js","console","clear","hmrApply","v","hmrAcceptRun","reload","close","onclose","log","removeErrorOverlay","error","message","stack","overlay","createErrorOverlay","document","body","appendChild","getElementById","remove","createElement","stackTrace","innerText","innerHTML","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","deps","cached","cache","some","cb"],"mappings":"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","file":"grouped-endless-scrolling.24985a0f.js","sourceRoot":"../e2e","sourcesContent":["import * as React from 'react'\nimport { Components, GroupedVirtuoso } from '../src'\nimport { useMemo, useRef, useState, useEffect, useCallback } from 'react'\nimport faker from 'faker'\nimport { groupBy } from 'lodash'\n\nconst getUser = () => {\n const firstName = faker.name.firstName()\n const lastName = faker.name.lastName()\n return {\n name: `${firstName} ${lastName}`,\n initials: `${firstName.substr(0, 1)}${lastName.substr(0, 1)}`,\n description: faker.company.catchPhrase(),\n avatar: faker.internet.avatar(),\n }\n}\n\ntype User = ReturnType<typeof getUser>\n\nconst sortUser = (a: User, b: User) => {\n if (a.name < b.name) {\n return -1\n }\n if (a.name > b.name) {\n return 1\n }\n return 0\n}\n\nconst useGroupedUsers = (count: number) => {\n const allUsers = useMemo(() => Array.from({ length: count }, getUser).sort(sortUser), [count])\n\n const loadedCount = useRef(0)\n const loadedUsers = useRef<User[]>([])\n const groups = useRef<string[]>([])\n const [endReached, setEndReached] = useState(false)\n const [groupCounts, setGroupCounts] = useState<number[]>([])\n\n const loadMore = useCallback(() => {\n if (!endReached) {\n setTimeout(() => {\n loadedCount.current += 50\n\n // in a real world scenario, you would fetch the next\n // slice and append it to the existing records\n loadedUsers.current = allUsers.slice(0, loadedCount.current)\n\n // the code below calculates the group counts\n // for the users loaded so far;\n // this should be performed on the server too\n const groupedUsers = groupBy(loadedUsers.current, (user) => user.name[0])\n groups.current = Object.keys(groupedUsers)\n setGroupCounts(Object.values(groupedUsers).map((users) => users.length))\n\n if (loadedCount.current === count) {\n setEndReached(true)\n }\n }, 30)\n }\n }, [allUsers, endReached, count])\n\n return {\n loadMore,\n endReached,\n groupCounts,\n users: loadedUsers.current,\n groups: groups.current,\n }\n}\n\nconst components: Partial<Components> = {\n Footer: () => <div>Footer</div>,\n\n List: React.forwardRef(({ style, children }, listRef) => {\n return (\n <div ref={listRef} style={style}>\n {children}\n </div>\n )\n }),\n\n Item: ({ children, ...props }) => {\n return (\n <div {...props} style={{ margin: 0 }}>\n {children}\n </div>\n )\n },\n\n Group: ({ children, ...props }) => {\n return <div {...props}>{children}</div>\n },\n}\nconst Style = { height: '350px', width: '300px' }\n\nexport default function App() {\n const { loadMore, groupCounts, users, groups } = useGroupedUsers(12500)\n console.log(groupCounts)\n\n useEffect(loadMore, [loadMore])\n\n return (\n <GroupedVirtuoso\n components={components}\n style={Style}\n groupCounts={groupCounts}\n groupContent={(index) => <div>Group {groups[index]}</div>}\n overscan={400}\n endReached={(_) => {\n loadMore()\n }}\n itemContent={(index) => (\n <div>\n <div>\n <strong>{users[index].name}</strong>\n </div>\n <div>\n {users[index].description}\n {users[index].description}\n </div>\n </div>\n )}\n />\n )\n}\n","var OVERLAY_ID = '__parcel__error__overlay__';\n\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n\n module.bundle.hotData = null;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets, assetsToAccept;\n\nvar parent = module.bundle.parent;\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = process.env.HMR_HOSTNAME || location.hostname;\n var protocol = location.protocol === 'https:' ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + ':' + process.env.HMR_PORT + '/');\n ws.onmessage = function(event) {\n checkedAssets = {};\n assetsToAccept = [];\n\n var data = JSON.parse(event.data);\n\n if (data.type === 'update') {\n var handled = false;\n data.assets.forEach(function(asset) {\n if (!asset.isNew) {\n var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);\n if (didAccept) {\n handled = true;\n }\n }\n });\n\n // Enable HMR for CSS by default.\n handled = handled || data.assets.every(function(asset) {\n return asset.type === 'css' && asset.generated.js;\n });\n\n if (handled) {\n console.clear();\n\n data.assets.forEach(function (asset) {\n hmrApply(global.parcelRequire, asset);\n });\n\n assetsToAccept.forEach(function (v) {\n hmrAcceptRun(v[0], v[1]);\n });\n } else if (location.reload) { // `location` global exists in a web worker context but lacks `.reload()` function.\n location.reload();\n }\n }\n\n if (data.type === 'reload') {\n ws.close();\n ws.onclose = function () {\n location.reload();\n }\n }\n\n if (data.type === 'error-resolved') {\n console.log('[parcel] ✨ Error resolved');\n\n removeErrorOverlay();\n }\n\n if (data.type === 'error') {\n console.error('[parcel] 🚨 ' + data.error.message + '\\n' + data.error.stack);\n\n removeErrorOverlay();\n\n var overlay = createErrorOverlay(data);\n document.body.appendChild(overlay);\n }\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n if (overlay) {\n overlay.remove();\n }\n}\n\nfunction createErrorOverlay(data) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n\n // html encode message and stack trace\n var message = document.createElement('div');\n var stackTrace = document.createElement('pre');\n message.innerText = data.error.message;\n stackTrace.innerText = data.error.stack;\n\n overlay.innerHTML = (\n '<div style=\"background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;\">' +\n '<span style=\"background: red; padding: 2px 4px; border-radius: 2px;\">ERROR</span>' +\n '<span style=\"top: 2px; margin-left: 5px; position: relative;\">🚨</span>' +\n '<div style=\"font-size: 18px; font-weight: bold; margin-top: 20px;\">' + message.innerHTML + '</div>' +\n '<pre>' + stackTrace.innerHTML + '</pre>' +\n '</div>'\n );\n\n return overlay;\n\n}\n\nfunction getParents(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) {\n parents.push(k);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction hmrApply(bundle, asset) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (modules[asset.id] || !bundle.parent) {\n var fn = new Function('require', 'module', 'exports', asset.generated.js);\n asset.isNew = !modules[asset.id];\n modules[asset.id] = [fn, asset.deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n}\n\nfunction hmrAcceptCheck(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (!modules[id] && bundle.parent) {\n return hmrAcceptCheck(bundle.parent, id);\n }\n\n if (checkedAssets[id]) {\n return;\n }\n checkedAssets[id] = true;\n\n var cached = bundle.cache[id];\n\n assetsToAccept.push([bundle, id]);\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n\n return getParents(global.parcelRequire, id).some(function (id) {\n return hmrAcceptCheck(global.parcelRequire, id)\n });\n}\n\nfunction hmrAcceptRun(bundle, id) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n if (cached) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n\n cached = bundle.cache[id];\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n cb();\n });\n return true;\n }\n}\n"]}
@@ -297,4 +297,209 @@ function App() {
297
297
  }
298
298
  });
299
299
  }
300
- },{"react":"../node_modules/react/index.js","../src":"../src/index.tsx","faker":"../node_modules/faker/index.js","lodash":"../node_modules/lodash/lodash.js"}]},{},[], null)
300
+ },{"react":"../node_modules/react/index.js","../src":"../src/index.tsx","faker":"../node_modules/faker/index.js","lodash":"../node_modules/lodash/lodash.js"}],"../node_modules/parcel-bundler/src/builtins/hmr-runtime.js":[function(require,module,exports) {
301
+ var global = arguments[3];
302
+ var OVERLAY_ID = '__parcel__error__overlay__';
303
+ var OldModule = module.bundle.Module;
304
+
305
+ function Module(moduleName) {
306
+ OldModule.call(this, moduleName);
307
+ this.hot = {
308
+ data: module.bundle.hotData,
309
+ _acceptCallbacks: [],
310
+ _disposeCallbacks: [],
311
+ accept: function (fn) {
312
+ this._acceptCallbacks.push(fn || function () {});
313
+ },
314
+ dispose: function (fn) {
315
+ this._disposeCallbacks.push(fn);
316
+ }
317
+ };
318
+ module.bundle.hotData = null;
319
+ }
320
+
321
+ module.bundle.Module = Module;
322
+ var checkedAssets, assetsToAccept;
323
+ var parent = module.bundle.parent;
324
+
325
+ if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
326
+ var hostname = "" || location.hostname;
327
+ var protocol = location.protocol === 'https:' ? 'wss' : 'ws';
328
+ var ws = new WebSocket(protocol + '://' + hostname + ':' + "53802" + '/');
329
+
330
+ ws.onmessage = function (event) {
331
+ checkedAssets = {};
332
+ assetsToAccept = [];
333
+ var data = JSON.parse(event.data);
334
+
335
+ if (data.type === 'update') {
336
+ var handled = false;
337
+ data.assets.forEach(function (asset) {
338
+ if (!asset.isNew) {
339
+ var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);
340
+
341
+ if (didAccept) {
342
+ handled = true;
343
+ }
344
+ }
345
+ }); // Enable HMR for CSS by default.
346
+
347
+ handled = handled || data.assets.every(function (asset) {
348
+ return asset.type === 'css' && asset.generated.js;
349
+ });
350
+
351
+ if (handled) {
352
+ console.clear();
353
+ data.assets.forEach(function (asset) {
354
+ hmrApply(global.parcelRequire, asset);
355
+ });
356
+ assetsToAccept.forEach(function (v) {
357
+ hmrAcceptRun(v[0], v[1]);
358
+ });
359
+ } else if (location.reload) {
360
+ // `location` global exists in a web worker context but lacks `.reload()` function.
361
+ location.reload();
362
+ }
363
+ }
364
+
365
+ if (data.type === 'reload') {
366
+ ws.close();
367
+
368
+ ws.onclose = function () {
369
+ location.reload();
370
+ };
371
+ }
372
+
373
+ if (data.type === 'error-resolved') {
374
+ console.log('[parcel] ✨ Error resolved');
375
+ removeErrorOverlay();
376
+ }
377
+
378
+ if (data.type === 'error') {
379
+ console.error('[parcel] 🚨 ' + data.error.message + '\n' + data.error.stack);
380
+ removeErrorOverlay();
381
+ var overlay = createErrorOverlay(data);
382
+ document.body.appendChild(overlay);
383
+ }
384
+ };
385
+ }
386
+
387
+ function removeErrorOverlay() {
388
+ var overlay = document.getElementById(OVERLAY_ID);
389
+
390
+ if (overlay) {
391
+ overlay.remove();
392
+ }
393
+ }
394
+
395
+ function createErrorOverlay(data) {
396
+ var overlay = document.createElement('div');
397
+ overlay.id = OVERLAY_ID; // html encode message and stack trace
398
+
399
+ var message = document.createElement('div');
400
+ var stackTrace = document.createElement('pre');
401
+ message.innerText = data.error.message;
402
+ stackTrace.innerText = data.error.stack;
403
+ overlay.innerHTML = '<div style="background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;">' + '<span style="background: red; padding: 2px 4px; border-radius: 2px;">ERROR</span>' + '<span style="top: 2px; margin-left: 5px; position: relative;">🚨</span>' + '<div style="font-size: 18px; font-weight: bold; margin-top: 20px;">' + message.innerHTML + '</div>' + '<pre>' + stackTrace.innerHTML + '</pre>' + '</div>';
404
+ return overlay;
405
+ }
406
+
407
+ function getParents(bundle, id) {
408
+ var modules = bundle.modules;
409
+
410
+ if (!modules) {
411
+ return [];
412
+ }
413
+
414
+ var parents = [];
415
+ var k, d, dep;
416
+
417
+ for (k in modules) {
418
+ for (d in modules[k][1]) {
419
+ dep = modules[k][1][d];
420
+
421
+ if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {
422
+ parents.push(k);
423
+ }
424
+ }
425
+ }
426
+
427
+ if (bundle.parent) {
428
+ parents = parents.concat(getParents(bundle.parent, id));
429
+ }
430
+
431
+ return parents;
432
+ }
433
+
434
+ function hmrApply(bundle, asset) {
435
+ var modules = bundle.modules;
436
+
437
+ if (!modules) {
438
+ return;
439
+ }
440
+
441
+ if (modules[asset.id] || !bundle.parent) {
442
+ var fn = new Function('require', 'module', 'exports', asset.generated.js);
443
+ asset.isNew = !modules[asset.id];
444
+ modules[asset.id] = [fn, asset.deps];
445
+ } else if (bundle.parent) {
446
+ hmrApply(bundle.parent, asset);
447
+ }
448
+ }
449
+
450
+ function hmrAcceptCheck(bundle, id) {
451
+ var modules = bundle.modules;
452
+
453
+ if (!modules) {
454
+ return;
455
+ }
456
+
457
+ if (!modules[id] && bundle.parent) {
458
+ return hmrAcceptCheck(bundle.parent, id);
459
+ }
460
+
461
+ if (checkedAssets[id]) {
462
+ return;
463
+ }
464
+
465
+ checkedAssets[id] = true;
466
+ var cached = bundle.cache[id];
467
+ assetsToAccept.push([bundle, id]);
468
+
469
+ if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
470
+ return true;
471
+ }
472
+
473
+ return getParents(global.parcelRequire, id).some(function (id) {
474
+ return hmrAcceptCheck(global.parcelRequire, id);
475
+ });
476
+ }
477
+
478
+ function hmrAcceptRun(bundle, id) {
479
+ var cached = bundle.cache[id];
480
+ bundle.hotData = {};
481
+
482
+ if (cached) {
483
+ cached.hot.data = bundle.hotData;
484
+ }
485
+
486
+ if (cached && cached.hot && cached.hot._disposeCallbacks.length) {
487
+ cached.hot._disposeCallbacks.forEach(function (cb) {
488
+ cb(bundle.hotData);
489
+ });
490
+ }
491
+
492
+ delete bundle.cache[id];
493
+ bundle(id);
494
+ cached = bundle.cache[id];
495
+
496
+ if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
497
+ cached.hot._acceptCallbacks.forEach(function (cb) {
498
+ cb();
499
+ });
500
+
501
+ return true;
502
+ }
503
+ }
504
+ },{}]},{},["../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"], null)
505
+ //# sourceMappingURL=/grouped-load-more.bce8f6e4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["grouped-load-more.tsx"],"names":[],"mappings":"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","file":"grouped-load-more.bce8f6e4.js","sourceRoot":"../e2e","sourcesContent":["import * as React from 'react'\nimport { Components, GroupedVirtuoso } from '../src'\nimport { useMemo, useRef, useState, useEffect } from 'react'\nimport faker from 'faker'\nimport { groupBy } from 'lodash'\n\nconst getUser = () => {\n const firstName = faker.name.firstName()\n const lastName = faker.name.lastName()\n return {\n name: `${firstName} ${lastName}`,\n initials: `${firstName.substr(0, 1)}${lastName.substr(0, 1)}`,\n description: faker.company.catchPhrase(),\n avatar: faker.internet.avatar(),\n }\n}\n\ntype User = ReturnType<typeof getUser>\n\nconst sortUser = (a: User, b: User) => {\n if (a.name < b.name) {\n return -1\n }\n if (a.name > b.name) {\n return 1\n }\n return 0\n}\n\nconst useGroupedUsers = (count: number) => {\n const allUsers = useMemo(() => new Array(count).fill(true).map(getUser).sort(sortUser), [count])\n\n const loadedCount = useRef(0)\n const loadedUsers = useRef<User[]>([])\n const groups = useRef<string[]>([])\n const [endReached, setEndReached] = useState(false)\n const [groupCounts, setGroupCounts] = useState<number[]>([])\n\n const loadMore = () => {\n if (!endReached) {\n setTimeout(() => {\n loadedCount.current += 50\n\n // in a real world scenario, you would fetch the next\n // slice and append it to the existing records\n loadedUsers.current = allUsers.slice(0, loadedCount.current)\n\n // the code below calculates the group counts\n // for the users loaded so far;\n // this should be performed on the server too\n const groupedUsers = groupBy(loadedUsers.current, (user) => user.name[0])\n groups.current = Object.keys(groupedUsers)\n setGroupCounts(Object.values(groupedUsers).map((users) => users.length))\n\n if (loadedCount.current === 500) {\n setEndReached(true)\n }\n }, 1500)\n }\n }\n\n return {\n loadMore,\n endReached,\n groupCounts,\n users: loadedUsers.current,\n groups: groups.current,\n }\n}\n\nconst components: Components = {\n Footer: () => <div>Footer</div>,\n\n List: React.forwardRef(({ style, children }, listRef) => {\n return (\n <div ref={listRef} style={style}>\n {children}\n </div>\n )\n }),\n\n Item: ({ children, ...props }) => {\n return (\n <div {...props} style={{ margin: 0 }}>\n {children}\n </div>\n )\n },\n\n Group: ({ children, ...props }) => {\n return <div {...props}>{children}</div>\n },\n}\nconst Style = { height: '350px', width: '400px' }\n\nexport default function App() {\n const { loadMore, groupCounts, users, groups } = useGroupedUsers(500)\n\n useEffect(loadMore, [loadMore])\n\n return (\n <GroupedVirtuoso\n components={components}\n style={Style}\n groupCounts={groupCounts}\n groupContent={(index) => <div>Group {groups[index]}</div>}\n overscan={400}\n endReached={(value) => {\n console.log(value)\n loadMore()\n }}\n itemContent={(index) => (\n <div>\n <div>{users[index].initials}</div>\n <div>\n <strong>{users[index].name}</strong>\n </div>\n <div>{users[index].description}</div>\n </div>\n )}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["grouped-load-more.tsx","../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","handled","assets","forEach","asset","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","every","generated","js","console","clear","hmrApply","v","hmrAcceptRun","reload","close","onclose","log","removeErrorOverlay","error","message","stack","overlay","createErrorOverlay","document","body","appendChild","getElementById","remove","createElement","stackTrace","innerText","innerHTML","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","deps","cached","cache","some","cb"],"mappings":"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","file":"grouped-load-more.bce8f6e4.js","sourceRoot":"../e2e","sourcesContent":["import * as React from 'react'\nimport { Components, GroupedVirtuoso } from '../src'\nimport { useMemo, useRef, useState, useEffect } from 'react'\nimport faker from 'faker'\nimport { groupBy } from 'lodash'\n\nconst getUser = () => {\n const firstName = faker.name.firstName()\n const lastName = faker.name.lastName()\n return {\n name: `${firstName} ${lastName}`,\n initials: `${firstName.substr(0, 1)}${lastName.substr(0, 1)}`,\n description: faker.company.catchPhrase(),\n avatar: faker.internet.avatar(),\n }\n}\n\ntype User = ReturnType<typeof getUser>\n\nconst sortUser = (a: User, b: User) => {\n if (a.name < b.name) {\n return -1\n }\n if (a.name > b.name) {\n return 1\n }\n return 0\n}\n\nconst useGroupedUsers = (count: number) => {\n const allUsers = useMemo(() => new Array(count).fill(true).map(getUser).sort(sortUser), [count])\n\n const loadedCount = useRef(0)\n const loadedUsers = useRef<User[]>([])\n const groups = useRef<string[]>([])\n const [endReached, setEndReached] = useState(false)\n const [groupCounts, setGroupCounts] = useState<number[]>([])\n\n const loadMore = () => {\n if (!endReached) {\n setTimeout(() => {\n loadedCount.current += 50\n\n // in a real world scenario, you would fetch the next\n // slice and append it to the existing records\n loadedUsers.current = allUsers.slice(0, loadedCount.current)\n\n // the code below calculates the group counts\n // for the users loaded so far;\n // this should be performed on the server too\n const groupedUsers = groupBy(loadedUsers.current, (user) => user.name[0])\n groups.current = Object.keys(groupedUsers)\n setGroupCounts(Object.values(groupedUsers).map((users) => users.length))\n\n if (loadedCount.current === 500) {\n setEndReached(true)\n }\n }, 1500)\n }\n }\n\n return {\n loadMore,\n endReached,\n groupCounts,\n users: loadedUsers.current,\n groups: groups.current,\n }\n}\n\nconst components: Components = {\n Footer: () => <div>Footer</div>,\n\n List: React.forwardRef(({ style, children }, listRef) => {\n return (\n <div ref={listRef} style={style}>\n {children}\n </div>\n )\n }),\n\n Item: ({ children, ...props }) => {\n return (\n <div {...props} style={{ margin: 0 }}>\n {children}\n </div>\n )\n },\n\n Group: ({ children, ...props }) => {\n return <div {...props}>{children}</div>\n },\n}\nconst Style = { height: '350px', width: '400px' }\n\nexport default function App() {\n const { loadMore, groupCounts, users, groups } = useGroupedUsers(500)\n\n useEffect(loadMore, [loadMore])\n\n return (\n <GroupedVirtuoso\n components={components}\n style={Style}\n groupCounts={groupCounts}\n groupContent={(index) => <div>Group {groups[index]}</div>}\n overscan={400}\n endReached={(value) => {\n console.log(value)\n loadMore()\n }}\n itemContent={(index) => (\n <div>\n <div>{users[index].initials}</div>\n <div>\n <strong>{users[index].name}</strong>\n </div>\n <div>{users[index].description}</div>\n </div>\n )}\n />\n )\n}\n","var OVERLAY_ID = '__parcel__error__overlay__';\n\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n\n module.bundle.hotData = null;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets, assetsToAccept;\n\nvar parent = module.bundle.parent;\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = process.env.HMR_HOSTNAME || location.hostname;\n var protocol = location.protocol === 'https:' ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + ':' + process.env.HMR_PORT + '/');\n ws.onmessage = function(event) {\n checkedAssets = {};\n assetsToAccept = [];\n\n var data = JSON.parse(event.data);\n\n if (data.type === 'update') {\n var handled = false;\n data.assets.forEach(function(asset) {\n if (!asset.isNew) {\n var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);\n if (didAccept) {\n handled = true;\n }\n }\n });\n\n // Enable HMR for CSS by default.\n handled = handled || data.assets.every(function(asset) {\n return asset.type === 'css' && asset.generated.js;\n });\n\n if (handled) {\n console.clear();\n\n data.assets.forEach(function (asset) {\n hmrApply(global.parcelRequire, asset);\n });\n\n assetsToAccept.forEach(function (v) {\n hmrAcceptRun(v[0], v[1]);\n });\n } else if (location.reload) { // `location` global exists in a web worker context but lacks `.reload()` function.\n location.reload();\n }\n }\n\n if (data.type === 'reload') {\n ws.close();\n ws.onclose = function () {\n location.reload();\n }\n }\n\n if (data.type === 'error-resolved') {\n console.log('[parcel] ✨ Error resolved');\n\n removeErrorOverlay();\n }\n\n if (data.type === 'error') {\n console.error('[parcel] 🚨 ' + data.error.message + '\\n' + data.error.stack);\n\n removeErrorOverlay();\n\n var overlay = createErrorOverlay(data);\n document.body.appendChild(overlay);\n }\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n if (overlay) {\n overlay.remove();\n }\n}\n\nfunction createErrorOverlay(data) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n\n // html encode message and stack trace\n var message = document.createElement('div');\n var stackTrace = document.createElement('pre');\n message.innerText = data.error.message;\n stackTrace.innerText = data.error.stack;\n\n overlay.innerHTML = (\n '<div style=\"background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;\">' +\n '<span style=\"background: red; padding: 2px 4px; border-radius: 2px;\">ERROR</span>' +\n '<span style=\"top: 2px; margin-left: 5px; position: relative;\">🚨</span>' +\n '<div style=\"font-size: 18px; font-weight: bold; margin-top: 20px;\">' + message.innerHTML + '</div>' +\n '<pre>' + stackTrace.innerHTML + '</pre>' +\n '</div>'\n );\n\n return overlay;\n\n}\n\nfunction getParents(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) {\n parents.push(k);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction hmrApply(bundle, asset) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (modules[asset.id] || !bundle.parent) {\n var fn = new Function('require', 'module', 'exports', asset.generated.js);\n asset.isNew = !modules[asset.id];\n modules[asset.id] = [fn, asset.deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n}\n\nfunction hmrAcceptCheck(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (!modules[id] && bundle.parent) {\n return hmrAcceptCheck(bundle.parent, id);\n }\n\n if (checkedAssets[id]) {\n return;\n }\n checkedAssets[id] = true;\n\n var cached = bundle.cache[id];\n\n assetsToAccept.push([bundle, id]);\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n\n return getParents(global.parcelRequire, id).some(function (id) {\n return hmrAcceptCheck(global.parcelRequire, id)\n });\n}\n\nfunction hmrAcceptRun(bundle, id) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n if (cached) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n\n cached = bundle.cache[id];\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n cb();\n });\n return true;\n }\n}\n"]}
@@ -158,4 +158,209 @@ function App() {
158
158
  }
159
159
  });
160
160
  }
161
- },{"react":"../node_modules/react/index.js","../src":"../src/index.tsx"}]},{},[], null)
161
+ },{"react":"../node_modules/react/index.js","../src":"../src/index.tsx"}],"../node_modules/parcel-bundler/src/builtins/hmr-runtime.js":[function(require,module,exports) {
162
+ var global = arguments[3];
163
+ var OVERLAY_ID = '__parcel__error__overlay__';
164
+ var OldModule = module.bundle.Module;
165
+
166
+ function Module(moduleName) {
167
+ OldModule.call(this, moduleName);
168
+ this.hot = {
169
+ data: module.bundle.hotData,
170
+ _acceptCallbacks: [],
171
+ _disposeCallbacks: [],
172
+ accept: function (fn) {
173
+ this._acceptCallbacks.push(fn || function () {});
174
+ },
175
+ dispose: function (fn) {
176
+ this._disposeCallbacks.push(fn);
177
+ }
178
+ };
179
+ module.bundle.hotData = null;
180
+ }
181
+
182
+ module.bundle.Module = Module;
183
+ var checkedAssets, assetsToAccept;
184
+ var parent = module.bundle.parent;
185
+
186
+ if ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {
187
+ var hostname = "" || location.hostname;
188
+ var protocol = location.protocol === 'https:' ? 'wss' : 'ws';
189
+ var ws = new WebSocket(protocol + '://' + hostname + ':' + "53802" + '/');
190
+
191
+ ws.onmessage = function (event) {
192
+ checkedAssets = {};
193
+ assetsToAccept = [];
194
+ var data = JSON.parse(event.data);
195
+
196
+ if (data.type === 'update') {
197
+ var handled = false;
198
+ data.assets.forEach(function (asset) {
199
+ if (!asset.isNew) {
200
+ var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);
201
+
202
+ if (didAccept) {
203
+ handled = true;
204
+ }
205
+ }
206
+ }); // Enable HMR for CSS by default.
207
+
208
+ handled = handled || data.assets.every(function (asset) {
209
+ return asset.type === 'css' && asset.generated.js;
210
+ });
211
+
212
+ if (handled) {
213
+ console.clear();
214
+ data.assets.forEach(function (asset) {
215
+ hmrApply(global.parcelRequire, asset);
216
+ });
217
+ assetsToAccept.forEach(function (v) {
218
+ hmrAcceptRun(v[0], v[1]);
219
+ });
220
+ } else if (location.reload) {
221
+ // `location` global exists in a web worker context but lacks `.reload()` function.
222
+ location.reload();
223
+ }
224
+ }
225
+
226
+ if (data.type === 'reload') {
227
+ ws.close();
228
+
229
+ ws.onclose = function () {
230
+ location.reload();
231
+ };
232
+ }
233
+
234
+ if (data.type === 'error-resolved') {
235
+ console.log('[parcel] ✨ Error resolved');
236
+ removeErrorOverlay();
237
+ }
238
+
239
+ if (data.type === 'error') {
240
+ console.error('[parcel] 🚨 ' + data.error.message + '\n' + data.error.stack);
241
+ removeErrorOverlay();
242
+ var overlay = createErrorOverlay(data);
243
+ document.body.appendChild(overlay);
244
+ }
245
+ };
246
+ }
247
+
248
+ function removeErrorOverlay() {
249
+ var overlay = document.getElementById(OVERLAY_ID);
250
+
251
+ if (overlay) {
252
+ overlay.remove();
253
+ }
254
+ }
255
+
256
+ function createErrorOverlay(data) {
257
+ var overlay = document.createElement('div');
258
+ overlay.id = OVERLAY_ID; // html encode message and stack trace
259
+
260
+ var message = document.createElement('div');
261
+ var stackTrace = document.createElement('pre');
262
+ message.innerText = data.error.message;
263
+ stackTrace.innerText = data.error.stack;
264
+ overlay.innerHTML = '<div style="background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;">' + '<span style="background: red; padding: 2px 4px; border-radius: 2px;">ERROR</span>' + '<span style="top: 2px; margin-left: 5px; position: relative;">🚨</span>' + '<div style="font-size: 18px; font-weight: bold; margin-top: 20px;">' + message.innerHTML + '</div>' + '<pre>' + stackTrace.innerHTML + '</pre>' + '</div>';
265
+ return overlay;
266
+ }
267
+
268
+ function getParents(bundle, id) {
269
+ var modules = bundle.modules;
270
+
271
+ if (!modules) {
272
+ return [];
273
+ }
274
+
275
+ var parents = [];
276
+ var k, d, dep;
277
+
278
+ for (k in modules) {
279
+ for (d in modules[k][1]) {
280
+ dep = modules[k][1][d];
281
+
282
+ if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {
283
+ parents.push(k);
284
+ }
285
+ }
286
+ }
287
+
288
+ if (bundle.parent) {
289
+ parents = parents.concat(getParents(bundle.parent, id));
290
+ }
291
+
292
+ return parents;
293
+ }
294
+
295
+ function hmrApply(bundle, asset) {
296
+ var modules = bundle.modules;
297
+
298
+ if (!modules) {
299
+ return;
300
+ }
301
+
302
+ if (modules[asset.id] || !bundle.parent) {
303
+ var fn = new Function('require', 'module', 'exports', asset.generated.js);
304
+ asset.isNew = !modules[asset.id];
305
+ modules[asset.id] = [fn, asset.deps];
306
+ } else if (bundle.parent) {
307
+ hmrApply(bundle.parent, asset);
308
+ }
309
+ }
310
+
311
+ function hmrAcceptCheck(bundle, id) {
312
+ var modules = bundle.modules;
313
+
314
+ if (!modules) {
315
+ return;
316
+ }
317
+
318
+ if (!modules[id] && bundle.parent) {
319
+ return hmrAcceptCheck(bundle.parent, id);
320
+ }
321
+
322
+ if (checkedAssets[id]) {
323
+ return;
324
+ }
325
+
326
+ checkedAssets[id] = true;
327
+ var cached = bundle.cache[id];
328
+ assetsToAccept.push([bundle, id]);
329
+
330
+ if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
331
+ return true;
332
+ }
333
+
334
+ return getParents(global.parcelRequire, id).some(function (id) {
335
+ return hmrAcceptCheck(global.parcelRequire, id);
336
+ });
337
+ }
338
+
339
+ function hmrAcceptRun(bundle, id) {
340
+ var cached = bundle.cache[id];
341
+ bundle.hotData = {};
342
+
343
+ if (cached) {
344
+ cached.hot.data = bundle.hotData;
345
+ }
346
+
347
+ if (cached && cached.hot && cached.hot._disposeCallbacks.length) {
348
+ cached.hot._disposeCallbacks.forEach(function (cb) {
349
+ cb(bundle.hotData);
350
+ });
351
+ }
352
+
353
+ delete bundle.cache[id];
354
+ bundle(id);
355
+ cached = bundle.cache[id];
356
+
357
+ if (cached && cached.hot && cached.hot._acceptCallbacks.length) {
358
+ cached.hot._acceptCallbacks.forEach(function (cb) {
359
+ cb();
360
+ });
361
+
362
+ return true;
363
+ }
364
+ }
365
+ },{}]},{},["../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"], null)
366
+ //# sourceMappingURL=/grouped-topmost-item.34960f5e.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["grouped-topmost-item.tsx"],"names":[],"mappings":";;;;;;;AAAA;;AACA;;;;;;AAEc,SAAU,GAAV,GAAa;AACzB,SACE,KAAA,CAAA,aAAA,CAAC,oBAAD,EAAgB;AACd,IAAA,uBAAuB,EAAE,EADX;AAEd,IAAA,WAAW,EAAE,KAAK,CAAC,IAAN,CAAW;AAAE,MAAA,MAAM,EAAE;AAAV,KAAX,EAA2B,IAA3B,CAAgC,CAAhC,CAFC;AAGd,IAAA,WAAW,EAAE,qBAAC,KAAD;AAAA,aAAW,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,QAAA,KAAK,EAAE;AAAE,UAAA,MAAM,EAAE;AAAV;AAAZ,OAAA,SAAA,EAAsC,KAAtC,CAAX;AAAA,KAHC;AAId,IAAA,YAAY,EAAE,sBAAC,KAAD;AAAA,aAAW,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAAK,QAAA,KAAK,EAAE;AAAE,UAAA,MAAM,EAAE;AAAV;AAAZ,OAAA,UAAA,EAAuC,KAAvC,CAAX;AAAA,KAJA;AAKd,IAAA,KAAK,EAAE;AAAE,MAAA,MAAM,EAAE;AAAV;AALO,GAAhB,CADF;AASD","file":"grouped-topmost-item.34960f5e.js","sourceRoot":"../e2e","sourcesContent":["import * as React from 'react'\nimport { GroupedVirtuoso } from '../src'\n\nexport default function App() {\n return (\n <GroupedVirtuoso\n initialTopMostItemIndex={10}\n groupCounts={Array.from({ length: 20 }).fill(3) as number[]}\n itemContent={(index) => <div style={{ height: '20px' }}>Item {index}</div>}\n groupContent={(index) => <div style={{ height: '30px' }}>Group {index}</div>}\n style={{ height: '300px' }}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["grouped-topmost-item.tsx","../node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["OVERLAY_ID","OldModule","module","bundle","Module","moduleName","call","hot","data","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","push","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","event","JSON","parse","type","handled","assets","forEach","asset","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","every","generated","js","console","clear","hmrApply","v","hmrAcceptRun","reload","close","onclose","log","removeErrorOverlay","error","message","stack","overlay","createErrorOverlay","document","body","appendChild","getElementById","remove","createElement","stackTrace","innerText","innerHTML","getParents","modules","parents","k","d","dep","Array","isArray","length","concat","Function","deps","cached","cache","some","cb"],"mappings":"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","file":"grouped-topmost-item.34960f5e.js","sourceRoot":"../e2e","sourcesContent":["import * as React from 'react'\nimport { GroupedVirtuoso } from '../src'\n\nexport default function App() {\n return (\n <GroupedVirtuoso\n initialTopMostItemIndex={10}\n groupCounts={Array.from({ length: 20 }).fill(3) as number[]}\n itemContent={(index) => <div style={{ height: '20px' }}>Item {index}</div>}\n groupContent={(index) => <div style={{ height: '30px' }}>Group {index}</div>}\n style={{ height: '300px' }}\n />\n )\n}\n","var OVERLAY_ID = '__parcel__error__overlay__';\n\nvar OldModule = module.bundle.Module;\n\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData,\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n\n module.bundle.hotData = null;\n}\n\nmodule.bundle.Module = Module;\nvar checkedAssets, assetsToAccept;\n\nvar parent = module.bundle.parent;\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = process.env.HMR_HOSTNAME || location.hostname;\n var protocol = location.protocol === 'https:' ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + ':' + process.env.HMR_PORT + '/');\n ws.onmessage = function(event) {\n checkedAssets = {};\n assetsToAccept = [];\n\n var data = JSON.parse(event.data);\n\n if (data.type === 'update') {\n var handled = false;\n data.assets.forEach(function(asset) {\n if (!asset.isNew) {\n var didAccept = hmrAcceptCheck(global.parcelRequire, asset.id);\n if (didAccept) {\n handled = true;\n }\n }\n });\n\n // Enable HMR for CSS by default.\n handled = handled || data.assets.every(function(asset) {\n return asset.type === 'css' && asset.generated.js;\n });\n\n if (handled) {\n console.clear();\n\n data.assets.forEach(function (asset) {\n hmrApply(global.parcelRequire, asset);\n });\n\n assetsToAccept.forEach(function (v) {\n hmrAcceptRun(v[0], v[1]);\n });\n } else if (location.reload) { // `location` global exists in a web worker context but lacks `.reload()` function.\n location.reload();\n }\n }\n\n if (data.type === 'reload') {\n ws.close();\n ws.onclose = function () {\n location.reload();\n }\n }\n\n if (data.type === 'error-resolved') {\n console.log('[parcel] ✨ Error resolved');\n\n removeErrorOverlay();\n }\n\n if (data.type === 'error') {\n console.error('[parcel] 🚨 ' + data.error.message + '\\n' + data.error.stack);\n\n removeErrorOverlay();\n\n var overlay = createErrorOverlay(data);\n document.body.appendChild(overlay);\n }\n };\n}\n\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n if (overlay) {\n overlay.remove();\n }\n}\n\nfunction createErrorOverlay(data) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n\n // html encode message and stack trace\n var message = document.createElement('div');\n var stackTrace = document.createElement('pre');\n message.innerText = data.error.message;\n stackTrace.innerText = data.error.stack;\n\n overlay.innerHTML = (\n '<div style=\"background: black; font-size: 16px; color: white; position: fixed; height: 100%; width: 100%; top: 0px; left: 0px; padding: 30px; opacity: 0.85; font-family: Menlo, Consolas, monospace; z-index: 9999;\">' +\n '<span style=\"background: red; padding: 2px 4px; border-radius: 2px;\">ERROR</span>' +\n '<span style=\"top: 2px; margin-left: 5px; position: relative;\">🚨</span>' +\n '<div style=\"font-size: 18px; font-weight: bold; margin-top: 20px;\">' + message.innerHTML + '</div>' +\n '<pre>' + stackTrace.innerHTML + '</pre>' +\n '</div>'\n );\n\n return overlay;\n\n}\n\nfunction getParents(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return [];\n }\n\n var parents = [];\n var k, d, dep;\n\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n if (dep === id || (Array.isArray(dep) && dep[dep.length - 1] === id)) {\n parents.push(k);\n }\n }\n }\n\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n\n return parents;\n}\n\nfunction hmrApply(bundle, asset) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (modules[asset.id] || !bundle.parent) {\n var fn = new Function('require', 'module', 'exports', asset.generated.js);\n asset.isNew = !modules[asset.id];\n modules[asset.id] = [fn, asset.deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n}\n\nfunction hmrAcceptCheck(bundle, id) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n\n if (!modules[id] && bundle.parent) {\n return hmrAcceptCheck(bundle.parent, id);\n }\n\n if (checkedAssets[id]) {\n return;\n }\n checkedAssets[id] = true;\n\n var cached = bundle.cache[id];\n\n assetsToAccept.push([bundle, id]);\n\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n return true;\n }\n\n return getParents(global.parcelRequire, id).some(function (id) {\n return hmrAcceptCheck(global.parcelRequire, id)\n });\n}\n\nfunction hmrAcceptRun(bundle, id) {\n var cached = bundle.cache[id];\n bundle.hotData = {};\n if (cached) {\n cached.hot.data = bundle.hotData;\n }\n\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData);\n });\n }\n\n delete bundle.cache[id];\n bundle(id);\n\n cached = bundle.cache[id];\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n cb();\n });\n return true;\n }\n}\n"]}