ringcentral-widgets
Version:
RingCentral Integration Widget Library
228 lines (176 loc) • 8.73 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
require("core-js/modules/es7.symbol.async-iterator");
require("core-js/modules/es6.string.iterator");
require("core-js/modules/es6.weak-map");
require("core-js/modules/es6.object.define-properties");
require("core-js/modules/es7.object.get-own-property-descriptors");
require("core-js/modules/es6.array.filter");
require("core-js/modules/es6.symbol");
require("core-js/modules/es6.object.define-property");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CallHistoryPanel = void 0;
require("core-js/modules/es6.function.name");
require("core-js/modules/es6.array.map");
require("core-js/modules/web.dom.iterable");
require("core-js/modules/es6.array.iterator");
require("core-js/modules/es6.object.to-string");
require("core-js/modules/es6.object.keys");
require("core-js/modules/es7.array.includes");
require("core-js/modules/es6.string.includes");
require("core-js/modules/es6.array.for-each");
var _moment = _interopRequireDefault(require("moment"));
var _react = _interopRequireWildcard(require("react"));
var _CallHistoryItem = require("./CallHistoryItem");
var _StickyVirtualizedList = require("./StickyVirtualizedList");
var _styles = _interopRequireDefault(require("./styles.scss"));
var _i18n = _interopRequireDefault(require("./i18n"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var DATE_ITEM_HEIGHT = 32; // ./styles.scss .date
var CALL_ITEM_HEIGHT = 64; // ./CallHistoryItem/styles.scss .item
var ROOT_NODE = {
id: 'root',
height: DATE_ITEM_HEIGHT,
isSticky: true
};
function formatCallDate(timestamp) {
var now = (0, _moment["default"])();
var today = now.clone().startOf('day');
var yesterday = now.clone().subtract(1, 'days').startOf('day');
var mTimestamp = (0, _moment["default"])(timestamp);
if (mTimestamp.isSame(today, 'd')) {
return 'today';
}
if (mTimestamp.isSame(yesterday, 'd')) {
return 'yesterday';
}
return mTimestamp.format('MM/DD/YYYY');
}
function formatCallTime(timestamp) {
return (0, _moment["default"])(timestamp).format('h:mm A');
}
var CallHistoryPanel = function CallHistoryPanel(_ref) {
var calls = _ref.calls,
currentLocale = _ref.currentLocale,
getActionMenu = _ref.getActionMenu,
_ref$isWide = _ref.isWide,
isWide = _ref$isWide === void 0 ? true : _ref$isWide,
_ref$listScrollTop = _ref.listScrollTop,
listScrollTop = _ref$listScrollTop === void 0 ? 0 : _ref$listScrollTop,
_ref$changeListScroll = _ref.changeListScrollTop,
changeListScrollTop = _ref$changeListScroll === void 0 ? function () {} : _ref$changeListScroll;
var listRef = (0, _react.useRef)(null);
(0, _react.useEffect)(function () {
var _listRef$current;
(_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.setScrollTop(listScrollTop);
}, []);
var tree = (0, _react.useMemo)(function () {
var _tree = {
root: {
name: 'root',
depth: 0,
children: []
}
};
calls.forEach(function (call) {
var id = call.id,
startTime = call.startTime;
var callDate = formatCallDate(startTime);
var callTime = formatCallTime(startTime);
var callWithFormattedDate = _objectSpread(_objectSpread({}, call), {}, {
callDate: callDate,
callTime: callTime
});
if (!_tree.root.children.includes(callDate)) {
_tree.root.children.push(callDate);
}
if (!Object.keys(_tree).includes(callDate)) {
_tree[callDate] = {
name: callDate,
children: [id],
depth: 1
};
} else {
_tree[callDate].children.push(id);
}
_tree[id] = {
name: id,
depth: 2,
call: callWithFormattedDate
};
});
return _tree;
}, [calls]);
var getChildren = (0, _react.useCallback)(function (id) {
var node = tree[id];
if (node.children) {
return node.children.map(function (childId) {
var childNode = tree[childId];
var height = CALL_ITEM_HEIGHT;
if (childNode.depth === 1) {
height = DATE_ITEM_HEIGHT;
}
return {
id: childId,
height: height,
isSticky: childNode.depth === 1
};
});
}
}, [tree]);
var rowRenderer = (0, _react.useCallback)(function (_ref2) {
var id = _ref2.id,
style = _ref2.style;
var node = tree[id];
if (node.children) {
return /*#__PURE__*/_react["default"].createElement("div", {
"data-sign": node.name,
className: _styles["default"].date,
style: style,
key: node.name
}, _i18n["default"].getString(node.name, currentLocale));
}
return /*#__PURE__*/_react["default"].createElement("div", {
"data-sign": "historyItem",
style: style,
key: node.call.id
}, /*#__PURE__*/_react["default"].createElement(_CallHistoryItem.CallHistoryItem, {
call: node.call,
actionMenu: getActionMenu(node.call),
isWide: isWide
}));
}, [tree, currentLocale]);
return /*#__PURE__*/_react["default"].createElement("div", {
className: _styles["default"].callHistoryPanel
}, tree.root.children.length ? /*#__PURE__*/_react["default"].createElement(_StickyVirtualizedList.StickyVirtualizedList, {
overscanRowCount: 20,
root: ROOT_NODE,
getChildren: getChildren,
rowRenderer: rowRenderer,
defaultRowHeight: 64,
width: window.innerWidth,
height: window.innerHeight,
onScroll: function onScroll(_ref3) {
var scrollTop = _ref3.scrollTop;
changeListScrollTop(scrollTop);
},
ref: listRef
}) : /*#__PURE__*/_react["default"].createElement("div", {
className: _styles["default"].empty
}, _i18n["default"].getString('empty', currentLocale)));
};
exports.CallHistoryPanel = CallHistoryPanel;
CallHistoryPanel.defaultProps = {
calls: [],
getActionMenu: function getActionMenu() {
return [];
}
};
//# sourceMappingURL=CallHistoryPanel.js.map