Files
cadSet/text-to-cad/viewer/src/client/components/workbench/AssemblyContextMenuItems.js
T
2026-07-27 16:00:36 +08:00

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}
</>
);
}