@builttocreate/engine-utils 1.17.0-rc1 → 1.17.1-rc2

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.
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.addDocumentDataToActivities = exports.getFormattedActivity = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _ActivityTypes = _interopRequireDefault(require("./constants/ActivityTypes"));
13
+
14
+ var _FileTypes = _interopRequireDefault(require("./constants/FileTypes"));
15
+
16
+ var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
17
+
18
+ var _tableHelper = require("./tableHelper");
19
+
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
+
24
+ var getFormattedActivity = function getFormattedActivity(comments, deficiencies, files) {
25
+ var activity = [];
26
+
27
+ if (comments && comments.length > 0) {
28
+ comments.forEach(function (comment) {
29
+ if (comment.deleted) return;
30
+ activity.push(_objectSpread({
31
+ type: _ActivityTypes["default"].comment,
32
+ visibility: comment.visibility || 'private',
33
+ //Legacy comments are private to the submission
34
+ description: comment.text,
35
+ files: comment.files || []
36
+ }, comment));
37
+ });
38
+ }
39
+
40
+ if (files && files.length > 0) {
41
+ files.forEach(function (file) {
42
+ if (file.deleted || file.type === _FileTypes["default"].signature) return;
43
+ activity.push({
44
+ type: _ActivityTypes["default"].file,
45
+ visibility: 'public',
46
+ //Legacy files are public to the submission
47
+ _id: file._id,
48
+ files: [file],
49
+ createdOn: file.createdOn,
50
+ createdBy: file.createdBy
51
+ });
52
+ });
53
+ }
54
+
55
+ if (deficiencies && deficiencies.length > 0) {
56
+ deficiencies.forEach(function (deficiency) {
57
+ if (deficiency.deleted) return;
58
+ activity.push(_objectSpread({
59
+ type: _ActivityTypes["default"].deficiency,
60
+ visibility: deficiency.visibiltiy || 'public',
61
+ //Legacy deficiencies are public to the submission
62
+ files: deficiency.files || []
63
+ }, deficiency));
64
+ });
65
+ }
66
+
67
+ activity.sort(function (a, b) {
68
+ return a.createdOn - b.createdOn;
69
+ });
70
+ return activity;
71
+ };
72
+ /**
73
+ *
74
+ * Template should be a template that is using the new getTemplateWithLookups
75
+ */
76
+
77
+
78
+ exports.getFormattedActivity = getFormattedActivity;
79
+
80
+ var addDocumentDataToActivities = function addDocumentDataToActivities(activities, doc, template) {
81
+ var templateFieldLookup = {};
82
+
83
+ if (template.fields && template.fields.length > 0) {
84
+ template.fields.forEach(function (field) {
85
+ return templateFieldLookup[field._id] = field;
86
+ });
87
+ }
88
+
89
+ var fieldValues = doc && doc.fields ? doc.fields : null;
90
+ var fieldSettings = doc && doc.fieldSettings ? doc.fieldSettings : {};
91
+ if (!activities || activities.length < 1 || !templateFieldLookup || !fieldValues) return activities;
92
+ var fieldRowsLookup = {};
93
+ var fieldRowIndexLookup = {};
94
+ var nextActivities = [];
95
+ activities.forEach(function (activity) {
96
+ var nextActivity = _objectSpread({}, activity);
97
+
98
+ if (activity.document && activity.document.field) {
99
+ var docFieldValue = fieldValues[activity.document.field];
100
+ var templateField = templateFieldLookup[activity.document.field];
101
+ nextActivity.document.title = templateField.title;
102
+ nextActivity.document.type = templateField.type;
103
+ nextActivity.document.columns = templateField.tableColumns;
104
+
105
+ if (docFieldValue && templateField.type === _FieldTypes["default"].table) {
106
+ /**
107
+ * Table Step 1: create an easy way to lookup a row with the dropdown cells populated.
108
+ *
109
+ * We only need to generate the row lookup once per field to help increase performance,
110
+ * just incase we have other deficiencies that reference the same table field.
111
+ */
112
+
113
+ /**
114
+ * Removing deleted rows from doc field value
115
+ * Added as a fix for table bug that did not display proper output for formula cells
116
+ * as rowIndex was messy
117
+ */
118
+ var nextDocFieldValue = (0, _tableHelper.getRows)(docFieldValue);
119
+
120
+ if (!fieldRowsLookup[templateField._id]) {
121
+ fieldRowsLookup[templateField._id] = (0, _tableHelper.getTableRowLookupWithPopulatedDropdownCells)(templateField.tableColumns, nextDocFieldValue);
122
+ }
123
+ /**
124
+ * Table Step 2: create an easy way to lookup a row index so we can use it in our row
125
+ * display component.
126
+ *
127
+ * We only need to generate the row index lookup once per field to help increase performance,
128
+ * just incase we have other deficiencies that reference the same table field.
129
+ */
130
+
131
+
132
+ if (!fieldRowIndexLookup[templateField._id]) {
133
+ fieldRowIndexLookup[templateField._id] = (0, _tableHelper.getRowIndexLookup)(templateField._id, fieldSettings, docFieldValue);
134
+ }
135
+ /**
136
+ * Table Step 3: Add row and rowIndex to the activity.document object for easy reference.
137
+ *
138
+ * nextActivity.document.value will now contain the single row object with all cell values populated ready to be displayed
139
+ */
140
+
141
+
142
+ if (fieldRowsLookup[activity.document.field] && fieldRowIndexLookup[activity.document.field]) {
143
+ nextActivity.document.value = fieldRowsLookup[activity.document.field][activity.document.row];
144
+ nextActivity.document.rowIndex = fieldRowIndexLookup[activity.document.field][activity.document.row];
145
+ }
146
+ } else if (docFieldValue && templateField.type === _FieldTypes["default"].inputGroup) {
147
+ /**
148
+ * Input Group Step 1: create an easy way to lookup a row with the dropdown cells populated.
149
+ *
150
+ * We only need to generate the row lookup once per field (since input groups are just rows)
151
+ * to help increase performance, just incase we have other deficiencies that reference the same table field.
152
+ */
153
+ if (!fieldRowsLookup[templateField._id]) fieldRowsLookup[templateField._id] = (0, _tableHelper.getInputGroupRowLookupWithPopulatedDropdownCells)(templateField.tableColumns, docFieldValue);
154
+ /**
155
+ * Input Group Step 2: Add invidual row.cell value. We only add the invidual cell value and not the
156
+ * whole row because input group display components are treated like regular field and not like table rows.
157
+ */
158
+
159
+ if (fieldRowsLookup[activity.document.field] && fieldRowsLookup[activity.document.field][activity.document.row] && fieldRowsLookup[activity.document.field][activity.document.row].cells[activity.document.column]) {
160
+ nextActivity.document.value = fieldRowsLookup[activity.document.field][activity.document.row].cells[activity.document.column];
161
+ }
162
+ } else if (docFieldValue && templateField.type === _FieldTypes["default"].multiSelect) {
163
+ var parsedDocFieldValue = docFieldValue && typeof docFieldValue === 'string' ? docFieldValue.split(',') : docFieldValue;
164
+ var _nextDocFieldValue = '';
165
+
166
+ if (parsedDocFieldValue.length > 0) {
167
+ parsedDocFieldValue.forEach(function (item) {
168
+ var option = templateField.optionsLookup[item];
169
+ if (!option) return;
170
+ _nextDocFieldValue = _nextDocFieldValue.concat(option.value, ', ');
171
+ });
172
+ }
173
+
174
+ nextActivity.document.value = _nextDocFieldValue;
175
+ } //This should handle adding the display value for selection and regular input fields
176
+ else {
177
+ var option = templateField.optionsLookup[docFieldValue];
178
+ nextActivity.document.value = option && option.value ? option.value : docFieldValue;
179
+ }
180
+ }
181
+
182
+ nextActivities.push(nextActivity);
183
+ });
184
+ return nextActivities;
185
+ };
186
+
187
+ exports.addDocumentDataToActivities = addDocumentDataToActivities;
188
+ var _default = {
189
+ getFormattedActivity: getFormattedActivity,
190
+ addDocumentDataToActivities: addDocumentDataToActivities
191
+ };
192
+ exports["default"] = _default;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ /**
9
+ * See what keys have changed between two objects.
10
+ *
11
+ * Used primarily right now to compare what props have changed for
12
+ * a react component.
13
+ *
14
+ * @param {Object} o1
15
+ * @param {Object} o2
16
+ *
17
+ * @returns {Array}
18
+ */
19
+ var changedKeys = function changedKeys() {
20
+ var o1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
21
+ var o2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
22
+ var o1Keys = Object.keys(o1);
23
+ var o2Keys = Object.keys(o2);
24
+ var keys = [];
25
+ o1Keys.forEach(function (key) {
26
+ if (keys.indexOf(key) === -1) keys.push(key);
27
+ });
28
+ o2Keys.forEach(function (key) {
29
+ if (keys.indexOf(key) === -1) keys.push(key);
30
+ });
31
+ return keys.filter(function (key) {
32
+ return o1[key] !== o2[key];
33
+ });
34
+ };
35
+
36
+ var _default = changedKeys;
37
+ exports["default"] = _default;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.getDefaultLinePoint = exports.getDefaultLine = void 0;
9
+
10
+ var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
11
+
12
+ var getDefaultLine = function getDefaultLine() {
13
+ /**
14
+ * Why do we add more than 1 points by default to the new line?
15
+ *
16
+ * There is bug with victory-native that will throw an error if
17
+ * there aren't two data points in the array.
18
+ */
19
+ return {
20
+ _id: (0, _generateObjectId["default"])(),
21
+ deleted: false,
22
+ title: '',
23
+ description: '',
24
+ points: [getDefaultLinePoint(), getDefaultLinePoint(), getDefaultLinePoint()]
25
+ };
26
+ };
27
+
28
+ exports.getDefaultLine = getDefaultLine;
29
+
30
+ var getDefaultLinePoint = function getDefaultLinePoint() {
31
+ return {
32
+ _id: (0, _generateObjectId["default"])(),
33
+ label: '',
34
+ y: 0,
35
+ x: 0
36
+ };
37
+ };
38
+
39
+ exports.getDefaultLinePoint = getDefaultLinePoint;
40
+ var _default = {
41
+ getDefaultLine: getDefaultLine,
42
+ getDefaultLinePoint: getDefaultLinePoint
43
+ };
44
+ exports["default"] = _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.file = exports.deficiency = exports.comment = void 0;
7
+ var comment = 'comment';
8
+ exports.comment = comment;
9
+ var deficiency = 'deficiency';
10
+ exports.deficiency = deficiency;
11
+ var file = 'file';
12
+ exports.file = file;
13
+ var _default = {
14
+ comment: comment,
15
+ deficiency: deficiency,
16
+ file: file
17
+ };
18
+ exports["default"] = _default;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ /**
9
+ * Are we displaying the entire original field
10
+ *
11
+ * For instance, if displayType is original for a table field then we are
12
+ * displaying the entire component. If it is text,
13
+ * circle, square, etc. then that means we are
14
+ * only displaying an invidiual mapped cell from
15
+ * the table or input group. Same is true for dropdown and multi-select fields.
16
+ */
17
+ var original = 'original';
18
+ /**
19
+ * Meant to be used as original display type but horizontal.
20
+ * Primarily used for multi-select field right now.
21
+ */
22
+
23
+ var horizontal = 'horizontal'; //Selector types: Used for individually mapping cells and options
24
+
25
+ var text = 'text';
26
+ var circle = 'circle';
27
+ var square = 'square';
28
+ var check = 'check';
29
+ var radio = 'radio';
30
+ var _default = {
31
+ original: original,
32
+ horizontal: horizontal,
33
+ text: text,
34
+ circle: circle,
35
+ square: square,
36
+ check: check,
37
+ radio: radio
38
+ };
39
+ exports["default"] = _default;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.overlay = exports.normal = void 0;
7
+
8
+ /**
9
+ * Page field style modes
10
+ *
11
+ * Used to to determine how a field
12
+ * should be presented on the form.
13
+ */
14
+ var normal = 'normal';
15
+ exports.normal = normal;
16
+ var overlay = 'overlay';
17
+ exports.overlay = overlay;
18
+ var _default = {
19
+ normal: normal,
20
+ overlay: overlay
21
+ };
22
+ exports["default"] = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var text = 'text';
8
+ var dropdown = 'dropdown';
9
+ var image = 'dropdown';
10
+ var _default = {
11
+ text: text,
12
+ dropdown: dropdown,
13
+ image: image
14
+ };
15
+ exports["default"] = _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var rowMenu = 'rowMenu';
8
+ var rowNumber = 'rowNumber';
9
+ var _default = {
10
+ rowMenu: rowMenu,
11
+ rowNumber: rowNumber
12
+ };
13
+ exports["default"] = _default;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ // Display Fields
8
+ var uniqueId = 'uniqueId';
9
+ var image = 'image';
10
+ var richText = 'richText'; // Data Fields
11
+
12
+ var text = 'text';
13
+ var textarea = 'textarea';
14
+ var number = 'number';
15
+ var dropdown = 'dropdown';
16
+ var multiSelect = 'multiSelect';
17
+ var date = 'date';
18
+ var signature = 'signature';
19
+ var list = 'list';
20
+ var user = 'user';
21
+ var task = 'task';
22
+ var table = 'table';
23
+ var inputGroup = 'inputGroup';
24
+ var chart = 'chart';
25
+ var types = {
26
+ uniqueId: uniqueId,
27
+ image: image,
28
+ richText: richText,
29
+ text: text,
30
+ textarea: textarea,
31
+ number: number,
32
+ date: date,
33
+ signature: signature,
34
+ list: list,
35
+ user: user,
36
+ task: task,
37
+ table: table,
38
+ inputGroup: inputGroup,
39
+ chart: chart,
40
+ multiSelect: multiSelect,
41
+ dropdown: dropdown
42
+ };
43
+ types.all = Object.keys(types);
44
+ types.titles = {
45
+ uniqueId: 'Auto Number',
46
+ image: 'Image',
47
+ richText: 'Rich Text',
48
+ text: 'Short Text',
49
+ textarea: 'Long Text',
50
+ number: 'Number',
51
+ date: 'Date',
52
+ signature: 'Signature',
53
+ user: 'User',
54
+ table: 'Table Field',
55
+ inputGroup: 'Field Group',
56
+ chart: 'Performance Chart',
57
+ multiSelect: 'Checkbox',
58
+ dropdown: 'Dropdown'
59
+ };
60
+ var _default = types;
61
+ exports["default"] = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.generic = exports.signature = void 0;
7
+ var signature = 'signature';
8
+ exports.signature = signature;
9
+ var generic = 'generic';
10
+ exports.generic = generic;
11
+ var _default = {
12
+ signature: signature,
13
+ generic: generic
14
+ };
15
+ exports["default"] = _default;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var customerGroup = 'customerGroup';
8
+ var customer = 'customer';
9
+ var _default = {
10
+ customerGroup: customerGroup,
11
+ customer: customer
12
+ };
13
+ exports["default"] = _default;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ /**
9
+ * Page layout modes
10
+ */
11
+ var grid = 'grid';
12
+ var overlay = 'overlay';
13
+ var _default = {
14
+ grid: grid,
15
+ overlay: overlay
16
+ };
17
+ exports["default"] = _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ /**
9
+ * Role Types:
10
+ *
11
+ * admin - They can do everything
12
+ * contributor - They can do everything, except modify users or templates
13
+ * readyOnly - They can see all but can't do anything.
14
+ * restricted - They can only see the stuff they authored. They don't have access to any other users stuff.
15
+ */
16
+ var roles = {
17
+ admin: {
18
+ value: 'admin',
19
+ label: 'Full Access'
20
+ },
21
+ contributor: {
22
+ value: 'contributor',
23
+ label: 'Limited Access'
24
+ },
25
+ readOnly: {
26
+ value: 'readOnly',
27
+ label: 'ReadOnly'
28
+ },
29
+ restricted: {
30
+ value: 'restricted',
31
+ label: 'Restricted'
32
+ }
33
+ };
34
+ roles.all = Object.keys(roles).map(function (key) {
35
+ return roles[key];
36
+ });
37
+ var _default = roles;
38
+ exports["default"] = _default;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.inputGroupFieldTypes = exports.viewTypes = exports.operandLetters = exports.operandLetterIndexes = void 0;
7
+ var operandLetterIndexes = {
8
+ A: 0,
9
+ B: 1,
10
+ C: 2,
11
+ D: 3,
12
+ E: 4,
13
+ F: 5,
14
+ G: 6,
15
+ H: 7,
16
+ I: 8,
17
+ J: 9,
18
+ K: 10,
19
+ L: 11,
20
+ M: 12,
21
+ N: 13,
22
+ O: 14,
23
+ P: 15,
24
+ Q: 16,
25
+ R: 17,
26
+ S: 18,
27
+ T: 19,
28
+ U: 20,
29
+ V: 21,
30
+ W: 22,
31
+ X: 23,
32
+ Y: 24,
33
+ Z: 25,
34
+ AA: 26,
35
+ AB: 27,
36
+ AC: 28,
37
+ AD: 29,
38
+ AE: 30,
39
+ AF: 31,
40
+ AG: 32,
41
+ AH: 33,
42
+ AI: 34,
43
+ AJ: 35,
44
+ AK: 36,
45
+ AL: 37,
46
+ AM: 38,
47
+ AN: 39,
48
+ AO: 40,
49
+ AP: 41,
50
+ AQ: 42,
51
+ AR: 43,
52
+ AS: 44,
53
+ AT: 45,
54
+ AU: 46,
55
+ AV: 47,
56
+ AW: 48,
57
+ AX: 49,
58
+ AY: 50,
59
+ AZ: 51
60
+ };
61
+ exports.operandLetterIndexes = operandLetterIndexes;
62
+ var operandLetters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ'];
63
+ exports.operandLetters = operandLetters;
64
+ var viewTypes = {
65
+ list: 'list',
66
+ table: 'table'
67
+ };
68
+ exports.viewTypes = viewTypes;
69
+ var inputGroupFieldTypes = {
70
+ inputGroupRowHeader: 'inputGroupRowHeader',
71
+ inputGroupDropdownCell: 'inputGroupDropdownCell',
72
+ inputGroupTextCell: 'inputGroupTextCell',
73
+ inputGroupFooter: 'inputGroupFooter'
74
+ };
75
+ exports.inputGroupFieldTypes = inputGroupFieldTypes;
76
+ var _default = {
77
+ operandLetters: operandLetters,
78
+ viewTypes: viewTypes,
79
+ inputGroupFieldTypes: inputGroupFieldTypes
80
+ };
81
+ exports["default"] = _default;