matrix-react-sdk
Version:
SDK for matrix.org using React
59 lines (56 loc) • 6.98 kB
JavaScript
;
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 _temporalPolyfill = require("temporal-polyfill");
var _DateUtils = require("../../../DateUtils");
/*
Copyright 2024 New Vector Ltd.
Copyright 2021-2023 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.
*/
/**
* Clock which represents time periods rather than absolute time.
* Simply converts seconds using formatFn.
* Defaulting to formatSeconds().
* Note that in this case hours will not be displayed, making it possible to see "82:29".
*/
class Clock extends _react.default.Component {
constructor(props) {
super(props);
}
shouldComponentUpdate(nextProps) {
const currentFloor = Math.floor(this.props.seconds);
const nextFloor = Math.floor(nextProps.seconds);
return currentFloor !== nextFloor;
}
calculateDuration(seconds) {
if (isNaN(seconds)) return undefined;
return new _temporalPolyfill.Temporal.Duration(0, 0, 0, 0, 0, 0, Math.round(seconds)).round({
smallestUnit: "seconds",
largestUnit: "hours"
}).toString();
}
render() {
const {
seconds,
role
} = this.props;
return /*#__PURE__*/_react.default.createElement("time", {
dateTime: this.calculateDuration(seconds),
"aria-live": this.props["aria-live"],
role: role,
className: "mx_Clock"
}, this.props.formatFn(seconds));
}
}
exports.default = Clock;
(0, _defineProperty2.default)(Clock, "defaultProps", {
formatFn: _DateUtils.formatSeconds
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZW1wb3JhbFBvbHlmaWxsIiwiX0RhdGVVdGlscyIsIkNsb2NrIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwibmV4dFByb3BzIiwiY3VycmVudEZsb29yIiwiTWF0aCIsImZsb29yIiwic2Vjb25kcyIsIm5leHRGbG9vciIsImNhbGN1bGF0ZUR1cmF0aW9uIiwiaXNOYU4iLCJ1bmRlZmluZWQiLCJUZW1wb3JhbCIsIkR1cmF0aW9uIiwicm91bmQiLCJzbWFsbGVzdFVuaXQiLCJsYXJnZXN0VW5pdCIsInRvU3RyaW5nIiwicmVuZGVyIiwicm9sZSIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiZGF0ZVRpbWUiLCJjbGFzc05hbWUiLCJmb3JtYXRGbiIsImV4cG9ydHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZm9ybWF0U2Vjb25kcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2F1ZGlvX21lc3NhZ2VzL0Nsb2NrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMS0yMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCwgeyBIVE1MUHJvcHMgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRlbXBvcmFsIH0gZnJvbSBcInRlbXBvcmFsLXBvbHlmaWxsXCI7XG5cbmltcG9ydCB7IGZvcm1hdFNlY29uZHMgfSBmcm9tIFwiLi4vLi4vLi4vRGF0ZVV0aWxzXCI7XG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIFBpY2s8SFRNTFByb3BzPEhUTUxTcGFuRWxlbWVudD4sIFwiYXJpYS1saXZlXCIgfCBcInJvbGVcIj4ge1xuICAgIHNlY29uZHM6IG51bWJlcjtcbiAgICBmb3JtYXRGbjogKHNlY29uZHM6IG51bWJlcikgPT4gc3RyaW5nO1xufVxuXG4vKipcbiAqIENsb2NrIHdoaWNoIHJlcHJlc2VudHMgdGltZSBwZXJpb2RzIHJhdGhlciB0aGFuIGFic29sdXRlIHRpbWUuXG4gKiBTaW1wbHkgY29udmVydHMgc2Vjb25kcyB1c2luZyBmb3JtYXRGbi5cbiAqIERlZmF1bHRpbmcgdG8gZm9ybWF0U2Vjb25kcygpLlxuICogTm90ZSB0aGF0IGluIHRoaXMgY2FzZSBob3VycyB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQsIG1ha2luZyBpdCBwb3NzaWJsZSB0byBzZWUgXCI4MjoyOVwiLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbG9jayBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcz4ge1xuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBmb3JtYXRGbjogZm9ybWF0U2Vjb25kcyxcbiAgICB9O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHM6IFJlYWRvbmx5PFByb3BzPik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJyZW50Rmxvb3IgPSBNYXRoLmZsb29yKHRoaXMucHJvcHMuc2Vjb25kcyk7XG4gICAgICAgIGNvbnN0IG5leHRGbG9vciA9IE1hdGguZmxvb3IobmV4dFByb3BzLnNlY29uZHMpO1xuICAgICAgICByZXR1cm4gY3VycmVudEZsb29yICE9PSBuZXh0Rmxvb3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVEdXJhdGlvbihzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNOYU4oc2Vjb25kcykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBuZXcgVGVtcG9yYWwuRHVyYXRpb24oMCwgMCwgMCwgMCwgMCwgMCwgTWF0aC5yb3VuZChzZWNvbmRzKSlcbiAgICAgICAgICAgIC5yb3VuZCh7IHNtYWxsZXN0VW5pdDogXCJzZWNvbmRzXCIsIGxhcmdlc3RVbml0OiBcImhvdXJzXCIgfSlcbiAgICAgICAgICAgIC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAgICAgY29uc3QgeyBzZWNvbmRzLCByb2xlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHRpbWVcbiAgICAgICAgICAgICAgICBkYXRlVGltZT17dGhpcy5jYWxjdWxhdGVEdXJhdGlvbihzZWNvbmRzKX1cbiAgICAgICAgICAgICAgICBhcmlhLWxpdmU9e3RoaXMucHJvcHNbXCJhcmlhLWxpdmVcIl19XG4gICAgICAgICAgICAgICAgcm9sZT17cm9sZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9DbG9ja1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMuZm9ybWF0Rm4oc2Vjb25kcyl9XG4gICAgICAgICAgICA8L3RpbWU+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZSxNQUFNRyxLQUFLLFNBQVNDLGNBQUssQ0FBQ0MsU0FBUyxDQUFRO0VBSy9DQyxXQUFXQSxDQUFDQyxLQUFZLEVBQUU7SUFDN0IsS0FBSyxDQUFDQSxLQUFLLENBQUM7RUFDaEI7RUFFT0MscUJBQXFCQSxDQUFDQyxTQUEwQixFQUFXO0lBQzlELE1BQU1DLFlBQVksR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUMsSUFBSSxDQUFDTCxLQUFLLENBQUNNLE9BQU8sQ0FBQztJQUNuRCxNQUFNQyxTQUFTLEdBQUdILElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxTQUFTLENBQUNJLE9BQU8sQ0FBQztJQUMvQyxPQUFPSCxZQUFZLEtBQUtJLFNBQVM7RUFDckM7RUFFUUMsaUJBQWlCQSxDQUFDRixPQUFlLEVBQXNCO0lBQzNELElBQUlHLEtBQUssQ0FBQ0gsT0FBTyxDQUFDLEVBQUUsT0FBT0ksU0FBUztJQUNwQyxPQUFPLElBQUlDLDBCQUFRLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRVIsSUFBSSxDQUFDUyxLQUFLLENBQUNQLE9BQU8sQ0FBQyxDQUFDLENBQzlETyxLQUFLLENBQUM7TUFBRUMsWUFBWSxFQUFFLFNBQVM7TUFBRUMsV0FBVyxFQUFFO0lBQVEsQ0FBQyxDQUFDLENBQ3hEQyxRQUFRLENBQUMsQ0FBQztFQUNuQjtFQUVPQyxNQUFNQSxDQUFBLEVBQW9CO0lBQzdCLE1BQU07TUFBRVgsT0FBTztNQUFFWTtJQUFLLENBQUMsR0FBRyxJQUFJLENBQUNsQixLQUFLO0lBQ3BDLG9CQUNJVCxNQUFBLENBQUE0QixPQUFBLENBQUFDLGFBQUE7TUFDSUMsUUFBUSxFQUFFLElBQUksQ0FBQ2IsaUJBQWlCLENBQUNGLE9BQU8sQ0FBRTtNQUMxQyxhQUFXLElBQUksQ0FBQ04sS0FBSyxDQUFDLFdBQVcsQ0FBRTtNQUNuQ2tCLElBQUksRUFBRUEsSUFBSztNQUNYSSxTQUFTLEVBQUM7SUFBVSxHQUVuQixJQUFJLENBQUN0QixLQUFLLENBQUN1QixRQUFRLENBQUNqQixPQUFPLENBQzFCLENBQUM7RUFFZjtBQUNKO0FBQUNrQixPQUFBLENBQUFMLE9BQUEsR0FBQXZCLEtBQUE7QUFBQSxJQUFBNkIsZ0JBQUEsQ0FBQU4sT0FBQSxFQW5Db0J2QixLQUFLLGtCQUNPO0VBQ3pCMkIsUUFBUSxFQUFFRztBQUNkLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=