decap-cms-core
Version:
Decap CMS core application, see decap-cms package for the main distribution.
41 lines • 5.49 kB
JavaScript
import _styled from "@emotion/styled/base";
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
import React from 'react';
import { translate } from 'react-polyglot';
import { connect } from 'react-redux';
import { jsx as ___EmotionJSX } from "@emotion/react";
const StatusBarContainer = /*#__PURE__*/_styled("footer", {
target: "e1tlq1dd0",
label: "StatusBarContainer"
})(process.env.NODE_ENV === "production" ? {
name: "1r7yd60",
styles: "position:fixed;z-index:200;bottom:0;width:100%;padding:8px 18px;font-size:11px;display:flex;gap:1rem;box-shadow:0 4px 12px 0 rgba(68, 74, 87, 0.15),0 1px 3px 0 rgba(68, 74, 87, 0.25);background-color:#f7f8fa"
} : {
name: "1r7yd60",
styles: "position:fixed;z-index:200;bottom:0;width:100%;padding:8px 18px;font-size:11px;display:flex;gap:1rem;box-shadow:0 4px 12px 0 rgba(68, 74, 87, 0.15),0 1px 3px 0 rgba(68, 74, 87, 0.25);background-color:#f7f8fa/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FwcC9TdGF0dXNCYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVN3QyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9BcHAvU3RhdHVzQmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyB0cmFuc2xhdGUgfSBmcm9tICdyZWFjdC1wb2x5Z2xvdCc7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGxldCBERUNBUF9DTVNfQVBQX1ZFUlNJT046IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuY29uc3QgU3RhdHVzQmFyQ29udGFpbmVyID0gc3R5bGVkLmZvb3RlcmBcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAyMDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDhweCAxOHB4O1xuICBmb250LXNpemU6IDExcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMXJlbTtcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCAwIHJnYmEoNjgsIDc0LCA4NywgMC4xNSksIDAgMXB4IDNweCAwIHJnYmEoNjgsIDc0LCA4NywgMC4yNSk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y4ZmE7XG5gO1xuXG5pbXBvcnQgdHlwZSB7IFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMvcmVkdXgnO1xuXG5pbnRlcmZhY2UgU3RhdHVzQmFyUHJvcHMge1xuICByYXRlTGltaXRJbmZvPzoge1xuICAgIHVzZWQ6IG51bWJlcjtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIHJlbWFpbmluZzogbnVtYmVyO1xuICAgIHJlc2V0OiBudW1iZXI7XG4gICAgcmVzb3VyY2U6IHN0cmluZztcbiAgfTtcbiAgYXBwVmVyc2lvbj86IHN0cmluZztcbiAgYmFja2VuZE5hbWU/OiBzdHJpbmc7XG4gIHQ6IChrZXk6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRSZXNldFRpbWUocmVzZXRUaW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShyZXNldFRpbWVzdGFtcCAqIDEwMDApO1xuICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IGZhbHNlIH0pO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRQZXJjZW50YWdlKHVzZWQ6IG51bWJlciwgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHBlcmNlbnRhZ2UgPSBsaW1pdCA+IDAgPyBNYXRoLnJvdW5kKCh1c2VkIC8gbGltaXQpICogMTApIC8gMTAgOiAwO1xuICByZXR1cm4gcGVyY2VudGFnZS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnLCcpO1xufVxuXG5mdW5jdGlvbiBTdGF0dXNCYXIoeyByYXRlTGltaXRJbmZvLCBiYWNrZW5kTmFtZSwgdCB9OiBTdGF0dXNCYXJQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxTdGF0dXNCYXJDb250YWluZXI+XG4gICAgICB7dHlwZW9mIERFQ0FQX0NNU19BUFBfVkVSU0lPTiA9PT0gJ3N0cmluZycgJiYgKFxuICAgICAgICA8c3Bhbj5kZWNhcC1jbXMtYXBwIHtERUNBUF9DTVNfQVBQX1ZFUlNJT059PC9zcGFuPlxuICAgICAgKX1cblxuICAgICAge2JhY2tlbmROYW1lICYmIChcbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAge2JhY2tlbmROYW1lfSB7dCgnYXBwLnN0YXR1c0Jhci5iYWNrZW5kJyl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICl9XG5cbiAgICAgIHtyYXRlTGltaXRJbmZvICYmIChcbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAge3JhdGVMaW1pdEluZm8udXNlZH0gLyB7cmF0ZUxpbWl0SW5mby5saW1pdH0gKFxuICAgICAgICAgIHtmb3JtYXRQZXJjZW50YWdlKHJhdGVMaW1pdEluZm8udXNlZCwgcmF0ZUxpbWl0SW5mby5saW1pdCl9JSl7JyAnfVxuICAgICAgICAgIHt0KCdhcHAuc3RhdHVzQmFyLnJlcXVlc3RzVXNlZCcpfSwge3QoJ2FwcC5zdGF0dXNCYXIucmVzZXRBdCcpfXsnICd9XG4gICAgICAgICAge2Zvcm1hdFJlc2V0VGltZShyYXRlTGltaXRJbmZvLnJlc2V0KX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgKX1cbiAgICA8L1N0YXR1c0JhckNvbnRhaW5lcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBTdGF0ZSkge1xuICByZXR1cm4ge1xuICAgIHJhdGVMaW1pdEluZm86IHN0YXRlLnN0YXR1cz8ucmF0ZUxpbWl0SW5mbyxcbiAgICBiYWNrZW5kTmFtZTogc3RhdGUuY29uZmlnPy5iYWNrZW5kPy5uYW1lLFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcykodHJhbnNsYXRlKCkoU3RhdHVzQmFyKSk7XG4iXX0= */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
function formatResetTime(resetTimestamp) {
const date = new Date(resetTimestamp * 1000);
return date.toLocaleTimeString('en-US', {
hour12: false
});
}
function formatPercentage(used, limit) {
const percentage = limit > 0 ? Math.round(used / limit * 10) / 10 : 0;
return percentage.toString().replace('.', ',');
}
function StatusBar({
rateLimitInfo,
backendName,
t
}) {
return ___EmotionJSX(StatusBarContainer, null, typeof "3.10.1" === 'string' && ___EmotionJSX("span", null, "decap-cms-app ", "3.10.1"), backendName && ___EmotionJSX("span", null, backendName, " ", t('app.statusBar.backend')), rateLimitInfo && ___EmotionJSX("span", null, rateLimitInfo.used, " / ", rateLimitInfo.limit, " (", formatPercentage(rateLimitInfo.used, rateLimitInfo.limit), "%)", ' ', t('app.statusBar.requestsUsed'), ", ", t('app.statusBar.resetAt'), ' ', formatResetTime(rateLimitInfo.reset)));
}
function mapStateToProps(state) {
return {
rateLimitInfo: state.status?.rateLimitInfo,
backendName: state.config?.backend?.name
};
}
export default connect(mapStateToProps)(translate()(StatusBar));