@micromag/core 0.3.418 → 0.3.423

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
@@ -15,6 +15,7 @@ import { useForm, useDocumentEvent, useIntersectionObserver, useDimensionObserve
15
15
  import { useFieldsManager, useFieldComponent, FieldContextProvider, withModals, useModals, useUppy, withPanels, usePanels, ScreenSizeProvider, useScreenComponent, ScreenProvider, useScreenRenderContext, useScreenSize } from '@micromag/core/contexts';
16
16
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
17
17
  import get from 'lodash/get';
18
+ import queryString from 'query-string';
18
19
  import ReactDOM from 'react-dom';
19
20
  import isArray from 'lodash/isArray';
20
21
  import { faAngleDown } from '@fortawesome/free-solid-svg-icons/faAngleDown';
@@ -1554,8 +1555,12 @@ var messages = defineMessages({
1554
1555
  });
1555
1556
  var propTypes$x = {
1556
1557
  page: PropTypes$1.number,
1558
+ lastPage: PropTypes$1.number,
1559
+ maxPages: PropTypes$1.number,
1557
1560
  total: PropTypes$1.number,
1558
1561
  url: PropTypes$1.string,
1562
+ query: PropTypes$1.object,
1563
+ // eslint-disable-line react/forbid-prop-types
1559
1564
  withPreviousNext: PropTypes$1.bool,
1560
1565
  className: PropTypes$1.string,
1561
1566
  paginationClassName: PropTypes$1.string,
@@ -1565,8 +1570,11 @@ var propTypes$x = {
1565
1570
  };
1566
1571
  var defaultProps$x = {
1567
1572
  page: 1,
1573
+ lastPage: 1,
1574
+ maxPages: 10,
1568
1575
  total: 1,
1569
1576
  url: null,
1577
+ query: null,
1570
1578
  withPreviousNext: false,
1571
1579
  className: null,
1572
1580
  paginationClassName: null,
@@ -1575,9 +1583,12 @@ var defaultProps$x = {
1575
1583
  onClickPage: null
1576
1584
  };
1577
1585
  var PaginationMenu = function PaginationMenu(_ref) {
1578
- var page = _ref.page,
1579
- total = _ref.total,
1586
+ var parentPage = _ref.page,
1587
+ parentLastPage = _ref.lastPage,
1588
+ parentMaxPages = _ref.maxPages,
1589
+ parentTotal = _ref.total,
1580
1590
  url = _ref.url,
1591
+ query = _ref.query,
1581
1592
  withPreviousNext = _ref.withPreviousNext,
1582
1593
  className = _ref.className,
1583
1594
  paginationClassName = _ref.paginationClassName,
@@ -1585,11 +1596,38 @@ var PaginationMenu = function PaginationMenu(_ref) {
1585
1596
  linkClassName = _ref.linkClassName,
1586
1597
  onClickPage = _ref.onClickPage;
1587
1598
  var getUrl = useCallback(function (currentPage) {
1588
- return url !== null ? "".concat(url).concat(url.indexOf('?') !== -1 ? "&page=".concat(currentPage) : "?page=".concat(currentPage)) : null;
1589
- }, [url]);
1590
- var pages = _toConsumableArray(Array(total).keys()).map(function (it) {
1591
- return it + 1;
1599
+ return url !== null ? "".concat(url, "?").concat(queryString.stringify(_objectSpread(_objectSpread({}, query), {}, {
1600
+ page: currentPage
1601
+ }), {
1602
+ arrayFormat: 'bracket'
1603
+ })) : null;
1604
+ }, [url, query]);
1605
+
1606
+ // TODO: test this
1607
+ // const pages = [...Array(total).keys()].map((it) => it + 1);
1608
+
1609
+ var page = parseInt(parentPage, 10);
1610
+ var total = parseInt(parentTotal, 10);
1611
+ var maxPages = parseInt(parentMaxPages, 10);
1612
+ var lastPage = parseInt(parentLastPage, 10);
1613
+ var pageNumbers = Array.from({
1614
+ length: parseInt(lastPage, 10)
1615
+ }, function (_, i) {
1616
+ return i + 1;
1592
1617
  });
1618
+ var stripPages = maxPages !== null && lastPage > maxPages;
1619
+ var startPage = stripPages ? Math.min(Math.max(page - maxPages / 2, 1), lastPage - maxPages) : null;
1620
+ var endPage = stripPages ? startPage + maxPages : null;
1621
+ var strippedPages = stripPages ? pageNumbers.reduce(function (selectedPages, pageNumber) {
1622
+ if (pageNumber === 1 && startPage - 1 > 1) {
1623
+ return [pageNumber, '...'];
1624
+ }
1625
+ if (pageNumber === lastPage && endPage + 1 < lastPage) {
1626
+ return [].concat(_toConsumableArray(selectedPages), ['...', pageNumber]);
1627
+ }
1628
+ return pageNumber >= startPage && pageNumber <= endPage ? [].concat(_toConsumableArray(selectedPages), [pageNumber]) : selectedPages;
1629
+ }, []) : pageNumbers;
1630
+ var pages = strippedPages.length > 0 ? strippedPages : [1];
1593
1631
  return /*#__PURE__*/React.createElement("nav", {
1594
1632
  className: classNames([styles$p.container, _defineProperty({}, className, className !== null)])
1595
1633
  }, /*#__PURE__*/React.createElement("ul", {
@@ -3827,7 +3865,7 @@ var Placeholder = /*#__PURE__*/React.memo(ScreenPlaceholder);
3827
3865
 
3828
3866
  var styles$6 = {"stack":"micromag-core-screens-preview-stack","stackScreen":"micromag-core-screens-preview-stackScreen","stackItem":"micromag-core-screens-preview-stackItem","screen":"micromag-core-screens-preview-screen"};
3829
3867
 
3830
- var _excluded = ["screen", "screenState", "width", "height", "screenWidth", "screenHeight", "className", "withSize"];
3868
+ var _excluded = ["screen", "screenState", "width", "height", "screenWidth", "screenHeight", "className", "withSize", "hidden"];
3831
3869
  var propTypes$7 = {
3832
3870
  screen: PropTypes.component.isRequired,
3833
3871
  screenState: PropTypes$1.string,
@@ -3836,7 +3874,8 @@ var propTypes$7 = {
3836
3874
  screenWidth: PropTypes$1.number,
3837
3875
  screenHeight: PropTypes$1.number,
3838
3876
  className: PropTypes$1.string,
3839
- withSize: PropTypes$1.bool
3877
+ withSize: PropTypes$1.bool,
3878
+ hidden: PropTypes$1.bool
3840
3879
  };
3841
3880
  var defaultProps$7 = {
3842
3881
  screenState: null,
@@ -3845,7 +3884,8 @@ var defaultProps$7 = {
3845
3884
  screenWidth: undefined,
3846
3885
  screenHeight: undefined,
3847
3886
  className: null,
3848
- withSize: false
3887
+ withSize: false,
3888
+ hidden: false
3849
3889
  };
3850
3890
  var ScreenPreview = function ScreenPreview(_ref) {
3851
3891
  var screen = _ref.screen,
@@ -3856,6 +3896,7 @@ var ScreenPreview = function ScreenPreview(_ref) {
3856
3896
  screenHeight = _ref.screenHeight,
3857
3897
  className = _ref.className,
3858
3898
  withSize = _ref.withSize,
3899
+ hidden = _ref.hidden,
3859
3900
  props = _objectWithoutProperties(_ref, _excluded);
3860
3901
  var screenElement = /*#__PURE__*/React.createElement(Screen$1, Object.assign({
3861
3902
  screen: screen,
@@ -3865,13 +3906,14 @@ var ScreenPreview = function ScreenPreview(_ref) {
3865
3906
  height: !withSize ? height : undefined,
3866
3907
  className: classNames([styles$6.screen, _defineProperty({}, className, !withSize)])
3867
3908
  }, props));
3909
+ var element = !hidden ? screenElement : /*#__PURE__*/React.createElement("div", null);
3868
3910
  var screenWithSize = withSize ? /*#__PURE__*/React.createElement(ScreenSizer, {
3869
3911
  className: className,
3870
3912
  screenWidth: screenWidth,
3871
3913
  screenHeight: screenHeight,
3872
3914
  width: width,
3873
3915
  height: height
3874
- }, screenElement) : screenElement;
3916
+ }, element) : element;
3875
3917
  return screenWithSize;
3876
3918
  };
3877
3919
  ScreenPreview.propTypes = propTypes$7;
package/es/index.js CHANGED
@@ -1156,7 +1156,8 @@ var FieldsManager = /*#__PURE__*/function (_DefinitionsManager) {
1156
1156
  return FieldsManager;
1157
1157
  }(DefinitionsManager);
1158
1158
 
1159
- var _excluded$4 = ["medias"];
1159
+ var _excluded$4 = ["medias"],
1160
+ _excluded2$2 = ["medias"];
1160
1161
  var MediasParser = /*#__PURE__*/function () {
1161
1162
  function MediasParser(_ref) {
1162
1163
  var fieldsManager = _ref.fieldsManager,
@@ -1165,8 +1166,23 @@ var MediasParser = /*#__PURE__*/function () {
1165
1166
  this.fieldsManager = fieldsManager;
1166
1167
  this.screensManager = screensManager;
1167
1168
  this.fieldsPatternCache = {};
1169
+ this.parsedThemesCache = {};
1168
1170
  }
1169
1171
  _createClass(MediasParser, [{
1172
+ key: "getParsedStoryTheme",
1173
+ value: function getParsedStoryTheme(storyId, theme) {
1174
+ if (typeof this.parsedThemesCache[storyId] === 'undefined') {
1175
+ var _this$toPath = this.toPath(theme),
1176
+ themeMedias = _this$toPath.medias,
1177
+ newTheme = _objectWithoutProperties(_this$toPath, _excluded$4);
1178
+ this.parsedThemesCache[storyId] = {
1179
+ themeMedias: themeMedias,
1180
+ newTheme: newTheme
1181
+ };
1182
+ }
1183
+ return this.parsedThemesCache[storyId];
1184
+ }
1185
+ }, {
1170
1186
  key: "getFieldsPatternByScreen",
1171
1187
  value: function getFieldsPatternByScreen(type) {
1172
1188
  if (typeof this.fieldsPatternCache[type] === 'undefined') {
@@ -1187,6 +1203,8 @@ var MediasParser = /*#__PURE__*/function () {
1187
1203
  return story;
1188
1204
  }
1189
1205
  var _ref3 = story || {},
1206
+ _ref3$id = _ref3.id,
1207
+ storyId = _ref3$id === void 0 ? null : _ref3$id,
1190
1208
  _ref3$theme = _ref3.theme,
1191
1209
  theme = _ref3$theme === void 0 ? null : _ref3$theme,
1192
1210
  _ref3$components = _ref3.components,
@@ -1210,9 +1228,9 @@ var MediasParser = /*#__PURE__*/function () {
1210
1228
  newComponents = _components$reduce.components,
1211
1229
  medias = _components$reduce.medias;
1212
1230
  if (theme !== null) {
1213
- var _this$toPath = this.toPath(theme),
1214
- themeMedias = _this$toPath.medias,
1215
- newTheme = _objectWithoutProperties(_this$toPath, _excluded$4);
1231
+ var _this$getParsedStoryT = this.getParsedStoryTheme(storyId, theme),
1232
+ themeMedias = _this$getParsedStoryT.medias,
1233
+ newTheme = _objectWithoutProperties(_this$getParsedStoryT, _excluded2$2);
1216
1234
  return medias !== null || themeMedias !== null ? _objectSpread(_objectSpread({}, story), {}, {
1217
1235
  theme: newTheme,
1218
1236
  components: newComponents,
@@ -1641,6 +1659,7 @@ var ThemeParser = /*#__PURE__*/function () {
1641
1659
  _classCallCheck(this, ThemeParser);
1642
1660
  this.screensManager = screensManager;
1643
1661
  this.definitionCache = {};
1662
+ this.fieldsCache = {};
1644
1663
  }
1645
1664
  _createClass(ThemeParser, [{
1646
1665
  key: "getDefinitionByScreen",
@@ -1657,6 +1676,54 @@ var ThemeParser = /*#__PURE__*/function () {
1657
1676
  }
1658
1677
  return this.definitionCache[type];
1659
1678
  }
1679
+ }, {
1680
+ key: "getFieldsForDefinition",
1681
+ value: function getFieldsForDefinition(definition) {
1682
+ var _ref2 = definition || {},
1683
+ _ref2$id = _ref2.id,
1684
+ definitionId = _ref2$id === void 0 ? null : _ref2$id,
1685
+ _ref2$fields = _ref2.fields,
1686
+ fields = _ref2$fields === void 0 ? [] : _ref2$fields,
1687
+ _ref2$states = _ref2.states,
1688
+ states = _ref2$states === void 0 ? [] : _ref2$states;
1689
+ if (typeof this.fieldsCache[definitionId] === 'undefined') {
1690
+ if (states === null || states.length === 0) {
1691
+ this.fieldsCache[definitionId] = {
1692
+ fields: fields
1693
+ };
1694
+ } else {
1695
+ // TODO: test this
1696
+ var finalFields = fields;
1697
+ var repetableStates = [];
1698
+ if (states !== null && states.length > 0) {
1699
+ var nonRepetableStates = states.filter(function (_ref3) {
1700
+ var _ref3$repeatable = _ref3.repeatable,
1701
+ repeatable = _ref3$repeatable === void 0 ? false : _ref3$repeatable;
1702
+ return repeatable === false;
1703
+ });
1704
+ repetableStates = states.filter(function (_ref4) {
1705
+ var _ref4$repeatable = _ref4.repeatable,
1706
+ repeatable = _ref4$repeatable === void 0 ? false : _ref4$repeatable;
1707
+ return repeatable === true;
1708
+ });
1709
+ finalFields = nonRepetableStates.reduce(function (acc, it) {
1710
+ var _ref5 = it || {},
1711
+ _ref5$fields = _ref5.fields,
1712
+ itemFields = _ref5$fields === void 0 ? [] : _ref5$fields;
1713
+ if (itemFields !== null && itemFields.length > 0) {
1714
+ return acc.concat(itemFields);
1715
+ }
1716
+ return acc;
1717
+ }, finalFields);
1718
+ }
1719
+ this.fieldsCache[definitionId] = {
1720
+ fields: finalFields,
1721
+ repetableStates: repetableStates
1722
+ };
1723
+ }
1724
+ }
1725
+ return this.fieldsCache[definitionId];
1726
+ }
1660
1727
  }, {
1661
1728
  key: "parse",
1662
1729
  value: function parse(story) {
@@ -1664,11 +1731,11 @@ var ThemeParser = /*#__PURE__*/function () {
1664
1731
  if (story === null) {
1665
1732
  return story;
1666
1733
  }
1667
- var _ref2 = story || {},
1668
- _ref2$theme = _ref2.theme,
1669
- theme = _ref2$theme === void 0 ? null : _ref2$theme,
1670
- _ref2$components = _ref2.components,
1671
- components = _ref2$components === void 0 ? null : _ref2$components;
1734
+ var _ref6 = story || {},
1735
+ _ref6$theme = _ref6.theme,
1736
+ theme = _ref6$theme === void 0 ? null : _ref6$theme,
1737
+ _ref6$components = _ref6.components,
1738
+ components = _ref6$components === void 0 ? null : _ref6$components;
1672
1739
  if (theme === null || components === null) {
1673
1740
  return story;
1674
1741
  }
@@ -1682,6 +1749,33 @@ var ThemeParser = /*#__PURE__*/function () {
1682
1749
  themeTextStyles = _theme$textStyles === void 0 ? null : _theme$textStyles,
1683
1750
  _theme$boxStyles = theme.boxStyles,
1684
1751
  themeBoxStyles = _theme$boxStyles === void 0 ? null : _theme$boxStyles;
1752
+
1753
+ // Speed test
1754
+ // const newComponents = [...components];
1755
+ // for (let index = 0; index < components.length; index += 1) {
1756
+ // const screen = components[index] || {};
1757
+ // const { type } = screen;
1758
+ // const { definition, themeScreen } = this.getDefinitionByScreen(type, themeComponents);
1759
+ // const newScreen = this.parseScreen(
1760
+ // definition,
1761
+ // screen,
1762
+ // themeScreen,
1763
+ // themeBackground,
1764
+ // themeColors,
1765
+ // themeTextStyles,
1766
+ // themeBoxStyles,
1767
+ // );
1768
+
1769
+ // if (newScreen !== screen || themeScreen !== null) {
1770
+ // newComponents[index] = {
1771
+ // ...themeScreen,
1772
+ // ...newScreen,
1773
+ // };
1774
+ // }
1775
+ // }
1776
+ // story.components = newComponents;
1777
+ // return story;
1778
+
1685
1779
  var newComponents = components.reduce(function (currentComponents, screen, index) {
1686
1780
  var type = screen.type;
1687
1781
  var _this$getDefinitionBy = _this.getDefinitionByScreen(type, themeComponents),
@@ -1700,36 +1794,11 @@ var ThemeParser = /*#__PURE__*/function () {
1700
1794
  key: "parseScreen",
1701
1795
  value: function parseScreen(definition, value, themeValue, themeBackground, themeColors, themeTextStyles, themeBoxStyles) {
1702
1796
  var _this2 = this;
1703
- var _ref3 = definition || {},
1704
- _ref3$fields = _ref3.fields,
1705
- fields = _ref3$fields === void 0 ? [] : _ref3$fields,
1706
- _ref3$states = _ref3.states,
1707
- states = _ref3$states === void 0 ? [] : _ref3$states;
1708
-
1709
- // TODO: test this
1710
- var finalFields = fields;
1711
- var repetableStates = [];
1712
- if (states !== null && states.length > 0) {
1713
- var nonRepetableStates = states.filter(function (_ref4) {
1714
- var _ref4$repeatable = _ref4.repeatable,
1715
- repeatable = _ref4$repeatable === void 0 ? false : _ref4$repeatable;
1716
- return repeatable === false;
1717
- });
1718
- repetableStates = states.filter(function (_ref5) {
1719
- var _ref5$repeatable = _ref5.repeatable,
1720
- repeatable = _ref5$repeatable === void 0 ? false : _ref5$repeatable;
1721
- return repeatable === true;
1722
- });
1723
- finalFields = nonRepetableStates.reduce(function (acc, it) {
1724
- var _ref6 = it || {},
1725
- _ref6$fields = _ref6.fields,
1726
- itemFields = _ref6$fields === void 0 ? [] : _ref6$fields;
1727
- if (itemFields !== null && itemFields.length > 0) {
1728
- return acc.concat(itemFields);
1729
- }
1730
- return acc;
1731
- }, finalFields);
1732
- }
1797
+ var _this$getFieldsForDef = this.getFieldsForDefinition(definition),
1798
+ _this$getFieldsForDef2 = _this$getFieldsForDef.fields,
1799
+ fields = _this$getFieldsForDef2 === void 0 ? null : _this$getFieldsForDef2,
1800
+ _this$getFieldsForDef3 = _this$getFieldsForDef.repetableStates,
1801
+ repetableStates = _this$getFieldsForDef3 === void 0 ? null : _this$getFieldsForDef3;
1733
1802
  var newThemeValue = themeValue === null && themeBackground !== null ? {} : themeValue;
1734
1803
  if (themeBackground !== null && typeof newThemeValue.background !== 'undefined') {
1735
1804
  newThemeValue.background = _objectSpread(_objectSpread({}, themeBackground), newThemeValue.background);
@@ -1738,23 +1807,33 @@ var ThemeParser = /*#__PURE__*/function () {
1738
1807
  }
1739
1808
  var newScreenValue = Object.keys(value).reduce(function (currentValue, key) {
1740
1809
  var repetableState = null;
1741
- if (repetableStates.length > 0) {
1810
+ if (repetableStates !== null && repetableStates.length > 0) {
1742
1811
  repetableState = repetableStates.find(function (_ref7) {
1743
1812
  var _ref7$id = _ref7.id,
1744
1813
  stateId = _ref7$id === void 0 ? null : _ref7$id;
1745
1814
  return stateId !== null && stateId === key;
1746
1815
  }) || null;
1747
1816
  }
1748
- var fieldDefinition = finalFields.find(function (it) {
1817
+ var fieldDefinition = (fields || null).find(function (it) {
1749
1818
  return it.name === key;
1750
1819
  }) || repetableState || {};
1751
1820
  var fieldValue = value[key];
1752
1821
  var fieldThemeValue = newThemeValue !== null ? newThemeValue[key] || null : null;
1753
1822
 
1823
+ // Try for early return
1824
+ var _ref8 = fieldDefinition || {},
1825
+ _ref8$theme = _ref8.theme,
1826
+ theme = _ref8$theme === void 0 ? null : _ref8$theme;
1827
+ if ((theme === null || !isObject(theme)) && fields === null) {
1828
+ return _objectSpread(_objectSpread({}, currentValue), {}, _defineProperty({}, key, fieldValue));
1829
+ }
1830
+
1754
1831
  // console.log('start', key, fieldValue);
1755
1832
  var newFieldValue = _this2.parseField(fieldValue, fieldDefinition, fieldThemeValue, themeColors, themeTextStyles, themeBoxStyles);
1756
1833
  // console.log('result', newFieldValue);
1757
1834
 
1835
+ // const newFieldValue = fieldValue;
1836
+
1758
1837
  // Only switch field if it has changed
1759
1838
  return newFieldValue !== fieldValue ? _objectSpread(_objectSpread({}, currentValue), {}, _defineProperty({}, key, newFieldValue)) : currentValue;
1760
1839
  }, value);
@@ -1764,12 +1843,14 @@ var ThemeParser = /*#__PURE__*/function () {
1764
1843
  // eslint-disable-next-line class-methods-use-this
1765
1844
  }, {
1766
1845
  key: "parseField",
1767
- value: function parseField(value, definition, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1846
+ value: function parseField(value, fieldDefinition, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1768
1847
  var _this3 = this;
1769
- var _definition$theme = definition.theme,
1770
- fieldTheme = _definition$theme === void 0 ? null : _definition$theme,
1771
- _definition$fields = definition.fields,
1772
- definitionFields = _definition$fields === void 0 ? null : _definition$fields;
1848
+ var _fieldDefinition$them = fieldDefinition.theme,
1849
+ fieldTheme = _fieldDefinition$them === void 0 ? null : _fieldDefinition$them,
1850
+ _fieldDefinition$fiel = fieldDefinition.fields,
1851
+ definitionFields = _fieldDefinition$fiel === void 0 ? null : _fieldDefinition$fiel;
1852
+
1853
+ // There are sub-fields in this definition
1773
1854
  if (definitionFields !== null && value !== null) {
1774
1855
  return isArray(value) ? value.map(function (innerFieldValue) {
1775
1856
  if (innerFieldValue === null) {
@@ -1792,13 +1873,13 @@ var ThemeParser = /*#__PURE__*/function () {
1792
1873
  if (!isObject(innerField[innerFieldName])) {
1793
1874
  return newInnerField;
1794
1875
  }
1795
- var _ref8 = fieldTheme[innerFieldName] || {},
1796
- _ref8$textStyle = _ref8.textStyle,
1797
- innerFieldTextStyle = _ref8$textStyle === void 0 ? null : _ref8$textStyle,
1798
- _ref8$color = _ref8.color,
1799
- innerFieldColor = _ref8$color === void 0 ? null : _ref8$color,
1800
- _ref8$boxStyle = _ref8.boxStyle,
1801
- innerFieldBoxStyle = _ref8$boxStyle === void 0 ? null : _ref8$boxStyle;
1876
+ var _ref9 = fieldTheme[innerFieldName] || {},
1877
+ _ref9$textStyle = _ref9.textStyle,
1878
+ innerFieldTextStyle = _ref9$textStyle === void 0 ? null : _ref9$textStyle,
1879
+ _ref9$color = _ref9.color,
1880
+ innerFieldColor = _ref9$color === void 0 ? null : _ref9$color,
1881
+ _ref9$boxStyle = _ref9.boxStyle,
1882
+ innerFieldBoxStyle = _ref9$boxStyle === void 0 ? null : _ref9$boxStyle;
1802
1883
 
1803
1884
  // Early return, no theme
1804
1885
  if (innerFieldTextStyle === null && innerFieldColor === null && innerFieldBoxStyle === null) {
@@ -1838,9 +1919,9 @@ var ThemeParser = /*#__PURE__*/function () {
1838
1919
  var innerDefinition = isArray(fieldsOrDefinition) ? fieldsOrDefinition.find(function (it) {
1839
1920
  return it.name === innerFieldName;
1840
1921
  }) || null : fieldsOrDefinition;
1841
- var _ref9 = innerDefinition || {},
1842
- _ref9$theme = _ref9.theme,
1843
- idfTheme = _ref9$theme === void 0 ? null : _ref9$theme;
1922
+ var _ref10 = innerDefinition || {},
1923
+ _ref10$theme = _ref10.theme,
1924
+ idfTheme = _ref10$theme === void 0 ? null : _ref10$theme;
1844
1925
  var innerValue = value[innerFieldName];
1845
1926
 
1846
1927
  // For items fields
@@ -1871,14 +1952,14 @@ var ThemeParser = /*#__PURE__*/function () {
1871
1952
  var _this5 = this;
1872
1953
  if (isObject(initialValue) || isObject(fieldTheme)) {
1873
1954
  var value = initialValue || null;
1874
- var _ref10 = fieldTheme || {},
1875
- _ref10$textStyle = _ref10.textStyle,
1876
- fieldTextStyleName = _ref10$textStyle === void 0 ? null : _ref10$textStyle,
1877
- _ref10$color = _ref10.color,
1878
- fieldColorName = _ref10$color === void 0 ? null : _ref10$color,
1879
- _ref10$boxStyle = _ref10.boxStyle,
1880
- fieldBoxStyleName = _ref10$boxStyle === void 0 ? null : _ref10$boxStyle,
1881
- otherProps = _objectWithoutProperties(_ref10, _excluded$1);
1955
+ var _ref11 = fieldTheme || {},
1956
+ _ref11$textStyle = _ref11.textStyle,
1957
+ fieldTextStyleName = _ref11$textStyle === void 0 ? null : _ref11$textStyle,
1958
+ _ref11$color = _ref11.color,
1959
+ fieldColorName = _ref11$color === void 0 ? null : _ref11$color,
1960
+ _ref11$boxStyle = _ref11.boxStyle,
1961
+ fieldBoxStyleName = _ref11$boxStyle === void 0 ? null : _ref11$boxStyle,
1962
+ otherProps = _objectWithoutProperties(_ref11, _excluded$1);
1882
1963
  if (fieldTextStyleName === null && fieldColorName === null && fieldBoxStyleName === null && isEmpty(otherProps) && !isObject(fieldTheme)) {
1883
1964
  return value;
1884
1965
  }
@@ -1890,11 +1971,11 @@ var ThemeParser = /*#__PURE__*/function () {
1890
1971
  return _objectSpread(_objectSpread({}, newObject), newValue !== null ? _defineProperty({}, key, newValue) : null);
1891
1972
  }, {});
1892
1973
  }
1893
- var _ref12 = value || {},
1894
- _ref12$textStyle = _ref12.textStyle,
1895
- valueTextStyle = _ref12$textStyle === void 0 ? null : _ref12$textStyle,
1896
- _ref12$boxStyle = _ref12.boxStyle,
1897
- valueBoxStyle = _ref12$boxStyle === void 0 ? null : _ref12$boxStyle;
1974
+ var _ref13 = value || {},
1975
+ _ref13$textStyle = _ref13.textStyle,
1976
+ valueTextStyle = _ref13$textStyle === void 0 ? null : _ref13$textStyle,
1977
+ _ref13$boxStyle = _ref13.boxStyle,
1978
+ valueBoxStyle = _ref13$boxStyle === void 0 ? null : _ref13$boxStyle;
1898
1979
 
1899
1980
  // Color
1900
1981
  var fieldColor = fieldColorName !== null && themeColors !== null ? themeColors[fieldColorName] || null : null;
package/lib/components.js CHANGED
@@ -19,6 +19,7 @@ var hooks = require('@micromag/core/hooks');
19
19
  var contexts = require('@micromag/core/contexts');
20
20
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
21
21
  var get = require('lodash/get');
22
+ var queryString = require('query-string');
22
23
  var ReactDOM = require('react-dom');
23
24
  var isArray = require('lodash/isArray');
24
25
  var faAngleDown = require('@fortawesome/free-solid-svg-icons/faAngleDown');
@@ -76,6 +77,7 @@ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumab
76
77
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
77
78
  var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
78
79
  var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
80
+ var queryString__default = /*#__PURE__*/_interopDefaultLegacy(queryString);
79
81
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
80
82
  var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
81
83
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
@@ -1595,8 +1597,12 @@ var messages = reactIntl.defineMessages({
1595
1597
  });
1596
1598
  var propTypes$x = {
1597
1599
  page: PropTypes__default["default"].number,
1600
+ lastPage: PropTypes__default["default"].number,
1601
+ maxPages: PropTypes__default["default"].number,
1598
1602
  total: PropTypes__default["default"].number,
1599
1603
  url: PropTypes__default["default"].string,
1604
+ query: PropTypes__default["default"].object,
1605
+ // eslint-disable-line react/forbid-prop-types
1600
1606
  withPreviousNext: PropTypes__default["default"].bool,
1601
1607
  className: PropTypes__default["default"].string,
1602
1608
  paginationClassName: PropTypes__default["default"].string,
@@ -1606,8 +1612,11 @@ var propTypes$x = {
1606
1612
  };
1607
1613
  var defaultProps$x = {
1608
1614
  page: 1,
1615
+ lastPage: 1,
1616
+ maxPages: 10,
1609
1617
  total: 1,
1610
1618
  url: null,
1619
+ query: null,
1611
1620
  withPreviousNext: false,
1612
1621
  className: null,
1613
1622
  paginationClassName: null,
@@ -1616,9 +1625,12 @@ var defaultProps$x = {
1616
1625
  onClickPage: null
1617
1626
  };
1618
1627
  var PaginationMenu = function PaginationMenu(_ref) {
1619
- var page = _ref.page,
1620
- total = _ref.total,
1628
+ var parentPage = _ref.page,
1629
+ parentLastPage = _ref.lastPage,
1630
+ parentMaxPages = _ref.maxPages,
1631
+ parentTotal = _ref.total,
1621
1632
  url = _ref.url,
1633
+ query = _ref.query,
1622
1634
  withPreviousNext = _ref.withPreviousNext,
1623
1635
  className = _ref.className,
1624
1636
  paginationClassName = _ref.paginationClassName,
@@ -1626,11 +1638,38 @@ var PaginationMenu = function PaginationMenu(_ref) {
1626
1638
  linkClassName = _ref.linkClassName,
1627
1639
  onClickPage = _ref.onClickPage;
1628
1640
  var getUrl = React.useCallback(function (currentPage) {
1629
- return url !== null ? "".concat(url).concat(url.indexOf('?') !== -1 ? "&page=".concat(currentPage) : "?page=".concat(currentPage)) : null;
1630
- }, [url]);
1631
- var pages = _toConsumableArray__default["default"](Array(total).keys()).map(function (it) {
1632
- return it + 1;
1641
+ return url !== null ? "".concat(url, "?").concat(queryString__default["default"].stringify(_objectSpread__default["default"](_objectSpread__default["default"]({}, query), {}, {
1642
+ page: currentPage
1643
+ }), {
1644
+ arrayFormat: 'bracket'
1645
+ })) : null;
1646
+ }, [url, query]);
1647
+
1648
+ // TODO: test this
1649
+ // const pages = [...Array(total).keys()].map((it) => it + 1);
1650
+
1651
+ var page = parseInt(parentPage, 10);
1652
+ var total = parseInt(parentTotal, 10);
1653
+ var maxPages = parseInt(parentMaxPages, 10);
1654
+ var lastPage = parseInt(parentLastPage, 10);
1655
+ var pageNumbers = Array.from({
1656
+ length: parseInt(lastPage, 10)
1657
+ }, function (_, i) {
1658
+ return i + 1;
1633
1659
  });
1660
+ var stripPages = maxPages !== null && lastPage > maxPages;
1661
+ var startPage = stripPages ? Math.min(Math.max(page - maxPages / 2, 1), lastPage - maxPages) : null;
1662
+ var endPage = stripPages ? startPage + maxPages : null;
1663
+ var strippedPages = stripPages ? pageNumbers.reduce(function (selectedPages, pageNumber) {
1664
+ if (pageNumber === 1 && startPage - 1 > 1) {
1665
+ return [pageNumber, '...'];
1666
+ }
1667
+ if (pageNumber === lastPage && endPage + 1 < lastPage) {
1668
+ return [].concat(_toConsumableArray__default["default"](selectedPages), ['...', pageNumber]);
1669
+ }
1670
+ return pageNumber >= startPage && pageNumber <= endPage ? [].concat(_toConsumableArray__default["default"](selectedPages), [pageNumber]) : selectedPages;
1671
+ }, []) : pageNumbers;
1672
+ var pages = strippedPages.length > 0 ? strippedPages : [1];
1634
1673
  return /*#__PURE__*/React__default["default"].createElement("nav", {
1635
1674
  className: classNames__default["default"]([styles$p.container, _defineProperty__default["default"]({}, className, className !== null)])
1636
1675
  }, /*#__PURE__*/React__default["default"].createElement("ul", {
@@ -3868,7 +3907,7 @@ var Placeholder = /*#__PURE__*/React__default["default"].memo(ScreenPlaceholder)
3868
3907
 
3869
3908
  var styles$6 = {"stack":"micromag-core-screens-preview-stack","stackScreen":"micromag-core-screens-preview-stackScreen","stackItem":"micromag-core-screens-preview-stackItem","screen":"micromag-core-screens-preview-screen"};
3870
3909
 
3871
- var _excluded = ["screen", "screenState", "width", "height", "screenWidth", "screenHeight", "className", "withSize"];
3910
+ var _excluded = ["screen", "screenState", "width", "height", "screenWidth", "screenHeight", "className", "withSize", "hidden"];
3872
3911
  var propTypes$7 = {
3873
3912
  screen: core.PropTypes.component.isRequired,
3874
3913
  screenState: PropTypes__default["default"].string,
@@ -3877,7 +3916,8 @@ var propTypes$7 = {
3877
3916
  screenWidth: PropTypes__default["default"].number,
3878
3917
  screenHeight: PropTypes__default["default"].number,
3879
3918
  className: PropTypes__default["default"].string,
3880
- withSize: PropTypes__default["default"].bool
3919
+ withSize: PropTypes__default["default"].bool,
3920
+ hidden: PropTypes__default["default"].bool
3881
3921
  };
3882
3922
  var defaultProps$7 = {
3883
3923
  screenState: null,
@@ -3886,7 +3926,8 @@ var defaultProps$7 = {
3886
3926
  screenWidth: undefined,
3887
3927
  screenHeight: undefined,
3888
3928
  className: null,
3889
- withSize: false
3929
+ withSize: false,
3930
+ hidden: false
3890
3931
  };
3891
3932
  var ScreenPreview = function ScreenPreview(_ref) {
3892
3933
  var screen = _ref.screen,
@@ -3897,6 +3938,7 @@ var ScreenPreview = function ScreenPreview(_ref) {
3897
3938
  screenHeight = _ref.screenHeight,
3898
3939
  className = _ref.className,
3899
3940
  withSize = _ref.withSize,
3941
+ hidden = _ref.hidden,
3900
3942
  props = _objectWithoutProperties__default["default"](_ref, _excluded);
3901
3943
  var screenElement = /*#__PURE__*/React__default["default"].createElement(Screen$1, Object.assign({
3902
3944
  screen: screen,
@@ -3906,13 +3948,14 @@ var ScreenPreview = function ScreenPreview(_ref) {
3906
3948
  height: !withSize ? height : undefined,
3907
3949
  className: classNames__default["default"]([styles$6.screen, _defineProperty__default["default"]({}, className, !withSize)])
3908
3950
  }, props));
3951
+ var element = !hidden ? screenElement : /*#__PURE__*/React__default["default"].createElement("div", null);
3909
3952
  var screenWithSize = withSize ? /*#__PURE__*/React__default["default"].createElement(ScreenSizer, {
3910
3953
  className: className,
3911
3954
  screenWidth: screenWidth,
3912
3955
  screenHeight: screenHeight,
3913
3956
  width: width,
3914
3957
  height: height
3915
- }, screenElement) : screenElement;
3958
+ }, element) : element;
3916
3959
  return screenWithSize;
3917
3960
  };
3918
3961
  ScreenPreview.propTypes = propTypes$7;
package/lib/index.js CHANGED
@@ -1183,7 +1183,8 @@ var FieldsManager = /*#__PURE__*/function (_DefinitionsManager) {
1183
1183
  return FieldsManager;
1184
1184
  }(DefinitionsManager);
1185
1185
 
1186
- var _excluded$4 = ["medias"];
1186
+ var _excluded$4 = ["medias"],
1187
+ _excluded2$2 = ["medias"];
1187
1188
  var MediasParser = /*#__PURE__*/function () {
1188
1189
  function MediasParser(_ref) {
1189
1190
  var fieldsManager = _ref.fieldsManager,
@@ -1192,8 +1193,23 @@ var MediasParser = /*#__PURE__*/function () {
1192
1193
  this.fieldsManager = fieldsManager;
1193
1194
  this.screensManager = screensManager;
1194
1195
  this.fieldsPatternCache = {};
1196
+ this.parsedThemesCache = {};
1195
1197
  }
1196
1198
  _createClass__default["default"](MediasParser, [{
1199
+ key: "getParsedStoryTheme",
1200
+ value: function getParsedStoryTheme(storyId, theme) {
1201
+ if (typeof this.parsedThemesCache[storyId] === 'undefined') {
1202
+ var _this$toPath = this.toPath(theme),
1203
+ themeMedias = _this$toPath.medias,
1204
+ newTheme = _objectWithoutProperties__default["default"](_this$toPath, _excluded$4);
1205
+ this.parsedThemesCache[storyId] = {
1206
+ themeMedias: themeMedias,
1207
+ newTheme: newTheme
1208
+ };
1209
+ }
1210
+ return this.parsedThemesCache[storyId];
1211
+ }
1212
+ }, {
1197
1213
  key: "getFieldsPatternByScreen",
1198
1214
  value: function getFieldsPatternByScreen(type) {
1199
1215
  if (typeof this.fieldsPatternCache[type] === 'undefined') {
@@ -1214,6 +1230,8 @@ var MediasParser = /*#__PURE__*/function () {
1214
1230
  return story;
1215
1231
  }
1216
1232
  var _ref3 = story || {},
1233
+ _ref3$id = _ref3.id,
1234
+ storyId = _ref3$id === void 0 ? null : _ref3$id,
1217
1235
  _ref3$theme = _ref3.theme,
1218
1236
  theme = _ref3$theme === void 0 ? null : _ref3$theme,
1219
1237
  _ref3$components = _ref3.components,
@@ -1237,9 +1255,9 @@ var MediasParser = /*#__PURE__*/function () {
1237
1255
  newComponents = _components$reduce.components,
1238
1256
  medias = _components$reduce.medias;
1239
1257
  if (theme !== null) {
1240
- var _this$toPath = this.toPath(theme),
1241
- themeMedias = _this$toPath.medias,
1242
- newTheme = _objectWithoutProperties__default["default"](_this$toPath, _excluded$4);
1258
+ var _this$getParsedStoryT = this.getParsedStoryTheme(storyId, theme),
1259
+ themeMedias = _this$getParsedStoryT.medias,
1260
+ newTheme = _objectWithoutProperties__default["default"](_this$getParsedStoryT, _excluded2$2);
1243
1261
  return medias !== null || themeMedias !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, story), {}, {
1244
1262
  theme: newTheme,
1245
1263
  components: newComponents,
@@ -1668,6 +1686,7 @@ var ThemeParser = /*#__PURE__*/function () {
1668
1686
  _classCallCheck__default["default"](this, ThemeParser);
1669
1687
  this.screensManager = screensManager;
1670
1688
  this.definitionCache = {};
1689
+ this.fieldsCache = {};
1671
1690
  }
1672
1691
  _createClass__default["default"](ThemeParser, [{
1673
1692
  key: "getDefinitionByScreen",
@@ -1684,6 +1703,54 @@ var ThemeParser = /*#__PURE__*/function () {
1684
1703
  }
1685
1704
  return this.definitionCache[type];
1686
1705
  }
1706
+ }, {
1707
+ key: "getFieldsForDefinition",
1708
+ value: function getFieldsForDefinition(definition) {
1709
+ var _ref2 = definition || {},
1710
+ _ref2$id = _ref2.id,
1711
+ definitionId = _ref2$id === void 0 ? null : _ref2$id,
1712
+ _ref2$fields = _ref2.fields,
1713
+ fields = _ref2$fields === void 0 ? [] : _ref2$fields,
1714
+ _ref2$states = _ref2.states,
1715
+ states = _ref2$states === void 0 ? [] : _ref2$states;
1716
+ if (typeof this.fieldsCache[definitionId] === 'undefined') {
1717
+ if (states === null || states.length === 0) {
1718
+ this.fieldsCache[definitionId] = {
1719
+ fields: fields
1720
+ };
1721
+ } else {
1722
+ // TODO: test this
1723
+ var finalFields = fields;
1724
+ var repetableStates = [];
1725
+ if (states !== null && states.length > 0) {
1726
+ var nonRepetableStates = states.filter(function (_ref3) {
1727
+ var _ref3$repeatable = _ref3.repeatable,
1728
+ repeatable = _ref3$repeatable === void 0 ? false : _ref3$repeatable;
1729
+ return repeatable === false;
1730
+ });
1731
+ repetableStates = states.filter(function (_ref4) {
1732
+ var _ref4$repeatable = _ref4.repeatable,
1733
+ repeatable = _ref4$repeatable === void 0 ? false : _ref4$repeatable;
1734
+ return repeatable === true;
1735
+ });
1736
+ finalFields = nonRepetableStates.reduce(function (acc, it) {
1737
+ var _ref5 = it || {},
1738
+ _ref5$fields = _ref5.fields,
1739
+ itemFields = _ref5$fields === void 0 ? [] : _ref5$fields;
1740
+ if (itemFields !== null && itemFields.length > 0) {
1741
+ return acc.concat(itemFields);
1742
+ }
1743
+ return acc;
1744
+ }, finalFields);
1745
+ }
1746
+ this.fieldsCache[definitionId] = {
1747
+ fields: finalFields,
1748
+ repetableStates: repetableStates
1749
+ };
1750
+ }
1751
+ }
1752
+ return this.fieldsCache[definitionId];
1753
+ }
1687
1754
  }, {
1688
1755
  key: "parse",
1689
1756
  value: function parse(story) {
@@ -1691,11 +1758,11 @@ var ThemeParser = /*#__PURE__*/function () {
1691
1758
  if (story === null) {
1692
1759
  return story;
1693
1760
  }
1694
- var _ref2 = story || {},
1695
- _ref2$theme = _ref2.theme,
1696
- theme = _ref2$theme === void 0 ? null : _ref2$theme,
1697
- _ref2$components = _ref2.components,
1698
- components = _ref2$components === void 0 ? null : _ref2$components;
1761
+ var _ref6 = story || {},
1762
+ _ref6$theme = _ref6.theme,
1763
+ theme = _ref6$theme === void 0 ? null : _ref6$theme,
1764
+ _ref6$components = _ref6.components,
1765
+ components = _ref6$components === void 0 ? null : _ref6$components;
1699
1766
  if (theme === null || components === null) {
1700
1767
  return story;
1701
1768
  }
@@ -1709,6 +1776,33 @@ var ThemeParser = /*#__PURE__*/function () {
1709
1776
  themeTextStyles = _theme$textStyles === void 0 ? null : _theme$textStyles,
1710
1777
  _theme$boxStyles = theme.boxStyles,
1711
1778
  themeBoxStyles = _theme$boxStyles === void 0 ? null : _theme$boxStyles;
1779
+
1780
+ // Speed test
1781
+ // const newComponents = [...components];
1782
+ // for (let index = 0; index < components.length; index += 1) {
1783
+ // const screen = components[index] || {};
1784
+ // const { type } = screen;
1785
+ // const { definition, themeScreen } = this.getDefinitionByScreen(type, themeComponents);
1786
+ // const newScreen = this.parseScreen(
1787
+ // definition,
1788
+ // screen,
1789
+ // themeScreen,
1790
+ // themeBackground,
1791
+ // themeColors,
1792
+ // themeTextStyles,
1793
+ // themeBoxStyles,
1794
+ // );
1795
+
1796
+ // if (newScreen !== screen || themeScreen !== null) {
1797
+ // newComponents[index] = {
1798
+ // ...themeScreen,
1799
+ // ...newScreen,
1800
+ // };
1801
+ // }
1802
+ // }
1803
+ // story.components = newComponents;
1804
+ // return story;
1805
+
1712
1806
  var newComponents = components.reduce(function (currentComponents, screen, index) {
1713
1807
  var type = screen.type;
1714
1808
  var _this$getDefinitionBy = _this.getDefinitionByScreen(type, themeComponents),
@@ -1727,36 +1821,11 @@ var ThemeParser = /*#__PURE__*/function () {
1727
1821
  key: "parseScreen",
1728
1822
  value: function parseScreen(definition, value, themeValue, themeBackground, themeColors, themeTextStyles, themeBoxStyles) {
1729
1823
  var _this2 = this;
1730
- var _ref3 = definition || {},
1731
- _ref3$fields = _ref3.fields,
1732
- fields = _ref3$fields === void 0 ? [] : _ref3$fields,
1733
- _ref3$states = _ref3.states,
1734
- states = _ref3$states === void 0 ? [] : _ref3$states;
1735
-
1736
- // TODO: test this
1737
- var finalFields = fields;
1738
- var repetableStates = [];
1739
- if (states !== null && states.length > 0) {
1740
- var nonRepetableStates = states.filter(function (_ref4) {
1741
- var _ref4$repeatable = _ref4.repeatable,
1742
- repeatable = _ref4$repeatable === void 0 ? false : _ref4$repeatable;
1743
- return repeatable === false;
1744
- });
1745
- repetableStates = states.filter(function (_ref5) {
1746
- var _ref5$repeatable = _ref5.repeatable,
1747
- repeatable = _ref5$repeatable === void 0 ? false : _ref5$repeatable;
1748
- return repeatable === true;
1749
- });
1750
- finalFields = nonRepetableStates.reduce(function (acc, it) {
1751
- var _ref6 = it || {},
1752
- _ref6$fields = _ref6.fields,
1753
- itemFields = _ref6$fields === void 0 ? [] : _ref6$fields;
1754
- if (itemFields !== null && itemFields.length > 0) {
1755
- return acc.concat(itemFields);
1756
- }
1757
- return acc;
1758
- }, finalFields);
1759
- }
1824
+ var _this$getFieldsForDef = this.getFieldsForDefinition(definition),
1825
+ _this$getFieldsForDef2 = _this$getFieldsForDef.fields,
1826
+ fields = _this$getFieldsForDef2 === void 0 ? null : _this$getFieldsForDef2,
1827
+ _this$getFieldsForDef3 = _this$getFieldsForDef.repetableStates,
1828
+ repetableStates = _this$getFieldsForDef3 === void 0 ? null : _this$getFieldsForDef3;
1760
1829
  var newThemeValue = themeValue === null && themeBackground !== null ? {} : themeValue;
1761
1830
  if (themeBackground !== null && typeof newThemeValue.background !== 'undefined') {
1762
1831
  newThemeValue.background = _objectSpread__default["default"](_objectSpread__default["default"]({}, themeBackground), newThemeValue.background);
@@ -1765,23 +1834,33 @@ var ThemeParser = /*#__PURE__*/function () {
1765
1834
  }
1766
1835
  var newScreenValue = Object.keys(value).reduce(function (currentValue, key) {
1767
1836
  var repetableState = null;
1768
- if (repetableStates.length > 0) {
1837
+ if (repetableStates !== null && repetableStates.length > 0) {
1769
1838
  repetableState = repetableStates.find(function (_ref7) {
1770
1839
  var _ref7$id = _ref7.id,
1771
1840
  stateId = _ref7$id === void 0 ? null : _ref7$id;
1772
1841
  return stateId !== null && stateId === key;
1773
1842
  }) || null;
1774
1843
  }
1775
- var fieldDefinition = finalFields.find(function (it) {
1844
+ var fieldDefinition = (fields || null).find(function (it) {
1776
1845
  return it.name === key;
1777
1846
  }) || repetableState || {};
1778
1847
  var fieldValue = value[key];
1779
1848
  var fieldThemeValue = newThemeValue !== null ? newThemeValue[key] || null : null;
1780
1849
 
1850
+ // Try for early return
1851
+ var _ref8 = fieldDefinition || {},
1852
+ _ref8$theme = _ref8.theme,
1853
+ theme = _ref8$theme === void 0 ? null : _ref8$theme;
1854
+ if ((theme === null || !isObject__default["default"](theme)) && fields === null) {
1855
+ return _objectSpread__default["default"](_objectSpread__default["default"]({}, currentValue), {}, _defineProperty__default["default"]({}, key, fieldValue));
1856
+ }
1857
+
1781
1858
  // console.log('start', key, fieldValue);
1782
1859
  var newFieldValue = _this2.parseField(fieldValue, fieldDefinition, fieldThemeValue, themeColors, themeTextStyles, themeBoxStyles);
1783
1860
  // console.log('result', newFieldValue);
1784
1861
 
1862
+ // const newFieldValue = fieldValue;
1863
+
1785
1864
  // Only switch field if it has changed
1786
1865
  return newFieldValue !== fieldValue ? _objectSpread__default["default"](_objectSpread__default["default"]({}, currentValue), {}, _defineProperty__default["default"]({}, key, newFieldValue)) : currentValue;
1787
1866
  }, value);
@@ -1791,12 +1870,14 @@ var ThemeParser = /*#__PURE__*/function () {
1791
1870
  // eslint-disable-next-line class-methods-use-this
1792
1871
  }, {
1793
1872
  key: "parseField",
1794
- value: function parseField(value, definition, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1873
+ value: function parseField(value, fieldDefinition, themeValue, themeColors, themeTextStyles, themeBoxStyles) {
1795
1874
  var _this3 = this;
1796
- var _definition$theme = definition.theme,
1797
- fieldTheme = _definition$theme === void 0 ? null : _definition$theme,
1798
- _definition$fields = definition.fields,
1799
- definitionFields = _definition$fields === void 0 ? null : _definition$fields;
1875
+ var _fieldDefinition$them = fieldDefinition.theme,
1876
+ fieldTheme = _fieldDefinition$them === void 0 ? null : _fieldDefinition$them,
1877
+ _fieldDefinition$fiel = fieldDefinition.fields,
1878
+ definitionFields = _fieldDefinition$fiel === void 0 ? null : _fieldDefinition$fiel;
1879
+
1880
+ // There are sub-fields in this definition
1800
1881
  if (definitionFields !== null && value !== null) {
1801
1882
  return isArray__default["default"](value) ? value.map(function (innerFieldValue) {
1802
1883
  if (innerFieldValue === null) {
@@ -1819,13 +1900,13 @@ var ThemeParser = /*#__PURE__*/function () {
1819
1900
  if (!isObject__default["default"](innerField[innerFieldName])) {
1820
1901
  return newInnerField;
1821
1902
  }
1822
- var _ref8 = fieldTheme[innerFieldName] || {},
1823
- _ref8$textStyle = _ref8.textStyle,
1824
- innerFieldTextStyle = _ref8$textStyle === void 0 ? null : _ref8$textStyle,
1825
- _ref8$color = _ref8.color,
1826
- innerFieldColor = _ref8$color === void 0 ? null : _ref8$color,
1827
- _ref8$boxStyle = _ref8.boxStyle,
1828
- innerFieldBoxStyle = _ref8$boxStyle === void 0 ? null : _ref8$boxStyle;
1903
+ var _ref9 = fieldTheme[innerFieldName] || {},
1904
+ _ref9$textStyle = _ref9.textStyle,
1905
+ innerFieldTextStyle = _ref9$textStyle === void 0 ? null : _ref9$textStyle,
1906
+ _ref9$color = _ref9.color,
1907
+ innerFieldColor = _ref9$color === void 0 ? null : _ref9$color,
1908
+ _ref9$boxStyle = _ref9.boxStyle,
1909
+ innerFieldBoxStyle = _ref9$boxStyle === void 0 ? null : _ref9$boxStyle;
1829
1910
 
1830
1911
  // Early return, no theme
1831
1912
  if (innerFieldTextStyle === null && innerFieldColor === null && innerFieldBoxStyle === null) {
@@ -1865,9 +1946,9 @@ var ThemeParser = /*#__PURE__*/function () {
1865
1946
  var innerDefinition = isArray__default["default"](fieldsOrDefinition) ? fieldsOrDefinition.find(function (it) {
1866
1947
  return it.name === innerFieldName;
1867
1948
  }) || null : fieldsOrDefinition;
1868
- var _ref9 = innerDefinition || {},
1869
- _ref9$theme = _ref9.theme,
1870
- idfTheme = _ref9$theme === void 0 ? null : _ref9$theme;
1949
+ var _ref10 = innerDefinition || {},
1950
+ _ref10$theme = _ref10.theme,
1951
+ idfTheme = _ref10$theme === void 0 ? null : _ref10$theme;
1871
1952
  var innerValue = value[innerFieldName];
1872
1953
 
1873
1954
  // For items fields
@@ -1898,14 +1979,14 @@ var ThemeParser = /*#__PURE__*/function () {
1898
1979
  var _this5 = this;
1899
1980
  if (isObject__default["default"](initialValue) || isObject__default["default"](fieldTheme)) {
1900
1981
  var value = initialValue || null;
1901
- var _ref10 = fieldTheme || {},
1902
- _ref10$textStyle = _ref10.textStyle,
1903
- fieldTextStyleName = _ref10$textStyle === void 0 ? null : _ref10$textStyle,
1904
- _ref10$color = _ref10.color,
1905
- fieldColorName = _ref10$color === void 0 ? null : _ref10$color,
1906
- _ref10$boxStyle = _ref10.boxStyle,
1907
- fieldBoxStyleName = _ref10$boxStyle === void 0 ? null : _ref10$boxStyle,
1908
- otherProps = _objectWithoutProperties__default["default"](_ref10, _excluded$1);
1982
+ var _ref11 = fieldTheme || {},
1983
+ _ref11$textStyle = _ref11.textStyle,
1984
+ fieldTextStyleName = _ref11$textStyle === void 0 ? null : _ref11$textStyle,
1985
+ _ref11$color = _ref11.color,
1986
+ fieldColorName = _ref11$color === void 0 ? null : _ref11$color,
1987
+ _ref11$boxStyle = _ref11.boxStyle,
1988
+ fieldBoxStyleName = _ref11$boxStyle === void 0 ? null : _ref11$boxStyle,
1989
+ otherProps = _objectWithoutProperties__default["default"](_ref11, _excluded$1);
1909
1990
  if (fieldTextStyleName === null && fieldColorName === null && fieldBoxStyleName === null && isEmpty__default["default"](otherProps) && !isObject__default["default"](fieldTheme)) {
1910
1991
  return value;
1911
1992
  }
@@ -1917,11 +1998,11 @@ var ThemeParser = /*#__PURE__*/function () {
1917
1998
  return _objectSpread__default["default"](_objectSpread__default["default"]({}, newObject), newValue !== null ? _defineProperty__default["default"]({}, key, newValue) : null);
1918
1999
  }, {});
1919
2000
  }
1920
- var _ref12 = value || {},
1921
- _ref12$textStyle = _ref12.textStyle,
1922
- valueTextStyle = _ref12$textStyle === void 0 ? null : _ref12$textStyle,
1923
- _ref12$boxStyle = _ref12.boxStyle,
1924
- valueBoxStyle = _ref12$boxStyle === void 0 ? null : _ref12$boxStyle;
2001
+ var _ref13 = value || {},
2002
+ _ref13$textStyle = _ref13.textStyle,
2003
+ valueTextStyle = _ref13$textStyle === void 0 ? null : _ref13$textStyle,
2004
+ _ref13$boxStyle = _ref13.boxStyle,
2005
+ valueBoxStyle = _ref13$boxStyle === void 0 ? null : _ref13$boxStyle;
1925
2006
 
1926
2007
  // Color
1927
2008
  var fieldColor = fieldColorName !== null && themeColors !== null ? themeColors[fieldColorName] || null : null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.418",
3
+ "version": "0.3.423",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -119,6 +119,7 @@
119
119
  "lodash": "^4.17.21",
120
120
  "param-case": "^3.0.4",
121
121
  "prop-types": "^15.7.2",
122
+ "query-string": "^6.13.7",
122
123
  "raf": "^3.4.1",
123
124
  "react-helmet": "^6.1.0",
124
125
  "react-intl": "^5.12.1",
@@ -136,5 +137,5 @@
136
137
  "access": "public",
137
138
  "registry": "https://registry.npmjs.org/"
138
139
  },
139
- "gitHead": "b88d067aa5c016ffdbc031902e1c387160d51f9b"
140
+ "gitHead": "c02e69c23fd099d5684bc0b69e02f19825cecfd2"
140
141
  }