@builttocreate/engine-utils 2.6.0-beta.12 → 2.6.0-beta.20

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,7 +7,6 @@ exports["default"] = void 0;
7
7
  // Display Fields
8
8
  var uniqueId = 'uniqueId';
9
9
  var image = 'image';
10
- var file = 'file';
11
10
  var richText = 'richText';
12
11
  var block = 'block'; // Data Fields
13
12
 
@@ -27,7 +26,6 @@ var chart = 'chart';
27
26
  var types = {
28
27
  uniqueId: uniqueId,
29
28
  image: image,
30
- file: file,
31
29
  block: block,
32
30
  richText: richText,
33
31
  text: text,
@@ -48,7 +46,6 @@ types.all = Object.keys(types);
48
46
  types.titles = {
49
47
  uniqueId: 'Auto Number',
50
48
  image: 'Image',
51
- file: 'File',
52
49
  block: 'Display Text',
53
50
  richText: 'Rich Text',
54
51
  text: 'Short Text',
@@ -310,8 +310,6 @@ var isFieldEmpty = function isFieldEmpty(fieldType, fieldValue, fieldOptions) {
310
310
  isEmpty = true;
311
311
  } else if (fieldType === _FieldTypes["default"].image && (!fieldValue || fieldValue && fieldValue.length === 0)) {
312
312
  isEmpty = true;
313
- } else if (fieldType === _FieldTypes["default"].file && (!fieldValue || fieldValue && fieldValue.length === 0)) {
314
- isEmpty = true;
315
313
  } else if (fieldType === _FieldTypes["default"].chart && (!fieldValue || fieldValue && fieldValue.length === 0)) {
316
314
  isEmpty = true;
317
315
  } else if (fieldType === _FieldTypes["default"].table && (!fieldValue || fieldValue && fieldValue.filter(function (item) {
@@ -5,7 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.sortPages = exports.getPageOrder = exports.getDocumentFromTemplate = exports.getDefaultTemplate = exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getDefaultDocument = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports.duplicateDocumentPage = exports.duplicate = exports["default"] = exports.cleanPageOrder = void 0;
8
+ exports.sortPages = exports.sortFieldPositionsByXAndYCoordinates = exports.mergeAssoicatedFieldPositionsForMobileView = exports.getPageOrder = exports.getDocumentFromTemplate = exports.getDefaultTemplate = exports.getDefaultJoyDocPage = exports.getDefaultJoyDocFile = exports.getDefaultJoyDoc = exports.getDefaultDocument = exports.getCleanedJoyDocPages = exports.getCleanedJoyDoc = exports.generateMobileViewPageFieldPositions = exports.generateMobileViewPage = exports.generateMobileViewFile = exports.duplicateDocumentPage = exports.duplicate = exports["default"] = exports.cleanPageOrder = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
11
 
10
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
13
 
@@ -21,6 +23,10 @@ var _DocumentTypes = _interopRequireDefault(require("./constants/DocumentTypes")
21
23
 
22
24
  var _FieldTypes = _interopRequireDefault(require("./constants/FieldTypes"));
23
25
 
26
+ var _FieldDisplayTypes = _interopRequireDefault(require("./constants/FieldDisplayTypes"));
27
+
28
+ var _FileViews = _interopRequireDefault(require("./constants/FileViews"));
29
+
24
30
  var _tableHelper = require("./tableHelper");
25
31
 
26
32
  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; }
@@ -610,8 +616,160 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
610
616
  doc: nextDoc
611
617
  };
612
618
  };
619
+ /**
620
+ * Generate the mobile view and add specific mobile view properties
621
+ *
622
+ * @param {Object} file //Full file object
623
+ * @returns {Object}
624
+ */
625
+
613
626
 
614
627
  exports.duplicateDocumentPage = duplicateDocumentPage;
628
+
629
+ var generateMobileViewFile = function generateMobileViewFile(file) {
630
+ return {
631
+ _id: (0, _generateObjectId["default"])(),
632
+ type: _FileViews["default"].mobile,
633
+ pages: (0, _toConsumableArray2["default"])(file.pages).map(function (page) {
634
+ var _id = page._id,
635
+ name = page.name,
636
+ identifier = page.identifier,
637
+ fieldPositions = page.fieldPositions;
638
+ return generateMobileViewPage({
639
+ _id: _id,
640
+ identifier: identifier,
641
+ name: name,
642
+ fieldPositions: fieldPositions
643
+ });
644
+ })
645
+ };
646
+ };
647
+ /**
648
+ * Apply the proper page defaults for a mobile view to existing page.
649
+ *
650
+ * @param {Object} page
651
+ * @returns {Objectg}
652
+ */
653
+
654
+
655
+ exports.generateMobileViewFile = generateMobileViewFile;
656
+
657
+ var generateMobileViewPage = function generateMobileViewPage(page) {
658
+ return _objectSpread(_objectSpread({}, page), {}, {
659
+ fieldPositions: page.fieldPositions ? generateMobileViewPageFieldPositions(page.fieldPositions, page.rowHeight) : [],
660
+ rowHeight: 1,
661
+ cols: 1,
662
+ padding: 12,
663
+ width: 816,
664
+ height: 1056,
665
+ layout: _PageLayoutModes["default"].grid,
666
+ presentation: _FieldPresentationModes["default"].normal
667
+ });
668
+ };
669
+
670
+ exports.generateMobileViewPage = generateMobileViewPage;
671
+
672
+ var generateMobileViewPageFieldPositions = function generateMobileViewPageFieldPositions(fieldPositions, originalRowHeight) {
673
+ var mobileFieldPositions = [];
674
+ /**
675
+ * Step 1: Sort fieldPositions
676
+ */
677
+
678
+ var sortedFieldPositions = sortFieldPositionsByXAndYCoordinates(fieldPositions);
679
+ sortedFieldPositions.forEach(function (joySpecFieldPosition) {
680
+ var mobileFieldPositionData = _objectSpread(_objectSpread({}, joySpecFieldPosition), {}, {
681
+ displayType: _FieldDisplayTypes["default"].original,
682
+ height: joySpecFieldPosition.height * (originalRowHeight || 1),
683
+ width: 1,
684
+ x: 0
685
+ });
686
+ /**
687
+ * Step 1.2 Hide chart lines on mobile
688
+ */
689
+
690
+
691
+ if (joySpecFieldPosition.type === _FieldTypes["default"].chart) mobileFieldPositionData.primaryDisplayOnly = true;
692
+ mobileFieldPositions.push(mobileFieldPositionData);
693
+ });
694
+ return mergeAssoicatedFieldPositionsForMobileView(mobileFieldPositions);
695
+ };
696
+ /**
697
+ * Merge Field Positions assoicated with the same Field.
698
+ *
699
+ * Why do duplicate fields get created from fieldPositions
700
+ *
701
+ * The same field can get added twice because we may have multiple fieldPositions belonging
702
+ * to the same field. This can happen with dropdown, multiSelect, and table fields.
703
+ *
704
+ * Since the fields get generated by looping over the fieldPositions and not regular fields
705
+ * we may encounter the the same field multiple times because it has multiple fieldPositions.
706
+ *
707
+ * @param {Array} fields
708
+ * @returns {Array}
709
+ */
710
+
711
+
712
+ exports.generateMobileViewPageFieldPositions = generateMobileViewPageFieldPositions;
713
+
714
+ var mergeAssoicatedFieldPositionsForMobileView = function mergeAssoicatedFieldPositionsForMobileView(fieldPositions) {
715
+ var filteredFieldPositions = [];
716
+ fieldPositions === null || fieldPositions === void 0 ? void 0 : fieldPositions.forEach(function (fieldPosition) {
717
+ var fieldPositionIndex = filteredFieldPositions.findIndex(function (filtered) {
718
+ var _filtered$field, _fieldPosition$field;
719
+
720
+ 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());
721
+ }); //Only add field to the list if it hasn't already been added
722
+
723
+ if (fieldPositionIndex === -1) filteredFieldPositions.push(fieldPosition);
724
+ });
725
+ return filteredFieldPositions;
726
+ };
727
+ /**
728
+ * Sort fields by their y and x coordinates
729
+ *
730
+ * For example:
731
+ * [
732
+ * { "y": 3, "x": 4 },
733
+ * { "y": 3, "x": 1 },
734
+ * { "y": 2, "x": 0 },
735
+ * { "y": 1, "x": 5.22 },
736
+ * { "y": 1, "x": 10 },
737
+ * { "y": 1, "x": 0 },
738
+ * ]
739
+ * will become the following after sort
740
+ * [
741
+ * { "y": 1, "x": 0 },
742
+ * { "y": 1, "x": 5.22 },
743
+ * { "y": 1, "x": 10 },
744
+ * { "y": 2, "x": 0 },
745
+ * { "y": 3, "x": 1 },
746
+ * { "y": 3, "x": 4 }
747
+ * ];
748
+ *
749
+ * @param {Array} fieldPositions
750
+ * @returns {Array}
751
+ */
752
+
753
+
754
+ exports.mergeAssoicatedFieldPositionsForMobileView = mergeAssoicatedFieldPositionsForMobileView;
755
+
756
+ var sortFieldPositionsByXAndYCoordinates = function sortFieldPositionsByXAndYCoordinates(fieldPositions) {
757
+ var sortedFieldPositions = (0, _toConsumableArray2["default"])(fieldPositions);
758
+ sortedFieldPositions.sort(function (a, b) {
759
+ if (a.y === b.y) {
760
+ return a.x - b.x;
761
+ } else if (a.y > b.y) {
762
+ return 1;
763
+ } else if (a.y < b.y) {
764
+ return -1;
765
+ } else {
766
+ return 0;
767
+ }
768
+ });
769
+ return sortedFieldPositions;
770
+ };
771
+
772
+ exports.sortFieldPositionsByXAndYCoordinates = sortFieldPositionsByXAndYCoordinates;
615
773
  var _default = {
616
774
  getDefaultJoyDocPage: getDefaultJoyDocPage,
617
775
  getDefaultJoyDocFile: getDefaultJoyDocFile,
@@ -624,6 +782,11 @@ var _default = {
624
782
  duplicate: duplicate,
625
783
  duplicateDocumentPage: duplicateDocumentPage,
626
784
  getPageOrder: getPageOrder,
627
- sortPages: sortPages
785
+ sortPages: sortPages,
786
+ sortFieldPositionsByXAndYCoordinates: sortFieldPositionsByXAndYCoordinates,
787
+ mergeAssoicatedFieldPositionsForMobileView: mergeAssoicatedFieldPositionsForMobileView,
788
+ generateMobileViewFile: generateMobileViewFile,
789
+ generateMobileViewPage: generateMobileViewPage,
790
+ generateMobileViewPageFieldPositions: generateMobileViewPageFieldPositions
628
791
  };
629
792
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builttocreate/engine-utils",
3
- "version": "2.6.0-beta.12",
3
+ "version": "2.6.0-beta.20",
4
4
  "description": "Utility library for common logic shared across web and mobile",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -11,7 +11,7 @@
11
11
  "clean": "rm -rf dist",
12
12
  "build-src": "NODE_ENV=production babel src --out-dir dist --extensions '.js,.jsx' --ignore 'src/testUtils/*','src/**/*.stories.js','src/**/*.test.js','src/lib/**/*.test.js','src/**/__snapshots__','src/**/__mocks__'",
13
13
  "build": "npm run clean && npm run build-src",
14
- "prepublish": "npm run build",
14
+ "prepare": "npm run build",
15
15
  "publish-beta": "npm publish --tag beta",
16
16
  "test": "jest",
17
17
  "test-watch": "jest --watch",
@@ -23,7 +23,7 @@
23
23
  "type": "git",
24
24
  "url": "git+https://github.com/zionlabs/engine-utils.git"
25
25
  },
26
- "author": "Docspace Team",
26
+ "author": "Joyfill Team",
27
27
  "license": "ISC",
28
28
  "bugs": {
29
29
  "url": "https://github.com/zionlabs/engine-utils/issues"