@gpa-gemstone/common-pages 0.0.62 → 0.0.64

Sign up to get free protection for your applications and to get access to all the features.
package/lib/Note.d.ts CHANGED
@@ -12,6 +12,8 @@ interface IProps {
12
12
  AllowEdit?: boolean;
13
13
  AllowRemove?: boolean;
14
14
  AllowAdd?: boolean;
15
+ ShowCard?: boolean;
16
+ DefaultApplication?: OpenXDA.Types.NoteApplication;
15
17
  }
16
18
  declare function Note(props: IProps): JSX.Element;
17
19
  export default Note;
package/lib/Note.js CHANGED
@@ -41,14 +41,52 @@ var moment = require("moment");
41
41
  var react_redux_1 = require("react-redux");
42
42
  function Note(props) {
43
43
  var dispatch = (0, react_redux_1.useDispatch)();
44
+ var standardCollumns = [
45
+ {
46
+ key: 'Note', field: 'Note', label: 'Note',
47
+ headerStyle: { width: '50%' }, rowStyle: { width: '50%' }
48
+ },
49
+ {
50
+ key: 'Timestamp', field: 'Timestamp', label: 'Time',
51
+ headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
52
+ content: function (item) { return moment.utc(item.Timestamp).format("MM/DD/YYYY HH:mm"); }
53
+ },
54
+ {
55
+ key: 'UserAccount', field: 'UserAccount', label: 'User',
56
+ headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' }
57
+ },
58
+ {
59
+ key: 'buttons',
60
+ label: '',
61
+ headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
62
+ content: function (item) { return React.createElement(React.Fragment, null,
63
+ allowEdit ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return handleEdit(item); } },
64
+ React.createElement("span", null,
65
+ " ",
66
+ gpa_symbols_1.Pencil,
67
+ " ")) : null,
68
+ allowRemove ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return dispatch(props.NoteSlice.DBAction({ verb: 'DELETE', record: item })); } },
69
+ React.createElement("span", null,
70
+ " ",
71
+ gpa_symbols_1.TrashCan,
72
+ " ")) : null); }
73
+ }
74
+ ];
75
+ var allowEdit = props.AllowEdit === undefined ? true : props.AllowEdit;
76
+ var allowRemove = props.AllowRemove === undefined ? true : props.AllowRemove;
77
+ var allowAdd = props.AllowAdd === undefined ? true : props.AllowAdd;
78
+ var useFixedApp = props.NoteApplications.length === 1 || props.DefaultApplication !== undefined;
79
+ var defaultApplication = props.DefaultApplication !== undefined ? props.DefaultApplication : props.NoteApplications[0];
80
+ var showCard = props.ShowCard === undefined || props.ShowCard;
44
81
  var _a = React.useState(false), showEdit = _a[0], setEdit = _a[1];
45
82
  var _b = React.useState('none'), hover = _b[0], setHover = _b[1];
83
+ var _c = React.useState(standardCollumns), collumns = _c[0], setCollumns = _c[1];
46
84
  var data = (0, react_redux_1.useSelector)(props.NoteSlice.Data);
47
85
  var dataStatus = (0, react_redux_1.useSelector)(props.NoteSlice.Status);
48
86
  var parentID = (0, react_redux_1.useSelector)((props.NoteSlice.ParentID === undefined ? function (state) { return props.ReferenceTableID; } : props.NoteSlice.ParentID));
49
87
  var sortField = (0, react_redux_1.useSelector)(props.NoteSlice.SortField);
50
88
  var ascending = (0, react_redux_1.useSelector)(props.NoteSlice.Ascending);
51
- var _c = React.useState(CreateNewNote()), note = _c[0], setNote = _c[1];
89
+ var _d = React.useState(CreateNewNote()), note = _d[0], setNote = _d[1];
52
90
  React.useEffect(function () {
53
91
  if (dataStatus === 'unintiated' || dataStatus === 'changed' || parentID !== props.ReferenceTableID)
54
92
  dispatch(props.NoteSlice.Fetch(props.ReferenceTableID));
@@ -73,15 +111,22 @@ function Note(props) {
73
111
  return;
74
112
  setNote(function (n) { return (__assign(__assign({}, n), { ReferenceTableID: props.ReferenceTableID !== undefined ? props.ReferenceTableID : -1 })); });
75
113
  }, [props.ReferenceTableID]);
76
- var allowEdit = props.AllowEdit === undefined ? true : props.AllowEdit;
77
- var allowRemove = props.AllowRemove === undefined ? true : props.AllowRemove;
78
- var allowAdd = props.AllowAdd === undefined ? true : props.AllowAdd;
114
+ React.useEffect(function () {
115
+ var c = standardCollumns;
116
+ if (props.NoteTags.length > 1)
117
+ c.push({ key: 'NoteTagID', field: 'NoteTagID', label: 'Type', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
118
+ content: function (n) { var _a; return (_a = props.NoteTags.find(function (t) { return t.ID === n.NoteTagID; })) === null || _a === void 0 ? void 0 : _a.Name; } });
119
+ if (props.NoteApplications.length > 1)
120
+ c.push({ key: 'NoteApplicationID', field: 'NoteApplicationID', label: 'Application', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' },
121
+ content: function (n) { var _a; return (_a = props.NoteApplications.find(function (t) { return t.ID === n.NoteApplicationID; })) === null || _a === void 0 ? void 0 : _a.Name; } });
122
+ setCollumns(c);
123
+ }, [props.NoteTags, props.NoteApplications]);
79
124
  function CreateNewNote() {
80
125
  var newNote = { ID: -1, ReferenceTableID: -1, NoteTagID: -1, NoteTypeID: -1, NoteApplicationID: -1, Timestamp: '', UserAccount: '', Note: '' };
81
126
  if (props.ReferenceTableID !== undefined)
82
127
  newNote.ReferenceTableID = props.ReferenceTableID;
83
- if (props.NoteApplications.length > 0)
84
- newNote.NoteApplicationID = props.NoteApplications[0].ID;
128
+ if (defaultApplication != null)
129
+ newNote.NoteApplicationID = defaultApplication.ID;
85
130
  if (props.NoteTypes.length > 0)
86
131
  newNote.NoteTypeID = props.NoteTypes[0].ID;
87
132
  if (props.NoteTags.length > 0)
@@ -108,48 +153,47 @@ function Note(props) {
108
153
  return (React.createElement("div", { style: { width: '100%', height: '100%' } },
109
154
  React.createElement("div", { style: { height: '40px', margin: 'auto', marginTop: 'calc(50% - 20 px)' } },
110
155
  React.createElement(react_interactive_1.ServerErrorIcon, { Show: true, Size: 40, Label: 'A Server Error Occured. Please Reload the Application' }))));
111
- return (React.createElement("div", { className: "card", style: { marginBottom: 10, maxHeight: props.MaxHeight, width: '100%' } },
156
+ return (React.createElement("div", { className: showCard ? "card" : "", style: { marginBottom: 10, maxHeight: props.MaxHeight, width: '100%' } },
112
157
  React.createElement(react_interactive_1.LoadingScreen, { Show: dataStatus === 'loading' }),
113
- React.createElement("div", { className: "card-header" },
158
+ React.createElement("div", { className: props.ShowCard === undefined || props.ShowCard ? "card-header" : "" },
114
159
  React.createElement("div", { className: "row" },
115
160
  React.createElement("div", { className: "col" },
116
161
  React.createElement("h4", null, props.Title !== undefined ? props.Title : 'Notes:')))),
117
- React.createElement("div", { className: "card-body", style: { maxHeight: props.MaxHeight - 100, overflowY: 'auto', width: '100%' } },
162
+ React.createElement("div", { className: showCard ? "card-body" : "", style: { maxHeight: props.MaxHeight - 100, overflowY: 'auto', width: '100%' } },
163
+ allowAdd && !showCard ?
164
+ React.createElement(React.Fragment, null,
165
+ React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications, ShowApplications: !useFixedApp }),
166
+ React.createElement("div", { className: "btn-group mr-2" },
167
+ React.createElement("button", { className: "btn btn-primary" + (note.Note === null || note.Note.length === 0 ? ' disabled' : ''), onClick: function () { if (note.Note !== null && note.Note.length > 0)
168
+ handleAdd(note); }, "data-tooltip": "Add", style: { cursor: note.Note === null || note.Note.length === 0 ? 'not-allowed' : 'pointer' }, onMouseOver: function () { return setHover('add'); }, onMouseOut: function () { return setHover('none'); } }, "Add Note"),
169
+ React.createElement(react_interactive_1.ToolTip, { Show: hover === 'add' && (note.Note === null || note.Note.length === 0), Position: 'top', Theme: 'dark', Target: "Add" },
170
+ React.createElement("p", null,
171
+ gpa_symbols_1.CrossMark,
172
+ " A note needs to be entered. "))),
173
+ React.createElement("div", { className: "btn-group mr-2" },
174
+ React.createElement("button", { className: "btn btn-default" + (note.Note === null || note.Note.length === 0 ? ' disabled' : ''), onClick: function () { return setNote(function (n) { return (__assign(__assign({}, n), { Note: '' })); }); }, style: { cursor: note.Note === null || note.Note.length === 0 ? 'not-allowed' : 'pointer' }, "data-tooltip": "Remove", onMouseOver: function () { return setHover('clear'); }, onMouseOut: function () { return setHover('none'); } }, "Clear"),
175
+ React.createElement(react_interactive_1.ToolTip, { Show: hover === 'clear' && (note.Note === null || note.Note.length === 0), Position: 'top', Theme: 'dark', Target: "Remove" },
176
+ React.createElement("p", null,
177
+ gpa_symbols_1.CrossMark,
178
+ " The note field is already empty. ")))) : null,
118
179
  React.createElement("div", null,
119
- React.createElement(react_table_1.default, { cols: [
120
- { key: 'Note', field: 'Note', label: 'Note', headerStyle: { width: '50%' }, rowStyle: { width: '50%' } },
121
- { key: 'Timestamp', field: 'Timestamp', label: 'Time', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' }, content: function (item) { return moment.utc(item.Timestamp).format("MM/DD/YYYY HH:mm"); } },
122
- { key: 'UserAccount', field: 'UserAccount', label: 'User', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' } },
123
- {
124
- key: 'buttons', label: '', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' }, content: function (item) { return React.createElement(React.Fragment, null,
125
- allowEdit ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return handleEdit(item); } },
126
- React.createElement("span", null,
127
- " ",
128
- gpa_symbols_1.Pencil,
129
- " ")) : null,
130
- allowRemove ? React.createElement("button", { className: "btn btn-sm", onClick: function () { return dispatch(props.NoteSlice.DBAction({ verb: 'DELETE', record: item })); } },
131
- React.createElement("span", null,
132
- " ",
133
- gpa_symbols_1.TrashCan,
134
- " ")) : null); }
135
- },
136
- ], tableClass: "table table-hover", data: data, sortKey: sortField, ascending: ascending, onSort: function (d) {
180
+ React.createElement(react_table_1.default, { cols: collumns, tableClass: "table table-hover", data: data, sortKey: sortField, ascending: ascending, onSort: function (d) {
137
181
  if (d.colField === undefined)
138
182
  return;
139
183
  if (d.colField === sortField)
140
184
  dispatch(props.NoteSlice.Sort({ SortField: sortField, Ascending: ascending }));
141
185
  else
142
186
  dispatch(props.NoteSlice.Sort({ SortField: d.colField, Ascending: true }));
143
- }, onClick: function () { return; }, theadStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, tbodyStyle: { display: 'block', overflowY: 'scroll', maxHeight: window.innerHeight - 300, width: '100%' }, rowStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, selected: function () { return false; } })),
144
- allowAdd ?
145
- React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications })
187
+ }, onClick: function () { return; }, theadStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, tbodyStyle: { display: 'block', overflowY: 'scroll', maxHeight: props.MaxHeight - 300, width: '100%' }, rowStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, selected: function () { return false; } })),
188
+ allowAdd && showCard ?
189
+ React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications, ShowApplications: !useFixedApp })
146
190
  : null,
147
191
  React.createElement(react_interactive_1.Modal, { Show: showEdit, Title: 'Edit Note', ShowCancel: true, CallBack: handleSaveEdit, DisableConfirm: note.Note == null || note.Note.length === 0, ShowX: true, ConfirmShowToolTip: note.Note == null || note.Note.length === 0, ConfirmToolTipContent: React.createElement("p", null,
148
192
  " ",
149
193
  gpa_symbols_1.CrossMark,
150
194
  " An empty Note can not be saved. ") },
151
- React.createElement(NoteOptions, { Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications }))),
152
- allowAdd ?
195
+ React.createElement(NoteOptions, { ShowApplications: !useFixedApp, Record: note, Setter: function (n) { return setNote(n); }, NoteTags: props.NoteTags, NoteTypes: props.NoteTypes, NoteApplications: props.NoteApplications }))),
196
+ allowAdd && showCard ?
153
197
  React.createElement("div", { className: "card-footer" },
154
198
  React.createElement("div", { className: "btn-group mr-2" },
155
199
  React.createElement("button", { className: "btn btn-primary" + (note.Note === null || note.Note.length === 0 ? ' disabled' : ''), onClick: function () { if (note.Note !== null && note.Note.length > 0)
@@ -164,16 +208,17 @@ function Note(props) {
164
208
  React.createElement("p", null,
165
209
  gpa_symbols_1.CrossMark,
166
210
  " The note field is already empty. "))))
167
- : React.createElement("div", { className: "card-footer" }, " ")));
211
+ : null,
212
+ !allowAdd && showCard ? React.createElement("div", { className: props.ShowCard === undefined || props.ShowCard ? "card-footer" : "" }, " ") : null));
168
213
  }
169
214
  function NoteOptions(props) {
170
215
  var showOptions = props.NoteTags.length > 1 || props.NoteTypes.length > 1 || props.NoteApplications.length > 1;
171
- return (React.createElement("div", { className: "row" },
216
+ return (React.createElement("div", { className: "row", style: { marginRight: 0, marginLeft: 0 } },
172
217
  React.createElement("div", { className: showOptions ? "col-6" : 'col-12' },
173
218
  React.createElement(react_forms_1.TextArea, { Record: props.Record, Rows: 4, Field: 'Note', Setter: function (n) { return props.Setter(n); }, Valid: function () { return props.Record.Note != null && props.Record.Note.length > 0; }, Label: '' })),
174
219
  showOptions ? React.createElement("div", { className: "col-6" },
175
220
  props.NoteTypes.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteTypeID', Label: 'Note for: ', Options: props.NoteTypes.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteTypeID: parseInt(record.NoteTypeID.toString(), 10) })); } }) : null,
176
221
  props.NoteTags.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteTagID', Label: 'Type: ', Options: props.NoteTags.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteTagID: parseInt(record.NoteTagID.toString(), 10) })); } }) : null,
177
- props.NoteApplications.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteApplicationID', Label: 'Application: ', Options: props.NoteApplications.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteApplicationID: parseInt(record.NoteApplicationID.toString(), 10) })); } }) : null) : null));
222
+ props.ShowApplications && props.NoteApplications.length > 1 ? React.createElement(react_forms_1.Select, { Record: props.Record, Field: 'NoteApplicationID', Label: 'Application: ', Options: props.NoteApplications.map(function (r) { return ({ Value: r.ID.toString(), Label: r.Name }); }), Setter: function (record) { return props.Setter(__assign(__assign({}, record), { NoteApplicationID: parseInt(record.NoteApplicationID.toString(), 10) })); } }) : null) : null));
178
223
  }
179
224
  exports.default = Note;
package/lib/SearchBar.js CHANGED
@@ -150,7 +150,7 @@ var DefaultSearch;
150
150
  React.useEffect(function () {
151
151
  return props.GetAddlFields(setAddlFieldCols);
152
152
  }, []);
153
- return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: (props.AddlFilters === undefined ? flds : __spreadArray(__spreadArray([], flds, true), props.AddlFilters, true)), sortField: sortField, ascending: ascending })); }, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' Asset Group(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
153
+ return React.createElement(react_interactive_1.SearchBar, { CollumnList: __spreadArray(__spreadArray([], defaultSearchcols, true), addlFieldCols, true), SetFilter: function (flds) { return dispatch(props.Slice.DBSearch({ filter: (props.AddlFilters === undefined ? flds : __spreadArray(__spreadArray([], flds, true), props.AddlFilters, true)), sortField: sortField, ascending: ascending })); }, Direction: 'left', defaultCollumn: standardSearch, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' User(s)', GetEnum: props.GetEnum, StorageID: props.StorageID }, props.children);
154
154
  }
155
155
  DefaultSearch.User = User;
156
156
  /** This Implements a standard Customer Search */
package/package.json CHANGED
@@ -1,66 +1,60 @@
1
- {
2
- "name": "@gpa-gemstone/common-pages",
3
- "version": "0.0.62",
4
- "description": "Common UI pages for GPA products",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
7
- "files": [
8
- "lib/**/*"
9
- ],
10
- "scripts": {
11
- "test": "jest --config jestconfig.json",
12
- "build": "tsc",
13
- "format": "prettier --write \"src/**/*.tsx\"",
14
- "lint": "tslint -p tsconfig.json",
15
- "prepare": "npm run build",
16
- "prepublishOnly": "npm test && npm run lint",
17
- "preversion": "npm run lint",
18
- "version": "npm run format && git add -A src",
19
- "postversion": "git push && git push --tags"
20
- },
21
- "repository": {
22
- "type": "git",
23
- "url": "https://github.com/GridProtectionAlliance/gpa-gemstone.git"
24
- },
25
- "keywords": [
26
- "React",
27
- "Interactive",
28
- "GSF",
29
- "Gemstone",
30
- "GridProtectionAlliance"
31
- ],
32
- "author": "GridProtectionAlliance",
33
- "license": "MIT",
34
- "bugs": {
35
- "url": "https://github.com/GridProtectionAlliance/gpa-gemstone/issues"
36
- },
37
- "homepage": "https://github.com/GridProtectionAlliance/gpa-gemstone#readme",
38
- "devDependencies": {
39
- "@types/crypto-js": "4.0.2",
40
- "@types/jest": "^27.0.0",
41
- "@types/jquery": "3.5.6",
42
- "jest": "^27.0.6",
43
- "prettier": "^2.3.2",
44
- "ts-jest": "^27.0.4",
45
- "tslint": "^6.1.3",
46
- "tslint-config-prettier": "^1.18.0",
47
- "typescript": "4.4.4"
48
- },
49
- "dependencies": {
50
- "@gpa-gemstone/application-typings": "0.0.53",
51
- "@gpa-gemstone/gpa-symbols": "0.0.23",
52
- "@gpa-gemstone/helper-functions": "0.0.18",
53
- "@gpa-gemstone/react-forms": "1.1.35",
54
- "@gpa-gemstone/react-interactive": "1.0.77",
55
- "@gpa-gemstone/react-table": "1.2.20",
56
- "@reduxjs/toolkit": "1.8.3",
57
- "crypto-js": "4.0.0",
58
- "moment": "^2.29.4",
59
- "react": "^18.2.0",
60
- "react-redux": "8.0.2",
61
- "styled-components": "5.3.3"
62
- },
63
- "publishConfig": {
64
- "access": "public"
65
- }
66
- }
1
+ {
2
+ "name": "@gpa-gemstone/common-pages",
3
+ "version": "0.0.64",
4
+ "description": "Common UI pages for GPA products",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "files": ["lib/**/*"],
8
+ "scripts": {
9
+ "test": "jest --config jestconfig.json",
10
+ "build": "tsc",
11
+ "format": "prettier --write \"src/**/*.tsx\"",
12
+ "lint": "tslint -p tsconfig.json",
13
+ "prepare": "npm run build",
14
+ "prepublishOnly": "npm test && npm run lint",
15
+ "preversion": "npm run lint",
16
+ "version": "npm run format && git add -A src",
17
+ "postversion": "git push && git push --tags"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/GridProtectionAlliance/gpa-gemstone.git"
22
+ },
23
+ "keywords": [
24
+ "React",
25
+ "Interactive",
26
+ "GSF",
27
+ "Gemstone",
28
+ "GridProtectionAlliance"
29
+ ],
30
+ "author": "GridProtectionAlliance",
31
+ "license": "MIT",
32
+ "bugs": {"url": "https://github.com/GridProtectionAlliance/gpa-gemstone/issues"},
33
+ "homepage": "https://github.com/GridProtectionAlliance/gpa-gemstone#readme",
34
+ "devDependencies": {
35
+ "@types/crypto-js": "4.0.2",
36
+ "@types/jest": "^27.0.0",
37
+ "@types/jquery": "3.5.6",
38
+ "jest": "^27.0.6",
39
+ "prettier": "^2.3.2",
40
+ "ts-jest": "^27.0.4",
41
+ "tslint": "^6.1.3",
42
+ "tslint-config-prettier": "^1.18.0",
43
+ "typescript": "4.4.4"
44
+ },
45
+ "dependencies": {
46
+ "@gpa-gemstone/application-typings": "0.0.55",
47
+ "@gpa-gemstone/gpa-symbols": "0.0.25",
48
+ "@gpa-gemstone/helper-functions": "0.0.19",
49
+ "@gpa-gemstone/react-forms": "1.1.36",
50
+ "@gpa-gemstone/react-interactive": "1.0.79",
51
+ "@gpa-gemstone/react-table": "1.2.22",
52
+ "@reduxjs/toolkit": "1.8.3",
53
+ "crypto-js": "4.0.0",
54
+ "moment": "^2.29.4",
55
+ "react": "^18.2.0",
56
+ "react-redux": "8.0.2",
57
+ "styled-components": "5.3.3"
58
+ },
59
+ "publishConfig": {"access": "public"}
60
+ }