Add draggable GLB hierarchy tree and node origins

This commit is contained in:
2026-09-20 18:53:30 +08:00
parent 53285d04af
commit 72b38b7d43
19 changed files with 150 additions and 38 deletions

View File

@@ -367,10 +367,23 @@ output { font: 12px ui-monospace, monospace; text-align: right; }
.machine-manager-editor { display: grid; grid-template-rows: minmax(120px, .7fr) minmax(260px, 1.3fr); min-height: 0; gap: 8px; }
.machine-part-list, .machine-part-editor, .machine-manager-calibration { border: 1px solid #9babad; background: #f6f9f8; padding: 8px; min-height: 0; overflow: auto; }
.machine-part-list h3, .machine-part-editor h3, .machine-manager-calibration h3 { margin: 0 0 7px; font-size: 13px; }
.machine-part-list > div { display: grid; grid-template-columns: minmax(0, 1fr) 30px; margin: 3px 0; }
.machine-part-list > div > button:first-child { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; text-align: left; min-width: 0; }
.machine-part-list > div.selected > button:first-child { background: #d6e9e6; border-color: #27585d; }
.machine-part-list small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.machine-tree, .machine-tree ul { margin: 0; padding: 0; list-style: none; }
.machine-tree ul { margin-left: 14px; padding-left: 8px; border-left: 1px solid #a6b8ba; }
.machine-tree li { min-width: 0; }
.machine-tree-row { display: grid; grid-template-columns: 22px minmax(0, 1fr); align-items: center; }
.machine-tree-toggle { width: 22px; height: 25px; padding: 0; border: 0; background: transparent; color: #315d61; cursor: pointer; }
.machine-tree-toggle:disabled { color: #829092; cursor: default; }
.machine-tree [data-axis-control="machine-tree-node"] { display: grid; grid-template-columns: minmax(110px, 1fr) auto; align-items: center; gap: 4px; width: 100%; min-height: 25px; padding: 2px 5px; border: 1px solid transparent; background: transparent; text-align: left; cursor: grab; }
.machine-tree [data-axis-control="machine-tree-node"]:hover { background: #e4efed; border-color: #9db4b5; }
.machine-tree [data-axis-control="machine-tree-node"].selected { background: #cfe5e2; border-color: #27585d; }
.machine-tree [data-axis-control="machine-tree-node"]:active { cursor: grabbing; }
.machine-tree [data-axis-control="machine-tree-node"] > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.machine-tree [data-axis-control="machine-tree-node"] small { color: #66787b; font: 10px ui-monospace, monospace; white-space: nowrap; }
.machine-tree .mesh { color: #397a80; }
.machine-tree-origin { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; padding: 7px; margin-bottom: 8px; border: 1px solid #9db4b5; background: #e8f2f0; }
.machine-tree-origin strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.machine-tree-origin span { color: #536467; }
.machine-tree-origin output { grid-column: 1 / -1; text-align: left; }
.machine-part-editor > label { display: grid; grid-template-columns: 82px minmax(0, 1fr); align-items: center; gap: 8px; margin: 6px 0; }
.machine-part-editor select { height: 30px; min-width: 0; }
.machine-part-flags { display: flex; gap: 16px; margin: 8px 0; }