endset_three_editor 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- .tree-node .tree-item[data-v-5ad9c842]{display:flex;align-items:center;padding:4px 10px;cursor:pointer;transition:background .15s}.tree-node .tree-item[data-v-5ad9c842]:hover{background:#2a4050}.tree-node .tree-item.selected[data-v-5ad9c842]{background:#3e5a6b}.tree-node .toggle-icon[data-v-5ad9c842]{cursor:pointer;width:20px;text-align:center;font-size:12px;-webkit-user-select:none;user-select:none}.tree-node .toggle-placeholder[data-v-5ad9c842]{width:20px;display:inline-block}.tree-node .tree-icon[data-v-5ad9c842]{margin-right:6px;font-size:14px}.tree-node .tree-name[data-v-5ad9c842]{flex:1;font-size:13px;-webkit-user-select:none;user-select:none}.tree-node .tree-delete[data-v-5ad9c842]{background:transparent;border:none;color:#e74c3c;font-size:16px;cursor:pointer;padding:0 4px;line-height:1}.tree-node .tree-delete[data-v-5ad9c842]:hover{color:#ff6b6b}.tree-children[data-v-5ad9c842]{padding-left:20px}.property-group[data-v-4cecf018]{margin-bottom:20px;border-bottom:1px solid #1a2a36;padding-bottom:12px}.property-group label[data-v-4cecf018]{font-weight:700;display:block;margin-bottom:8px;color:#f1c40f}.property-group .row[data-v-4cecf018]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.property-group .row span[data-v-4cecf018]{width:20px;text-align:right}.property-group .row input[data-v-4cecf018]{background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 8px;border-radius:4px;width:48px}.light-group .intensity-input[data-v-4cecf018]{width:48px;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:2px 6px;border-radius:4px;text-align:center;flex:0 0 auto}.material-group .slider-row[data-v-4cecf018]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.material-group .slider-row .slider-label[data-v-4cecf018]{width:50px;font-size:12px;color:#95a5a6}.material-group .slider-row input[type=range][data-v-4cecf018]{flex:1;height:4px;-webkit-appearance:none;background:#1e2a36;border-radius:2px;outline:none}.material-group .slider-row input[type=range][data-v-4cecf018]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:#f1c40f;cursor:pointer}.material-group .slider-row .slider-value[data-v-4cecf018]{width:36px;font-size:12px;text-align:center;color:#ecf0f1}.material-group .material-hint[data-v-4cecf018]{margin-top:6px;font-size:12px;color:#e67e22}.userdata-group .userdata-add-row[data-v-29e2eaf6]{display:flex;gap:4px;margin-bottom:10px}.userdata-group .userdata-add-row .ud-input[data-v-29e2eaf6]{flex:1;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 6px;border-radius:4px;font-size:12px;min-width:0}.userdata-group .userdata-add-row .ud-input[data-v-29e2eaf6]::placeholder{color:#5a7a8a}.userdata-group .userdata-add-row .ud-textarea[data-v-29e2eaf6]{resize:none;min-height:28px;max-height:28px;line-height:1.4;font-family:inherit}.userdata-group .userdata-add-row .ud-btn[data-v-29e2eaf6]{flex:0 0 28px;height:28px;border:none;border-radius:4px;cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .2s}.userdata-group .userdata-add-row .ud-btn.add-btn[data-v-29e2eaf6]{background:#27ae60;color:#fff}.userdata-group .userdata-add-row .ud-btn.add-btn[data-v-29e2eaf6]:hover{background:#2ecc71}.userdata-group .userdata-list[data-v-29e2eaf6]{display:flex;flex-direction:column;gap:4px}.userdata-group .userdata-list .userdata-item[data-v-29e2eaf6]{display:flex;align-items:center;gap:4px;padding:3px 4px;background:#1a2a36;border-radius:4px;border:1px solid transparent}.userdata-group .userdata-list .userdata-item.readonly[data-v-29e2eaf6]{background:#1a1f2a;border-color:#3e5a6b}.userdata-group .userdata-list .userdata-item .ud-key[data-v-29e2eaf6]{flex:0 0 auto;min-width:60px;max-width:90px;font-size:11px;color:#f1c40f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.userdata-group .userdata-list .userdata-item .ud-value-input[data-v-29e2eaf6]{flex:1;min-width:0;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:2px 4px;border-radius:3px;font-size:12px}.userdata-group .userdata-list .userdata-item .ud-value-readonly[data-v-29e2eaf6]{flex:1;font-size:11px;color:#95a5a6;padding:2px 4px;cursor:not-allowed}.userdata-group .userdata-list .userdata-item .ud-value-json-preview[data-v-29e2eaf6]{flex:1;min-width:0;font-size:11px;color:#bdc3c7;padding:2px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Courier New,Courier,monospace}.userdata-group .userdata-list .userdata-item.editing-json[data-v-29e2eaf6]{flex-direction:column;align-items:stretch;gap:4px;padding:6px}.userdata-group .userdata-list .userdata-item .ud-json-error[data-v-29e2eaf6]{font-size:10px;color:#e6b32a;padding:2px 4px;line-height:1.4;word-break:break-all}.userdata-group .userdata-list .userdata-item .ud-json-textarea[data-v-29e2eaf6]{width:100%;min-height:50px;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 6px;border-radius:4px;font-size:11px;font-family:Courier New,Courier,monospace;resize:vertical;box-sizing:border-box}.userdata-group .userdata-list .userdata-item .ud-json-textarea[data-v-29e2eaf6]:focus{outline:none;border-color:#f1c40f}.userdata-group .userdata-list .userdata-item .ud-json-textarea.has-error[data-v-29e2eaf6]{border-color:#e6b32a}.userdata-group .userdata-list .userdata-item .ud-json-actions[data-v-29e2eaf6]{display:flex;gap:4px;justify-content:flex-end}.userdata-group .userdata-list .userdata-item .ud-btn[data-v-29e2eaf6]{flex:0 0 22px;height:22px;border:none;border-radius:3px;cursor:pointer;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .2s}.userdata-group .userdata-list .userdata-item .ud-btn.del-btn[data-v-29e2eaf6]{background:#c0392b;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.del-btn[data-v-29e2eaf6]:hover{background:#e74c3c}.userdata-group .userdata-list .userdata-item .ud-btn.apply-btn[data-v-29e2eaf6]{background:#27ae60;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.apply-btn[data-v-29e2eaf6]:hover{background:#2ecc71}.userdata-group .userdata-list .userdata-item .ud-btn.cancel-btn[data-v-29e2eaf6]{background:#7f8c8d;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.cancel-btn[data-v-29e2eaf6]:hover{background:#95a5a6}.userdata-group .userdata-list .userdata-item .ud-btn.edit-json-btn[data-v-29e2eaf6]{flex:0 0 22px;height:22px;background:#2980b9;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.edit-json-btn[data-v-29e2eaf6]:hover{background:#3498db}.userdata-group .userdata-empty[data-v-29e2eaf6]{font-size:12px;color:#5a7a8a;text-align:center;padding:8px 0;font-style:italic}.datapanel-tab .dp-section[data-v-f359ca09]{margin-bottom:12px}.datapanel-tab .dp-section .dp-label-sm[data-v-f359ca09]{display:block;font-size:12px;color:#8af;margin-bottom:4px}.datapanel-tab .dp-input[data-v-f359ca09]{background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 6px;border-radius:4px;font-size:12px;width:100%;box-sizing:border-box}.datapanel-tab .dp-input[data-v-f359ca09]::placeholder{color:#5a7a8a}.datapanel-tab .dp-input[data-v-f359ca09]:focus{outline:none;border-color:#f1c40f}.datapanel-tab .dp-input-sm[data-v-f359ca09]{flex:2;min-width:0}.datapanel-tab .dp-input-xs[data-v-f359ca09]{flex:1;min-width:0}.datapanel-tab .dp-list[data-v-f359ca09]{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}.datapanel-tab .dp-list .dp-item[data-v-f359ca09],.datapanel-tab .dp-add-row[data-v-f359ca09]{display:flex;gap:4px;align-items:center}.datapanel-tab .dp-btn[data-v-f359ca09]{flex:0 0 24px;height:24px;border:none;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:background .2s;line-height:1}.datapanel-tab .dp-btn.dp-btn-add[data-v-f359ca09]{background:#27ae60;color:#fff}.datapanel-tab .dp-btn.dp-btn-add[data-v-f359ca09]:hover{background:#2ecc71}.datapanel-tab .dp-btn.dp-btn-del[data-v-f359ca09]{background:#c0392b;color:#fff}.datapanel-tab .dp-btn.dp-btn-del[data-v-f359ca09]:hover{background:#e74c3c}.property-panel[data-v-c92c9fa7]{width:380px;height:100%;background:#2c3e50;color:#ecf0f1;padding:16px;box-sizing:border-box;border-left:1px solid #1a2a36;overflow-y:auto;font-size:14px}.property-panel h3[data-v-c92c9fa7]{margin-top:0;text-align:center}.property-panel .property-group[data-v-c92c9fa7]{margin-bottom:20px;border-bottom:1px solid #1a2a36;padding-bottom:12px}.property-panel .property-group label[data-v-c92c9fa7]{font-weight:700;display:block;margin-bottom:8px;color:#f1c40f}.empty[data-v-c92c9fa7]{text-align:center;color:#95a5a6}.tree-group .tree-container[data-v-c92c9fa7]{height:200px;overflow-y:auto;background:#1a2a36;border-radius:4px;padding:4px 0}.tree-empty[data-v-c92c9fa7]{padding:8px 10px;color:#95a5a6;font-style:italic}.tabs[data-v-c92c9fa7]{display:flex;gap:0;border-bottom:2px solid #1a2a36;margin-bottom:16px}.tabs .tab-btn[data-v-c92c9fa7]{flex:1;padding:8px 12px;background:transparent;border:none;color:#95a5a6;font-size:13px;cursor:pointer;transition:color .2s,border-bottom .2s;border-bottom:2px solid transparent;margin-bottom:-2px}.tabs .tab-btn[data-v-c92c9fa7]:hover{color:#ecf0f1}.tabs .tab-btn.active[data-v-c92c9fa7]{color:#f1c40f;border-bottom-color:#f1c40f}.tab-content[data-v-c92c9fa7]{height:calc(100% - 430px);overflow-y:auto;overflow-x:hidden}.transform-mode-row[data-v-c92c9fa7]{display:flex;gap:4px}.transform-mode-row .mode-btn[data-v-c92c9fa7]{flex:1;padding:6px 8px;background:#1e2a36;border:1px solid #3e5a6b;color:#95a5a6;font-size:12px;border-radius:4px;cursor:pointer;transition:background .2s,color .2s,border-color .2s}.transform-mode-row .mode-btn[data-v-c92c9fa7]:hover{background:#2c3e50;color:#ecf0f1}.transform-mode-row .mode-btn.active[data-v-c92c9fa7]{background:#3e5a6b;color:#f1c40f;border-color:#f1c40f}.property-panel[data-v-c92c9fa7],.tree-container[data-v-c92c9fa7]{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.top-bar[data-v-474c56f9]{height:40px;background:#1a2a36;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid #2a4050;flex-shrink:0;-webkit-user-select:none;user-select:none}.top-bar .left-section[data-v-474c56f9]{display:flex;gap:12px;align-items:center}.top-bar .left-section .dropdown-wrapper[data-v-474c56f9]{position:relative;display:inline-block}.top-bar .left-section .dropdown-wrapper .menu-btn[data-v-474c56f9]{background:transparent;border:none;color:#ecf0f1;padding:6px 12px;border-radius:4px;cursor:pointer;font-size:14px;transition:background .2s}.top-bar .left-section .dropdown-wrapper .menu-btn[data-v-474c56f9]:hover{background:#2a4050}.top-bar .left-section .dropdown-wrapper .dropdown-menu[data-v-474c56f9]{position:absolute;top:100%;left:0;background:#2c3e50;border:1px solid #3e5a6b;border-radius:4px;min-width:140px;padding:4px 0;z-index:100;box-shadow:0 4px 12px #0000004d}.top-bar .left-section .dropdown-wrapper .dropdown-menu .menu-item[data-v-474c56f9]{padding:6px 16px;color:#ecf0f1;cursor:pointer;font-size:13px;transition:background .15s;white-space:nowrap}.top-bar .left-section .dropdown-wrapper .dropdown-menu .menu-item[data-v-474c56f9]:hover{background:#3e5a6b}.top-bar .left-section .dropdown-wrapper .dropdown-menu .menu-item.sub-trigger[data-v-474c56f9]{display:flex;justify-content:space-between;align-items:center;position:relative}.top-bar .left-section .dropdown-wrapper .sub-menu[data-v-474c56f9]{position:absolute;left:100%;top:0;background:#2c3e50;border:1px solid #3e5a6b;border-radius:4px;min-width:140px;padding:4px 0;z-index:101;box-shadow:0 4px 12px #0000004d}.top-bar .right-section[data-v-474c56f9]{display:flex;align-items:center}.top-bar .app-title[data-v-474c56f9]{color:#8af;font-size:16px;font-weight:500;letter-spacing:.5px}.bottom-bar[data-v-3427bb27]{height:40px;background:#1a2a36;border-top:1px solid #2a4050;display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0;color:#95a5a6;font-size:13px;-webkit-user-select:none;user-select:none}.bottom-bar .status-left[data-v-3427bb27],.bottom-bar .status-right[data-v-3427bb27]{display:flex;gap:16px}.app-layout[data-v-ffa5f5c1]{display:flex;flex-direction:column;height:100%;width:100%;background-color:#333}.editor-container[data-v-ffa5f5c1]{display:flex;width:100%}.editor-container-mode-edit[data-v-ffa5f5c1]{height:calc(100% - 80px)}.editor-container-mode-run[data-v-ffa5f5c1]{height:100%}.canvas[data-v-ffa5f5c1]{height:100%;background-color:transparent;position:relative}.canvas-mode-edit[data-v-ffa5f5c1]{width:calc(100% - 380px)}.canvas-mode-run[data-v-ffa5f5c1]{width:100%}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999}.loading-overlay .loading-spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.3);border-top-color:#8af;border-radius:50%;animation:spin .8s linear infinite}.loading-overlay .loading-text{margin-top:16px;color:#ecf0f1;font-size:16px;letter-spacing:1px}@keyframes spin{to{transform:rotate(360deg)}}
1
+ .tree-node .tree-item[data-v-5ad9c842]{display:flex;align-items:center;padding:4px 10px;cursor:pointer;transition:background .15s}.tree-node .tree-item[data-v-5ad9c842]:hover{background:#2a4050}.tree-node .tree-item.selected[data-v-5ad9c842]{background:#3e5a6b}.tree-node .toggle-icon[data-v-5ad9c842]{cursor:pointer;width:20px;text-align:center;font-size:12px;-webkit-user-select:none;user-select:none}.tree-node .toggle-placeholder[data-v-5ad9c842]{width:20px;display:inline-block}.tree-node .tree-icon[data-v-5ad9c842]{margin-right:6px;font-size:14px}.tree-node .tree-name[data-v-5ad9c842]{flex:1;font-size:13px;-webkit-user-select:none;user-select:none}.tree-node .tree-delete[data-v-5ad9c842]{background:transparent;border:none;color:#e74c3c;font-size:16px;cursor:pointer;padding:0 4px;line-height:1}.tree-node .tree-delete[data-v-5ad9c842]:hover{color:#ff6b6b}.tree-children[data-v-5ad9c842]{padding-left:20px}.property-group[data-v-4cecf018]{margin-bottom:20px;border-bottom:1px solid #1a2a36;padding-bottom:12px}.property-group label[data-v-4cecf018]{font-weight:700;display:block;margin-bottom:8px;color:#f1c40f}.property-group .row[data-v-4cecf018]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.property-group .row span[data-v-4cecf018]{width:20px;text-align:right}.property-group .row input[data-v-4cecf018]{background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 8px;border-radius:4px;width:48px}.light-group .intensity-input[data-v-4cecf018]{width:48px;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:2px 6px;border-radius:4px;text-align:center;flex:0 0 auto}.material-group .slider-row[data-v-4cecf018]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.material-group .slider-row .slider-label[data-v-4cecf018]{width:50px;font-size:12px;color:#95a5a6}.material-group .slider-row input[type=range][data-v-4cecf018]{flex:1;height:4px;-webkit-appearance:none;background:#1e2a36;border-radius:2px;outline:none}.material-group .slider-row input[type=range][data-v-4cecf018]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:#f1c40f;cursor:pointer}.material-group .slider-row .slider-value[data-v-4cecf018]{width:36px;font-size:12px;text-align:center;color:#ecf0f1}.material-group .material-hint[data-v-4cecf018]{margin-top:6px;font-size:12px;color:#e67e22}.userdata-group .userdata-add-row[data-v-ab6f1c74]{display:flex;gap:4px;margin-bottom:10px}.userdata-group .userdata-add-row .ud-input[data-v-ab6f1c74]{flex:1;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 6px;border-radius:4px;font-size:12px;min-width:0}.userdata-group .userdata-add-row .ud-input[data-v-ab6f1c74]::placeholder{color:#5a7a8a}.userdata-group .userdata-add-row .ud-textarea[data-v-ab6f1c74]{resize:none;min-height:28px;max-height:28px;line-height:1.4;font-family:inherit}.userdata-group .userdata-add-row .ud-btn[data-v-ab6f1c74]{flex:0 0 28px;height:28px;border:none;border-radius:4px;cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .2s}.userdata-group .userdata-add-row .ud-btn.add-btn[data-v-ab6f1c74]{background:#27ae60;color:#fff}.userdata-group .userdata-add-row .ud-btn.add-btn[data-v-ab6f1c74]:hover{background:#2ecc71}.userdata-group .userdata-list[data-v-ab6f1c74]{display:flex;flex-direction:column;gap:4px}.userdata-group .userdata-list .userdata-item[data-v-ab6f1c74]{display:flex;align-items:center;gap:4px;padding:3px 4px;background:#1a2a36;border-radius:4px;border:1px solid transparent}.userdata-group .userdata-list .userdata-item.readonly[data-v-ab6f1c74]{background:#1a1f2a;border-color:#3e5a6b}.userdata-group .userdata-list .userdata-item .ud-key[data-v-ab6f1c74]{flex:0 0 auto;min-width:60px;max-width:90px;font-size:11px;color:#f1c40f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.userdata-group .userdata-list .userdata-item .ud-value-input[data-v-ab6f1c74]{flex:1;min-width:0;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:2px 4px;border-radius:3px;font-size:12px}.userdata-group .userdata-list .userdata-item .ud-value-readonly[data-v-ab6f1c74]{flex:1;font-size:11px;color:#95a5a6;padding:2px 4px;cursor:not-allowed}.userdata-group .userdata-list .userdata-item .ud-value-json-preview[data-v-ab6f1c74]{flex:1;min-width:0;font-size:11px;color:#bdc3c7;padding:2px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Courier New,Courier,monospace}.userdata-group .userdata-list .userdata-item.editing-json[data-v-ab6f1c74]{flex-direction:column;align-items:stretch;gap:4px;padding:6px}.userdata-group .userdata-list .userdata-item .ud-json-error[data-v-ab6f1c74]{font-size:10px;color:#e6b32a;padding:2px 4px;line-height:1.4;word-break:break-all}.userdata-group .userdata-list .userdata-item .ud-json-textarea[data-v-ab6f1c74]{width:100%;min-height:50px;background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 6px;border-radius:4px;font-size:11px;font-family:Courier New,Courier,monospace;resize:vertical;box-sizing:border-box}.userdata-group .userdata-list .userdata-item .ud-json-textarea[data-v-ab6f1c74]:focus{outline:none;border-color:#f1c40f}.userdata-group .userdata-list .userdata-item .ud-json-textarea.has-error[data-v-ab6f1c74]{border-color:#e6b32a}.userdata-group .userdata-list .userdata-item .ud-json-actions[data-v-ab6f1c74]{display:flex;gap:4px;justify-content:flex-end}.userdata-group .userdata-list .userdata-item .ud-btn[data-v-ab6f1c74]{flex:0 0 22px;height:22px;border:none;border-radius:3px;cursor:pointer;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .2s}.userdata-group .userdata-list .userdata-item .ud-btn.del-btn[data-v-ab6f1c74]{background:#c0392b;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.del-btn[data-v-ab6f1c74]:hover{background:#e74c3c}.userdata-group .userdata-list .userdata-item .ud-btn.apply-btn[data-v-ab6f1c74]{background:#27ae60;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.apply-btn[data-v-ab6f1c74]:hover{background:#2ecc71}.userdata-group .userdata-list .userdata-item .ud-btn.cancel-btn[data-v-ab6f1c74]{background:#7f8c8d;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.cancel-btn[data-v-ab6f1c74]:hover{background:#95a5a6}.userdata-group .userdata-list .userdata-item .ud-btn.edit-json-btn[data-v-ab6f1c74]{flex:0 0 22px;height:22px;background:#2980b9;color:#fff}.userdata-group .userdata-list .userdata-item .ud-btn.edit-json-btn[data-v-ab6f1c74]:hover{background:#3498db}.userdata-group .get-camera-btn[data-v-ab6f1c74]{border-radius:4px;background-color:#3e5a6b;margin-top:10px;font-size:12px;color:#c2cde2}.userdata-group .userdata-empty[data-v-ab6f1c74]{font-size:12px;color:#5a7a8a;text-align:center;padding:8px 0;font-style:italic}.datapanel-tab .dp-section[data-v-c78caf03]{margin-bottom:12px}.datapanel-tab .dp-section .dp-label-sm[data-v-c78caf03]{display:block;font-size:12px;color:#8af;margin-bottom:4px}.datapanel-tab .dp-input[data-v-c78caf03]{background:#1e2a36;border:1px solid #3e5a6b;color:#ecf0f1;padding:4px 6px;border-radius:4px;font-size:12px;width:100%;box-sizing:border-box}.datapanel-tab .dp-input[data-v-c78caf03]::placeholder{color:#5a7a8a}.datapanel-tab .dp-input[data-v-c78caf03]:focus{outline:none;border-color:#f1c40f}.datapanel-tab .dp-input-sm[data-v-c78caf03]{flex:2;min-width:0}.datapanel-tab .dp-input-xs[data-v-c78caf03]{flex:1;min-width:0}.datapanel-tab .dp-list[data-v-c78caf03]{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}.datapanel-tab .dp-list .dp-item[data-v-c78caf03],.datapanel-tab .dp-add-row[data-v-c78caf03]{display:flex;gap:4px;align-items:center}.datapanel-tab .dp-btn[data-v-c78caf03]{flex:0 0 24px;height:24px;border:none;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:background .2s;line-height:1}.datapanel-tab .dp-btn.dp-btn-add[data-v-c78caf03]{background:#27ae60;color:#fff}.datapanel-tab .dp-btn.dp-btn-add[data-v-c78caf03]:hover{background:#2ecc71}.datapanel-tab .dp-btn.dp-btn-del[data-v-c78caf03]{background:#c0392b;color:#fff}.datapanel-tab .dp-btn.dp-btn-del[data-v-c78caf03]:hover{background:#e74c3c}.property-panel[data-v-c92c9fa7]{width:380px;height:100%;background:#2c3e50;color:#ecf0f1;padding:16px;box-sizing:border-box;border-left:1px solid #1a2a36;overflow-y:auto;font-size:14px}.property-panel h3[data-v-c92c9fa7]{margin-top:0;text-align:center}.property-panel .property-group[data-v-c92c9fa7]{margin-bottom:20px;border-bottom:1px solid #1a2a36;padding-bottom:12px}.property-panel .property-group label[data-v-c92c9fa7]{font-weight:700;display:block;margin-bottom:8px;color:#f1c40f}.empty[data-v-c92c9fa7]{text-align:center;color:#95a5a6}.tree-group .tree-container[data-v-c92c9fa7]{height:200px;overflow-y:auto;background:#1a2a36;border-radius:4px;padding:4px 0}.tree-empty[data-v-c92c9fa7]{padding:8px 10px;color:#95a5a6;font-style:italic}.tabs[data-v-c92c9fa7]{display:flex;gap:0;border-bottom:2px solid #1a2a36;margin-bottom:16px}.tabs .tab-btn[data-v-c92c9fa7]{flex:1;padding:8px 12px;background:transparent;border:none;color:#95a5a6;font-size:13px;cursor:pointer;transition:color .2s,border-bottom .2s;border-bottom:2px solid transparent;margin-bottom:-2px}.tabs .tab-btn[data-v-c92c9fa7]:hover{color:#ecf0f1}.tabs .tab-btn.active[data-v-c92c9fa7]{color:#f1c40f;border-bottom-color:#f1c40f}.tab-content[data-v-c92c9fa7]{height:calc(100% - 430px);overflow-y:auto;overflow-x:hidden}.transform-mode-row[data-v-c92c9fa7]{display:flex;gap:4px}.transform-mode-row .mode-btn[data-v-c92c9fa7]{flex:1;padding:6px 8px;background:#1e2a36;border:1px solid #3e5a6b;color:#95a5a6;font-size:12px;border-radius:4px;cursor:pointer;transition:background .2s,color .2s,border-color .2s}.transform-mode-row .mode-btn[data-v-c92c9fa7]:hover{background:#2c3e50;color:#ecf0f1}.transform-mode-row .mode-btn.active[data-v-c92c9fa7]{background:#3e5a6b;color:#f1c40f;border-color:#f1c40f}.property-panel[data-v-c92c9fa7],.tree-container[data-v-c92c9fa7]{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.top-bar[data-v-2466bef5]{height:40px;background:#1a2a36;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid #2a4050;flex-shrink:0;-webkit-user-select:none;user-select:none}.top-bar .left-section[data-v-2466bef5]{display:flex;gap:12px;align-items:center}.top-bar .left-section .dropdown-wrapper[data-v-2466bef5]{position:relative;display:inline-block}.top-bar .left-section .dropdown-wrapper .menu-btn[data-v-2466bef5]{background:transparent;border:none;color:#ecf0f1;padding:6px 12px;border-radius:4px;cursor:pointer;font-size:14px;transition:background .2s}.top-bar .left-section .dropdown-wrapper .menu-btn[data-v-2466bef5]:hover{background:#2a4050}.top-bar .left-section .dropdown-wrapper .dropdown-menu[data-v-2466bef5]{position:absolute;top:100%;left:0;background:#2c3e50;border:1px solid #3e5a6b;border-radius:4px;min-width:140px;padding:4px 0;z-index:100;box-shadow:0 4px 12px #0000004d}.top-bar .left-section .dropdown-wrapper .dropdown-menu .menu-item[data-v-2466bef5]{padding:6px 16px;color:#ecf0f1;cursor:pointer;font-size:13px;transition:background .15s;white-space:nowrap}.top-bar .left-section .dropdown-wrapper .dropdown-menu .menu-item[data-v-2466bef5]:hover{background:#3e5a6b}.top-bar .left-section .dropdown-wrapper .dropdown-menu .menu-item.sub-trigger[data-v-2466bef5]{display:flex;justify-content:space-between;align-items:center;position:relative}.top-bar .left-section .dropdown-wrapper .sub-menu[data-v-2466bef5]{position:absolute;left:100%;top:0;background:#2c3e50;border:1px solid #3e5a6b;border-radius:4px;min-width:140px;padding:4px 0;z-index:101;box-shadow:0 4px 12px #0000004d}.top-bar .right-section[data-v-2466bef5]{display:flex;align-items:center}.top-bar .app-title[data-v-2466bef5]{color:#8af;font-size:16px;font-weight:500;letter-spacing:.5px}.bottom-bar[data-v-3427bb27]{height:40px;background:#1a2a36;border-top:1px solid #2a4050;display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0;color:#95a5a6;font-size:13px;-webkit-user-select:none;user-select:none}.bottom-bar .status-left[data-v-3427bb27],.bottom-bar .status-right[data-v-3427bb27]{display:flex;gap:16px}.app-layout[data-v-ffa5f5c1]{display:flex;flex-direction:column;height:100%;width:100%;background-color:#333}.editor-container[data-v-ffa5f5c1]{display:flex;width:100%}.editor-container-mode-edit[data-v-ffa5f5c1]{height:calc(100% - 80px)}.editor-container-mode-run[data-v-ffa5f5c1]{height:100%}.canvas[data-v-ffa5f5c1]{height:100%;background-color:transparent;position:relative}.canvas-mode-edit[data-v-ffa5f5c1]{width:calc(100% - 380px)}.canvas-mode-run[data-v-ffa5f5c1]{width:100%}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999}.loading-overlay .loading-spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.3);border-top-color:#8af;border-radius:50%;animation:spin .8s linear infinite}.loading-overlay .loading-text{margin-top:16px;color:#ecf0f1;font-size:16px;letter-spacing:1px}@keyframes spin{to{transform:rotate(360deg)}}
@@ -1,10 +1,10 @@
1
- import { DataPanel, DataPanelItem } from './css2dPanel';
2
- import { Object3D } from 'three';
1
+ import { DataPanel, getDataPanel as _getDataPanel, removeDataPanel as _removeDataPanel, DataPanelItem } from './css2dPanel';
3
2
  /**
4
3
  * 提供添加基础几何体(正方体、球体)以及导入外部模型文件的功能
5
4
  * 所有模型均自动标记为可移动(isMovable = true)
6
5
  */
7
6
  import * as THREE from "three";
7
+ export { _getDataPanel as getDataPanel, _removeDataPanel as removeDataPanel };
8
8
  /**
9
9
  * 添加一个蓝色的正方体,位置在地面上方 0.5 单位
10
10
  */
@@ -56,14 +56,3 @@ export declare function addDataPanel(options?: {
56
56
  title?: string;
57
57
  items?: DataPanelItem[];
58
58
  }): DataPanel | null;
59
- /**
60
- * 获取物体上已附加的数据面板
61
- * @param obj - 3D 物体
62
- * @returns DataPanel 实例或 null
63
- */
64
- export declare function getDataPanel(obj: Object3D): DataPanel | null;
65
- /**
66
- * 移除物体上的数据面板
67
- * @param obj - 3D 物体
68
- */
69
- export declare function removeDataPanel(obj: Object3D): void;
@@ -13,6 +13,8 @@ export interface DataPanelItem {
13
13
  value: string;
14
14
  /** 单位(可选,如 "℃") */
15
15
  unit?: string;
16
+ /** 编码(可选,如 "T001") */
17
+ code?: string;
16
18
  /** 自定义 CSS 类名 */
17
19
  className?: string;
18
20
  }
@@ -75,6 +77,7 @@ export declare class DataPanel {
75
77
  hide(): void;
76
78
  /** 面板是否可见 */
77
79
  get visible(): boolean;
80
+ set visible(val: boolean);
78
81
  /** 设置面板标题(轻量 DOM 更新) */
79
82
  setTitle(title: string): void;
80
83
  /** 获取面板标题 */
@@ -89,6 +92,8 @@ export declare class DataPanel {
89
92
  removeItem(label: string): void;
90
93
  /** 更新指定 label 的数据项的值(轻量 DOM 更新) */
91
94
  updateItem(label: string, value: string, unit?: string): void;
95
+ /** 根据 code 更新数据项的 value(用于外部数据推送) */
96
+ updateItemByCode(code: string, value: string): void;
92
97
  /** 清空所有数据项(轻量 DOM 更新) */
93
98
  clearItems(): void;
94
99
  /** 重建面板(用于需要完整重建 DOM 的场景,如更新样式配置) */
@@ -102,6 +107,23 @@ export declare class DataPanel {
102
107
  /** 销毁面板,释放资源 */
103
108
  dispose(): void;
104
109
  }
110
+ /**
111
+ * 注册物体与 DataPanel 的映射
112
+ * @param obj - 3D 物体
113
+ * @param panel - DataPanel 实例
114
+ */
115
+ export declare function registerDataPanel(obj: THREE.Object3D, panel: DataPanel): void;
116
+ /**
117
+ * 获取物体上已附加的数据面板
118
+ * @param obj - 3D 物体
119
+ * @returns DataPanel 实例或 null
120
+ */
121
+ export declare function getDataPanel(obj: THREE.Object3D): DataPanel | null;
122
+ /**
123
+ * 移除物体上的数据面板
124
+ * @param obj - 3D 物体
125
+ */
126
+ export declare function removeDataPanel(obj: THREE.Object3D): void;
105
127
  /**
106
128
  * 创建 CSS2DRenderer 并挂载到容器
107
129
  * @param container - 渲染器挂载的 DOM 容器(应与 WebGL 渲染器同一容器)
@@ -31,20 +31,26 @@ export declare function setLoading(loading: boolean): void;
31
31
  * @param mode - "translate" | "rotate" | "scale"
32
32
  */
33
33
  export declare function setTransformMode(mode: "translate" | "rotate" | "scale"): void;
34
+ /**
35
+ * 外部选中模型操作
36
+ * @param objectId 模型 id
37
+ */
38
+ export declare function selectModelHandle(objectId: string): void;
34
39
  /**
35
40
  * 将相机平滑聚焦到指定物体
36
41
  * @param objectId - 目标物体 id
37
42
  * @param duration - 动画持续时间(毫秒),默认 500ms
38
43
  */
39
- export declare function focusOnObject(objectId: string, duration?: number): void;
44
+ export declare function focusOnObject(object: any, duration?: number): void;
40
45
  /**
41
- * 向场景添加一个模型(Object3D 及其子节点)
42
- * @param model - 要添加的模型对象
43
- * @param selected - 是否添加后立即选中
46
+ * 添加模型
47
+ * @param model
48
+ * @param selected
44
49
  */
45
50
  export declare function addModel(model: Object3D, selected?: boolean): void;
46
51
  /**
47
52
  * 从场景中移除一个模型及其子节点
53
+ * 自动清理关联的数据面板
48
54
  * @param model - 要移除的模型对象
49
55
  */
50
56
  export declare function removeModel(model: Object3D): void;
@@ -78,6 +84,13 @@ export declare function getSceneObjects(): THREE.Object3D<THREE.Object3DEventMap
78
84
  * @returns 当前选中物体或 null
79
85
  */
80
86
  export declare function getSelectedObject(): Object3D | null;
87
+ /**
88
+ * 根据设备 ID 和 code 更新数据面板中对应数据项的 value
89
+ * @param deviceId - 设备的 userData.id
90
+ * @param code - 数据项的 code 字段
91
+ * @param value - 新的值
92
+ */
93
+ export declare function updateDataPanelValue(deviceId: string, code: string, value: string): void;
81
94
  export declare function getScene(): THREE.Scene<THREE.Object3DEventMap> | null;
82
95
  export declare function getCamera(): THREE.PerspectiveCamera | null;
83
96
  export declare function getRenderer(): THREE.WebGLRenderer | null;
@@ -91,7 +104,14 @@ export declare function exportSceneToJSON(): Promise<string>;
91
104
  * @param json - JSON 字符串或对象
92
105
  * @returns 解析后的 Object3D 或 Scene
93
106
  */
94
- export declare function loadSceneFromJSON(json: string | object, mode?: string): void;
107
+ export declare function loadSceneFromJSON(json: string | object, mode?: string, dataPanels?: Record<string, {
108
+ title: string;
109
+ items: {
110
+ label: string;
111
+ value: string;
112
+ unit?: string;
113
+ }[];
114
+ }>): void;
95
115
  /**
96
116
  * 销毁编辑器,释放所有资源(场景、渲染器、控制器、事件监听等)
97
117
  * 调用后编辑器将完全卸载,可重新调用 initEditor 重新初始化