matrix-react-sdk
Version:
SDK for matrix.org using React
107 lines (98 loc) • 11.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/*
Copyright 2024 New Vector Ltd.
Copyright 2018-2020 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
/**
implements DOM/CSS operations for resizing.
The sizer determines what CSS mechanism is used for sizing items, like flexbox, ...
*/
class Sizer {
constructor(container, vertical, reverse) {
this.container = container;
this.vertical = vertical;
this.reverse = reverse;
}
/**
@param {Element} item the dom element being resized
@return {number} how far the edge of the item is from the edge of the container
*/
getItemOffset(item) {
const offset = (this.vertical ? item.offsetTop : item.offsetLeft) - this.getOffset();
if (this.reverse) {
return this.getTotalSize() - (offset + this.getItemSize(item));
} else {
return offset;
}
}
/**
@param {Element} item the dom element being resized
@return {number} the width/height of an item in the container
*/
getItemSize(item) {
return this.vertical ? item.offsetHeight : item.offsetWidth;
}
/** @return {number} the width/height of the container */
getTotalSize() {
return this.vertical ? this.container.offsetHeight : this.container.offsetWidth;
}
/** @return {number} container offset to offsetParent */
getOffset() {
return this.vertical ? this.container.offsetTop : this.container.offsetLeft;
}
/** @return {number} container offset to document */
getPageOffset() {
let element = this.container;
let offset = 0;
while (element) {
const pos = this.vertical ? element.offsetTop : element.offsetLeft;
offset = offset + pos;
element = element.offsetParent;
}
return offset;
}
getDesiredItemSize(item) {
if (this.vertical) {
return item.style.height;
} else {
return item.style.width;
}
}
setItemSize(item, size) {
if (this.vertical) {
item.style.height = size;
} else {
item.style.width = size;
}
}
clearItemSize(item) {
if (this.vertical) {
item.style.removeProperty("height");
} else {
item.style.removeProperty("width");
}
}
start(item) {}
finish(item) {}
/**
@param {MouseEvent} event the mouse event
@return {number} the distance between the cursor and the edge of the container,
along the applicable axis (vertical or horizontal)
*/
offsetFromEvent(event) {
const pos = this.vertical ? event.pageY : event.pageX;
if (this.reverse) {
return this.getPageOffset() + this.getTotalSize() - pos;
} else {
return pos - this.getPageOffset();
}
}
}
exports.default = Sizer;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaXplciIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwidmVydGljYWwiLCJyZXZlcnNlIiwiZ2V0SXRlbU9mZnNldCIsIml0ZW0iLCJvZmZzZXQiLCJvZmZzZXRUb3AiLCJvZmZzZXRMZWZ0IiwiZ2V0T2Zmc2V0IiwiZ2V0VG90YWxTaXplIiwiZ2V0SXRlbVNpemUiLCJvZmZzZXRIZWlnaHQiLCJvZmZzZXRXaWR0aCIsImdldFBhZ2VPZmZzZXQiLCJlbGVtZW50IiwicG9zIiwib2Zmc2V0UGFyZW50IiwiZ2V0RGVzaXJlZEl0ZW1TaXplIiwic3R5bGUiLCJoZWlnaHQiLCJ3aWR0aCIsInNldEl0ZW1TaXplIiwic2l6ZSIsImNsZWFySXRlbVNpemUiLCJyZW1vdmVQcm9wZXJ0eSIsInN0YXJ0IiwiZmluaXNoIiwib2Zmc2V0RnJvbUV2ZW50IiwiZXZlbnQiLCJwYWdlWSIsInBhZ2VYIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzaXplci9zaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOC0yMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbi8qKlxuaW1wbGVtZW50cyBET00vQ1NTIG9wZXJhdGlvbnMgZm9yIHJlc2l6aW5nLlxuVGhlIHNpemVyIGRldGVybWluZXMgd2hhdCBDU1MgbWVjaGFuaXNtIGlzIHVzZWQgZm9yIHNpemluZyBpdGVtcywgbGlrZSBmbGV4Ym94LCAuLi5cbiovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaXplciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZlcnRpY2FsOiBib29sZWFuLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmV2ZXJzZTogYm9vbGVhbixcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgICAgQHBhcmFtIHtFbGVtZW50fSBpdGVtIHRoZSBkb20gZWxlbWVudCBiZWluZyByZXNpemVkXG4gICAgICAgIEByZXR1cm4ge251bWJlcn0gaG93IGZhciB0aGUgZWRnZSBvZiB0aGUgaXRlbSBpcyBmcm9tIHRoZSBlZGdlIG9mIHRoZSBjb250YWluZXJcbiAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtT2Zmc2V0KGl0ZW06IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gKHRoaXMudmVydGljYWwgPyBpdGVtLm9mZnNldFRvcCA6IGl0ZW0ub2Zmc2V0TGVmdCkgLSB0aGlzLmdldE9mZnNldCgpO1xuICAgICAgICBpZiAodGhpcy5yZXZlcnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUb3RhbFNpemUoKSAtIChvZmZzZXQgKyB0aGlzLmdldEl0ZW1TaXplKGl0ZW0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgICAgQHBhcmFtIHtFbGVtZW50fSBpdGVtIHRoZSBkb20gZWxlbWVudCBiZWluZyByZXNpemVkXG4gICAgICAgIEByZXR1cm4ge251bWJlcn0gdGhlIHdpZHRoL2hlaWdodCBvZiBhbiBpdGVtIGluIHRoZSBjb250YWluZXJcbiAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtU2l6ZShpdGVtOiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8gaXRlbS5vZmZzZXRIZWlnaHQgOiBpdGVtLm9mZnNldFdpZHRoO1xuICAgIH1cblxuICAgIC8qKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSB3aWR0aC9oZWlnaHQgb2YgdGhlIGNvbnRhaW5lciAqL1xuICAgIHB1YmxpYyBnZXRUb3RhbFNpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVydGljYWwgPyB0aGlzLmNvbnRhaW5lci5vZmZzZXRIZWlnaHQgOiB0aGlzLmNvbnRhaW5lci5vZmZzZXRXaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQHJldHVybiB7bnVtYmVyfSBjb250YWluZXIgb2Zmc2V0IHRvIG9mZnNldFBhcmVudCAqL1xuICAgIHByaXZhdGUgZ2V0T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsID8gdGhpcy5jb250YWluZXIub2Zmc2V0VG9wIDogdGhpcy5jb250YWluZXIub2Zmc2V0TGVmdDtcbiAgICB9XG5cbiAgICAvKiogQHJldHVybiB7bnVtYmVyfSBjb250YWluZXIgb2Zmc2V0IHRvIGRvY3VtZW50ICovXG4gICAgcHJpdmF0ZSBnZXRQYWdlT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5jb250YWluZXI7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICB3aGlsZSAoZWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gdGhpcy52ZXJ0aWNhbCA/IGVsZW1lbnQub2Zmc2V0VG9wIDogZWxlbWVudC5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICsgcG9zO1xuICAgICAgICAgICAgZWxlbWVudCA9IDxIVE1MRWxlbWVudD5lbGVtZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZXNpcmVkSXRlbVNpemUoaXRlbTogSFRNTEVsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uc3R5bGUuaGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uc3R5bGUud2lkdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0SXRlbVNpemUoaXRlbTogSFRNTEVsZW1lbnQsIHNpemU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xuICAgICAgICAgICAgaXRlbS5zdHlsZS5oZWlnaHQgPSBzaXplO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbS5zdHlsZS53aWR0aCA9IHNpemU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJJdGVtU2l6ZShpdGVtOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbCkge1xuICAgICAgICAgICAgaXRlbS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcImhlaWdodFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW0uc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ3aWR0aFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydChpdGVtOiBIVE1MRWxlbWVudCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBmaW5pc2goaXRlbTogSFRNTEVsZW1lbnQpOiB2b2lkIHt9XG5cbiAgICAvKipcbiAgICAgICAgQHBhcmFtIHtNb3VzZUV2ZW50fSBldmVudCB0aGUgbW91c2UgZXZlbnRcbiAgICAgICAgQHJldHVybiB7bnVtYmVyfSB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY3Vyc29yIGFuZCB0aGUgZWRnZSBvZiB0aGUgY29udGFpbmVyLFxuICAgICAgICAgICAgYWxvbmcgdGhlIGFwcGxpY2FibGUgYXhpcyAodmVydGljYWwgb3IgaG9yaXpvbnRhbClcbiAgICAqL1xuICAgIHB1YmxpYyBvZmZzZXRGcm9tRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLnZlcnRpY2FsID8gZXZlbnQucGFnZVkgOiBldmVudC5wYWdlWDtcbiAgICAgICAgaWYgKHRoaXMucmV2ZXJzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFnZU9mZnNldCgpICsgdGhpcy5nZXRUb3RhbFNpemUoKSAtIHBvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwb3MgLSB0aGlzLmdldFBhZ2VPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDZSxNQUFNQSxLQUFLLENBQUM7RUFDaEJDLFdBQVdBLENBQ0tDLFNBQXNCLEVBQ3RCQyxRQUFpQixFQUNqQkMsT0FBZ0IsRUFDckM7SUFBQSxLQUhxQkYsU0FBc0IsR0FBdEJBLFNBQXNCO0lBQUEsS0FDdEJDLFFBQWlCLEdBQWpCQSxRQUFpQjtJQUFBLEtBQ2pCQyxPQUFnQixHQUFoQkEsT0FBZ0I7RUFDcEM7O0VBRUg7QUFDSjtBQUNBO0FBQ0E7RUFDV0MsYUFBYUEsQ0FBQ0MsSUFBaUIsRUFBVTtJQUM1QyxNQUFNQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUNKLFFBQVEsR0FBR0csSUFBSSxDQUFDRSxTQUFTLEdBQUdGLElBQUksQ0FBQ0csVUFBVSxJQUFJLElBQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUM7SUFDcEYsSUFBSSxJQUFJLENBQUNOLE9BQU8sRUFBRTtNQUNkLE9BQU8sSUFBSSxDQUFDTyxZQUFZLENBQUMsQ0FBQyxJQUFJSixNQUFNLEdBQUcsSUFBSSxDQUFDSyxXQUFXLENBQUNOLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUMsTUFBTTtNQUNILE9BQU9DLE1BQU07SUFDakI7RUFDSjs7RUFFQTtBQUNKO0FBQ0E7QUFD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