matrix-react-sdk
Version:
SDK for matrix.org using React
69 lines (66 loc) • 10.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _languageHandler = require("../../../languageHandler");
/*
Copyright 2017-2024 New Vector Ltd.
Copyright 2016 OpenMarket Ltd
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
class TruncatedList extends _react.default.Component {
getChildren(start, end) {
if (this.props.getChildren && this.props.getChildCount) {
return this.props.getChildren(start, end);
} else {
// XXX: I'm not sure why anything would pass null into this, it seems
// like a bizarre case to handle, but I'm preserving the behaviour.
// (see commit 38d5c7d5c5d5a34dc16ef5d46278315f5c57f542)
return _react.default.Children.toArray(this.props.children).filter(c => {
return c != null;
}).slice(start, end);
}
}
getChildCount() {
if (this.props.getChildren && this.props.getChildCount) {
return this.props.getChildCount();
} else {
return _react.default.Children.toArray(this.props.children).filter(c => {
return c != null;
}).length;
}
}
render() {
let overflowNode;
const totalChildren = this.getChildCount();
let upperBound = totalChildren;
if (this.props.truncateAt >= 0) {
const overflowCount = totalChildren - this.props.truncateAt;
if (overflowCount > 1) {
overflowNode = this.props.createOverflowElement(overflowCount, totalChildren);
upperBound = this.props.truncateAt;
}
}
const childNodes = this.getChildren(0, upperBound);
return /*#__PURE__*/_react.default.createElement("div", {
className: this.props.className,
role: "list",
id: this.props.id
}, childNodes, overflowNode);
}
}
exports.default = TruncatedList;
(0, _defineProperty2.default)(TruncatedList, "defaultProps", {
truncateAt: 2,
createOverflowElement(overflowCount, totalCount) {
return /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("truncated_list_n_more", {
count: overflowCount
}));
}
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sYW5ndWFnZUhhbmRsZXIiLCJUcnVuY2F0ZWRMaXN0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJnZXRDaGlsZHJlbiIsInN0YXJ0IiwiZW5kIiwicHJvcHMiLCJnZXRDaGlsZENvdW50IiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY2hpbGRyZW4iLCJmaWx0ZXIiLCJjIiwic2xpY2UiLCJsZW5ndGgiLCJyZW5kZXIiLCJvdmVyZmxvd05vZGUiLCJ0b3RhbENoaWxkcmVuIiwidXBwZXJCb3VuZCIsInRydW5jYXRlQXQiLCJvdmVyZmxvd0NvdW50IiwiY3JlYXRlT3ZlcmZsb3dFbGVtZW50IiwiY2hpbGROb2RlcyIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwicm9sZSIsImlkIiwiZXhwb3J0cyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJ0b3RhbENvdW50IiwiX3QiLCJjb3VudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL1RydW5jYXRlZExpc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAxNy0yMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTYgT3Blbk1hcmtldCBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzaG93IGJlZm9yZSB0cnVuY2F0aW5nLiBJZiBuZWdhdGl2ZSwgbm8gdHJ1bmNhdGlvbiBpcyBkb25lLlxuICAgIHRydW5jYXRlQXQ6IG51bWJlcjtcbiAgICAvLyBUaGUgY2xhc3NOYW1lIHRvIGFwcGx5IHRvIHRoZSB3cmFwcGluZyBkaXZcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIGNoaWxkcmVuIHRvIGJlIHJlbmRlcmVkIGludG8gdGhlIGVsZW1lbnQuXG4gICAgLy8gVGhlIHN0YXJ0IGVsZW1lbnQgaXMgaW5jbHVkZWQsIHRoZSBlbmQgaXMgbm90IChhcyBpbiBgc2xpY2VgKS5cbiAgICAvLyBJZiBvbWl0dGVkLCB0aGUgUmVhY3QgY2hpbGQgZWxlbWVudHMgd2lsbCBiZSB1c2VkLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgdXNlZFxuICAgIC8vIHRvIGF2b2lkIGNyZWF0aW5nIHVubmVjZXNzYXJ5IFJlYWN0IGVsZW1lbnRzLlxuICAgIGdldENoaWxkcmVuPzogKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSA9PiBBcnJheTxSZWFjdC5SZWFjdE5vZGU+O1xuICAgIC8vIEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgcmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgY2hpbGQgZWxlbWVudCBhdmFpbGFibGUuXG4gICAgLy8gUmVxdWlyZWQgaWYgZ2V0Q2hpbGRyZW4gaXMgc3VwcGxpZWQuXG4gICAgZ2V0Q2hpbGRDb3VudD86ICgpID0+IG51bWJlcjtcbiAgICAvLyBBIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgaW52b2tlZCB3aGVuIGFuIG92ZXJmbG93IGVsZW1lbnQgaXMgcmVxdWlyZWQuXG4gICAgLy8gVGhpcyB3aWxsIGJlIGluc2VydGVkIGFmdGVyIHRoZSBjaGlsZHJlbi5cbiAgICBjcmVhdGVPdmVyZmxvd0VsZW1lbnQ6IChvdmVyZmxvd0NvdW50OiBudW1iZXIsIHRvdGFsQ291bnQ6IG51bWJlcikgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICAgIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAgIGlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcnVuY2F0ZWRMaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElQcm9wcz4ge1xuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICB0cnVuY2F0ZUF0OiAyLFxuICAgICAgICBjcmVhdGVPdmVyZmxvd0VsZW1lbnQob3ZlcmZsb3dDb3VudDogbnVtYmVyLCB0b3RhbENvdW50OiBudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2PntfdChcInRydW5jYXRlZF9saXN0X25fbW9yZVwiLCB7IGNvdW50OiBvdmVyZmxvd0NvdW50IH0pfTwvZGl2PjtcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBnZXRDaGlsZHJlbihzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IEFycmF5PFJlYWN0LlJlYWN0Tm9kZT4ge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5nZXRDaGlsZHJlbiAmJiB0aGlzLnByb3BzLmdldENoaWxkQ291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmdldENoaWxkcmVuKHN0YXJ0LCBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gWFhYOiBJJ20gbm90IHN1cmUgd2h5IGFueXRoaW5nIHdvdWxkIHBhc3MgbnVsbCBpbnRvIHRoaXMsIGl0IHNlZW1zXG4gICAgICAgICAgICAvLyBsaWtlIGEgYml6YXJyZSBjYXNlIHRvIGhhbmRsZSwgYnV0IEknbSBwcmVzZXJ2aW5nIHRoZSBiZWhhdmlvdXIuXG4gICAgICAgICAgICAvLyAoc2VlIGNvbW1pdCAzOGQ1YzdkNWM1ZDVhMzRkYzE2ZWY1ZDQ2Mjc4MzE1ZjVjNTdmNTQyKVxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkodGhpcy5wcm9wcy5jaGlsZHJlbilcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjICE9IG51bGw7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoaWxkQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZ2V0Q2hpbGRyZW4gJiYgdGhpcy5wcm9wcy5nZXRDaGlsZENvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5nZXRDaGlsZENvdW50KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4udG9BcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKS5maWx0ZXIoKGMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYyAhPSBudWxsO1xuICAgICAgICAgICAgfSkubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbmRlcigpOiBSZWFjdE5vZGUge1xuICAgICAgICBsZXQgb3ZlcmZsb3dOb2RlOiBSZWFjdE5vZGUgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgdG90YWxDaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRDb3VudCgpO1xuICAgICAgICBsZXQgdXBwZXJCb3VuZCA9IHRvdGFsQ2hpbGRyZW47XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnRydW5jYXRlQXQgPj0gMCkge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3dDb3VudCA9IHRvdGFsQ2hpbGRyZW4gLSB0aGlzLnByb3BzLnRydW5jYXRlQXQ7XG4gICAgICAgICAgICBpZiAob3ZlcmZsb3dDb3VudCA+IDEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvd05vZGUgPSB0aGlzLnByb3BzLmNyZWF0ZU92ZXJmbG93RWxlbWVudChvdmVyZmxvd0NvdW50LCB0b3RhbENoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICB1cHBlckJvdW5kID0gdGhpcy5wcm9wcy50cnVuY2F0ZUF0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSB0aGlzLmdldENoaWxkcmVuKDAsIHVwcGVyQm91bmQpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWV9IHJvbGU9XCJsaXN0XCIgaWQ9e3RoaXMucHJvcHMuaWR9PlxuICAgICAgICAgICAgICAgIHtjaGlsZE5vZGVzfVxuICAgICAgICAgICAgICAgIHtvdmVyZmxvd05vZGV9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsZ0JBQUEsR0FBQUQsT0FBQTtBQVZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQTBCZSxNQUFNRSxhQUFhLFNBQVNDLGNBQUssQ0FBQ0MsU0FBUyxDQUFTO0VBUXZEQyxXQUFXQSxDQUFDQyxLQUFhLEVBQUVDLEdBQVcsRUFBMEI7SUFDcEUsSUFBSSxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsV0FBVyxJQUFJLElBQUksQ0FBQ0csS0FBSyxDQUFDQyxhQUFhLEVBQUU7TUFDcEQsT0FBTyxJQUFJLENBQUNELEtBQUssQ0FBQ0gsV0FBVyxDQUFDQyxLQUFLLEVBQUVDLEdBQUcsQ0FBQztJQUM3QyxDQUFDLE1BQU07TUFDSDtNQUNBO01BQ0E7TUFDQSxPQUFPSixjQUFLLENBQUNPLFFBQVEsQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQ0gsS0FBSyxDQUFDSSxRQUFRLENBQUMsQ0FDN0NDLE1BQU0sQ0FBRUMsQ0FBQyxJQUFLO1FBQ1gsT0FBT0EsQ0FBQyxJQUFJLElBQUk7TUFDcEIsQ0FBQyxDQUFDLENBQ0RDLEtBQUssQ0FBQ1QsS0FBSyxFQUFFQyxHQUFHLENBQUM7SUFDMUI7RUFDSjtFQUVRRSxhQUFhQSxDQUFBLEVBQVc7SUFDNUIsSUFBSSxJQUFJLENBQUNELEtBQUssQ0FBQ0gsV0FBVyxJQUFJLElBQUksQ0FBQ0csS0FBSyxDQUFDQyxhQUFhLEVBQUU7TUFDcEQsT0FBTyxJQUFJLENBQUNELEtBQUssQ0FBQ0MsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQyxNQUFNO01BQ0gsT0FBT04sY0FBSyxDQUFDTyxRQUFRLENBQUNDLE9BQU8sQ0FBQyxJQUFJLENBQUNILEtBQUssQ0FBQ0ksUUFBUSxDQUFDLENBQUNDLE1BQU0sQ0FBRUMsQ0FBQyxJQUFLO1FBQzdELE9BQU9BLENBQUMsSUFBSSxJQUFJO01BQ3BCLENBQUMsQ0FBQyxDQUFDRSxNQUFNO0lBQ2I7RUFDSjtFQUVPQyxNQUFNQSxDQUFBLEVBQWM7SUFDdkIsSUFBSUMsWUFBbUM7SUFFdkMsTUFBTUMsYUFBYSxHQUFHLElBQUksQ0FBQ1YsYUFBYSxDQUFDLENBQUM7SUFDMUMsSUFBSVcsVUFBVSxHQUFHRCxhQUFhO0lBQzlCLElBQUksSUFBSSxDQUFDWCxLQUFLLENBQUNhLFVBQVUsSUFBSSxDQUFDLEVBQUU7TUFDNUIsTUFBTUMsYUFBYSxHQUFHSCxhQUFhLEdBQUcsSUFBSSxDQUFDWCxLQUFLLENBQUNhLFVBQVU7TUFDM0QsSUFBSUMsYUFBYSxHQUFHLENBQUMsRUFBRTtRQUNuQkosWUFBWSxHQUFHLElBQUksQ0FBQ1YsS0FBSyxDQUFDZSxxQkFBcUIsQ0FBQ0QsYUFBYSxFQUFFSCxhQUFhLENBQUM7UUFDN0VDLFVBQVUsR0FBRyxJQUFJLENBQUNaLEtBQUssQ0FBQ2EsVUFBVTtNQUN0QztJQUNKO0lBQ0EsTUFBTUcsVUFBVSxHQUFHLElBQUksQ0FBQ25CLFdBQVcsQ0FBQyxDQUFDLEVBQUVlLFVBQVUsQ0FBQztJQUVsRCxvQkFDSXRCLE1BQUEsQ0FBQTJCLE9BQUEsQ0FBQUMsYUFBQTtNQUFLQyxTQUFTLEVBQUUsSUFBSSxDQUFDbkIsS0FBSyxDQUFDbUIsU0FBVTtNQUFDQyxJQUFJLEVBQUMsTUFBTTtNQUFDQyxFQUFFLEVBQUUsSUFBSSxDQUFDckIsS0FBSyxDQUFDcUI7SUFBRyxHQUMvREwsVUFBVSxFQUNWTixZQUNBLENBQUM7RUFFZDtBQUNKO0FBQUNZLE9BQUEsQ0FBQUwsT0FBQSxHQUFBdkIsYUFBQTtBQUFBLElBQUE2QixnQkFBQSxDQUFBTixPQUFBLEVBdERvQnZCLGFBQWEsa0JBQ0Q7RUFDekJtQixVQUFVLEVBQUUsQ0FBQztFQUNiRSxxQkFBcUJBLENBQUNELGFBQXFCLEVBQUVVLFVBQWtCLEVBQUU7SUFDN0Qsb0JBQU9sQyxNQUFBLENBQUEyQixPQUFBLENBQUFDLGFBQUEsY0FBTSxJQUFBTyxtQkFBRSxFQUFDLHVCQUF1QixFQUFFO01BQUVDLEtBQUssRUFBRVo7SUFBYyxDQUFDLENBQU8sQ0FBQztFQUM3RTtBQUNKLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=