186 lines
5.2 KiB
JavaScript
186 lines
5.2 KiB
JavaScript
function AssemblyContextMenuItemLabel({ children }) {
|
|
return <span className="min-w-0 truncate">{children}</span>;
|
|
}
|
|
|
|
export default function AssemblyContextMenuItems({
|
|
Item,
|
|
Separator,
|
|
itemClassName = "text-xs",
|
|
selected = false,
|
|
isolated = false,
|
|
hidden = false,
|
|
actionCount = 1,
|
|
copyReferenceDisabled = false,
|
|
copyEditPointDisabled = true,
|
|
showCopyEditPoint = false,
|
|
selectDisabled = false,
|
|
showIsolate = true,
|
|
isolateDisabled = false,
|
|
showExitAllIsolate = false,
|
|
exitAllIsolateDisabled = false,
|
|
showHideOther = true,
|
|
hideOtherDisabled = false,
|
|
hideAllDisabled = true,
|
|
hideAllLabel = "Show all",
|
|
showVisibility = true,
|
|
visibilityDisabled = false,
|
|
showCameraActions = false,
|
|
resetZoomDisabled = false,
|
|
zoomToFitDisabled = false,
|
|
showHideAll = false,
|
|
showExpandCollapse = false,
|
|
expandSelectedDisabled = true,
|
|
collapseSelectedDisabled = true,
|
|
expandAllDisabled = true,
|
|
collapseAllDisabled = true,
|
|
onCopyReference,
|
|
onCopyEditPoint,
|
|
onSelect,
|
|
onIsolate,
|
|
onExitAllIsolate,
|
|
onHideOther,
|
|
onHideAll,
|
|
onToggleVisibility,
|
|
onResetZoom,
|
|
onZoomToFit,
|
|
onExpandSelected,
|
|
onCollapseSelected,
|
|
onExpandAll,
|
|
onCollapseAll
|
|
}) {
|
|
const selectLabel = selected ? "Deselect" : "Select";
|
|
const isolateLabel = isolated
|
|
? "Exit isolate"
|
|
: "Isolate";
|
|
const visibilityLabel = hidden
|
|
? "Reveal"
|
|
: "Hide";
|
|
|
|
return (
|
|
<>
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={copyReferenceDisabled}
|
|
onSelect={onCopyReference}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Copy Reference</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
{showCopyEditPoint ? (
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={copyEditPointDisabled}
|
|
onSelect={onCopyEditPoint}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Copy edit point</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
) : null}
|
|
<Separator />
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={selectDisabled}
|
|
onSelect={onSelect}
|
|
>
|
|
<AssemblyContextMenuItemLabel>{selectLabel}</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
{showIsolate ? (
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={isolateDisabled}
|
|
onSelect={onIsolate}
|
|
>
|
|
<AssemblyContextMenuItemLabel>{isolateLabel}</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
) : null}
|
|
{showExitAllIsolate ? (
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={exitAllIsolateDisabled}
|
|
onSelect={onExitAllIsolate}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Exit all isolates</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
) : null}
|
|
{showHideOther || showHideAll || showVisibility ? <Separator /> : null}
|
|
{showHideOther ? (
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={hideOtherDisabled}
|
|
onSelect={onHideOther}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Hide others</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
) : null}
|
|
{showHideAll ? (
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={hideAllDisabled}
|
|
onSelect={onHideAll}
|
|
>
|
|
<AssemblyContextMenuItemLabel>{hideAllLabel}</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
) : null}
|
|
{showVisibility ? (
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={visibilityDisabled}
|
|
onSelect={onToggleVisibility}
|
|
>
|
|
<AssemblyContextMenuItemLabel>{visibilityLabel}</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
) : null}
|
|
{showCameraActions ? (
|
|
<>
|
|
<Separator />
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={resetZoomDisabled}
|
|
onSelect={onResetZoom}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Reset Zoom</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={zoomToFitDisabled}
|
|
onSelect={onZoomToFit}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Zoom To Fit</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
</>
|
|
) : null}
|
|
{showExpandCollapse ? (
|
|
<>
|
|
<Separator />
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={expandSelectedDisabled}
|
|
onSelect={onExpandSelected}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Expand</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={collapseSelectedDisabled}
|
|
onSelect={onCollapseSelected}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Collapse</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={expandAllDisabled}
|
|
onSelect={onExpandAll}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Expand all</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
<Item
|
|
className={itemClassName}
|
|
disabled={collapseAllDisabled}
|
|
onSelect={onCollapseAll}
|
|
>
|
|
<AssemblyContextMenuItemLabel>Collapse all</AssemblyContextMenuItemLabel>
|
|
</Item>
|
|
</>
|
|
) : null}
|
|
</>
|
|
);
|
|
}
|