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 -}