@atlaskit/editor-toolbar-model 0.2.2 → 0.2.4
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/CHANGELOG.md +12 -1
- package/dist/cjs/ui/toolbar-model-renderer/ToolbarRendererNew.js +95 -0
- package/dist/cjs/ui/toolbar-model-renderer/ToolbarRendererOld.js +180 -0
- package/dist/cjs/ui/toolbar-model-renderer/common.js +26 -0
- package/dist/cjs/ui/toolbar-model-renderer/index.js +14 -171
- package/dist/cjs/ui/toolbar-model-renderer/types.js +5 -0
- package/dist/es2019/ui/toolbar-model-renderer/ToolbarRendererNew.js +83 -0
- package/dist/es2019/ui/toolbar-model-renderer/ToolbarRendererOld.js +162 -0
- package/dist/es2019/ui/toolbar-model-renderer/common.js +8 -0
- package/dist/es2019/ui/toolbar-model-renderer/index.js +14 -157
- package/dist/es2019/ui/toolbar-model-renderer/types.js +1 -0
- package/dist/esm/ui/toolbar-model-renderer/ToolbarRendererNew.js +88 -0
- package/dist/esm/ui/toolbar-model-renderer/ToolbarRendererOld.js +173 -0
- package/dist/esm/ui/toolbar-model-renderer/common.js +20 -0
- package/dist/esm/ui/toolbar-model-renderer/index.js +14 -171
- package/dist/esm/ui/toolbar-model-renderer/types.js +1 -0
- package/dist/types/ui/toolbar-model-renderer/ToolbarRendererNew.d.ts +3 -0
- package/dist/types/ui/toolbar-model-renderer/ToolbarRendererOld.d.ts +3 -0
- package/dist/types/ui/toolbar-model-renderer/common.d.ts +9 -0
- package/dist/types/ui/toolbar-model-renderer/index.d.ts +1 -20
- package/dist/types/ui/toolbar-model-renderer/types.d.ts +19 -0
- package/dist/types-ts4.5/ui/toolbar-model-renderer/ToolbarRendererNew.d.ts +3 -0
- package/dist/types-ts4.5/ui/toolbar-model-renderer/ToolbarRendererOld.d.ts +3 -0
- package/dist/types-ts4.5/ui/toolbar-model-renderer/common.d.ts +9 -0
- package/dist/types-ts4.5/ui/toolbar-model-renderer/index.d.ts +1 -20
- package/dist/types-ts4.5/ui/toolbar-model-renderer/types.d.ts +19 -0
- package/package.json +12 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/editor-toolbar-model
|
|
2
2
|
|
|
3
|
+
## 0.2.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
|
|
9
|
+
## 0.2.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies
|
|
14
|
+
|
|
3
15
|
## 0.2.2
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -34,7 +46,6 @@
|
|
|
34
46
|
|
|
35
47
|
- [`3145f278b1f7a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3145f278b1f7a) -
|
|
36
48
|
[ux] [ED-28473] minor UI updates for editor-toolbar
|
|
37
|
-
|
|
38
49
|
- Use ADS ButtonGroup for ToolbarButtonGroup
|
|
39
50
|
- Remove groupLocation prop and use CSS instead
|
|
40
51
|
- Use DropdownItemGroup for ToolbarDropdownItemSection and expand props for section separator and
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ToolbarModelRenderer = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _common = require("./common");
|
|
11
|
+
var hasParents = function hasParents(component) {
|
|
12
|
+
return component.type !== 'toolbar';
|
|
13
|
+
};
|
|
14
|
+
var getChildTypesForParent = function getChildTypesForParent(parentType) {
|
|
15
|
+
switch (parentType) {
|
|
16
|
+
case 'toolbar':
|
|
17
|
+
return ['section'];
|
|
18
|
+
case 'section':
|
|
19
|
+
return ['group'];
|
|
20
|
+
case 'group':
|
|
21
|
+
return ['button', 'menu'];
|
|
22
|
+
case 'menu':
|
|
23
|
+
case 'nested-menu':
|
|
24
|
+
return ['menu-section'];
|
|
25
|
+
case 'menu-section':
|
|
26
|
+
return ['menu-item', 'nested-menu'];
|
|
27
|
+
default:
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
var getFallbackComponent = function getFallbackComponent(type, fallbacks) {
|
|
32
|
+
switch (type) {
|
|
33
|
+
case 'group':
|
|
34
|
+
return fallbacks.group;
|
|
35
|
+
case 'menu-section':
|
|
36
|
+
return fallbacks.menuSection;
|
|
37
|
+
case 'section':
|
|
38
|
+
return fallbacks.section;
|
|
39
|
+
default:
|
|
40
|
+
return _common.NoOp;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
var _ComponentRenderer = function ComponentRenderer(_ref) {
|
|
44
|
+
var component = _ref.component,
|
|
45
|
+
parents = _ref.parents,
|
|
46
|
+
allComponents = _ref.allComponents,
|
|
47
|
+
fallbacks = _ref.fallbacks;
|
|
48
|
+
var childTypes = getChildTypesForParent(component.type);
|
|
49
|
+
var children = (0, _common.getSortedChildren)(allComponents.filter(function (comp) {
|
|
50
|
+
return childTypes.includes(comp.type);
|
|
51
|
+
}), component.key);
|
|
52
|
+
if ((component.type === 'menu' || component.type === 'group' || component.type === 'nested-menu' || component.type === 'menu-section') && children.length === 0) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
var Component = component.component || getFallbackComponent(component.type, fallbacks);
|
|
56
|
+
var newParents = [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
57
|
+
key: component.key,
|
|
58
|
+
type: component.type
|
|
59
|
+
}]);
|
|
60
|
+
if (children.length === 0) {
|
|
61
|
+
return /*#__PURE__*/_react.default.createElement(Component, {
|
|
62
|
+
parents: parents
|
|
63
|
+
}, null);
|
|
64
|
+
}
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement(Component, {
|
|
66
|
+
parents: parents
|
|
67
|
+
}, children.map(function (child) {
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(_ComponentRenderer, {
|
|
69
|
+
key: child.key,
|
|
70
|
+
component: child,
|
|
71
|
+
parents: newParents,
|
|
72
|
+
allComponents: allComponents,
|
|
73
|
+
fallbacks: fallbacks
|
|
74
|
+
});
|
|
75
|
+
}));
|
|
76
|
+
};
|
|
77
|
+
var ToolbarModelRenderer = exports.ToolbarModelRenderer = function ToolbarModelRenderer(_ref2) {
|
|
78
|
+
var toolbar = _ref2.toolbar,
|
|
79
|
+
components = _ref2.components,
|
|
80
|
+
fallbacks = _ref2.fallbacks;
|
|
81
|
+
var ToolbarComponent = toolbar.component || _common.NoOp;
|
|
82
|
+
var sections = (0, _common.getSortedChildren)(components.filter(_common.isSection), toolbar.key);
|
|
83
|
+
return /*#__PURE__*/_react.default.createElement(ToolbarComponent, null, sections.map(function (section) {
|
|
84
|
+
return /*#__PURE__*/_react.default.createElement(_ComponentRenderer, {
|
|
85
|
+
key: section.key,
|
|
86
|
+
component: section,
|
|
87
|
+
parents: [{
|
|
88
|
+
key: toolbar.key,
|
|
89
|
+
type: toolbar.type
|
|
90
|
+
}],
|
|
91
|
+
allComponents: components.filter(hasParents),
|
|
92
|
+
fallbacks: fallbacks
|
|
93
|
+
});
|
|
94
|
+
}));
|
|
95
|
+
};
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ToolbarModelRenderer = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _common = require("./common");
|
|
11
|
+
var isGroup = function isGroup(component) {
|
|
12
|
+
return component.type === 'group';
|
|
13
|
+
};
|
|
14
|
+
var isToolbarItem = function isToolbarItem(component) {
|
|
15
|
+
return component.type === 'button' || component.type === 'menu';
|
|
16
|
+
};
|
|
17
|
+
var isToolbarMenuSection = function isToolbarMenuSection(component) {
|
|
18
|
+
return component.type === 'menu-section';
|
|
19
|
+
};
|
|
20
|
+
var isToolbarMenuItem = function isToolbarMenuItem(component) {
|
|
21
|
+
return component.type === 'menu-item' || component.type === 'menu-section';
|
|
22
|
+
};
|
|
23
|
+
var isToolbarMenuItemOrNestedMenu = function isToolbarMenuItemOrNestedMenu(component) {
|
|
24
|
+
return component.type === 'menu-item' || component.type === 'menu-section' || component.type === 'nested-menu';
|
|
25
|
+
};
|
|
26
|
+
var getSortedChildren = function getSortedChildren(components, parentKey) {
|
|
27
|
+
return components.filter(function (component) {
|
|
28
|
+
return component.parents.some(function (parent) {
|
|
29
|
+
return parent.key === parentKey;
|
|
30
|
+
});
|
|
31
|
+
}).sort(function (a, b) {
|
|
32
|
+
var _a$parents$find, _b$parents$find;
|
|
33
|
+
return (((_a$parents$find = a.parents.find(function (p) {
|
|
34
|
+
return p.key === parentKey;
|
|
35
|
+
})) === null || _a$parents$find === void 0 ? void 0 : _a$parents$find.rank) || 0) - (((_b$parents$find = b.parents.find(function (p) {
|
|
36
|
+
return p.key === parentKey;
|
|
37
|
+
})) === null || _b$parents$find === void 0 ? void 0 : _b$parents$find.rank) || 0);
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
var ToolbarModelRenderer = exports.ToolbarModelRenderer = function ToolbarModelRenderer(_ref) {
|
|
41
|
+
var toolbar = _ref.toolbar,
|
|
42
|
+
components = _ref.components,
|
|
43
|
+
fallbacks = _ref.fallbacks;
|
|
44
|
+
var sections = getSortedChildren(components.filter(_common.isSection), toolbar.key);
|
|
45
|
+
var groups = components.filter(isGroup);
|
|
46
|
+
var toolbarItems = components.filter(isToolbarItem);
|
|
47
|
+
var menuSections = components.filter(isToolbarMenuSection);
|
|
48
|
+
var menuItems = components.filter(isToolbarMenuItem);
|
|
49
|
+
var menuItemsAndNestedMenus = components.filter(isToolbarMenuItemOrNestedMenu);
|
|
50
|
+
var renderToolbarItem = function renderToolbarItem(_ref2) {
|
|
51
|
+
var item = _ref2.item,
|
|
52
|
+
index = _ref2.index,
|
|
53
|
+
parents = _ref2.parents;
|
|
54
|
+
if (item.type === 'menu') {
|
|
55
|
+
var menuComponents = getSortedChildren(menuSections, item.key);
|
|
56
|
+
if (menuComponents.length === 0) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
var Menu = item.component || _common.NoOp;
|
|
60
|
+
return /*#__PURE__*/_react.default.createElement(Menu, {
|
|
61
|
+
key: item.key,
|
|
62
|
+
parents: parents
|
|
63
|
+
}, menuComponents.map(function (menuSection) {
|
|
64
|
+
var menuItemsInSection = getSortedChildren(menuItemsAndNestedMenus, menuSection.key);
|
|
65
|
+
var MenuSection = menuSection.component || fallbacks.menuSection;
|
|
66
|
+
return /*#__PURE__*/_react.default.createElement(MenuSection, {
|
|
67
|
+
key: menuSection.key,
|
|
68
|
+
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
69
|
+
key: item.key,
|
|
70
|
+
type: item.type
|
|
71
|
+
}])
|
|
72
|
+
}, menuItemsInSection.map(function (menuItem) {
|
|
73
|
+
if (menuItem.type === 'nested-menu') {
|
|
74
|
+
var nestedMenuComponents = getSortedChildren(menuSections, menuItem.key);
|
|
75
|
+
var NestedMenu = menuItem.component;
|
|
76
|
+
return /*#__PURE__*/_react.default.createElement(NestedMenu, {
|
|
77
|
+
key: menuItem.key,
|
|
78
|
+
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
79
|
+
key: item.key,
|
|
80
|
+
type: item.type
|
|
81
|
+
}, {
|
|
82
|
+
key: menuSection.key,
|
|
83
|
+
type: menuSection.type
|
|
84
|
+
}])
|
|
85
|
+
}, nestedMenuComponents.map(function (nestedMenuSection) {
|
|
86
|
+
var menuItemsInNestedMenuSection = getSortedChildren(menuItems, nestedMenuSection.key);
|
|
87
|
+
var NestedMenuSection = nestedMenuSection.component || fallbacks.menuSection;
|
|
88
|
+
return /*#__PURE__*/_react.default.createElement(NestedMenuSection, {
|
|
89
|
+
key: nestedMenuSection.key,
|
|
90
|
+
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
91
|
+
key: item.key,
|
|
92
|
+
type: item.type
|
|
93
|
+
}, {
|
|
94
|
+
key: menuSection.key,
|
|
95
|
+
type: menuSection.type
|
|
96
|
+
}, {
|
|
97
|
+
key: menuItem.key,
|
|
98
|
+
type: menuItem.type
|
|
99
|
+
}])
|
|
100
|
+
}, menuItemsInNestedMenuSection.map(function (nestedMenuItem) {
|
|
101
|
+
var NestedMenuItem = nestedMenuItem.component || _common.NoOp;
|
|
102
|
+
return /*#__PURE__*/_react.default.createElement(NestedMenuItem, {
|
|
103
|
+
key: nestedMenuItem.key,
|
|
104
|
+
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
105
|
+
key: item.key,
|
|
106
|
+
type: item.type
|
|
107
|
+
}, {
|
|
108
|
+
key: menuSection.key,
|
|
109
|
+
type: menuSection.type
|
|
110
|
+
}, {
|
|
111
|
+
key: menuItem.key,
|
|
112
|
+
type: menuItem.type
|
|
113
|
+
}, {
|
|
114
|
+
key: nestedMenuSection.key,
|
|
115
|
+
type: nestedMenuSection.type
|
|
116
|
+
}])
|
|
117
|
+
});
|
|
118
|
+
}));
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
var MenuItem = menuItem.component || _common.NoOp;
|
|
122
|
+
return /*#__PURE__*/_react.default.createElement(MenuItem, {
|
|
123
|
+
key: menuItem.key,
|
|
124
|
+
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
125
|
+
key: item.key,
|
|
126
|
+
type: item.type
|
|
127
|
+
}, {
|
|
128
|
+
key: menuSection.key,
|
|
129
|
+
type: menuSection.type
|
|
130
|
+
}])
|
|
131
|
+
});
|
|
132
|
+
}));
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
var Button = item.component || _common.NoOp;
|
|
136
|
+
return /*#__PURE__*/_react.default.createElement(Button, {
|
|
137
|
+
key: item.key,
|
|
138
|
+
parents: parents
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
var renderGroup = function renderGroup(group, parents) {
|
|
142
|
+
var groupItems = getSortedChildren(toolbarItems, group.key);
|
|
143
|
+
if (groupItems.length === 0) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
var Group = group.component || fallbacks.group;
|
|
147
|
+
return /*#__PURE__*/_react.default.createElement(Group, {
|
|
148
|
+
key: group.key,
|
|
149
|
+
parents: parents
|
|
150
|
+
}, groupItems.map(function (item, index) {
|
|
151
|
+
return renderToolbarItem({
|
|
152
|
+
item: item,
|
|
153
|
+
index: index,
|
|
154
|
+
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
155
|
+
key: group.key,
|
|
156
|
+
type: group.type
|
|
157
|
+
}])
|
|
158
|
+
});
|
|
159
|
+
}));
|
|
160
|
+
};
|
|
161
|
+
var renderSection = function renderSection(section) {
|
|
162
|
+
var sectionGroups = getSortedChildren(groups, section.key);
|
|
163
|
+
var Section = section.component || fallbacks.section;
|
|
164
|
+
var parents = [{
|
|
165
|
+
key: toolbar.key,
|
|
166
|
+
type: toolbar.type
|
|
167
|
+
}];
|
|
168
|
+
return /*#__PURE__*/_react.default.createElement(Section, {
|
|
169
|
+
key: section.key,
|
|
170
|
+
parents: parents
|
|
171
|
+
}, sectionGroups.map(function (group) {
|
|
172
|
+
return renderGroup(group, [].concat(parents, [{
|
|
173
|
+
key: section.key,
|
|
174
|
+
type: section.type
|
|
175
|
+
}]));
|
|
176
|
+
}));
|
|
177
|
+
};
|
|
178
|
+
var ToolbarComponent = toolbar.component || _common.NoOp;
|
|
179
|
+
return /*#__PURE__*/_react.default.createElement(ToolbarComponent, null, sections.map(renderSection));
|
|
180
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isSection = exports.getSortedChildren = exports.NoOp = void 0;
|
|
7
|
+
var getSortedChildren = exports.getSortedChildren = function getSortedChildren(components, parentKey) {
|
|
8
|
+
return components.filter(function (component) {
|
|
9
|
+
return component.parents.some(function (parent) {
|
|
10
|
+
return parent.key === parentKey;
|
|
11
|
+
});
|
|
12
|
+
}).sort(function (a, b) {
|
|
13
|
+
var _a$parents$find, _b$parents$find;
|
|
14
|
+
return (((_a$parents$find = a.parents.find(function (p) {
|
|
15
|
+
return p.key === parentKey;
|
|
16
|
+
})) === null || _a$parents$find === void 0 ? void 0 : _a$parents$find.rank) || 0) - (((_b$parents$find = b.parents.find(function (p) {
|
|
17
|
+
return p.key === parentKey;
|
|
18
|
+
})) === null || _b$parents$find === void 0 ? void 0 : _b$parents$find.rank) || 0);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var NoOp = exports.NoOp = function NoOp(props) {
|
|
22
|
+
return null;
|
|
23
|
+
};
|
|
24
|
+
var isSection = exports.isSection = function isSection(component) {
|
|
25
|
+
return component.type === 'section';
|
|
26
|
+
};
|
|
@@ -5,181 +5,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.ToolbarModelRenderer = void 0;
|
|
8
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
8
|
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var isSection = function isSection(component) {
|
|
14
|
-
return component.type === 'section';
|
|
15
|
-
};
|
|
16
|
-
var isGroup = function isGroup(component) {
|
|
17
|
-
return component.type === 'group';
|
|
18
|
-
};
|
|
19
|
-
var isToolbarItem = function isToolbarItem(component) {
|
|
20
|
-
return component.type === 'button' || component.type === 'menu';
|
|
21
|
-
};
|
|
22
|
-
var isToolbarMenuSection = function isToolbarMenuSection(component) {
|
|
23
|
-
return component.type === 'menu-section';
|
|
24
|
-
};
|
|
25
|
-
var isToolbarMenuItem = function isToolbarMenuItem(component) {
|
|
26
|
-
return component.type === 'menu-item' || component.type === 'menu-section';
|
|
27
|
-
};
|
|
28
|
-
var isToolbarMenuItemOrNestedMenu = function isToolbarMenuItemOrNestedMenu(component) {
|
|
29
|
-
return component.type === 'menu-item' || component.type === 'menu-section' || component.type === 'nested-menu';
|
|
30
|
-
};
|
|
31
|
-
var getSortedChildren = function getSortedChildren(components, parentKey) {
|
|
32
|
-
return components.filter(function (component) {
|
|
33
|
-
return component.parents.some(function (parent) {
|
|
34
|
-
return parent.key === parentKey;
|
|
35
|
-
});
|
|
36
|
-
}).sort(function (a, b) {
|
|
37
|
-
var _a$parents$find, _b$parents$find;
|
|
38
|
-
return (((_a$parents$find = a.parents.find(function (p) {
|
|
39
|
-
return p.key === parentKey;
|
|
40
|
-
})) === null || _a$parents$find === void 0 ? void 0 : _a$parents$find.rank) || 0) - (((_b$parents$find = b.parents.find(function (p) {
|
|
41
|
-
return p.key === parentKey;
|
|
42
|
-
})) === null || _b$parents$find === void 0 ? void 0 : _b$parents$find.rank) || 0);
|
|
43
|
-
});
|
|
44
|
-
};
|
|
9
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
|
+
var _ToolbarRendererNew = require("./ToolbarRendererNew");
|
|
11
|
+
var _ToolbarRendererOld = require("./ToolbarRendererOld");
|
|
45
12
|
var ToolbarModelRenderer = exports.ToolbarModelRenderer = function ToolbarModelRenderer(_ref) {
|
|
46
13
|
var toolbar = _ref.toolbar,
|
|
47
14
|
components = _ref.components,
|
|
48
15
|
fallbacks = _ref.fallbacks;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var menuItemsAndNestedMenus = components.filter(isToolbarMenuItemOrNestedMenu);
|
|
55
|
-
var renderToolbarItem = function renderToolbarItem(_ref2) {
|
|
56
|
-
var item = _ref2.item,
|
|
57
|
-
index = _ref2.index,
|
|
58
|
-
parents = _ref2.parents;
|
|
59
|
-
if (item.type === 'menu') {
|
|
60
|
-
var menuComponents = getSortedChildren(menuSections, item.key);
|
|
61
|
-
if (menuComponents.length === 0) {
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
var Menu = item.component || NoOp;
|
|
65
|
-
return /*#__PURE__*/_react.default.createElement(Menu, {
|
|
66
|
-
key: item.key,
|
|
67
|
-
parents: parents
|
|
68
|
-
}, menuComponents.map(function (menuSection) {
|
|
69
|
-
var menuItemsInSection = getSortedChildren(menuItemsAndNestedMenus, menuSection.key);
|
|
70
|
-
var MenuSection = menuSection.component || fallbacks.menuSection;
|
|
71
|
-
return /*#__PURE__*/_react.default.createElement(MenuSection, {
|
|
72
|
-
key: menuSection.key,
|
|
73
|
-
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
74
|
-
key: item.key,
|
|
75
|
-
type: item.type
|
|
76
|
-
}])
|
|
77
|
-
}, menuItemsInSection.map(function (menuItem) {
|
|
78
|
-
if (menuItem.type === 'nested-menu') {
|
|
79
|
-
var nestedMenuComponents = getSortedChildren(menuSections, menuItem.key);
|
|
80
|
-
var NestedMenu = menuItem.component;
|
|
81
|
-
return /*#__PURE__*/_react.default.createElement(NestedMenu, {
|
|
82
|
-
key: menuItem.key,
|
|
83
|
-
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
84
|
-
key: item.key,
|
|
85
|
-
type: item.type
|
|
86
|
-
}, {
|
|
87
|
-
key: menuSection.key,
|
|
88
|
-
type: menuSection.type
|
|
89
|
-
}])
|
|
90
|
-
}, nestedMenuComponents.map(function (nestedMenuSection) {
|
|
91
|
-
var menuItemsInNestedMenuSection = getSortedChildren(menuItems, nestedMenuSection.key);
|
|
92
|
-
var NestedMenuSection = nestedMenuSection.component || fallbacks.menuSection;
|
|
93
|
-
return /*#__PURE__*/_react.default.createElement(NestedMenuSection, {
|
|
94
|
-
key: nestedMenuSection.key,
|
|
95
|
-
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
96
|
-
key: item.key,
|
|
97
|
-
type: item.type
|
|
98
|
-
}, {
|
|
99
|
-
key: menuSection.key,
|
|
100
|
-
type: menuSection.type
|
|
101
|
-
}, {
|
|
102
|
-
key: menuItem.key,
|
|
103
|
-
type: menuItem.type
|
|
104
|
-
}])
|
|
105
|
-
}, menuItemsInNestedMenuSection.map(function (nestedMenuItem) {
|
|
106
|
-
var NestedMenuItem = nestedMenuItem.component || NoOp;
|
|
107
|
-
return /*#__PURE__*/_react.default.createElement(NestedMenuItem, {
|
|
108
|
-
key: nestedMenuItem.key,
|
|
109
|
-
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
110
|
-
key: item.key,
|
|
111
|
-
type: item.type
|
|
112
|
-
}, {
|
|
113
|
-
key: menuSection.key,
|
|
114
|
-
type: menuSection.type
|
|
115
|
-
}, {
|
|
116
|
-
key: menuItem.key,
|
|
117
|
-
type: menuItem.type
|
|
118
|
-
}, {
|
|
119
|
-
key: nestedMenuSection.key,
|
|
120
|
-
type: nestedMenuSection.type
|
|
121
|
-
}])
|
|
122
|
-
});
|
|
123
|
-
}));
|
|
124
|
-
}));
|
|
125
|
-
}
|
|
126
|
-
var MenuItem = menuItem.component || NoOp;
|
|
127
|
-
return /*#__PURE__*/_react.default.createElement(MenuItem, {
|
|
128
|
-
key: menuItem.key,
|
|
129
|
-
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
130
|
-
key: item.key,
|
|
131
|
-
type: item.type
|
|
132
|
-
}, {
|
|
133
|
-
key: menuSection.key,
|
|
134
|
-
type: menuSection.type
|
|
135
|
-
}])
|
|
136
|
-
});
|
|
137
|
-
}));
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
var Button = item.component || NoOp;
|
|
141
|
-
return /*#__PURE__*/_react.default.createElement(Button, {
|
|
142
|
-
key: item.key,
|
|
143
|
-
parents: parents
|
|
16
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_toolbar_aifc_renderer_rewrite')) {
|
|
17
|
+
return /*#__PURE__*/_react.default.createElement(_ToolbarRendererNew.ToolbarModelRenderer, {
|
|
18
|
+
toolbar: toolbar,
|
|
19
|
+
components: components,
|
|
20
|
+
fallbacks: fallbacks
|
|
144
21
|
});
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
var Group = group.component || fallbacks.group;
|
|
152
|
-
return /*#__PURE__*/_react.default.createElement(Group, {
|
|
153
|
-
key: group.key,
|
|
154
|
-
parents: parents
|
|
155
|
-
}, groupItems.map(function (item, index) {
|
|
156
|
-
return renderToolbarItem({
|
|
157
|
-
item: item,
|
|
158
|
-
index: index,
|
|
159
|
-
parents: [].concat((0, _toConsumableArray2.default)(parents), [{
|
|
160
|
-
key: group.key,
|
|
161
|
-
type: group.type
|
|
162
|
-
}])
|
|
163
|
-
});
|
|
164
|
-
}));
|
|
165
|
-
};
|
|
166
|
-
var renderSection = function renderSection(section) {
|
|
167
|
-
var sectionGroups = getSortedChildren(groups, section.key);
|
|
168
|
-
var Section = section.component || fallbacks.section;
|
|
169
|
-
var parents = [{
|
|
170
|
-
key: toolbar.key,
|
|
171
|
-
type: toolbar.type
|
|
172
|
-
}];
|
|
173
|
-
return /*#__PURE__*/_react.default.createElement(Section, {
|
|
174
|
-
key: section.key,
|
|
175
|
-
parents: parents
|
|
176
|
-
}, sectionGroups.map(function (group) {
|
|
177
|
-
return renderGroup(group, [].concat(parents, [{
|
|
178
|
-
key: section.key,
|
|
179
|
-
type: section.type
|
|
180
|
-
}]));
|
|
181
|
-
}));
|
|
182
|
-
};
|
|
183
|
-
var ToolbarComponent = toolbar.component || NoOp;
|
|
184
|
-
return /*#__PURE__*/_react.default.createElement(ToolbarComponent, null, sections.map(renderSection));
|
|
22
|
+
}
|
|
23
|
+
return /*#__PURE__*/_react.default.createElement(_ToolbarRendererOld.ToolbarModelRenderer, {
|
|
24
|
+
toolbar: toolbar,
|
|
25
|
+
components: components,
|
|
26
|
+
fallbacks: fallbacks
|
|
27
|
+
});
|
|
185
28
|
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { getSortedChildren, isSection, NoOp } from './common';
|
|
3
|
+
const hasParents = component => {
|
|
4
|
+
return component.type !== 'toolbar';
|
|
5
|
+
};
|
|
6
|
+
const getChildTypesForParent = parentType => {
|
|
7
|
+
switch (parentType) {
|
|
8
|
+
case 'toolbar':
|
|
9
|
+
return ['section'];
|
|
10
|
+
case 'section':
|
|
11
|
+
return ['group'];
|
|
12
|
+
case 'group':
|
|
13
|
+
return ['button', 'menu'];
|
|
14
|
+
case 'menu':
|
|
15
|
+
case 'nested-menu':
|
|
16
|
+
return ['menu-section'];
|
|
17
|
+
case 'menu-section':
|
|
18
|
+
return ['menu-item', 'nested-menu'];
|
|
19
|
+
default:
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const getFallbackComponent = (type, fallbacks) => {
|
|
24
|
+
switch (type) {
|
|
25
|
+
case 'group':
|
|
26
|
+
return fallbacks.group;
|
|
27
|
+
case 'menu-section':
|
|
28
|
+
return fallbacks.menuSection;
|
|
29
|
+
case 'section':
|
|
30
|
+
return fallbacks.section;
|
|
31
|
+
default:
|
|
32
|
+
return NoOp;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const ComponentRenderer = ({
|
|
36
|
+
component,
|
|
37
|
+
parents,
|
|
38
|
+
allComponents,
|
|
39
|
+
fallbacks
|
|
40
|
+
}) => {
|
|
41
|
+
const childTypes = getChildTypesForParent(component.type);
|
|
42
|
+
const children = getSortedChildren(allComponents.filter(comp => childTypes.includes(comp.type)), component.key);
|
|
43
|
+
if ((component.type === 'menu' || component.type === 'group' || component.type === 'nested-menu' || component.type === 'menu-section') && children.length === 0) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const Component = component.component || getFallbackComponent(component.type, fallbacks);
|
|
47
|
+
const newParents = [...parents, {
|
|
48
|
+
key: component.key,
|
|
49
|
+
type: component.type
|
|
50
|
+
}];
|
|
51
|
+
if (children.length === 0) {
|
|
52
|
+
return /*#__PURE__*/React.createElement(Component, {
|
|
53
|
+
parents: parents
|
|
54
|
+
}, null);
|
|
55
|
+
}
|
|
56
|
+
return /*#__PURE__*/React.createElement(Component, {
|
|
57
|
+
parents: parents
|
|
58
|
+
}, children.map(child => /*#__PURE__*/React.createElement(ComponentRenderer, {
|
|
59
|
+
key: child.key,
|
|
60
|
+
component: child,
|
|
61
|
+
parents: newParents,
|
|
62
|
+
allComponents: allComponents,
|
|
63
|
+
fallbacks: fallbacks
|
|
64
|
+
})));
|
|
65
|
+
};
|
|
66
|
+
export const ToolbarModelRenderer = ({
|
|
67
|
+
toolbar,
|
|
68
|
+
components,
|
|
69
|
+
fallbacks
|
|
70
|
+
}) => {
|
|
71
|
+
const ToolbarComponent = toolbar.component || NoOp;
|
|
72
|
+
const sections = getSortedChildren(components.filter(isSection), toolbar.key);
|
|
73
|
+
return /*#__PURE__*/React.createElement(ToolbarComponent, null, sections.map(section => /*#__PURE__*/React.createElement(ComponentRenderer, {
|
|
74
|
+
key: section.key,
|
|
75
|
+
component: section,
|
|
76
|
+
parents: [{
|
|
77
|
+
key: toolbar.key,
|
|
78
|
+
type: toolbar.type
|
|
79
|
+
}],
|
|
80
|
+
allComponents: components.filter(hasParents),
|
|
81
|
+
fallbacks: fallbacks
|
|
82
|
+
})));
|
|
83
|
+
};
|