@builttocreate/engine-utils 2.9.1-beta.758 → 2.9.1-beta.758.2

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,307 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.isTargetOptionDeleted = exports.isFieldEmpty = exports.handleMultiSelectOptionToggle = exports.getTemplateWithLookups = exports.getMultiSelectFieldValue = exports.getImportFieldValues = exports.getDefaultOption = exports.getDefaultFieldValuesFromTemplate = exports.getChartFieldValue = exports["default"] = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+ var _chartHelper = require("./chartHelper");
12
+ var _tableHelper = require("./tableHelper");
13
+ var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
14
+ var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ /**
18
+ * Get chart field line data
19
+ *
20
+ * @param (String|Object) value
21
+ */
22
+ var getChartFieldValue = exports.getChartFieldValue = function getChartFieldValue(value) {
23
+ var parsedData = value || [];
24
+ if (value && typeof value === 'string') {
25
+ parsedData = JSON.parse(value);
26
+ }
27
+ if (parsedData && parsedData.length > 0) {
28
+ parsedData = parsedData.filter(function (line) {
29
+ return !line.deleted;
30
+ });
31
+ }
32
+ return (0, _toConsumableArray2["default"])(parsedData);
33
+ };
34
+
35
+ /**
36
+ * Get default option
37
+ *
38
+ * These options are primarily used by dropdown and selection fields
39
+ *
40
+ * @param {String} value
41
+ * @return {Object}
42
+ */
43
+ var getDefaultOption = exports.getDefaultOption = function getDefaultOption(value) {
44
+ return {
45
+ _id: (0, _generateObjectId["default"])(),
46
+ value: value || 'Option',
47
+ deleted: false
48
+ };
49
+ };
50
+
51
+ /**
52
+ * Get multiselect field value
53
+ *
54
+ * @param (String|Array) value
55
+ * @return Array
56
+ */
57
+ var getMultiSelectFieldValue = exports.getMultiSelectFieldValue = function getMultiSelectFieldValue(value) {
58
+ if (value && typeof value === 'string') {
59
+ return value.replace(/\s/g, '').split(','); //Legacy (document v1) support for multiSelect value
60
+ } else if (value && Array.isArray(value)) {
61
+ return (0, _toConsumableArray2["default"])(value);
62
+ } else {
63
+ return [];
64
+ }
65
+ };
66
+
67
+ /**
68
+ * Update the selected options.
69
+ *
70
+ * @param (Bool) multi
71
+ * @param (Array) selectedOptions //[optionId, optionId, ...]
72
+ * @param (String) optionId //Option that is being toggled
73
+ */
74
+ var handleMultiSelectOptionToggle = exports.handleMultiSelectOptionToggle = function handleMultiSelectOptionToggle(multi) {
75
+ var selectedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
76
+ var optionId = arguments.length > 2 ? arguments[2] : undefined;
77
+ var nextSelection = (0, _toConsumableArray2["default"])(selectedOptions);
78
+ var optionIndex = nextSelection.indexOf(optionId);
79
+ if (multi) {
80
+ if (optionIndex !== -1) {
81
+ nextSelection.splice(optionIndex, 1);
82
+ } else if (multi) {
83
+ nextSelection.push(optionId);
84
+ }
85
+ } else {
86
+ //Not multi
87
+ if (optionIndex !== -1) {
88
+ nextSelection = [];
89
+ } else {
90
+ nextSelection = [optionId];
91
+ }
92
+ }
93
+ return nextSelection;
94
+ };
95
+
96
+ /**
97
+ * Get default field values from template
98
+ *
99
+ * @param {Object} template
100
+ * @param {String} defaultUserId
101
+ */
102
+ var getDefaultFieldValuesFromTemplate = exports.getDefaultFieldValuesFromTemplate = function getDefaultFieldValuesFromTemplate(template, defaultUserId) {
103
+ var fields = {};
104
+ template.fields.forEach(function (field) {
105
+ if (!field || field.deleted || field.type === _FieldTypes["default"].uniqueId || field.type === _FieldTypes["default"].task || field.type === _FieldTypes["default"].signature || field.type === _FieldTypes["default"].file || field.type === _FieldTypes["default"].image || field.type === _FieldTypes["default"].richText) {
106
+ return;
107
+ }
108
+ if (field.value) {
109
+ fields[field._id] = field.value;
110
+ }
111
+ if (field.type === _FieldTypes["default"].table) {
112
+ fields[field._id] = field.value ? JSON.stringify((0, _tableHelper.getRows)(field.value)) : JSON.stringify([(0, _tableHelper.getDefaultRow)()]);
113
+ }
114
+ if (field.type === _FieldTypes["default"].chart) {
115
+ fields[field._id] = JSON.stringify([(0, _chartHelper.getDefaultLine)()]);
116
+ }
117
+ if (field.type === _FieldTypes["default"].inputGroup) {
118
+ var newRow = (0, _tableHelper.getDefaultRow)();
119
+ field.tableColumns.forEach(function (column) {
120
+ if (column.value) newRow.cells[column._id] = column.value;
121
+ });
122
+ fields[field._id] = JSON.stringify([newRow]);
123
+ }
124
+ if (field.type === _FieldTypes["default"].multiSelect) {
125
+ fields[field._id] = field.value && Array.isArray(field.value) ? field.value.join(',') : '';
126
+ }
127
+ if (field.type === _FieldTypes["default"].user) {
128
+ fields[field._id] = field.value || defaultUserId;
129
+ }
130
+ if (field.type === _FieldTypes["default"].date) {
131
+ fields[field._id] = field.blockAutoPopulate ? '' : field.value || new Date().getTime();
132
+ }
133
+ });
134
+ return fields;
135
+ };
136
+
137
+ /**
138
+ * Get import field values from source document for target document
139
+ *
140
+ * @param {Object} template
141
+ * @param {Object} importSource //Document source you're importing
142
+ * @param {Object} importTarget //Document that is having it's fields overwritten by import source
143
+ */
144
+ var getImportFieldValues = exports.getImportFieldValues = function getImportFieldValues(template, importSource, importTarget) {
145
+ var fields = {};
146
+ template.fields.forEach(function (field) {
147
+ //Document field value that is being imported
148
+ var sourceFieldValue = importSource.fields[field._id];
149
+
150
+ //Document field value that is being overwritten
151
+ var targetFieldValue = importTarget.fields[field._id];
152
+ if (field.deleted || field.blockImport || field.type === _FieldTypes["default"].uniqueId || field.type === _FieldTypes["default"].task || field.type === _FieldTypes["default"].signature || field.type === _FieldTypes["default"].file || field.type === _FieldTypes["default"].richText || field.type === _FieldTypes["default"].image) {
153
+ return;
154
+ } else if ((field.type === _FieldTypes["default"].table || field.type === _FieldTypes["default"].inputGroup) && sourceFieldValue) {
155
+ var nextTableFieldValues = [];
156
+ var rows = (0, _tableHelper.getRows)(sourceFieldValue);
157
+ var currentDocRows = targetFieldValue ? (0, _tableHelper.getRows)(targetFieldValue) : [];
158
+ rows.forEach(function (row, i) {
159
+ var newRow = _objectSpread(_objectSpread({}, row), {}, {
160
+ cells: {}
161
+ });
162
+ field.tableColumns.forEach(function (column) {
163
+ /**
164
+ * Option 1: Add cell value from source document
165
+ */
166
+ if (!column.blockImport) {
167
+ newRow.cells[column._id] = row.cells[column._id] || '';
168
+ }
169
+ /**
170
+ * Option 2: If column has block import enabled then maintain any values
171
+ * already set in the importTarget document.
172
+ */else if (column.blockImport && currentDocRows[i] && currentDocRows[i].cells[column._id]) {
173
+ newRow.cells[column._id] = currentDocRows[i].cells[column._id];
174
+ }
175
+ /**
176
+ * Option 3: If column has block import enabled then add default column value
177
+ */else if (column.blockImport && column.value) {
178
+ newRow.cells[column._id] = column.value;
179
+ }
180
+ });
181
+ nextTableFieldValues.push(newRow);
182
+ });
183
+ fields[field._id] = JSON.stringify(nextTableFieldValues);
184
+ } else if (field.type === _FieldTypes["default"].chart && sourceFieldValue) {
185
+ fields[field._id] = (0, _typeof2["default"])(sourceFieldValue) === 'object' ? JSON.stringify(sourceFieldValue) : sourceFieldValue;
186
+ } else if (field.type === _FieldTypes["default"].multiSelect && sourceFieldValue) {
187
+ fields[field._id] = typeof sourceFieldValue !== 'string' ? sourceFieldValue.join(',') : sourceFieldValue;
188
+ } else if (sourceFieldValue) {
189
+ fields[field._id] = sourceFieldValue;
190
+ }
191
+ });
192
+ return fields;
193
+ };
194
+
195
+ /**
196
+ * Generate optionsLookup and fieldLookup for template fields
197
+ * Note: Options lookup will be used by dropdown, mutliSelect, table and inputGroup fields
198
+ * to display value in dropdowns
199
+ * @param {} template
200
+ * @returns template
201
+ */
202
+
203
+ var getTemplateWithLookups = exports.getTemplateWithLookups = function getTemplateWithLookups(template) {
204
+ var nextTemplate = _objectSpread({}, template);
205
+ nextTemplate.fields = [];
206
+ nextTemplate.fieldLookup = {};
207
+ template.fields.forEach(function (field) {
208
+ var nextField = _objectSpread({}, field);
209
+ nextField.optionsLookup = {};
210
+ if (nextField.options) {
211
+ nextField.options.forEach(function (option) {
212
+ return nextField.optionsLookup[option._id] = option;
213
+ });
214
+ }
215
+ if (nextField.tableColumns) {
216
+ nextField.tableColumnsLookup = {};
217
+ nextField.tableColumns.forEach(function (column, index) {
218
+ var nextColumn = _objectSpread(_objectSpread({}, column), {}, {
219
+ optionsLookup: {}
220
+ });
221
+ if (nextColumn.options) {
222
+ nextColumn.options.forEach(function (option) {
223
+ return nextColumn.optionsLookup[option._id] = option;
224
+ });
225
+ }
226
+ nextField.tableColumns[index] = nextColumn;
227
+ });
228
+ }
229
+ nextTemplate.fields.push(nextField);
230
+ nextTemplate.fieldLookup[nextField._id] = nextField;
231
+ });
232
+ return nextTemplate;
233
+ };
234
+
235
+ /**
236
+ * This method checks if the field passed via input is empty by checking
237
+ * the field.value.
238
+ * @param {*} fieldProps
239
+ * @returns
240
+ */
241
+
242
+ var isFieldEmpty = exports.isFieldEmpty = function isFieldEmpty(fieldType, fieldValue, fieldOptions) {
243
+ var isEmpty = false;
244
+ if (fieldType === _FieldTypes["default"].text && (!fieldValue || fieldValue && fieldValue.replace(/\s+/g, '').length === 0)) {
245
+ isEmpty = true;
246
+ } else if (fieldType === _FieldTypes["default"].textarea && (!fieldValue || fieldValue && fieldValue.replace(/\s+/g, '').length === 0)) {
247
+ isEmpty = true;
248
+ } else if (fieldType === _FieldTypes["default"].number && typeof fieldValue !== 'number') {
249
+ isEmpty = true;
250
+ } else if (fieldType === _FieldTypes["default"].date && !fieldValue) {
251
+ isEmpty = true;
252
+ } else if (fieldType === _FieldTypes["default"].signature && !fieldValue) {
253
+ isEmpty = true;
254
+ } else if (fieldType === _FieldTypes["default"].dropdown && (!fieldValue || fieldValue && fieldOptions.length > 0 && isTargetOptionDeleted(fieldValue, fieldOptions))) {
255
+ isEmpty = true;
256
+ } else if (fieldType === _FieldTypes["default"].multiSelect && (!fieldValue || fieldValue && fieldOptions.length > 0 && isTargetOptionDeleted(fieldValue, fieldOptions))) {
257
+ isEmpty = true;
258
+ } else if (fieldType === _FieldTypes["default"].image && (!fieldValue || fieldValue && fieldValue.length === 0)) {
259
+ isEmpty = true;
260
+ } else if (fieldType === _FieldTypes["default"].file && (!fieldValue || fieldValue && fieldValue.length === 0)) {
261
+ isEmpty = true;
262
+ } else if (fieldType === _FieldTypes["default"].chart && (!fieldValue || fieldValue && fieldValue.length === 0)) {
263
+ isEmpty = true;
264
+ } else if (fieldType === _FieldTypes["default"].table && (!fieldValue || fieldValue && fieldValue.filter(function (item) {
265
+ return !item.deleted;
266
+ }).length === 0)) {
267
+ isEmpty = true;
268
+ }
269
+ return isEmpty;
270
+ };
271
+
272
+ /**
273
+ * This function checks whether an option associated with multiselect or dropdown
274
+ * field is deleted.
275
+ * @param {*} value // value
276
+ * @param {*} options
277
+ */
278
+ var isTargetOptionDeleted = exports.isTargetOptionDeleted = function isTargetOptionDeleted(value, options) {
279
+ /***
280
+ * We are converting the value that is passed in to array since
281
+ * this method is used by dropdown field and multiSelect field
282
+ * Dropdown passes the value as a string whereas mutliselect passes
283
+ * the value as an array
284
+ */
285
+ var nextValue = Array.isArray(value) ? value : [value];
286
+ if (!nextValue || nextValue.length === 0) return true;
287
+ var optionsLookup = {};
288
+ options.forEach(function (option) {
289
+ optionsLookup[option._id] = option;
290
+ });
291
+ var undeletedOptions = nextValue.filter(function (item) {
292
+ return optionsLookup[item] && !optionsLookup[item].deleted;
293
+ });
294
+ var result = !(undeletedOptions.length > 0);
295
+ return result;
296
+ };
297
+ var _default = exports["default"] = {
298
+ getDefaultOption: getDefaultOption,
299
+ getChartFieldValue: getChartFieldValue,
300
+ getMultiSelectFieldValue: getMultiSelectFieldValue,
301
+ handleMultiSelectOptionToggle: handleMultiSelectOptionToggle,
302
+ getDefaultFieldValuesFromTemplate: getDefaultFieldValuesFromTemplate,
303
+ getImportFieldValues: getImportFieldValues,
304
+ getTemplateWithLookups: getTemplateWithLookups,
305
+ isFieldEmpty: isFieldEmpty,
306
+ isTargetOptionDeleted: isTargetOptionDeleted
307
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getGroupedFilesByType = exports["default"] = void 0;
8
+ var _FileTypes = _interopRequireDefault(require("./constants/FileTypes"));
9
+ var getGroupedFilesByType = exports.getGroupedFilesByType = function getGroupedFilesByType(files) {
10
+ var images = [];
11
+ var other = [];
12
+ var signatures = [];
13
+ if (files) {
14
+ files.forEach(function (file) {
15
+ if (file.deleted) return;else if (file.type === _FileTypes["default"].signature) signatures.push(file);else if (/\.png|\.jpg|\.jpeg/gi.test(file.name)) images.push(file);else other.push(file);
16
+ });
17
+ }
18
+ return {
19
+ images: images,
20
+ signatures: signatures,
21
+ other: other
22
+ };
23
+ };
24
+ var _default = exports["default"] = {
25
+ getGroupedFilesByType: getGroupedFilesByType
26
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ //Found this ObjectId generator here: https://stackoverflow.com/a/37438675
8
+ var _default = exports["default"] = function _default() {
9
+ var m = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Math;
10
+ var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date;
11
+ var h = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 16;
12
+ var s = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function (s) {
13
+ return m.floor(s).toString(h);
14
+ };
15
+ return s(d.now() / 1000) + ' '.repeat(h).replace(/./g, function () {
16
+ return s(m.random() * h);
17
+ });
18
+ };
package/dist/index.js ADDED
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "CALL_API", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _reduxApiMiddleware.CALL_API;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "Roles", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _Roles["default"];
18
+ }
19
+ });
20
+ exports.activityHelper = void 0;
21
+ Object.defineProperty(exports, "changedKeys", {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _changedKeys["default"];
25
+ }
26
+ });
27
+ exports.fileHelper = exports.fieldHelper = exports["default"] = exports.chartHelper = void 0;
28
+ Object.defineProperty(exports, "generateObjectId", {
29
+ enumerable: true,
30
+ get: function get() {
31
+ return _generateObjectId["default"];
32
+ }
33
+ });
34
+ exports.paginationHelper = exports.joyDocHelper = void 0;
35
+ Object.defineProperty(exports, "reduxApiMiddleware", {
36
+ enumerable: true,
37
+ get: function get() {
38
+ return _reduxApiMiddleware["default"];
39
+ }
40
+ });
41
+ exports.tableHelper = exports.roleHelper = void 0;
42
+ Object.defineProperty(exports, "validateObjectId", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _validateObjectId["default"];
46
+ }
47
+ });
48
+ var tableHelper = _interopRequireWildcard(require("./tableHelper"));
49
+ exports.tableHelper = tableHelper;
50
+ var chartHelper = _interopRequireWildcard(require("./chartHelper"));
51
+ exports.chartHelper = chartHelper;
52
+ var fieldHelper = _interopRequireWildcard(require("./fieldHelper"));
53
+ exports.fieldHelper = fieldHelper;
54
+ var activityHelper = _interopRequireWildcard(require("./activityHelper"));
55
+ exports.activityHelper = activityHelper;
56
+ var fileHelper = _interopRequireWildcard(require("./fileHelper"));
57
+ exports.fileHelper = fileHelper;
58
+ var roleHelper = _interopRequireWildcard(require("./roleHelper"));
59
+ exports.roleHelper = roleHelper;
60
+ var joyDocHelper = _interopRequireWildcard(require("./joyDocHelper"));
61
+ exports.joyDocHelper = joyDocHelper;
62
+ var _reduxApiMiddleware = _interopRequireWildcard(require("./reduxApiMiddleware"));
63
+ var paginationHelper = _interopRequireWildcard(require("./paginationHelper"));
64
+ exports.paginationHelper = paginationHelper;
65
+ var _changedKeys = _interopRequireDefault(require("./changedKeys"));
66
+ var _Roles = _interopRequireDefault(require("./constants/Roles"));
67
+ var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
68
+ var _validateObjectId = _interopRequireDefault(require("./validateObjectId"));
69
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
70
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) { if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } } return n["default"] = e, t && t.set(e, n), n; }
71
+ var _default = exports["default"] = {
72
+ fileHelper: fileHelper,
73
+ tableHelper: tableHelper,
74
+ chartHelper: chartHelper,
75
+ fieldHelper: fieldHelper,
76
+ joyDocHelper: joyDocHelper,
77
+ activityHelper: activityHelper,
78
+ reduxApiMiddleware: _reduxApiMiddleware["default"],
79
+ CALL_API: _reduxApiMiddleware.CALL_API,
80
+ paginationHelper: paginationHelper,
81
+ changedKeys: _changedKeys["default"],
82
+ roleHelper: roleHelper,
83
+ Roles: _Roles["default"],
84
+ generateObjectId: _generateObjectId["default"],
85
+ validateObjectId: _validateObjectId["default"]
86
+ };