@builttocreate/engine-utils 2.6.0-beta.2 → 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.
@@ -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; }
@@ -41,10 +47,11 @@ var getDefaultJoyDocPage = function getDefaultJoyDocPage() {
41
47
  width: 816,
42
48
  height: 1056,
43
49
  rowHeight: 8,
44
- cols: 24,
50
+ cols: 8,
45
51
  fieldPositions: [],
46
52
  layout: _PageLayoutModes["default"].grid,
47
- presentation: _FieldPresentationModes["default"].normal
53
+ presentation: _FieldPresentationModes["default"].normal,
54
+ padding: 24
48
55
  }, defaults);
49
56
  };
50
57
  /**
@@ -66,7 +73,10 @@ var getDefaultJoyDocFile = function getDefaultJoyDocFile() {
66
73
  _id: (0, _generateObjectId["default"])(),
67
74
  name: 'New File',
68
75
  pageOrder: [page._id],
69
- pages: [page]
76
+ pages: [page],
77
+ styles: {
78
+ margin: 4
79
+ }
70
80
  }, defaults);
71
81
  };
72
82
  /**
@@ -606,8 +616,160 @@ var duplicateDocumentPage = function duplicateDocumentPage(doc, fileId, pageId)
606
616
  doc: nextDoc
607
617
  };
608
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
+
609
626
 
610
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;
611
773
  var _default = {
612
774
  getDefaultJoyDocPage: getDefaultJoyDocPage,
613
775
  getDefaultJoyDocFile: getDefaultJoyDocFile,
@@ -620,6 +782,11 @@ var _default = {
620
782
  duplicate: duplicate,
621
783
  duplicateDocumentPage: duplicateDocumentPage,
622
784
  getPageOrder: getPageOrder,
623
- sortPages: sortPages
785
+ sortPages: sortPages,
786
+ sortFieldPositionsByXAndYCoordinates: sortFieldPositionsByXAndYCoordinates,
787
+ mergeAssoicatedFieldPositionsForMobileView: mergeAssoicatedFieldPositionsForMobileView,
788
+ generateMobileViewFile: generateMobileViewFile,
789
+ generateMobileViewPage: generateMobileViewPage,
790
+ generateMobileViewPageFieldPositions: generateMobileViewPageFieldPositions
624
791
  };
625
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.2",
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"