@micromag/editor 0.2.409 → 0.2.410

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/lib/index.js CHANGED
@@ -810,6 +810,8 @@ var useThemeValue = function useThemeValue(value) {
810
810
  return valueWithTheme;
811
811
  };
812
812
 
813
+ var styles$a = {"container":"micromag-editor-menus-devices-container","button":"micromag-editor-menus-devices-button"};
814
+
813
815
  /* eslint-disable react/button-has-type, react/jsx-props-no-spreading */
814
816
  var propTypes$h = {
815
817
  color: PropTypes__default["default"].string,
@@ -882,7 +884,7 @@ var DeviceIcons = /*#__PURE__*/Object.freeze({
882
884
  Mobile: MobileIcon
883
885
  });
884
886
 
885
- var styles$a = {"container":"micromag-editor-buttons-device-container","icon":"micromag-editor-buttons-device-icon"};
887
+ var styles$9 = {"container":"micromag-editor-buttons-device-container","icon":"micromag-editor-buttons-device-icon"};
886
888
 
887
889
  var _excluded$6 = ["device", "className", "iconComponents"];
888
890
  var propTypes$f = {
@@ -903,17 +905,15 @@ var DeviceButton = function DeviceButton(_ref) {
903
905
 
904
906
  var DeviceIcon = utils.getComponentFromName(device, iconComponents, DesktopIcon);
905
907
  return /*#__PURE__*/React__default["default"].createElement(components.Button, Object.assign({
906
- className: classNames__default["default"]([styles$a.container, _defineProperty__default["default"]({}, className, className !== null)])
908
+ className: classNames__default["default"]([styles$9.container, _defineProperty__default["default"]({}, className, className !== null)])
907
909
  }, props), /*#__PURE__*/React__default["default"].createElement(DeviceIcon, {
908
- className: styles$a.icon
910
+ className: styles$9.icon
909
911
  }));
910
912
  };
911
913
 
912
914
  DeviceButton.propTypes = propTypes$f;
913
915
  DeviceButton.defaultProps = defaultProps$f;
914
916
 
915
- var styles$9 = {"container":"micromag-editor-menus-devices-container","button":"micromag-editor-menus-devices-button"};
916
-
917
917
  var _excluded$5 = ["id"];
918
918
  var propTypes$e = {
919
919
  items: core.PropTypes.menuItems,
@@ -933,7 +933,7 @@ var DevicesMenu = function DevicesMenu(_ref) {
933
933
  return /*#__PURE__*/React__default["default"].createElement(components.Tabs, {
934
934
  items: items,
935
935
  theme: "outline-secondary",
936
- className: classNames__default["default"]([styles$9.container, _defineProperty__default["default"]({}, className, className !== null)]),
936
+ className: classNames__default["default"]([styles$a.container, _defineProperty__default["default"]({}, className, className !== null)]),
937
937
  renderItemButton: function renderItemButton(item, index, props) {
938
938
  var id = item.id,
939
939
  itemProps = _objectWithoutProperties__default["default"](item, _excluded$5);
@@ -941,7 +941,7 @@ var DevicesMenu = function DevicesMenu(_ref) {
941
941
  return /*#__PURE__*/React__default["default"].createElement(DeviceButton, Object.assign({
942
942
  device: id
943
943
  }, props, itemProps, {
944
- className: styles$9.button,
944
+ className: styles$a.button,
945
945
  onClick: function onClick(e) {
946
946
  return onClickItem !== null ? onClickItem(e, item, index) : null;
947
947
  }
@@ -1264,11 +1264,9 @@ ScreenWithPreview.propTypes = propTypes$b;
1264
1264
  ScreenWithPreview.defaultProps = defaultProps$b;
1265
1265
 
1266
1266
  var iOS = /iPad|iPhone|iPod/.test(navigator.platform);
1267
-
1268
1267
  function getDragDepth(offset, indentationWidth) {
1269
1268
  return Math.round(offset / indentationWidth);
1270
1269
  }
1271
-
1272
1270
  function getMaxDepth(_ref) {
1273
1271
  var previousItem = _ref.previousItem;
1274
1272
 
@@ -1279,7 +1277,6 @@ function getMaxDepth(_ref) {
1279
1277
 
1280
1278
  return 0;
1281
1279
  }
1282
-
1283
1280
  function getMinDepth(_ref2) {
1284
1281
  var nextItem = _ref2.nextItem;
1285
1282
 
@@ -1290,7 +1287,6 @@ function getMinDepth(_ref2) {
1290
1287
 
1291
1288
  return 0;
1292
1289
  }
1293
-
1294
1290
  function getProjection(items, activeId, overId, dragOffset, indentationWidth) {
1295
1291
  var overItemIndex = items.findIndex(function (_ref3) {
1296
1292
  var id = _ref3.id;
@@ -1364,49 +1360,54 @@ function flatten(items) {
1364
1360
  function flattenTree(items) {
1365
1361
  return flatten(items);
1366
1362
  }
1363
+ function findItem(items, itemId) {
1364
+ return items.find(function (_ref5) {
1365
+ var id = _ref5.id;
1366
+ return id === itemId;
1367
+ });
1368
+ }
1367
1369
  function buildTree(flattenedItems) {
1370
+ var root = {
1371
+ id: 'root',
1372
+ children: []
1373
+ };
1374
+
1375
+ var nodes = _defineProperty__default["default"]({}, root.id, root);
1376
+
1368
1377
  var items = flattenedItems.map(function (item) {
1369
1378
  return _objectSpread__default["default"](_objectSpread__default["default"]({}, item), {}, {
1370
1379
  children: []
1371
1380
  });
1372
- });
1373
- var nodeList = items.reduce(function (acc, item) {
1374
- var _item$parentId = item.parentId,
1375
- parentId = _item$parentId === void 0 ? null : _item$parentId;
1376
-
1377
- if (parentId) {
1378
- var found = false;
1379
- var newList = acc.map(function (it) {
1380
- if (it.id === parentId) {
1381
- found = true;
1382
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, it), {}, {
1383
- children: [].concat(_toConsumableArray__default["default"](it.children), [_objectSpread__default["default"]({}, item)])
1384
- });
1385
- }
1381
+ }); // eslint-disable-next-line no-restricted-syntax
1386
1382
 
1387
- return it;
1388
- });
1383
+ var _iterator = _createForOfIteratorHelper__default["default"](items),
1384
+ _step;
1389
1385
 
1390
- if (found) {
1391
- return newList;
1392
- }
1386
+ try {
1387
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
1388
+ var _item$parentId, _nodes$parentId;
1393
1389
 
1394
- acc.push(_objectSpread__default["default"](_objectSpread__default["default"]({}, items.find(function (_ref5) {
1395
- var id = _ref5.id;
1396
- return id === parentId;
1397
- }) || null), {}, {
1398
- children: [item]
1399
- }));
1400
- return acc;
1390
+ var item = _step.value;
1391
+ var id = item.id,
1392
+ children = item.children;
1393
+ var parentId = (_item$parentId = item.parentId) !== null && _item$parentId !== void 0 ? _item$parentId : root.id;
1394
+ var parent = (_nodes$parentId = nodes[parentId]) !== null && _nodes$parentId !== void 0 ? _nodes$parentId : findItem(items, parentId);
1395
+ nodes[id] = {
1396
+ id: id,
1397
+ children: children
1398
+ };
1399
+ parent.children.push(item);
1401
1400
  }
1401
+ } catch (err) {
1402
+ _iterator.e(err);
1403
+ } finally {
1404
+ _iterator.f();
1405
+ }
1402
1406
 
1403
- acc.push(item);
1404
- return acc;
1405
- }, []);
1406
- return nodeList;
1407
+ return root.children;
1407
1408
  }
1408
1409
  function findItemDeep(items, itemId) {
1409
- for (var i = 0; i < items.length - 1; i += 1) {
1410
+ for (var i = 0; i < items.length; i += 1) {
1410
1411
  var item = items[i] || {};
1411
1412
  var id = item.id,
1412
1413
  _item$children = item.children,
@@ -1416,7 +1417,7 @@ function findItemDeep(items, itemId) {
1416
1417
  return item;
1417
1418
  }
1418
1419
 
1419
- if (children.length) {
1420
+ if (children.length > 0) {
1420
1421
  var child = findItemDeep(children, itemId);
1421
1422
 
1422
1423
  if (child) {
@@ -1428,65 +1429,57 @@ function findItemDeep(items, itemId) {
1428
1429
  return undefined;
1429
1430
  }
1430
1431
  function removeItem(items, id) {
1431
- var newItems = [];
1432
+ var newItems = []; // eslint-disable-next-line no-restricted-syntax
1432
1433
 
1433
- for (var i = 0; i < items.length - 1; i += 1) {
1434
- var item = items[i] || {};
1434
+ var _iterator2 = _createForOfIteratorHelper__default["default"](items),
1435
+ _step2;
1435
1436
 
1436
- if (item.id === id) {
1437
- // eslint-disable-next-line no-continue
1438
- continue;
1439
- }
1437
+ try {
1438
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1439
+ var item = _step2.value;
1440
1440
 
1441
- if (item.children.length) {
1442
- item.children = removeItem(item.children || [], id);
1443
- }
1441
+ if (item.id === id) {
1442
+ // eslint-disable-next-line no-continue
1443
+ continue;
1444
+ }
1444
1445
 
1445
- newItems.push(item);
1446
+ if (item.children.length) {
1447
+ item.children = removeItem(item.children, id);
1448
+ }
1449
+
1450
+ newItems.push(item);
1451
+ }
1452
+ } catch (err) {
1453
+ _iterator2.e(err);
1454
+ } finally {
1455
+ _iterator2.f();
1446
1456
  }
1447
1457
 
1448
1458
  return newItems;
1449
1459
  }
1450
1460
  function setProperty(items, id, property, setter) {
1451
- // const item = items[i];
1452
- // if (item.id === id) {
1453
- // item[property] = setter(item[property]);
1454
- // newItems.push({ ...item });
1455
- // } else {
1456
- // const { children = [] } = item;
1457
- // let newChildren = [];
1458
- // if (children.length > 0) {
1459
- // newChildren = setProperty(children, id, property, setter);
1460
- // }
1461
- // newItems.push({ ...item, children: newChildren });
1462
- // }
1463
- // }
1464
-
1465
- var _iterator = _createForOfIteratorHelper__default["default"](items),
1466
- _step;
1461
+ // eslint-disable-next-line no-restricted-syntax
1462
+ var _iterator3 = _createForOfIteratorHelper__default["default"](items),
1463
+ _step3;
1467
1464
 
1468
1465
  try {
1469
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
1470
- var item = _step.value;
1466
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1467
+ var item = _step3.value;
1471
1468
 
1472
1469
  if (item.id === id) {
1473
- item[property] = setter(item[property]);
1470
+ item[property] = setter(item[property]); // eslint-disable-next-line no-continue
1471
+
1474
1472
  continue;
1475
1473
  }
1476
1474
 
1477
- var _item$children2 = item.children,
1478
- children = _item$children2 === void 0 ? [] : _item$children2;
1479
-
1480
- if (children.length) {
1481
- children = setProperty(children, id, property, setter);
1475
+ if (item.children.length) {
1476
+ item.children = setProperty(item.children, id, property, setter);
1482
1477
  }
1483
- } // console.log('fubar', items, newItems);
1484
- // return newItems;
1485
-
1478
+ }
1486
1479
  } catch (err) {
1487
- _iterator.e(err);
1480
+ _iterator3.e(err);
1488
1481
  } finally {
1489
- _iterator.f();
1482
+ _iterator3.f();
1490
1483
  }
1491
1484
 
1492
1485
  return _toConsumableArray__default["default"](items);
@@ -1494,9 +1487,9 @@ function setProperty(items, id, property, setter) {
1494
1487
 
1495
1488
  function countChildren(items) {
1496
1489
  var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1497
- return items.reduce(function (acc, _ref7) {
1498
- var _ref7$children = _ref7.children,
1499
- children = _ref7$children === void 0 ? [] : _ref7$children;
1490
+ return items.reduce(function (acc, _ref6) {
1491
+ var _ref6$children = _ref6.children,
1492
+ children = _ref6$children === void 0 ? [] : _ref6$children;
1500
1493
 
1501
1494
  if (children.length) {
1502
1495
  return countChildren(children, acc + 1);
@@ -1519,8 +1512,8 @@ function removeChildrenOf(items, ids) {
1519
1512
 
1520
1513
  return items.filter(function (item) {
1521
1514
  if (item.parentId && excludeParentIds.includes(item.parentId)) {
1522
- var _item$children3 = item.children,
1523
- children = _item$children3 === void 0 ? [] : _item$children3;
1515
+ var _item$children2 = item.children,
1516
+ children = _item$children2 === void 0 ? [] : _item$children2;
1524
1517
 
1525
1518
  if (children.length) {
1526
1519
  excludeParentIds.push(item.id);
@@ -1668,7 +1661,7 @@ var sortableTreeKeyboardCoordinates = function sortableTreeKeyboardCoordinates(c
1668
1661
  };
1669
1662
  };
1670
1663
 
1671
- var styles$3 = {"wrapper":"micromag-editor-sortable-tree-item-actions-wrapper","inner":"micromag-editor-sortable-tree-item-actions-inner","button":"micromag-editor-sortable-tree-item-actions-button","withChildren":"micromag-editor-sortable-tree-item-actions-withChildren","clone":"micromag-editor-sortable-tree-item-actions-clone","ghost":"micromag-editor-sortable-tree-item-actions-ghost","indicator":"micromag-editor-sortable-tree-item-actions-indicator","handle":"micromag-editor-sortable-tree-item-actions-handle","text":"micromag-editor-sortable-tree-item-actions-text","collapsedCount":"micromag-editor-sortable-tree-item-actions-collapsedCount","count":"micromag-editor-sortable-tree-item-actions-count","disableInteraction":"micromag-editor-sortable-tree-item-actions-disableInteraction","Count":"micromag-editor-sortable-tree-item-actions-Count","Text":"micromag-editor-sortable-tree-item-actions-Text","disableSelection":"micromag-editor-sortable-tree-item-actions-disableSelection","collapse":"micromag-editor-sortable-tree-item-actions-collapse","collapsed":"micromag-editor-sortable-tree-item-actions-collapsed","children":"micromag-editor-sortable-tree-item-actions-children"};
1664
+ var styles$3 = {"wrapper":"micromag-editor-sortable-sortable-tree-item-actions-wrapper","inner":"micromag-editor-sortable-sortable-tree-item-actions-inner","button":"micromag-editor-sortable-sortable-tree-item-actions-button","handle":"micromag-editor-sortable-sortable-tree-item-actions-handle","icon":"micromag-editor-sortable-sortable-tree-item-actions-icon","withChildren":"micromag-editor-sortable-sortable-tree-item-actions-withChildren","clone":"micromag-editor-sortable-sortable-tree-item-actions-clone","ghost":"micromag-editor-sortable-sortable-tree-item-actions-ghost","indicator":"micromag-editor-sortable-sortable-tree-item-actions-indicator","text":"micromag-editor-sortable-sortable-tree-item-actions-text","collapsedCount":"micromag-editor-sortable-sortable-tree-item-actions-collapsedCount","count":"micromag-editor-sortable-sortable-tree-item-actions-count","disableInteraction":"micromag-editor-sortable-sortable-tree-item-actions-disableInteraction","Count":"micromag-editor-sortable-sortable-tree-item-actions-Count","Text":"micromag-editor-sortable-sortable-tree-item-actions-Text","disableSelection":"micromag-editor-sortable-sortable-tree-item-actions-disableSelection","collapse":"micromag-editor-sortable-sortable-tree-item-actions-collapse","collapsed":"micromag-editor-sortable-sortable-tree-item-actions-collapsed","children":"micromag-editor-sortable-sortable-tree-item-actions-children"};
1672
1665
 
1673
1666
  var _excluded$4 = ["childCount", "clone", "depth", "disableSelection", "disableInteraction", "ghost", "handleProps", "indentationWidth", "indicator", "collapsed", "onCollapse", "onRemove", "onClick", "style", "value", "wrapperRef", "showId", "children"];
1674
1667
  var propTypes$a = {
@@ -1729,13 +1722,13 @@ var SortableTreeItemActions = /*#__PURE__*/React.forwardRef(function (_ref, ref)
1729
1722
  indicator = _ref.indicator,
1730
1723
  collapsed = _ref.collapsed,
1731
1724
  onCollapse = _ref.onCollapse,
1732
- onRemove = _ref.onRemove,
1733
- onClick = _ref.onClick,
1734
- style = _ref.style,
1735
- value = _ref.value,
1736
- wrapperRef = _ref.wrapperRef,
1737
- showId = _ref.showId,
1738
- children = _ref.children,
1725
+ onRemove = _ref.onRemove;
1726
+ _ref.onClick;
1727
+ var style = _ref.style;
1728
+ _ref.value;
1729
+ var wrapperRef = _ref.wrapperRef;
1730
+ _ref.showId;
1731
+ var children = _ref.children,
1739
1732
  props = _objectWithoutProperties__default["default"](_ref, _excluded$4);
1740
1733
 
1741
1734
  return /*#__PURE__*/React__default["default"].createElement("li", Object.assign({
@@ -1755,18 +1748,9 @@ var SortableTreeItemActions = /*#__PURE__*/React.forwardRef(function (_ref, ref)
1755
1748
  className: classNames__default["default"]([styles$3.button, styles$3.handle]),
1756
1749
  type: "button"
1757
1750
  }, handleProps), /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
1751
+ className: styles$3.icon,
1758
1752
  icon: freeSolidSvgIcons.faGripLines
1759
- })), /*#__PURE__*/React__default["default"].createElement("button", {
1760
- className: classNames__default["default"]([styles$3.button, styles$3.full]),
1761
- type: "button",
1762
- onClick: onClick,
1763
- style: {
1764
- width: style.width,
1765
- height: style.height
1766
- }
1767
- }), showId ? /*#__PURE__*/React__default["default"].createElement("span", {
1768
- className: styles$3.text
1769
- }, value) : null, !clone && onRemove ? /*#__PURE__*/React__default["default"].createElement("button", {
1753
+ })), !clone && onRemove ? /*#__PURE__*/React__default["default"].createElement("button", {
1770
1754
  type: "button",
1771
1755
  onClick: onRemove
1772
1756
  }, /*#__PURE__*/React__default["default"].createElement(reactFontawesome.FontAwesomeIcon, {
@@ -1791,13 +1775,14 @@ var SortableTreeItemActions = /*#__PURE__*/React.forwardRef(function (_ref, ref)
1791
1775
  SortableTreeItemActions.propTypes = propTypes$a;
1792
1776
  SortableTreeItemActions.defaultProps = defaultProps$a;
1793
1777
 
1794
- var _excluded$3 = ["id", "depth", "component", "screenValue", "style", "onCollapse", "onClick"];
1778
+ var _excluded$3 = ["id", "index", "depth", "component", "value", "style", "smallScale", "onCollapse", "onClickItem"];
1795
1779
  var propTypes$9 = {
1796
1780
  id: PropTypes__default["default"].string.isRequired,
1781
+ index: PropTypes__default["default"].number.isRequired,
1797
1782
  depth: PropTypes__default["default"].number.isRequired,
1798
1783
  component: PropTypes__default["default"].func,
1799
1784
  // eslint-disable-next-line react/forbid-prop-types
1800
- screenValue: PropTypes__default["default"].object,
1785
+ value: PropTypes__default["default"].object,
1801
1786
  style: PropTypes__default["default"].shape({
1802
1787
  width: PropTypes__default["default"].number.isRequired,
1803
1788
  height: PropTypes__default["default"].number.isRequired,
@@ -1806,15 +1791,17 @@ var propTypes$9 = {
1806
1791
  transform: PropTypes__default["default"].string.isRequired,
1807
1792
  scale: PropTypes__default["default"].number.isRequired
1808
1793
  }),
1794
+ smallScale: PropTypes__default["default"].number,
1809
1795
  onCollapse: PropTypes__default["default"].func,
1810
- onClick: PropTypes__default["default"].func
1796
+ onClickItem: PropTypes__default["default"].func
1811
1797
  };
1812
1798
  var defaultProps$9 = {
1813
1799
  component: null,
1814
- screenValue: null,
1800
+ value: null,
1815
1801
  style: null,
1802
+ smallScale: 0.75,
1816
1803
  onCollapse: null,
1817
- onClick: null
1804
+ onClickItem: null
1818
1805
  };
1819
1806
 
1820
1807
  var animateLayoutChanges = function animateLayoutChanges(_ref) {
@@ -1825,12 +1812,14 @@ var animateLayoutChanges = function animateLayoutChanges(_ref) {
1825
1812
 
1826
1813
  var SortableTreeItem = function SortableTreeItem(_ref2) {
1827
1814
  var id = _ref2.id,
1815
+ index = _ref2.index,
1828
1816
  depth = _ref2.depth,
1829
1817
  Component = _ref2.component,
1830
- screenValue = _ref2.screenValue,
1818
+ value = _ref2.value,
1831
1819
  itemStyle = _ref2.style,
1820
+ smallScale = _ref2.smallScale,
1832
1821
  onCollapse = _ref2.onCollapse,
1833
- onClick = _ref2.onClick,
1822
+ onClickItem = _ref2.onClickItem,
1834
1823
  props = _objectWithoutProperties__default["default"](_ref2, _excluded$3);
1835
1824
 
1836
1825
  var _useSortable = sortable.useSortable({
@@ -1855,17 +1844,29 @@ var SortableTreeItem = function SortableTreeItem(_ref2) {
1855
1844
  scale = _itemStyle$scale === void 0 ? 1 : _itemStyle$scale;
1856
1845
  var extraHeight = hasCollapse ? 30 : 0;
1857
1846
  var actionsStyle = {
1858
- width: depth === 0 ? scaledWidth : scaledWidth * 0.75,
1859
- height: depth === 0 ? scaledHeight + extraHeight : scaledHeight * 0.75,
1847
+ width: depth === 0 ? scaledWidth : scaledWidth * smallScale,
1848
+ height: depth === 0 ? scaledHeight + extraHeight : scaledHeight * smallScale,
1860
1849
  transform: utilities.CSS.Translate.toString(transform),
1861
1850
  transition: transition
1862
1851
  };
1863
1852
  var previewStyle = {
1864
1853
  width: itemStyle.width,
1865
1854
  height: itemStyle.height,
1866
- transform: depth === 0 ? itemStyle.transform : "scale(".concat(scale * 0.75, ", ").concat(scale * 0.75, ")"),
1867
- transformOrigin: 'top left'
1855
+ transform: depth === 0 ? itemStyle.transform : "scale(".concat(scale * smallScale, ", ").concat(scale * smallScale, ")")
1868
1856
  };
1857
+
1858
+ var _ref3 = listeners || {},
1859
+ onPointerDown = _ref3.onPointerDown;
1860
+
1861
+ var onClickAction = React.useCallback(function (e) {
1862
+ if (onClickItem !== null) {
1863
+ onClickItem(value, index);
1864
+ }
1865
+
1866
+ if (onPointerDown !== null) {
1867
+ onPointerDown(e);
1868
+ }
1869
+ }, [value, index, onClickItem, onPointerDown]);
1869
1870
  return /*#__PURE__*/React__default["default"].createElement(SortableTreeItemActions, Object.assign({
1870
1871
  ref: setDraggableNodeRef,
1871
1872
  wrapperRef: setDroppableNodeRef,
@@ -1874,10 +1875,11 @@ var SortableTreeItem = function SortableTreeItem(_ref2) {
1874
1875
  ghost: isDragging,
1875
1876
  disableSelection: iOS,
1876
1877
  disableInteraction: isSorting,
1877
- handleProps: _objectSpread__default["default"](_objectSpread__default["default"]({}, attributes), listeners),
1878
- onCollapse: onCollapse,
1879
- onClick: onClick
1880
- }, props), Component !== null ? /*#__PURE__*/React__default["default"].createElement(Component, Object.assign({}, screenValue, {
1878
+ handleProps: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, attributes), listeners), {}, {
1879
+ onPointerDown: onClickAction
1880
+ }),
1881
+ onCollapse: onCollapse
1882
+ }, props), Component !== null ? /*#__PURE__*/React__default["default"].createElement(Component, Object.assign({}, value, {
1881
1883
  previewStyle: previewStyle
1882
1884
  })) : null);
1883
1885
  };
@@ -1997,7 +1999,8 @@ var SortableTree = function SortableTree(_ref2) {
1997
1999
  var flattenedTree = flattenTree(items); // console.log('yo', items, flattenedTree);
1998
2000
 
1999
2001
  var collapsedItems = flattenedTree.reduce(function (acc, _ref3) {
2000
- var children = _ref3.children,
2002
+ var _ref3$children = _ref3.children,
2003
+ children = _ref3$children === void 0 ? [] : _ref3$children,
2001
2004
  collapsed = _ref3.collapsed,
2002
2005
  id = _ref3.id;
2003
2006
  return collapsed && children.length ? [].concat(_toConsumableArray__default["default"](acc), [id]) : acc;
@@ -2054,11 +2057,14 @@ var SortableTree = function SortableTree(_ref2) {
2054
2057
  _ref6$children = _ref6.children,
2055
2058
  children = _ref6$children === void 0 ? [] : _ref6$children,
2056
2059
  _ref6$parentId = _ref6.parentId,
2057
- parentId = _ref6$parentId === void 0 ? null : _ref6$parentId;
2060
+ parentId = _ref6$parentId === void 0 ? null : _ref6$parentId,
2061
+ _ref6$collapsed = _ref6.collapsed,
2062
+ collapsed = _ref6$collapsed === void 0 ? false : _ref6$collapsed;
2058
2063
  return {
2059
2064
  id: itemId,
2060
2065
  props: _objectSpread__default["default"](_objectSpread__default["default"]({}, (children || []).length > 0 ? {
2061
2066
  group: {
2067
+ collapsed: collapsed,
2062
2068
  mergeNavItems: true
2063
2069
  }
2064
2070
  } : {
@@ -2078,11 +2084,12 @@ var SortableTree = function SortableTree(_ref2) {
2078
2084
  return "Moving was cancelled. ".concat(id, " was dropped in its original position.");
2079
2085
  }
2080
2086
  };
2081
- }, [flattenedItems, onChange]); // Note: this is quite brutal for perf
2082
-
2083
- React.useEffect(function () {// setItems(defaultItems);
2084
- }, [defaultItems, setItems]); // console.log('render: current id', activeId);
2087
+ }, [flattenedItems, onChange]); // Initial tree setup from list
2085
2088
 
2089
+ React.useEffect(function () {
2090
+ // console.log('fuck off');
2091
+ setItems(buildTree(defaultItems));
2092
+ }, []);
2086
2093
  return /*#__PURE__*/React__default["default"].createElement(core$1.DndContext, {
2087
2094
  announcements: announcements,
2088
2095
  sensors: sensors,
@@ -2102,12 +2109,11 @@ var SortableTree = function SortableTree(_ref2) {
2102
2109
  children = _ref7$children === void 0 ? [] : _ref7$children,
2103
2110
  collapsed = _ref7.collapsed,
2104
2111
  depth = _ref7.depth,
2105
- _ref7$screenValue = _ref7.screenValue,
2106
- screenValue = _ref7$screenValue === void 0 ? null : _ref7$screenValue;
2112
+ _ref7$value = _ref7.value,
2113
+ value = _ref7$value === void 0 ? null : _ref7$value;
2107
2114
  return /*#__PURE__*/React__default["default"].createElement(SortableTreeItem, {
2108
2115
  key: id,
2109
2116
  id: id,
2110
- value: id,
2111
2117
  depth: id === activeId && projected ? projected.depth : depth,
2112
2118
  indentationWidth: indentationWidth,
2113
2119
  indicator: indicator,
@@ -2120,15 +2126,10 @@ var SortableTree = function SortableTree(_ref2) {
2120
2126
  } : undefined,
2121
2127
  childCount: getChildCount(items, id),
2122
2128
  component: component,
2123
- screenValue: screenValue,
2129
+ value: value,
2124
2130
  style: itemStyle,
2125
- onClick: function onClick() {
2126
- if (onClickItem !== null) {
2127
- onClickItem({
2128
- id: id
2129
- }, idx);
2130
- }
2131
- }
2131
+ onClickItem: onClickItem,
2132
+ index: idx
2132
2133
  });
2133
2134
  }), /*#__PURE__*/reactDom.createPortal( /*#__PURE__*/React__default["default"].createElement(core$1.DragOverlay, {
2134
2135
  dropAnimation: dropAnimation,
@@ -2138,19 +2139,23 @@ var SortableTree = function SortableTree(_ref2) {
2138
2139
  depth: activeItem.depth,
2139
2140
  clone: true,
2140
2141
  childCount: getChildCount(items, activeId) + 1,
2141
- value: activeId,
2142
2142
  indentationWidth: indentationWidth,
2143
2143
  component: component,
2144
- screenValue: activeItem === null || activeItem === void 0 ? void 0 : activeItem.screenValue,
2144
+ value: activeItem === null || activeItem === void 0 ? void 0 : activeItem.value,
2145
+ onClickItem: onClickItem,
2146
+ index: flattenedItems.findIndex(function (_ref8) {
2147
+ var id = _ref8.id;
2148
+ return activeId === id;
2149
+ }),
2145
2150
  style: itemStyle
2146
2151
  }) : null), document.body)));
2147
2152
 
2148
- function handleDragStart(_ref8) {
2149
- var newActiveId = _ref8.active.id;
2153
+ function handleDragStart(_ref9) {
2154
+ var newActiveId = _ref9.active.id;
2150
2155
  setActiveId(newActiveId);
2151
2156
  setOverId(newActiveId);
2152
- var newActiveItem = flattenedItems.find(function (_ref9) {
2153
- var id = _ref9.id;
2157
+ var newActiveItem = flattenedItems.find(function (_ref10) {
2158
+ var id = _ref10.id;
2154
2159
  return id === newActiveId;
2155
2160
  });
2156
2161
 
@@ -2164,15 +2169,15 @@ var SortableTree = function SortableTree(_ref2) {
2164
2169
  document.body.style.setProperty('cursor', 'grabbing');
2165
2170
  }
2166
2171
 
2167
- function handleDragMove(_ref10) {
2168
- var delta = _ref10.delta;
2172
+ function handleDragMove(_ref11) {
2173
+ var delta = _ref11.delta;
2169
2174
  setOffsetLeft(delta.x);
2170
2175
  }
2171
2176
 
2172
- function handleDragOver(_ref11) {
2177
+ function handleDragOver(_ref12) {
2173
2178
  var _over$id;
2174
2179
 
2175
- var over = _ref11.over;
2180
+ var over = _ref12.over;
2176
2181
  setOverId((_over$id = over === null || over === void 0 ? void 0 : over.id) !== null && _over$id !== void 0 ? _over$id : null);
2177
2182
  }
2178
2183
 
@@ -2184,24 +2189,44 @@ var SortableTree = function SortableTree(_ref2) {
2184
2189
  document.body.style.setProperty('cursor', '');
2185
2190
  }
2186
2191
 
2187
- function handleDragEnd(_ref12) {
2188
- var active = _ref12.active,
2189
- over = _ref12.over;
2192
+ function handleDragEnd(_ref13) {
2193
+ var active = _ref13.active,
2194
+ over = _ref13.over;
2190
2195
  resetState();
2191
2196
 
2192
2197
  if (projected && over) {
2193
2198
  var depth = projected.depth,
2194
2199
  parentId = projected.parentId;
2195
2200
  var clonedItems = JSON.parse(JSON.stringify(flattenTree(items)));
2196
- var overIndex = clonedItems.findIndex(function (_ref13) {
2197
- var id = _ref13.id;
2201
+ var overIndex = clonedItems.findIndex(function (_ref14) {
2202
+ var id = _ref14.id;
2198
2203
  return id === over.id;
2199
2204
  });
2200
- var activeIndex = clonedItems.findIndex(function (_ref14) {
2201
- var id = _ref14.id;
2205
+ var activeIndex = clonedItems.findIndex(function (_ref15) {
2206
+ var id = _ref15.id;
2202
2207
  return id === active.id;
2203
2208
  });
2204
2209
  var activeTreeItem = clonedItems[activeIndex];
2210
+ var maxDepth = getMaxDepth(activeTreeItem); // Un-merge and flatten
2211
+
2212
+ if (depth > 0 && depth >= maxDepth && (activeTreeItem === null || activeTreeItem === void 0 ? void 0 : activeTreeItem.children) !== null && activeTreeItem.children.length > 0) {
2213
+ var _loop = function _loop(i) {
2214
+ var childId = activeTreeItem.children[i].id;
2215
+ var childIndex = clonedItems.findIndex(function (_ref16) {
2216
+ var id = _ref16.id;
2217
+ return id === childId;
2218
+ });
2219
+ clonedItems[childIndex].parentId = parentId;
2220
+ clonedItems[childIndex].depth = depth;
2221
+ };
2222
+
2223
+ for (var i = 0; i < activeTreeItem.children.length; i += 1) {
2224
+ _loop(i);
2225
+ }
2226
+
2227
+ activeTreeItem.children = [];
2228
+ }
2229
+
2205
2230
  clonedItems[activeIndex] = _objectSpread__default["default"](_objectSpread__default["default"]({}, activeTreeItem), {}, {
2206
2231
  depth: depth,
2207
2232
  parentId: parentId
@@ -2244,12 +2269,12 @@ var SortableTree = function SortableTree(_ref2) {
2244
2269
  }
2245
2270
 
2246
2271
  var clonedItems = JSON.parse(JSON.stringify(flattenTree(items)));
2247
- var overIndex = clonedItems.findIndex(function (_ref15) {
2248
- var id = _ref15.id;
2272
+ var overIndex = clonedItems.findIndex(function (_ref17) {
2273
+ var id = _ref17.id;
2249
2274
  return id === currentOverId;
2250
2275
  });
2251
- var activeIndex = clonedItems.findIndex(function (_ref16) {
2252
- var id = _ref16.id;
2276
+ var activeIndex = clonedItems.findIndex(function (_ref18) {
2277
+ var id = _ref18.id;
2253
2278
  return id === currentActiveId;
2254
2279
  });
2255
2280
  var sortedItems = sortable.arrayMove(clonedItems, activeIndex, overIndex);
@@ -2266,17 +2291,17 @@ var SortableTree = function SortableTree(_ref2) {
2266
2291
  } else {
2267
2292
  var previousSibling = previousItem;
2268
2293
 
2269
- var _loop = function _loop() {
2294
+ var _loop2 = function _loop2() {
2270
2295
  var _previousSibling = previousSibling,
2271
2296
  parentId = _previousSibling.parentId;
2272
- previousSibling = sortedItems.find(function (_ref17) {
2273
- var id = _ref17.id;
2297
+ previousSibling = sortedItems.find(function (_ref19) {
2298
+ var id = _ref19.id;
2274
2299
  return id === parentId;
2275
2300
  });
2276
2301
  };
2277
2302
 
2278
2303
  while (previousSibling && projected.depth < previousSibling.depth) {
2279
- _loop();
2304
+ _loop2();
2280
2305
  }
2281
2306
 
2282
2307
  if (previousSibling) {
@@ -2292,7 +2317,7 @@ var SortableTree = function SortableTree(_ref2) {
2292
2317
  SortableTree.propTypes = propTypes$8;
2293
2318
  SortableTree.defaultProps = defaultProps$8;
2294
2319
 
2295
- var _excluded$2 = ["className", "screen", "type"],
2320
+ var _excluded$2 = ["className", "screen", "type", "onClick"],
2296
2321
  _excluded2 = ["id", "screen"];
2297
2322
  var propTypes$7 = {
2298
2323
  items: core.PropTypes.menuItems,
@@ -2330,7 +2355,7 @@ var defaultProps$7 = {
2330
2355
  };
2331
2356
 
2332
2357
  var ScreensMenu = function ScreensMenu(_ref) {
2333
- var _ref9;
2358
+ var _ref10;
2334
2359
 
2335
2360
  var items = _ref.items,
2336
2361
  withPreview = _ref.withPreview,
@@ -2403,6 +2428,8 @@ var ScreensMenu = function ScreensMenu(_ref) {
2403
2428
  itemCustomClassName = _ref4$className === void 0 ? null : _ref4$className,
2404
2429
  screen = _ref4.screen,
2405
2430
  type = _ref4.type,
2431
+ _ref4$onClick = _ref4.onClick,
2432
+ onClick = _ref4$onClick === void 0 ? null : _ref4$onClick,
2406
2433
  item = _objectWithoutProperties__default["default"](_ref4, _excluded$2);
2407
2434
 
2408
2435
  return /*#__PURE__*/React__default["default"].createElement("li", {
@@ -2419,44 +2446,46 @@ var ScreensMenu = function ScreensMenu(_ref) {
2419
2446
  previewStyle: previewStyle,
2420
2447
  withPreview: withPreview,
2421
2448
  withPlaceholder: withPlaceholder,
2422
- onClick: onClickItem
2449
+ onClick: onClick,
2450
+ onClickItem: onClickItem
2423
2451
  }), settings !== null ? /*#__PURE__*/React__default["default"].createElement("div", {
2424
2452
  className: classNames__default["default"]([_defineProperty__default["default"]({}, settingsClassName, settingsClassName !== null), styles$6.settings, 'p-2'])
2425
2453
  }, isFunction__default["default"](settings) ? settings(index) : settings) : null);
2426
2454
  }) : [];
2427
2455
  var sortableItems = React.useMemo(function () {
2428
- return isTree ? items.reduce(function (acc, _ref7) {
2456
+ return isTree ? items.map(function (_ref7) {
2429
2457
  var id = _ref7.id,
2430
2458
  _ref7$screen = _ref7.screen,
2431
2459
  screen = _ref7$screen === void 0 ? {} : _ref7$screen,
2432
2460
  props = _objectWithoutProperties__default["default"](_ref7, _excluded2);
2433
2461
 
2434
2462
  var _screen$parentId = screen.parentId,
2435
- parentId = _screen$parentId === void 0 ? null : _screen$parentId; // console.log('hey', id, screen, parentId, props);
2436
- // const children =
2437
- // items.filter(({ screen: { parentId: cpid = null } }) => cpid === id) ||
2438
- // [];
2439
- // console.log('children', children);
2463
+ parentId = _screen$parentId === void 0 ? null : _screen$parentId,
2464
+ _screen$group = screen.group,
2465
+ group = _screen$group === void 0 ? {} : _screen$group;
2466
+
2467
+ var _ref8 = group || {},
2468
+ _ref8$collapsed = _ref8.collapsed,
2469
+ collapsed = _ref8$collapsed === void 0 ? true : _ref8$collapsed;
2440
2470
 
2441
- acc.push(_objectSpread__default["default"]({
2471
+ return _objectSpread__default["default"]({
2442
2472
  id: id,
2443
2473
  parentId: parentId,
2444
- screenValue: {
2474
+ collapsed: collapsed,
2475
+ value: {
2445
2476
  id: id,
2446
2477
  screen: screen
2447
2478
  }
2448
- }, props));
2449
- return acc;
2450
- }, []) : items.map(function (_ref8) {
2451
- var id = _ref8.id;
2479
+ }, props);
2480
+ }, []) : items.map(function (_ref9) {
2481
+ var id = _ref9.id;
2452
2482
  return {
2453
2483
  id: id
2454
2484
  };
2455
2485
  });
2456
- }, [items, isTree]); // console.log('screens menu items/sitems', items, sortableItems);
2457
-
2486
+ }, [items, isTree]);
2458
2487
  return /*#__PURE__*/React__default["default"].createElement("div", {
2459
- className: classNames__default["default"]([styles$6.container, (_ref9 = {}, _defineProperty__default["default"](_ref9, styles$6.noWrap, noWrap), _defineProperty__default["default"](_ref9, styles$6.isVertical, isVertical), _defineProperty__default["default"](_ref9, styles$6.isTree, isTree), _defineProperty__default["default"](_ref9, styles$6.withPlaceholder, withPlaceholder), _defineProperty__default["default"](_ref9, className, className), _ref9)]),
2488
+ className: classNames__default["default"]([styles$6.container, (_ref10 = {}, _defineProperty__default["default"](_ref10, styles$6.noWrap, noWrap), _defineProperty__default["default"](_ref10, styles$6.isVertical, isVertical), _defineProperty__default["default"](_ref10, styles$6.isTree, isTree), _defineProperty__default["default"](_ref10, styles$6.withPlaceholder, withPlaceholder), _defineProperty__default["default"](_ref10, className, className), _ref10)]),
2460
2489
  ref: columnRef
2461
2490
  }, isTree && !sortable ? /*#__PURE__*/React__default["default"].createElement(SortableTree, {
2462
2491
  items: sortableItems,
@@ -3074,7 +3103,8 @@ var Editor = function Editor(_ref) {
3074
3103
  onChange: onStoryChange,
3075
3104
  onClickScreen: onClickScreen,
3076
3105
  isVertical: !isMobile,
3077
- className: styles$f.inner
3106
+ className: styles$f.inner,
3107
+ isTree: true
3078
3108
  })), /*#__PURE__*/React__default["default"].createElement("div", {
3079
3109
  className: classNames__default["default"]([styles$f.center, _defineProperty__default["default"]({}, styles$f.visible, !isMobile || mobileView === 'preview')])
3080
3110
  }, /*#__PURE__*/React__default["default"].createElement(EditorPreview, {