@builttocreate/engine-utils 1.24.0 → 2.0.1

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.
@@ -7,10 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.handleMultiSelectOptionToggle = exports.getTemplateWithLookups = exports.getMultiSelectFieldValue = exports.getImportFieldValues = exports.getDefaultOption = exports.getDefaultFieldValuesFromTemplate = exports.getChartFieldValue = exports["default"] = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
11
 
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
15
 
16
16
  var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
@@ -45,25 +45,6 @@ var getChartFieldValue = function getChartFieldValue(value) {
45
45
 
46
46
  return (0, _toConsumableArray2["default"])(parsedData);
47
47
  };
48
- /**
49
- * Get multiselect field value
50
- *
51
- * @param (String|Array) value
52
- * @return Array
53
- */
54
-
55
-
56
- exports.getChartFieldValue = getChartFieldValue;
57
-
58
- var getMultiSelectFieldValue = function getMultiSelectFieldValue(value) {
59
- if (value && typeof value === 'string') {
60
- return value.replace(/\s/g, '').split(',');
61
- } else if (value && (0, _typeof2["default"])(value) === 'object') {
62
- return (0, _toConsumableArray2["default"])(value);
63
- } else {
64
- return [];
65
- }
66
- };
67
48
  /**
68
49
  * Get default option
69
50
  *
@@ -74,7 +55,7 @@ var getMultiSelectFieldValue = function getMultiSelectFieldValue(value) {
74
55
  */
75
56
 
76
57
 
77
- exports.getMultiSelectFieldValue = getMultiSelectFieldValue;
58
+ exports.getChartFieldValue = getChartFieldValue;
78
59
 
79
60
  var getDefaultOption = function getDefaultOption(value) {
80
61
  return {
@@ -83,6 +64,25 @@ var getDefaultOption = function getDefaultOption(value) {
83
64
  deleted: false
84
65
  };
85
66
  };
67
+ /**
68
+ * Get multiselect field value
69
+ *
70
+ * @param (String|Array) value
71
+ * @return Array
72
+ */
73
+
74
+
75
+ exports.getDefaultOption = getDefaultOption;
76
+
77
+ var getMultiSelectFieldValue = function getMultiSelectFieldValue(value) {
78
+ if (value && typeof value === 'string') {
79
+ return value.replace(/\s/g, '').split(','); //Legacy (document v1) support for multiSelect value
80
+ } else if (value && Array.isArray(value)) {
81
+ return (0, _toConsumableArray2["default"])(value);
82
+ } else {
83
+ return [];
84
+ }
85
+ };
86
86
  /**
87
87
  * Update the selected options.
88
88
  *
@@ -92,7 +92,7 @@ var getDefaultOption = function getDefaultOption(value) {
92
92
  */
93
93
 
94
94
 
95
- exports.getDefaultOption = getDefaultOption;
95
+ exports.getMultiSelectFieldValue = getMultiSelectFieldValue;
96
96
 
97
97
  var handleMultiSelectOptionToggle = function handleMultiSelectOptionToggle(multi) {
98
98
  var selectedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -100,19 +100,22 @@ var handleMultiSelectOptionToggle = function handleMultiSelectOptionToggle(multi
100
100
  var nextSelection = (0, _toConsumableArray2["default"])(selectedOptions);
101
101
  var optionIndex = nextSelection.indexOf(optionId);
102
102
 
103
- if (optionIndex !== -1) {
104
- nextSelection.splice(optionIndex, 1);
105
- } else if (multi) {
106
- nextSelection.push(optionId);
107
- } else {
108
- nextSelection = [optionId];
109
- }
110
-
111
103
  if (multi) {
112
- return nextSelection;
104
+ if (optionIndex !== -1) {
105
+ nextSelection.splice(optionIndex, 1);
106
+ } else if (multi) {
107
+ nextSelection.push(optionId);
108
+ }
113
109
  } else {
114
- return nextSelection[0] || '';
110
+ //Not multi
111
+ if (optionIndex !== -1) {
112
+ nextSelection = [];
113
+ } else {
114
+ nextSelection = [optionId];
115
+ }
115
116
  }
117
+
118
+ return nextSelection;
116
119
  };
117
120
  /**
118
121
  * Get default field values from template
@@ -5,12 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports["default"] = void 0;
8
+ exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports["default"] = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
12
  var _generateObjectId = _interopRequireDefault(require("./generateObjectId"));
13
13
 
14
+ var _validateObjectId = _interopRequireDefault(require("./validateObjectId"));
15
+
14
16
  var _PageLayoutModes = _interopRequireDefault(require("./constants/PageLayoutModes"));
15
17
 
16
18
  var _FieldPresentationModes = _interopRequireDefault(require("./constants/FieldPresentationModes"));
@@ -34,7 +36,7 @@ var getDefaultJoyDocPage = function getDefaultJoyDocPage() {
34
36
  height: 1056,
35
37
  rowHeight: 8,
36
38
  cols: 24,
37
- fields: [],
39
+ fieldPositions: [],
38
40
  layout: _PageLayoutModes["default"].grid,
39
41
  presentation: _FieldPresentationModes["default"].normal
40
42
  }, defaults);
@@ -81,14 +83,129 @@ var getDefaultJoyDoc = function getDefaultJoyDoc() {
81
83
  _id: id,
82
84
  identifier: "doc_".concat(id),
83
85
  name: 'New Doc',
84
- files: [getDefaultJoyDocFile(fileDefaults, pageDefaults)]
86
+ files: [getDefaultJoyDocFile(fileDefaults, pageDefaults)],
87
+ fields: []
85
88
  }, defaults);
86
89
  };
90
+ /**
91
+ * Get Clean JoyDoc Format
92
+ *
93
+ * Solves Issue: https://app.zenhub.com/workspaces/joyfill-platform-5f07262b507391001f56c7f9/issues/gh/zionlabs/issues/2105
94
+ *
95
+ * This selector ensures a couple of things:
96
+ * 1. Valid file inside the document.
97
+ * 2. Valid page inside document file.
98
+ * 3. All _id's (page, file, page, fieldPosition, field) are in a valid format
99
+ *
100
+ * @param {Object} doc
101
+ * @returns {Object}
102
+ */
103
+
87
104
 
88
105
  exports.getDefaultJoyDoc = getDefaultJoyDoc;
106
+
107
+ var getCleanedJoyDoc = function getCleanedJoyDoc(doc) {
108
+ if (!doc) return getDefaultJoyDoc();
109
+
110
+ var nextDoc = _objectSpread({}, doc);
111
+ /**
112
+ * Step 1.1: Replace doc._id if it is not valid
113
+ */
114
+
115
+
116
+ if (nextDoc._id && !(0, _validateObjectId["default"])(nextDoc._id)) nextDoc._id = (0, _generateObjectId["default"])();
117
+
118
+ if (nextDoc.files && nextDoc.files.length > 0) {
119
+ nextDoc.files = nextDoc.files.map(function (file) {
120
+ var _nextFile$views;
121
+
122
+ var nextFile = _objectSpread({}, file);
123
+ /**
124
+ * Step 1.2: Replace files[x]._id if it is not valid
125
+ */
126
+
127
+
128
+ if (nextFile._id && !(0, _validateObjectId["default"])(nextFile._id)) nextFile._id = (0, _generateObjectId["default"])();
129
+ /**
130
+ * Step 1.3: Replace page ids and field ids if they are not valid
131
+ */
132
+
133
+ nextFile.pages = getCleanedJoyDocPages(nextFile.pages);
134
+ /**
135
+ * Step 1.4: Replace view page ids and field ids if they are not valid
136
+ */
137
+
138
+ if ((nextFile === null || nextFile === void 0 ? void 0 : (_nextFile$views = nextFile.views) === null || _nextFile$views === void 0 ? void 0 : _nextFile$views.length) > 0) {
139
+ nextFile.views = nextFile.views.map(function (view) {
140
+ var nextView = _objectSpread({}, view);
141
+
142
+ nextView.pages = getCleanedJoyDocPages(nextView.pages);
143
+ return nextView;
144
+ });
145
+ }
146
+
147
+ return nextFile;
148
+ });
149
+ } else {
150
+ nextDoc.files = [getDefaultJoyDocFile()];
151
+ }
152
+
153
+ return nextDoc;
154
+ };
155
+ /**
156
+ * Get Cleaned JoyDoc Pages
157
+ *
158
+ * Solves Issue: https://app.zenhub.com/workspaces/joyfill-platform-5f07262b507391001f56c7f9/issues/gh/zionlabs/issues/2105
159
+ *
160
+ * This selector ensures a couple of things:
161
+ * 1. Valid page inside document file.pages array.
162
+ * 2. All id's in pages and fieldPositions are valid format
163
+ *
164
+ * @param {Object} doc
165
+ * @returns {Object}
166
+ */
167
+
168
+
169
+ exports.getCleanedJoyDoc = getCleanedJoyDoc;
170
+
171
+ var getCleanedJoyDocPages = function getCleanedJoyDocPages(pages) {
172
+ if ((pages === null || pages === void 0 ? void 0 : pages.length) > 0) {
173
+ return pages.map(function (page) {
174
+ /**
175
+ * Step 1: Replace pages[x]._id if it is not valid
176
+ */
177
+ var nextPage = _objectSpread({}, page);
178
+
179
+ if (nextPage._id && !(0, _validateObjectId["default"])(nextPage._id)) nextPage._id = (0, _generateObjectId["default"])();
180
+
181
+ if (nextPage.fieldPositions && nextPage.fieldPositions.length > 0) {
182
+ nextPage.fieldPositions = nextPage.fieldPositions.map(function (fieldPosition) {
183
+ /**
184
+ * Step 1.2: Replace fieldPosition _id and field reference if they are not valid
185
+ */
186
+ var nextFieldPosition = _objectSpread({}, fieldPosition);
187
+
188
+ if (nextFieldPosition._id && !(0, _validateObjectId["default"])(nextFieldPosition._id)) nextFieldPosition._id = (0, _generateObjectId["default"])();
189
+ if (nextFieldPosition.field && !(0, _validateObjectId["default"])(nextFieldPosition.field)) nextFieldPosition.field = (0, _generateObjectId["default"])();
190
+ return nextFieldPosition;
191
+ });
192
+ } else {
193
+ nextPage.fieldPositions = [];
194
+ }
195
+
196
+ return nextPage;
197
+ });
198
+ } else {
199
+ return [getDefaultJoyDocPage()];
200
+ }
201
+ };
202
+
203
+ exports.getCleanedJoyDocPages = getCleanedJoyDocPages;
89
204
  var _default = {
90
205
  getDefaultJoyDocPage: getDefaultJoyDocPage,
91
206
  getDefaultJoyDocFile: getDefaultJoyDocFile,
92
- getDefaultJoyDoc: getDefaultJoyDoc
207
+ getDefaultJoyDoc: getDefaultJoyDoc,
208
+ getCleanedJoyDoc: getCleanedJoyDoc,
209
+ getCleanedJoyDocPages: getCleanedJoyDocPages
93
210
  };
94
211
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "1.24.0",
3
+ "version": "2.0.1",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [