UNPKG

matrix-react-sdk

Version:
52 lines (49 loc) 5.44 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.RoomScrollStateStore = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); /* Copyright 2017-2024 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ /** * Stores where the user has scrolled to in each room */ class RoomScrollStateStore { constructor() { // A map from room id to scroll state. // // If there is no special scroll state (ie, we are following the live // timeline), the scroll state is null. Otherwise, it is an object with // the following properties: // // focussedEvent: the ID of the 'focussed' event. Typically this is // the last event fully visible in the viewport, though if we // have done an explicit scroll to an explicit event, it will be // that event. // // pixelOffset: the number of pixels the window is scrolled down // from the focussedEvent. (0, _defineProperty2.default)(this, "scrollStateMap", new Map()); } getScrollState(roomId) { return this.scrollStateMap.get(roomId); } setScrollState(roomId, scrollState) { if (scrollState === null) { this.scrollStateMap.delete(roomId); } else { this.scrollStateMap.set(roomId, scrollState); } } } exports.RoomScrollStateStore = RoomScrollStateStore; if (window.mxRoomScrollStateStore === undefined) { window.mxRoomScrollStateStore = new RoomScrollStateStore(); } var _default = exports.default = window.mxRoomScrollStateStore; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSb29tU2Nyb2xsU3RhdGVTdG9yZSIsImNvbnN0cnVjdG9yIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJNYXAiLCJnZXRTY3JvbGxTdGF0ZSIsInJvb21JZCIsInNjcm9sbFN0YXRlTWFwIiwiZ2V0Iiwic2V0U2Nyb2xsU3RhdGUiLCJzY3JvbGxTdGF0ZSIsImRlbGV0ZSIsInNldCIsImV4cG9ydHMiLCJ3aW5kb3ciLCJteFJvb21TY3JvbGxTdGF0ZVN0b3JlIiwidW5kZWZpbmVkIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmVzL1Jvb21TY3JvbGxTdGF0ZVN0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAxNy0yMDI0IE5ldyBWZWN0b3IgTHRkLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcm9sbFN0YXRlIHtcbiAgICBmb2N1c3NlZEV2ZW50Pzogc3RyaW5nO1xuICAgIHBpeGVsT2Zmc2V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0b3JlcyB3aGVyZSB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgdG8gaW4gZWFjaCByb29tXG4gKi9cbmV4cG9ydCBjbGFzcyBSb29tU2Nyb2xsU3RhdGVTdG9yZSB7XG4gICAgLy8gQSBtYXAgZnJvbSByb29tIGlkIHRvIHNjcm9sbCBzdGF0ZS5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHNwZWNpYWwgc2Nyb2xsIHN0YXRlIChpZSwgd2UgYXJlIGZvbGxvd2luZyB0aGUgbGl2ZVxuICAgIC8vIHRpbWVsaW5lKSwgdGhlIHNjcm9sbCBzdGF0ZSBpcyBudWxsLiBPdGhlcndpc2UsIGl0IGlzIGFuIG9iamVjdCB3aXRoXG4gICAgLy8gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgIC8vXG4gICAgLy8gICAgZm9jdXNzZWRFdmVudDogdGhlIElEIG9mIHRoZSAnZm9jdXNzZWQnIGV2ZW50LiBUeXBpY2FsbHkgdGhpcyBpc1xuICAgIC8vICAgICAgICB0aGUgbGFzdCBldmVudCBmdWxseSB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCwgdGhvdWdoIGlmIHdlXG4gICAgLy8gICAgICAgIGhhdmUgZG9uZSBhbiBleHBsaWNpdCBzY3JvbGwgdG8gYW4gZXhwbGljaXQgZXZlbnQsIGl0IHdpbGwgYmVcbiAgICAvLyAgICAgICAgdGhhdCBldmVudC5cbiAgICAvL1xuICAgIC8vICAgIHBpeGVsT2Zmc2V0OiB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGUgd2luZG93IGlzIHNjcm9sbGVkIGRvd25cbiAgICAvLyAgICAgICAgZnJvbSB0aGUgZm9jdXNzZWRFdmVudC5cbiAgICBwcml2YXRlIHNjcm9sbFN0YXRlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFNjcm9sbFN0YXRlPigpO1xuXG4gICAgcHVibGljIGdldFNjcm9sbFN0YXRlKHJvb21JZDogc3RyaW5nKTogU2Nyb2xsU3RhdGUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGxTdGF0ZU1hcC5nZXQocm9vbUlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2Nyb2xsU3RhdGUocm9vbUlkOiBzdHJpbmcsIHNjcm9sbFN0YXRlOiBTY3JvbGxTdGF0ZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHNjcm9sbFN0YXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFN0YXRlTWFwLmRlbGV0ZShyb29tSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxTdGF0ZU1hcC5zZXQocm9vbUlkLCBzY3JvbGxTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmlmICh3aW5kb3cubXhSb29tU2Nyb2xsU3RhdGVTdG9yZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgd2luZG93Lm14Um9vbVNjcm9sbFN0YXRlU3RvcmUgPSBuZXcgUm9vbVNjcm9sbFN0YXRlU3RvcmUoKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHdpbmRvdy5teFJvb21TY3JvbGxTdGF0ZVN0b3JlITtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBT0E7QUFDQTtBQUNBO0FBQ08sTUFBTUEsb0JBQW9CLENBQUM7RUFBQUMsWUFBQTtJQUM5QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUFBLElBQUFDLGdCQUFBLENBQUFDLE9BQUEsMEJBQ3lCLElBQUlDLEdBQUcsQ0FBc0IsQ0FBQztFQUFBO0VBRWhEQyxjQUFjQSxDQUFDQyxNQUFjLEVBQTJCO0lBQzNELE9BQU8sSUFBSSxDQUFDQyxjQUFjLENBQUNDLEdBQUcsQ0FBQ0YsTUFBTSxDQUFDO0VBQzFDO0VBRU9HLGNBQWNBLENBQUNILE1BQWMsRUFBRUksV0FBK0IsRUFBUTtJQUN6RSxJQUFJQSxXQUFXLEtBQUssSUFBSSxFQUFFO01BQ3RCLElBQUksQ0FBQ0gsY0FBYyxDQUFDSSxNQUFNLENBQUNMLE1BQU0sQ0FBQztJQUN0QyxDQUFDLE1BQU07TUFDSCxJQUFJLENBQUNDLGNBQWMsQ0FBQ0ssR0FBRyxDQUFDTixNQUFNLEVBQUVJLFdBQVcsQ0FBQztJQUNoRDtFQUNKO0FBQ0o7QUFBQ0csT0FBQSxDQUFBYixvQkFBQSxHQUFBQSxvQkFBQTtBQUVELElBQUljLE1BQU0sQ0FBQ0Msc0JBQXNCLEtBQUtDLFNBQVMsRUFBRTtFQUM3Q0YsTUFBTSxDQUFDQyxzQkFBc0IsR0FBRyxJQUFJZixvQkFBb0IsQ0FBQyxDQUFDO0FBQzlEO0FBQUMsSUFBQWlCLFFBQUEsR0FBQUosT0FBQSxDQUFBVixPQUFBLEdBQ2NXLE1BQU0sQ0FBQ0Msc0JBQXNCIiwiaWdub3JlTGlzdCI6W119