UNPKG

@sanity/default-layout

Version:

The default layout components for Sanity

50 lines (48 loc) 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getOrderedTools; var _defaultLayout = _interopRequireDefault(require("config:@sanity/default-layout")); var _getRegisteredTools = require("./getRegisteredTools"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // @todo: remove the following line when part imports has been removed from this file ///<reference types="@sanity/types/parts" /> function getOrderedTools() { var config = _defaultLayout.default.toolSwitcher || {}; var order = config.order || []; var hidden = config.hidden || []; var tools = (0, _getRegisteredTools.getRegisteredTools)(); if (!order.length && !hidden.length) { return tools; } var keyed = tools.reduce((target, tool) => { var title = tool.title || '<unknown>'; if (!tool.name) { console.warn("Tool \"".concat(title, "\" does not have the required \"name\"-property")); // eslint-disable-line no-console return target; } if (target[tool.name]) { var existing = target[tool.name].tool.title; console.warn("Tools with duplicate name \"".concat(tool.name, "\" found (\"").concat(title, "\" and \"").concat(existing, "\")")); // eslint-disable-line no-console return target; } var toolIndex = order.indexOf(tool.name); target[tool.name] = { tool: tool, index: toolIndex === -1 ? +Infinity : toolIndex }; return target; }, {}); var isVisible = tool => hidden.indexOf(tool.name) === -1; return tools.filter(isVisible).sort((tool1, tool2) => { var toolA = keyed[tool1.name]; var toolB = keyed[tool2.name]; var indexA = toolA ? toolA.index : +Infinity; var indexB = toolB ? toolB.index : +Infinity; if (indexA === indexB) { return 0; } return indexA - indexB; }); }