@plusscommunities/pluss-circles-web 1.0.17 → 1.0.19

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.
package/dist/index.cjs.js CHANGED
@@ -21,6 +21,8 @@ var reactBootstrap = require('react-bootstrap');
21
21
  var FontAwesome = require('react-fontawesome');
22
22
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
23
23
  var reactRouter = require('react-router');
24
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
25
+ var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
24
26
 
25
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
28
 
@@ -59,6 +61,7 @@ var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
59
61
  var PlussCore__namespace = /*#__PURE__*/_interopNamespace(PlussCore);
60
62
  var FontAwesome__default = /*#__PURE__*/_interopDefaultLegacy(FontAwesome);
61
63
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
64
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
62
65
 
63
66
  var values = {
64
67
  featureKey: 'circles',
@@ -193,10 +196,10 @@ var circleRemoved = function circleRemoved(circleId) {
193
196
  };
194
197
 
195
198
  var Helper$3 = PlussCore__namespace.Helper,
196
- Session$3 = PlussCore__namespace.Session;
199
+ Session$4 = PlussCore__namespace.Session;
197
200
  var circleActions = {
198
201
  getAll: function getAll(site) {
199
- return Session$3.authedFunction({
202
+ return Session$4.authedFunction({
200
203
  method: 'GET',
201
204
  url: Helper$3.getUrl(values.serviceKey, 'get/all', {
202
205
  site: site
@@ -204,7 +207,7 @@ var circleActions = {
204
207
  });
205
208
  },
206
209
  getFiles: function getFiles(circleId) {
207
- return Session$3.authedFunction({
210
+ return Session$4.authedFunction({
208
211
  method: 'GET',
209
212
  url: Helper$3.getUrl(values.serviceKey, 'get/files', {
210
213
  circleId: circleId
@@ -212,7 +215,7 @@ var circleActions = {
212
215
  });
213
216
  },
214
217
  getImages: function getImages(circleId) {
215
- return Session$3.authedFunction({
218
+ return Session$4.authedFunction({
216
219
  method: 'GET',
217
220
  url: Helper$3.getUrl(values.serviceKey, 'get/images', {
218
221
  circleId: circleId
@@ -220,7 +223,7 @@ var circleActions = {
220
223
  });
221
224
  },
222
225
  add: function add(site, title, image, audience, isPublic) {
223
- return Session$3.authedFunction({
226
+ return Session$4.authedFunction({
224
227
  method: 'POST',
225
228
  url: Helper$3.getUrl(values.serviceKey, 'update/add'),
226
229
  data: {
@@ -233,7 +236,7 @@ var circleActions = {
233
236
  });
234
237
  },
235
238
  edit: function edit(circleId, title, image, audience, isPublic) {
236
- return Session$3.authedFunction({
239
+ return Session$4.authedFunction({
237
240
  method: 'POST',
238
241
  url: Helper$3.getUrl(values.serviceKey, 'update/edit'),
239
242
  data: {
@@ -246,7 +249,7 @@ var circleActions = {
246
249
  });
247
250
  },
248
251
  delete: function _delete(circleId) {
249
- return Session$3.authedFunction({
252
+ return Session$4.authedFunction({
250
253
  method: 'POST',
251
254
  url: Helper$3.getUrl(values.serviceKey, 'update/delete'),
252
255
  data: {
@@ -255,7 +258,7 @@ var circleActions = {
255
258
  });
256
259
  },
257
260
  addAdmin: function addAdmin(circleId, userId) {
258
- return Session$3.authedFunction({
261
+ return Session$4.authedFunction({
259
262
  method: 'POST',
260
263
  url: Helper$3.getUrl(values.serviceKey, 'update/addadmin'),
261
264
  data: {
@@ -265,7 +268,7 @@ var circleActions = {
265
268
  });
266
269
  },
267
270
  removeAdmin: function removeAdmin(circleId, userId) {
268
- return Session$3.authedFunction({
271
+ return Session$4.authedFunction({
269
272
  method: 'POST',
270
273
  url: Helper$3.getUrl(values.serviceKey, 'update/removeadmin'),
271
274
  data: {
@@ -297,7 +300,7 @@ var circleActions = {
297
300
  query.limit = limit;
298
301
  }
299
302
 
300
- return _context.abrupt("return", Session$3.authedFunction({
303
+ return _context.abrupt("return", Session$4.authedFunction({
301
304
  method: 'GET',
302
305
  url: Helper$3.getUrl(values.serviceKey, 'getMessages', query)
303
306
  }));
@@ -322,7 +325,7 @@ var circleActions = {
322
325
  while (1) {
323
326
  switch (_context2.prev = _context2.next) {
324
327
  case 0:
325
- return _context2.abrupt("return", Session$3.authedFunction({
328
+ return _context2.abrupt("return", Session$4.authedFunction({
326
329
  method: 'post',
327
330
  url: Helper$3.getUrl(values.serviceKey, 'sendMessage'),
328
331
  data: {
@@ -347,11 +350,14 @@ var circleActions = {
347
350
  }()
348
351
  };
349
352
 
353
+ var Apis$1 = PlussCore__namespace.Apis;
354
+ var analyticsActions = Apis$1.analyticsActions;
355
+
350
356
  function _createSuper$7(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$7(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
351
357
 
352
358
  function _isNativeReflectConstruct$7() { 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; } }
353
- var Components$3 = PlussCore__namespace.Components,
354
- Session$2 = PlussCore__namespace.Session,
359
+ var Components$4 = PlussCore__namespace.Components,
360
+ Session$3 = PlussCore__namespace.Session,
355
361
  Helper$2 = PlussCore__namespace.Helper;
356
362
 
357
363
  var Circles = /*#__PURE__*/function (_Component) {
@@ -414,13 +420,13 @@ var Circles = /*#__PURE__*/function (_Component) {
414
420
 
415
421
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "canAddNew", function () {
416
422
  var auth = _this.props.auth;
417
- return Session$2.validateAccess(auth.site, values.permission, auth);
423
+ return Session$3.validateAccess(auth.site, values.permission, auth);
418
424
  });
419
425
 
420
426
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onAddNew", function () {
421
427
  var auth = _this.props.auth;
422
428
 
423
- if (Session$2.validateAccess(auth.site, values.permission, auth)) {
429
+ if (Session$3.validateAccess(auth.site, values.permission, auth)) {
424
430
  _this.props.history.push("/".concat(values.featureKey, "/add"));
425
431
  }
426
432
  });
@@ -577,7 +583,7 @@ var Circles = /*#__PURE__*/function (_Component) {
577
583
  value: function validateCircleAdmin(circle, onlyCreator) {
578
584
  var _this4 = this;
579
585
 
580
- if (Session$2.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
586
+ if (Session$3.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
581
587
  return true;
582
588
  }
583
589
 
@@ -601,7 +607,7 @@ var Circles = /*#__PURE__*/function (_Component) {
601
607
  }, /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
602
608
  to: "/".concat(values.featureKey, "/").concat(values.entityKey, "/").concat(circle.Id)
603
609
  }, this.getTitle(circle))), /*#__PURE__*/React__default['default'].createElement("td", null, moment__default['default'](circle.Changed).local().format('D MMM YYYY')), /*#__PURE__*/React__default['default'].createElement("td", null, circle.Audience.map(function (user) {
604
- return /*#__PURE__*/React__default['default'].createElement(Components$3.ProfilePic, {
610
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.ProfilePic, {
605
611
  size: 30,
606
612
  image: user.profilePic,
607
613
  hoverText: user.displayName,
@@ -641,24 +647,24 @@ var Circles = /*#__PURE__*/function (_Component) {
641
647
  }, {
642
648
  key: "renderFilters",
643
649
  value: function renderFilters() {
644
- var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
650
+ var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
645
651
  className: "marginRight-10",
646
652
  onClick: this.openUserFilter,
647
653
  text: "User"
648
654
  });
649
- var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
655
+ var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
650
656
  className: "marginRight-10",
651
657
  onClick: this.openTypeFilter,
652
658
  text: "Type"
653
659
  });
654
660
 
655
661
  if (this.state.selectedUserFilter) {
656
- userFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
662
+ userFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
657
663
  className: "marginRight-10",
658
664
  onClick: this.openUserFilter,
659
665
  rightIcon: "close",
660
666
  rightClick: this.removeUserFilter
661
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
667
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.UserListing, {
662
668
  size: 15,
663
669
  user: this.state.selectedUserFilter,
664
670
  textClass: "tag_text"
@@ -666,7 +672,7 @@ var Circles = /*#__PURE__*/function (_Component) {
666
672
  }
667
673
 
668
674
  if (this.state.selectedTypeFilter) {
669
- typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
675
+ typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
670
676
  className: "marginRight-10",
671
677
  onClick: this.openTypeFilter,
672
678
  rightIcon: "close",
@@ -677,7 +683,7 @@ var Circles = /*#__PURE__*/function (_Component) {
677
683
 
678
684
  return /*#__PURE__*/React__default['default'].createElement("div", {
679
685
  className: "flex flex-center marginTop-20"
680
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
686
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
681
687
  type: "h5",
682
688
  className: "marginRight-20"
683
689
  }, "Filter by"), userFilter, typeFilter);
@@ -691,14 +697,14 @@ var Circles = /*#__PURE__*/function (_Component) {
691
697
  return null;
692
698
  }
693
699
 
694
- return /*#__PURE__*/React__default['default'].createElement(Components$3.Popup, {
700
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.Popup, {
695
701
  title: "Select User",
696
702
  maxWidth: 600,
697
703
  minWidth: 400,
698
704
  minHeight: 400,
699
705
  hasPadding: true,
700
706
  onClose: this.closeUserFilter
701
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.GenericInput, {
707
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.GenericInput, {
702
708
  id: "userSearch",
703
709
  type: "text",
704
710
  label: "Search",
@@ -709,7 +715,7 @@ var Circles = /*#__PURE__*/function (_Component) {
709
715
  },
710
716
  alwaysShowLabel: true
711
717
  }), this.getUsers().map(function (user) {
712
- return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
718
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.UserListing, {
713
719
  key: user.userId,
714
720
  user: user,
715
721
  onClick: function onClick() {
@@ -727,19 +733,19 @@ var Circles = /*#__PURE__*/function (_Component) {
727
733
  return null;
728
734
  }
729
735
 
730
- return /*#__PURE__*/React__default['default'].createElement(Components$3.Popup, {
736
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.Popup, {
731
737
  title: "Select Type",
732
738
  maxWidth: 600,
733
739
  minWidth: 400,
734
740
  hasPadding: true,
735
741
  onClose: this.closeTypeFilter
736
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
742
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
737
743
  onClick: function onClick() {
738
744
  _this7.selectTypeFilter('circle');
739
745
  },
740
746
  text: ___default['default'].capitalize(values.entityName),
741
747
  className: "marginRight-10"
742
- }), /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
748
+ }), /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
743
749
  onClick: function onClick() {
744
750
  _this7.selectTypeFilter('private');
745
751
  },
@@ -751,12 +757,12 @@ var Circles = /*#__PURE__*/function (_Component) {
751
757
  value: function render() {
752
758
  var _this8 = this;
753
759
 
754
- return /*#__PURE__*/React__default['default'].createElement("div", null, this.renderTypeFilterPopup(), this.renderUserFilterPopup(), /*#__PURE__*/React__default['default'].createElement(Components$3.Header, null, this.canAddNew() && /*#__PURE__*/React__default['default'].createElement(Components$3.AddButton, {
760
+ return /*#__PURE__*/React__default['default'].createElement("div", null, this.renderTypeFilterPopup(), this.renderUserFilterPopup(), /*#__PURE__*/React__default['default'].createElement(Components$4.Header, null, this.canAddNew() && /*#__PURE__*/React__default['default'].createElement(Components$4.AddButton, {
755
761
  onClick: this.onAddNew,
756
762
  text: "NEW ".concat(___default['default'].upperCase(values.entityName))
757
763
  })), /*#__PURE__*/React__default['default'].createElement("div", {
758
764
  className: "pageContainer paddingVertical-20 paddingHorizontal-40"
759
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
765
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
760
766
  type: "h1",
761
767
  className: ""
762
768
  }, values.textFeatureTitle), this.renderFilters(), /*#__PURE__*/React__default['default'].createElement(reactBootstrap.Table, {
@@ -783,7 +789,7 @@ var Circles = /*#__PURE__*/function (_Component) {
783
789
  return Circles;
784
790
  }(React.Component);
785
791
 
786
- var mapStateToProps$2 = function mapStateToProps(state) {
792
+ var mapStateToProps$3 = function mapStateToProps(state) {
787
793
  var circles = state[values.reducerKey].circles;
788
794
  var auth = state.auth;
789
795
  return {
@@ -793,17 +799,21 @@ var mapStateToProps$2 = function mapStateToProps(state) {
793
799
  };
794
800
  };
795
801
 
796
- var Circles$1 = reactRedux.connect(mapStateToProps$2, {
802
+ var Circles$1 = reactRedux.connect(mapStateToProps$3, {
797
803
  circlesLoaded: circlesLoaded,
798
804
  circleRemoved: circleRemoved
799
805
  })(Circles);
800
806
 
807
+ function ownKeys$3(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; }
808
+
809
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
810
+
801
811
  function _createSuper$6(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$6(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
802
812
 
803
813
  function _isNativeReflectConstruct$6() { 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; } }
804
814
  var Actions$1 = PlussCore__namespace.Actions,
805
- Components$2 = PlussCore__namespace.Components,
806
- Session$1 = PlussCore__namespace.Session,
815
+ Components$3 = PlussCore__namespace.Components,
816
+ Session$2 = PlussCore__namespace.Session,
807
817
  Apis = PlussCore__namespace.Apis,
808
818
  Colours$2 = PlussCore__namespace.Colours,
809
819
  Helper$1 = PlussCore__namespace.Helper;
@@ -834,6 +844,10 @@ var AddCircle = /*#__PURE__*/function (_Component) {
834
844
  _this.setState({
835
845
  users: ___default['default'].sortBy(res.data.results.Items, function (u) {
836
846
  return (u.displayName || '').toLowerCase();
847
+ }).map(function (u) {
848
+ return _objectSpread$3(_objectSpread$3({}, u), {}, {
849
+ userId: u.userId || u.Id
850
+ });
837
851
  })
838
852
  });
839
853
  }
@@ -1079,7 +1093,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1079
1093
  _createClass__default['default'](AddCircle, [{
1080
1094
  key: "componentDidMount",
1081
1095
  value: function componentDidMount() {
1082
- Session$1.checkLoggedIn(this, this.props.auth);
1096
+ Session$2.checkLoggedIn(this, this.props.auth);
1083
1097
  this.props.addRecentlyCreated(values.entityKey);
1084
1098
  this.getUsers();
1085
1099
  this.checkGetCircle();
@@ -1125,7 +1139,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1125
1139
  key: "renderSuccess",
1126
1140
  value: function renderSuccess() {
1127
1141
  if (!this.state.success) return null;
1128
- return /*#__PURE__*/React__default['default'].createElement(Components$2.SuccessPopup, {
1142
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.SuccessPopup, {
1129
1143
  text: "".concat(___default['default'].capitalize(values.entityName), " has been ").concat(this.state.circleId == null ? 'added' : 'edited'),
1130
1144
  buttons: [{
1131
1145
  type: 'outlined',
@@ -1142,12 +1156,12 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1142
1156
  var _this4 = this;
1143
1157
 
1144
1158
  if (this.state.updating) {
1145
- return /*#__PURE__*/React__default['default'].createElement(Components$2.Button, {
1159
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.Button, {
1146
1160
  buttonType: "secondary"
1147
1161
  }, "Saving...");
1148
1162
  }
1149
1163
 
1150
- return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$2.Button, {
1164
+ return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$3.Button, {
1151
1165
  inline: true,
1152
1166
  buttonType: "tertiary",
1153
1167
  onClick: function onClick() {
@@ -1157,7 +1171,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1157
1171
  style: {
1158
1172
  marginRight: 16
1159
1173
  }
1160
- }, "Cancel"), /*#__PURE__*/React__default['default'].createElement(Components$2.Button, {
1174
+ }, "Cancel"), /*#__PURE__*/React__default['default'].createElement(Components$3.Button, {
1161
1175
  inline: true,
1162
1176
  buttonType: "primary",
1163
1177
  onClick: this.onSave,
@@ -1171,7 +1185,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1171
1185
 
1172
1186
  return /*#__PURE__*/React__default['default'].createElement("div", {
1173
1187
  className: "optionsContent_bottom"
1174
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.RadioButton, {
1188
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.RadioButton, {
1175
1189
  label: "Do you want to make this ".concat(values.entityName, " a public ").concat(values.entityName, "?"),
1176
1190
  isActive: this.state.isPublic,
1177
1191
  options: [{
@@ -1226,7 +1240,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1226
1240
  return null;
1227
1241
  }
1228
1242
 
1229
- return /*#__PURE__*/React__default['default'].createElement(Components$2.OptionsSection, {
1243
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.OptionsSection, {
1230
1244
  options: options,
1231
1245
  selected: this.state.selectedOption,
1232
1246
  selectOption: this.selectOption
@@ -1239,12 +1253,12 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1239
1253
 
1240
1254
  return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("div", {
1241
1255
  className: "padding-60 paddingVertical-40 bottomDivideBorder"
1242
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1256
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1243
1257
  type: "formTitleLarge",
1244
1258
  className: "marginBottom-24"
1245
1259
  }, this.state.circleId == null ? 'New' : 'Edit', " ", ___default['default'].capitalize(values.entityName)), /*#__PURE__*/React__default['default'].createElement("div", {
1246
1260
  className: "flex flex-reverse"
1247
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.ImageInput, {
1261
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.ImageInput, {
1248
1262
  ref: function ref(_ref2) {
1249
1263
  _this6.imageInput = _ref2;
1250
1264
  },
@@ -1256,7 +1270,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1256
1270
  }
1257
1271
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1258
1272
  className: "flex-1"
1259
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
1273
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.GenericInput, {
1260
1274
  id: "title",
1261
1275
  type: "text",
1262
1276
  label: "Title",
@@ -1275,16 +1289,16 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1275
1289
  }
1276
1290
  })))), /*#__PURE__*/React__default['default'].createElement("div", {
1277
1291
  className: "padding-60 paddingVertical-40 bottomDivideBorder"
1278
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1292
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1279
1293
  type: "formTitleMedium"
1280
1294
  }, "Members"), /*#__PURE__*/React__default['default'].createElement("div", {
1281
1295
  className: "flex marginTop-20"
1282
1296
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1283
1297
  className: "flex-1"
1284
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1298
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1285
1299
  type: "formTitleSmall",
1286
1300
  className: "marginBottom-10"
1287
- }, "Select Users"), /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
1301
+ }, "Select Users"), /*#__PURE__*/React__default['default'].createElement(Components$3.GenericInput, {
1288
1302
  id: "userSearch",
1289
1303
  type: "text",
1290
1304
  label: "Search",
@@ -1295,7 +1309,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1295
1309
  },
1296
1310
  alwaysShowLabel: true
1297
1311
  }), this.getShownUsers().map(function (user) {
1298
- return /*#__PURE__*/React__default['default'].createElement(Components$2.UserListing, {
1312
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
1299
1313
  key: user.userId,
1300
1314
  user: user,
1301
1315
  onClick: function onClick() {
@@ -1304,23 +1318,23 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1304
1318
  });
1305
1319
  })), /*#__PURE__*/React__default['default'].createElement("div", {
1306
1320
  className: "flex-1"
1307
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1321
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1308
1322
  type: "formTitleSmall",
1309
1323
  className: "marginBottom-10"
1310
1324
  }, "Selected"), this.state.selectedUsers.map(function (user) {
1311
- return /*#__PURE__*/React__default['default'].createElement(Components$2.UserListing, {
1325
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
1312
1326
  key: user.userId,
1313
1327
  user: user,
1314
1328
  rightContent: /*#__PURE__*/React__default['default'].createElement("div", {
1315
1329
  className: "flex flex-reverse flex-center"
1316
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.SVGIcon, {
1330
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.SVGIcon, {
1317
1331
  className: "removeIcon marginLeft-8",
1318
1332
  icon: "close",
1319
1333
  colour: Colours$2.COLOUR_DUSK,
1320
1334
  onClick: function onClick() {
1321
1335
  _this6.onSelectUser(user);
1322
1336
  }
1323
- }), /*#__PURE__*/React__default['default'].createElement(Components$2.StatusButton, {
1337
+ }), /*#__PURE__*/React__default['default'].createElement(Components$3.StatusButton, {
1324
1338
  isActive: user.isAdmin,
1325
1339
  activate: function activate() {
1326
1340
  _this6.addAdmin(user);
@@ -1340,18 +1354,18 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1340
1354
  key: "render",
1341
1355
  value: function render() {
1342
1356
  var success = this.state.success;
1343
- return /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPage, null, /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPageContents, {
1357
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPage, null, /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageContents, {
1344
1358
  noBottomButtons: success
1345
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPageSection, {
1359
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageSection, {
1346
1360
  className: "pageSectionWrapper--newPopup"
1347
- }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderSuccess(), !success && this.renderMain()))), /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPageBottomButtons, null, this.renderSubmit()));
1361
+ }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderSuccess(), !success && this.renderMain()))), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageBottomButtons, null, this.renderSubmit()));
1348
1362
  }
1349
1363
  }]);
1350
1364
 
1351
1365
  return AddCircle;
1352
1366
  }(React.Component);
1353
1367
 
1354
- var mapStateToProps$1 = function mapStateToProps(state) {
1368
+ var mapStateToProps$2 = function mapStateToProps(state) {
1355
1369
  var circles = state[values.reducerKey].circles;
1356
1370
  var auth = state.auth;
1357
1371
  return {
@@ -1361,7 +1375,7 @@ var mapStateToProps$1 = function mapStateToProps(state) {
1361
1375
  };
1362
1376
  };
1363
1377
 
1364
- var AddCircle$1 = reactRedux.connect(mapStateToProps$1, {
1378
+ var AddCircle$1 = reactRedux.connect(mapStateToProps$2, {
1365
1379
  circlesLoaded: circlesLoaded,
1366
1380
  circleUpdated: circleUpdated,
1367
1381
  addRecentlyCreated: Actions$1.addRecentlyCreated
@@ -1370,10 +1384,10 @@ var AddCircle$1 = reactRedux.connect(mapStateToProps$1, {
1370
1384
  function _createSuper$5(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$5(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
1371
1385
 
1372
1386
  function _isNativeReflectConstruct$5() { 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; } }
1373
- var Components$1 = PlussCore__namespace.Components,
1387
+ var Components$2 = PlussCore__namespace.Components,
1374
1388
  Helper = PlussCore__namespace.Helper,
1375
1389
  Actions = PlussCore__namespace.Actions,
1376
- Session = PlussCore__namespace.Session,
1390
+ Session$1 = PlussCore__namespace.Session,
1377
1391
  Colours$1 = PlussCore__namespace.Colours;
1378
1392
 
1379
1393
  var Circle = /*#__PURE__*/function (_Component) {
@@ -1794,7 +1808,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1794
1808
  value: function validateCircleAdmin() {
1795
1809
  var _this4 = this;
1796
1810
 
1797
- if (Session.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
1811
+ if (Session$1.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
1798
1812
  return true;
1799
1813
  }
1800
1814
 
@@ -1808,7 +1822,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1808
1822
  var _this5 = this;
1809
1823
 
1810
1824
  if (!this.isMember()) {
1811
- return /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1825
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1812
1826
  type: "highlightedHelp",
1813
1827
  className: "chat_noMessage"
1814
1828
  }, "You can't send a message to this ", ___default['default'].capitalize(values.entityName), " as you are not a member.");
@@ -1822,7 +1836,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1822
1836
  onClick: this.sendMessage
1823
1837
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1824
1838
  className: "chat_inputContainer"
1825
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.GenericInput, {
1839
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
1826
1840
  id: "messageInput",
1827
1841
  type: "textarea",
1828
1842
  className: "chat_input",
@@ -1849,7 +1863,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1849
1863
  style: {
1850
1864
  display: this.state.imageInputShowing ? 'block' : 'none'
1851
1865
  }
1852
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.ImageInput, {
1866
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.ImageInput, {
1853
1867
  ref: function ref(_ref4) {
1854
1868
  _this5.imageInput = _ref4;
1855
1869
  },
@@ -1864,7 +1878,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1864
1878
  style: {
1865
1879
  display: this.state.fileInputShowing ? 'block' : 'none'
1866
1880
  }
1867
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.FileInput, {
1881
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.FileInput, {
1868
1882
  ref: function ref(_ref5) {
1869
1883
  _this5.fileInput = _ref5;
1870
1884
  },
@@ -1885,7 +1899,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1885
1899
  return /*#__PURE__*/React__default['default'].createElement("div", {
1886
1900
  key: m._id,
1887
1901
  className: "message"
1888
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1902
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1889
1903
  type: "h5",
1890
1904
  className: "message_system"
1891
1905
  }, m.text));
@@ -1895,28 +1909,28 @@ var Circle = /*#__PURE__*/function (_Component) {
1895
1909
  return /*#__PURE__*/React__default['default'].createElement("div", {
1896
1910
  key: m._id,
1897
1911
  className: "message".concat(isSelf ? ' message-self' : '').concat(m.uploading ? ' message-uploading' : '')
1898
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1912
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1899
1913
  type: "h5-noUpper",
1900
1914
  className: "message_time"
1901
1915
  }, moment__default['default'].utc(m.createdAt).local().format('D MMM YYYY • h:mma')), /*#__PURE__*/React__default['default'].createElement("div", {
1902
1916
  className: "message_inner"
1903
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.ProfilePic, {
1917
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.ProfilePic, {
1904
1918
  size: 40,
1905
1919
  image: m.user.avatar,
1906
1920
  className: "message_profilePic"
1907
1921
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1908
1922
  className: "message_bubbleContainer"
1909
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1923
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1910
1924
  type: "body",
1911
1925
  className: "message_name"
1912
1926
  }, m.user.name, m.replyingTo ? " replied to ".concat(m.replyingTo.user.name) : ''), m.replyingTo && /*#__PURE__*/React__default['default'].createElement("div", {
1913
1927
  className: "message_replyBubble"
1914
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1928
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1915
1929
  type: "body",
1916
1930
  className: "message_text"
1917
1931
  }, Helper.toParagraphed((m.replyingTo.text || '').substr(0, 100)))), /*#__PURE__*/React__default['default'].createElement("div", {
1918
1932
  className: "message_bubble"
1919
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1933
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1920
1934
  type: "body",
1921
1935
  className: "message_text"
1922
1936
  }, Helper.toParagraphed(m.text)), /*#__PURE__*/React__default['default'].createElement("div", null, (m.image || []).map(function (url, i) {
@@ -1930,14 +1944,14 @@ var Circle = /*#__PURE__*/function (_Component) {
1930
1944
  alt: Helper.getFileName(url)
1931
1945
  }));
1932
1946
  })), /*#__PURE__*/React__default['default'].createElement("div", null, (m.attachments || []).map(function (url, i) {
1933
- return /*#__PURE__*/React__default['default'].createElement(Components$1.Attachment, {
1947
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.Attachment, {
1934
1948
  source: url,
1935
1949
  key: i,
1936
1950
  white: isSelf
1937
1951
  });
1938
1952
  }))), /*#__PURE__*/React__default['default'].createElement("div", {
1939
1953
  className: "message_reply"
1940
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1954
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1941
1955
  type: "button",
1942
1956
  onClick: function onClick() {
1943
1957
  _this6.onReply(m);
@@ -1986,12 +2000,12 @@ var Circle = /*#__PURE__*/function (_Component) {
1986
2000
  onClick: this.toggleMembers
1987
2001
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1988
2002
  className: "flex-1"
1989
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2003
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1990
2004
  type: "formTitleMedium"
1991
2005
  }, "Member", Helper.getPluralS(members.length), " (", members.length, ")"))), this.state.membersExpanded && /*#__PURE__*/React__default['default'].createElement("div", {
1992
2006
  className: "paddingTop-8"
1993
2007
  }, members.map(function (user) {
1994
- return /*#__PURE__*/React__default['default'].createElement(Components$1.UserListing, {
2008
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.UserListing, {
1995
2009
  user: user
1996
2010
  });
1997
2011
  }))), /*#__PURE__*/React__default['default'].createElement("div", {
@@ -2004,7 +2018,7 @@ var Circle = /*#__PURE__*/function (_Component) {
2004
2018
  onClick: this.toggleImages
2005
2019
  }), /*#__PURE__*/React__default['default'].createElement("div", {
2006
2020
  className: "flex-1"
2007
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2021
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2008
2022
  type: "formTitleMedium"
2009
2023
  }, "Image", Helper.getPluralS(this.state.images.length), " (", this.state.images.length, ")"))), this.state.imagesExpanded && /*#__PURE__*/React__default['default'].createElement("div", {
2010
2024
  className: "paddingTop-8"
@@ -2027,12 +2041,12 @@ var Circle = /*#__PURE__*/function (_Component) {
2027
2041
  onClick: this.toggleFiles
2028
2042
  }), /*#__PURE__*/React__default['default'].createElement("div", {
2029
2043
  className: "flex-1"
2030
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2044
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2031
2045
  type: "formTitleMedium"
2032
2046
  }, "File", Helper.getPluralS(this.state.files.length), " (", this.state.files.length, ")"))), this.state.filesExpanded && /*#__PURE__*/React__default['default'].createElement("div", {
2033
2047
  className: "paddingTop-8"
2034
2048
  }, this.state.files.map(function (file, i) {
2035
- return /*#__PURE__*/React__default['default'].createElement(Components$1.Attachment, {
2049
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.Attachment, {
2036
2050
  source: file.Url,
2037
2051
  key: i
2038
2052
  });
@@ -2052,13 +2066,13 @@ var Circle = /*#__PURE__*/function (_Component) {
2052
2066
  className: "chat_replyTo"
2053
2067
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2054
2068
  className: "chat_replyTo_container"
2055
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2069
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2056
2070
  type: "h5"
2057
- }, "Replying to ", m && m.user && !___default['default'].isEmpty(m.user.displayName) ? m.user.displayName : ''), m && !___default['default'].isEmpty(m.text) && /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2071
+ }, "Replying to ", m && m.user && !___default['default'].isEmpty(m.user.displayName) ? m.user.displayName : ''), m && !___default['default'].isEmpty(m.text) && /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2058
2072
  type: "body"
2059
2073
  }, m.text.substr(0, 50))), /*#__PURE__*/React__default['default'].createElement("div", {
2060
2074
  className: "chat_replyTo_remove"
2061
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.SVGIcon, {
2075
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.SVGIcon, {
2062
2076
  className: "removeIcon",
2063
2077
  icon: "close",
2064
2078
  onClick: function onClick() {
@@ -2072,13 +2086,13 @@ var Circle = /*#__PURE__*/function (_Component) {
2072
2086
  value: function render() {
2073
2087
  var _this8 = this;
2074
2088
 
2075
- return /*#__PURE__*/React__default['default'].createElement(Components$1.OverlayPage, {
2089
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPage, {
2076
2090
  fullPage: true,
2077
2091
  fullPageStyle: {
2078
2092
  display: 'flex',
2079
2093
  flexDirection: 'column'
2080
2094
  }
2081
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Header, {
2095
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Header, {
2082
2096
  rightContent: this.renderHeaderRight()
2083
2097
  }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2084
2098
  className: "header_back",
@@ -2086,21 +2100,21 @@ var Circle = /*#__PURE__*/function (_Component) {
2086
2100
  onClick: function onClick() {
2087
2101
  window.history.back();
2088
2102
  }
2089
- }), /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2103
+ }), /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2090
2104
  type: "formTitleLarge",
2091
2105
  className: "header_title"
2092
2106
  }, this.getTitle())), /*#__PURE__*/React__default['default'].createElement("div", {
2093
2107
  className: "flex flex-1 flex-reverse overflow-hidden"
2094
2108
  }, this.renderSideBar(), /*#__PURE__*/React__default['default'].createElement("div", {
2095
2109
  className: "flex-1 flex flex-column overflow-hidden"
2096
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Header, {
2110
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Header, {
2097
2111
  onlyContainer: true
2098
2112
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2099
2113
  className: "flex flex-center flex-1 paddingHorizontal-16"
2100
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2114
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2101
2115
  type: "h5",
2102
2116
  className: "marginRight-20"
2103
- }, "Filter by"), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$1.GenericInput, {
2117
+ }, "Filter by"), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
2104
2118
  id: "messageDate",
2105
2119
  label: "Date",
2106
2120
  alwaysShowLabel: true,
@@ -2111,13 +2125,13 @@ var Circle = /*#__PURE__*/function (_Component) {
2111
2125
  showMessageDate: !_this8.state.showMessageDate
2112
2126
  });
2113
2127
  },
2114
- rightContent: !___default['default'].isEmpty(this.state.messageDate) && /*#__PURE__*/React__default['default'].createElement(Components$1.SVGIcon, {
2128
+ rightContent: !___default['default'].isEmpty(this.state.messageDate) && /*#__PURE__*/React__default['default'].createElement(Components$2.SVGIcon, {
2115
2129
  colour: Colours$1.COLOUR_DUSK_LIGHT,
2116
2130
  icon: "close",
2117
2131
  className: "timepicker_clear",
2118
2132
  onClick: this.onClearDate
2119
2133
  })
2120
- }), this.state.showMessageDate && /*#__PURE__*/React__default['default'].createElement(Components$1.DatePicker, {
2134
+ }), this.state.showMessageDate && /*#__PURE__*/React__default['default'].createElement(Components$2.DatePicker, {
2121
2135
  hideTop: true,
2122
2136
  selectedDate: this.state.messageDate,
2123
2137
  selectDate: this.handleMessageDateChange
@@ -2139,7 +2153,7 @@ var Circle = /*#__PURE__*/function (_Component) {
2139
2153
  return Circle;
2140
2154
  }(React.Component);
2141
2155
 
2142
- var mapStateToProps = function mapStateToProps(state) {
2156
+ var mapStateToProps$1 = function mapStateToProps(state) {
2143
2157
  var circles = state[values.reducerKey].circles;
2144
2158
  var auth = state.auth;
2145
2159
  return {
@@ -2149,11 +2163,259 @@ var mapStateToProps = function mapStateToProps(state) {
2149
2163
  };
2150
2164
  };
2151
2165
 
2152
- var Circle$1 = reactRedux.connect(mapStateToProps, {
2166
+ var Circle$1 = reactRedux.connect(mapStateToProps$1, {
2153
2167
  circlesLoaded: circlesLoaded,
2154
2168
  setNavData: Actions.setNavData
2155
2169
  })(Circle);
2156
2170
 
2171
+ var Analytics$1 = PlussCore__namespace.Analytics,
2172
+ Session = PlussCore__namespace.Session,
2173
+ Components$1 = PlussCore__namespace.Components;
2174
+
2175
+ var getInitialState = function getInitialState() {
2176
+ return {
2177
+ isLoading: true,
2178
+ messages: 0,
2179
+ prevMessages: 0,
2180
+ staffMessages: 0,
2181
+ prevStaffMessages: 0,
2182
+ residentMessages: 0,
2183
+ prevResidentMessages: 0,
2184
+ groupMessages: 0,
2185
+ prevGroupMessages: 0,
2186
+ privateMessages: 0,
2187
+ prevPrivateMessages: 0,
2188
+ activeGroups: 0,
2189
+ prevActiveGroups: 0
2190
+ };
2191
+ }; // AnalyticsHub Component
2192
+
2193
+
2194
+ var AnalyticsHub = function AnalyticsHub(_ref) {
2195
+ var startTime = _ref.startTime,
2196
+ endTime = _ref.endTime,
2197
+ auth = _ref.auth,
2198
+ prevText = _ref.prevText,
2199
+ dayCount = _ref.dayCount,
2200
+ strings = _ref.strings;
2201
+
2202
+ var _useState = React.useState(getInitialState()),
2203
+ _useState2 = _slicedToArray__default['default'](_useState, 2),
2204
+ analyticsData = _useState2[0],
2205
+ setAnalyticsData = _useState2[1];
2206
+
2207
+ var _useState3 = React.useState(false),
2208
+ _useState4 = _slicedToArray__default['default'](_useState3, 2),
2209
+ isExportOpen = _useState4[0],
2210
+ setIsExportOpen = _useState4[1];
2211
+
2212
+ var hasAccess = Session.validateAccess(auth.site, values.permissionNewsletter, auth);
2213
+
2214
+ if (!hasAccess) {
2215
+ return null;
2216
+ }
2217
+
2218
+ var featureTitle = function (key) {
2219
+ if (!strings || !strings.sideNav || !strings.sideNav[key]) {
2220
+ return values.textFeatureTitle;
2221
+ }
2222
+
2223
+ return strings.sideNav[key];
2224
+ }();
2225
+
2226
+ var exportColumns = [{
2227
+ label: 'Select All',
2228
+ key: ''
2229
+ }, {
2230
+ label: 'Start Date',
2231
+ key: 'startDate'
2232
+ }, {
2233
+ label: 'End Date',
2234
+ key: 'endDate'
2235
+ }, {
2236
+ label: 'Messages',
2237
+ key: 'messages'
2238
+ }, {
2239
+ label: 'Messages by Staff',
2240
+ key: 'staffMessages'
2241
+ }, {
2242
+ label: 'Messages by Primary Users',
2243
+ key: 'residentMessages'
2244
+ }, {
2245
+ label: 'Group Messages',
2246
+ key: 'groupMessages'
2247
+ }, {
2248
+ label: 'Private Messages',
2249
+ key: 'privateMessages'
2250
+ }, {
2251
+ label: 'Groups with Messages',
2252
+ key: 'activeGroups'
2253
+ }];
2254
+ React.useEffect(function () {
2255
+ getData();
2256
+ }, [startTime, endTime]);
2257
+
2258
+ var getData = /*#__PURE__*/function () {
2259
+ var _ref2 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
2260
+ var timeDifference, _yield$Promise$all, _yield$Promise$all2, currentStatsResponse, prevStatsResponse, data;
2261
+
2262
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2263
+ while (1) {
2264
+ switch (_context.prev = _context.next) {
2265
+ case 0:
2266
+ setAnalyticsData(getInitialState()); // Load analytics data here using startTime and endTime
2267
+
2268
+ timeDifference = endTime - startTime;
2269
+ _context.next = 4;
2270
+ return Promise.all([analyticsActions.getAggregateEntityStats(auth.site, values.entityKey, startTime, endTime, true), analyticsActions.getAggregateEntityStats(auth.site, values.entityKey, startTime - timeDifference, startTime, true)]);
2271
+
2272
+ case 4:
2273
+ _yield$Promise$all = _context.sent;
2274
+ _yield$Promise$all2 = _slicedToArray__default['default'](_yield$Promise$all, 2);
2275
+ currentStatsResponse = _yield$Promise$all2[0];
2276
+ prevStatsResponse = _yield$Promise$all2[1];
2277
+ data = {
2278
+ messages: Analytics$1.countActivities(currentStatsResponse.data, 'Message', 'total'),
2279
+ prevMessages: Analytics$1.countActivities(prevStatsResponse.data, 'Message', 'total'),
2280
+ staffMessages: Analytics$1.countActivities(currentStatsResponse.data, 'StaffMessage', 'total'),
2281
+ prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, 'StaffMessage', 'total'),
2282
+ residentMessages: Analytics$1.countActivities(currentStatsResponse.data, 'ResidentMessage', 'total'),
2283
+ prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, 'ResidentMessage', 'total'),
2284
+ groupMessages: Analytics$1.countActivities(currentStatsResponse.data, 'GroupMessage', 'total'),
2285
+ prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, 'GroupMessage', 'total'),
2286
+ privateMessages: Analytics$1.countActivities(currentStatsResponse.data, 'PrivateMessage', 'total'),
2287
+ prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, 'PrivateMessage', 'total'),
2288
+ activeGroups: Analytics$1.countActivities(currentStatsResponse.data, 'GroupMessage', 'unique'),
2289
+ prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, 'GroupMessage', 'unique'),
2290
+ // uniquePageView: Analytics.countActivities(currentStatsResponse.data, 'UniquePageView', 'uniquearray'),
2291
+ // prevUniquePageView: Analytics.countActivities(prevStatsResponse.data, 'UniquePageView', 'uniquearray'),
2292
+ isLoading: false
2293
+ };
2294
+ setAnalyticsData(data);
2295
+
2296
+ case 10:
2297
+ case "end":
2298
+ return _context.stop();
2299
+ }
2300
+ }
2301
+ }, _callee);
2302
+ }));
2303
+
2304
+ return function getData() {
2305
+ return _ref2.apply(this, arguments);
2306
+ };
2307
+ }();
2308
+
2309
+ var isReadyToOpenCSV = function isReadyToOpenCSV() {
2310
+ return !analyticsData.isLoading;
2311
+ };
2312
+
2313
+ var getExportSource = function getExportSource() {
2314
+ return [{
2315
+ startDate: moment__default['default'](startTime + 1).format('D-MM-YYYY'),
2316
+ endDate: moment__default['default'](endTime).format('D-MM-YYYY'),
2317
+ messages: analyticsData.messages,
2318
+ staffMessages: analyticsData.staffMessages,
2319
+ residentMessages: analyticsData.residentMessages,
2320
+ groupMessages: analyticsData.groupMessages,
2321
+ privateMessages: analyticsData.privateMessages,
2322
+ activeGroups: analyticsData.activeGroups
2323
+ }];
2324
+ };
2325
+
2326
+ var csvPopup = function csvPopup() {
2327
+ if (!isExportOpen) {
2328
+ return null;
2329
+ }
2330
+
2331
+ var source = getExportSource();
2332
+ return /*#__PURE__*/React__default['default'].createElement(Components$1.ExportCsvPopup, {
2333
+ onClose: function onClose() {
2334
+ setIsExportOpen(false);
2335
+ },
2336
+ columns: exportColumns,
2337
+ source: source,
2338
+ filename: "".concat(values.analyticsKey, "analytics_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
2339
+ });
2340
+ };
2341
+
2342
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2343
+ className: "dashboardSection"
2344
+ }, csvPopup(), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2345
+ type: "h4",
2346
+ className: "inlineBlock marginRight-40"
2347
+ }, featureTitle), /*#__PURE__*/React__default['default'].createElement(Components$1.Button, {
2348
+ inline: true,
2349
+ buttonType: "primaryAction",
2350
+ onClick: function onClick() {
2351
+ if (!isReadyToOpenCSV()) return;
2352
+ setIsExportOpen(true);
2353
+ },
2354
+ isActive: isReadyToOpenCSV(),
2355
+ leftIcon: "file-code-o"
2356
+ }, "Export CSV")), /*#__PURE__*/React__default['default'].createElement("div", {
2357
+ className: "analyticsSection dashboardSection_content"
2358
+ }, /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2359
+ title: "Groups with Messages",
2360
+ icon: freeSolidSvgIcons.faUserGroup,
2361
+ value: analyticsData.activeGroups,
2362
+ previousValue: analyticsData.prevActiveGroups,
2363
+ prevText: prevText,
2364
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=GroupMessage&countType=unique&dayCount=").concat(dayCount),
2365
+ isLoading: analyticsData.isLoading
2366
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2367
+ title: "Messages",
2368
+ icon: freeSolidSvgIcons.faMessage,
2369
+ value: analyticsData.messages,
2370
+ previousValue: analyticsData.prevMessages,
2371
+ prevText: prevText,
2372
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Message&countType=total&dayCount=").concat(dayCount),
2373
+ isLoading: analyticsData.isLoading
2374
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2375
+ title: "Messages by Staff",
2376
+ icon: freeSolidSvgIcons.faUserTie,
2377
+ value: analyticsData.staffMessages,
2378
+ previousValue: analyticsData.prevStaffMessages,
2379
+ prevText: prevText,
2380
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=StaffMessage&countType=total&dayCount=").concat(dayCount),
2381
+ isLoading: analyticsData.isLoading
2382
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2383
+ title: "Messages by Primary Users",
2384
+ icon: freeSolidSvgIcons.faUsers,
2385
+ value: analyticsData.residentMessages,
2386
+ previousValue: analyticsData.prevResidentMessages,
2387
+ prevText: prevText,
2388
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=ResidentMessage&countType=total&dayCount=").concat(dayCount),
2389
+ isLoading: analyticsData.isLoading
2390
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2391
+ title: "Group Messages",
2392
+ icon: freeSolidSvgIcons.faUsersRectangle,
2393
+ value: analyticsData.groupMessages,
2394
+ previousValue: analyticsData.prevGroupMessages,
2395
+ prevText: prevText,
2396
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=GroupMessage&countType=total&dayCount=").concat(dayCount),
2397
+ isLoading: analyticsData.isLoading
2398
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2399
+ title: "Private Messages",
2400
+ icon: freeSolidSvgIcons.faPeopleArrows,
2401
+ value: analyticsData.privateMessages,
2402
+ previousValue: analyticsData.prevPrivateMessages,
2403
+ prevText: prevText,
2404
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=PrivateMessage&countType=total&dayCount=").concat(dayCount),
2405
+ isLoading: analyticsData.isLoading
2406
+ })));
2407
+ };
2408
+
2409
+ var mapStateToProps = function mapStateToProps(state) {
2410
+ var auth = state.auth;
2411
+ return {
2412
+ auth: auth,
2413
+ strings: state.strings && state.strings.config || {}
2414
+ };
2415
+ };
2416
+
2417
+ var toExport = reactRedux.connect(mapStateToProps, {})(AnalyticsHub);
2418
+
2157
2419
  function ownKeys$2(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; }
2158
2420
 
2159
2421
  function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -2458,7 +2720,9 @@ var FeaturePickerContent = (function () {
2458
2720
  var _Screens;
2459
2721
  var Reducers = _defineProperty__default['default']({}, values.reducerKey, CircleReducer);
2460
2722
  var Screens = (_Screens = {}, _defineProperty__default['default'](_Screens, values.componentCircles, Circles$1), _defineProperty__default['default'](_Screens, values.componentAddCircle, AddCircle$1), _defineProperty__default['default'](_Screens, values.componentCircle, Circle$1), _Screens);
2723
+ var Analytics = [toExport];
2461
2724
 
2725
+ exports.Analytics = Analytics;
2462
2726
  exports.Config = FeatureConfig;
2463
2727
  exports.FeaturePickerContent = FeaturePickerContent;
2464
2728
  exports.PreviewFull = PreviewFull;