cobrowse-agent-ui 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +1 -1
  3. package/dist/CodeEntry.js +12 -20
  4. package/dist/Device.js +16 -23
  5. package/dist/PlatformIcon.js +11 -18
  6. package/dist/Session.js +23 -30
  7. package/dist/SmartConnectButton.js +4 -11
  8. package/dist/Stopwatch.js +12 -16
  9. package/dist/UserIcon.js +5 -12
  10. package/dist/deviceType.js +6 -13
  11. package/dist/i18n.js +109 -47
  12. package/dist/index.js +7 -48
  13. package/dist/locales/ar/translation.json +10 -0
  14. package/dist/locales/cs/translation.json +10 -0
  15. package/dist/locales/da/translation.json +10 -0
  16. package/dist/locales/de/translation.json +10 -0
  17. package/dist/locales/et/translation.json +10 -0
  18. package/dist/locales/fi/translation.json +10 -0
  19. package/dist/locales/fr/translation.json +1 -1
  20. package/dist/locales/hi/translation.json +10 -0
  21. package/dist/locales/it/translation.json +10 -0
  22. package/dist/locales/ja/translation.json +10 -0
  23. package/dist/locales/kk/translation.json +10 -0
  24. package/dist/locales/ko/translation.json +10 -0
  25. package/dist/locales/lt/translation.json +10 -0
  26. package/dist/locales/mr/translation.json +10 -0
  27. package/dist/locales/ms/translation.json +10 -0
  28. package/dist/locales/nl/translation.json +10 -0
  29. package/dist/locales/pl/translation.json +10 -0
  30. package/dist/locales/pt/translation.json +10 -0
  31. package/dist/locales/ro/translation.json +10 -0
  32. package/dist/locales/ru/translation.json +10 -0
  33. package/dist/locales/sk/translation.json +10 -0
  34. package/dist/locales/sl/translation.json +10 -0
  35. package/dist/locales/sv/translation.json +10 -0
  36. package/dist/locales/th/translation.json +10 -0
  37. package/dist/locales/uk/translation.json +10 -0
  38. package/dist/locales/vi/translation.json +10 -0
  39. package/dist/locales/zh/translation.json +10 -0
  40. package/i18next-parser.config.js +34 -2
  41. package/package.json +6 -7
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [1.2.0](https://github.com/cobrowseio/cobrowse-agent-ui/compare/v1.1.1...v1.2.0) (2025-05-09)
6
+
7
+
8
+ ### Features
9
+
10
+ * add new locales ([#23](https://github.com/cobrowseio/cobrowse-agent-ui/issues/23)) ([7bb63b8](https://github.com/cobrowseio/cobrowse-agent-ui/commit/7bb63b8e98b053635488217d040c123b32033b3c))
11
+
12
+ ### [1.1.1](https://github.com/cobrowseio/cobrowse-agent-ui/compare/v1.1.0...v1.1.1) (2025-02-03)
13
+
5
14
  ## [1.1.0](https://github.com/cobrowseio/cobrowse-agent-ui/compare/v1.0.0...v1.1.0) (2024-01-17)
6
15
 
7
16
 
package/README.md CHANGED
@@ -36,4 +36,4 @@ To add a new locale follow these steps:
36
36
  - Add a new entry to the `SUPPORTED_LOCALES` constant inside `src/i18n.js`.
37
37
 
38
38
  **Note:** ensure the locale code matches the ones provided by the
39
- [moment library](https://github.com/moment/moment/tree/develop/locale) as these are used to localize dates as well.
39
+ [date-fns library](https://github.com/date-fns/date-fns/tree/main/src/locale) as these are used to localize dates as well.
package/dist/CodeEntry.js CHANGED
@@ -1,14 +1,4 @@
1
- "use strict";
2
-
3
1
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
- require("./CodeEntry.css");
10
- 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); }
11
- 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; }
12
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
13
3
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
14
4
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
@@ -30,6 +20,8 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
30
20
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
31
21
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
32
22
  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; }
23
+ import React, { Component } from 'react';
24
+ import './CodeEntry.css';
33
25
  var CodeEntry = /*#__PURE__*/function (_Component) {
34
26
  _inherits(CodeEntry, _Component);
35
27
  var _super = _createSuper(CodeEntry);
@@ -180,11 +172,11 @@ var CodeEntry = /*#__PURE__*/function (_Component) {
180
172
  disabled: !this.isEditable()
181
173
  };
182
174
  var invalid = !this.state.validating && this.getCode().length === 6;
183
- return /*#__PURE__*/_react.default.createElement("div", {
175
+ return /*#__PURE__*/React.createElement("div", {
184
176
  className: "CodeEntry"
185
- }, /*#__PURE__*/_react.default.createElement("div", {
177
+ }, /*#__PURE__*/React.createElement("div", {
186
178
  className: invalid ? 'invalid' : ''
187
- }, /*#__PURE__*/_react.default.createElement("input", _extends({
179
+ }, /*#__PURE__*/React.createElement("input", _extends({
188
180
  className: "bordered",
189
181
  type: "number"
190
182
  }, keyHandlers, {
@@ -193,31 +185,31 @@ var CodeEntry = /*#__PURE__*/function (_Component) {
193
185
  ref: function ref(c) {
194
186
  _this2.firstDigit = c;
195
187
  }
196
- })), /*#__PURE__*/_react.default.createElement("input", _extends({
188
+ })), /*#__PURE__*/React.createElement("input", _extends({
197
189
  className: "bordered",
198
190
  type: "number"
199
191
  }, keyHandlers, {
200
192
  value: this.state.code[1],
201
193
  "data-digit": 1
202
- })), /*#__PURE__*/_react.default.createElement("input", _extends({
194
+ })), /*#__PURE__*/React.createElement("input", _extends({
203
195
  className: "bordered",
204
196
  type: "number"
205
197
  }, keyHandlers, {
206
198
  value: this.state.code[2],
207
199
  "data-digit": 2
208
- })), /*#__PURE__*/_react.default.createElement("input", _extends({
200
+ })), /*#__PURE__*/React.createElement("input", _extends({
209
201
  className: "bordered",
210
202
  type: "number"
211
203
  }, keyHandlers, {
212
204
  value: this.state.code[3],
213
205
  "data-digit": 3
214
- })), /*#__PURE__*/_react.default.createElement("input", _extends({
206
+ })), /*#__PURE__*/React.createElement("input", _extends({
215
207
  className: "bordered",
216
208
  type: "number"
217
209
  }, keyHandlers, {
218
210
  value: this.state.code[4],
219
211
  "data-digit": 4
220
- })), /*#__PURE__*/_react.default.createElement("input", _extends({
212
+ })), /*#__PURE__*/React.createElement("input", _extends({
221
213
  className: "bordered",
222
214
  type: "number"
223
215
  }, keyHandlers, {
@@ -230,5 +222,5 @@ var CodeEntry = /*#__PURE__*/function (_Component) {
230
222
  }
231
223
  }]);
232
224
  return CodeEntry;
233
- }(_react.Component);
234
- exports.default = CodeEntry;
225
+ }(Component);
226
+ export { CodeEntry as default };
package/dist/Device.js CHANGED
@@ -1,38 +1,31 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = Device;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _i18n = _interopRequireDefault(require("./i18n"));
9
- var _PlatformIcon = _interopRequireDefault(require("./PlatformIcon.js"));
10
- var _deviceType = _interopRequireDefault(require("./deviceType.js"));
11
- require("./Device.css");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- function Device(props) {
1
+ import React from 'react';
2
+ import i18n from './i18n';
3
+ import PlatformIcon from './PlatformIcon.js';
4
+ import deviceType from './deviceType.js';
5
+ import './Device.css';
6
+ export default function Device(props) {
14
7
  function renderLastSeen() {
15
8
  if (props.device.online) {
16
- return /*#__PURE__*/_react.default.createElement("div", {
9
+ return /*#__PURE__*/React.createElement("div", {
17
10
  className: "last-seen"
18
- }, _i18n.default.t('Online'));
11
+ }, i18n.t('Online'));
19
12
  } else {
20
- return /*#__PURE__*/_react.default.createElement("div", {
13
+ return /*#__PURE__*/React.createElement("div", {
21
14
  className: "last-seen"
22
- }, _i18n.default.t('Last seen {{date, dateRelative}}', {
23
- date: props.device.last_active
15
+ }, i18n.t('Last seen {{date, dateRelative}}', {
16
+ date: new Date(props.device.last_active)
24
17
  }));
25
18
  }
26
19
  }
27
- return /*#__PURE__*/_react.default.createElement("div", {
20
+ return /*#__PURE__*/React.createElement("div", {
28
21
  style: props.style,
29
22
  className: "Device ".concat(props.device.online ? 'online' : '', " ").concat(props.device.connectable ? 'connectable' : '')
30
- }, /*#__PURE__*/_react.default.createElement("div", {
23
+ }, /*#__PURE__*/React.createElement("div", {
31
24
  className: "device-status"
32
- }, /*#__PURE__*/_react.default.createElement(_PlatformIcon.default, {
25
+ }, /*#__PURE__*/React.createElement(PlatformIcon, {
33
26
  platform: props.device.device.platform,
34
27
  className: "platform-icon"
35
- })), /*#__PURE__*/_react.default.createElement("div", {
28
+ })), /*#__PURE__*/React.createElement("div", {
36
29
  className: "details"
37
- }, (0, _deviceType.default)(props.device.device), renderLastSeen()), props.children);
30
+ }, deviceType(props.device.device), renderLastSeen()), props.children);
38
31
  }
@@ -1,15 +1,7 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = PlatformIcon;
7
- var _react = _interopRequireDefault(require("react"));
8
- require("./PlatformIcon.css");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React from 'react';
11
3
  var IconGlobe = function IconGlobe(props) {
12
- return /*#__PURE__*/_react.default.createElement("svg", props, /*#__PURE__*/_react.default.createElement("path", {
4
+ return /*#__PURE__*/React.createElement("svg", props, /*#__PURE__*/React.createElement("path", {
13
5
  d: "M14.917 14.492a1.672 1.672 0 0 0-1.584-1.159H12.5v-2.5a.833.833 0 0 0-.833-.833h-5V8.333h1.666a.833.833 0 0 0 .834-.833V5.833h1.666A1.667 1.667 0 0 0 12.5 4.167v-.342a6.654 6.654 0 0 1 2.417 10.667Zm-5.75 2.116A6.657 6.657 0 0 1 3.333 10c0-.517.067-1.017.175-1.492L7.5 12.5v.833A1.667 1.667 0 0 0 9.167 15M10 1.667a8.333 8.333 0 1 0 0 16.666 8.333 8.333 0 0 0 0-16.666Z",
14
6
  fill: "currentColor"
15
7
  }));
@@ -20,7 +12,7 @@ IconGlobe.defaultProps = {
20
12
  xmlns: "http://www.w3.org/2000/svg"
21
13
  };
22
14
  var IconApple = function IconApple(props) {
23
- return /*#__PURE__*/_react.default.createElement("svg", props, /*#__PURE__*/_react.default.createElement("path", {
15
+ return /*#__PURE__*/React.createElement("svg", props, /*#__PURE__*/React.createElement("path", {
24
16
  d: "M14.208 16.9c-.816.792-1.708.667-2.566.292-.909-.384-1.742-.4-2.7 0-1.2.516-1.834.366-2.55-.292-4.067-4.192-3.467-10.575 1.15-10.808 1.125.058 1.908.616 2.566.666.984-.2 1.925-.775 2.975-.7 1.259.1 2.209.6 2.834 1.5-2.6 1.559-1.984 4.984.4 5.942-.475 1.25-1.092 2.492-2.117 3.408l.008-.008ZM10.025 6.042C9.9 4.183 11.408 2.65 13.142 2.5c.241 2.15-1.95 3.75-3.117 3.542Z",
25
17
  fill: "currentColor"
26
18
  }));
@@ -31,7 +23,7 @@ IconApple.defaultProps = {
31
23
  xmlns: "http://www.w3.org/2000/svg"
32
24
  };
33
25
  var IconAndroid = function IconAndroid(props) {
34
- return /*#__PURE__*/_react.default.createElement("svg", props, /*#__PURE__*/_react.default.createElement("path", {
26
+ return /*#__PURE__*/React.createElement("svg", props, /*#__PURE__*/React.createElement("path", {
35
27
  d: "M.833 15a9.03 9.03 0 0 1 1.365-4.104 8.67 8.67 0 0 1 3.135-2.98L3.792 5.25a.45.45 0 0 1-.063-.396.501.501 0 0 1 .27-.312.439.439 0 0 1 .376-.042c.139.042.25.125.333.25L6.25 7.417a9.616 9.616 0 0 1 3.75-.75c1.306 0 2.556.25 3.75.75l1.542-2.667a.597.597 0 0 1 .333-.25.439.439 0 0 1 .375.042c.139.07.23.173.27.312a.45.45 0 0 1-.062.396l-1.541 2.667a8.661 8.661 0 0 1 3.135 2.979A9.044 9.044 0 0 1 19.167 15H.833Zm5-2.292c.292 0 .539-.1.74-.302.202-.202.302-.448.302-.74 0-.291-.1-.538-.303-.74a1.002 1.002 0 0 0-.739-.301c-.291 0-.538.1-.74.303a1.003 1.003 0 0 0-.301.739c0 .291.1.538.302.74.202.201.448.302.74.301Zm8.334 0c.291 0 .538-.1.74-.302.201-.202.302-.448.301-.74 0-.291-.1-.538-.302-.74a1.003 1.003 0 0 0-.74-.301c-.291 0-.538.1-.74.303a1.003 1.003 0 0 0-.301.739c0 .291.1.538.302.74.202.201.449.302.74.301Z",
36
28
  fill: "currentColor"
37
29
  }));
@@ -42,7 +34,7 @@ IconAndroid.defaultProps = {
42
34
  xmlns: "http://www.w3.org/2000/svg"
43
35
  };
44
36
  var IconWindows = function IconWindows(props) {
45
- return /*#__PURE__*/_react.default.createElement("svg", props, /*#__PURE__*/_react.default.createElement("path", {
37
+ return /*#__PURE__*/React.createElement("svg", props, /*#__PURE__*/React.createElement("path", {
46
38
  d: "M5.216 8.219 16.28 6.695v10.69H5.214V8.22l.002-.002Zm0 19.563 11.065 1.525v-10.56H5.214l.002 9.035Zm12.282 1.687L32.216 31.5V18.747H17.498v10.722Zm0-22.938v10.854h14.718V4.5L17.498 6.531Z",
47
39
  fill: "currentColor"
48
40
  }));
@@ -53,17 +45,17 @@ IconWindows.defaultProps = {
53
45
  xmlns: "http://www.w3.org/2000/svg"
54
46
  };
55
47
  var IconDefault = function IconDefault(props) {
56
- return /*#__PURE__*/_react.default.createElement("svg", props, /*#__PURE__*/_react.default.createElement("path", {
48
+ return /*#__PURE__*/React.createElement("svg", props, /*#__PURE__*/React.createElement("path", {
57
49
  style: {
58
50
  fill: "#020202"
59
51
  },
60
52
  d: "M206.759 332.99H39.225c-3.894 0-7.065-3.173-7.065-7.067V53.353c0-3.893 3.172-7.065 7.065-7.065h401.631c3.895 0 7.065 3.172 7.065 7.065v59.696c11.763 1.389 22.785 5.244 32.159 11.581V53.353c0-21.63-17.602-39.225-39.225-39.225H39.225C17.602 14.128 0 31.722 0 53.353v272.569c0 21.631 17.602 39.227 39.225 39.227h134.62v52.581h-21.229c-13.316 0-24.12 10.796-24.12 24.12 0 13.324 10.804 24.12 24.12 24.12h67.71c-8.463-11.902-13.566-26.35-13.566-42.037V332.99z"
61
- }), /*#__PURE__*/_react.default.createElement("path", {
53
+ }), /*#__PURE__*/React.createElement("path", {
62
54
  style: {
63
55
  fill: "#020202"
64
56
  },
65
57
  d: "M341.739 441.645v-34.742h-70.662V184.999c0-4.681 3.8-8.489 8.479-8.489h159.887c4.679 0 8.478 3.808 8.478 8.489v68.676h12.046c7.364 0 14.179 2.127 20.113 5.597v-74.273c0-22.417-18.23-40.648-40.638-40.648H279.556c-22.407 0-40.638 18.231-40.638 40.648v238.933c0 22.417 18.23 40.647 40.638 40.647h69.438c-4.428-6.359-7.255-15.22-7.255-22.934z"
66
- }), /*#__PURE__*/_react.default.createElement("path", {
58
+ }), /*#__PURE__*/React.createElement("path", {
67
59
  style: {
68
60
  fill: "#020202"
69
61
  },
@@ -75,6 +67,7 @@ IconDefault.defaultProps = {
75
67
  viewBox: "0 0 480.097 480.097",
76
68
  xmlSpace: "preserve"
77
69
  };
70
+ import './PlatformIcon.css';
78
71
  function icon(platform) {
79
72
  switch (platform) {
80
73
  case 'web':
@@ -91,9 +84,9 @@ function icon(platform) {
91
84
  return IconDefault;
92
85
  }
93
86
  }
94
- function PlatformIcon(props) {
87
+ export default function PlatformIcon(props) {
95
88
  var Icon = icon(props.platform);
96
- return /*#__PURE__*/_react.default.createElement(Icon, _extends({
89
+ return /*#__PURE__*/React.createElement(Icon, _extends({
97
90
  fill: "currentColor"
98
91
  }, props, {
99
92
  className: "PlatformIcon ".concat(props.className || '')
package/dist/Session.js CHANGED
@@ -1,46 +1,39 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = Session;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _deviceType = _interopRequireDefault(require("./deviceType.js"));
9
- var _Stopwatch = _interopRequireDefault(require("./Stopwatch.js"));
10
- var _i18n = _interopRequireDefault(require("./i18n"));
11
- var _reactI18next = require("react-i18next");
12
- require("./Session.css");
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
- function Session(props) {
1
+ import React from 'react';
2
+ import deviceType from './deviceType.js';
3
+ import Stopwatch from './Stopwatch.js';
4
+ import i18n from './i18n';
5
+ import { Trans } from 'react-i18next';
6
+ import './Session.css';
7
+ export default function Session(props) {
15
8
  function openRecording() {
16
9
  if (props.openRecording) props.openRecording(props.session);
17
10
  }
18
- return /*#__PURE__*/_react.default.createElement("div", {
11
+ return /*#__PURE__*/React.createElement("div", {
19
12
  style: props.style,
20
13
  onClick: props.onClick,
21
14
  className: "Session ".concat(props.className || '')
22
- }, /*#__PURE__*/_react.default.createElement("div", {
15
+ }, /*#__PURE__*/React.createElement("div", {
23
16
  className: "details"
24
- }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactI18next.Trans, {
25
- i18n: _i18n.default
26
- }, /*#__PURE__*/_react.default.createElement("span", {
17
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Trans, {
18
+ i18n: i18n
19
+ }, /*#__PURE__*/React.createElement("span", {
27
20
  className: "device-prefix"
28
21
  }, "Connected to "), {
29
- deviceType: (0, _deviceType.default)(props.session.device)
30
- })), /*#__PURE__*/_react.default.createElement("div", {
22
+ deviceType: deviceType(props.session.device)
23
+ })), /*#__PURE__*/React.createElement("div", {
31
24
  className: "subdetails"
32
- }, /*#__PURE__*/_react.default.createElement("div", {
25
+ }, /*#__PURE__*/React.createElement("div", {
33
26
  className: "activated"
34
- }, _i18n.default.t('{{date, dateRelative}}', {
35
- date: props.session.activated
36
- })), props.session.state === 'ended' && props.session.recorded ? /*#__PURE__*/_react.default.createElement("div", {
27
+ }, i18n.t('{{date, dateRelative}}', {
28
+ date: new Date(props.session.activated)
29
+ })), props.session.state === 'ended' && props.session.recorded ? /*#__PURE__*/React.createElement("div", {
37
30
  className: "recorded",
38
31
  onClick: openRecording
39
- }, _i18n.default.t('Recorded')) : null)), props.session.state === 'ended' ? /*#__PURE__*/_react.default.createElement(_Stopwatch.default, {
32
+ }, i18n.t('Recorded')) : null)), props.session.state === 'ended' ? /*#__PURE__*/React.createElement(Stopwatch, {
40
33
  className: "duration",
41
- start: props.session.activated,
42
- end: props.session.ended || new Date()
43
- }) : /*#__PURE__*/_react.default.createElement("div", {
34
+ start: new Date(props.session.activated),
35
+ end: new Date(props.session.ended || Date.now())
36
+ }) : /*#__PURE__*/React.createElement("div", {
44
37
  className: "active"
45
- }, _i18n.default.t('Active')), props.children);
38
+ }, i18n.t('Active')), props.children);
46
39
  }
@@ -1,17 +1,10 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = SmartConnectButton;
7
- var _react = _interopRequireDefault(require("react"));
8
- require("./SmartConnectButton.css");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function SmartConnectButton(props) {
1
+ import React from 'react';
2
+ import './SmartConnectButton.css';
3
+ export default function SmartConnectButton(props) {
11
4
  function onClick() {
12
5
  if (props.device.connectable && props.onClick) props.onClick(props.device);
13
6
  }
14
- return /*#__PURE__*/_react.default.createElement("div", {
7
+ return /*#__PURE__*/React.createElement("div", {
15
8
  className: "SmartConnectButton ".concat(props.device.online ? 'online' : '', " ").concat(props.device.connectable ? 'connectable' : ''),
16
9
  onClick: onClick
17
10
  }, props.label || 'Connect');
package/dist/Stopwatch.js CHANGED
@@ -1,19 +1,15 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = Stopwatch;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _moment = _interopRequireDefault(require("moment"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function Stopwatch(props) {
11
- var start = (0, _moment.default)(props.start || 0);
12
- var end = (0, _moment.default)(props.end || Date.now());
13
- var ms = (0, _moment.default)(end).diff(start);
14
- var delta = _moment.default.duration(ms);
15
- return /*#__PURE__*/_react.default.createElement("div", {
1
+ import React from 'react';
2
+ import { differenceInMilliseconds, intervalToDuration, format } from 'date-fns';
3
+ export default function Stopwatch(props) {
4
+ var start = props.start || new Date(0);
5
+ var end = props.end || new Date();
6
+ var ms = differenceInMilliseconds(end, start);
7
+ var duration = intervalToDuration({
8
+ start: start,
9
+ end: end
10
+ });
11
+ return /*#__PURE__*/React.createElement("div", {
16
12
  style: props.style,
17
13
  className: "Stopwatch ".concat(props.className || '')
18
- }, delta.hours() > 0 ? /*#__PURE__*/_react.default.createElement("span", null, delta.hours(), /*#__PURE__*/_react.default.createElement("span", null, ":")) : null, /*#__PURE__*/_react.default.createElement("span", null, _moment.default.utc(ms).format('mm:ss')));
14
+ }, duration.hours > 0 ? /*#__PURE__*/React.createElement("span", null, duration.hours, /*#__PURE__*/React.createElement("span", null, ":")) : null, /*#__PURE__*/React.createElement("span", null, format(new Date(ms), 'mm:ss')));
19
15
  }
package/dist/UserIcon.js CHANGED
@@ -1,13 +1,6 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = UserIcon;
7
- var _react = _interopRequireDefault(require("react"));
8
- require("./UserIcon.css");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function UserIcon(props) {
1
+ import React from 'react';
2
+ import './UserIcon.css';
3
+ export default function UserIcon(props) {
11
4
  function initials() {
12
5
  if (!props.user) return '';
13
6
  if (!props.user.name) return '';
@@ -17,12 +10,12 @@ function UserIcon(props) {
17
10
  }).join('').substr(0, 2);
18
11
  }
19
12
  if (!props.user) return null;
20
- return /*#__PURE__*/_react.default.createElement("div", {
13
+ return /*#__PURE__*/React.createElement("div", {
21
14
  className: "UserIcon ".concat(props.className || ''),
22
15
  title: props.user.name || null,
23
16
  style: {
24
17
  backgroundImage: props.user.picture ? "url(".concat(props.user.picture || '', ")") : undefined,
25
18
  backgroundColor: props.user.colour
26
19
  }
27
- }, /*#__PURE__*/_react.default.createElement("span", null, initials()));
20
+ }, /*#__PURE__*/React.createElement("span", null, initials()));
28
21
  }
@@ -1,25 +1,18 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = deviceType;
7
- var _uaParserJs = _interopRequireDefault(require("ua-parser-js"));
8
- var _i18n = _interopRequireDefault(require("./i18n"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function deviceType(_ref) {
1
+ import parser from 'ua-parser-js';
2
+ import i18n from './i18n';
3
+ export default function deviceType(_ref) {
11
4
  var platform = _ref.platform,
12
5
  device = _ref.device;
13
6
  var translateDevice = function translateDevice(device) {
14
- return _i18n.default.t('{{device}} Device', {
7
+ return i18n.t('{{device}} Device', {
15
8
  device: device
16
9
  });
17
10
  };
18
11
  switch (platform) {
19
12
  case 'web':
20
13
  {
21
- var ua = (0, _uaParserJs.default)(device);
22
- return _i18n.default.t('{{browser}} on {{os}}', {
14
+ var ua = parser(device);
15
+ return i18n.t('{{browser}} on {{os}}', {
23
16
  browser: ua.browser.name,
24
17
  os: ua.os.name
25
18
  });
package/dist/i18n.js CHANGED
@@ -1,58 +1,120 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _i18next = require("i18next");
8
- var _reactI18next = require("react-i18next");
9
- var _moment = _interopRequireDefault(require("moment"));
10
- require("moment/locale/es");
11
- require("moment/locale/fr");
12
- var _translation = _interopRequireDefault(require("./locales/en-us/translation.json"));
13
- var _translation2 = _interopRequireDefault(require("./locales/es/translation.json"));
14
- var _translation3 = _interopRequireDefault(require("./locales/fr/translation.json"));
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1
+ var _dateLocales, _resources;
2
+ 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; }
3
+ import { createInstance } from 'i18next';
4
+ import { initReactI18next } from 'react-i18next';
5
+ import { formatDistanceToNow } from 'date-fns';
6
+ import { enUS, ar, cs, da, de, es, et, fi, fr, hi, it, ja, ko, lt, ms, nl, pl, pt, ro, ru, sk, sl, sv, th, uk, vi, zhCN } from 'date-fns/locale';
7
+ import localeEnUS from './locales/en-us/translation.json';
8
+ import localeAr from './locales/ar/translation.json';
9
+ import localeCs from './locales/cs/translation.json';
10
+ import localeDa from './locales/da/translation.json';
11
+ import localeDe from './locales/de/translation.json';
12
+ import localeEs from './locales/es/translation.json';
13
+ import localeEt from './locales/et/translation.json';
14
+ import localeFi from './locales/fi/translation.json';
15
+ import localeFr from './locales/fr/translation.json';
16
+ import localeHi from './locales/hi/translation.json';
17
+ import localeIt from './locales/it/translation.json';
18
+ import localeJa from './locales/ja/translation.json';
19
+ import localeKk from './locales/kk/translation.json';
20
+ import localeKo from './locales/ko/translation.json';
21
+ import localeLt from './locales/lt/translation.json';
22
+ import localeMr from './locales/mr/translation.json';
23
+ import localeMs from './locales/ms/translation.json';
24
+ import localeNl from './locales/nl/translation.json';
25
+ import localePl from './locales/pl/translation.json';
26
+ import localePt from './locales/pt/translation.json';
27
+ import localeRo from './locales/ro/translation.json';
28
+ import localeRu from './locales/ru/translation.json';
29
+ import localeSk from './locales/sk/translation.json';
30
+ import localeSl from './locales/sl/translation.json';
31
+ import localeSv from './locales/sv/translation.json';
32
+ import localeTh from './locales/th/translation.json';
33
+ import localeUk from './locales/uk/translation.json';
34
+ import localeVi from './locales/vi/translation.json';
35
+ import localeZh from './locales/zh/translation.json';
16
36
  var englishUS = 'en-us';
17
- var spanish = 'es';
18
- var french = 'fr';
19
- var SUPPORTED_LOCALES = [englishUS, spanish, french];
20
- var i18n = (0, _i18next.createInstance)({
37
+ var dateLocales = (_dateLocales = {}, _defineProperty(_dateLocales, englishUS, enUS), _defineProperty(_dateLocales, "ar", ar), _defineProperty(_dateLocales, "cs", cs), _defineProperty(_dateLocales, "da", da), _defineProperty(_dateLocales, "de", de), _defineProperty(_dateLocales, "es", es), _defineProperty(_dateLocales, "et", et), _defineProperty(_dateLocales, "fi", fi), _defineProperty(_dateLocales, "fr", fr), _defineProperty(_dateLocales, "hi", hi), _defineProperty(_dateLocales, "it", it), _defineProperty(_dateLocales, "ja", ja), _defineProperty(_dateLocales, "ko", ko), _defineProperty(_dateLocales, "lt", lt), _defineProperty(_dateLocales, "ms", ms), _defineProperty(_dateLocales, "nl", nl), _defineProperty(_dateLocales, "pl", pl), _defineProperty(_dateLocales, "pt", pt), _defineProperty(_dateLocales, "ro", ro), _defineProperty(_dateLocales, "ru", ru), _defineProperty(_dateLocales, "sk", sk), _defineProperty(_dateLocales, "sl", sl), _defineProperty(_dateLocales, "sv", sv), _defineProperty(_dateLocales, "th", th), _defineProperty(_dateLocales, "uk", uk), _defineProperty(_dateLocales, "vi", vi), _defineProperty(_dateLocales, "zh", zhCN), _dateLocales);
38
+ var i18n = createInstance({
21
39
  fallbackLng: englishUS,
22
40
  debug: process.env.NODE_ENV === 'development',
23
41
  lowerCaseLng: true,
24
42
  interpolation: {
25
43
  escapeValue: false,
26
44
  // not needed for react as it escapes by default
27
- format: function format(value, _format) {
28
- if (_format === 'dateRelative' && (0, _moment.default)(value).isValid()) {
29
- return (0, _moment.default)(value).fromNow();
45
+ format: function format(value, _format, lng) {
46
+ if (_format === 'dateRelative' && value instanceof Date) {
47
+ var locale = dateLocales[lng] || enUS;
48
+ return formatDistanceToNow(value, {
49
+ addSuffix: true,
50
+ locale: locale
51
+ });
30
52
  }
31
53
  }
32
54
  },
33
- resources: {
34
- 'en-us': {
35
- translation: _translation.default
36
- },
37
- es: {
38
- translation: _translation2.default
39
- },
40
- fr: {
41
- translation: _translation3.default
42
- }
43
- }
44
- });
45
- i18n.use(_reactI18next.initReactI18next).init();
46
-
47
- // Default to English on load
48
- _moment.default.locale(englishUS);
49
- i18n.on('languageChanged', function (language) {
50
- // Fall back to US English if we don't currently support the selected language
51
- if (SUPPORTED_LOCALES.indexOf(language) === -1) {
52
- _moment.default.locale(englishUS);
53
- return;
54
- }
55
- _moment.default.locale(language);
55
+ detection: {
56
+ caches: [],
57
+ order: []
58
+ },
59
+ resources: (_resources = {}, _defineProperty(_resources, englishUS, {
60
+ translation: localeEnUS
61
+ }), _defineProperty(_resources, "ar", {
62
+ translation: localeAr
63
+ }), _defineProperty(_resources, "cs", {
64
+ translation: localeCs
65
+ }), _defineProperty(_resources, "da", {
66
+ translation: localeDa
67
+ }), _defineProperty(_resources, "de", {
68
+ translation: localeDe
69
+ }), _defineProperty(_resources, "es", {
70
+ translation: localeEs
71
+ }), _defineProperty(_resources, "et", {
72
+ translation: localeEt
73
+ }), _defineProperty(_resources, "fi", {
74
+ translation: localeFi
75
+ }), _defineProperty(_resources, "fr", {
76
+ translation: localeFr
77
+ }), _defineProperty(_resources, "hi", {
78
+ translation: localeHi
79
+ }), _defineProperty(_resources, "it", {
80
+ translation: localeIt
81
+ }), _defineProperty(_resources, "ja", {
82
+ translation: localeJa
83
+ }), _defineProperty(_resources, "kk", {
84
+ translation: localeKk
85
+ }), _defineProperty(_resources, "ko", {
86
+ translation: localeKo
87
+ }), _defineProperty(_resources, "lt", {
88
+ translation: localeLt
89
+ }), _defineProperty(_resources, "mr", {
90
+ translation: localeMr
91
+ }), _defineProperty(_resources, "ms", {
92
+ translation: localeMs
93
+ }), _defineProperty(_resources, "nl", {
94
+ translation: localeNl
95
+ }), _defineProperty(_resources, "pl", {
96
+ translation: localePl
97
+ }), _defineProperty(_resources, "pt", {
98
+ translation: localePt
99
+ }), _defineProperty(_resources, "ro", {
100
+ translation: localeRo
101
+ }), _defineProperty(_resources, "ru", {
102
+ translation: localeRu
103
+ }), _defineProperty(_resources, "sk", {
104
+ translation: localeSk
105
+ }), _defineProperty(_resources, "sl", {
106
+ translation: localeSl
107
+ }), _defineProperty(_resources, "sv", {
108
+ translation: localeSv
109
+ }), _defineProperty(_resources, "th", {
110
+ translation: localeTh
111
+ }), _defineProperty(_resources, "uk", {
112
+ translation: localeUk
113
+ }), _defineProperty(_resources, "vi", {
114
+ translation: localeVi
115
+ }), _defineProperty(_resources, "zh", {
116
+ translation: localeZh
117
+ }), _resources)
56
118
  });
57
- var _default = i18n;
58
- exports.default = _default;
119
+ i18n.use(initReactI18next).init();
120
+ export default i18n;
package/dist/index.js CHANGED
@@ -1,48 +1,7 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "CodeEntry", {
7
- enumerable: true,
8
- get: function get() {
9
- return _CodeEntry.default;
10
- }
11
- });
12
- Object.defineProperty(exports, "Device", {
13
- enumerable: true,
14
- get: function get() {
15
- return _Device.default;
16
- }
17
- });
18
- Object.defineProperty(exports, "PlatformIcon", {
19
- enumerable: true,
20
- get: function get() {
21
- return _PlatformIcon.default;
22
- }
23
- });
24
- Object.defineProperty(exports, "Session", {
25
- enumerable: true,
26
- get: function get() {
27
- return _Session.default;
28
- }
29
- });
30
- Object.defineProperty(exports, "SmartConnectButton", {
31
- enumerable: true,
32
- get: function get() {
33
- return _SmartConnectButton.default;
34
- }
35
- });
36
- Object.defineProperty(exports, "i18n", {
37
- enumerable: true,
38
- get: function get() {
39
- return _i18n.default;
40
- }
41
- });
42
- var _CodeEntry = _interopRequireDefault(require("./CodeEntry"));
43
- var _PlatformIcon = _interopRequireDefault(require("./PlatformIcon"));
44
- var _Device = _interopRequireDefault(require("./Device"));
45
- var _Session = _interopRequireDefault(require("./Session"));
46
- var _SmartConnectButton = _interopRequireDefault(require("./SmartConnectButton"));
47
- var _i18n = _interopRequireDefault(require("./i18n"));
48
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1
+ import CodeEntry from './CodeEntry';
2
+ import PlatformIcon from './PlatformIcon';
3
+ import Device from './Device';
4
+ import Session from './Session';
5
+ import SmartConnectButton from './SmartConnectButton';
6
+ import i18n from './i18n';
7
+ export { CodeEntry, PlatformIcon, Device, SmartConnectButton, Session, i18n };
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "متصل",
3
+ "Last seen {{date, dateRelative}}": "آخر ظهور {{date, dateRelative}}",
4
+ "{{device}} Device": "جهاز {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} على {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>متصل بـ </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "مسجل",
9
+ "Active": "نشط"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Naposledy viděn {{date, dateRelative}}",
4
+ "{{device}} Device": "Zařízení {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} na {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Připojeno k </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Zaznamenáno",
9
+ "Active": "Aktivní"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Sidst set {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}}-enhed",
5
+ "{{browser}} on {{os}}": "{{browser}} på {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Forbundet til </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Optaget",
9
+ "Active": "Aktiv"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Zuletzt gesehen {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}}-Gerät",
5
+ "{{browser}} on {{os}}": "{{browser}} auf {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Verbunden mit </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Aufgezeichnet",
9
+ "Active": "Aktiv"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Võrgus",
3
+ "Last seen {{date, dateRelative}}": "Viimati nähtud {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}} seade",
5
+ "{{browser}} on {{os}}": "{{browser}} operatsioonisüsteemil {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Ühendatud </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Salvestatud",
9
+ "Active": "Aktiivne"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Paikalla",
3
+ "Last seen {{date, dateRelative}}": "Nähty viimeksi {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}}-laite",
5
+ "{{browser}} on {{os}}": "{{browser}} käyttöjärjestelmässä {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Yhdistetty laitteeseen </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Tallennettu",
9
+ "Active": "Aktiivinen"
10
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "Online": "En ligne",
3
- "Last seen {{date, dateRelative}}": "Vu {{date, dateRelative}}",
3
+ "Last seen {{date, dateRelative}}": "Dernière connexion {{date, dateRelative}}",
4
4
  "{{device}} Device": "Appareil {{device}}",
5
5
  "{{browser}} on {{os}}": "{{browser}} sur {{os}}",
6
6
  "<0>Connected to </0>{{deviceType}}": "<0>Connecté à </0>{{deviceType}}",
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "ऑनलाइन",
3
+ "Last seen {{date, dateRelative}}": "आखिरी बार देखा गया {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}} उपकरण",
5
+ "{{browser}} on {{os}}": "{{os}} पर {{browser}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>से जुड़ा </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "रिकॉर्ड किया गया",
9
+ "Active": "सक्रिय"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Visto l'ultima volta {{date, dateRelative}}",
4
+ "{{device}} Device": "Dispositivo {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} su {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Connesso a </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Registrato",
9
+ "Active": "Attivo"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "オンライン",
3
+ "Last seen {{date, dateRelative}}": "最後のオンライン {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}}デバイス",
5
+ "{{browser}} on {{os}}": "{{os}}上の{{browser}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>接続先:</0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "記録済み",
9
+ "Active": "セッション中"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Желіде",
3
+ "Last seen {{date, dateRelative}}": "Соңғы рет көрінген {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}} құрылғысы",
5
+ "{{browser}} on {{os}}": "{{os}} жүйесіндегі {{browser}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Қосылған: </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Жазылған",
9
+ "Active": "Белсенді"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "온라인",
3
+ "Last seen {{date, dateRelative}}": "마지막 온라인 {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}} 기기",
5
+ "{{browser}} on {{os}}": "{{os}}의 {{browser}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>연결됨: </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "기록됨",
9
+ "Active": "세션 진행 중"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Prisijungęs",
3
+ "Last seen {{date, dateRelative}}": "Paskutinį kartą matytas {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}} įrenginys",
5
+ "{{browser}} on {{os}}": "{{browser}} sistemoje {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Prisijungta prie </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Įrašyta",
9
+ "Active": "Aktyvus"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "ऑनलाइन",
3
+ "Last seen {{date, dateRelative}}": "शेवटचे पाहिले {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}} डिव्हाइस",
5
+ "{{browser}} on {{os}}": "{{os}} वर {{browser}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>जोडलेले आहे </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "रेकॉर्ड केलेले",
9
+ "Active": "सक्रिय"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Dalam talian",
3
+ "Last seen {{date, dateRelative}}": "Terakhir dilihat {{date, dateRelative}}",
4
+ "{{device}} Device": "Peranti {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} pada {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Disambungkan ke </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Direkodkan",
9
+ "Active": "Aktif"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Laatst gezien {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}}-apparaat",
5
+ "{{browser}} on {{os}}": "{{browser}} op {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Verbonden met </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Opgenomen",
9
+ "Active": "Actief"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Ostatnio widziany {{date, dateRelative}}",
4
+ "{{device}} Device": "Urządzenie {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} na {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Połączono z </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Nagrany",
9
+ "Active": "Aktywny"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Visto pela última vez {{date, dateRelative}}",
4
+ "{{device}} Device": "Dispositivo {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} em {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Conectado a </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Gravado",
9
+ "Active": "Ativo"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Văzut ultima dată {{date, dateRelative}}",
4
+ "{{device}} Device": "Dispozitiv {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} pe {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Conectat la </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Înregistrat",
9
+ "Active": "Activ"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "В сети",
3
+ "Last seen {{date, dateRelative}}": "Последний раз был в сети {{date, dateRelative}}",
4
+ "{{device}} Device": "Устройство {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} на {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Подключено к </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Записано",
9
+ "Active": "Активно"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Naposledy videný {{date, dateRelative}}",
4
+ "{{device}} Device": "Zariadenie {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} na {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Pripojené k </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Zaznamenané",
9
+ "Active": "Aktívne"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Na spletu",
3
+ "Last seen {{date, dateRelative}}": "Nazadnje viden {{date, dateRelative}}",
4
+ "{{device}} Device": "Naprava {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} na {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Povezan z </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Posneto",
9
+ "Active": "Aktivno"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Online",
3
+ "Last seen {{date, dateRelative}}": "Senast sedd {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}}-enhet",
5
+ "{{browser}} on {{os}}": "{{browser}} på {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Ansluten till </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Inspelad",
9
+ "Active": "Aktiv"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "ออนไลน์",
3
+ "Last seen {{date, dateRelative}}": "เห็นครั้งล่าสุด {{date, dateRelative}}",
4
+ "{{device}} Device": "อุปกรณ์ {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} บน {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>เชื่อมต่อกับ </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "บันทึกแล้ว",
9
+ "Active": "กำลังดำเนินการ"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "В мережі",
3
+ "Last seen {{date, dateRelative}}": "Останній раз був в мережі {{date, dateRelative}}",
4
+ "{{device}} Device": "Пристрій {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} на {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Підключено до </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Записано",
9
+ "Active": "Активний"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "Trực tuyến",
3
+ "Last seen {{date, dateRelative}}": "Lần cuối xuất hiện {{date, dateRelative}}",
4
+ "{{device}} Device": "Thiết bị {{device}}",
5
+ "{{browser}} on {{os}}": "{{browser}} trên {{os}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>Đã kết nối với </0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "Đã ghi",
9
+ "Active": "Đang diễn ra"
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "Online": "在线",
3
+ "Last seen {{date, dateRelative}}": "最后在线时间 {{date, dateRelative}}",
4
+ "{{device}} Device": "{{device}}设备",
5
+ "{{browser}} on {{os}}": "{{os}}上的{{browser}}",
6
+ "<0>Connected to </0>{{deviceType}}": "<0>已连接到</0>{{deviceType}}",
7
+ "{{date, dateRelative}}": "{{date, dateRelative}}",
8
+ "Recorded": "已记录",
9
+ "Active": "共享中"
10
+ }
@@ -1,8 +1,40 @@
1
1
  module.exports = {
2
- locales: ['en-us', 'es', 'fr'],
2
+ locales: [
3
+ 'en-us',
4
+ 'ar',
5
+ 'cs',
6
+ 'da',
7
+ 'de',
8
+ 'es',
9
+ 'et',
10
+ 'fi',
11
+ 'fr',
12
+ 'hi',
13
+ 'it',
14
+ 'ja',
15
+ 'kk',
16
+ 'ko',
17
+ 'lt',
18
+ 'mr',
19
+ 'ms',
20
+ 'nl',
21
+ 'pl',
22
+ 'pt',
23
+ 'ro',
24
+ 'ru',
25
+ 'sk',
26
+ 'sl',
27
+ 'sv',
28
+ 'th',
29
+ 'uk',
30
+ 'vi',
31
+ 'zh'
32
+ ],
3
33
  namespaceSeparator: false,
4
34
  keySeparator: false,
5
- useKeysAsDefaultValue: true,
35
+ defaultValue: function (locale, namespace, key, value) {
36
+ return key
37
+ },
6
38
  verbose: true,
7
39
  output: 'src/locales/$LOCALE/$NAMESPACE.json',
8
40
  lexers: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cobrowse-agent-ui",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "scripts": {
5
5
  "start": "babel src --out-dir dist --watch --copy-files",
6
6
  "build": "rm -rf dist && babel src --out-dir dist --copy-files",
@@ -10,14 +10,13 @@
10
10
  },
11
11
  "main": "dist/index.js",
12
12
  "dependencies": {
13
- "i18next": "^21.10.0",
14
- "i18next-resources-to-backend": "^1.0.0",
15
- "moment": "^2.29.4",
16
- "react-i18next": "^11.18.6",
13
+ "date-fns": "^4.1.0",
14
+ "i18next": "^24.2.2",
15
+ "react-i18next": "^15.4.0",
17
16
  "ua-parser-js": "^1.0.33"
18
17
  },
19
18
  "peerDependencies": {
20
- "react": "^18.2.0"
19
+ "react": "^19.0.0"
21
20
  },
22
21
  "browserslist": [
23
22
  ">0.2%",
@@ -34,7 +33,7 @@
34
33
  "babel-plugin-inline-react-svg": "^2.0.1",
35
34
  "eslint": "^8.23.1",
36
35
  "eslint-plugin-react": "^7.31.8",
37
- "i18next-parser": "^6.5.0",
36
+ "i18next-parser": "^9.3.0",
38
37
  "standard": "^17.0.0"
39
38
  }
40
39
  }