@micromag/core 0.3.348 → 0.3.354

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.
package/es/components.js CHANGED
@@ -3101,6 +3101,10 @@ PropTypes$1.shape({
3101
3101
  id: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.number]),
3102
3102
  name: PropTypes$1.string
3103
3103
  });
3104
+ PropTypes$1.shape({
3105
+ label: textElement,
3106
+ buttonStyle: boxStyle
3107
+ });
3104
3108
 
3105
3109
  /* eslint-disable react/no-array-index-key */
3106
3110
  var propTypes$d = {
package/es/hooks.js CHANGED
@@ -1599,7 +1599,9 @@ var useParsedStory = function useParsedStory(story) {
1599
1599
  _ref$withMedias = _ref.withMedias,
1600
1600
  withMedias = _ref$withMedias === void 0 ? true : _ref$withMedias,
1601
1601
  _ref$withFonts = _ref.withFonts,
1602
- withFonts = _ref$withFonts === void 0 ? true : _ref$withFonts;
1602
+ withFonts = _ref$withFonts === void 0 ? true : _ref$withFonts,
1603
+ _ref$withMigrations = _ref.withMigrations,
1604
+ withMigrations = _ref$withMigrations === void 0 ? true : _ref$withMigrations;
1603
1605
  var screensManager = useScreensManager();
1604
1606
  var fieldsManager = useFieldsManager();
1605
1607
  var parser = useMemo(function () {
@@ -1615,7 +1617,8 @@ var useParsedStory = function useParsedStory(story) {
1615
1617
  return parser.parse(story, {
1616
1618
  withMedias: withMedias,
1617
1619
  withTheme: withTheme,
1618
- withFonts: withFonts
1620
+ withFonts: withFonts,
1621
+ withMigrations: withMigrations
1619
1622
  });
1620
1623
  }, [parser, disabled, withMedias, withTheme, withFonts, story]);
1621
1624
  return newStory;
package/es/index.js CHANGED
@@ -25,8 +25,8 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
25
25
  import 'slugify';
26
26
  import uniqBy from 'lodash/uniqBy';
27
27
  import _typeof from '@babel/runtime/helpers/typeof';
28
- import isEmpty from 'lodash/isEmpty';
29
28
  import uniq from 'lodash/uniq';
29
+ import isEmpty from 'lodash/isEmpty';
30
30
  import { Tracking as Tracking$1 } from '@folklore/tracking';
31
31
 
32
32
  /**
@@ -605,6 +605,10 @@ var visitor = PropTypes$1.shape({
605
605
  id: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.number]),
606
606
  name: PropTypes$1.string
607
607
  });
608
+ var badge = PropTypes$1.shape({
609
+ label: textElement,
610
+ buttonStyle: boxStyle
611
+ });
608
612
 
609
613
  var PropTypes = /*#__PURE__*/Object.freeze({
610
614
  __proto__: null,
@@ -749,7 +753,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
749
753
  paymentItems: paymentItems,
750
754
  pageMetadata: pageMetadata,
751
755
  authorElement: authorElement,
752
- visitor: visitor
756
+ visitor: visitor,
757
+ badge: badge
753
758
  });
754
759
 
755
760
  var sortedColors = function sortedColors(colors) {
@@ -1137,7 +1142,7 @@ var FieldsManager = /*#__PURE__*/function (_DefinitionsManager) {
1137
1142
  return FieldsManager;
1138
1143
  }(DefinitionsManager);
1139
1144
 
1140
- var _excluded$3 = ["medias"];
1145
+ var _excluded$4 = ["medias"];
1141
1146
  var MediasParser = /*#__PURE__*/function () {
1142
1147
  function MediasParser(_ref) {
1143
1148
  var fieldsManager = _ref.fieldsManager,
@@ -1193,7 +1198,7 @@ var MediasParser = /*#__PURE__*/function () {
1193
1198
  if (theme !== null) {
1194
1199
  var _this$toPath = this.toPath(theme),
1195
1200
  themeMedias = _this$toPath.medias,
1196
- newTheme = _objectWithoutProperties(_this$toPath, _excluded$3);
1201
+ newTheme = _objectWithoutProperties(_this$toPath, _excluded$4);
1197
1202
  return medias !== null || themeMedias !== null ? _objectSpread(_objectSpread({}, story), {}, {
1198
1203
  theme: newTheme,
1199
1204
  components: newComponents,
@@ -1425,7 +1430,197 @@ var ScreensManager = /*#__PURE__*/function (_DefinitionsManager) {
1425
1430
  return ScreensManager;
1426
1431
  }(DefinitionsManager);
1427
1432
 
1428
- var _excluded$2 = ["textStyle", "color", "boxStyle"];
1433
+ var _excluded$3 = ["fonts"];
1434
+ var FontsParser = /*#__PURE__*/function () {
1435
+ function FontsParser(_ref) {
1436
+ var fieldsManager = _ref.fieldsManager,
1437
+ screensManager = _ref.screensManager;
1438
+ _classCallCheck(this, FontsParser);
1439
+ this.fieldsManager = fieldsManager;
1440
+ this.screensManager = screensManager;
1441
+ this.fieldsPatternCache = {};
1442
+ }
1443
+ _createClass(FontsParser, [{
1444
+ key: "getFieldsPatternByScreen",
1445
+ value: function getFieldsPatternByScreen(type) {
1446
+ if (typeof this.fieldsPatternCache[type] === 'undefined') {
1447
+ var _ref2 = this.screensManager.getDefinition(type) || {},
1448
+ _ref2$fields = _ref2.fields,
1449
+ fields = _ref2$fields === void 0 ? [] : _ref2$fields;
1450
+ this.fieldsPatternCache[type] = this.getFieldsPattern(fields);
1451
+ }
1452
+ return this.fieldsPatternCache[type];
1453
+ }
1454
+
1455
+ // Extract fonts
1456
+ }, {
1457
+ key: "parse",
1458
+ value: function parse(story) {
1459
+ var _this = this;
1460
+ if (story === null) {
1461
+ return story;
1462
+ }
1463
+
1464
+ // Extract fonts from screen
1465
+ var _ref3 = story || {},
1466
+ _ref3$theme = _ref3.theme,
1467
+ theme = _ref3$theme === void 0 ? null : _ref3$theme,
1468
+ _ref3$components = _ref3.components,
1469
+ components = _ref3$components === void 0 ? [] : _ref3$components;
1470
+ var fonts = uniq(components.reduce(function (currentFonts, screen) {
1471
+ var type = screen.type;
1472
+ var fieldsPattern = _this.getFieldsPatternByScreen(type);
1473
+ var newFonts = FontsParser.extractFontsWithPaths(screen, fieldsPattern);
1474
+ return newFonts.length > 0 ? [].concat(_toConsumableArray(currentFonts), _toConsumableArray(newFonts)) : currentFonts;
1475
+ }, []), 'name');
1476
+
1477
+ // Extract fonts from theme
1478
+ if (theme !== null) {
1479
+ var _this$parse = this.parse(theme),
1480
+ _this$parse$fonts = _this$parse.fonts,
1481
+ themeFonts = _this$parse$fonts === void 0 ? [] : _this$parse$fonts,
1482
+ newTheme = _objectWithoutProperties(_this$parse, _excluded$3);
1483
+ return fonts.length > 0 || themeFonts.length > 0 ? _objectSpread(_objectSpread({}, story), {}, {
1484
+ theme: newTheme,
1485
+ fonts: uniq([].concat(_toConsumableArray(themeFonts), _toConsumableArray(fonts)), 'name')
1486
+ }) : story;
1487
+ }
1488
+ return fonts.length > 0 ? _objectSpread(_objectSpread({}, story), {}, {
1489
+ fonts: fonts
1490
+ }) : story;
1491
+ }
1492
+ }, {
1493
+ key: "getFieldsPattern",
1494
+ value: function getFieldsPattern(fields) {
1495
+ var _this2 = this;
1496
+ var namePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1497
+ return fields.reduce(function (patterns, field) {
1498
+ var _field$name = field.name,
1499
+ name = _field$name === void 0 ? null : _field$name,
1500
+ _field$type = field.type,
1501
+ type = _field$type === void 0 ? null : _field$type;
1502
+ var path = [namePrefix, name].filter(function (it) {
1503
+ return it !== null;
1504
+ }).join('\\.');
1505
+ var fieldDefinition = _objectSpread(_objectSpread({}, type !== null ? _this2.fieldsManager.getDefinition(type) : null), field);
1506
+
1507
+ // also check settings fields
1508
+ var _fieldDefinition$fiel = fieldDefinition.fields,
1509
+ subFields = _fieldDefinition$fiel === void 0 ? [] : _fieldDefinition$fiel,
1510
+ _fieldDefinition$item = fieldDefinition.itemsField,
1511
+ itemsField = _fieldDefinition$item === void 0 ? null : _fieldDefinition$item,
1512
+ _fieldDefinition$sett = fieldDefinition.settings,
1513
+ settings = _fieldDefinition$sett === void 0 ? [] : _fieldDefinition$sett;
1514
+ return [].concat(_toConsumableArray(patterns), _toConsumableArray(FontsParser.fieldIsFontFamily(fieldDefinition) ? [new RegExp("^".concat(path, "$"))] : []), _toConsumableArray(_this2.getFieldsPattern(subFields, path)), _toConsumableArray(_this2.getFieldsPattern(settings, path)), _toConsumableArray(itemsField !== null ? _this2.getFieldsPattern([itemsField], "".concat(path, "\\.[0-9]+")) : []));
1515
+ }, []);
1516
+ }
1517
+ }], [{
1518
+ key: "fieldIsFontFamily",
1519
+ value: function fieldIsFontFamily(_ref4) {
1520
+ var _ref4$id = _ref4.id,
1521
+ id = _ref4$id === void 0 ? null : _ref4$id;
1522
+ return id === 'font-family';
1523
+ }
1524
+ }, {
1525
+ key: "valueIsFont",
1526
+ value: function valueIsFont(_ref5) {
1527
+ var _ref5$type = _ref5.type,
1528
+ type = _ref5$type === void 0 ? null : _ref5$type;
1529
+ return type === 'custom' || type === 'google';
1530
+ }
1531
+ }, {
1532
+ key: "extractFontsWithPaths",
1533
+ value: function extractFontsWithPaths(data, patterns) {
1534
+ var keyPrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1535
+ var dataIsArray = isArray(data);
1536
+ var keys = dataIsArray ? _toConsumableArray(data.keys()) : Object.keys(data);
1537
+ return keys.reduce(function (currentFonts, key) {
1538
+ var path = [keyPrefix, key].filter(function (it) {
1539
+ return it !== null;
1540
+ }).join('.');
1541
+ var patternMatch = patterns.reduce(function (found, pattern) {
1542
+ return found || pattern.test(path);
1543
+ }, false);
1544
+ var value = data[key];
1545
+ var font = null;
1546
+ var subFonts = null;
1547
+ if (patternMatch && isObject(value) && FontsParser.valueIsFont(value)) {
1548
+ font = value;
1549
+ } else if (isObject(value) || isArray(value)) {
1550
+ subFonts = FontsParser.extractFontsWithPaths(value, patterns, path);
1551
+ }
1552
+ return subFonts !== null || font !== null ? [].concat(_toConsumableArray(currentFonts), _toConsumableArray(subFonts || []), _toConsumableArray(font !== null ? [font] : [])) : currentFonts;
1553
+ }, []);
1554
+ }
1555
+ }]);
1556
+ return FontsParser;
1557
+ }();
1558
+
1559
+ var _excluded$2 = ["components"],
1560
+ _excluded2$1 = ["shareIncentive", "callToAction"];
1561
+ var MigrationsParser = /*#__PURE__*/function () {
1562
+ function MigrationsParser(_ref) {
1563
+ var fieldsManager = _ref.fieldsManager,
1564
+ screensManager = _ref.screensManager;
1565
+ _classCallCheck(this, MigrationsParser);
1566
+ this.fieldsManager = fieldsManager;
1567
+ this.screensManager = screensManager;
1568
+ }
1569
+
1570
+ // eslint-disable-next-line class-methods-use-this
1571
+ _createClass(MigrationsParser, [{
1572
+ key: "parse",
1573
+ value: function parse(story) {
1574
+ if (story === null) {
1575
+ return story;
1576
+ }
1577
+ var _ref2 = story || {},
1578
+ _ref2$components = _ref2.components,
1579
+ components = _ref2$components === void 0 ? [] : _ref2$components,
1580
+ restStory = _objectWithoutProperties(_ref2, _excluded$2);
1581
+ var finalComponents = components.reduce(function (currentComponents, screen) {
1582
+ var _ref3 = screen || {},
1583
+ _ref3$shareIncentive = _ref3.shareIncentive,
1584
+ shareIncentive = _ref3$shareIncentive === void 0 ? null : _ref3$shareIncentive,
1585
+ _ref3$callToAction = _ref3.callToAction,
1586
+ callToAction = _ref3$callToAction === void 0 ? null : _ref3$callToAction,
1587
+ restScreen = _objectWithoutProperties(_ref3, _excluded2$1);
1588
+ if (shareIncentive === null && callToAction === null) {
1589
+ return [].concat(_toConsumableArray(currentComponents), [restScreen]);
1590
+ }
1591
+ var _ref4 = screen || {},
1592
+ _ref4$header = _ref4.header,
1593
+ header = _ref4$header === void 0 ? null : _ref4$header,
1594
+ _ref4$footer = _ref4.footer,
1595
+ footer = _ref4$footer === void 0 ? null : _ref4$footer;
1596
+
1597
+ // Carful for recursivity here cause same key name
1598
+ var newHeader = shareIncentive !== null ? _objectSpread(_objectSpread({}, shareIncentive !== null ? {
1599
+ shareIncentive: shareIncentive
1600
+ } : null), header !== null ? {
1601
+ header: header
1602
+ } : null) : header;
1603
+ var newFooter = callToAction !== null ? _objectSpread(_objectSpread({}, callToAction !== null ? {
1604
+ callToAction: callToAction
1605
+ } : null), footer !== null ? {
1606
+ footer: footer
1607
+ } : null) : footer;
1608
+ var newScreen = _objectSpread(_objectSpread(_objectSpread({}, restScreen), newHeader !== null ? {
1609
+ header: newHeader
1610
+ } : null), newFooter !== null ? {
1611
+ footer: newFooter
1612
+ } : null);
1613
+ return [].concat(_toConsumableArray(currentComponents), [newScreen]);
1614
+ }, []);
1615
+ return _objectSpread(_objectSpread({}, restStory), {}, {
1616
+ components: finalComponents
1617
+ });
1618
+ }
1619
+ }]);
1620
+ return MigrationsParser;
1621
+ }();
1622
+
1623
+ var _excluded$1 = ["textStyle", "color", "boxStyle"];
1429
1624
  var ThemeParser = /*#__PURE__*/function () {
1430
1625
  function ThemeParser(_ref) {
1431
1626
  var screensManager = _ref.screensManager;
@@ -1588,7 +1783,7 @@ var ThemeParser = /*#__PURE__*/function () {
1588
1783
  fieldColorName = _ref4$color === void 0 ? null : _ref4$color,
1589
1784
  _ref4$boxStyle = _ref4.boxStyle,
1590
1785
  fieldBoxStyleName = _ref4$boxStyle === void 0 ? null : _ref4$boxStyle,
1591
- otherProps = _objectWithoutProperties(_ref4, _excluded$2);
1786
+ otherProps = _objectWithoutProperties(_ref4, _excluded$1);
1592
1787
  if (fieldTextStyleName === null && fieldColorName === null && fieldBoxStyleName === null && isEmpty(otherProps) && !isObject(fieldTheme)) {
1593
1788
  return value;
1594
1789
  }
@@ -1635,132 +1830,6 @@ var ThemeParser = /*#__PURE__*/function () {
1635
1830
  return ThemeParser;
1636
1831
  }();
1637
1832
 
1638
- var _excluded$1 = ["fonts"];
1639
- var FontsParser = /*#__PURE__*/function () {
1640
- function FontsParser(_ref) {
1641
- var fieldsManager = _ref.fieldsManager,
1642
- screensManager = _ref.screensManager;
1643
- _classCallCheck(this, FontsParser);
1644
- this.fieldsManager = fieldsManager;
1645
- this.screensManager = screensManager;
1646
- this.fieldsPatternCache = {};
1647
- }
1648
- _createClass(FontsParser, [{
1649
- key: "getFieldsPatternByScreen",
1650
- value: function getFieldsPatternByScreen(type) {
1651
- if (typeof this.fieldsPatternCache[type] === 'undefined') {
1652
- var _ref2 = this.screensManager.getDefinition(type) || {},
1653
- _ref2$fields = _ref2.fields,
1654
- fields = _ref2$fields === void 0 ? [] : _ref2$fields;
1655
- this.fieldsPatternCache[type] = this.getFieldsPattern(fields);
1656
- }
1657
- return this.fieldsPatternCache[type];
1658
- }
1659
-
1660
- // Extract fonts
1661
- }, {
1662
- key: "parse",
1663
- value: function parse(story) {
1664
- var _this = this;
1665
- if (story === null) {
1666
- return story;
1667
- }
1668
-
1669
- // Extract fonts from screen
1670
- var _ref3 = story || {},
1671
- _ref3$theme = _ref3.theme,
1672
- theme = _ref3$theme === void 0 ? null : _ref3$theme,
1673
- _ref3$components = _ref3.components,
1674
- components = _ref3$components === void 0 ? [] : _ref3$components;
1675
- var fonts = uniq(components.reduce(function (currentFonts, screen) {
1676
- var type = screen.type;
1677
- var fieldsPattern = _this.getFieldsPatternByScreen(type);
1678
- var newFonts = FontsParser.extractFontsWithPaths(screen, fieldsPattern);
1679
- return newFonts.length > 0 ? [].concat(_toConsumableArray(currentFonts), _toConsumableArray(newFonts)) : currentFonts;
1680
- }, []), 'name');
1681
-
1682
- // Extract fonts from theme
1683
- if (theme !== null) {
1684
- var _this$parse = this.parse(theme),
1685
- _this$parse$fonts = _this$parse.fonts,
1686
- themeFonts = _this$parse$fonts === void 0 ? [] : _this$parse$fonts,
1687
- newTheme = _objectWithoutProperties(_this$parse, _excluded$1);
1688
- return fonts.length > 0 || themeFonts.length > 0 ? _objectSpread(_objectSpread({}, story), {}, {
1689
- theme: newTheme,
1690
- fonts: uniq([].concat(_toConsumableArray(themeFonts), _toConsumableArray(fonts)), 'name')
1691
- }) : story;
1692
- }
1693
- return fonts.length > 0 ? _objectSpread(_objectSpread({}, story), {}, {
1694
- fonts: fonts
1695
- }) : story;
1696
- }
1697
- }, {
1698
- key: "getFieldsPattern",
1699
- value: function getFieldsPattern(fields) {
1700
- var _this2 = this;
1701
- var namePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1702
- return fields.reduce(function (patterns, field) {
1703
- var _field$name = field.name,
1704
- name = _field$name === void 0 ? null : _field$name,
1705
- _field$type = field.type,
1706
- type = _field$type === void 0 ? null : _field$type;
1707
- var path = [namePrefix, name].filter(function (it) {
1708
- return it !== null;
1709
- }).join('\\.');
1710
- var fieldDefinition = _objectSpread(_objectSpread({}, type !== null ? _this2.fieldsManager.getDefinition(type) : null), field);
1711
-
1712
- // also check settings fields
1713
- var _fieldDefinition$fiel = fieldDefinition.fields,
1714
- subFields = _fieldDefinition$fiel === void 0 ? [] : _fieldDefinition$fiel,
1715
- _fieldDefinition$item = fieldDefinition.itemsField,
1716
- itemsField = _fieldDefinition$item === void 0 ? null : _fieldDefinition$item,
1717
- _fieldDefinition$sett = fieldDefinition.settings,
1718
- settings = _fieldDefinition$sett === void 0 ? [] : _fieldDefinition$sett;
1719
- return [].concat(_toConsumableArray(patterns), _toConsumableArray(FontsParser.fieldIsFontFamily(fieldDefinition) ? [new RegExp("^".concat(path, "$"))] : []), _toConsumableArray(_this2.getFieldsPattern(subFields, path)), _toConsumableArray(_this2.getFieldsPattern(settings, path)), _toConsumableArray(itemsField !== null ? _this2.getFieldsPattern([itemsField], "".concat(path, "\\.[0-9]+")) : []));
1720
- }, []);
1721
- }
1722
- }], [{
1723
- key: "fieldIsFontFamily",
1724
- value: function fieldIsFontFamily(_ref4) {
1725
- var _ref4$id = _ref4.id,
1726
- id = _ref4$id === void 0 ? null : _ref4$id;
1727
- return id === 'font-family';
1728
- }
1729
- }, {
1730
- key: "valueIsFont",
1731
- value: function valueIsFont(_ref5) {
1732
- var _ref5$type = _ref5.type,
1733
- type = _ref5$type === void 0 ? null : _ref5$type;
1734
- return type === 'custom' || type === 'google';
1735
- }
1736
- }, {
1737
- key: "extractFontsWithPaths",
1738
- value: function extractFontsWithPaths(data, patterns) {
1739
- var keyPrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1740
- var dataIsArray = isArray(data);
1741
- var keys = dataIsArray ? _toConsumableArray(data.keys()) : Object.keys(data);
1742
- return keys.reduce(function (currentFonts, key) {
1743
- var path = [keyPrefix, key].filter(function (it) {
1744
- return it !== null;
1745
- }).join('.');
1746
- var patternMatch = patterns.reduce(function (found, pattern) {
1747
- return found || pattern.test(path);
1748
- }, false);
1749
- var value = data[key];
1750
- var font = null;
1751
- var subFonts = null;
1752
- if (patternMatch && isObject(value) && FontsParser.valueIsFont(value)) {
1753
- font = value;
1754
- } else if (isObject(value) || isArray(value)) {
1755
- subFonts = FontsParser.extractFontsWithPaths(value, patterns, path);
1756
- }
1757
- return subFonts !== null || font !== null ? [].concat(_toConsumableArray(currentFonts), _toConsumableArray(subFonts || []), _toConsumableArray(font !== null ? [font] : [])) : currentFonts;
1758
- }, []);
1759
- }
1760
- }]);
1761
- return FontsParser;
1762
- }();
1763
-
1764
1833
  var StoryParser = /*#__PURE__*/function () {
1765
1834
  function StoryParser(_ref) {
1766
1835
  var screensManager = _ref.screensManager,
@@ -1777,6 +1846,10 @@ var StoryParser = /*#__PURE__*/function () {
1777
1846
  screensManager: screensManager,
1778
1847
  fieldsManager: fieldsManager
1779
1848
  });
1849
+ this.migrationsParser = new MigrationsParser({
1850
+ screensManager: screensManager,
1851
+ fieldsManager: fieldsManager
1852
+ });
1780
1853
  }
1781
1854
  _createClass(StoryParser, [{
1782
1855
  key: "parse",
@@ -1788,7 +1861,9 @@ var StoryParser = /*#__PURE__*/function () {
1788
1861
  _ref2$withMedias = _ref2.withMedias,
1789
1862
  withMedias = _ref2$withMedias === void 0 ? true : _ref2$withMedias,
1790
1863
  _ref2$withFonts = _ref2.withFonts,
1791
- withFonts = _ref2$withFonts === void 0 ? true : _ref2$withFonts;
1864
+ withFonts = _ref2$withFonts === void 0 ? true : _ref2$withFonts,
1865
+ _ref2$withMigrations = _ref2.withMigrations,
1866
+ withMigrations = _ref2$withMigrations === void 0 ? true : _ref2$withMigrations;
1792
1867
  if (story === null) {
1793
1868
  return story;
1794
1869
  }
@@ -1798,6 +1873,8 @@ var StoryParser = /*#__PURE__*/function () {
1798
1873
  return _this.themeParser.parse(newStory);
1799
1874
  }], [withFonts, function (newStory) {
1800
1875
  return _this.fontsParser.parse(newStory);
1876
+ }], [withMigrations, function (newStory) {
1877
+ return _this.migrationsParser.parse(newStory);
1801
1878
  }]];
1802
1879
  return parsers.reduce(function (parsedStory, _ref3) {
1803
1880
  var _ref4 = _slicedToArray(_ref3, 2),
package/es/utils.js CHANGED
@@ -3,7 +3,7 @@ import { paramCase } from 'param-case';
3
3
  import _regeneratorRuntime from '@babel/runtime/helpers/regeneratorRuntime';
4
4
  import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
5
5
  import isObject from 'lodash/isObject';
6
- import { useEffect } from 'react';
6
+ import { useEffect, useMemo } from 'react';
7
7
  import isString from 'lodash/isString';
8
8
  import tinycolor from 'tinycolor2';
9
9
  import { pascalCase, paramCase as paramCase$1, snakeCase } from 'change-case';
@@ -393,6 +393,40 @@ var getFontFamily = function getFontFamily(value) {
393
393
  }).join(', ');
394
394
  };
395
395
 
396
+ var _excluded$1 = ["isPreview", "isView", "current", "openWebView", "enableInteraction", "disableInteraction"];
397
+ var getFooterProps = function getFooterProps() {
398
+ var footer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
399
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
400
+ _ref$isPreview = _ref.isPreview,
401
+ isPreview = _ref$isPreview === void 0 ? false : _ref$isPreview,
402
+ _ref$isView = _ref.isView,
403
+ isView = _ref$isView === void 0 ? false : _ref$isView,
404
+ _ref$current = _ref.current,
405
+ current = _ref$current === void 0 ? false : _ref$current,
406
+ _ref$openWebView = _ref.openWebView,
407
+ openWebView = _ref$openWebView === void 0 ? false : _ref$openWebView,
408
+ _ref$enableInteractio = _ref.enableInteraction,
409
+ enableInteraction = _ref$enableInteractio === void 0 ? true : _ref$enableInteractio,
410
+ _ref$disableInteracti = _ref.disableInteraction,
411
+ disableInteraction = _ref$disableInteracti === void 0 ? false : _ref$disableInteracti,
412
+ otherProps = _objectWithoutProperties(_ref, _excluded$1);
413
+ var _ref2 = footer || {},
414
+ _ref2$callToAction = _ref2.callToAction,
415
+ callToAction = _ref2$callToAction === void 0 ? null : _ref2$callToAction;
416
+ var footerProps = useMemo(function () {
417
+ return {
418
+ callToAction: _objectSpread(_objectSpread({}, callToAction), {}, {
419
+ animationDisabled: isPreview,
420
+ focusable: current && isView,
421
+ openWebView: openWebView,
422
+ enableInteraction: enableInteraction,
423
+ disableInteraction: disableInteraction
424
+ }, otherProps)
425
+ };
426
+ }, [callToAction, isPreview, isView, current, enableInteraction, disableInteraction, otherProps]);
427
+ return footerProps;
428
+ };
429
+
396
430
  var getGridLayoutName = function getGridLayoutName(layout) {
397
431
  return layout.map(function (it) {
398
432
  return "".concat(it.rows, "_").concat(it.columns.join('_'));
@@ -912,6 +946,38 @@ var getLayoutParts = function getLayoutParts() {
912
946
  };
913
947
  };
914
948
 
949
+ var isHeaderFilled = function isHeaderFilled() {
950
+ var header = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
951
+ var _ref = header || {},
952
+ _ref$badge = _ref.badge,
953
+ badge = _ref$badge === void 0 ? null : _ref$badge;
954
+ var _ref2 = badge || {},
955
+ _ref2$active = _ref2.active,
956
+ badgeActive = _ref2$active === void 0 ? false : _ref2$active,
957
+ _ref2$label = _ref2.label,
958
+ label = _ref2$label === void 0 ? null : _ref2$label;
959
+ var _ref3 = label || {},
960
+ _ref3$body = _ref3.body,
961
+ body = _ref3$body === void 0 ? null : _ref3$body;
962
+ return badgeActive && body !== null;
963
+ };
964
+
965
+ var isFooterFilled = function isFooterFilled() {
966
+ var footer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
967
+ var _ref = footer || {},
968
+ _ref$callToAction = _ref.callToAction,
969
+ callToAction = _ref$callToAction === void 0 ? null : _ref$callToAction;
970
+ var _ref2 = callToAction || {},
971
+ _ref2$active = _ref2.active,
972
+ callToActionActive = _ref2$active === void 0 ? false : _ref2$active,
973
+ _ref2$label = _ref2.label,
974
+ label = _ref2$label === void 0 ? null : _ref2$label;
975
+ var _ref3 = label || {},
976
+ _ref3$body = _ref3.body,
977
+ body = _ref3$body === void 0 ? null : _ref3$body;
978
+ return callToActionActive && body !== null;
979
+ };
980
+
915
981
  var isMessage = function isMessage(message) {
916
982
  return isObject(message) && typeof message.defaultMessage !== 'undefined';
917
983
  };
@@ -1043,4 +1109,4 @@ var getContrastingColor = function getContrastingColor(backgroundColor) {
1043
1109
  return tinycolor(color).spin(30).toString();
1044
1110
  };
1045
1111
 
1046
- export { convertStyleToString, copyToClipboard, createNullableOnChange, createUseEvent, easings, getColorAsString, getComponentFromName, getContrastingColor, getDeviceScreens, getDisplayName, getFieldByName, getFieldFromPath, getFileName, getFontFamily as getFontFamilyFromFont, getGridLayoutName, largestRemainderRound as getLargestRemainderRound, getLayersFromBackground, getLayoutParts, getMediaFilesAsArray, getOptimalImageUrl, getScreenExtraField, getSecondsFromTime, getShadowCoords, getStyleFromAlignment, getStyleFromBorder, getStyleFromBox, getStyleFromColor, getStyleFromContainer, getStyleFromHighlight, getStyleFromImage, getStyleFromLink, getStyleFromMargin, getStyleFromText, getVideoSupportedMimes, isImageFilled, isIos, isTextFilled$1 as isLabelFilled, isMessage, isTextFilled, isValidUrl, schemaId, setValue as setFieldValue, slug, unique, validateFields };
1112
+ export { convertStyleToString, copyToClipboard, createNullableOnChange, createUseEvent, easings, getColorAsString, getComponentFromName, getContrastingColor, getDeviceScreens, getDisplayName, getFieldByName, getFieldFromPath, getFileName, getFontFamily as getFontFamilyFromFont, getFooterProps, getGridLayoutName, largestRemainderRound as getLargestRemainderRound, getLayersFromBackground, getLayoutParts, getMediaFilesAsArray, getOptimalImageUrl, getScreenExtraField, getSecondsFromTime, getShadowCoords, getStyleFromAlignment, getStyleFromBorder, getStyleFromBox, getStyleFromColor, getStyleFromContainer, getStyleFromHighlight, getStyleFromImage, getStyleFromLink, getStyleFromMargin, getStyleFromText, getVideoSupportedMimes, isFooterFilled, isHeaderFilled, isImageFilled, isIos, isTextFilled$1 as isLabelFilled, isMessage, isTextFilled, isValidUrl, schemaId, setValue as setFieldValue, slug, unique, validateFields };
package/lib/components.js CHANGED
@@ -3142,6 +3142,10 @@ PropTypes__default["default"].shape({
3142
3142
  id: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
3143
3143
  name: PropTypes__default["default"].string
3144
3144
  });
3145
+ PropTypes__default["default"].shape({
3146
+ label: textElement,
3147
+ buttonStyle: boxStyle
3148
+ });
3145
3149
 
3146
3150
  /* eslint-disable react/no-array-index-key */
3147
3151
  var propTypes$d = {
package/lib/hooks.js CHANGED
@@ -1637,7 +1637,9 @@ var useParsedStory = function useParsedStory(story) {
1637
1637
  _ref$withMedias = _ref.withMedias,
1638
1638
  withMedias = _ref$withMedias === void 0 ? true : _ref$withMedias,
1639
1639
  _ref$withFonts = _ref.withFonts,
1640
- withFonts = _ref$withFonts === void 0 ? true : _ref$withFonts;
1640
+ withFonts = _ref$withFonts === void 0 ? true : _ref$withFonts,
1641
+ _ref$withMigrations = _ref.withMigrations,
1642
+ withMigrations = _ref$withMigrations === void 0 ? true : _ref$withMigrations;
1641
1643
  var screensManager = contexts.useScreensManager();
1642
1644
  var fieldsManager = contexts.useFieldsManager();
1643
1645
  var parser = react.useMemo(function () {
@@ -1653,7 +1655,8 @@ var useParsedStory = function useParsedStory(story) {
1653
1655
  return parser.parse(story, {
1654
1656
  withMedias: withMedias,
1655
1657
  withTheme: withTheme,
1656
- withFonts: withFonts
1658
+ withFonts: withFonts,
1659
+ withMigrations: withMigrations
1657
1660
  });
1658
1661
  }, [parser, disabled, withMedias, withTheme, withFonts, story]);
1659
1662
  return newStory;
package/lib/index.js CHANGED
@@ -29,8 +29,8 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
29
29
  require('slugify');
30
30
  var uniqBy = require('lodash/uniqBy');
31
31
  var _typeof = require('@babel/runtime/helpers/typeof');
32
- var isEmpty = require('lodash/isEmpty');
33
32
  var uniq = require('lodash/uniq');
33
+ var isEmpty = require('lodash/isEmpty');
34
34
  var tracking = require('@folklore/tracking');
35
35
 
36
36
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -53,8 +53,8 @@ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_obje
53
53
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
54
54
  var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
55
55
  var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
56
- var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
57
56
  var uniq__default = /*#__PURE__*/_interopDefaultLegacy(uniq);
57
+ var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
58
58
 
59
59
  /**
60
60
  * Core
@@ -632,6 +632,10 @@ var visitor = PropTypes__default["default"].shape({
632
632
  id: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
633
633
  name: PropTypes__default["default"].string
634
634
  });
635
+ var badge = PropTypes__default["default"].shape({
636
+ label: textElement,
637
+ buttonStyle: boxStyle
638
+ });
635
639
 
636
640
  var PropTypes = /*#__PURE__*/Object.freeze({
637
641
  __proto__: null,
@@ -776,7 +780,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
776
780
  paymentItems: paymentItems,
777
781
  pageMetadata: pageMetadata,
778
782
  authorElement: authorElement,
779
- visitor: visitor
783
+ visitor: visitor,
784
+ badge: badge
780
785
  });
781
786
 
782
787
  var sortedColors = function sortedColors(colors) {
@@ -1164,7 +1169,7 @@ var FieldsManager = /*#__PURE__*/function (_DefinitionsManager) {
1164
1169
  return FieldsManager;
1165
1170
  }(DefinitionsManager);
1166
1171
 
1167
- var _excluded$3 = ["medias"];
1172
+ var _excluded$4 = ["medias"];
1168
1173
  var MediasParser = /*#__PURE__*/function () {
1169
1174
  function MediasParser(_ref) {
1170
1175
  var fieldsManager = _ref.fieldsManager,
@@ -1220,7 +1225,7 @@ var MediasParser = /*#__PURE__*/function () {
1220
1225
  if (theme !== null) {
1221
1226
  var _this$toPath = this.toPath(theme),
1222
1227
  themeMedias = _this$toPath.medias,
1223
- newTheme = _objectWithoutProperties__default["default"](_this$toPath, _excluded$3);
1228
+ newTheme = _objectWithoutProperties__default["default"](_this$toPath, _excluded$4);
1224
1229
  return medias !== null || themeMedias !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, story), {}, {
1225
1230
  theme: newTheme,
1226
1231
  components: newComponents,
@@ -1452,7 +1457,197 @@ var ScreensManager = /*#__PURE__*/function (_DefinitionsManager) {
1452
1457
  return ScreensManager;
1453
1458
  }(DefinitionsManager);
1454
1459
 
1455
- var _excluded$2 = ["textStyle", "color", "boxStyle"];
1460
+ var _excluded$3 = ["fonts"];
1461
+ var FontsParser = /*#__PURE__*/function () {
1462
+ function FontsParser(_ref) {
1463
+ var fieldsManager = _ref.fieldsManager,
1464
+ screensManager = _ref.screensManager;
1465
+ _classCallCheck__default["default"](this, FontsParser);
1466
+ this.fieldsManager = fieldsManager;
1467
+ this.screensManager = screensManager;
1468
+ this.fieldsPatternCache = {};
1469
+ }
1470
+ _createClass__default["default"](FontsParser, [{
1471
+ key: "getFieldsPatternByScreen",
1472
+ value: function getFieldsPatternByScreen(type) {
1473
+ if (typeof this.fieldsPatternCache[type] === 'undefined') {
1474
+ var _ref2 = this.screensManager.getDefinition(type) || {},
1475
+ _ref2$fields = _ref2.fields,
1476
+ fields = _ref2$fields === void 0 ? [] : _ref2$fields;
1477
+ this.fieldsPatternCache[type] = this.getFieldsPattern(fields);
1478
+ }
1479
+ return this.fieldsPatternCache[type];
1480
+ }
1481
+
1482
+ // Extract fonts
1483
+ }, {
1484
+ key: "parse",
1485
+ value: function parse(story) {
1486
+ var _this = this;
1487
+ if (story === null) {
1488
+ return story;
1489
+ }
1490
+
1491
+ // Extract fonts from screen
1492
+ var _ref3 = story || {},
1493
+ _ref3$theme = _ref3.theme,
1494
+ theme = _ref3$theme === void 0 ? null : _ref3$theme,
1495
+ _ref3$components = _ref3.components,
1496
+ components = _ref3$components === void 0 ? [] : _ref3$components;
1497
+ var fonts = uniq__default["default"](components.reduce(function (currentFonts, screen) {
1498
+ var type = screen.type;
1499
+ var fieldsPattern = _this.getFieldsPatternByScreen(type);
1500
+ var newFonts = FontsParser.extractFontsWithPaths(screen, fieldsPattern);
1501
+ return newFonts.length > 0 ? [].concat(_toConsumableArray__default["default"](currentFonts), _toConsumableArray__default["default"](newFonts)) : currentFonts;
1502
+ }, []), 'name');
1503
+
1504
+ // Extract fonts from theme
1505
+ if (theme !== null) {
1506
+ var _this$parse = this.parse(theme),
1507
+ _this$parse$fonts = _this$parse.fonts,
1508
+ themeFonts = _this$parse$fonts === void 0 ? [] : _this$parse$fonts,
1509
+ newTheme = _objectWithoutProperties__default["default"](_this$parse, _excluded$3);
1510
+ return fonts.length > 0 || themeFonts.length > 0 ? _objectSpread__default["default"](_objectSpread__default["default"]({}, story), {}, {
1511
+ theme: newTheme,
1512
+ fonts: uniq__default["default"]([].concat(_toConsumableArray__default["default"](themeFonts), _toConsumableArray__default["default"](fonts)), 'name')
1513
+ }) : story;
1514
+ }
1515
+ return fonts.length > 0 ? _objectSpread__default["default"](_objectSpread__default["default"]({}, story), {}, {
1516
+ fonts: fonts
1517
+ }) : story;
1518
+ }
1519
+ }, {
1520
+ key: "getFieldsPattern",
1521
+ value: function getFieldsPattern(fields) {
1522
+ var _this2 = this;
1523
+ var namePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1524
+ return fields.reduce(function (patterns, field) {
1525
+ var _field$name = field.name,
1526
+ name = _field$name === void 0 ? null : _field$name,
1527
+ _field$type = field.type,
1528
+ type = _field$type === void 0 ? null : _field$type;
1529
+ var path = [namePrefix, name].filter(function (it) {
1530
+ return it !== null;
1531
+ }).join('\\.');
1532
+ var fieldDefinition = _objectSpread__default["default"](_objectSpread__default["default"]({}, type !== null ? _this2.fieldsManager.getDefinition(type) : null), field);
1533
+
1534
+ // also check settings fields
1535
+ var _fieldDefinition$fiel = fieldDefinition.fields,
1536
+ subFields = _fieldDefinition$fiel === void 0 ? [] : _fieldDefinition$fiel,
1537
+ _fieldDefinition$item = fieldDefinition.itemsField,
1538
+ itemsField = _fieldDefinition$item === void 0 ? null : _fieldDefinition$item,
1539
+ _fieldDefinition$sett = fieldDefinition.settings,
1540
+ settings = _fieldDefinition$sett === void 0 ? [] : _fieldDefinition$sett;
1541
+ return [].concat(_toConsumableArray__default["default"](patterns), _toConsumableArray__default["default"](FontsParser.fieldIsFontFamily(fieldDefinition) ? [new RegExp("^".concat(path, "$"))] : []), _toConsumableArray__default["default"](_this2.getFieldsPattern(subFields, path)), _toConsumableArray__default["default"](_this2.getFieldsPattern(settings, path)), _toConsumableArray__default["default"](itemsField !== null ? _this2.getFieldsPattern([itemsField], "".concat(path, "\\.[0-9]+")) : []));
1542
+ }, []);
1543
+ }
1544
+ }], [{
1545
+ key: "fieldIsFontFamily",
1546
+ value: function fieldIsFontFamily(_ref4) {
1547
+ var _ref4$id = _ref4.id,
1548
+ id = _ref4$id === void 0 ? null : _ref4$id;
1549
+ return id === 'font-family';
1550
+ }
1551
+ }, {
1552
+ key: "valueIsFont",
1553
+ value: function valueIsFont(_ref5) {
1554
+ var _ref5$type = _ref5.type,
1555
+ type = _ref5$type === void 0 ? null : _ref5$type;
1556
+ return type === 'custom' || type === 'google';
1557
+ }
1558
+ }, {
1559
+ key: "extractFontsWithPaths",
1560
+ value: function extractFontsWithPaths(data, patterns) {
1561
+ var keyPrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1562
+ var dataIsArray = isArray__default["default"](data);
1563
+ var keys = dataIsArray ? _toConsumableArray__default["default"](data.keys()) : Object.keys(data);
1564
+ return keys.reduce(function (currentFonts, key) {
1565
+ var path = [keyPrefix, key].filter(function (it) {
1566
+ return it !== null;
1567
+ }).join('.');
1568
+ var patternMatch = patterns.reduce(function (found, pattern) {
1569
+ return found || pattern.test(path);
1570
+ }, false);
1571
+ var value = data[key];
1572
+ var font = null;
1573
+ var subFonts = null;
1574
+ if (patternMatch && isObject__default["default"](value) && FontsParser.valueIsFont(value)) {
1575
+ font = value;
1576
+ } else if (isObject__default["default"](value) || isArray__default["default"](value)) {
1577
+ subFonts = FontsParser.extractFontsWithPaths(value, patterns, path);
1578
+ }
1579
+ return subFonts !== null || font !== null ? [].concat(_toConsumableArray__default["default"](currentFonts), _toConsumableArray__default["default"](subFonts || []), _toConsumableArray__default["default"](font !== null ? [font] : [])) : currentFonts;
1580
+ }, []);
1581
+ }
1582
+ }]);
1583
+ return FontsParser;
1584
+ }();
1585
+
1586
+ var _excluded$2 = ["components"],
1587
+ _excluded2$1 = ["shareIncentive", "callToAction"];
1588
+ var MigrationsParser = /*#__PURE__*/function () {
1589
+ function MigrationsParser(_ref) {
1590
+ var fieldsManager = _ref.fieldsManager,
1591
+ screensManager = _ref.screensManager;
1592
+ _classCallCheck__default["default"](this, MigrationsParser);
1593
+ this.fieldsManager = fieldsManager;
1594
+ this.screensManager = screensManager;
1595
+ }
1596
+
1597
+ // eslint-disable-next-line class-methods-use-this
1598
+ _createClass__default["default"](MigrationsParser, [{
1599
+ key: "parse",
1600
+ value: function parse(story) {
1601
+ if (story === null) {
1602
+ return story;
1603
+ }
1604
+ var _ref2 = story || {},
1605
+ _ref2$components = _ref2.components,
1606
+ components = _ref2$components === void 0 ? [] : _ref2$components,
1607
+ restStory = _objectWithoutProperties__default["default"](_ref2, _excluded$2);
1608
+ var finalComponents = components.reduce(function (currentComponents, screen) {
1609
+ var _ref3 = screen || {},
1610
+ _ref3$shareIncentive = _ref3.shareIncentive,
1611
+ shareIncentive = _ref3$shareIncentive === void 0 ? null : _ref3$shareIncentive,
1612
+ _ref3$callToAction = _ref3.callToAction,
1613
+ callToAction = _ref3$callToAction === void 0 ? null : _ref3$callToAction,
1614
+ restScreen = _objectWithoutProperties__default["default"](_ref3, _excluded2$1);
1615
+ if (shareIncentive === null && callToAction === null) {
1616
+ return [].concat(_toConsumableArray__default["default"](currentComponents), [restScreen]);
1617
+ }
1618
+ var _ref4 = screen || {},
1619
+ _ref4$header = _ref4.header,
1620
+ header = _ref4$header === void 0 ? null : _ref4$header,
1621
+ _ref4$footer = _ref4.footer,
1622
+ footer = _ref4$footer === void 0 ? null : _ref4$footer;
1623
+
1624
+ // Carful for recursivity here cause same key name
1625
+ var newHeader = shareIncentive !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, shareIncentive !== null ? {
1626
+ shareIncentive: shareIncentive
1627
+ } : null), header !== null ? {
1628
+ header: header
1629
+ } : null) : header;
1630
+ var newFooter = callToAction !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, callToAction !== null ? {
1631
+ callToAction: callToAction
1632
+ } : null), footer !== null ? {
1633
+ footer: footer
1634
+ } : null) : footer;
1635
+ var newScreen = _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, restScreen), newHeader !== null ? {
1636
+ header: newHeader
1637
+ } : null), newFooter !== null ? {
1638
+ footer: newFooter
1639
+ } : null);
1640
+ return [].concat(_toConsumableArray__default["default"](currentComponents), [newScreen]);
1641
+ }, []);
1642
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, restStory), {}, {
1643
+ components: finalComponents
1644
+ });
1645
+ }
1646
+ }]);
1647
+ return MigrationsParser;
1648
+ }();
1649
+
1650
+ var _excluded$1 = ["textStyle", "color", "boxStyle"];
1456
1651
  var ThemeParser = /*#__PURE__*/function () {
1457
1652
  function ThemeParser(_ref) {
1458
1653
  var screensManager = _ref.screensManager;
@@ -1615,7 +1810,7 @@ var ThemeParser = /*#__PURE__*/function () {
1615
1810
  fieldColorName = _ref4$color === void 0 ? null : _ref4$color,
1616
1811
  _ref4$boxStyle = _ref4.boxStyle,
1617
1812
  fieldBoxStyleName = _ref4$boxStyle === void 0 ? null : _ref4$boxStyle,
1618
- otherProps = _objectWithoutProperties__default["default"](_ref4, _excluded$2);
1813
+ otherProps = _objectWithoutProperties__default["default"](_ref4, _excluded$1);
1619
1814
  if (fieldTextStyleName === null && fieldColorName === null && fieldBoxStyleName === null && isEmpty__default["default"](otherProps) && !isObject__default["default"](fieldTheme)) {
1620
1815
  return value;
1621
1816
  }
@@ -1662,132 +1857,6 @@ var ThemeParser = /*#__PURE__*/function () {
1662
1857
  return ThemeParser;
1663
1858
  }();
1664
1859
 
1665
- var _excluded$1 = ["fonts"];
1666
- var FontsParser = /*#__PURE__*/function () {
1667
- function FontsParser(_ref) {
1668
- var fieldsManager = _ref.fieldsManager,
1669
- screensManager = _ref.screensManager;
1670
- _classCallCheck__default["default"](this, FontsParser);
1671
- this.fieldsManager = fieldsManager;
1672
- this.screensManager = screensManager;
1673
- this.fieldsPatternCache = {};
1674
- }
1675
- _createClass__default["default"](FontsParser, [{
1676
- key: "getFieldsPatternByScreen",
1677
- value: function getFieldsPatternByScreen(type) {
1678
- if (typeof this.fieldsPatternCache[type] === 'undefined') {
1679
- var _ref2 = this.screensManager.getDefinition(type) || {},
1680
- _ref2$fields = _ref2.fields,
1681
- fields = _ref2$fields === void 0 ? [] : _ref2$fields;
1682
- this.fieldsPatternCache[type] = this.getFieldsPattern(fields);
1683
- }
1684
- return this.fieldsPatternCache[type];
1685
- }
1686
-
1687
- // Extract fonts
1688
- }, {
1689
- key: "parse",
1690
- value: function parse(story) {
1691
- var _this = this;
1692
- if (story === null) {
1693
- return story;
1694
- }
1695
-
1696
- // Extract fonts from screen
1697
- var _ref3 = story || {},
1698
- _ref3$theme = _ref3.theme,
1699
- theme = _ref3$theme === void 0 ? null : _ref3$theme,
1700
- _ref3$components = _ref3.components,
1701
- components = _ref3$components === void 0 ? [] : _ref3$components;
1702
- var fonts = uniq__default["default"](components.reduce(function (currentFonts, screen) {
1703
- var type = screen.type;
1704
- var fieldsPattern = _this.getFieldsPatternByScreen(type);
1705
- var newFonts = FontsParser.extractFontsWithPaths(screen, fieldsPattern);
1706
- return newFonts.length > 0 ? [].concat(_toConsumableArray__default["default"](currentFonts), _toConsumableArray__default["default"](newFonts)) : currentFonts;
1707
- }, []), 'name');
1708
-
1709
- // Extract fonts from theme
1710
- if (theme !== null) {
1711
- var _this$parse = this.parse(theme),
1712
- _this$parse$fonts = _this$parse.fonts,
1713
- themeFonts = _this$parse$fonts === void 0 ? [] : _this$parse$fonts,
1714
- newTheme = _objectWithoutProperties__default["default"](_this$parse, _excluded$1);
1715
- return fonts.length > 0 || themeFonts.length > 0 ? _objectSpread__default["default"](_objectSpread__default["default"]({}, story), {}, {
1716
- theme: newTheme,
1717
- fonts: uniq__default["default"]([].concat(_toConsumableArray__default["default"](themeFonts), _toConsumableArray__default["default"](fonts)), 'name')
1718
- }) : story;
1719
- }
1720
- return fonts.length > 0 ? _objectSpread__default["default"](_objectSpread__default["default"]({}, story), {}, {
1721
- fonts: fonts
1722
- }) : story;
1723
- }
1724
- }, {
1725
- key: "getFieldsPattern",
1726
- value: function getFieldsPattern(fields) {
1727
- var _this2 = this;
1728
- var namePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1729
- return fields.reduce(function (patterns, field) {
1730
- var _field$name = field.name,
1731
- name = _field$name === void 0 ? null : _field$name,
1732
- _field$type = field.type,
1733
- type = _field$type === void 0 ? null : _field$type;
1734
- var path = [namePrefix, name].filter(function (it) {
1735
- return it !== null;
1736
- }).join('\\.');
1737
- var fieldDefinition = _objectSpread__default["default"](_objectSpread__default["default"]({}, type !== null ? _this2.fieldsManager.getDefinition(type) : null), field);
1738
-
1739
- // also check settings fields
1740
- var _fieldDefinition$fiel = fieldDefinition.fields,
1741
- subFields = _fieldDefinition$fiel === void 0 ? [] : _fieldDefinition$fiel,
1742
- _fieldDefinition$item = fieldDefinition.itemsField,
1743
- itemsField = _fieldDefinition$item === void 0 ? null : _fieldDefinition$item,
1744
- _fieldDefinition$sett = fieldDefinition.settings,
1745
- settings = _fieldDefinition$sett === void 0 ? [] : _fieldDefinition$sett;
1746
- return [].concat(_toConsumableArray__default["default"](patterns), _toConsumableArray__default["default"](FontsParser.fieldIsFontFamily(fieldDefinition) ? [new RegExp("^".concat(path, "$"))] : []), _toConsumableArray__default["default"](_this2.getFieldsPattern(subFields, path)), _toConsumableArray__default["default"](_this2.getFieldsPattern(settings, path)), _toConsumableArray__default["default"](itemsField !== null ? _this2.getFieldsPattern([itemsField], "".concat(path, "\\.[0-9]+")) : []));
1747
- }, []);
1748
- }
1749
- }], [{
1750
- key: "fieldIsFontFamily",
1751
- value: function fieldIsFontFamily(_ref4) {
1752
- var _ref4$id = _ref4.id,
1753
- id = _ref4$id === void 0 ? null : _ref4$id;
1754
- return id === 'font-family';
1755
- }
1756
- }, {
1757
- key: "valueIsFont",
1758
- value: function valueIsFont(_ref5) {
1759
- var _ref5$type = _ref5.type,
1760
- type = _ref5$type === void 0 ? null : _ref5$type;
1761
- return type === 'custom' || type === 'google';
1762
- }
1763
- }, {
1764
- key: "extractFontsWithPaths",
1765
- value: function extractFontsWithPaths(data, patterns) {
1766
- var keyPrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1767
- var dataIsArray = isArray__default["default"](data);
1768
- var keys = dataIsArray ? _toConsumableArray__default["default"](data.keys()) : Object.keys(data);
1769
- return keys.reduce(function (currentFonts, key) {
1770
- var path = [keyPrefix, key].filter(function (it) {
1771
- return it !== null;
1772
- }).join('.');
1773
- var patternMatch = patterns.reduce(function (found, pattern) {
1774
- return found || pattern.test(path);
1775
- }, false);
1776
- var value = data[key];
1777
- var font = null;
1778
- var subFonts = null;
1779
- if (patternMatch && isObject__default["default"](value) && FontsParser.valueIsFont(value)) {
1780
- font = value;
1781
- } else if (isObject__default["default"](value) || isArray__default["default"](value)) {
1782
- subFonts = FontsParser.extractFontsWithPaths(value, patterns, path);
1783
- }
1784
- return subFonts !== null || font !== null ? [].concat(_toConsumableArray__default["default"](currentFonts), _toConsumableArray__default["default"](subFonts || []), _toConsumableArray__default["default"](font !== null ? [font] : [])) : currentFonts;
1785
- }, []);
1786
- }
1787
- }]);
1788
- return FontsParser;
1789
- }();
1790
-
1791
1860
  var StoryParser = /*#__PURE__*/function () {
1792
1861
  function StoryParser(_ref) {
1793
1862
  var screensManager = _ref.screensManager,
@@ -1804,6 +1873,10 @@ var StoryParser = /*#__PURE__*/function () {
1804
1873
  screensManager: screensManager,
1805
1874
  fieldsManager: fieldsManager
1806
1875
  });
1876
+ this.migrationsParser = new MigrationsParser({
1877
+ screensManager: screensManager,
1878
+ fieldsManager: fieldsManager
1879
+ });
1807
1880
  }
1808
1881
  _createClass__default["default"](StoryParser, [{
1809
1882
  key: "parse",
@@ -1815,7 +1888,9 @@ var StoryParser = /*#__PURE__*/function () {
1815
1888
  _ref2$withMedias = _ref2.withMedias,
1816
1889
  withMedias = _ref2$withMedias === void 0 ? true : _ref2$withMedias,
1817
1890
  _ref2$withFonts = _ref2.withFonts,
1818
- withFonts = _ref2$withFonts === void 0 ? true : _ref2$withFonts;
1891
+ withFonts = _ref2$withFonts === void 0 ? true : _ref2$withFonts,
1892
+ _ref2$withMigrations = _ref2.withMigrations,
1893
+ withMigrations = _ref2$withMigrations === void 0 ? true : _ref2$withMigrations;
1819
1894
  if (story === null) {
1820
1895
  return story;
1821
1896
  }
@@ -1825,6 +1900,8 @@ var StoryParser = /*#__PURE__*/function () {
1825
1900
  return _this.themeParser.parse(newStory);
1826
1901
  }], [withFonts, function (newStory) {
1827
1902
  return _this.fontsParser.parse(newStory);
1903
+ }], [withMigrations, function (newStory) {
1904
+ return _this.migrationsParser.parse(newStory);
1828
1905
  }]];
1829
1906
  return parsers.reduce(function (parsedStory, _ref3) {
1830
1907
  var _ref4 = _slicedToArray__default["default"](_ref3, 2),
package/lib/utils.js CHANGED
@@ -412,6 +412,40 @@ var getFontFamily = function getFontFamily(value) {
412
412
  }).join(', ');
413
413
  };
414
414
 
415
+ var _excluded$1 = ["isPreview", "isView", "current", "openWebView", "enableInteraction", "disableInteraction"];
416
+ var getFooterProps = function getFooterProps() {
417
+ var footer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
418
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
419
+ _ref$isPreview = _ref.isPreview,
420
+ isPreview = _ref$isPreview === void 0 ? false : _ref$isPreview,
421
+ _ref$isView = _ref.isView,
422
+ isView = _ref$isView === void 0 ? false : _ref$isView,
423
+ _ref$current = _ref.current,
424
+ current = _ref$current === void 0 ? false : _ref$current,
425
+ _ref$openWebView = _ref.openWebView,
426
+ openWebView = _ref$openWebView === void 0 ? false : _ref$openWebView,
427
+ _ref$enableInteractio = _ref.enableInteraction,
428
+ enableInteraction = _ref$enableInteractio === void 0 ? true : _ref$enableInteractio,
429
+ _ref$disableInteracti = _ref.disableInteraction,
430
+ disableInteraction = _ref$disableInteracti === void 0 ? false : _ref$disableInteracti,
431
+ otherProps = _objectWithoutProperties__default["default"](_ref, _excluded$1);
432
+ var _ref2 = footer || {},
433
+ _ref2$callToAction = _ref2.callToAction,
434
+ callToAction = _ref2$callToAction === void 0 ? null : _ref2$callToAction;
435
+ var footerProps = react.useMemo(function () {
436
+ return {
437
+ callToAction: _objectSpread__default["default"](_objectSpread__default["default"]({}, callToAction), {}, {
438
+ animationDisabled: isPreview,
439
+ focusable: current && isView,
440
+ openWebView: openWebView,
441
+ enableInteraction: enableInteraction,
442
+ disableInteraction: disableInteraction
443
+ }, otherProps)
444
+ };
445
+ }, [callToAction, isPreview, isView, current, enableInteraction, disableInteraction, otherProps]);
446
+ return footerProps;
447
+ };
448
+
415
449
  var getGridLayoutName = function getGridLayoutName(layout) {
416
450
  return layout.map(function (it) {
417
451
  return "".concat(it.rows, "_").concat(it.columns.join('_'));
@@ -931,6 +965,38 @@ var getLayoutParts = function getLayoutParts() {
931
965
  };
932
966
  };
933
967
 
968
+ var isHeaderFilled = function isHeaderFilled() {
969
+ var header = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
970
+ var _ref = header || {},
971
+ _ref$badge = _ref.badge,
972
+ badge = _ref$badge === void 0 ? null : _ref$badge;
973
+ var _ref2 = badge || {},
974
+ _ref2$active = _ref2.active,
975
+ badgeActive = _ref2$active === void 0 ? false : _ref2$active,
976
+ _ref2$label = _ref2.label,
977
+ label = _ref2$label === void 0 ? null : _ref2$label;
978
+ var _ref3 = label || {},
979
+ _ref3$body = _ref3.body,
980
+ body = _ref3$body === void 0 ? null : _ref3$body;
981
+ return badgeActive && body !== null;
982
+ };
983
+
984
+ var isFooterFilled = function isFooterFilled() {
985
+ var footer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
986
+ var _ref = footer || {},
987
+ _ref$callToAction = _ref.callToAction,
988
+ callToAction = _ref$callToAction === void 0 ? null : _ref$callToAction;
989
+ var _ref2 = callToAction || {},
990
+ _ref2$active = _ref2.active,
991
+ callToActionActive = _ref2$active === void 0 ? false : _ref2$active,
992
+ _ref2$label = _ref2.label,
993
+ label = _ref2$label === void 0 ? null : _ref2$label;
994
+ var _ref3 = label || {},
995
+ _ref3$body = _ref3.body,
996
+ body = _ref3$body === void 0 ? null : _ref3$body;
997
+ return callToActionActive && body !== null;
998
+ };
999
+
934
1000
  var isMessage = function isMessage(message) {
935
1001
  return isObject__default["default"](message) && typeof message.defaultMessage !== 'undefined';
936
1002
  };
@@ -1084,6 +1150,7 @@ exports.getFieldByName = getFieldByName;
1084
1150
  exports.getFieldFromPath = getFieldFromPath;
1085
1151
  exports.getFileName = getFileName;
1086
1152
  exports.getFontFamilyFromFont = getFontFamily;
1153
+ exports.getFooterProps = getFooterProps;
1087
1154
  exports.getGridLayoutName = getGridLayoutName;
1088
1155
  exports.getLargestRemainderRound = largestRemainderRound;
1089
1156
  exports.getLayersFromBackground = getLayersFromBackground;
@@ -1104,6 +1171,8 @@ exports.getStyleFromLink = getStyleFromLink;
1104
1171
  exports.getStyleFromMargin = getStyleFromMargin;
1105
1172
  exports.getStyleFromText = getStyleFromText;
1106
1173
  exports.getVideoSupportedMimes = getVideoSupportedMimes;
1174
+ exports.isFooterFilled = isFooterFilled;
1175
+ exports.isHeaderFilled = isHeaderFilled;
1107
1176
  exports.isImageFilled = isImageFilled;
1108
1177
  exports.isIos = isIos;
1109
1178
  exports.isLabelFilled = isTextFilled$1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.348",
3
+ "version": "0.3.354",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -133,5 +133,5 @@
133
133
  "publishConfig": {
134
134
  "access": "public"
135
135
  },
136
- "gitHead": "20ef008fdf5c678004b740f395f51cb548591dad"
136
+ "gitHead": "ccf852d0a7df8f222365088e7de3843492e720e7"
137
137
  }