@atlaskit/editor-common 74.57.0 → 74.58.0
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 +7 -0
- package/dist/cjs/element-browser/ElementBrowser.js +152 -0
- package/dist/cjs/element-browser/ViewMore.js +39 -0
- package/dist/cjs/element-browser/components/CategoryList.js +115 -0
- package/dist/cjs/element-browser/components/ElementBrowserLoader.js +36 -0
- package/dist/cjs/element-browser/components/ElementList/ElementList.js +256 -0
- package/dist/cjs/element-browser/components/ElementList/EmptyState.js +47 -0
- package/dist/cjs/element-browser/components/ElementList/NotFoundIllustration.js +70 -0
- package/dist/cjs/element-browser/components/ElementList/cellSizeAndPositionGetter.js +42 -0
- package/dist/cjs/element-browser/components/ElementList/utils.js +54 -0
- package/dist/cjs/element-browser/components/ElementSearch.js +88 -0
- package/dist/cjs/element-browser/components/StatelessElementBrowser.js +269 -0
- package/dist/cjs/element-browser/constants.js +41 -0
- package/dist/cjs/element-browser/hooks/use-container-width.js +70 -0
- package/dist/cjs/element-browser/hooks/use-focus.js +51 -0
- package/dist/cjs/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +286 -0
- package/dist/cjs/element-browser/index.js +20 -0
- package/dist/cjs/element-browser/types.js +12 -0
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/cjs/utils/performance/measure-render.js +4 -3
- package/dist/cjs/utils/performance/measure-tti.js +9 -3
- package/dist/es2019/element-browser/ElementBrowser.js +117 -0
- package/dist/es2019/element-browser/ViewMore.js +40 -0
- package/dist/es2019/element-browser/components/CategoryList.js +106 -0
- package/dist/es2019/element-browser/components/ElementBrowserLoader.js +21 -0
- package/dist/es2019/element-browser/components/ElementList/ElementList.js +320 -0
- package/dist/es2019/element-browser/components/ElementList/EmptyState.js +58 -0
- package/dist/es2019/element-browser/components/ElementList/NotFoundIllustration.js +65 -0
- package/dist/es2019/element-browser/components/ElementList/cellSizeAndPositionGetter.js +39 -0
- package/dist/es2019/element-browser/components/ElementList/utils.js +50 -0
- package/dist/es2019/element-browser/components/ElementSearch.js +117 -0
- package/dist/es2019/element-browser/components/StatelessElementBrowser.js +339 -0
- package/dist/es2019/element-browser/constants.js +23 -0
- package/dist/es2019/element-browser/hooks/use-container-width.js +59 -0
- package/dist/es2019/element-browser/hooks/use-focus.js +48 -0
- package/dist/es2019/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +284 -0
- package/dist/es2019/element-browser/index.js +2 -0
- package/dist/es2019/element-browser/types.js +5 -0
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/es2019/utils/performance/measure-render.js +2 -3
- package/dist/es2019/utils/performance/measure-tti.js +9 -3
- package/dist/esm/element-browser/ElementBrowser.js +142 -0
- package/dist/esm/element-browser/ViewMore.js +31 -0
- package/dist/esm/element-browser/components/CategoryList.js +105 -0
- package/dist/esm/element-browser/components/ElementBrowserLoader.js +23 -0
- package/dist/esm/element-browser/components/ElementList/ElementList.js +241 -0
- package/dist/esm/element-browser/components/ElementList/EmptyState.js +40 -0
- package/dist/esm/element-browser/components/ElementList/NotFoundIllustration.js +63 -0
- package/dist/esm/element-browser/components/ElementList/cellSizeAndPositionGetter.js +37 -0
- package/dist/esm/element-browser/components/ElementList/utils.js +46 -0
- package/dist/esm/element-browser/components/ElementSearch.js +77 -0
- package/dist/esm/element-browser/components/StatelessElementBrowser.js +258 -0
- package/dist/esm/element-browser/constants.js +23 -0
- package/dist/esm/element-browser/hooks/use-container-width.js +61 -0
- package/dist/esm/element-browser/hooks/use-focus.js +46 -0
- package/dist/esm/element-browser/hooks/use-select-and-focus-on-arrow-navigation.js +278 -0
- package/dist/esm/element-browser/index.js +2 -0
- package/dist/esm/element-browser/types.js +5 -0
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/esm/utils/performance/measure-render.js +2 -3
- package/dist/esm/utils/performance/measure-tti.js +9 -3
- package/dist/types/analytics/types/general-events.d.ts +2 -1
- package/dist/types/element-browser/ElementBrowser.d.ts +37 -0
- package/dist/types/element-browser/ViewMore.d.ts +6 -0
- package/dist/types/element-browser/components/CategoryList.d.ts +10 -0
- package/dist/types/element-browser/components/ElementBrowserLoader.d.ts +6 -0
- package/dist/types/element-browser/components/ElementList/ElementList.d.ts +33 -0
- package/dist/types/element-browser/components/ElementList/EmptyState.d.ts +6 -0
- package/dist/types/element-browser/components/ElementList/NotFoundIllustration.d.ts +2 -0
- package/dist/types/element-browser/components/ElementList/cellSizeAndPositionGetter.d.ts +7 -0
- package/dist/types/element-browser/components/ElementList/utils.d.ts +12 -0
- package/dist/types/element-browser/components/ElementSearch.d.ts +18 -0
- package/dist/types/element-browser/components/StatelessElementBrowser.d.ts +23 -0
- package/dist/types/element-browser/constants.d.ts +19 -0
- package/dist/types/element-browser/hooks/use-container-width.d.ts +33 -0
- package/dist/types/element-browser/hooks/use-focus.d.ts +35 -0
- package/dist/types/element-browser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +72 -0
- package/dist/types/element-browser/index.d.ts +2 -0
- package/dist/types/element-browser/types.d.ts +12 -0
- package/dist/types/types/quick-insert.d.ts +1 -0
- package/dist/types/utils/performance/measure-render.d.ts +6 -4
- package/dist/types/utils/performance/measure-tti.d.ts +1 -1
- package/dist/types-ts4.5/analytics/types/general-events.d.ts +2 -1
- package/dist/types-ts4.5/element-browser/ElementBrowser.d.ts +37 -0
- package/dist/types-ts4.5/element-browser/ViewMore.d.ts +6 -0
- package/dist/types-ts4.5/element-browser/components/CategoryList.d.ts +10 -0
- package/dist/types-ts4.5/element-browser/components/ElementBrowserLoader.d.ts +6 -0
- package/dist/types-ts4.5/element-browser/components/ElementList/ElementList.d.ts +33 -0
- package/dist/types-ts4.5/element-browser/components/ElementList/EmptyState.d.ts +6 -0
- package/dist/types-ts4.5/element-browser/components/ElementList/NotFoundIllustration.d.ts +2 -0
- package/dist/types-ts4.5/element-browser/components/ElementList/cellSizeAndPositionGetter.d.ts +7 -0
- package/dist/types-ts4.5/element-browser/components/ElementList/utils.d.ts +12 -0
- package/dist/types-ts4.5/element-browser/components/ElementSearch.d.ts +18 -0
- package/dist/types-ts4.5/element-browser/components/StatelessElementBrowser.d.ts +23 -0
- package/dist/types-ts4.5/element-browser/constants.d.ts +19 -0
- package/dist/types-ts4.5/element-browser/hooks/use-container-width.d.ts +33 -0
- package/dist/types-ts4.5/element-browser/hooks/use-focus.d.ts +35 -0
- package/dist/types-ts4.5/element-browser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +72 -0
- package/dist/types-ts4.5/element-browser/index.d.ts +2 -0
- package/dist/types-ts4.5/element-browser/types.d.ts +12 -0
- package/dist/types-ts4.5/types/quick-insert.d.ts +1 -0
- package/dist/types-ts4.5/utils/performance/measure-render.d.ts +6 -4
- package/dist/types-ts4.5/utils/performance/measure-tti.d.ts +1 -1
- package/element-browser/package.json +15 -0
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 74.58.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`c06bb97591a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c06bb97591a) - [ED-19023] Add distorted duration to TTI event (tracking tab visibility)
|
|
8
|
+
- [`d4cbb84052d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d4cbb84052d) - Move element-browser to `editor-common` to decouple quick-insert plugin.
|
|
9
|
+
|
|
3
10
|
## 74.57.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
var _StatelessElementBrowser = _interopRequireDefault(require("./components/StatelessElementBrowser"));
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
21
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
22
|
+
var ElementBrowser = /*#__PURE__*/function (_PureComponent) {
|
|
23
|
+
(0, _inherits2.default)(ElementBrowser, _PureComponent);
|
|
24
|
+
var _super = _createSuper(ElementBrowser);
|
|
25
|
+
function ElementBrowser() {
|
|
26
|
+
var _this;
|
|
27
|
+
(0, _classCallCheck2.default)(this, ElementBrowser);
|
|
28
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
29
|
+
args[_key] = arguments[_key];
|
|
30
|
+
}
|
|
31
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
32
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
|
|
33
|
+
categories: [],
|
|
34
|
+
items: [],
|
|
35
|
+
searchTerm: '',
|
|
36
|
+
selectedCategory: _this.props.defaultCategory
|
|
37
|
+
});
|
|
38
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getCategories", function () {
|
|
39
|
+
var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.fetchItems();
|
|
40
|
+
return (
|
|
41
|
+
// NOTE: we fetch all items to determine available categories.
|
|
42
|
+
_this.filterCategories(items, _this.props.categories)
|
|
43
|
+
);
|
|
44
|
+
});
|
|
45
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "filterCategories", function (items) {
|
|
46
|
+
var categories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
47
|
+
var showCategories = _this.props.showCategories;
|
|
48
|
+
if (!showCategories) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
return categories.filter(function (category) {
|
|
52
|
+
return category.name === 'all' || items.some(function (item) {
|
|
53
|
+
return (item.categories || []).includes(category.name);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fetchItems", function (query, category) {
|
|
58
|
+
return _this.props.getItems(query, category);
|
|
59
|
+
});
|
|
60
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleSearch", function (searchTerm) {
|
|
61
|
+
var defaultCategory = _this.props.defaultCategory;
|
|
62
|
+
_this.setState({
|
|
63
|
+
searchTerm: searchTerm,
|
|
64
|
+
selectedCategory: defaultCategory
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleCategorySelection", function (clickedCategory) {
|
|
68
|
+
var stateCategoryValue = _this.state.selectedCategory;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Reset selection if clicked on the same category twice.
|
|
72
|
+
*/
|
|
73
|
+
if (stateCategoryValue === clickedCategory.name) {
|
|
74
|
+
return _this.setState({
|
|
75
|
+
selectedCategory: _this.props.defaultCategory
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
_this.setState({
|
|
79
|
+
selectedCategory: clickedCategory.name,
|
|
80
|
+
searchTerm: ''
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
return _this;
|
|
84
|
+
}
|
|
85
|
+
(0, _createClass2.default)(ElementBrowser, [{
|
|
86
|
+
key: "componentDidMount",
|
|
87
|
+
value: function componentDidMount() {
|
|
88
|
+
var items = this.fetchItems();
|
|
89
|
+
this.setState({
|
|
90
|
+
items: items,
|
|
91
|
+
categories: this.getCategories(items)
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}, {
|
|
95
|
+
key: "componentDidUpdate",
|
|
96
|
+
value: function componentDidUpdate(prevProps, prevState) {
|
|
97
|
+
var _this$state = this.state,
|
|
98
|
+
searchTerm = _this$state.searchTerm,
|
|
99
|
+
selectedCategory = _this$state.selectedCategory;
|
|
100
|
+
|
|
101
|
+
// Update both items and categories when there's a new getItems
|
|
102
|
+
if (this.props.getItems !== prevProps.getItems) {
|
|
103
|
+
this.setState({
|
|
104
|
+
categories: this.getCategories(),
|
|
105
|
+
items: this.fetchItems(searchTerm, selectedCategory)
|
|
106
|
+
});
|
|
107
|
+
} else if (searchTerm !== prevState.searchTerm || selectedCategory !== prevState.selectedCategory) {
|
|
108
|
+
this.setState({
|
|
109
|
+
items: this.fetchItems(searchTerm, selectedCategory)
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}, {
|
|
114
|
+
key: "render",
|
|
115
|
+
value: function render() {
|
|
116
|
+
var _this$props = this.props,
|
|
117
|
+
onInsertItem = _this$props.onInsertItem,
|
|
118
|
+
onSelectItem = _this$props.onSelectItem,
|
|
119
|
+
showSearch = _this$props.showSearch,
|
|
120
|
+
showCategories = _this$props.showCategories,
|
|
121
|
+
mode = _this$props.mode,
|
|
122
|
+
emptyStateHandler = _this$props.emptyStateHandler,
|
|
123
|
+
viewMoreItem = _this$props.viewMoreItem;
|
|
124
|
+
var _this$state2 = this.state,
|
|
125
|
+
categories = _this$state2.categories,
|
|
126
|
+
searchTerm = _this$state2.searchTerm,
|
|
127
|
+
selectedCategory = _this$state2.selectedCategory,
|
|
128
|
+
items = _this$state2.items;
|
|
129
|
+
return /*#__PURE__*/_react.default.createElement(_StatelessElementBrowser.default, {
|
|
130
|
+
items: items,
|
|
131
|
+
categories: categories,
|
|
132
|
+
onSearch: this.handleSearch,
|
|
133
|
+
onSelectCategory: this.handleCategorySelection,
|
|
134
|
+
onSelectItem: onSelectItem,
|
|
135
|
+
onInsertItem: onInsertItem,
|
|
136
|
+
selectedCategory: selectedCategory,
|
|
137
|
+
showSearch: showSearch,
|
|
138
|
+
showCategories: showCategories,
|
|
139
|
+
mode: mode,
|
|
140
|
+
searchTerm: searchTerm,
|
|
141
|
+
emptyStateHandler: emptyStateHandler,
|
|
142
|
+
viewMoreItem: viewMoreItem
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}]);
|
|
146
|
+
return ElementBrowser;
|
|
147
|
+
}(_react.PureComponent);
|
|
148
|
+
exports.default = ElementBrowser;
|
|
149
|
+
(0, _defineProperty2.default)(ElementBrowser, "defaultProps", {
|
|
150
|
+
defaultCategory: 'all',
|
|
151
|
+
onInsertItem: function onInsertItem() {}
|
|
152
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ViewMore = void 0;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _react2 = require("@emotion/react");
|
|
11
|
+
var _menu = require("@atlaskit/menu");
|
|
12
|
+
var _templateObject, _templateObject2;
|
|
13
|
+
/** @jsx jsx */
|
|
14
|
+
var itemBefore = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 40px;\n height: 40px;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: ", ";\n"])), "var(--ds-space-050, 4px)");
|
|
15
|
+
var ViewMore = function ViewMore(_ref) {
|
|
16
|
+
var item = _ref.item,
|
|
17
|
+
focus = _ref.focus;
|
|
18
|
+
var ref = (0, _react.useRef)(null);
|
|
19
|
+
(0, _react.useEffect)(function () {
|
|
20
|
+
if (ref.current && focus) {
|
|
21
|
+
ref.current.focus();
|
|
22
|
+
}
|
|
23
|
+
}, [focus]);
|
|
24
|
+
return (0, _react2.jsx)(_menu.Section, {
|
|
25
|
+
hasSeparator: true
|
|
26
|
+
}, (0, _react2.jsx)(_menu.ButtonItem, {
|
|
27
|
+
onClick: item.action,
|
|
28
|
+
iconBefore: (0, _react2.jsx)("div", {
|
|
29
|
+
css: itemBefore
|
|
30
|
+
}, item.icon()),
|
|
31
|
+
"aria-describedby": item.title,
|
|
32
|
+
"data-testid": "view-more-elements-item"
|
|
33
|
+
// @ts-ignore Overriding Menu styles is not supported
|
|
34
|
+
,
|
|
35
|
+
css: (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n padding: 0px ", ";\n "])), "var(--ds-space-150, 12px)"),
|
|
36
|
+
ref: ref
|
|
37
|
+
}, item.title));
|
|
38
|
+
};
|
|
39
|
+
exports.ViewMore = ViewMore;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _react2 = require("@emotion/react");
|
|
16
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
17
|
+
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
18
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
19
|
+
var _analytics = require("../../analytics");
|
|
20
|
+
var _constants = require("../constants");
|
|
21
|
+
var _useFocus = _interopRequireDefault(require("../hooks/use-focus"));
|
|
22
|
+
var _templateObject;
|
|
23
|
+
var _excluded = ["categories"],
|
|
24
|
+
_excluded2 = ["buttonStyles"];
|
|
25
|
+
/** @jsx jsx */
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
29
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
30
|
+
function CategoryList(_ref) {
|
|
31
|
+
var _ref$categories = _ref.categories,
|
|
32
|
+
categories = _ref$categories === void 0 ? [] : _ref$categories,
|
|
33
|
+
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
34
|
+
var _React$useState = _react.default.useState(null),
|
|
35
|
+
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
36
|
+
focusedCategoryIndex = _React$useState2[0],
|
|
37
|
+
setFocusedCategoryIndex = _React$useState2[1];
|
|
38
|
+
return (0, _react2.jsx)(_react.Fragment, null, categories.map(function (category, index) {
|
|
39
|
+
return (0, _react2.jsx)(CategoryListItem, (0, _extends2.default)({
|
|
40
|
+
key: category.title,
|
|
41
|
+
index: index,
|
|
42
|
+
category: category,
|
|
43
|
+
focus: focusedCategoryIndex === index,
|
|
44
|
+
setFocusedCategoryIndex: setFocusedCategoryIndex
|
|
45
|
+
}, props));
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
function CategoryListItem(_ref2) {
|
|
49
|
+
var category = _ref2.category,
|
|
50
|
+
onSelectCategory = _ref2.onSelectCategory,
|
|
51
|
+
selectedCategory = _ref2.selectedCategory,
|
|
52
|
+
index = _ref2.index,
|
|
53
|
+
focus = _ref2.focus,
|
|
54
|
+
setFocusedCategoryIndex = _ref2.setFocusedCategoryIndex,
|
|
55
|
+
createAnalyticsEvent = _ref2.createAnalyticsEvent;
|
|
56
|
+
var ref = (0, _useFocus.default)(focus);
|
|
57
|
+
var onClick = (0, _react.useCallback)(function () {
|
|
58
|
+
onSelectCategory(category);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* When user double clicks on same category, focus on first item.
|
|
62
|
+
*/
|
|
63
|
+
if (selectedCategory === category.name) {
|
|
64
|
+
setFocusedCategoryIndex(0);
|
|
65
|
+
} else {
|
|
66
|
+
setFocusedCategoryIndex(index);
|
|
67
|
+
}
|
|
68
|
+
(0, _analytics.fireAnalyticsEvent)(createAnalyticsEvent)({
|
|
69
|
+
payload: {
|
|
70
|
+
action: _analytics.ACTION.CLICKED,
|
|
71
|
+
actionSubject: _analytics.ACTION_SUBJECT.BUTTON,
|
|
72
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.BUTTON_CATEGORY,
|
|
73
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}, [onSelectCategory, category, index, selectedCategory, setFocusedCategoryIndex, createAnalyticsEvent]);
|
|
77
|
+
var onFocus = (0, _react.useCallback)(function () {
|
|
78
|
+
if (!focus) {
|
|
79
|
+
setFocusedCategoryIndex(index);
|
|
80
|
+
}
|
|
81
|
+
}, [focus, index, setFocusedCategoryIndex]);
|
|
82
|
+
var getTheme = (0, _react.useCallback)(function (currentTheme, themeProps) {
|
|
83
|
+
var _currentTheme = currentTheme(themeProps),
|
|
84
|
+
buttonStyles = _currentTheme.buttonStyles,
|
|
85
|
+
rest = (0, _objectWithoutProperties2.default)(_currentTheme, _excluded2);
|
|
86
|
+
return _objectSpread({
|
|
87
|
+
buttonStyles: _objectSpread(_objectSpread({}, buttonStyles), {}, {
|
|
88
|
+
textAlign: 'start',
|
|
89
|
+
marginLeft: "var(--ds-space-025, 2px)",
|
|
90
|
+
height: '100%',
|
|
91
|
+
width: '100%',
|
|
92
|
+
color: category.name !== selectedCategory ? "var(--ds-text, ".concat(_colors.N800, ")") : "var(--ds-text-selected, ".concat(_colors.B400, ")")
|
|
93
|
+
}, category.name === selectedCategory && {
|
|
94
|
+
background: "var(--ds-background-selected, ".concat(_colors.B50, ")")
|
|
95
|
+
})
|
|
96
|
+
}, rest);
|
|
97
|
+
}, [category.name, selectedCategory]);
|
|
98
|
+
return (0, _react2.jsx)("div", {
|
|
99
|
+
css: buttonWrapper
|
|
100
|
+
}, (0, _react2.jsx)(_customThemeButton.default, {
|
|
101
|
+
appearance: "subtle",
|
|
102
|
+
isSelected: selectedCategory === category.name,
|
|
103
|
+
onClick: onClick,
|
|
104
|
+
onFocus: onFocus,
|
|
105
|
+
theme: getTheme,
|
|
106
|
+
ref: ref,
|
|
107
|
+
testId: "element-browser-category-item"
|
|
108
|
+
}, category.title));
|
|
109
|
+
}
|
|
110
|
+
var buttonWrapper = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n height: ", "px;\n margin: ", " ", "\n ", " 0;\n\n @media (min-width: ", "px) {\n :not(:last-child) {\n margin-bottom: 0;\n }\n }\n"])), _constants.GRID_SIZE * 4, "var(--ds-space-050, 4px)", "var(--ds-space-050, 4px)", "var(--ds-space-050, 4px)", _constants.DEVICE_BREAKPOINT_NUMBERS.medium);
|
|
111
|
+
var MemoizedCategoryListWithAnalytics = /*#__PURE__*/(0, _react.memo)((0, _analyticsNext.withAnalyticsContext)({
|
|
112
|
+
component: 'CategoryList'
|
|
113
|
+
})(CategoryList));
|
|
114
|
+
var _default = MemoizedCategoryListWithAnalytics;
|
|
115
|
+
exports.default = _default;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
var _react2 = require("@emotion/react");
|
|
12
|
+
var _reactLoadable = _interopRequireDefault(require("react-loadable"));
|
|
13
|
+
var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
|
|
14
|
+
var _templateObject;
|
|
15
|
+
/** @jsx jsx */
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
|
+
var spinnerContainer = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n"])));
|
|
19
|
+
var ElementBrowserLoader = (0, _reactLoadable.default)({
|
|
20
|
+
loader: function loader() {
|
|
21
|
+
return Promise.resolve().then(function () {
|
|
22
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_editor-element-browser" */'../ElementBrowser'));
|
|
23
|
+
}).then(function (module) {
|
|
24
|
+
return module.default;
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
loading: function loading() {
|
|
28
|
+
return (0, _react2.jsx)("div", {
|
|
29
|
+
css: spinnerContainer
|
|
30
|
+
}, (0, _react2.jsx)(_spinner.default, {
|
|
31
|
+
size: "medium"
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
var _default = ElementBrowserLoader;
|
|
36
|
+
exports.default = _default;
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ElementItem = ElementItem;
|
|
9
|
+
exports.itemIcon = exports.default = exports.ICON_WIDTH = exports.ICON_HEIGHT = void 0;
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _react2 = require("@emotion/react");
|
|
16
|
+
var _AutoSizer = require("react-virtualized/dist/commonjs/AutoSizer");
|
|
17
|
+
var _Collection = require("react-virtualized/dist/commonjs/Collection");
|
|
18
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
19
|
+
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
20
|
+
var _shortcut = require("@atlaskit/editor-shared-styles/shortcut");
|
|
21
|
+
var _menu = require("@atlaskit/menu");
|
|
22
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
23
|
+
var _constants = require("@atlaskit/theme/constants");
|
|
24
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
25
|
+
var _analytics = require("../../../analytics");
|
|
26
|
+
var _quickInsert = require("../../../quick-insert");
|
|
27
|
+
var _constants2 = require("../../constants");
|
|
28
|
+
var _useContainerWidth2 = _interopRequireDefault(require("../../hooks/use-container-width"));
|
|
29
|
+
var _useFocus = _interopRequireDefault(require("../../hooks/use-focus"));
|
|
30
|
+
var _types = require("../../types");
|
|
31
|
+
var _cellSizeAndPositionGetter = _interopRequireDefault(require("./cellSizeAndPositionGetter"));
|
|
32
|
+
var _EmptyState = _interopRequireDefault(require("./EmptyState"));
|
|
33
|
+
var _utils = require("./utils");
|
|
34
|
+
var _excluded = ["items", "mode", "selectedItemIndex", "focusedItemIndex", "setColumnCount", "createAnalyticsEvent", "emptyStateHandler", "selectedCategory", "searchTerm"];
|
|
35
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
|
|
36
|
+
/** @jsx jsx */
|
|
37
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
38
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
|
+
var ICON_HEIGHT = 40;
|
|
40
|
+
exports.ICON_HEIGHT = ICON_HEIGHT;
|
|
41
|
+
var ICON_WIDTH = 40;
|
|
42
|
+
exports.ICON_WIDTH = ICON_WIDTH;
|
|
43
|
+
var itemIcon = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: ", "px;\n height: ", "px;\n overflow: hidden;\n border: 1px solid ", "; /* N60 at 50% */\n border-radius: ", "px;\n box-sizing: border-box;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n div {\n width: ", "px;\n height: ", "px;\n }\n"])), ICON_WIDTH, ICON_HEIGHT, "var(--ds-border, rgba(223, 225, 229, 0.5))", (0, _constants.borderRadius)(), ICON_WIDTH, ICON_HEIGHT);
|
|
44
|
+
exports.itemIcon = itemIcon;
|
|
45
|
+
function ElementList(_ref) {
|
|
46
|
+
var items = _ref.items,
|
|
47
|
+
mode = _ref.mode,
|
|
48
|
+
selectedItemIndex = _ref.selectedItemIndex,
|
|
49
|
+
focusedItemIndex = _ref.focusedItemIndex,
|
|
50
|
+
setColumnCount = _ref.setColumnCount,
|
|
51
|
+
createAnalyticsEvent = _ref.createAnalyticsEvent,
|
|
52
|
+
emptyStateHandler = _ref.emptyStateHandler,
|
|
53
|
+
selectedCategory = _ref.selectedCategory,
|
|
54
|
+
searchTerm = _ref.searchTerm,
|
|
55
|
+
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
56
|
+
var _useContainerWidth = (0, _useContainerWidth2.default)(),
|
|
57
|
+
containerWidth = _useContainerWidth.containerWidth,
|
|
58
|
+
ContainerWidthMonitor = _useContainerWidth.ContainerWidthMonitor;
|
|
59
|
+
var _useState = (0, _react.useState)(_constants2.SCROLLBAR_WIDTH),
|
|
60
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
61
|
+
scrollbarWidth = _useState2[0],
|
|
62
|
+
setScrollbarWidth = _useState2[1];
|
|
63
|
+
var fullMode = mode === _types.Modes.full;
|
|
64
|
+
(0, _react.useEffect)(function () {
|
|
65
|
+
/**
|
|
66
|
+
* More of an optimization condition.
|
|
67
|
+
* Initially the containerWidths are reported 0 twice.
|
|
68
|
+
**/
|
|
69
|
+
if (fullMode && containerWidth > 0) {
|
|
70
|
+
setColumnCount((0, _utils.getColumnCount)(containerWidth));
|
|
71
|
+
var updatedScrollbarWidth = (0, _utils.getScrollbarWidth)();
|
|
72
|
+
if (updatedScrollbarWidth > 0) {
|
|
73
|
+
setScrollbarWidth(updatedScrollbarWidth);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, [fullMode, containerWidth, setColumnCount, scrollbarWidth]);
|
|
77
|
+
var onExternalLinkClick = (0, _react.useCallback)(function () {
|
|
78
|
+
(0, _analytics.fireAnalyticsEvent)(createAnalyticsEvent)({
|
|
79
|
+
payload: {
|
|
80
|
+
action: _analytics.ACTION.VISITED,
|
|
81
|
+
actionSubject: _analytics.ACTION_SUBJECT.SMART_LINK,
|
|
82
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}, [createAnalyticsEvent]);
|
|
86
|
+
var cellRenderer = (0, _react.useMemo)(function () {
|
|
87
|
+
return function (_ref2) {
|
|
88
|
+
var index = _ref2.index,
|
|
89
|
+
key = _ref2.key,
|
|
90
|
+
style = _ref2.style;
|
|
91
|
+
if (items[index] == null) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
return (0, _react2.jsx)("div", {
|
|
95
|
+
style: style,
|
|
96
|
+
key: key,
|
|
97
|
+
className: "element-item-wrapper",
|
|
98
|
+
css: elementItemWrapper
|
|
99
|
+
}, (0, _react2.jsx)(MemoizedElementItem, (0, _extends2.default)({
|
|
100
|
+
inlineMode: !fullMode,
|
|
101
|
+
index: index,
|
|
102
|
+
item: items[index],
|
|
103
|
+
selected: selectedItemIndex === index,
|
|
104
|
+
focus: focusedItemIndex === index
|
|
105
|
+
}, props)));
|
|
106
|
+
};
|
|
107
|
+
}, [items, fullMode, selectedItemIndex, focusedItemIndex, props]);
|
|
108
|
+
return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(ContainerWidthMonitor, null), !items.length ? emptyStateHandler ? emptyStateHandler({
|
|
109
|
+
mode: mode,
|
|
110
|
+
selectedCategory: selectedCategory,
|
|
111
|
+
searchTerm: searchTerm
|
|
112
|
+
}) : (0, _react2.jsx)(_EmptyState.default, {
|
|
113
|
+
onExternalLinkClick: onExternalLinkClick
|
|
114
|
+
}) : (0, _react2.jsx)("div", {
|
|
115
|
+
css: elementItemsWrapper,
|
|
116
|
+
"data-testid": "element-items"
|
|
117
|
+
}, (0, _react2.jsx)(_react.Fragment, null, containerWidth > 0 && (0, _react2.jsx)(_AutoSizer.AutoSizer, {
|
|
118
|
+
disableWidth: true
|
|
119
|
+
}, function (_ref3) {
|
|
120
|
+
var height = _ref3.height;
|
|
121
|
+
return (0, _react2.jsx)(_Collection.Collection, {
|
|
122
|
+
cellCount: items.length,
|
|
123
|
+
cellRenderer: cellRenderer,
|
|
124
|
+
cellSizeAndPositionGetter: (0, _cellSizeAndPositionGetter.default)(containerWidth - _constants2.ELEMENT_LIST_PADDING * 2, scrollbarWidth),
|
|
125
|
+
height: height,
|
|
126
|
+
width: containerWidth - _constants2.ELEMENT_LIST_PADDING * 2 // containerWidth - padding on Left/Right (for focus outline)
|
|
127
|
+
/**
|
|
128
|
+
* Refresh Collection on WidthObserver value change.
|
|
129
|
+
* Length of the items used to force re-render to solve Firefox bug with react-virtualized retaining
|
|
130
|
+
* scroll position after updating the data. If new data has different number of cells, a re-render
|
|
131
|
+
* is forced to prevent the scroll position render bug.
|
|
132
|
+
*/,
|
|
133
|
+
key: containerWidth + items.length,
|
|
134
|
+
scrollToCell: selectedItemIndex
|
|
135
|
+
});
|
|
136
|
+
}))));
|
|
137
|
+
}
|
|
138
|
+
var MemoizedElementItem = /*#__PURE__*/(0, _react.memo)(ElementItem);
|
|
139
|
+
MemoizedElementItem.displayName = 'MemoizedElementItem';
|
|
140
|
+
function ElementItem(_ref4) {
|
|
141
|
+
var inlineMode = _ref4.inlineMode,
|
|
142
|
+
selected = _ref4.selected,
|
|
143
|
+
item = _ref4.item,
|
|
144
|
+
index = _ref4.index,
|
|
145
|
+
onInsertItem = _ref4.onInsertItem,
|
|
146
|
+
focus = _ref4.focus,
|
|
147
|
+
setFocusedItemIndex = _ref4.setFocusedItemIndex;
|
|
148
|
+
var ref = (0, _useFocus.default)(focus);
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Note: props.onSelectItem(item) is not called here as the StatelessElementBrowser's
|
|
152
|
+
* useEffect would trigger it on selectedItemIndex change. (Line 106-110)
|
|
153
|
+
* This implementation was changed for keyboard/click selection to work with `onInsertItem`.
|
|
154
|
+
*/
|
|
155
|
+
var onClick = (0, _react.useCallback)(function (e) {
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
e.stopPropagation();
|
|
158
|
+
setFocusedItemIndex(index);
|
|
159
|
+
switch (e.nativeEvent.detail) {
|
|
160
|
+
case 0:
|
|
161
|
+
onInsertItem(item);
|
|
162
|
+
break;
|
|
163
|
+
case 1:
|
|
164
|
+
if (inlineMode) {
|
|
165
|
+
onInsertItem(item);
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
case 2:
|
|
169
|
+
if (!inlineMode) {
|
|
170
|
+
onInsertItem(item);
|
|
171
|
+
}
|
|
172
|
+
break;
|
|
173
|
+
default:
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
}, [index, inlineMode, item, onInsertItem, setFocusedItemIndex]);
|
|
177
|
+
var icon = item.icon,
|
|
178
|
+
title = item.title,
|
|
179
|
+
description = item.description,
|
|
180
|
+
keyshortcut = item.keyshortcut;
|
|
181
|
+
return (0, _react2.jsx)(_tooltip.default, {
|
|
182
|
+
content: description,
|
|
183
|
+
testId: "element-item-tooltip-".concat(index)
|
|
184
|
+
}, (0, _react2.jsx)(_menu.ButtonItem, {
|
|
185
|
+
onClick: onClick,
|
|
186
|
+
iconBefore: (0, _react2.jsx)(ElementBefore, {
|
|
187
|
+
icon: icon,
|
|
188
|
+
title: title
|
|
189
|
+
}),
|
|
190
|
+
isSelected: selected,
|
|
191
|
+
"aria-describedby": title,
|
|
192
|
+
ref: ref,
|
|
193
|
+
testId: "element-item-".concat(index)
|
|
194
|
+
}, (0, _react2.jsx)(ItemContent, {
|
|
195
|
+
style: inlineMode ? null : itemStyleOverrides,
|
|
196
|
+
tabIndex: 0,
|
|
197
|
+
title: title,
|
|
198
|
+
description: description,
|
|
199
|
+
keyshortcut: keyshortcut
|
|
200
|
+
})));
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Inline mode should use the existing Align-items:center value.
|
|
205
|
+
*/
|
|
206
|
+
var itemStyleOverrides = {
|
|
207
|
+
alignItems: 'flex-start'
|
|
208
|
+
};
|
|
209
|
+
var ElementBefore = /*#__PURE__*/(0, _react.memo)(function (_ref5) {
|
|
210
|
+
var icon = _ref5.icon,
|
|
211
|
+
title = _ref5.title;
|
|
212
|
+
return (0, _react2.jsx)("div", {
|
|
213
|
+
css: [itemIcon, itemIconStyle]
|
|
214
|
+
}, icon ? icon() : (0, _react2.jsx)(_quickInsert.IconFallback, null));
|
|
215
|
+
});
|
|
216
|
+
var ItemContent = /*#__PURE__*/(0, _react.memo)(function (_ref6) {
|
|
217
|
+
var title = _ref6.title,
|
|
218
|
+
description = _ref6.description,
|
|
219
|
+
keyshortcut = _ref6.keyshortcut;
|
|
220
|
+
return (0, _react2.jsx)("div", {
|
|
221
|
+
css: itemBody,
|
|
222
|
+
className: "item-body"
|
|
223
|
+
}, (0, _react2.jsx)("div", {
|
|
224
|
+
css: itemText
|
|
225
|
+
}, (0, _react2.jsx)("div", {
|
|
226
|
+
css: itemTitleWrapper
|
|
227
|
+
}, (0, _react2.jsx)("p", {
|
|
228
|
+
css: itemTitle
|
|
229
|
+
}, title), (0, _react2.jsx)("div", {
|
|
230
|
+
css: itemAfter
|
|
231
|
+
}, keyshortcut && (0, _react2.jsx)("div", {
|
|
232
|
+
css: _shortcut.shortcutStyle
|
|
233
|
+
}, keyshortcut))), description && (0, _react2.jsx)("p", {
|
|
234
|
+
css: itemDescription
|
|
235
|
+
}, description)));
|
|
236
|
+
});
|
|
237
|
+
var elementItemsWrapper = (0, _react2.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n flex: 1;\n flex-flow: row wrap;\n align-items: flex-start;\n justify-content: flex-start;\n overflow: hidden;\n padding: ", "px; // For Focus outline\n\n .ReactVirtualized__Collection {\n border-radius: 3px; // Standard border-radius across other components like Search or Item.\n outline: none;\n\n :focus {\n box-shadow: 0 0 0 ", "px\n ", ";\n }\n }\n .ReactVirtualized__Collection__innerScrollContainer {\n div[class='element-item-wrapper']:last-child {\n padding-bottom: ", ";\n }\n }\n"])), _constants2.ELEMENT_LIST_PADDING, _constants2.ELEMENT_LIST_PADDING, "var(--ds-border-focused, ".concat(_colors.B100, ")"), "var(--ds-space-050, 4px)");
|
|
238
|
+
var elementItemWrapper = (0, _react2.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n div {\n button {\n height: 75px;\n align-items: flex-start;\n padding: ", " ", " 11px;\n }\n }\n"])), "var(--ds-space-150, 12px)", "var(--ds-space-150, 12px)");
|
|
239
|
+
var itemBody = (0, _react2.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n line-height: 1.4;\n width: 100%;\n\n margin-top: -2px; // Fixes the Item Icon and text's alignment issue\n"])));
|
|
240
|
+
|
|
241
|
+
/*
|
|
242
|
+
* -webkit-line-clamp is also supported by firefox 🎉
|
|
243
|
+
* https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/68#CSS
|
|
244
|
+
*/
|
|
245
|
+
var multilineStyle = (0, _react2.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n"])));
|
|
246
|
+
var itemDescription = (0, _react2.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n ", ";\n\n overflow: hidden;\n font-size: ", ";\n color: ", ";\n margin-top: ", ";\n"])), multilineStyle, (0, _editorSharedStyles.relativeFontSizeToBase16)(11.67), "var(--ds-text-subtle, ".concat(_colors.N200, ")"), "var(--ds-space-025, 2px)");
|
|
247
|
+
var itemText = (0, _react2.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n width: inherit;\n white-space: initial;\n"])));
|
|
248
|
+
var itemTitleWrapper = (0, _react2.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n justify-content: space-between; // Title and keyboardshortcut are rendered in the same block\n"])));
|
|
249
|
+
var itemTitle = (0, _react2.css)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n width: 100%;\n overflow: hidden;\n\n white-space: nowrap;\n text-overflow: ellipsis;\n"])));
|
|
250
|
+
var itemAfter = (0, _react2.css)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["\n flex: 0 0 auto;\n"])));
|
|
251
|
+
var itemIconStyle = (0, _react2.css)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["\n img {\n height: 40px;\n width: 40px;\n object-fit: cover;\n }\n"])));
|
|
252
|
+
var MemoizedElementListWithAnalytics = /*#__PURE__*/(0, _react.memo)((0, _analyticsNext.withAnalyticsContext)({
|
|
253
|
+
component: 'ElementList'
|
|
254
|
+
})(ElementList));
|
|
255
|
+
var _default = MemoizedElementListWithAnalytics;
|
|
256
|
+
exports.default = _default;
|