@builttocreate/engine-utils 2.8.0-beta.1 → 2.8.0-beta.11

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,49 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports.sortPages = exports.sortFieldPositionsByXAndYCoordinates = exports.mergeAssoicatedFieldPositionsForMobilePage = exports.getPageOrder = exports.getMobileViewFromFile = exports.getDocumentFromTemplate = exports.getDefaultTemplate = exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getDefaultDocument = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports.generateMobileViewFromFile = exports.generateMobilePageFieldPositions = exports.generateMobilePage = exports.formatTableFieldPositions = exports.duplicateDocumentPage = exports.duplicate = exports["default"] = exports.cleanPageOrder = void 0;
9
-
7
+ exports.sortPages = exports.sortFieldPositionsByXAndYCoordinates = exports.removeOrphanedFieldsFromJoydoc = exports.mergeAssoicatedFieldPositionsForMobilePage = exports.getPageOrder = exports.getMobileViewFromFile = exports.getDocumentFromTemplate = exports.getDefaultTemplate = exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getDefaultDocument = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports.generateMobileViewFromFile = exports.generateMobilePageFieldPositions = exports.generateMobilePage = exports.formatTableFieldPositions = exports.duplicateDocumentPage = exports.duplicate = exports["default"] = exports.cleanPageOrder = void 0;
10
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
10
  var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
15
-
16
11
  var _validateObjectId = _interopRequireDefault(require("./validateObjectId"));
17
-
18
12
  var _PageLayoutModes = _interopRequireDefault(require("./constants/PageLayoutModes"));
19
-
20
13
  var _FieldPresentationModes = _interopRequireDefault(require("./constants/FieldPresentationModes"));
21
-
22
14
  var _DocumentTypes = _interopRequireDefault(require("./constants/DocumentTypes"));
23
-
24
15
  var _PageTypes = _interopRequireDefault(require("./constants/PageTypes"));
25
-
26
16
  var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
27
-
28
17
  var _FieldDisplayTypes = _interopRequireDefault(require("./constants/FieldDisplayTypes"));
29
-
30
18
  var _FileViews = _interopRequireDefault(require("./constants/FileViews"));
31
-
32
19
  var _FormStyleOptions = _interopRequireDefault(require("./constants/FormStyleOptions"));
33
-
34
20
  var _tableHelper = require("./tableHelper");
35
-
36
- 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; }
37
-
38
- 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; }
39
-
21
+ 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; }
22
+ 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; }
40
23
  /**
41
24
  * Create default page
42
25
  *
43
26
  * @param {Object} defaults
44
27
  * @return {Object}
45
28
  */
46
- var getDefaultJoyDocPage = function getDefaultJoyDocPage() {
29
+ var getDefaultJoyDocPage = exports.getDefaultJoyDocPage = function getDefaultJoyDocPage() {
47
30
  var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
48
31
  return _objectSpread({
49
32
  _id: (0, _generateObjectId["default"])(),
@@ -58,6 +41,7 @@ var getDefaultJoyDocPage = function getDefaultJoyDocPage() {
58
41
  padding: 24
59
42
  }, defaults);
60
43
  };
44
+
61
45
  /**
62
46
  * Create default file
63
47
  *
@@ -65,11 +49,7 @@ var getDefaultJoyDocPage = function getDefaultJoyDocPage() {
65
49
  * @param {Object} pageDefaults
66
50
  * @return {Object}
67
51
  */
68
-
69
-
70
- exports.getDefaultJoyDocPage = getDefaultJoyDocPage;
71
-
72
- var getDefaultJoyDocFile = function getDefaultJoyDocFile() {
52
+ var getDefaultJoyDocFile = exports.getDefaultJoyDocFile = function getDefaultJoyDocFile() {
73
53
  var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
74
54
  var pageDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
75
55
  var page = getDefaultJoyDocPage(pageDefaults);
@@ -83,6 +63,7 @@ var getDefaultJoyDocFile = function getDefaultJoyDocFile() {
83
63
  }
84
64
  }, defaults);
85
65
  };
66
+
86
67
  /**
87
68
  * Create default document
88
69
  *
@@ -90,11 +71,7 @@ var getDefaultJoyDocFile = function getDefaultJoyDocFile() {
90
71
  * @param {Object} pageDefaults
91
72
  * @return {Object}
92
73
  */
93
-
94
-
95
- exports.getDefaultJoyDocFile = getDefaultJoyDocFile;
96
-
97
- var getDefaultJoyDoc = function getDefaultJoyDoc() {
74
+ var getDefaultJoyDoc = exports.getDefaultJoyDoc = function getDefaultJoyDoc() {
98
75
  var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
99
76
  var fileDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
100
77
  var pageDefaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@@ -107,6 +84,7 @@ var getDefaultJoyDoc = function getDefaultJoyDoc() {
107
84
  fields: []
108
85
  }, defaults);
109
86
  };
87
+
110
88
  /**
111
89
  * Get Clean JoyDoc Format
112
90
  *
@@ -121,78 +99,159 @@ var getDefaultJoyDoc = function getDefaultJoyDoc() {
121
99
  * @param {Object} doc
122
100
  * @returns {Object}
123
101
  */
124
-
125
-
126
- exports.getDefaultJoyDoc = getDefaultJoyDoc;
127
-
128
- var getCleanedJoyDoc = function getCleanedJoyDoc(doc) {
102
+ var getCleanedJoyDoc = exports.getCleanedJoyDoc = function getCleanedJoyDoc(doc) {
129
103
  if (!doc) return getDefaultJoyDoc();
104
+ var nextDoc = removeOrphanedFieldsFromJoydoc(doc);
130
105
 
131
- var nextDoc = _objectSpread({}, doc);
132
106
  /**
133
107
  * Step 1.1: Replace doc._id if it is not valid
134
108
  */
135
-
136
-
137
109
  if (nextDoc._id && !(0, _validateObjectId["default"])(nextDoc._id)) nextDoc._id = (0, _generateObjectId["default"])();
138
-
139
110
  if (nextDoc.files && nextDoc.files.length > 0) {
140
111
  nextDoc.files = nextDoc.files.map(function (file) {
141
112
  var _nextFile$views;
142
-
143
113
  var nextFile = _objectSpread({}, file);
114
+
144
115
  /**
145
116
  * Step 1.2: Replace files[x]._id if it is not valid
146
117
  */
147
-
148
-
149
118
  if (nextFile._id && !(0, _validateObjectId["default"])(nextFile._id)) nextFile._id = (0, _generateObjectId["default"])();
119
+
150
120
  /**
151
121
  * Step 1.3: Replace page ids and field ids if they are not valid
152
122
  */
153
-
154
123
  nextFile.pages = getCleanedJoyDocPages(nextFile.pages);
155
124
  nextFile.pageOrder = cleanPageOrder(getPageOrder(nextFile.pageOrder, nextFile.pages), nextFile.pages);
125
+
156
126
  /**
157
127
  * Step 1.4: Replace view page ids and field ids if they are not valid
158
128
  */
159
-
160
129
  if ((nextFile === null || nextFile === void 0 ? void 0 : (_nextFile$views = nextFile.views) === null || _nextFile$views === void 0 ? void 0 : _nextFile$views.length) > 0) {
161
130
  nextFile.views = nextFile.views.map(function (view) {
162
131
  var nextView = _objectSpread({}, view);
163
-
164
132
  nextView.pages = getCleanedJoyDocPages(nextView.pages);
165
133
  nextView.pageOrder = cleanPageOrder(getPageOrder(nextView.pageOrder, nextView.pages), nextView.pages);
166
134
  return nextView;
167
135
  });
168
136
  }
169
-
170
137
  return nextFile;
171
138
  });
172
139
  } else {
173
140
  nextDoc.files = [getDefaultJoyDocFile()];
174
141
  }
142
+
175
143
  /**
176
144
  * Logic below is used to clean the table field rowOrder by removing the
177
145
  * deletedRowIds / duplicateRowIds from the rowOrder.
178
146
  **/
179
-
180
-
181
147
  if (nextDoc.fields && nextDoc.fields.length > 0) {
182
148
  nextDoc.fields = nextDoc.fields.map(function (field) {
183
149
  var nextField = _objectSpread({}, field);
184
-
185
150
  if (field.type === _FieldTypes["default"].table) {
186
151
  var cleanedRoworder = (0, _tableHelper.getCleanedRowOrder)(field.rowOrder, field.value);
187
152
  nextField.rowOrder = cleanedRoworder;
188
153
  }
189
-
190
154
  return nextField;
191
155
  });
192
156
  }
157
+ return nextDoc;
158
+ };
159
+
160
+ /**
161
+ * Remove orphaned fields from doc
162
+ */
163
+
164
+ // export const removeOrphanedFieldsFromJoydoc = (doc) => {
165
+
166
+ // const nextDoc = { ...doc };
167
+
168
+ // /**
169
+ // * Logic below removes orphaned fields (ie fields without fieldPositions)
170
+ // */
171
+
172
+ // nextDoc.fields = nextDoc.fields.filter((field) => {
173
+
174
+ // let isOrphanedField = true;
193
175
 
176
+ // nextDoc.files.forEach((file) => {
177
+
178
+ // const primaryViewPages = file.pages;
179
+
180
+ // // Check if field is associated with any field positions in primary view pages
181
+ // const isFieldAssociatedWithPrimaryView = primaryViewPages.some((page) => {
182
+ // return page.fieldPositions.some((fieldPosition) => fieldPosition.field === field._id);
183
+ // });
184
+
185
+ // // Check if field is associated with other views
186
+ // let isFieldAssociatedWithAnotherView;
187
+
188
+ // if (file.views && file.views.length > 0) {
189
+
190
+ // isFieldAssociatedWithAnotherView = file.views.some((view) => {
191
+ // return view.pages.some((page) => {
192
+ // return page.fieldPositions.some((fieldPosition) => fieldPosition.field === field._id);
193
+ // });
194
+ // });
195
+
196
+ // }
197
+
198
+ // if (isFieldAssociatedWithPrimaryView || isFieldAssociatedWithAnotherView) {
199
+ // isOrphanedField = false;
200
+ // }
201
+
202
+ // });
203
+
204
+ // if (!isOrphanedField) return field;
205
+
206
+ // return null;
207
+
208
+ // });
209
+
210
+ // return nextDoc;
211
+
212
+ // };
213
+
214
+ var removeOrphanedFieldsFromJoydoc = exports.removeOrphanedFieldsFromJoydoc = function removeOrphanedFieldsFromJoydoc(doc) {
215
+ var _nextDoc$files;
216
+ var nextDoc = _objectSpread({}, doc);
217
+ var associatedFieldIdLookup = {};
218
+ nextDoc === null || nextDoc === void 0 ? void 0 : (_nextDoc$files = nextDoc.files) === null || _nextDoc$files === void 0 ? void 0 : _nextDoc$files.forEach(function (file) {
219
+ var _file$views;
220
+ /**
221
+ * Primary view
222
+ */
223
+ file.pages.forEach(function (page) {
224
+ page.fieldPositions.forEach(function (fieldPosition) {
225
+ return associatedFieldIdLookup[fieldPosition.field] = true;
226
+ });
227
+ });
228
+
229
+ /**
230
+ * Alternative view
231
+ */
232
+ (_file$views = file.views) === null || _file$views === void 0 ? void 0 : _file$views.forEach(function (view) {
233
+ var _view$pages;
234
+ view === null || view === void 0 ? void 0 : (_view$pages = view.pages) === null || _view$pages === void 0 ? void 0 : _view$pages.forEach(function (page) {
235
+ page === null || page === void 0 ? void 0 : page.fieldPositions.forEach(function (fieldPosition) {
236
+ return associatedFieldIdLookup[fieldPosition.field] = true;
237
+ });
238
+ });
239
+ });
240
+ });
241
+
242
+ /**
243
+ * Logic below removes orphaned fields (ie fields without fieldPositions)
244
+ */
245
+ var validFields = [];
246
+ var deletedFields = [];
247
+ nextDoc.fields.forEach(function (field) {
248
+ if (associatedFieldIdLookup[field._id]) validFields.push(field);else deletedFields.push(field);
249
+ });
250
+ nextDoc.fields = validFields;
251
+ nextDoc.deletedFields = deletedFields;
194
252
  return nextDoc;
195
253
  };
254
+
196
255
  /**
197
256
  * Get Cleaned JoyDoc Pages
198
257
  *
@@ -205,27 +264,20 @@ var getCleanedJoyDoc = function getCleanedJoyDoc(doc) {
205
264
  * @param {Object} doc
206
265
  * @returns {Object}
207
266
  */
208
-
209
-
210
- exports.getCleanedJoyDoc = getCleanedJoyDoc;
211
-
212
- var getCleanedJoyDocPages = function getCleanedJoyDocPages(pages) {
267
+ var getCleanedJoyDocPages = exports.getCleanedJoyDocPages = function getCleanedJoyDocPages(pages) {
213
268
  if ((pages === null || pages === void 0 ? void 0 : pages.length) > 0) {
214
269
  return pages.map(function (page) {
215
270
  /**
216
271
  * Step 1: Replace pages[x]._id if it is not valid
217
272
  */
218
273
  var nextPage = _objectSpread({}, page);
219
-
220
274
  if (nextPage._id && !(0, _validateObjectId["default"])(nextPage._id)) nextPage._id = (0, _generateObjectId["default"])();
221
-
222
275
  if (nextPage.fieldPositions && nextPage.fieldPositions.length > 0) {
223
276
  nextPage.fieldPositions = nextPage.fieldPositions.map(function (fieldPosition) {
224
277
  /**
225
278
  * Step 1.2: Replace fieldPosition _id and field reference if they are not valid
226
279
  */
227
280
  var nextFieldPosition = _objectSpread({}, fieldPosition);
228
-
229
281
  if (nextFieldPosition._id && !(0, _validateObjectId["default"])(nextFieldPosition._id)) nextFieldPosition._id = (0, _generateObjectId["default"])();
230
282
  if (nextFieldPosition.field && !(0, _validateObjectId["default"])(nextFieldPosition.field)) nextFieldPosition.field = (0, _generateObjectId["default"])();
231
283
  return nextFieldPosition;
@@ -233,13 +285,13 @@ var getCleanedJoyDocPages = function getCleanedJoyDocPages(pages) {
233
285
  } else {
234
286
  nextPage.fieldPositions = [];
235
287
  }
236
-
237
288
  return nextPage;
238
289
  });
239
290
  } else {
240
291
  return [getDefaultJoyDocPage()];
241
292
  }
242
293
  };
294
+
243
295
  /**
244
296
  * Get page order
245
297
  *
@@ -247,15 +299,12 @@ var getCleanedJoyDocPages = function getCleanedJoyDocPages(pages) {
247
299
  * @param {Array} pageOrder
248
300
  * @return {Array}
249
301
  */
250
-
251
-
252
- exports.getCleanedJoyDocPages = getCleanedJoyDocPages;
253
-
254
- var getPageOrder = function getPageOrder(pageOrder, pages) {
302
+ var getPageOrder = exports.getPageOrder = function getPageOrder(pageOrder, pages) {
255
303
  return pageOrder || pages.map(function (page) {
256
304
  return page._id;
257
305
  });
258
306
  };
307
+
259
308
  /**
260
309
  *
261
310
  * Clean pageOrder
@@ -268,11 +317,7 @@ var getPageOrder = function getPageOrder(pageOrder, pages) {
268
317
  * @param {Array} pages //[object, object, ...]
269
318
  * @returns {Array}
270
319
  */
271
-
272
-
273
- exports.getPageOrder = getPageOrder;
274
-
275
- var cleanPageOrder = function cleanPageOrder(pageOrder, pages) {
320
+ var cleanPageOrder = exports.cleanPageOrder = function cleanPageOrder(pageOrder, pages) {
276
321
  var pageLookup = {};
277
322
  pages.forEach(function (page) {
278
323
  return pageLookup[page._id] = page && !page.deleted;
@@ -281,14 +326,11 @@ var cleanPageOrder = function cleanPageOrder(pageOrder, pages) {
281
326
  return pageLookup[pageId] && pageId && pageOrder.indexOf(pageId) === index;
282
327
  });
283
328
  };
329
+
284
330
  /**
285
331
  * Sort pages based on pageOrder
286
332
  */
287
-
288
-
289
- exports.cleanPageOrder = cleanPageOrder;
290
-
291
- var sortPages = function sortPages(pages, pageOrder) {
333
+ var sortPages = exports.sortPages = function sortPages(pages, pageOrder) {
292
334
  if (!pageOrder) return pages;
293
335
  var pageLookup = {};
294
336
  pages.forEach(function (page) {
@@ -300,20 +342,15 @@ var sortPages = function sortPages(pages, pageOrder) {
300
342
  });
301
343
  return sortedPages;
302
344
  };
345
+
303
346
  /**
304
347
  * Get a properly formatted Document JoyDoc
305
348
  *
306
349
  * @returns {Object}
307
350
  */
308
-
309
-
310
- exports.sortPages = sortPages;
311
-
312
- var getDefaultDocument = function getDefaultDocument() {
351
+ var getDefaultDocument = exports.getDefaultDocument = function getDefaultDocument() {
313
352
  var type = _DocumentTypes["default"].document;
314
-
315
353
  var _id = (0, _generateObjectId["default"])();
316
-
317
354
  var identifier = "doc_".concat(_id);
318
355
  var name = 'New Doc';
319
356
  return getDefaultJoyDoc({
@@ -323,20 +360,15 @@ var getDefaultDocument = function getDefaultDocument() {
323
360
  name: name
324
361
  });
325
362
  };
363
+
326
364
  /**
327
365
  * Get a properly formatted Template JoyDoc
328
366
  *
329
367
  * @returns {Object}
330
368
  */
331
-
332
-
333
- exports.getDefaultDocument = getDefaultDocument;
334
-
335
- var getDefaultTemplate = function getDefaultTemplate() {
369
+ var getDefaultTemplate = exports.getDefaultTemplate = function getDefaultTemplate() {
336
370
  var type = _DocumentTypes["default"].template;
337
-
338
371
  var _id = (0, _generateObjectId["default"])();
339
-
340
372
  var identifier = "template_".concat(_id);
341
373
  var name = 'New Template';
342
374
  return getDefaultJoyDoc({
@@ -346,21 +378,16 @@ var getDefaultTemplate = function getDefaultTemplate() {
346
378
  name: name
347
379
  });
348
380
  };
381
+
349
382
  /**
350
383
  * Get a properly formatted duplicate of a Template or Document
351
384
  *
352
385
  * @returns {Object}
353
386
  */
354
-
355
-
356
- exports.getDefaultTemplate = getDefaultTemplate;
357
-
358
- var duplicate = function duplicate(original, defaults) {
387
+ var duplicate = exports.duplicate = function duplicate(original, defaults) {
359
388
  //Remove all references to original template object
360
389
  var origin = JSON.parse(JSON.stringify(original));
361
-
362
390
  var _id = (0, _generateObjectId["default"])();
363
-
364
391
  var identifier = origin.type === _DocumentTypes["default"].template ? "template_".concat(_id) : "doc_".concat(_id);
365
392
  return _objectSpread(_objectSpread({}, origin), {}, {
366
393
  _id: _id,
@@ -369,21 +396,18 @@ var duplicate = function duplicate(original, defaults) {
369
396
  source: origin.identifier
370
397
  }, defaults);
371
398
  };
399
+
372
400
  /**
373
401
  * Get a properly formatted Document JoyDoc from Template JoyDoc
374
402
  *
375
403
  * @param {Object} template
376
404
  * @returns {Object}
377
405
  */
378
-
379
-
380
- exports.duplicate = duplicate;
381
-
382
- var getDocumentFromTemplate = function getDocumentFromTemplate(template) {
406
+ var getDocumentFromTemplate = exports.getDocumentFromTemplate = function getDocumentFromTemplate(template) {
383
407
  var _id = (0, _generateObjectId["default"])();
408
+ var identifier = "doc_".concat(_id);
384
409
 
385
- var identifier = "doc_".concat(_id); //Remove all references to original template object
386
-
410
+ //Remove all references to original template object
387
411
  var temp = JSON.parse(JSON.stringify(template));
388
412
  return {
389
413
  _id: _id,
@@ -396,6 +420,7 @@ var getDocumentFromTemplate = function getDocumentFromTemplate(template) {
396
420
  fields: temp.fields
397
421
  };
398
422
  };
423
+
399
424
  /**
400
425
  * Handle Page Duplication for JoyDoc
401
426
  *
@@ -405,13 +430,8 @@ var getDocumentFromTemplate = function getDocumentFromTemplate(template) {
405
430
  * @param {Object} pageDefaults
406
431
  * @returns {Object}
407
432
  */
408
-
409
-
410
- exports.getDocumentFromTemplate = getDocumentFromTemplate;
411
-
412
- var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId) {
433
+ var duplicateDocumentPage = exports.duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId) {
413
434
  var _nextDoc$fields;
414
-
415
435
  var pageDefaults = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
416
436
  var changelogInfo = {
417
437
  primaryPages: {
@@ -430,25 +450,26 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
430
450
  (_nextDoc$fields = nextDoc.fields) === null || _nextDoc$fields === void 0 ? void 0 : _nextDoc$fields.forEach(function (field) {
431
451
  if (field.file === fileId) fieldLookup[field._id] = field;
432
452
  });
453
+
433
454
  /**
434
455
  * Step 1: Duplicate fields associated with target page
435
456
  */
457
+ var fieldIdsToDuplicate = [];
436
458
 
437
- var fieldIdsToDuplicate = []; //Step 1.1 Get all field Ids from primary page
438
-
459
+ //Step 1.1 Get all field Ids from primary page
439
460
  var targetPageIndex = nextDoc.files[fileIndex].pages.findIndex(function (page) {
440
461
  return page._id === pageId;
441
462
  });
442
463
  if (targetPageIndex !== -1) nextDoc.files[fileIndex].pages[targetPageIndex].fieldPositions.forEach(function (fieldPosition) {
443
464
  return fieldIdsToDuplicate.push(fieldPosition.field);
444
- }); //Step 1.2 Get all field Ids from view page
465
+ });
445
466
 
467
+ //Step 1.2 Get all field Ids from view page
446
468
  if (nextDoc.files[fileIndex].views && nextDoc.files[fileIndex].views.length > 0) {
447
469
  nextDoc.files[fileIndex].views.forEach(function (view) {
448
470
  var viewPageIndex = view.pages.findIndex(function (page) {
449
471
  return page._id === pageId;
450
472
  });
451
-
452
473
  if (viewPageIndex !== -1) {
453
474
  view.pages[viewPageIndex].fieldPositions.forEach(function (fieldPosition) {
454
475
  if (fieldIdsToDuplicate.indexOf(fieldPosition.field) === -1) fieldIdsToDuplicate.push(fieldPosition.field);
@@ -456,7 +477,6 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
456
477
  }
457
478
  });
458
479
  }
459
-
460
480
  var newFieldsLookupByOldId = {};
461
481
  var duplicatedFields = [];
462
482
  fieldIdsToDuplicate.forEach(function (fieldId) {
@@ -470,18 +490,17 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
470
490
  */
471
491
  if (newFieldsLookupByOldId[fieldId]) return;
472
492
  var field = fieldLookup[fieldId];
473
-
474
493
  var duplicateField = _objectSpread(_objectSpread({}, field), {}, {
475
494
  _id: (0, _generateObjectId["default"])()
476
495
  });
477
-
478
496
  duplicatedFields.push(duplicateField);
497
+
479
498
  /**
480
499
  * Add to lookup so it can be used with other associated field positions
481
500
  */
482
-
483
501
  newFieldsLookupByOldId[field._id] = duplicateField;
484
502
  });
503
+
485
504
  /**
486
505
  * Step 2: Update newly duplicated fields logic properties
487
506
  *
@@ -491,14 +510,11 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
491
510
  * that we are duplicating. We do this by checking the logic.condition[x].page
492
511
  * property of the condition.
493
512
  */
494
-
495
513
  duplicatedFields = duplicatedFields.map(function (duplicatedField) {
496
514
  if (!duplicatedField.logic || !duplicatedField.logic.conditions || duplicatedField.logic.conditions.length < 1) return duplicatedField;
497
-
498
515
  var nextField = _objectSpread(_objectSpread({}, duplicatedField), {}, {
499
516
  logic: _objectSpread({}, duplicatedField.logic)
500
517
  });
501
-
502
518
  nextField.logic.conditions = nextField.logic.conditions.map(function (condition) {
503
519
  /**
504
520
  * 1. Only update conditions associated with the current page being duplicated.
@@ -515,20 +531,20 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
515
531
  });
516
532
  return nextField;
517
533
  });
534
+
518
535
  /**
519
536
  * Step 3: Add newly duplicated fields changelogs and update doucment
520
537
  */
521
-
522
538
  duplicatedFields.forEach(function (duplicateField) {
523
539
  changelogInfo.fields.push(duplicateField);
524
540
  nextDoc.fields.push(duplicateField);
525
541
  });
542
+
526
543
  /**
527
544
  * Step 4: Update Primary View Page Order
528
545
  *
529
546
  * IMPORTANT NOTE: Page order update must go before page object creation.
530
547
  */
531
-
532
548
  var pageOrder = getPageOrder(nextDoc.files[fileIndex].pageOrder, nextDoc.files[fileIndex].pages);
533
549
  var primaryPageOrderIndex = pageOrder.findIndex(function (id) {
534
550
  return id === pageId;
@@ -536,10 +552,10 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
536
552
  var primaryPageOrderTargetIndex = primaryPageOrderIndex + 1;
537
553
  nextDoc.files[fileIndex].pageOrder = pageOrder;
538
554
  nextDoc.files[fileIndex].pageOrder.splice(primaryPageOrderTargetIndex, 0, newPageId);
555
+
539
556
  /**
540
557
  * Step 5: Generate Primary View Page
541
558
  */
542
-
543
559
  var primaryPageIndex = nextDoc.files[fileIndex].pages.findIndex(function (page) {
544
560
  return page._id === pageId;
545
561
  });
@@ -554,30 +570,29 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
554
570
  }));
555
571
  });
556
572
  nextDoc.files[fileIndex].pages.splice(primaryPageIndex + 1, 0, newPrimaryPage);
573
+
557
574
  /**
558
575
  * Step 6: Update Primary Page Changelog
559
576
  */
560
-
561
577
  changelogInfo.primaryPages.targetIndex = primaryPageOrderTargetIndex;
562
578
  changelogInfo.primaryPages.page = newPrimaryPage;
579
+
563
580
  /**
564
581
  * Step 7: Update Views
565
582
  */
566
-
567
583
  if (nextDoc.files[fileIndex].views && nextDoc.files[fileIndex].views.length > 0) {
568
584
  nextDoc.files[fileIndex].views = nextDoc.files[fileIndex].views.map(function (view) {
569
585
  var nextView = _objectSpread({}, view);
570
-
571
586
  var viewPageIndex = nextView.pages.findIndex(function (page) {
572
587
  return page._id === pageId;
573
588
  });
574
589
  if (viewPageIndex === -1) return view;
590
+
575
591
  /**
576
592
  * Step 7.1 Update View Page Order.
577
593
  *
578
594
  * IMPORTANT NOTE: Page order update must go before page object creation.
579
595
  */
580
-
581
596
  var nextViewPageOrder = getPageOrder(nextView.pageOrder, nextView.pages);
582
597
  var nextViewPageOrderIndex = nextViewPageOrder.findIndex(function (id) {
583
598
  return id === pageId;
@@ -585,15 +600,14 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
585
600
  var nextViewTargetPageOrderIndex = nextViewPageOrderIndex + 1;
586
601
  nextView.pageOrder = nextViewPageOrder;
587
602
  nextView.pageOrder.splice(nextViewTargetPageOrderIndex, 0, newPageId);
603
+
588
604
  /**
589
605
  * Step 7.2 Update View Pages
590
606
  */
591
-
592
607
  var newViewPage = _objectSpread(_objectSpread({}, nextView.pages[viewPageIndex]), {}, {
593
608
  _id: newPageId,
594
609
  fieldPositions: []
595
610
  }, pageDefaults);
596
-
597
611
  nextView.pages[viewPageIndex].fieldPositions.forEach(function (fieldPosition) {
598
612
  var newField = newFieldsLookupByOldId[fieldPosition.field];
599
613
  newViewPage.fieldPositions.push(_objectSpread(_objectSpread({}, fieldPosition), {}, {
@@ -601,10 +615,10 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
601
615
  }));
602
616
  });
603
617
  nextView.pages.splice(viewPageIndex + 1, 0, newViewPage);
618
+
604
619
  /**
605
620
  * Step 7.3 Add View Page Changelog Info
606
621
  */
607
-
608
622
  changelogInfo.viewPages.push({
609
623
  viewId: view._id,
610
624
  view: view.type,
@@ -614,29 +628,23 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
614
628
  return nextView;
615
629
  });
616
630
  }
617
-
618
631
  return {
619
632
  changelogInfo: changelogInfo,
620
633
  doc: nextDoc
621
634
  };
622
635
  };
636
+
623
637
  /**
624
638
  * Generate the mobile view and add specific mobile view properties
625
639
  *
626
640
  * @param {Object} file //Full file object
627
641
  * @returns {Object}
628
642
  */
629
-
630
-
631
- exports.duplicateDocumentPage = duplicateDocumentPage;
632
-
633
- var getMobileViewFromFile = function getMobileViewFromFile(file) {
634
- var _file$views;
635
-
636
- var mobileViewIndex = file !== null && file !== void 0 && file.views && (file === null || file === void 0 ? void 0 : (_file$views = file.views) === null || _file$views === void 0 ? void 0 : _file$views.length) > 0 ? file.views.findIndex(function (view) {
643
+ var getMobileViewFromFile = exports.getMobileViewFromFile = function getMobileViewFromFile(file) {
644
+ var _file$views2;
645
+ var mobileViewIndex = file !== null && file !== void 0 && file.views && (file === null || file === void 0 ? void 0 : (_file$views2 = file.views) === null || _file$views2 === void 0 ? void 0 : _file$views2.length) > 0 ? file.views.findIndex(function (view) {
637
646
  return view.type === _FileViews["default"].mobile;
638
647
  }) : -1;
639
-
640
648
  if (mobileViewIndex !== -1) {
641
649
  /**
642
650
  * Why do we do this? Early versions of alternative views did not contain pageOrder so
@@ -651,17 +659,14 @@ var getMobileViewFromFile = function getMobileViewFromFile(file) {
651
659
  return generateMobileViewFromFile(file);
652
660
  }
653
661
  };
662
+
654
663
  /**
655
664
  * Generates the alternative mobile view from the default file view.
656
665
  *
657
666
  * @param {Object} file //Full file object
658
667
  * @returns {Object}
659
668
  */
660
-
661
-
662
- exports.getMobileViewFromFile = getMobileViewFromFile;
663
-
664
- var generateMobileViewFromFile = function generateMobileViewFromFile(file) {
669
+ var generateMobileViewFromFile = exports.generateMobileViewFromFile = function generateMobileViewFromFile(file) {
665
670
  var pages = file.pages || [];
666
671
  var pageOrder = cleanPageOrder(getPageOrder(file.pageOrder, file.pages), file.pages);
667
672
  return {
@@ -669,30 +674,29 @@ var generateMobileViewFromFile = function generateMobileViewFromFile(file) {
669
674
  type: _FileViews["default"].mobile,
670
675
  pages: (0, _toConsumableArray2["default"])(pages).map(function (page) {
671
676
  var _id = page._id,
672
- name = page.name,
673
- identifier = page.identifier,
674
- fieldPositions = page.fieldPositions;
677
+ name = page.name,
678
+ identifier = page.identifier,
679
+ fieldPositions = page.fieldPositions,
680
+ rowHeight = page.rowHeight;
675
681
  return generateMobilePage({
676
682
  _id: _id,
677
683
  identifier: identifier,
678
684
  name: name,
679
- fieldPositions: fieldPositions
685
+ fieldPositions: fieldPositions,
686
+ rowHeight: rowHeight
680
687
  });
681
688
  }),
682
689
  pageOrder: (0, _toConsumableArray2["default"])(pageOrder)
683
690
  };
684
691
  };
692
+
685
693
  /**
686
694
  * Apply the pr
687
695
  *
688
696
  * @param {Object} page
689
697
  * @returns {Objectg}
690
698
  */
691
-
692
-
693
- exports.generateMobileViewFromFile = generateMobileViewFromFile;
694
-
695
- var generateMobilePage = function generateMobilePage(page) {
699
+ var generateMobilePage = exports.generateMobilePage = function generateMobilePage(page) {
696
700
  return _objectSpread(_objectSpread({}, page), {}, {
697
701
  fieldPositions: page.fieldPositions ? generateMobilePageFieldPositions(page.fieldPositions, page.rowHeight) : [],
698
702
  type: _PageTypes["default"].mobile,
@@ -705,15 +709,12 @@ var generateMobilePage = function generateMobilePage(page) {
705
709
  presentation: _FieldPresentationModes["default"].normal
706
710
  });
707
711
  };
708
-
709
- exports.generateMobilePage = generateMobilePage;
710
-
711
- var generateMobilePageFieldPositions = function generateMobilePageFieldPositions(fieldPositions, originalRowHeight) {
712
+ var generateMobilePageFieldPositions = exports.generateMobilePageFieldPositions = function generateMobilePageFieldPositions(fieldPositions, originalRowHeight) {
712
713
  var mobileFieldPositions = [];
714
+
713
715
  /**
714
716
  * Step 1: Sort fieldPositions
715
717
  */
716
-
717
718
  var sortedFieldPositions = sortFieldPositionsByXAndYCoordinates(fieldPositions);
718
719
  sortedFieldPositions.forEach(function (joySpecFieldPosition) {
719
720
  var mobileFieldPositionData = _objectSpread(_objectSpread({}, joySpecFieldPosition), {}, {
@@ -723,16 +724,16 @@ var generateMobilePageFieldPositions = function generateMobilePageFieldPositions
723
724
  width: 1,
724
725
  x: 0
725
726
  });
727
+
726
728
  /**
727
729
  * Step 1.2 Hide chart lines on mobile
728
730
  */
729
-
730
-
731
731
  if (joySpecFieldPosition.type === _FieldTypes["default"].chart) mobileFieldPositionData.primaryDisplayOnly = true;
732
732
  mobileFieldPositions.push(mobileFieldPositionData);
733
733
  });
734
734
  return mergeAssoicatedFieldPositionsForMobilePage(mobileFieldPositions);
735
735
  };
736
+
736
737
  /**
737
738
  * Merge Field Positions assoicated with the same Field.
738
739
  *
@@ -747,23 +748,20 @@ var generateMobilePageFieldPositions = function generateMobilePageFieldPositions
747
748
  * @param {Array} fields
748
749
  * @returns {Array}
749
750
  */
750
-
751
-
752
- exports.generateMobilePageFieldPositions = generateMobilePageFieldPositions;
753
-
754
- var mergeAssoicatedFieldPositionsForMobilePage = function mergeAssoicatedFieldPositionsForMobilePage(fieldPositions) {
751
+ var mergeAssoicatedFieldPositionsForMobilePage = exports.mergeAssoicatedFieldPositionsForMobilePage = function mergeAssoicatedFieldPositionsForMobilePage(fieldPositions) {
755
752
  var filteredFieldPositions = [];
756
753
  fieldPositions === null || fieldPositions === void 0 ? void 0 : fieldPositions.forEach(function (fieldPosition) {
757
754
  var fieldPositionIndex = filteredFieldPositions.findIndex(function (filtered) {
758
755
  var _filtered$field, _fieldPosition$field;
759
-
760
756
  return (filtered === null || filtered === void 0 ? void 0 : (_filtered$field = filtered.field) === null || _filtered$field === void 0 ? void 0 : _filtered$field.toString()) === (fieldPosition === null || fieldPosition === void 0 ? void 0 : (_fieldPosition$field = fieldPosition.field) === null || _fieldPosition$field === void 0 ? void 0 : _fieldPosition$field.toString());
761
- }); //Only add field to the list if it hasn't already been added
757
+ });
762
758
 
759
+ //Only add field to the list if it hasn't already been added
763
760
  if (fieldPositionIndex === -1) filteredFieldPositions.push(fieldPosition);
764
761
  });
765
762
  return filteredFieldPositions;
766
763
  };
764
+
767
765
  /**
768
766
  * Sort fields by their y and x coordinates
769
767
  *
@@ -789,11 +787,7 @@ var mergeAssoicatedFieldPositionsForMobilePage = function mergeAssoicatedFieldPo
789
787
  * @param {Array} fieldPositions
790
788
  * @returns {Array}
791
789
  */
792
-
793
-
794
- exports.mergeAssoicatedFieldPositionsForMobilePage = mergeAssoicatedFieldPositionsForMobilePage;
795
-
796
- var sortFieldPositionsByXAndYCoordinates = function sortFieldPositionsByXAndYCoordinates(fieldPositions) {
790
+ var sortFieldPositionsByXAndYCoordinates = exports.sortFieldPositionsByXAndYCoordinates = function sortFieldPositionsByXAndYCoordinates(fieldPositions) {
797
791
  var sortedFieldPositions = (0, _toConsumableArray2["default"])(fieldPositions);
798
792
  sortedFieldPositions.sort(function (a, b) {
799
793
  if (a.y === b.y) {
@@ -808,6 +802,7 @@ var sortFieldPositionsByXAndYCoordinates = function sortFieldPositionsByXAndYCoo
808
802
  });
809
803
  return sortedFieldPositions;
810
804
  };
805
+
811
806
  /**
812
807
  * Formats individual table cell field positions that have already been merged with their associated field.
813
808
  * This additional information is added and used for rendering the fieldPositions on the form.
@@ -817,11 +812,7 @@ var sortFieldPositionsByXAndYCoordinates = function sortFieldPositionsByXAndYCoo
817
812
  * @param {Array} fieldPositions
818
813
  * @returns {Array}
819
814
  */
820
-
821
-
822
- exports.sortFieldPositionsByXAndYCoordinates = sortFieldPositionsByXAndYCoordinates;
823
-
824
- var formatTableFieldPositions = function formatTableFieldPositions(fieldPositions) {
815
+ var formatTableFieldPositions = exports.formatTableFieldPositions = function formatTableFieldPositions(fieldPositions) {
825
816
  /**
826
817
  * We only want to generate the table value calculated lookup for each table field once.
827
818
  * We use these lookups because multiple table fieldPositions belonging to the same table
@@ -831,21 +822,20 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
831
822
  var nextFieldPositions = [];
832
823
  (0, _toConsumableArray2["default"])(fieldPositions).forEach(function (fieldPosition) {
833
824
  var nextFieldPosition = _objectSpread({}, fieldPosition);
834
-
835
825
  if (fieldPosition.type === _FieldTypes["default"].table) {
836
826
  var field = fieldPosition.field,
837
- column = fieldPosition.column,
838
- rowIndex = fieldPosition.rowIndex,
839
- tableColumns = fieldPosition.tableColumns,
840
- value = fieldPosition.value,
841
- rowOrder = fieldPosition.rowOrder,
842
- tableColumnOrder = fieldPosition.tableColumnOrder;
827
+ column = fieldPosition.column,
828
+ rowIndex = fieldPosition.rowIndex,
829
+ tableColumns = fieldPosition.tableColumns,
830
+ value = fieldPosition.value,
831
+ rowOrder = fieldPosition.rowOrder,
832
+ tableColumnOrder = fieldPosition.tableColumnOrder;
833
+
843
834
  /**
844
835
  * Step 1: Generate rows, rowOrder, tableColumns, etc. lookups for associated field. We only have to
845
836
  * do this once per-field. This increases performance if there are multiple form positions associated
846
837
  * with the same form.
847
838
  */
848
-
849
839
  if (!tableFieldLookup[field]) {
850
840
  /**
851
841
  * Step 1.1 Handle rows
@@ -853,10 +843,10 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
853
843
  var nextRows = (0, _tableHelper.getRows)(value);
854
844
  var nextRowOrder = (0, _tableHelper.getCleanedRowOrder)(rowOrder, nextRows);
855
845
  var nextSortedRows = (0, _tableHelper.sortRows)(nextRows, nextRowOrder);
846
+
856
847
  /**
857
848
  * Step 1.2 Handle columns
858
849
  */
859
-
860
850
  var nextTableColumnOrder = (0, _tableHelper.getCleanedColumnOrder)(tableColumnOrder, tableColumns);
861
851
  var nextSortedTableColumns = (0, _tableHelper.sortColumns)(tableColumns, nextTableColumnOrder);
862
852
  var nextTableColumns = (0, _tableHelper.getColumns)(nextSortedTableColumns);
@@ -864,10 +854,10 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
864
854
  nextTableColumns.forEach(function (column) {
865
855
  return nextTableColumnLookup[column._id] = column;
866
856
  });
857
+
867
858
  /**
868
859
  * Step 1.3 Handle cell calculations
869
860
  */
870
-
871
861
  var calculatedValue = (0, _tableHelper.generateTableLookup)(nextSortedRows, nextSortedTableColumns);
872
862
  tableFieldLookup[field] = {
873
863
  value: nextSortedRows,
@@ -878,20 +868,20 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
878
868
  calculatedValue: calculatedValue
879
869
  };
880
870
  }
871
+
881
872
  /**
882
873
  * Ensure each table field has a properly formatted properties
883
874
  */
884
-
885
-
886
875
  nextFieldPosition.value = tableFieldLookup[field].value;
887
876
  nextFieldPosition.rowOrder = tableFieldLookup[field].rowOrder;
888
877
  nextFieldPosition.tableColumns = tableFieldLookup[field].tableColumns;
889
878
  nextFieldPosition.tableColumnOrder = tableFieldLookup[field].tableColumnOrder;
879
+
890
880
  /**
891
881
  * Add calculated value lookup. For instance, { A1: '', B1: '', C1: '', ... }
892
882
  */
893
-
894
883
  nextFieldPosition.calculatedValue = tableFieldLookup[field].calculatedValue;
884
+
895
885
  /**
896
886
  * Individual Table Cell vs Entire Table
897
887
  *
@@ -912,10 +902,8 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
912
902
  * If tableRowIndex associated with a cell doesn't have a table row associated
913
903
  * with it (ie rows[rowIndex] is undefined) it means that particular row is deleted
914
904
  */
915
-
916
905
  if (tableFieldLookup[field] && column && typeof rowIndex === 'number') {
917
906
  var _tableFieldLookup$fie;
918
-
919
907
  /**
920
908
  * What is the difference between rowIndex and targetRowIndex?
921
909
  *
@@ -932,33 +920,33 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
932
920
  var targetRowIndex = tableFieldLookup[field].value.findIndex(function (row) {
933
921
  return (row === null || row === void 0 ? void 0 : row._id) === targetRowId;
934
922
  });
923
+
935
924
  /**
936
925
  * Add proper rowId to the field position so that it can be used
937
926
  * inside the element for change handlers;
938
927
  */
939
-
940
928
  nextFieldPosition.rowId = targetRowId;
929
+
941
930
  /**
942
931
  * If rows[rowIndex] is undefined, it means the row that was present
943
932
  * at the particular rowIndex was deleted
944
933
  */
945
-
946
934
  nextFieldPosition.cellValue = ((_tableFieldLookup$fie = tableFieldLookup[field].value[targetRowIndex]) === null || _tableFieldLookup$fie === void 0 ? void 0 : _tableFieldLookup$fie.cells[column]) || '';
935
+
947
936
  /**
948
937
  * Skip any individual field position that is associated with a deleted column.
949
938
  * targetColumn will appear as undefined if a column is deleted
950
939
  */
951
-
952
940
  if (targetColumn) {
953
941
  nextFieldPosition.calculatedCellValue = tableFieldLookup[field].calculatedValue["".concat(targetColumn.operand).concat(targetRowIndex + 1)];
954
942
  nextFieldPosition.columnType = targetColumn.type;
955
943
  nextFieldPosition.options = targetColumn.options;
956
944
  nextFieldPosition.columnIdentifier = targetColumn.identifier;
945
+
957
946
  /**
958
947
  * IMPORTANT NOTE: We only add individual table cell field position into
959
948
  * the fieldPosition list if the associated column is not deleted.
960
949
  */
961
-
962
950
  nextFieldPositions.push(nextFieldPosition);
963
951
  }
964
952
  } else {
@@ -972,9 +960,7 @@ var formatTableFieldPositions = function formatTableFieldPositions(fieldPosition
972
960
  });
973
961
  return nextFieldPositions;
974
962
  };
975
-
976
- exports.formatTableFieldPositions = formatTableFieldPositions;
977
- var _default = {
963
+ var _default = exports["default"] = {
978
964
  getDefaultJoyDocPage: getDefaultJoyDocPage,
979
965
  getDefaultJoyDocFile: getDefaultJoyDocFile,
980
966
  getDefaultJoyDoc: getDefaultJoyDoc,
@@ -993,5 +979,4 @@ var _default = {
993
979
  generateMobilePage: generateMobilePage,
994
980
  generateMobilePageFieldPositions: generateMobilePageFieldPositions,
995
981
  formatTableFieldPositions: formatTableFieldPositions
996
- };
997
- exports["default"] = _default;
982
+ };