@builttocreate/engine-utils 2.7.0 → 2.8.0-beta.10

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.
@@ -1,77 +1,49 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
- exports.validFormulaString = exports.spreadOperandRange = exports.sortRows = exports.sortColumns = exports.resolveOperandValue = exports.hasOperandRange = exports.hasCircularOperandReference = exports.handleTableCellChange = exports.handleMoveTableRowUp = exports.handleMoveTableRowDown = exports.handleMoveColumnRight = exports.handleMoveColumnLeft = exports.handleInsertTableRow = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.getTemplateColumnOperandLookup = exports.getTargetColumnWithOperand = exports.getTableRowLookupWithPopulatedDropdownCells = exports.getTableFieldRowOrder = exports.getTableFieldLookupKey = exports.getRows = exports.getRowOrder = exports.getRowMap = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getIndexesFromTableCellOperand = exports.getFormulaResult = exports.getFilteredRowOrder = exports.getDefaultTextColumn = exports.getDefaultRow = exports.getDefaultImageColumn = exports.getDefaultDropdownColumn = exports.getDefaultColumnOption = exports.getColumns = exports.getColumnOrder = exports.getColumnOperand = exports.getCleanedRowOrder = exports.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
11
-
8
+ exports.validFormulaString = exports.spreadOperandRange = exports.sortRows = exports.sortColumns = exports.resolveOperandValue = exports.hasOperandRange = exports.hasCircularOperandReference = exports.handleTableCellChange = exports.handleMoveTableRowUp = exports.handleMoveTableRowDown = exports.handleMoveColumnRight = exports.handleMoveColumnLeft = exports.handleInsertTableRow = exports.handleDuplicateTableRow = exports.handleCreateTableRow = exports.getTemplateColumnOperandLookup = exports.getTargetColumnWithOperand = exports.getTableRowLookupWithPopulatedDropdownCells = exports.getTableFieldRowOrder = exports.getTableFieldLookupKey = exports.getRows = exports.getRowOrder = exports.getRowMap = exports.getRowIndexLookup = exports.getInputGroupRowLookupWithPopulatedDropdownCells = exports.getIndexesFromTableCellOperand = exports.getFormulaResult = exports.getFilteredRowOrder = exports.getDefaultTextColumn = exports.getDefaultRow = exports.getDefaultImageColumn = exports.getDefaultDropdownColumn = exports.getDefaultColumnOption = exports.getColumns = exports.getColumnOrder = exports.getColumnOperand = exports.getCleanedRowOrder = exports.getCleanedColumnOrder = exports.getCellOperand = exports.generateTableLookupForRows = exports.generateTableLookup = exports.generateTableFieldLookups = exports.generateRowTableLookup = exports.generateInputGroupFields = exports["default"] = void 0;
12
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
-
18
12
  var _hotFormulaParser = require("@builttocreate/hot-formula-parser");
19
-
20
13
  var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
21
-
22
14
  var _Table = _interopRequireWildcard(require("./constants/Table"));
23
-
24
15
  var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
25
-
26
16
  var _FieldTableColumnTypes = _interopRequireDefault(require("./constants/FieldTableColumnTypes"));
27
-
28
17
  var _FieldTableCustomColumnIds = _interopRequireDefault(require("./constants/FieldTableCustomColumnIds"));
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
-
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
-
18
+ 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); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
20
+ 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; }
21
+ 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; }
38
22
  var parser = new _hotFormulaParser.Parser();
39
-
40
- var getTableFieldLookupKey = function getTableFieldLookupKey(fieldId, rowIndex, columnId) {
23
+ var getTableFieldLookupKey = exports.getTableFieldLookupKey = function getTableFieldLookupKey(fieldId, rowIndex, columnId) {
41
24
  return "".concat(fieldId, "-").concat(rowIndex, "-").concat(columnId);
42
25
  };
43
-
44
- exports.getTableFieldLookupKey = getTableFieldLookupKey;
45
-
46
- var getDefaultRow = function getDefaultRow() {
26
+ var getDefaultRow = exports.getDefaultRow = function getDefaultRow() {
47
27
  return {
48
28
  _id: (0, _generateObjectId["default"])(),
49
29
  deleted: false,
50
30
  cells: {}
51
31
  };
52
32
  };
53
-
54
- exports.getDefaultRow = getDefaultRow;
55
-
56
- var getRows = function getRows(rows) {
33
+ var getRows = exports.getRows = function getRows(rows) {
57
34
  var parsedRows = rows;
58
-
59
35
  if (typeof parsedRows === 'string') {
60
36
  parsedRows = JSON.parse(parsedRows);
61
37
  }
62
-
63
38
  return parsedRows ? parsedRows.filter(function (row) {
64
39
  return !row.deleted;
65
40
  }) : [];
66
41
  };
42
+
67
43
  /**
68
44
  * Sort rows based on rowOrder
69
45
  */
70
-
71
-
72
- exports.getRows = getRows;
73
-
74
- var sortRows = function sortRows(rows, rowOrder) {
46
+ var sortRows = exports.sortRows = function sortRows(rows, rowOrder) {
75
47
  if (!rowOrder) return rows;
76
48
  var rowLookup = {};
77
49
  rows.forEach(function (row) {
@@ -83,6 +55,7 @@ var sortRows = function sortRows(rows, rowOrder) {
83
55
  });
84
56
  return sortedRows;
85
57
  };
58
+
86
59
  /**
87
60
  * Filter table row order by cell values
88
61
  *
@@ -90,32 +63,25 @@ var sortRows = function sortRows(rows, rowOrder) {
90
63
  * @param {Array} rows
91
64
  * @param {Object} filters //{ colId: value, colId: value, ....}
92
65
  */
93
-
94
-
95
- exports.sortRows = sortRows;
96
-
97
- var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters) {
66
+ var getFilteredRowOrder = exports.getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters) {
98
67
  var filteredColumnIds = filters ? Object.keys(filters) : [];
99
68
  var validRowOrder = rowOrder;
100
-
101
69
  if (!validRowOrder) {
102
70
  var validRows = rows ? getRows(rows) : [];
103
71
  validRowOrder = validRows.map(function (row) {
104
72
  return row._id;
105
73
  });
106
74
  }
75
+
107
76
  /**
108
77
  * Remove any duplicate rowIds. We have had instances where
109
78
  * users encounter duplicate rowIds in the rowOrder.
110
79
  * See: https://github.com/zionlabs/Issues/issues/1589
111
80
  */
112
-
113
-
114
81
  var cleanedValidRowOrder = [];
115
82
  validRowOrder.forEach(function (rowId) {
116
83
  if (cleanedValidRowOrder.indexOf(rowId) === -1) cleanedValidRowOrder.push(rowId);
117
84
  });
118
-
119
85
  if (filteredColumnIds.length > 0) {
120
86
  var matchedRows = {};
121
87
  rows.forEach(function (row) {
@@ -135,6 +101,7 @@ var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters)
135
101
  return cleanedValidRowOrder;
136
102
  }
137
103
  };
104
+
138
105
  /**
139
106
  * Create a table row map for simple value lookup
140
107
  *
@@ -148,11 +115,7 @@ var getFilteredRowOrder = function getFilteredRowOrder(rowOrder, rows, filters)
148
115
  * @param {Array} rows
149
116
  * @return {Object}
150
117
  */
151
-
152
-
153
- exports.getFilteredRowOrder = getFilteredRowOrder;
154
-
155
- var getRowMap = function getRowMap() {
118
+ var getRowMap = exports.getRowMap = function getRowMap() {
156
119
  var rows = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
157
120
  var items = getRows(rows);
158
121
  var rowMap = {};
@@ -161,6 +124,7 @@ var getRowMap = function getRowMap() {
161
124
  });
162
125
  return rowMap;
163
126
  };
127
+
164
128
  /**
165
129
  * Get row order
166
130
  *
@@ -169,15 +133,12 @@ var getRowMap = function getRowMap() {
169
133
  *
170
134
  * @return {Array}
171
135
  */
172
-
173
-
174
- exports.getRowMap = getRowMap;
175
-
176
- var getRowOrder = function getRowOrder(rowOrder, rows) {
136
+ var getRowOrder = exports.getRowOrder = function getRowOrder(rowOrder, rows) {
177
137
  return rowOrder || getRows(rows).map(function (row) {
178
138
  return row._id;
179
139
  });
180
140
  };
141
+
181
142
  /**
182
143
  * Get row order for table field. If there isn't a row order set in the
183
144
  * fieldSettings then it will default to the normal row array Ids.
@@ -188,16 +149,13 @@ var getRowOrder = function getRowOrder(rowOrder, rows) {
188
149
  *
189
150
  * @return {Array}
190
151
  */
191
-
192
-
193
- exports.getRowOrder = getRowOrder;
194
-
195
- var getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSettings, rows) {
152
+ var getTableFieldRowOrder = exports.getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSettings, rows) {
196
153
  var filteredRows = rows ? getRows(rows) : [];
197
154
  return fieldSettings && fieldSettings[fieldId] && fieldSettings[fieldId].rowOrder ? (0, _toConsumableArray2["default"])(fieldSettings[fieldId].rowOrder) : filteredRows.map(function (row) {
198
155
  return row._id;
199
156
  });
200
157
  };
158
+
201
159
  /**
202
160
  * This method removes the rowIds of the deleted rows (or) any duplicate rowIds
203
161
  * from the rowOrder there by returning a cleaned rowOrder
@@ -206,16 +164,12 @@ var getTableFieldRowOrder = function getTableFieldRowOrder(fieldId, fieldSetting
206
164
  *
207
165
  * @returns {Array}
208
166
  **/
209
-
210
-
211
- exports.getTableFieldRowOrder = getTableFieldRowOrder;
212
-
213
- var getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
167
+ var getCleanedRowOrder = exports.getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
214
168
  var nextRowOrder = [];
169
+
215
170
  /**
216
171
  * Step 1: Handle generating or retrieving proper row order.
217
172
  */
218
-
219
173
  if (rowOrder && rowOrder.length > 0) {
220
174
  nextRowOrder = rowOrder;
221
175
  } else if (rows && rows.length > 0) {
@@ -223,11 +177,10 @@ var getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
223
177
  if (!row.deleted) nextRowOrder.push(row._id);
224
178
  });
225
179
  }
180
+
226
181
  /**
227
182
  * Step 2: Remove row Ids from rowOrder for rows that no longer exist or have been deleted
228
183
  */
229
-
230
-
231
184
  var rowLookup = {};
232
185
  rows.forEach(function (row) {
233
186
  return rowLookup[row._id] = row && !row.deleted;
@@ -235,27 +188,24 @@ var getCleanedRowOrder = function getCleanedRowOrder(rowOrder, rows) {
235
188
  nextRowOrder = nextRowOrder.filter(function (rowId) {
236
189
  return rowLookup[rowId];
237
190
  });
191
+
238
192
  /**
239
193
  * Step 3: Remove any duplicate row Id references in the row order.
240
194
  */
241
-
242
195
  var filteredNextRowOrder = [];
243
196
  nextRowOrder.forEach(function (rowId) {
244
197
  if (rowId && filteredNextRowOrder.indexOf(rowId) === -1) filteredNextRowOrder.push(rowId);
245
198
  });
246
199
  return filteredNextRowOrder;
247
200
  };
201
+
248
202
  /**
249
203
  * Handle Move Column Left
250
204
  *
251
205
  * @param {Number} columnIndex
252
206
  * @param {Func} callback
253
207
  */
254
-
255
-
256
- exports.getCleanedRowOrder = getCleanedRowOrder;
257
-
258
- var handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback) {
208
+ var handleMoveColumnLeft = exports.handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback) {
259
209
  //If first index then ignore
260
210
  if (columnIndex === 0) return;
261
211
  var targetIndex = columnIndex - 1;
@@ -263,6 +213,7 @@ var handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback)
263
213
  targetIndex: targetIndex
264
214
  });
265
215
  };
216
+
266
217
  /**
267
218
  * Handle Move Column Right
268
219
  *
@@ -270,11 +221,7 @@ var handleMoveColumnLeft = function handleMoveColumnLeft(columnIndex, callback)
270
221
  * @param {Number} columnIndex
271
222
  * @param {Func} callback
272
223
  */
273
-
274
-
275
- exports.handleMoveColumnLeft = handleMoveColumnLeft;
276
-
277
- var handleMoveColumnRight = function handleMoveColumnRight(columns, columnIndex, callback) {
224
+ var handleMoveColumnRight = exports.handleMoveColumnRight = function handleMoveColumnRight(columns, columnIndex, callback) {
278
225
  //If last column index then ignore
279
226
  if (columnIndex >= columns.length - 1) return;
280
227
  var targetIndex = columnIndex + 1;
@@ -282,23 +229,21 @@ var handleMoveColumnRight = function handleMoveColumnRight(columns, columnIndex,
282
229
  targetIndex: targetIndex
283
230
  });
284
231
  };
232
+
285
233
  /**
286
234
  * Get default column option
287
235
  *
288
236
  * @param {String} value
289
237
  * @return {Object}
290
238
  */
291
-
292
-
293
- exports.handleMoveColumnRight = handleMoveColumnRight;
294
-
295
- var getDefaultColumnOption = function getDefaultColumnOption(value) {
239
+ var getDefaultColumnOption = exports.getDefaultColumnOption = function getDefaultColumnOption(value) {
296
240
  return {
297
241
  _id: (0, _generateObjectId["default"])(),
298
242
  value: value || 'Option',
299
243
  deleted: false
300
244
  };
301
245
  };
246
+
302
247
  /**
303
248
  * Get default text column for table field
304
249
  *
@@ -306,11 +251,7 @@ var getDefaultColumnOption = function getDefaultColumnOption(value) {
306
251
  *
307
252
  * @return {Object}
308
253
  */
309
-
310
-
311
- exports.getDefaultColumnOption = getDefaultColumnOption;
312
-
313
- var getDefaultTextColumn = function getDefaultTextColumn() {
254
+ var getDefaultTextColumn = exports.getDefaultTextColumn = function getDefaultTextColumn() {
314
255
  var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
315
256
  return _objectSpread({
316
257
  _id: (0, _generateObjectId["default"])(),
@@ -320,6 +261,7 @@ var getDefaultTextColumn = function getDefaultTextColumn() {
320
261
  deleted: false
321
262
  }, defaults);
322
263
  };
264
+
323
265
  /**
324
266
  * Get default dropdown column for table field
325
267
  *
@@ -327,11 +269,7 @@ var getDefaultTextColumn = function getDefaultTextColumn() {
327
269
  *
328
270
  * @return {Object}
329
271
  */
330
-
331
-
332
- exports.getDefaultTextColumn = getDefaultTextColumn;
333
-
334
- var getDefaultImageColumn = function getDefaultImageColumn() {
272
+ var getDefaultImageColumn = exports.getDefaultImageColumn = function getDefaultImageColumn() {
335
273
  var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
336
274
  return _objectSpread({
337
275
  _id: (0, _generateObjectId["default"])(),
@@ -343,6 +281,7 @@ var getDefaultImageColumn = function getDefaultImageColumn() {
343
281
  maxImageHeight: 120
344
282
  }, defaults);
345
283
  };
284
+
346
285
  /**
347
286
  * Get default dropdown column for table field
348
287
  *
@@ -350,11 +289,7 @@ var getDefaultImageColumn = function getDefaultImageColumn() {
350
289
  *
351
290
  * @return {Object}
352
291
  */
353
-
354
-
355
- exports.getDefaultImageColumn = getDefaultImageColumn;
356
-
357
- var getDefaultDropdownColumn = function getDefaultDropdownColumn() {
292
+ var getDefaultDropdownColumn = exports.getDefaultDropdownColumn = function getDefaultDropdownColumn() {
358
293
  var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
359
294
  var options = defaults.options || [getDefaultColumnOption('Yes'), getDefaultColumnOption('No'), getDefaultColumnOption('N/A')];
360
295
  return _objectSpread({
@@ -369,6 +304,7 @@ var getDefaultDropdownColumn = function getDefaultDropdownColumn() {
369
304
  })
370
305
  }, defaults);
371
306
  };
307
+
372
308
  /**
373
309
  * Get column order
374
310
  *
@@ -377,46 +313,77 @@ var getDefaultDropdownColumn = function getDefaultDropdownColumn() {
377
313
  *
378
314
  * @return {Array}
379
315
  */
380
-
381
-
382
- exports.getDefaultDropdownColumn = getDefaultDropdownColumn;
383
-
384
- var getColumnOrder = function getColumnOrder(columnOrder, columns) {
316
+ var getColumnOrder = exports.getColumnOrder = function getColumnOrder(columnOrder, columns) {
385
317
  return columnOrder || getColumns(columns).map(function (column) {
386
318
  return column._id;
387
319
  });
388
320
  };
321
+
389
322
  /**
390
- * Get table columns with added operands. Operands are the A, B, C, etc.
391
- */
323
+ * This method removes the columnIds of the deleted columns (or) any duplicate columnIds
324
+ * from the tableColumnOrder there by returning a cleaned tableColumnOrder
325
+ *
326
+ * @param {*} tableColumnOrder
327
+ * @param {*} tableColumns
328
+ *
329
+ * @returns {Array}
330
+ **/
331
+ var getCleanedColumnOrder = exports.getCleanedColumnOrder = function getCleanedColumnOrder(columnOrder, columns) {
332
+ var nextColumnOrder = [];
392
333
 
334
+ /**
335
+ * Step 1: Handle generating or retrieving proper column order.
336
+ */
337
+ if (columnOrder && columnOrder.length > 0) {
338
+ nextColumnOrder = columnOrder;
339
+ } else if (columns && columns.length > 0) {
340
+ columns.forEach(function (column) {
341
+ if (!column.deleted) nextColumnOrder.push(column._id);
342
+ });
343
+ }
393
344
 
394
- exports.getColumnOrder = getColumnOrder;
345
+ /**
346
+ * Step 2: Remove column Ids from columnOrder for columns that no longer exist or have been deleted
347
+ */
348
+ var columnLookup = {};
349
+ columns.forEach(function (column) {
350
+ return columnLookup[column._id] = column && !column.deleted;
351
+ });
352
+ nextColumnOrder = nextColumnOrder.filter(function (columnId) {
353
+ return columnLookup[columnId];
354
+ });
395
355
 
396
- var getColumns = function getColumns(columns) {
397
- var parsedColumns = columns;
356
+ /**
357
+ * Step 3: Remove any duplicate column Id references in the column order.
358
+ */
359
+ var filteredNextColumnOrder = [];
360
+ nextColumnOrder.forEach(function (columnId) {
361
+ if (columnId && filteredNextColumnOrder.indexOf(columnId) === -1) filteredNextColumnOrder.push(columnId);
362
+ });
363
+ return filteredNextColumnOrder;
364
+ };
398
365
 
366
+ /**
367
+ * Get table columns with added operands. Operands are the A, B, C, etc.
368
+ */
369
+ var getColumns = exports.getColumns = function getColumns(columns) {
370
+ var parsedColumns = columns;
399
371
  if (typeof parsedColumns === 'string') {
400
372
  parsedColumns = JSON.parse(parsedColumns);
401
373
  }
402
-
403
374
  return !parsedColumns ? [] : parsedColumns.filter(function (column) {
404
375
  return !column.deleted;
405
376
  }).map(function (column, i) {
406
377
  var nextColumn = _objectSpread({}, column);
407
-
408
378
  nextColumn.operand = getColumnOperand(i);
409
379
  return nextColumn;
410
380
  });
411
381
  };
382
+
412
383
  /**
413
384
  * Sort columns based on columnOrder
414
385
  */
415
-
416
-
417
- exports.getColumns = getColumns;
418
-
419
- var sortColumns = function sortColumns(columns, columnOrder) {
386
+ var sortColumns = exports.sortColumns = function sortColumns(columns, columnOrder) {
420
387
  if (!columnOrder) return columns;
421
388
  var columnLookup = {};
422
389
  columns.forEach(function (col) {
@@ -428,20 +395,15 @@ var sortColumns = function sortColumns(columns, columnOrder) {
428
395
  });
429
396
  return sortedColumns;
430
397
  };
398
+
431
399
  /**
432
400
  * Get the targetColumn with added operand. Operands are A, B ,C etc...
433
401
  */
434
-
435
-
436
- exports.sortColumns = sortColumns;
437
-
438
- var getTargetColumnWithOperand = function getTargetColumnWithOperand(columnOrder, columns, columnId) {
402
+ var getTargetColumnWithOperand = exports.getTargetColumnWithOperand = function getTargetColumnWithOperand(columnOrder, columns, columnId) {
439
403
  var targetColumn = columns.find(function (col) {
440
404
  return col._id === columnId;
441
405
  });
442
-
443
406
  var nextTargetColumn = _objectSpread({}, targetColumn);
444
-
445
407
  var targetColumnIndex = columnOrder.findIndex(function (item) {
446
408
  return item === targetColumn._id;
447
409
  });
@@ -449,18 +411,16 @@ var getTargetColumnWithOperand = function getTargetColumnWithOperand(columnOrder
449
411
  nextTargetColumn.operand = targetColumnOperand;
450
412
  return nextTargetColumn;
451
413
  };
414
+
452
415
  /**
453
416
  * Return letter for a column index. For intance: A, B, C
454
417
  *
455
418
  * Used to create the table lookup operands: A1, B12, etc.
456
419
  */
457
-
458
-
459
- exports.getTargetColumnWithOperand = getTargetColumnWithOperand;
460
-
461
- var getColumnOperand = function getColumnOperand(index) {
420
+ var getColumnOperand = exports.getColumnOperand = function getColumnOperand(index) {
462
421
  return String.fromCharCode(65 + index);
463
422
  };
423
+
464
424
  /**
465
425
  * Return rowIndex and columnIndex for cellOperand
466
426
  *
@@ -469,11 +429,7 @@ var getColumnOperand = function getColumnOperand(index) {
469
429
  * @param {String} cellOperand
470
430
  * @returns {Object}
471
431
  */
472
-
473
-
474
- exports.getColumnOperand = getColumnOperand;
475
-
476
- var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cellOperand) {
432
+ var getIndexesFromTableCellOperand = exports.getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cellOperand) {
477
433
  var letter = cellOperand.match(/[A-Z]*/gi).find(function (value) {
478
434
  return value;
479
435
  });
@@ -482,7 +438,6 @@ var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cel
482
438
  });
483
439
  return {
484
440
  columnIndex: _Table.operandLetterIndexes[letter],
485
-
486
441
  /**
487
442
  * Cell operands start at an index of 1. So to get the true
488
443
  * index for the rowIndex we need to substract 1 so we can
@@ -491,6 +446,7 @@ var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cel
491
446
  rowIndex: rowIndex - 1
492
447
  };
493
448
  };
449
+
494
450
  /**
495
451
  * Get operand lookup for all table/inputGroup fields in a template.
496
452
  *
@@ -499,11 +455,7 @@ var getIndexesFromTableCellOperand = function getIndexesFromTableCellOperand(cel
499
455
  * ....
500
456
  * }
501
457
  */
502
-
503
-
504
- exports.getIndexesFromTableCellOperand = getIndexesFromTableCellOperand;
505
-
506
- var getTemplateColumnOperandLookup = function getTemplateColumnOperandLookup(template) {
458
+ var getTemplateColumnOperandLookup = exports.getTemplateColumnOperandLookup = function getTemplateColumnOperandLookup(template) {
507
459
  var operandLookup = {};
508
460
  template.fields.forEach(function (field) {
509
461
  if (field.type !== _FieldTypes["default"].table && field.type !== _FieldTypes["default"].inputGroup) return;
@@ -515,19 +467,17 @@ var getTemplateColumnOperandLookup = function getTemplateColumnOperandLookup(tem
515
467
  });
516
468
  return operandLookup;
517
469
  };
470
+
518
471
  /**
519
472
  * Return operand for cell. For intance: A1, B2, C1
520
473
  *
521
474
  * @param {String} columnOperand //A, B, C, etc.
522
475
  * @param {Number} rowIndex
523
476
  */
524
-
525
-
526
- exports.getTemplateColumnOperandLookup = getTemplateColumnOperandLookup;
527
-
528
- var getCellOperand = function getCellOperand(columnOperand, rowIndex) {
477
+ var getCellOperand = exports.getCellOperand = function getCellOperand(columnOperand, rowIndex) {
529
478
  return "".concat(columnOperand).concat(rowIndex);
530
479
  };
480
+
531
481
  /**
532
482
  * Generate table lookup by rowIndex and column operand
533
483
  *
@@ -546,11 +496,7 @@ var getCellOperand = function getCellOperand(columnOperand, rowIndex) {
546
496
  * @return {Object}
547
497
 
548
498
  */
549
-
550
-
551
- exports.getCellOperand = getCellOperand;
552
-
553
- var generateRowTableLookup = function generateRowTableLookup(rows, columns, tableLookup) {
499
+ var generateRowTableLookup = exports.generateRowTableLookup = function generateRowTableLookup(rows, columns, tableLookup) {
554
500
  if (!rows || !columns || !tableLookup) return {};
555
501
  var rowTableLookup = {};
556
502
  rows.forEach(function (row, rowIndex) {
@@ -563,6 +509,7 @@ var generateRowTableLookup = function generateRowTableLookup(rows, columns, tabl
563
509
  });
564
510
  return rowTableLookup;
565
511
  };
512
+
566
513
  /**
567
514
  * Generate table lookups for each table field in template. It takes
568
515
  * all table & inputGroup fields and generates a table lookup object for them.
@@ -585,11 +532,7 @@ var generateRowTableLookup = function generateRowTableLookup(rows, columns, tabl
585
532
  * ...
586
533
  * }
587
534
  */
588
-
589
-
590
- exports.generateRowTableLookup = generateRowTableLookup;
591
-
592
- var generateTableFieldLookups = function generateTableFieldLookups(doc, template) {
535
+ var generateTableFieldLookups = exports.generateTableFieldLookups = function generateTableFieldLookups(doc, template) {
593
536
  var tableFields = template.fields.filter(function (field) {
594
537
  return (field.type === _FieldTypes["default"].table || field.type === _FieldTypes["default"].inputGroup) && !field.deleted;
595
538
  });
@@ -608,6 +551,7 @@ var generateTableFieldLookups = function generateTableFieldLookups(doc, template
608
551
  });
609
552
  return tableLookups;
610
553
  };
554
+
611
555
  /**
612
556
  * Organize the table lookup on a row by row basis
613
557
  * @param {Array} rows
@@ -628,11 +572,7 @@ var generateTableFieldLookups = function generateTableFieldLookups(doc, template
628
572
  * }
629
573
  *
630
574
  */
631
-
632
-
633
- exports.generateTableFieldLookups = generateTableFieldLookups;
634
-
635
- var generateTableLookupForRows = function generateTableLookupForRows(rows, columns) {
575
+ var generateTableLookupForRows = exports.generateTableLookupForRows = function generateTableLookupForRows(rows, columns) {
636
576
  var tableLookup = generateTableLookup(rows, columns);
637
577
  var rowLookup = {};
638
578
  Object.keys(tableLookup).forEach(function (key) {
@@ -644,6 +584,7 @@ var generateTableLookupForRows = function generateTableLookupForRows(rows, colum
644
584
  });
645
585
  return rowLookup;
646
586
  };
587
+
647
588
  /**
648
589
  * Generate Lookup Operand Lookup Table for Table Data. Supports converting
649
590
  * formula cells to the calculated value.
@@ -662,11 +603,7 @@ var generateTableLookupForRows = function generateTableLookupForRows(rows, colum
662
603
  * B2: 4,
663
604
  * }
664
605
  */
665
-
666
-
667
- exports.generateTableLookupForRows = generateTableLookupForRows;
668
-
669
- var generateTableLookup = function generateTableLookup(rows, columns) {
606
+ var generateTableLookup = exports.generateTableLookup = function generateTableLookup(rows, columns) {
670
607
  var tableLookup = {};
671
608
  var columnOptionsLookup = {};
672
609
  var tableColumns = [];
@@ -677,10 +614,8 @@ var generateTableLookup = function generateTableLookup(rows, columns) {
677
614
  });
678
615
  filteredColumns.forEach(function (column, i) {
679
616
  var nextColumn = _objectSpread({}, column);
680
-
681
617
  nextColumn.operand = String.fromCharCode(65 + i);
682
618
  tableColumns.push(nextColumn);
683
-
684
619
  if (column.type === _FieldTableColumnTypes["default"].dropdown) {
685
620
  columnOptionsLookup[column._id] = {};
686
621
  column.options.forEach(function (option) {
@@ -698,10 +633,11 @@ var generateTableLookup = function generateTableLookup(rows, columns) {
698
633
  if (!column.operand) return;
699
634
  var cellKey = "".concat(column.operand).concat(rowIndex + 1);
700
635
  var cellRawValue = row.cells[column._id] ? row.cells[column._id] : undefined;
701
- var cellValue = cellRawValue && typeof cellRawValue === 'string' ? cellRawValue.trim() : undefined;
636
+ var cellValue;
637
+ if (cellRawValue && typeof cellRawValue === 'string') cellValue = cellRawValue.trim();
638
+ if (cellRawValue && typeof cellRawValue === 'number') cellValue = cellRawValue.toString();
702
639
  var formulaCell = cellValue !== undefined && cellValue.charAt(0) === '=';
703
640
  var containsOperands = cellValue !== undefined && cellValue.match(/[A-Z]([0-9]{1,10})/gi);
704
-
705
641
  if (cellValue && column.type === _FieldTableColumnTypes["default"].dropdown) {
706
642
  tableLookup[cellKey] = columnOptionsLookup[column._id][cellValue];
707
643
  } else if ((cellValue || cellRawValue) && column.type === _FieldTableColumnTypes["default"].image) {
@@ -722,10 +658,7 @@ var generateTableLookup = function generateTableLookup(rows, columns) {
722
658
  });
723
659
  return tableLookup;
724
660
  };
725
-
726
- exports.generateTableLookup = generateTableLookup;
727
-
728
- var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLookup) {
661
+ var getFormulaResult = exports.getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLookup) {
729
662
  formula = spreadOperandRange(formula);
730
663
  var invalidFormulaError = validFormulaString(sourceOperand, formula);
731
664
  if (invalidFormulaError) return tableLookup[sourceOperand] = invalidFormulaError;
@@ -735,15 +668,14 @@ var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLo
735
668
  var operandValue = resolveOperandValue(sourceOperand, operand, tableLookup);
736
669
  formula = formula.replace(operand, operandValue);
737
670
  });
671
+
738
672
  /**
739
673
  * Add leading zeros to decimal numbers. hot-formula-parser throws an
740
674
  * error if we try to parse non leading decimal numbers. For instace,
741
675
  * a non leading decimal number is: .7 .001 etc. We convert these
742
676
  * values to 0.7 & 0.001
743
677
  */
744
-
745
678
  var noLeadingZeroDecimalMatches = formula.match(/\D\./);
746
-
747
679
  if (noLeadingZeroDecimalMatches && noLeadingZeroDecimalMatches.length > 0) {
748
680
  noLeadingZeroDecimalMatches.forEach(function (val) {
749
681
  var splitVals = val.split('');
@@ -752,13 +684,13 @@ var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLo
752
684
  formula = formula.replace(val, newValue);
753
685
  });
754
686
  }
755
-
756
687
  formula = formula.replace('=', '');
757
688
  var parsedValue = parser.parse(formula);
758
689
  if (parsedValue.result) parsedValue.result = Math.round(100 * parsedValue.result) / 100;
759
690
  tableLookup[sourceOperand] = parsedValue.result ? parsedValue.result.toString() : parsedValue.error;
760
691
  return parsedValue;
761
692
  };
693
+
762
694
  /**
763
695
  * Resolve operand value
764
696
  * An operand is A1, B1, etc.
@@ -767,77 +699,61 @@ var getFormulaResult = function getFormulaResult(sourceOperand, formula, tableLo
767
699
  * @param targetOperand //The cell you are trying to retrieve a value from
768
700
  * @param tableLookup //The lookup of values contained in the table;
769
701
  */
770
-
771
-
772
- exports.getFormulaResult = getFormulaResult;
773
-
774
- var resolveOperandValue = function resolveOperandValue(sourceOperand, targetOperand, tableLookup) {
702
+ var resolveOperandValue = exports.resolveOperandValue = function resolveOperandValue(sourceOperand, targetOperand, tableLookup) {
775
703
  var targetValue = tableLookup[targetOperand] && typeof tableLookup[targetOperand] === 'string' ? tableLookup[targetOperand].trim() : tableLookup[targetOperand];
776
704
  /**
777
705
  * 1. If tableLookup doesn't have a value (or) if the targetValue
778
706
  * appears to be an object (image column cell values) return 0.
779
707
  */
708
+ if (!targetValue || (0, _typeof2["default"])(targetValue) === 'object') return 0;
780
709
 
781
- if (!targetValue || (0, _typeof2["default"])(targetValue) === 'object') return 0; // 2. If tableLookup is already a number return the number value
710
+ // 2. If tableLookup is already a number return the number value
711
+ if (typeof targetValue === 'number') return targetValue;
782
712
 
783
- if (typeof targetValue === 'number') return targetValue; // 3. If targetCell has circular reference return invalid.
713
+ // 3. If targetCell has circular reference return invalid.
784
714
  //
785
715
  // A circular reference can occur when C1 reference B1 and B1 references C1.
786
716
  // It creates and infinite circular loop of trying to resovle a value
787
717
  // because they both depend on eachother.
718
+ if (sourceOperand && hasCircularOperandReference(targetValue, sourceOperand) || targetOperand && hasCircularOperandReference(targetValue, targetOperand)) return '* INVALID - Circular Reference';
788
719
 
789
- if (sourceOperand && hasCircularOperandReference(targetValue, sourceOperand) || targetOperand && hasCircularOperandReference(targetValue, targetOperand)) return '* INVALID - Circular Reference'; // 4. If targetCell has a formula value
790
-
720
+ // 4. If targetCell has a formula value
791
721
  if (targetValue !== undefined && targetValue.charAt(0) === '=') {
792
722
  var result = getFormulaResult(sourceOperand, targetValue, tableLookup);
793
723
  return result.result || result.error;
794
- } // 5. If targetCell has a normal value or an already resolved
795
- // formula cell then just return the cell value
796
-
724
+ }
797
725
 
726
+ // 5. If targetCell has a normal value or an already resolved
727
+ // formula cell then just return the cell value
798
728
  if (targetValue) return targetValue;
799
729
  };
800
-
801
- exports.resolveOperandValue = resolveOperandValue;
802
-
803
- var hasCircularOperandReference = function hasCircularOperandReference(targetValue, lookupOperand) {
730
+ var hasCircularOperandReference = exports.hasCircularOperandReference = function hasCircularOperandReference(targetValue, lookupOperand) {
804
731
  var regExp = new RegExp(lookupOperand, 'gi');
805
732
  var foundOperandReferences = targetValue.match(regExp);
806
733
  return !!(foundOperandReferences && foundOperandReferences.length > 0);
807
734
  };
808
-
809
- exports.hasCircularOperandReference = hasCircularOperandReference;
810
-
811
- var hasOperandRange = function hasOperandRange(targetValue) {
735
+ var hasOperandRange = exports.hasOperandRange = function hasOperandRange(targetValue) {
812
736
  return /[A-Z]([0-9]{1,10}):[A-Z]([0-9]{1,10})/gi.test(targetValue);
813
737
  };
738
+
814
739
  /**
815
740
  * Check for any invalid patterns inside of the formula string
816
741
  */
817
-
818
-
819
- exports.hasOperandRange = hasOperandRange;
820
-
821
- var validFormulaString = function validFormulaString(sourceOperand, formula) {
742
+ var validFormulaString = exports.validFormulaString = function validFormulaString(sourceOperand, formula) {
822
743
  if (sourceOperand && hasCircularOperandReference(formula, sourceOperand)) {
823
744
  return '*INVALID - Circular Reference';
824
745
  }
825
-
826
746
  var lowercaseOperands = formula.match(/[a-z]/g);
827
-
828
747
  if (lowercaseOperands && lowercaseOperands.length > 0) {
829
748
  return '*INVALID - Lowercase Letters Not Supported';
830
749
  }
831
750
  };
751
+
832
752
  /**
833
753
  * Spread the operand range into individual operands.
834
754
  * For instance: SUM(A1:A4) turns into SUM(A1, A2, A3, A4);
835
755
  */
836
-
837
-
838
- exports.validFormulaString = validFormulaString;
839
-
840
- var spreadOperandRange = function spreadOperandRange(targetValue) {
756
+ var spreadOperandRange = exports.spreadOperandRange = function spreadOperandRange(targetValue) {
841
757
  if (!hasOperandRange(targetValue)) return targetValue;
842
758
  var operandRangeMatches = targetValue.match(/[A-Z]([0-9]{1,10}):[A-Z]([0-9]{1,10})/gi);
843
759
  var operandRange = operandRangeMatches[0];
@@ -847,46 +763,43 @@ var spreadOperandRange = function spreadOperandRange(targetValue) {
847
763
  var operandAIndex = operandA.match(/[0-9]+/gi) ? operandA.match(/[0-9]+/gi)[0] : null;
848
764
  var operandB = operands[1];
849
765
  var operandBLetter = operandB.match(/[A-Z]+/gi) ? operandB.match(/[A-Z]+/gi)[0] : null;
850
- var operandBIndex = operandB.match(/[0-9]+/gi) ? operandB.match(/[0-9]+/gi)[0] : null; // If any values are missing return orignal targetValue
766
+ var operandBIndex = operandB.match(/[0-9]+/gi) ? operandB.match(/[0-9]+/gi)[0] : null;
851
767
 
852
- if (!operandALetter || !operandAIndex || !operandBLetter || !operandBIndex) return targetValue; // Handle row range.
853
- // For instance: C1:C8
768
+ // If any values are missing return orignal targetValue
769
+ if (!operandALetter || !operandAIndex || !operandBLetter || !operandBIndex) return targetValue;
854
770
 
771
+ // Handle row range.
772
+ // For instance: C1:C8
855
773
  if (operandALetter === operandBLetter) {
856
774
  var columnOperand = operandALetter;
857
775
  var startIndex = parseInt(operandAIndex, 10);
858
776
  var endIndex = parseInt(operandBIndex, 10);
859
777
  var operandRangeValues = operandA;
860
778
  var i = startIndex + 1;
861
-
862
779
  while (i <= endIndex) {
863
780
  operandRangeValues += ",".concat(columnOperand).concat(i);
864
781
  i++;
865
782
  }
866
-
867
783
  targetValue = targetValue.replace(/[A-Z](\d{1,10}):[A-Z](\d{1,10})/gi, operandRangeValues);
868
- } // Handle column range
784
+ }
785
+
786
+ // Handle column range
869
787
  // For instance, A1:D1
870
788
  else {
871
789
  var _startIndex = parseInt(_Table["default"].operandLetters.indexOf(operandALetter.toUpperCase()), 10);
872
-
873
790
  var _endIndex = parseInt(_Table["default"].operandLetters.indexOf(operandBLetter.toUpperCase()), 10);
874
-
875
791
  var _operandRangeValues = operandA;
876
-
877
792
  var _i = _startIndex + 1;
878
-
879
793
  while (_i <= _endIndex) {
880
794
  var nextOperandLetter = _Table["default"].operandLetters[_i];
881
795
  _operandRangeValues += ",".concat(nextOperandLetter).concat(operandAIndex);
882
796
  _i++;
883
797
  }
884
-
885
798
  targetValue = targetValue.replace(/[A-Z](\d{1,10}):[A-Z](\d{1,10})/gi, _operandRangeValues);
886
799
  }
887
-
888
800
  return targetValue;
889
801
  };
802
+
890
803
  /**
891
804
  * Primarily used for Mobile
892
805
  *
@@ -898,11 +811,7 @@ var spreadOperandRange = function spreadOperandRange(targetValue) {
898
811
  * @param {Array} rows
899
812
  *
900
813
  */
901
-
902
-
903
- exports.spreadOperandRange = spreadOperandRange;
904
-
905
- var generateInputGroupFields = function generateInputGroupFields(field, columns) {
814
+ var generateInputGroupFields = exports.generateInputGroupFields = function generateInputGroupFields(field, columns) {
906
815
  var rows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [getDefaultRow()];
907
816
  var fieldSettings = arguments.length > 3 ? arguments[3] : undefined;
908
817
  var activity = arguments.length > 4 ? arguments[4] : undefined;
@@ -921,7 +830,6 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
921
830
  var rowOrder = getTableFieldRowOrder(field._id, fieldSettings, tableRows);
922
831
  var sortedTableRows = sortRows(tableRows, rowOrder);
923
832
  var cellActivityLookup = {};
924
-
925
833
  if (activity && activity.length > 0) {
926
834
  activity.forEach(function (act) {
927
835
  var rowId = act.document.row;
@@ -931,14 +839,13 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
931
839
  cellActivityLookup[cellKey] += 1;
932
840
  });
933
841
  }
934
-
935
842
  sortedTableRows.forEach(function (row, rowIndex) {
936
843
  var firstRowIndex = rowIndex === 0;
937
844
  var lastRowIndex = rowIndex === sortedTableRows.length - 1;
845
+
938
846
  /**
939
847
  * Step 1: Add InputGroup Row Header
940
848
  */
941
-
942
849
  tableReferences.push({
943
850
  uniqueId: "".concat(field._id).concat(row._id),
944
851
  _id: field._id,
@@ -951,10 +858,10 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
951
858
  firstIndex: rowIndex === 0,
952
859
  lastIndex: false
953
860
  });
861
+
954
862
  /**
955
863
  * Step 2: Add Input Group Row Cells
956
864
  */
957
-
958
865
  tableColumns.forEach(function (column, columnIndex) {
959
866
  var lastColumnIndex = columnIndex === tableColumns.length - 1;
960
867
  var value = row && row.cells ? row.cells[column._id] : '';
@@ -981,6 +888,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
981
888
  });
982
889
  return tableReferences;
983
890
  };
891
+
984
892
  /**
985
893
  * Populate table rows with values
986
894
  * - Dropdown cells will have chosen values
@@ -994,10 +902,7 @@ var generateInputGroupFields = function generateInputGroupFields(field, columns)
994
902
  * @returns
995
903
  */
996
904
 
997
-
998
- exports.generateInputGroupFields = generateInputGroupFields;
999
-
1000
- var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWithPopulatedDropdownCells(columns, rows) {
905
+ var getTableRowLookupWithPopulatedDropdownCells = exports.getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWithPopulatedDropdownCells(columns, rows) {
1001
906
  var rowsLookup = {};
1002
907
  var tableLookup = generateTableLookup(rows, columns);
1003
908
  var validRows = getRows(rows);
@@ -1006,11 +911,9 @@ var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWith
1006
911
  var nextRow = _objectSpread(_objectSpread({}, row), {}, {
1007
912
  cells: _objectSpread({}, row.cells)
1008
913
  });
1009
-
1010
914
  validColumns.forEach(function (column) {
1011
915
  var cellOperand = getCellOperand(column.operand, rowIndex + 1);
1012
916
  var value = tableLookup[cellOperand];
1013
-
1014
917
  if (value && column.type === _FieldTableColumnTypes["default"].dropdown) {
1015
918
  nextRow.cells[column._id] = column.optionsLookup[value] ? column.optionsLookup[value].value : value;
1016
919
  } else {
@@ -1021,6 +924,7 @@ var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWith
1021
924
  });
1022
925
  return rowsLookup;
1023
926
  };
927
+
1024
928
  /**
1025
929
  * Populate inputGroup dropdown questions with chosen value
1026
930
  *
@@ -1032,20 +936,15 @@ var getTableRowLookupWithPopulatedDropdownCells = function getTableRowLookupWith
1032
936
  * @returns
1033
937
  */
1034
938
 
1035
-
1036
- exports.getTableRowLookupWithPopulatedDropdownCells = getTableRowLookupWithPopulatedDropdownCells;
1037
-
1038
- var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRowLookupWithPopulatedDropdownCells(columns, rows) {
939
+ var getInputGroupRowLookupWithPopulatedDropdownCells = exports.getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRowLookupWithPopulatedDropdownCells(columns, rows) {
1039
940
  var rowsLookup = {};
1040
941
  var validRows = typeof rows === 'string' ? JSON.parse(rows) : rows;
1041
942
  validRows.forEach(function (row) {
1042
943
  var nextRow = _objectSpread(_objectSpread({}, row), {}, {
1043
944
  cells: _objectSpread({}, row.cells)
1044
945
  });
1045
-
1046
946
  columns.forEach(function (column) {
1047
947
  var optionId = nextRow.cells[column._id];
1048
-
1049
948
  if (optionId && column.type === _FieldTableColumnTypes["default"].dropdown) {
1050
949
  nextRow.cells[column._id] = column.optionsLookup[optionId] ? column.optionsLookup[optionId].value : optionId;
1051
950
  }
@@ -1054,6 +953,7 @@ var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRow
1054
953
  });
1055
954
  return rowsLookup;
1056
955
  };
956
+
1057
957
  /**
1058
958
  * Generate row index lookup:
1059
959
  * @param {*} fieldId
@@ -1061,11 +961,7 @@ var getInputGroupRowLookupWithPopulatedDropdownCells = function getInputGroupRow
1061
961
  * @param {*} rows
1062
962
  * @returns
1063
963
  */
1064
-
1065
-
1066
- exports.getInputGroupRowLookupWithPopulatedDropdownCells = getInputGroupRowLookupWithPopulatedDropdownCells;
1067
-
1068
- var getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows) {
964
+ var getRowIndexLookup = exports.getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows) {
1069
965
  var rowOrder = getTableFieldRowOrder(fieldId, fieldSettings, rows);
1070
966
  var rowIndexLookup = {};
1071
967
  rowOrder.forEach(function (rowId, index) {
@@ -1073,6 +969,7 @@ var getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows)
1073
969
  });
1074
970
  return rowIndexLookup;
1075
971
  };
972
+
1076
973
  /**
1077
974
  * Handle Table Cell Change
1078
975
  *
@@ -1082,17 +979,14 @@ var getRowIndexLookup = function getRowIndexLookup(fieldId, fieldSettings, rows)
1082
979
  * @param {String} value
1083
980
  * @param {Func} callback
1084
981
  */
1085
-
1086
-
1087
- exports.getRowIndexLookup = getRowIndexLookup;
1088
-
1089
- var handleTableCellChange = function handleTableCellChange(rows, rowId, columnId, val, callback) {
982
+ var handleTableCellChange = exports.handleTableCellChange = function handleTableCellChange(rows, rowId, columnId, val, callback) {
1090
983
  var targetRowIndex = rows.findIndex(function (row) {
1091
984
  return row._id === rowId;
1092
985
  });
1093
986
  var row = rows[targetRowIndex];
1094
- var cells = row ? row.cells : {}; //Only save data if value has changed
987
+ var cells = row ? row.cells : {};
1095
988
 
989
+ //Only save data if value has changed
1096
990
  if (cells[columnId] !== val && callback) {
1097
991
  callback({
1098
992
  targetRowIndex: targetRowIndex,
@@ -1103,39 +997,34 @@ var handleTableCellChange = function handleTableCellChange(rows, rowId, columnId
1103
997
  });
1104
998
  }
1105
999
  };
1000
+
1106
1001
  /**
1107
1002
  * Handle Insert Table Row
1108
1003
  *
1109
1004
  * @param {Number} rowIndex
1110
1005
  * @param {Func} callback
1111
1006
  */
1112
-
1113
-
1114
- exports.handleTableCellChange = handleTableCellChange;
1115
-
1116
- var handleInsertTableRow = function handleInsertTableRow(rowIndex, callback) {
1007
+ var handleInsertTableRow = exports.handleInsertTableRow = function handleInsertTableRow(rowIndex, callback) {
1117
1008
  if (callback) callback({
1118
1009
  targetRowIndex: rowIndex + 1,
1119
1010
  row: getDefaultRow()
1120
1011
  });
1121
1012
  };
1013
+
1122
1014
  /**
1123
1015
  * Handle Create New Table Row
1124
1016
  *
1125
1017
  * @param {Array} rows //List of current table rows
1126
1018
  * @param {Func} callback
1127
1019
  */
1128
-
1129
-
1130
- exports.handleInsertTableRow = handleInsertTableRow;
1131
-
1132
- var handleCreateTableRow = function handleCreateTableRow(rows, callback) {
1020
+ var handleCreateTableRow = exports.handleCreateTableRow = function handleCreateTableRow(rows, callback) {
1133
1021
  var targetRowIndex = rows.length;
1134
1022
  if (callback) callback({
1135
1023
  targetRowIndex: targetRowIndex,
1136
1024
  row: getDefaultRow()
1137
1025
  });
1138
1026
  };
1027
+
1139
1028
  /**
1140
1029
  * Handle Duplicate Table Row
1141
1030
  *
@@ -1144,11 +1033,7 @@ var handleCreateTableRow = function handleCreateTableRow(rows, callback) {
1144
1033
  * @param {Number} rowIndex
1145
1034
  * @param {Func} callback
1146
1035
  */
1147
-
1148
-
1149
- exports.handleCreateTableRow = handleCreateTableRow;
1150
-
1151
- var handleDuplicateTableRow = function handleDuplicateTableRow(rows, rowId, rowIndex, callback) {
1036
+ var handleDuplicateTableRow = exports.handleDuplicateTableRow = function handleDuplicateTableRow(rows, rowId, rowIndex, callback) {
1152
1037
  var duplicateRow = rows.find(function (row) {
1153
1038
  return row._id === rowId;
1154
1039
  });
@@ -1160,17 +1045,14 @@ var handleDuplicateTableRow = function handleDuplicateTableRow(rows, rowId, rowI
1160
1045
  row: newRow
1161
1046
  });
1162
1047
  };
1048
+
1163
1049
  /**
1164
1050
  * Handle Move Table Row Up
1165
1051
  *
1166
1052
  * @param {Number} rowIndex
1167
1053
  * @param {Func} callback
1168
1054
  */
1169
-
1170
-
1171
- exports.handleDuplicateTableRow = handleDuplicateTableRow;
1172
-
1173
- var handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
1055
+ var handleMoveTableRowUp = exports.handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
1174
1056
  //If first row then ignore
1175
1057
  if (rowIndex === 0) return;
1176
1058
  var targetRowIndex = rowIndex - 1;
@@ -1178,6 +1060,7 @@ var handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
1178
1060
  targetRowIndex: targetRowIndex
1179
1061
  });
1180
1062
  };
1063
+
1181
1064
  /**
1182
1065
  * Handle Move Table Row Down
1183
1066
  *
@@ -1185,11 +1068,7 @@ var handleMoveTableRowUp = function handleMoveTableRowUp(rowIndex, callback) {
1185
1068
  * @param {Number} rowIndex
1186
1069
  * @param {Func} callback
1187
1070
  */
1188
-
1189
-
1190
- exports.handleMoveTableRowUp = handleMoveTableRowUp;
1191
-
1192
- var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, callback) {
1071
+ var handleMoveTableRowDown = exports.handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, callback) {
1193
1072
  //If last row then ignore
1194
1073
  if (rowIndex >= rows.length - 1) return;
1195
1074
  var targetRowIndex = rowIndex + 1;
@@ -1197,9 +1076,7 @@ var handleMoveTableRowDown = function handleMoveTableRowDown(rows, rowIndex, cal
1197
1076
  targetRowIndex: targetRowIndex
1198
1077
  });
1199
1078
  };
1200
-
1201
- exports.handleMoveTableRowDown = handleMoveTableRowDown;
1202
- var _default = {
1079
+ var _default = exports["default"] = {
1203
1080
  generateTableLookup: generateTableLookup,
1204
1081
  generateTableLookupForRows: generateTableLookupForRows,
1205
1082
  generateInputGroupFields: generateInputGroupFields,
@@ -1241,5 +1118,4 @@ var _default = {
1241
1118
  handleMoveTableRowDown: handleMoveTableRowDown,
1242
1119
  FieldTableColumnTypes: _FieldTableColumnTypes["default"],
1243
1120
  FieldTableCustomColumnIds: _FieldTableCustomColumnIds["default"]
1244
- };
1245
- exports["default"] = _default;
1121
+ };