matrix-react-sdk
Version:
SDK for matrix.org using React
52 lines (49 loc) • 5.44 kB
JavaScript
;
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