@micromag/core 0.3.58 → 0.3.62

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
@@ -2574,6 +2574,10 @@ PropTypes$1.shape({
2574
2574
  withSeekBar: PropTypes$1.bool,
2575
2575
  withPlayPause: PropTypes$1.bool
2576
2576
  });
2577
+ var visualElement = PropTypes$1.shape({
2578
+ media: imageMedia
2579
+ });
2580
+ PropTypes$1.arrayOf(visualElement);
2577
2581
  PropTypes$1.shape({
2578
2582
  media: audioMedia,
2579
2583
  autoPlay: PropTypes$1.bool,
@@ -2854,6 +2858,12 @@ var pageMetadata = PropTypes$1.shape({
2854
2858
  atomUrl: PropTypes$1.string,
2855
2859
  microformats: PropTypes$1.arrayOf(PropTypes$1.shape({}))
2856
2860
  });
2861
+ PropTypes$1.shape({
2862
+ name: PropTypes$1.string,
2863
+ avatar: PropTypes$1.shape({
2864
+ url: PropTypes$1.string
2865
+ })
2866
+ });
2857
2867
 
2858
2868
  /* eslint-disable react/no-array-index-key */
2859
2869
  var propTypes$d = {
package/es/index.js CHANGED
@@ -23,6 +23,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
23
23
  import 'slugify';
24
24
  import uniqBy from 'lodash/uniqBy';
25
25
  import _typeof from '@babel/runtime/helpers/typeof';
26
+ import isEmpty from 'lodash/isEmpty';
26
27
  import uniq from 'lodash/uniq';
27
28
  import { Tracking as Tracking$1 } from '@folklore/tracking';
28
29
 
@@ -282,6 +283,10 @@ var videoElement = PropTypes$1.shape({
282
283
  withSeekBar: PropTypes$1.bool,
283
284
  withPlayPause: PropTypes$1.bool
284
285
  });
286
+ var visualElement = PropTypes$1.shape({
287
+ media: imageMedia
288
+ });
289
+ var visualElements = PropTypes$1.arrayOf(visualElement);
285
290
  var audioElement = PropTypes$1.shape({
286
291
  media: audioMedia,
287
292
  autoPlay: PropTypes$1.bool,
@@ -563,6 +568,12 @@ var pageMetadata = PropTypes$1.shape({
563
568
  atomUrl: PropTypes$1.string,
564
569
  microformats: PropTypes$1.arrayOf(PropTypes$1.shape({}))
565
570
  });
571
+ var authorElement = PropTypes$1.shape({
572
+ name: PropTypes$1.string,
573
+ avatar: PropTypes$1.shape({
574
+ url: PropTypes$1.string
575
+ })
576
+ });
566
577
 
567
578
  var PropTypes = /*#__PURE__*/Object.freeze({
568
579
  __proto__: null,
@@ -639,6 +650,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
639
650
  imageElement: imageElement,
640
651
  imageElements: imageElements,
641
652
  videoElement: videoElement,
653
+ visualElement: visualElement,
654
+ visualElements: visualElements,
642
655
  audioElement: audioElement,
643
656
  closedCaptionsElement: closedCaptionsElement,
644
657
  backgroundElement: backgroundElement,
@@ -698,7 +711,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
698
711
  searchFilters: searchFilters,
699
712
  paymentItem: paymentItem,
700
713
  paymentItems: paymentItems,
701
- pageMetadata: pageMetadata
714
+ pageMetadata: pageMetadata,
715
+ authorElement: authorElement
702
716
  });
703
717
 
704
718
  var sortedColors = function sortedColors(colors) {
@@ -997,8 +1011,9 @@ var DefinitionsManager = /*#__PURE__*/function (_EventEmitter) {
997
1011
  }, {
998
1012
  key: "filter",
999
1013
  value: function filter(_filter) {
1000
- this.definitions = this.definitions.filter(_filter);
1001
- return this; // return new DefinitionsManager(this.definitions.filter(filter));
1014
+ // this.definitions = this.definitions.filter(filter);
1015
+ // return this;
1016
+ return new DefinitionsManager(this.definitions.filter(_filter));
1002
1017
  }
1003
1018
  }, {
1004
1019
  key: "getDefinition",
@@ -1135,16 +1150,15 @@ var FieldsManager = /*#__PURE__*/function (_DefinitionsManager) {
1135
1150
  _createClass(FieldsManager, [{
1136
1151
  key: "filter",
1137
1152
  value: function filter(_filter) {
1138
- // return new FieldsManager(this.definitions.filter(filter));
1139
- this.definitions = this.definitions.filter(_filter);
1140
- return this;
1153
+ return new FieldsManager(this.definitions.filter(_filter)); // this.definitions = this.definitions.filter(filter);
1154
+ // return this;
1141
1155
  }
1142
1156
  }]);
1143
1157
 
1144
1158
  return FieldsManager;
1145
1159
  }(DefinitionsManager);
1146
1160
 
1147
- var _excluded$2 = ["medias"];
1161
+ var _excluded$3 = ["medias"];
1148
1162
 
1149
1163
  var MediasParser = /*#__PURE__*/function () {
1150
1164
  function MediasParser(_ref) {
@@ -1212,7 +1226,7 @@ var MediasParser = /*#__PURE__*/function () {
1212
1226
  if (theme !== null) {
1213
1227
  var _this$toPath = this.toPath(theme),
1214
1228
  themeMedias = _this$toPath.medias,
1215
- newTheme = _objectWithoutProperties(_this$toPath, _excluded$2);
1229
+ newTheme = _objectWithoutProperties(_this$toPath, _excluded$3);
1216
1230
 
1217
1231
  return medias !== null || themeMedias !== null ? _objectSpread(_objectSpread({}, story), {}, {
1218
1232
  theme: newTheme,
@@ -1453,15 +1467,16 @@ var ScreensManager = /*#__PURE__*/function (_DefinitionsManager) {
1453
1467
  }, {
1454
1468
  key: "filter",
1455
1469
  value: function filter(_filter) {
1456
- // return new ScreensManager(this.definitions.filter(filter));
1457
- this.definitions = this.definitions.filter(_filter);
1458
- return this;
1470
+ return new ScreensManager(this.definitions.filter(_filter)); // this.definitions = this.definitions.filter(filter);
1471
+ // return this;
1459
1472
  }
1460
1473
  }]);
1461
1474
 
1462
1475
  return ScreensManager;
1463
1476
  }(DefinitionsManager);
1464
1477
 
1478
+ var _excluded$2 = ["textStyle", "color", "boxStyle"];
1479
+
1465
1480
  var ThemeParser = /*#__PURE__*/function () {
1466
1481
  function ThemeParser(_ref) {
1467
1482
  var screensManager = _ref.screensManager;
@@ -1514,7 +1529,9 @@ var ThemeParser = /*#__PURE__*/function () {
1514
1529
  _theme$colors = theme.colors,
1515
1530
  themeColors = _theme$colors === void 0 ? {} : _theme$colors,
1516
1531
  _theme$textStyles = theme.textStyles,
1517
- themeTextStyles = _theme$textStyles === void 0 ? null : _theme$textStyles;
1532
+ themeTextStyles = _theme$textStyles === void 0 ? null : _theme$textStyles,
1533
+ _theme$boxStyles = theme.boxStyles,
1534
+ themeBoxStyles = _theme$boxStyles === void 0 ? null : _theme$boxStyles;
1518
1535
  var newComponents = components.reduce(function (currentComponents, screen, index) {
1519
1536
  var type = screen.type;
1520
1537
 
@@ -1522,7 +1539,7 @@ var ThemeParser = /*#__PURE__*/function () {
1522
1539
  definition = _this$getDefinitionBy.definition,
1523
1540
  themeScreen = _this$getDefinitionBy.themeScreen;
1524
1541
 
1525
- var newScreen = _this.parseScreen(definition, screen, themeScreen, themeBackground, themeColors, themeTextStyles); // Only switch screen if it has changed
1542
+ var newScreen = _this.parseScreen(definition, screen, themeScreen, themeBackground, themeColors, themeTextStyles, themeBoxStyles); // Only switch screen if it has changed
1526
1543
 
1527
1544
 
1528
1545
  return newScreen !== screen || themeScreen !== null ? [].concat(_toConsumableArray(currentComponents.slice(0, index)), [_objectSpread(_objectSpread({}, themeScreen), newScreen)], _toConsumableArray(currentComponents.slice(index + 1))) : currentComponents;
@@ -1533,7 +1550,7 @@ var ThemeParser = /*#__PURE__*/function () {
1533
1550
  }
1534
1551
  }, {
1535
1552
  key: "parseScreen",
1536
- value: function parseScreen(definition, value, themeValue, themeBackground, themeColors, themeTextSyle) {
1553
+ value: function parseScreen(definition, value, themeValue, themeBackground, themeColors, themeTextStyles, themeBoxStyles) {
1537
1554
  var _this2 = this;
1538
1555
 
1539
1556
  var _definition$fields = definition.fields,
@@ -1553,7 +1570,7 @@ var ThemeParser = /*#__PURE__*/function () {
1553
1570
  var fieldValue = value[key];
1554
1571
  var fieldThemeValue = newThemeValue !== null ? newThemeValue[key] || null : null;
1555
1572
 
1556
- var newFieldValue = _this2.parseField(key, fieldDefinition, fieldValue, fieldThemeValue, themeColors, themeTextSyle); // Only switch field if it has changed
1573
+ var newFieldValue = _this2.parseField(key, fieldDefinition, fieldValue, fieldThemeValue, themeColors, themeTextStyles, themeBoxStyles); // Only switch field if it has changed
1557
1574
 
1558
1575
 
1559
1576
  return newFieldValue !== fieldValue ? _objectSpread(_objectSpread({}, currentValue), {}, _defineProperty({}, key, newFieldValue)) : currentValue;
@@ -1563,23 +1580,36 @@ var ThemeParser = /*#__PURE__*/function () {
1563
1580
 
1564
1581
  }, {
1565
1582
  key: "parseField",
1566
- value: function parseField(key, definition, value, themeValue, themeColors, themeTextStyles) {
1583
+ value: function parseField(key, definition, value, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1567
1584
  var _definition$theme = definition.theme,
1568
- fieldTheme = _definition$theme === void 0 ? {} : _definition$theme; // @TODO very sloow
1585
+ fieldTheme = _definition$theme === void 0 ? null : _definition$theme; // Early return
1586
+
1587
+ if (fieldTheme === null || !isObject(fieldTheme)) {
1588
+ return value;
1589
+ } // @TODO very sloow
1590
+
1569
1591
 
1570
1592
  if (isArray(value)) {
1571
1593
  var newFieldValue = value.map(function (innerField) {
1572
1594
  return innerField !== null ? Object.keys(innerField).reduce(function (newInnerField, innerFieldName) {
1595
+ // Early return
1596
+ if (!isObject(innerField[innerFieldName])) {
1597
+ return newInnerField;
1598
+ }
1599
+
1573
1600
  var _ref3 = fieldTheme[innerFieldName] || {},
1574
1601
  _ref3$textStyle = _ref3.textStyle,
1575
1602
  innerFieldTextStyle = _ref3$textStyle === void 0 ? null : _ref3$textStyle,
1576
1603
  _ref3$color = _ref3.color,
1577
- innerFieldColor = _ref3$color === void 0 ? null : _ref3$color; // Early return
1604
+ innerFieldColor = _ref3$color === void 0 ? null : _ref3$color,
1605
+ _ref3$boxStyle = _ref3.boxStyle,
1606
+ innerFieldBoxStyle = _ref3$boxStyle === void 0 ? null : _ref3$boxStyle; // Early return, no theme
1578
1607
 
1579
1608
 
1580
- if (!isObject(innerField[innerFieldName])) {
1609
+ if (innerFieldTextStyle === null && innerFieldColor === null && innerFieldBoxStyle === null) {
1581
1610
  return newInnerField;
1582
- } // Color
1611
+ } // TODO: replace this with the recursive parseValue...
1612
+ // Color
1583
1613
 
1584
1614
 
1585
1615
  var colorValue = innerFieldColor !== null ? {
@@ -1589,23 +1619,65 @@ var ThemeParser = /*#__PURE__*/function () {
1589
1619
  var textStyleValue = innerFieldTextStyle !== null ? {
1590
1620
  textStyle: _objectSpread(_objectSpread({}, innerFieldTextStyle !== null && themeTextStyles !== null ? themeTextStyles[innerFieldTextStyle] || null : null), innerField[innerFieldName].textStyle || null)
1591
1621
  } : null;
1622
+ var boxStyleValue = innerFieldBoxStyle !== null ? {
1623
+ boxStyle: _objectSpread(_objectSpread({}, innerFieldBoxStyle !== null && themeBoxStyles !== null ? themeBoxStyles[innerFieldBoxStyle] || null : null), innerField[innerFieldName].boxStyle || null)
1624
+ } : null;
1592
1625
 
1593
- if (colorValue === null && textStyleValue === null) {
1626
+ if (colorValue === null && textStyleValue === null && boxStyleValue === null) {
1594
1627
  return newInnerField;
1595
1628
  }
1596
1629
 
1597
- return _objectSpread(_objectSpread({}, newInnerField), {}, _defineProperty({}, innerFieldName, _objectSpread(_objectSpread(_objectSpread({}, colorValue), innerField[innerFieldName]), textStyleValue)));
1630
+ return _objectSpread(_objectSpread({}, newInnerField), {}, _defineProperty({}, innerFieldName, _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, colorValue), innerField[innerFieldName]), textStyleValue), boxStyleValue)));
1598
1631
  }, innerField) : innerField;
1599
1632
  });
1600
1633
  return newFieldValue;
1601
1634
  }
1602
1635
 
1603
- if (isObject(value) && !isArray(value)) {
1636
+ if (isObject(value)) {
1637
+ return this.parseValue(value, fieldTheme, themeValue, themeColors, themeTextStyles, themeBoxStyles);
1638
+ }
1639
+
1640
+ return value;
1641
+ } // eslint-disable-next-line class-methods-use-this
1642
+
1643
+ }, {
1644
+ key: "parseValue",
1645
+ value: function parseValue(initialValue, fieldTheme, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1646
+ var _this3 = this;
1647
+
1648
+ if (isObject(initialValue) || isObject(fieldTheme)) {
1649
+ var value = initialValue || null;
1650
+
1604
1651
  var _ref4 = fieldTheme || {},
1605
1652
  _ref4$textStyle = _ref4.textStyle,
1606
1653
  fieldTextStyleName = _ref4$textStyle === void 0 ? null : _ref4$textStyle,
1607
1654
  _ref4$color = _ref4.color,
1608
- fieldColorName = _ref4$color === void 0 ? null : _ref4$color; // Color
1655
+ fieldColorName = _ref4$color === void 0 ? null : _ref4$color,
1656
+ _ref4$boxStyle = _ref4.boxStyle,
1657
+ fieldBoxStyleName = _ref4$boxStyle === void 0 ? null : _ref4$boxStyle,
1658
+ otherProps = _objectWithoutProperties(_ref4, _excluded$2);
1659
+
1660
+ if (fieldTextStyleName === null && fieldColorName === null && fieldBoxStyleName === null && isEmpty(otherProps) && !isObject(fieldTheme)) {
1661
+ return value;
1662
+ }
1663
+
1664
+ var complexValue = null;
1665
+
1666
+ if (!isEmpty(otherProps)) {
1667
+ complexValue = Object.keys(fieldTheme).reduce(function (newObject, key) {
1668
+ var innerValue = value !== null ? value[key] || null : null;
1669
+
1670
+ var newValue = _this3.parseValue(innerValue, fieldTheme[key], themeValue, themeColors, themeTextStyles, themeBoxStyles);
1671
+
1672
+ return _objectSpread(_objectSpread({}, newObject), newValue !== null ? _defineProperty({}, key, newValue) : null);
1673
+ }, {});
1674
+ }
1675
+
1676
+ var _ref6 = value || {},
1677
+ _ref6$textStyle = _ref6.textStyle,
1678
+ valueTextStyle = _ref6$textStyle === void 0 ? null : _ref6$textStyle,
1679
+ _ref6$boxStyle = _ref6.boxStyle,
1680
+ valueBoxStyle = _ref6$boxStyle === void 0 ? null : _ref6$boxStyle; // Color
1609
1681
 
1610
1682
 
1611
1683
  var fieldColor = fieldColorName !== null && themeColors !== null ? themeColors[fieldColorName] || null : null;
@@ -1616,13 +1688,19 @@ var ThemeParser = /*#__PURE__*/function () {
1616
1688
  var fieldTextStyle = fieldTextStyleName !== null && themeTextStyles !== null ? themeTextStyles[fieldTextStyleName] || null : null;
1617
1689
  var fieldThemeComponentTextStyle = themeValue !== null ? themeValue.textStyle || null : null;
1618
1690
  var textStyleValue = fieldTextStyle !== null || fieldThemeComponentTextStyle !== null ? {
1619
- textStyle: _objectSpread(_objectSpread(_objectSpread({}, fieldTextStyle), fieldThemeComponentTextStyle), value.textStyle || null)
1691
+ textStyle: _objectSpread(_objectSpread(_objectSpread({}, fieldTextStyle), fieldThemeComponentTextStyle), valueTextStyle || null)
1692
+ } : null; // Box style
1693
+
1694
+ var fieldBoxStyle = fieldBoxStyleName !== null && themeBoxStyles !== null ? themeBoxStyles[fieldBoxStyleName] || null : null;
1695
+ var fieldThemeComponentBoxStyle = themeValue !== null ? themeValue.boxStyle || null : null;
1696
+ var boxStyleValue = fieldBoxStyle !== null || fieldThemeComponentBoxStyle !== null ? {
1697
+ boxStyle: _objectSpread(_objectSpread(_objectSpread({}, fieldBoxStyle), fieldThemeComponentBoxStyle), valueBoxStyle || null)
1620
1698
  } : null; // Only change value if something is overrided
1621
1699
 
1622
- return colorValue !== null || themeValue !== null || textStyleValue !== null ? _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, colorValue), themeValue), value), textStyleValue) : value;
1700
+ return colorValue !== null || themeValue !== null || textStyleValue !== null || boxStyleValue !== null || complexValue !== null ? _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, colorValue), themeValue), value), boxStyleValue), textStyleValue), complexValue) : value;
1623
1701
  }
1624
1702
 
1625
- return value;
1703
+ return initialValue;
1626
1704
  }
1627
1705
  }]);
1628
1706
 
package/lib/components.js CHANGED
@@ -2597,6 +2597,10 @@ PropTypes__default["default"].shape({
2597
2597
  withSeekBar: PropTypes__default["default"].bool,
2598
2598
  withPlayPause: PropTypes__default["default"].bool
2599
2599
  });
2600
+ var visualElement = PropTypes__default["default"].shape({
2601
+ media: imageMedia
2602
+ });
2603
+ PropTypes__default["default"].arrayOf(visualElement);
2600
2604
  PropTypes__default["default"].shape({
2601
2605
  media: audioMedia,
2602
2606
  autoPlay: PropTypes__default["default"].bool,
@@ -2877,6 +2881,12 @@ var pageMetadata = PropTypes__default["default"].shape({
2877
2881
  atomUrl: PropTypes__default["default"].string,
2878
2882
  microformats: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({}))
2879
2883
  });
2884
+ PropTypes__default["default"].shape({
2885
+ name: PropTypes__default["default"].string,
2886
+ avatar: PropTypes__default["default"].shape({
2887
+ url: PropTypes__default["default"].string
2888
+ })
2889
+ });
2880
2890
 
2881
2891
  /* eslint-disable react/no-array-index-key */
2882
2892
  var propTypes$d = {
package/lib/index.js CHANGED
@@ -27,6 +27,7 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
27
27
  require('slugify');
28
28
  var uniqBy = require('lodash/uniqBy');
29
29
  var _typeof = require('@babel/runtime/helpers/typeof');
30
+ var isEmpty = require('lodash/isEmpty');
30
31
  var uniq = require('lodash/uniq');
31
32
  var tracking = require('@folklore/tracking');
32
33
 
@@ -50,6 +51,7 @@ var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_obje
50
51
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
51
52
  var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
52
53
  var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
54
+ var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
53
55
  var uniq__default = /*#__PURE__*/_interopDefaultLegacy(uniq);
54
56
 
55
57
  /**
@@ -308,6 +310,10 @@ var videoElement = PropTypes__default["default"].shape({
308
310
  withSeekBar: PropTypes__default["default"].bool,
309
311
  withPlayPause: PropTypes__default["default"].bool
310
312
  });
313
+ var visualElement = PropTypes__default["default"].shape({
314
+ media: imageMedia
315
+ });
316
+ var visualElements = PropTypes__default["default"].arrayOf(visualElement);
311
317
  var audioElement = PropTypes__default["default"].shape({
312
318
  media: audioMedia,
313
319
  autoPlay: PropTypes__default["default"].bool,
@@ -589,6 +595,12 @@ var pageMetadata = PropTypes__default["default"].shape({
589
595
  atomUrl: PropTypes__default["default"].string,
590
596
  microformats: PropTypes__default["default"].arrayOf(PropTypes__default["default"].shape({}))
591
597
  });
598
+ var authorElement = PropTypes__default["default"].shape({
599
+ name: PropTypes__default["default"].string,
600
+ avatar: PropTypes__default["default"].shape({
601
+ url: PropTypes__default["default"].string
602
+ })
603
+ });
592
604
 
593
605
  var PropTypes = /*#__PURE__*/Object.freeze({
594
606
  __proto__: null,
@@ -665,6 +677,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
665
677
  imageElement: imageElement,
666
678
  imageElements: imageElements,
667
679
  videoElement: videoElement,
680
+ visualElement: visualElement,
681
+ visualElements: visualElements,
668
682
  audioElement: audioElement,
669
683
  closedCaptionsElement: closedCaptionsElement,
670
684
  backgroundElement: backgroundElement,
@@ -724,7 +738,8 @@ var PropTypes = /*#__PURE__*/Object.freeze({
724
738
  searchFilters: searchFilters,
725
739
  paymentItem: paymentItem,
726
740
  paymentItems: paymentItems,
727
- pageMetadata: pageMetadata
741
+ pageMetadata: pageMetadata,
742
+ authorElement: authorElement
728
743
  });
729
744
 
730
745
  var sortedColors = function sortedColors(colors) {
@@ -1023,8 +1038,9 @@ var DefinitionsManager = /*#__PURE__*/function (_EventEmitter) {
1023
1038
  }, {
1024
1039
  key: "filter",
1025
1040
  value: function filter(_filter) {
1026
- this.definitions = this.definitions.filter(_filter);
1027
- return this; // return new DefinitionsManager(this.definitions.filter(filter));
1041
+ // this.definitions = this.definitions.filter(filter);
1042
+ // return this;
1043
+ return new DefinitionsManager(this.definitions.filter(_filter));
1028
1044
  }
1029
1045
  }, {
1030
1046
  key: "getDefinition",
@@ -1161,16 +1177,15 @@ var FieldsManager = /*#__PURE__*/function (_DefinitionsManager) {
1161
1177
  _createClass__default["default"](FieldsManager, [{
1162
1178
  key: "filter",
1163
1179
  value: function filter(_filter) {
1164
- // return new FieldsManager(this.definitions.filter(filter));
1165
- this.definitions = this.definitions.filter(_filter);
1166
- return this;
1180
+ return new FieldsManager(this.definitions.filter(_filter)); // this.definitions = this.definitions.filter(filter);
1181
+ // return this;
1167
1182
  }
1168
1183
  }]);
1169
1184
 
1170
1185
  return FieldsManager;
1171
1186
  }(DefinitionsManager);
1172
1187
 
1173
- var _excluded$2 = ["medias"];
1188
+ var _excluded$3 = ["medias"];
1174
1189
 
1175
1190
  var MediasParser = /*#__PURE__*/function () {
1176
1191
  function MediasParser(_ref) {
@@ -1238,7 +1253,7 @@ var MediasParser = /*#__PURE__*/function () {
1238
1253
  if (theme !== null) {
1239
1254
  var _this$toPath = this.toPath(theme),
1240
1255
  themeMedias = _this$toPath.medias,
1241
- newTheme = _objectWithoutProperties__default["default"](_this$toPath, _excluded$2);
1256
+ newTheme = _objectWithoutProperties__default["default"](_this$toPath, _excluded$3);
1242
1257
 
1243
1258
  return medias !== null || themeMedias !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, story), {}, {
1244
1259
  theme: newTheme,
@@ -1479,15 +1494,16 @@ var ScreensManager = /*#__PURE__*/function (_DefinitionsManager) {
1479
1494
  }, {
1480
1495
  key: "filter",
1481
1496
  value: function filter(_filter) {
1482
- // return new ScreensManager(this.definitions.filter(filter));
1483
- this.definitions = this.definitions.filter(_filter);
1484
- return this;
1497
+ return new ScreensManager(this.definitions.filter(_filter)); // this.definitions = this.definitions.filter(filter);
1498
+ // return this;
1485
1499
  }
1486
1500
  }]);
1487
1501
 
1488
1502
  return ScreensManager;
1489
1503
  }(DefinitionsManager);
1490
1504
 
1505
+ var _excluded$2 = ["textStyle", "color", "boxStyle"];
1506
+
1491
1507
  var ThemeParser = /*#__PURE__*/function () {
1492
1508
  function ThemeParser(_ref) {
1493
1509
  var screensManager = _ref.screensManager;
@@ -1540,7 +1556,9 @@ var ThemeParser = /*#__PURE__*/function () {
1540
1556
  _theme$colors = theme.colors,
1541
1557
  themeColors = _theme$colors === void 0 ? {} : _theme$colors,
1542
1558
  _theme$textStyles = theme.textStyles,
1543
- themeTextStyles = _theme$textStyles === void 0 ? null : _theme$textStyles;
1559
+ themeTextStyles = _theme$textStyles === void 0 ? null : _theme$textStyles,
1560
+ _theme$boxStyles = theme.boxStyles,
1561
+ themeBoxStyles = _theme$boxStyles === void 0 ? null : _theme$boxStyles;
1544
1562
  var newComponents = components.reduce(function (currentComponents, screen, index) {
1545
1563
  var type = screen.type;
1546
1564
 
@@ -1548,7 +1566,7 @@ var ThemeParser = /*#__PURE__*/function () {
1548
1566
  definition = _this$getDefinitionBy.definition,
1549
1567
  themeScreen = _this$getDefinitionBy.themeScreen;
1550
1568
 
1551
- var newScreen = _this.parseScreen(definition, screen, themeScreen, themeBackground, themeColors, themeTextStyles); // Only switch screen if it has changed
1569
+ var newScreen = _this.parseScreen(definition, screen, themeScreen, themeBackground, themeColors, themeTextStyles, themeBoxStyles); // Only switch screen if it has changed
1552
1570
 
1553
1571
 
1554
1572
  return newScreen !== screen || themeScreen !== null ? [].concat(_toConsumableArray__default["default"](currentComponents.slice(0, index)), [_objectSpread__default["default"](_objectSpread__default["default"]({}, themeScreen), newScreen)], _toConsumableArray__default["default"](currentComponents.slice(index + 1))) : currentComponents;
@@ -1559,7 +1577,7 @@ var ThemeParser = /*#__PURE__*/function () {
1559
1577
  }
1560
1578
  }, {
1561
1579
  key: "parseScreen",
1562
- value: function parseScreen(definition, value, themeValue, themeBackground, themeColors, themeTextSyle) {
1580
+ value: function parseScreen(definition, value, themeValue, themeBackground, themeColors, themeTextStyles, themeBoxStyles) {
1563
1581
  var _this2 = this;
1564
1582
 
1565
1583
  var _definition$fields = definition.fields,
@@ -1579,7 +1597,7 @@ var ThemeParser = /*#__PURE__*/function () {
1579
1597
  var fieldValue = value[key];
1580
1598
  var fieldThemeValue = newThemeValue !== null ? newThemeValue[key] || null : null;
1581
1599
 
1582
- var newFieldValue = _this2.parseField(key, fieldDefinition, fieldValue, fieldThemeValue, themeColors, themeTextSyle); // Only switch field if it has changed
1600
+ var newFieldValue = _this2.parseField(key, fieldDefinition, fieldValue, fieldThemeValue, themeColors, themeTextStyles, themeBoxStyles); // Only switch field if it has changed
1583
1601
 
1584
1602
 
1585
1603
  return newFieldValue !== fieldValue ? _objectSpread__default["default"](_objectSpread__default["default"]({}, currentValue), {}, _defineProperty__default["default"]({}, key, newFieldValue)) : currentValue;
@@ -1589,23 +1607,36 @@ var ThemeParser = /*#__PURE__*/function () {
1589
1607
 
1590
1608
  }, {
1591
1609
  key: "parseField",
1592
- value: function parseField(key, definition, value, themeValue, themeColors, themeTextStyles) {
1610
+ value: function parseField(key, definition, value, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1593
1611
  var _definition$theme = definition.theme,
1594
- fieldTheme = _definition$theme === void 0 ? {} : _definition$theme; // @TODO very sloow
1612
+ fieldTheme = _definition$theme === void 0 ? null : _definition$theme; // Early return
1613
+
1614
+ if (fieldTheme === null || !isObject__default["default"](fieldTheme)) {
1615
+ return value;
1616
+ } // @TODO very sloow
1617
+
1595
1618
 
1596
1619
  if (isArray__default["default"](value)) {
1597
1620
  var newFieldValue = value.map(function (innerField) {
1598
1621
  return innerField !== null ? Object.keys(innerField).reduce(function (newInnerField, innerFieldName) {
1622
+ // Early return
1623
+ if (!isObject__default["default"](innerField[innerFieldName])) {
1624
+ return newInnerField;
1625
+ }
1626
+
1599
1627
  var _ref3 = fieldTheme[innerFieldName] || {},
1600
1628
  _ref3$textStyle = _ref3.textStyle,
1601
1629
  innerFieldTextStyle = _ref3$textStyle === void 0 ? null : _ref3$textStyle,
1602
1630
  _ref3$color = _ref3.color,
1603
- innerFieldColor = _ref3$color === void 0 ? null : _ref3$color; // Early return
1631
+ innerFieldColor = _ref3$color === void 0 ? null : _ref3$color,
1632
+ _ref3$boxStyle = _ref3.boxStyle,
1633
+ innerFieldBoxStyle = _ref3$boxStyle === void 0 ? null : _ref3$boxStyle; // Early return, no theme
1604
1634
 
1605
1635
 
1606
- if (!isObject__default["default"](innerField[innerFieldName])) {
1636
+ if (innerFieldTextStyle === null && innerFieldColor === null && innerFieldBoxStyle === null) {
1607
1637
  return newInnerField;
1608
- } // Color
1638
+ } // TODO: replace this with the recursive parseValue...
1639
+ // Color
1609
1640
 
1610
1641
 
1611
1642
  var colorValue = innerFieldColor !== null ? {
@@ -1615,23 +1646,65 @@ var ThemeParser = /*#__PURE__*/function () {
1615
1646
  var textStyleValue = innerFieldTextStyle !== null ? {
1616
1647
  textStyle: _objectSpread__default["default"](_objectSpread__default["default"]({}, innerFieldTextStyle !== null && themeTextStyles !== null ? themeTextStyles[innerFieldTextStyle] || null : null), innerField[innerFieldName].textStyle || null)
1617
1648
  } : null;
1649
+ var boxStyleValue = innerFieldBoxStyle !== null ? {
1650
+ boxStyle: _objectSpread__default["default"](_objectSpread__default["default"]({}, innerFieldBoxStyle !== null && themeBoxStyles !== null ? themeBoxStyles[innerFieldBoxStyle] || null : null), innerField[innerFieldName].boxStyle || null)
1651
+ } : null;
1618
1652
 
1619
- if (colorValue === null && textStyleValue === null) {
1653
+ if (colorValue === null && textStyleValue === null && boxStyleValue === null) {
1620
1654
  return newInnerField;
1621
1655
  }
1622
1656
 
1623
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, newInnerField), {}, _defineProperty__default["default"]({}, innerFieldName, _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, colorValue), innerField[innerFieldName]), textStyleValue)));
1657
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, newInnerField), {}, _defineProperty__default["default"]({}, innerFieldName, _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, colorValue), innerField[innerFieldName]), textStyleValue), boxStyleValue)));
1624
1658
  }, innerField) : innerField;
1625
1659
  });
1626
1660
  return newFieldValue;
1627
1661
  }
1628
1662
 
1629
- if (isObject__default["default"](value) && !isArray__default["default"](value)) {
1663
+ if (isObject__default["default"](value)) {
1664
+ return this.parseValue(value, fieldTheme, themeValue, themeColors, themeTextStyles, themeBoxStyles);
1665
+ }
1666
+
1667
+ return value;
1668
+ } // eslint-disable-next-line class-methods-use-this
1669
+
1670
+ }, {
1671
+ key: "parseValue",
1672
+ value: function parseValue(initialValue, fieldTheme, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1673
+ var _this3 = this;
1674
+
1675
+ if (isObject__default["default"](initialValue) || isObject__default["default"](fieldTheme)) {
1676
+ var value = initialValue || null;
1677
+
1630
1678
  var _ref4 = fieldTheme || {},
1631
1679
  _ref4$textStyle = _ref4.textStyle,
1632
1680
  fieldTextStyleName = _ref4$textStyle === void 0 ? null : _ref4$textStyle,
1633
1681
  _ref4$color = _ref4.color,
1634
- fieldColorName = _ref4$color === void 0 ? null : _ref4$color; // Color
1682
+ fieldColorName = _ref4$color === void 0 ? null : _ref4$color,
1683
+ _ref4$boxStyle = _ref4.boxStyle,
1684
+ fieldBoxStyleName = _ref4$boxStyle === void 0 ? null : _ref4$boxStyle,
1685
+ otherProps = _objectWithoutProperties__default["default"](_ref4, _excluded$2);
1686
+
1687
+ if (fieldTextStyleName === null && fieldColorName === null && fieldBoxStyleName === null && isEmpty__default["default"](otherProps) && !isObject__default["default"](fieldTheme)) {
1688
+ return value;
1689
+ }
1690
+
1691
+ var complexValue = null;
1692
+
1693
+ if (!isEmpty__default["default"](otherProps)) {
1694
+ complexValue = Object.keys(fieldTheme).reduce(function (newObject, key) {
1695
+ var innerValue = value !== null ? value[key] || null : null;
1696
+
1697
+ var newValue = _this3.parseValue(innerValue, fieldTheme[key], themeValue, themeColors, themeTextStyles, themeBoxStyles);
1698
+
1699
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, newObject), newValue !== null ? _defineProperty__default["default"]({}, key, newValue) : null);
1700
+ }, {});
1701
+ }
1702
+
1703
+ var _ref6 = value || {},
1704
+ _ref6$textStyle = _ref6.textStyle,
1705
+ valueTextStyle = _ref6$textStyle === void 0 ? null : _ref6$textStyle,
1706
+ _ref6$boxStyle = _ref6.boxStyle,
1707
+ valueBoxStyle = _ref6$boxStyle === void 0 ? null : _ref6$boxStyle; // Color
1635
1708
 
1636
1709
 
1637
1710
  var fieldColor = fieldColorName !== null && themeColors !== null ? themeColors[fieldColorName] || null : null;
@@ -1642,13 +1715,19 @@ var ThemeParser = /*#__PURE__*/function () {
1642
1715
  var fieldTextStyle = fieldTextStyleName !== null && themeTextStyles !== null ? themeTextStyles[fieldTextStyleName] || null : null;
1643
1716
  var fieldThemeComponentTextStyle = themeValue !== null ? themeValue.textStyle || null : null;
1644
1717
  var textStyleValue = fieldTextStyle !== null || fieldThemeComponentTextStyle !== null ? {
1645
- textStyle: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, fieldTextStyle), fieldThemeComponentTextStyle), value.textStyle || null)
1718
+ textStyle: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, fieldTextStyle), fieldThemeComponentTextStyle), valueTextStyle || null)
1719
+ } : null; // Box style
1720
+
1721
+ var fieldBoxStyle = fieldBoxStyleName !== null && themeBoxStyles !== null ? themeBoxStyles[fieldBoxStyleName] || null : null;
1722
+ var fieldThemeComponentBoxStyle = themeValue !== null ? themeValue.boxStyle || null : null;
1723
+ var boxStyleValue = fieldBoxStyle !== null || fieldThemeComponentBoxStyle !== null ? {
1724
+ boxStyle: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, fieldBoxStyle), fieldThemeComponentBoxStyle), valueBoxStyle || null)
1646
1725
  } : null; // Only change value if something is overrided
1647
1726
 
1648
- return colorValue !== null || themeValue !== null || textStyleValue !== null ? _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, colorValue), themeValue), value), textStyleValue) : value;
1727
+ return colorValue !== null || themeValue !== null || textStyleValue !== null || boxStyleValue !== null || complexValue !== null ? _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, colorValue), themeValue), value), boxStyleValue), textStyleValue), complexValue) : value;
1649
1728
  }
1650
1729
 
1651
- return value;
1730
+ return initialValue;
1652
1731
  }
1653
1732
  }]);
1654
1733
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.58",
3
+ "version": "0.3.62",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -132,5 +132,5 @@
132
132
  "publishConfig": {
133
133
  "access": "public"
134
134
  },
135
- "gitHead": "80fc5af53d50e031d2516967d52ca61e789d52de"
135
+ "gitHead": "aadfceb362d4d12aa0189eaaa2cf6455d8d85e67"
136
136
  }