diff --git a/package-lock.json b/package-lock.json
index 101fbd3..96a856c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9227,7 +9227,7 @@
"relative": "3.0.2",
"require-relative": "0.8.7",
"rimraf": "2.6.2",
- "webpack": "4.10.2",
+ "webpack": "^4.5.0",
"webpack-hot-middleware": "2.22.2"
},
"dependencies": {
diff --git a/routes/_components/list/List.html b/routes/_components/list/List.html
new file mode 100644
index 0000000..4ce9ec1
--- /dev/null
+++ b/routes/_components/list/List.html
@@ -0,0 +1,65 @@
+
+ {#each safeItems as item, i (item)}
+
+ {/each}
+
+
+
\ No newline at end of file
diff --git a/routes/_components/list/ListItem.html b/routes/_components/list/ListItem.html
new file mode 100644
index 0000000..2044067
--- /dev/null
+++ b/routes/_components/list/ListItem.html
@@ -0,0 +1,10 @@
+
+
+
diff --git a/routes/_components/list/ListLazyItem.html b/routes/_components/list/ListLazyItem.html
new file mode 100644
index 0000000..2a43175
--- /dev/null
+++ b/routes/_components/list/ListLazyItem.html
@@ -0,0 +1,33 @@
+{#if props}
+
+{/if}
+
\ No newline at end of file
diff --git a/routes/_components/list/listStore.js b/routes/_components/list/listStore.js
new file mode 100644
index 0000000..0668c8d
--- /dev/null
+++ b/routes/_components/list/listStore.js
@@ -0,0 +1,17 @@
+import { RealmStore } from '../../_utils/RealmStore'
+
+class ListStore extends RealmStore {
+ constructor (state) {
+ super(state, /* maxSize */ 10)
+ }
+}
+
+const listStore = new ListStore()
+
+listStore.computeForRealm('intersectionStates', {})
+
+if (process.browser && process.env.NODE_ENV !== 'production') {
+ window.listStore = listStore
+}
+
+export { listStore }
diff --git a/routes/_components/pseudoVirtualList/PseudoVirtualList.html b/routes/_components/pseudoVirtualList/PseudoVirtualList.html
deleted file mode 100644
index b2474ce..0000000
--- a/routes/_components/pseudoVirtualList/PseudoVirtualList.html
+++ /dev/null
@@ -1,134 +0,0 @@
-
- {#each safeItems as item, i (item)}
-
- {/each}
-
-
-
\ No newline at end of file
diff --git a/routes/_components/pseudoVirtualList/PseudoVirtualListItem.html b/routes/_components/pseudoVirtualList/PseudoVirtualListItem.html
deleted file mode 100644
index 1a235c8..0000000
--- a/routes/_components/pseudoVirtualList/PseudoVirtualListItem.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
- {#if !shouldHide}
-
- {/if}
-
-
diff --git a/routes/_components/pseudoVirtualList/PseudoVirtualListLazyItem.html b/routes/_components/pseudoVirtualList/PseudoVirtualListLazyItem.html
deleted file mode 100644
index 743d429..0000000
--- a/routes/_components/pseudoVirtualList/PseudoVirtualListLazyItem.html
+++ /dev/null
@@ -1,35 +0,0 @@
-{#if props}
-
-{/if}
-
\ No newline at end of file
diff --git a/routes/_components/pseudoVirtualList/pseudoVirtualListStore.js b/routes/_components/pseudoVirtualList/pseudoVirtualListStore.js
deleted file mode 100644
index 7c82310..0000000
--- a/routes/_components/pseudoVirtualList/pseudoVirtualListStore.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { RealmStore } from '../../_utils/RealmStore'
-
-class PseudoVirtualListStore extends RealmStore {
- constructor (state) {
- super(state, /* maxSize */ 10)
- }
-}
-
-const pseudoVirtualListStore = new PseudoVirtualListStore()
-
-pseudoVirtualListStore.computeForRealm('intersectionStates', {})
-
-if (process.browser && process.env.NODE_ENV !== 'production') {
- window.pseudoVirtualListStore = pseudoVirtualListStore
-}
-
-export { pseudoVirtualListStore }
diff --git a/routes/_components/timeline/Timeline.html b/routes/_components/timeline/Timeline.html
index ebe7fa8..37f3916 100644
--- a/routes/_components/timeline/Timeline.html
+++ b/routes/_components/timeline/Timeline.html
@@ -36,7 +36,7 @@
import MoreHeaderVirtualWrapper from './MoreHeaderVirtualWrapper.html'
import {
importVirtualList,
- importPseudoVirtualList,
+ importList,
importStatusVirtualListItem,
importNotificationVirtualListItem
} from '../../_utils/asyncModules'
@@ -85,7 +85,7 @@
componentsPromise: ({ timelineType }) => {
return Promise.all([
timelineType === 'status'
- ? importPseudoVirtualList()
+ ? importList()
: importVirtualList(),
timelineType === 'notifications'
? importNotificationVirtualListItem()
diff --git a/routes/_utils/asyncModules.js b/routes/_utils/asyncModules.js
index 227bbe5..3cbed92 100644
--- a/routes/_utils/asyncModules.js
+++ b/routes/_utils/asyncModules.js
@@ -26,8 +26,8 @@ export const importVirtualList = () => import(
/* webpackChunkName: 'VirtualList.html' */ '../_components/virtualList/VirtualList.html'
).then(mod => mod.default)
-export const importPseudoVirtualList = () => import(
- /* webpackChunkName: 'PseudoVirtualList.html' */ '../_components/pseudoVirtualList/PseudoVirtualList.html'
+export const importList = () => import(
+ /* webpackChunkName: 'List.html' */ '../_components/list/List.html'
).then(mod => mod.default)
export const importStatusVirtualListItem = () => import(
diff --git a/routes/_utils/getRectFromEntry.js b/routes/_utils/getRectFromEntry.js
deleted file mode 100644
index d45006d..0000000
--- a/routes/_utils/getRectFromEntry.js
+++ /dev/null
@@ -1,22 +0,0 @@
-// Get the bounding client rect from an IntersectionObserver entry.
-// This is to work around a bug in Chrome: https://crbug.com/737228
-
-let hasBoundingRectBug
-
-function rectsAreEqual (rectA, rectB) {
- return rectA.height === rectB.height &&
- rectA.top === rectB.top &&
- rectA.width === rectB.width &&
- rectA.bottom === rectB.bottom &&
- rectA.left === rectB.left &&
- rectA.right === rectB.right
-}
-
-export function getRectFromEntry (entry) {
- if (typeof hasBoundingRectBug !== 'boolean') {
- const boundingRect = entry.target.getBoundingClientRect()
- const observerRect = entry.boundingClientRect
- hasBoundingRectBug = !rectsAreEqual(boundingRect, observerRect)
- }
- return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect
-}