UNPKG

@atlaskit/editor-plugin-floating-toolbar

Version:

Floating toolbar plugin for @atlaskit/editor-core

42 lines (40 loc) 1.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.consolidateOverflowDropdownItems = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); // if there are more than 1 item with type `overflow-dropdown`, we should only show one and combine the options var consolidateOverflowDropdownItems = exports.consolidateOverflowDropdownItems = function consolidateOverflowDropdownItems(overflowDropdowns) { if (overflowDropdowns.length <= 1) { return overflowDropdowns[0]; } var combinedItems = overflowDropdowns.reduce(function (acc, item) { if (item.options) { acc.push.apply(acc, (0, _toConsumableArray2.default)(item.options)); } return acc; }, []); // To filter out items that have a rank property, sort them by rank in descending order (highest rank first) var rankedItems = combinedItems.filter(function (item) { return 'rank' in item && typeof item.rank === 'number'; }).sort(function (a, b) { return (b.rank || 0) - (a.rank || 0); }); var unrankedItems = combinedItems.filter(function (item) { return !('rank' in item && typeof item.rank === 'number'); }); var sortedItems = [].concat((0, _toConsumableArray2.default)(rankedItems), (0, _toConsumableArray2.default)(unrankedItems)); var largestDropdownWidth = overflowDropdowns.reduce(function (acc, item) { if (item.dropdownWidth && item.dropdownWidth > acc) { return item.dropdownWidth; } return acc; }, 0); return { type: 'overflow-dropdown', dropdownWidth: largestDropdownWidth, options: sortedItems }; };