/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import styles from "./sidebar-cluster.module.scss"; import { observable } from "mobx"; import React, { useState } from "react"; import { broadcastMessage } from "../../../common/ipc"; import type { CatalogEntity, CatalogEntityContextMenu, CatalogEntityContextMenuContext } from "../../api/catalog-entity"; import { IpcRendererNavigationEvents } from "../../navigation/events"; import { Avatar } from "../avatar"; import { Icon } from "../icon"; import { navigate } from "../../navigation"; import { Menu, MenuItem } from "../menu"; import { ConfirmDialog } from "../confirm-dialog"; import { Tooltip } from "../tooltip"; import { withInjectables } from "@ogre-tools/injectable-react"; import hotbarStoreInjectable from "../../../common/hotbar-store.injectable"; import type { HotbarStore } from "../../../common/hotbar-store"; import { observer } from "mobx-react"; const contextMenu: CatalogEntityContextMenuContext = observable({ menuItems: [], navigate: (url: string, forceMainFrame = true) => { if (forceMainFrame) { broadcastMessage(IpcRendererNavigationEvents.NAVIGATE_IN_APP, url); } else { navigate(url); } }, }); function onMenuItemClick(menuItem: CatalogEntityContextMenu) { if (menuItem.confirm) { ConfirmDialog.open({ okButtonProps: { primary: false, accent: true, }, ok: () => { menuItem.onClick(); }, message: menuItem.confirm.message, }); } else { menuItem.onClick(); } } function renderLoadingSidebarCluster() { return (