UNPKG

matrix-react-sdk

Version:
97 lines (77 loc) 11.8 kB
"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 _propTypes = _interopRequireDefault(require("prop-types")); var _languageHandler = require("../../../languageHandler"); var _replaceableComponent = require("../../../utils/replaceableComponent"); var _dec, _class, _class2, _temp; let TruncatedList = (_dec = (0, _replaceableComponent.replaceableComponent)("views.elements.TruncatedList"), _dec(_class = (_temp = _class2 = 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 bizzare 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 = null; 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 }, childNodes, overflowNode); } }, (0, _defineProperty2.default)(_class2, "propTypes", { // The number of elements to show before truncating. If negative, no truncation is done. truncateAt: _propTypes.default.number, // The className to apply to the wrapping div className: _propTypes.default.string, // A function that returns the children to be rendered into the element. // function getChildren(start: number, end: number): Array<React.Node> // The start element is included, the end is not (as in `slice`). // If omitted, the React child elements will be used. This parameter can be used // to avoid creating unnecessary React elements. getChildren: _propTypes.default.func, // A function that should return the total number of child element available. // Required if getChildren is supplied. getChildCount: _propTypes.default.func, // A function which will be invoked when an overflow element is required. // This will be inserted after the children. createOverflowElement: _propTypes.default.func }), (0, _defineProperty2.default)(_class2, "defaultProps", { truncateAt: 2, createOverflowElement(overflowCount, totalCount) { return /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("And %(count)s more...", { count: overflowCount })); } }), _temp)) || _class); exports.default = TruncatedList; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL1RydW5jYXRlZExpc3QuanMiXSwibmFtZXMiOlsiVHJ1bmNhdGVkTGlzdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiX2dldENoaWxkcmVuIiwic3RhcnQiLCJlbmQiLCJwcm9wcyIsImdldENoaWxkcmVuIiwiZ2V0Q2hpbGRDb3VudCIsIkNoaWxkcmVuIiwidG9BcnJheSIsImNoaWxkcmVuIiwiZmlsdGVyIiwiYyIsInNsaWNlIiwiX2dldENoaWxkQ291bnQiLCJsZW5ndGgiLCJyZW5kZXIiLCJvdmVyZmxvd05vZGUiLCJ0b3RhbENoaWxkcmVuIiwidXBwZXJCb3VuZCIsInRydW5jYXRlQXQiLCJvdmVyZmxvd0NvdW50IiwiY3JlYXRlT3ZlcmZsb3dFbGVtZW50IiwiY2hpbGROb2RlcyIsImNsYXNzTmFtZSIsIlByb3BUeXBlcyIsIm51bWJlciIsInN0cmluZyIsImZ1bmMiLCJ0b3RhbENvdW50IiwiY291bnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBaUJBOztBQUNBOztBQUNBOztBQUNBOzs7O0lBR3FCQSxhLFdBRHBCLGdEQUFxQiw4QkFBckIsQyxtQ0FBRCxNQUNxQkEsYUFEckIsU0FDMkNDLGVBQU1DLFNBRGpELENBQzJEO0FBNkJ2REMsRUFBQUEsWUFBWSxDQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBYTtBQUNyQixRQUFJLEtBQUtDLEtBQUwsQ0FBV0MsV0FBWCxJQUEwQixLQUFLRCxLQUFMLENBQVdFLGFBQXpDLEVBQXdEO0FBQ3BELGFBQU8sS0FBS0YsS0FBTCxDQUFXQyxXQUFYLENBQXVCSCxLQUF2QixFQUE4QkMsR0FBOUIsQ0FBUDtBQUNILEtBRkQsTUFFTztBQUNIO0FBQ0E7QUFDQTtBQUNBLGFBQU9KLGVBQU1RLFFBQU4sQ0FBZUMsT0FBZixDQUF1QixLQUFLSixLQUFMLENBQVdLLFFBQWxDLEVBQTRDQyxNQUE1QyxDQUFvREMsQ0FBRCxJQUFPO0FBQzdELGVBQU9BLENBQUMsSUFBSSxJQUFaO0FBQ0gsT0FGTSxFQUVKQyxLQUZJLENBRUVWLEtBRkYsRUFFU0MsR0FGVCxDQUFQO0FBR0g7QUFDSjs7QUFFRFUsRUFBQUEsY0FBYyxHQUFHO0FBQ2IsUUFBSSxLQUFLVCxLQUFMLENBQVdDLFdBQVgsSUFBMEIsS0FBS0QsS0FBTCxDQUFXRSxhQUF6QyxFQUF3RDtBQUNwRCxhQUFPLEtBQUtGLEtBQUwsQ0FBV0UsYUFBWCxFQUFQO0FBQ0gsS0FGRCxNQUVPO0FBQ0gsYUFBT1AsZUFBTVEsUUFBTixDQUFlQyxPQUFmLENBQXVCLEtBQUtKLEtBQUwsQ0FBV0ssUUFBbEMsRUFBNENDLE1BQTVDLENBQW9EQyxDQUFELElBQU87QUFDN0QsZUFBT0EsQ0FBQyxJQUFJLElBQVo7QUFDSCxPQUZNLEVBRUpHLE1BRkg7QUFHSDtBQUNKOztBQUVEQyxFQUFBQSxNQUFNLEdBQUc7QUFDTCxRQUFJQyxZQUFZLEdBQUcsSUFBbkI7O0FBRUEsVUFBTUMsYUFBYSxHQUFHLEtBQUtKLGNBQUwsRUFBdEI7O0FBQ0EsUUFBSUssVUFBVSxHQUFHRCxhQUFqQjs7QUFDQSxRQUFJLEtBQUtiLEtBQUwsQ0FBV2UsVUFBWCxJQUF5QixDQUE3QixFQUFnQztBQUM1QixZQUFNQyxhQUFhLEdBQUdILGFBQWEsR0FBRyxLQUFLYixLQUFMLENBQVdlLFVBQWpEOztBQUNBLFVBQUlDLGFBQWEsR0FBRyxDQUFwQixFQUF1QjtBQUNuQkosUUFBQUEsWUFBWSxHQUFHLEtBQUtaLEtBQUwsQ0FBV2lCLHFCQUFYLENBQ1hELGFBRFcsRUFDSUgsYUFESixDQUFmO0FBR0FDLFFBQUFBLFVBQVUsR0FBRyxLQUFLZCxLQUFMLENBQVdlLFVBQXhCO0FBQ0g7QUFDSjs7QUFDRCxVQUFNRyxVQUFVLEdBQUcsS0FBS3JCLFlBQUwsQ0FBa0IsQ0FBbEIsRUFBcUJpQixVQUFyQixDQUFuQjs7QUFFQSx3QkFDSTtBQUFLLE1BQUEsU0FBUyxFQUFFLEtBQUtkLEtBQUwsQ0FBV21CO0FBQTNCLE9BQ01ELFVBRE4sRUFFTU4sWUFGTixDQURKO0FBTUg7O0FBMUVzRCxDLHNEQUNwQztBQUNmO0FBQ0FHLEVBQUFBLFVBQVUsRUFBRUssbUJBQVVDLE1BRlA7QUFHZjtBQUNBRixFQUFBQSxTQUFTLEVBQUVDLG1CQUFVRSxNQUpOO0FBS2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBckIsRUFBQUEsV0FBVyxFQUFFbUIsbUJBQVVHLElBVlI7QUFXZjtBQUNBO0FBQ0FyQixFQUFBQSxhQUFhLEVBQUVrQixtQkFBVUcsSUFiVjtBQWNmO0FBQ0E7QUFDQU4sRUFBQUEscUJBQXFCLEVBQUVHLG1CQUFVRztBQWhCbEIsQywwREFtQkU7QUFDakJSLEVBQUFBLFVBQVUsRUFBRSxDQURLOztBQUVqQkUsRUFBQUEscUJBQXFCLENBQUNELGFBQUQsRUFBZ0JRLFVBQWhCLEVBQTRCO0FBQzdDLHdCQUNJLDBDQUFPLHlCQUFHLHVCQUFILEVBQTRCO0FBQUNDLE1BQUFBLEtBQUssRUFBRVQ7QUFBUixLQUE1QixDQUFQLENBREo7QUFHSDs7QUFOZ0IsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAxNiBPcGVuTWFya2V0IEx0ZFxuQ29weXJpZ2h0IDIwMTcgTmV3IFZlY3RvciBMdGRcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IF90IH0gZnJvbSAnLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyJztcbmltcG9ydCB7cmVwbGFjZWFibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXBsYWNlYWJsZUNvbXBvbmVudFwiO1xuXG5AcmVwbGFjZWFibGVDb21wb25lbnQoXCJ2aWV3cy5lbGVtZW50cy5UcnVuY2F0ZWRMaXN0XCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcnVuY2F0ZWRMaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNob3cgYmVmb3JlIHRydW5jYXRpbmcuIElmIG5lZ2F0aXZlLCBubyB0cnVuY2F0aW9uIGlzIGRvbmUuXG4gICAgICAgIHRydW5jYXRlQXQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIC8vIFRoZSBjbGFzc05hbWUgdG8gYXBwbHkgdG8gdGhlIHdyYXBwaW5nIGRpdlxuICAgICAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIC8vIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnRvIHRoZSBlbGVtZW50LlxuICAgICAgICAvLyBmdW5jdGlvbiBnZXRDaGlsZHJlbihzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IEFycmF5PFJlYWN0Lk5vZGU+XG4gICAgICAgIC8vIFRoZSBzdGFydCBlbGVtZW50IGlzIGluY2x1ZGVkLCB0aGUgZW5kIGlzIG5vdCAoYXMgaW4gYHNsaWNlYCkuXG4gICAgICAgIC8vIElmIG9taXR0ZWQsIHRoZSBSZWFjdCBjaGlsZCBlbGVtZW50cyB3aWxsIGJlIHVzZWQuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSB1c2VkXG4gICAgICAgIC8vIHRvIGF2b2lkIGNyZWF0aW5nIHVubmVjZXNzYXJ5IFJlYWN0IGVsZW1lbnRzLlxuICAgICAgICBnZXRDaGlsZHJlbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8vIEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgcmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgY2hpbGQgZWxlbWVudCBhdmFpbGFibGUuXG4gICAgICAgIC8vIFJlcXVpcmVkIGlmIGdldENoaWxkcmVuIGlzIHN1cHBsaWVkLlxuICAgICAgICBnZXRDaGlsZENvdW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLy8gQSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGludm9rZWQgd2hlbiBhbiBvdmVyZmxvdyBlbGVtZW50IGlzIHJlcXVpcmVkLlxuICAgICAgICAvLyBUaGlzIHdpbGwgYmUgaW5zZXJ0ZWQgYWZ0ZXIgdGhlIGNoaWxkcmVuLlxuICAgICAgICBjcmVhdGVPdmVyZmxvd0VsZW1lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID17XG4gICAgICAgIHRydW5jYXRlQXQ6IDIsXG4gICAgICAgIGNyZWF0ZU92ZXJmbG93RWxlbWVudChvdmVyZmxvd0NvdW50LCB0b3RhbENvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXY+eyBfdChcIkFuZCAlKGNvdW50KXMgbW9yZS4uLlwiLCB7Y291bnQ6IG92ZXJmbG93Q291bnR9KSB9PC9kaXY+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBfZ2V0Q2hpbGRyZW4oc3RhcnQsIGVuZCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5nZXRDaGlsZHJlbiAmJiB0aGlzLnByb3BzLmdldENoaWxkQ291bnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmdldENoaWxkcmVuKHN0YXJ0LCBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gWFhYOiBJJ20gbm90IHN1cmUgd2h5IGFueXRoaW5nIHdvdWxkIHBhc3MgbnVsbCBpbnRvIHRoaXMsIGl0IHNlZW1zXG4gICAgICAgICAgICAvLyBsaWtlIGEgYml6emFyZSBjYXNlIHRvIGhhbmRsZSwgYnV0IEknbSBwcmVzZXJ2aW5nIHRoZSBiZWhhdmlvdXIuXG4gICAgICAgICAgICAvLyAoc2VlIGNvbW1pdCAzOGQ1YzdkNWM1ZDVhMzRkYzE2ZWY1ZDQ2Mjc4MzE1ZjVjNTdmNTQyKVxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkodGhpcy5wcm9wcy5jaGlsZHJlbikuZmlsdGVyKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldENoaWxkQ291bnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmdldENoaWxkcmVuICYmIHRoaXMucHJvcHMuZ2V0Q2hpbGRDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZ2V0Q2hpbGRDb3VudCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkodGhpcy5wcm9wcy5jaGlsZHJlbikuZmlsdGVyKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgbGV0IG92ZXJmbG93Tm9kZSA9IG51bGw7XG5cbiAgICAgICAgY29uc3QgdG90YWxDaGlsZHJlbiA9IHRoaXMuX2dldENoaWxkQ291bnQoKTtcbiAgICAgICAgbGV0IHVwcGVyQm91bmQgPSB0b3RhbENoaWxkcmVuO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy50cnVuY2F0ZUF0ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93Q291bnQgPSB0b3RhbENoaWxkcmVuIC0gdGhpcy5wcm9wcy50cnVuY2F0ZUF0O1xuICAgICAgICAgICAgaWYgKG92ZXJmbG93Q291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dOb2RlID0gdGhpcy5wcm9wcy5jcmVhdGVPdmVyZmxvd0VsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93Q291bnQsIHRvdGFsQ2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB1cHBlckJvdW5kID0gdGhpcy5wcm9wcy50cnVuY2F0ZUF0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSB0aGlzLl9nZXRDaGlsZHJlbigwLCB1cHBlckJvdW5kKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lfT5cbiAgICAgICAgICAgICAgICB7IGNoaWxkTm9kZXMgfVxuICAgICAgICAgICAgICAgIHsgb3ZlcmZsb3dOb2RlIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==