iflow-engine-base 3.5.0 → 3.5.2

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
- .originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:0;font-size:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-image:url(/assets/viewcube/home.png);background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none;stroke:#009bea;fill:#009bea;filter:drop-shadow(0px 0px 2px rgba(0,0,0,.3))}.measureBack{cursor:pointer;pointer-events:auto;fill:#fff;padding:5px;top:-50px;rx:5;ry:5;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.3));text-align:center}.measureLabel{position:absolute;fill:#fff;font-family:tahoma;font-size:14px;stroke:#009bea;font-weight:200;pointer-events:none;text-anchor:middle}.measurePointer{fill:#009bea}.Hight{stroke:#fff;font-weight:500;filter:drop-shadow(0px 0px 2px rgb(0,195,255))}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}
1
+ .originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:0;font-size:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-image:url(/assets/viewcube/home.png);background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none;stroke:#009bea;fill:#009bea;filter:drop-shadow(0px 0px 2px rgba(0,0,0,.3))}.measureBack{cursor:pointer;pointer-events:auto;fill:#fff;rx:5;ry:5;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.3));text-align:center}.measureLabel{position:absolute;fill:#fff;font-family:tahoma;font-size:14px;stroke:#009bea;font-weight:200;pointer-events:none;text-anchor:middle}.measurePointer{fill:#009bea}.Hight{stroke:#fff;font-weight:500;filter:drop-shadow(0px 0px 2px rgb(0,195,255))}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,10 @@
1
+ import { Circle } from 'fabric';
1
2
  import { default as default_2 } from 'stats.js';
3
+ import { Group } from 'fabric';
4
+ import { IText } from 'fabric';
5
+ import { Line } from 'fabric';
6
+ import { Path } from 'fabric';
7
+ import { Rect } from 'fabric';
2
8
  import * as THREE from 'three';
3
9
  import * as THREE_2 from '../../../three/three.module.js';
4
10
 
@@ -953,6 +959,80 @@ declare class DeviceModule {
953
959
  };
954
960
  }
955
961
 
962
+ /**
963
+ * DrawingPin 视点管理器
964
+ * 仅暴露两个主接口:
965
+ * 1. get(): 获取当前视点完整状态
966
+ * 2. restore(): 还原视点完整状态
967
+ */
968
+ declare class DrawingPin {
969
+ private engine;
970
+ constructor(engine: any);
971
+ /**
972
+ * 获取当前视点状态(相机 + 剖切 + 测量 + 批注)
973
+ */
974
+ get(): IDrawingPinState;
975
+ /**
976
+ * 还原视点状态(相机 + 剖切 + 测量 + 批注)
977
+ */
978
+ restore(state: IDrawingPinState, mode?: FabricDrawMode): Promise<void>;
979
+ /**
980
+ * 创建视点(进入批注流程)
981
+ * 1. 启用批注功能
982
+ * 2. 用户点击“确定”后自动调用 get()
983
+ * 3. 将完整视点数据通过回调抛出
984
+ */
985
+ create(callback?: (state: IDrawingPinState) => void): void;
986
+ /**
987
+ * 清空批注(便捷接口)
988
+ */
989
+ clearAnnotation(): void;
990
+ /**
991
+ * 获取剖切状态
992
+ */
993
+ private captureClippingState;
994
+ /**
995
+ * 还原剖切状态
996
+ */
997
+ private restoreClippingState;
998
+ /**
999
+ * 还原面剖切(不走拾取流程)
1000
+ */
1001
+ private restoreFaceMode;
1002
+ /**
1003
+ * 将法向/距离应用到 sectionFace
1004
+ */
1005
+ private applyFaceState;
1006
+ /**
1007
+ * 获取测量数据(移除 DOM 引用)
1008
+ */
1009
+ private captureMeasureData;
1010
+ /**
1011
+ * 还原测量数据
1012
+ */
1013
+ private restoreMeasureData;
1014
+ /**
1015
+ * 获取 Fabric 批注数据
1016
+ */
1017
+ private captureAnnotationData;
1018
+ /**
1019
+ * 还原 Fabric 批注数据
1020
+ */
1021
+ private restoreAnnotationData;
1022
+ /**
1023
+ * 按模式启用批注层:view 只查看,edit 可编辑。
1024
+ */
1025
+ private applyAnnotationMode;
1026
+ /**
1027
+ * 深度序列化:保留 Vector3,移除 DOM/函数
1028
+ */
1029
+ private serializeSnapshotValue;
1030
+ /**
1031
+ * 深度反序列化:将标记对象还原为 Vector3
1032
+ */
1033
+ private deserializeSnapshotValue;
1034
+ }
1035
+
956
1036
  /**
957
1037
  * 块定义
958
1038
  */
@@ -1456,6 +1536,8 @@ declare class EngineKernelV2 {
1456
1536
  linkElement2d3d: LinkElement2d3d;
1457
1537
  linkView2d3d: LinkView2d3d;
1458
1538
  oneClickEncoding: OneClickEncoding;
1539
+ fabricDraw: FabricDraw;
1540
+ drawingPin: DrawingPin;
1459
1541
  models: any[];
1460
1542
  reactBoundingClientRect: {
1461
1543
  left: number;
@@ -1891,6 +1973,164 @@ declare enum EventType720 {
1891
1973
  ViewAngleChanged = "view-angle-changed"
1892
1974
  }
1893
1975
 
1976
+ /**
1977
+ * Fabric 鎵规敞绠$悊鍣細璐熻矗鎵规敞缁樺埗銆佹牱寮忋€佹祴璺濊仈鍔ㄣ€佹埅鍥惧悎鎴愩€? */
1978
+ declare class FabricDraw {
1979
+ private readonly engine;
1980
+ private readonly wrapper;
1981
+ private readonly canvasEl;
1982
+ private readonly canvas;
1983
+ private readonly toolbar;
1984
+ private isActive;
1985
+ private isVisible;
1986
+ private isDistanceMeasureMode;
1987
+ private isMeasurePanelExpanded;
1988
+ private drawType;
1989
+ private mode;
1990
+ private currentMeasureType;
1991
+ private sessionSnapshot;
1992
+ private actionHandlers;
1993
+ private drawStyle;
1994
+ private startPoint;
1995
+ private tempObject;
1996
+ private cloudPoints;
1997
+ private readonly onMouseDown;
1998
+ private readonly onMouseMove;
1999
+ private readonly onMouseUp;
2000
+ private readonly onMouseDblClick;
2001
+ private readonly onSelectionChanged;
2002
+ private readonly onKeyDown;
2003
+ constructor(engine: any);
2004
+ /**
2005
+ * 婵€娲荤粯鍒跺姛鑳姐€? */
2006
+ active(mode?: FabricDrawMode): void;
2007
+ /**
2008
+ * 鍏抽棴缁樺埗鍔熻兘銆? */
2009
+ disActive(): void;
2010
+ /**
2011
+ * close 涓?disActive 鐨勮涔夊埆鍚嶃€? */
2012
+ close(): void;
2013
+ /**
2014
+ * 闅愯棌缁樺埗灞傘€? */
2015
+ hide(): void;
2016
+ /**
2017
+ * 鏄剧ず缁樺埗灞傘€? */
2018
+ show(): void;
2019
+ isShown(): boolean;
2020
+ /**
2021
+ * 璁剧疆缁樺埗绫诲瀷鍜屾牱寮忋€? */
2022
+ setDrawType(type: FabricDrawType, style?: Partial<FabricDrawStyle>): void;
2023
+ getDrawType(): FabricDrawType;
2024
+ /**
2025
+ * 璁剧疆鈥滃彇娑?纭畾鈥濆洖璋冦€? */
2026
+ setActionHandlers(handlers: FabricDrawActionHandlers): void;
2027
+ /**
2028
+ * 鐩存帴缁樺埗绾挎銆? */
2029
+ drawLine(start: FabricDrawPoint, end: FabricDrawPoint, style?: Partial<FabricDrawStyle>): Line;
2030
+ /**
2031
+ * 鐩存帴缁樺埗绠ご銆? */
2032
+ drawArrow(start: FabricDrawPoint, end: FabricDrawPoint, style?: Partial<FabricDrawStyle>): Group;
2033
+ /**
2034
+ * 鐩存帴缁樺埗鐭╁舰銆? */
2035
+ drawRect(start: FabricDrawPoint, end: FabricDrawPoint, style?: Partial<FabricDrawStyle>): Rect;
2036
+ /**
2037
+ * 鐩存帴缁樺埗鍦嗗舰銆? */
2038
+ drawCircle(start: FabricDrawPoint, end: FabricDrawPoint, style?: Partial<FabricDrawStyle>): Circle;
2039
+ /**
2040
+ * 鐩存帴缁樺埗鏂囧瓧銆? */
2041
+ drawText(point: FabricDrawPoint, text?: string, style?: Partial<FabricDrawStyle>): IText;
2042
+ /**
2043
+ * 鐩存帴缁樺埗浜戠嚎銆? */
2044
+ drawCloudLine(points: FabricDrawPoint[], style?: Partial<FabricDrawStyle>): Path | null;
2045
+ /**
2046
+ * 鑾峰彇鎵€鏈夊浘褰€? */
2047
+ getAllShapes(): Record<string, any>;
2048
+ /**
2049
+ * 娓呯┖鎵€鏈夊浘褰€? */
2050
+ clearAllShapes(): void;
2051
+ /**
2052
+ * 杩樺師鎵€鏈夊浘褰€? */
2053
+ restoreAllShapes(data: string | Record<string, any>): Promise<void>;
2054
+ /**
2055
+ * 鎴浘淇濆瓨锛堟ā鍨?Fabric鎵规敞鍚堟垚锛夈€? */
2056
+ saveScreenshot(fileName?: string): string | null;
2057
+ /**
2058
+ * 鍚屾鐢诲竷灏哄銆? */
2059
+ resize(width?: number, height?: number): void;
2060
+ /**
2061
+ * 閿€姣併€? */
2062
+ dispose(): void;
2063
+ private handleMouseDown;
2064
+ private handleMouseMove;
2065
+ private handleMouseUp;
2066
+ private handleMouseDblClick;
2067
+ private handleKeyDown;
2068
+ private getPointFromEvent;
2069
+ private shouldAppendCloudPoint;
2070
+ private createDraftObject;
2071
+ private updateDraftObject;
2072
+ private mergeStyle;
2073
+ private createObjectBase;
2074
+ private createLineObject;
2075
+ private createRectObject;
2076
+ private createCircleObject;
2077
+ private createArrowObject;
2078
+ private createCloudObject;
2079
+ private getBoxFromPoints;
2080
+ private getCircleFromPoints;
2081
+ /**
2082
+ * 灏嗘姌绾跨鏁f垚鈥滈紦鍖呪€濊矾寰勶紝褰㈡垚浜戠嚎瑙嗚鏁堟灉銆? */
2083
+ private buildCloudPath;
2084
+ private handleColorInputChange;
2085
+ private handleStrokeWidthInputChange;
2086
+ private handleFontSizeInputChange;
2087
+ private applyCurrentStyleToSelection;
2088
+ private applyStyleToObject;
2089
+ private syncStyleFromSelection;
2090
+ private readStyleFromObject;
2091
+ private isTextObject;
2092
+ private isInputElement;
2093
+ private applyCanvasInteractive;
2094
+ private parseNumber;
2095
+ private colorToAlpha;
2096
+ private toggleMeasurePanel;
2097
+ private activateDistanceMeasure;
2098
+ private stopDistanceMeasureMode;
2099
+ private disActiveMeasureTools;
2100
+ private activeMeasureTool;
2101
+ private updateOverlayPointerEvents;
2102
+ private handleCancelClick;
2103
+ private handleCloseClick;
2104
+ private handleConfirmClick;
2105
+ private refreshToolbarStyleValues;
2106
+ private refreshToolbarState;
2107
+ private createScreenshotFileName;
2108
+ private cloneJson;
2109
+ }
2110
+
2111
+ declare interface FabricDrawActionHandlers {
2112
+ onConfirm?: (data: Record<string, any>) => void;
2113
+ onCancel?: () => void;
2114
+ }
2115
+
2116
+ declare type FabricDrawMode = 'view' | 'edit';
2117
+
2118
+ declare interface FabricDrawPoint {
2119
+ x: number;
2120
+ y: number;
2121
+ }
2122
+
2123
+ declare interface FabricDrawStyle {
2124
+ stroke: string;
2125
+ strokeWidth: number;
2126
+ fill: string;
2127
+ fontSize: number;
2128
+ text: string;
2129
+ cloudRadius: number;
2130
+ }
2131
+
2132
+ declare type FabricDrawType = 'none' | 'line' | 'arrow' | 'rect' | 'circle' | 'text' | 'cloudline';
2133
+
1894
2134
  declare class Grid {
1895
2135
  private readonly engine;
1896
2136
  private rootGroup;
@@ -1903,6 +2143,7 @@ declare class Grid {
1903
2143
  show(): void;
1904
2144
  hide(): void;
1905
2145
  toggle(): void;
2146
+ getVisible(): boolean;
1906
2147
  update(): void;
1907
2148
  /**
1908
2149
  * 根据三维点计算所在轴网区间。
@@ -2033,6 +2274,7 @@ declare class Ground {
2033
2274
  }>;
2034
2275
  /** 获取当前地面 id */
2035
2276
  getCurrentId(): GroundId;
2277
+ getVisible(): boolean;
2036
2278
  show(): void;
2037
2279
  hide(): void;
2038
2280
  dispose(): void;
@@ -2177,6 +2419,28 @@ declare interface ICameraPose {
2177
2419
  orthographicHeight?: number;
2178
2420
  }
2179
2421
 
2422
+ declare interface IClippingBoxState {
2423
+ minX: number;
2424
+ minY: number;
2425
+ minZ: number;
2426
+ maxX: number;
2427
+ maxY: number;
2428
+ maxZ: number;
2429
+ }
2430
+
2431
+ declare interface IClippingFaceState {
2432
+ normal: IPoint3;
2433
+ distance: number;
2434
+ direction: number;
2435
+ }
2436
+
2437
+ declare interface IClippingState {
2438
+ mode: string;
2439
+ fillCutFace: boolean;
2440
+ box?: IClippingBoxState;
2441
+ face?: IClippingFaceState;
2442
+ }
2443
+
2180
2444
  /**
2181
2445
  * 图标标注配置
2182
2446
  */
@@ -2192,6 +2456,13 @@ declare interface IconAnnotationConfig {
2192
2456
  metadata?: any;
2193
2457
  }
2194
2458
 
2459
+ declare interface IDrawingPinState {
2460
+ cameraPose: ICameraPose | null;
2461
+ clipping: IClippingState;
2462
+ measureData: Record<string, any> | null;
2463
+ annotationData: Record<string, any> | null;
2464
+ }
2465
+
2195
2466
  declare class InteractionModule {
2196
2467
  private engine;
2197
2468
  private behavior;
@@ -2291,6 +2562,12 @@ declare interface IPlayOptions {
2291
2562
  onPointComplete?: (pointIndex: number) => void;
2292
2563
  }
2293
2564
 
2565
+ declare interface IPoint3 {
2566
+ x: number;
2567
+ y: number;
2568
+ z: number;
2569
+ }
2570
+
2294
2571
  /**
2295
2572
  * 路径点位接口
2296
2573
  * 继承自相机姿态,增加停留时间属性
@@ -2453,6 +2730,7 @@ declare class Level {
2453
2730
  show(): void;
2454
2731
  hide(): void;
2455
2732
  toggle(): void;
2733
+ getVisible(): boolean;
2456
2734
  update(): void;
2457
2735
  /**
2458
2736
  * 根据点位高度计算所属标高,描述统一输出为“标高X”。
@@ -2793,6 +3071,8 @@ declare class ModelEdge {
2793
3071
  constructor(engine: any);
2794
3072
  active(): void;
2795
3073
  disActive(): void;
3074
+ isEnabled(): boolean;
3075
+ getOpacity(): number;
2796
3076
  private hasPendingModelEdges;
2797
3077
  private loadZipJsonAsync;
2798
3078
  private ensureModelEdgeData;
@@ -3799,86 +4079,93 @@ declare interface SearchResult {
3799
4079
  description?: string;
3800
4080
  }
3801
4081
 
3802
- /** 引擎设置管理器,负责渲染、显示和环境参数的统一管理 */
4082
+ /** 寮曟搸璁剧疆绠$悊鍣紝璐熻矗娓叉煋銆佹樉绀哄拰鐜鍙傛暟鐨勭粺涓€绠$悊 */
3803
4083
  declare class Setting {
3804
- /** 引擎实例引用 */
4084
+ /** 寮曟搸瀹炰緥寮曠敤 */
3805
4085
  private engine;
3806
- /** 当前生效的设置项 */
4086
+ private defaultSettings;
4087
+ /** 褰撳墠鐢熸晥鐨勮缃」 */
3807
4088
  private settings;
3808
- /** 环境设置的应用版本号,用于防止异步操作的竞态条件 */
4089
+ /** 鐜璁剧疆鐨勫簲鐢ㄧ増鏈彿锛岀敤浜庨槻姝㈠紓姝ユ搷浣滅殑绔炴€佹潯浠?*/
3809
4090
  private environmentApplyVersion;
3810
4091
  constructor(engine: any);
3811
- /** 初始化(当前为空实现) */
4092
+ /** 鍒濆鍖栵紙褰撳墠涓虹┖瀹炵幇锛?*/
3812
4093
  init(): void;
3813
- /** 获取当前设置的深拷贝 */
4094
+ /** 鑾峰彇褰撳墠璁剧疆鐨勬繁鎷疯礉 */
3814
4095
  getSettings(): EngineSettings;
3815
- /** 获取地面、HDR、天空的预设列表 */
4096
+ /** 鑾峰彇鍦伴潰銆丠DR銆佸ぉ绌虹殑棰勮鍒楄〃 */
3816
4097
  getPresetLists(): {
3817
4098
  ground: SettingPresetItem[];
3818
4099
  hdr: SettingPresetItem[];
3819
4100
  sky: SettingPresetItem[];
3820
4101
  };
3821
- /** 批量更新设置(支持部分更新) */
4102
+ /** 鎵归噺鏇存柊璁剧疆锛堟敮鎸侀儴鍒嗘洿鏂帮級 */
3822
4103
  setSettings(data: Partial<EngineSettings>): Promise<void>;
3823
- /** 重置所有设置为默认值 */
4104
+ /** 閲嶇疆鎵€鏈夎缃负榛樿鍊?*/
3824
4105
  resetToDefault(): Promise<void>;
3825
- /** 设置渲染模式(simple: 简易, balance: 均衡, advanced: 高级) */
4106
+ /** 璁剧疆娓叉煋妯″紡锛坰imple: 绠€鏄? balance: 鍧囪 , advanced: 楂樼骇锛?*/
3826
4107
  setRenderMode(mode: RenderMode): void;
3827
- /** 设置对比度(0~100) */
4108
+ /** 璁剧疆瀵规瘮搴︼紙0~100锛?*/
3828
4109
  setContrast(value: number): void;
3829
- /** 设置饱和度(0~100) */
4110
+ /** 璁剧疆楗卞拰搴︼紙0~100锛?*/
3830
4111
  setSaturation(value: number): void;
3831
- /** 设置阴影强度(0~100) */
4112
+ /** 璁剧疆闃村奖寮哄害锛?~100锛?*/
3832
4113
  setShadowIntensity(value: number): void;
3833
- /** 设置光照强度(0~100),调整环境光亮度 */
4114
+ /** 璁剧疆鍏夌収寮哄害锛?~100锛夛紝璋冩暣鐜鍏変寒搴?*/
3834
4115
  setLightIntensity(value: number): void;
3835
- /** 设置 GTAO(屏幕空间环境光遮蔽)强度(0~100) */
4116
+ /** 璁剧疆 GTAO锛堝睆骞曠┖闂寸幆澧冨厜閬斀锛夊己搴︼紙0~100锛?*/
3836
4117
  setGTAOIntensity(value: number): void;
3837
- /** 设置是否显示模型边缘线 */
4118
+ /** 璁剧疆鏄惁鏄剧ず妯″瀷杈圭紭绾?*/
3838
4119
  setShowEdge(show: boolean): void;
3839
- /** 设置边缘线透明度(0~100) */
4120
+ /** 璁剧疆杈圭紭绾块€忔槑搴︼紙0~100锛?*/
3840
4121
  setEdgeOpacity(value: number): void;
3841
- /** 设置是否显示网格 */
4122
+ /** 璁剧疆鏄惁鏄剧ず缃戞牸 */
3842
4123
  setShowGrid(show: boolean): void;
3843
- /** 设置是否显示楼层 */
4124
+ /** 璁剧疆鏄惁鏄剧ず妤煎眰 */
3844
4125
  setShowLevel(show: boolean): void;
3845
- /** 设置是否显示地面 */
4126
+ /** 璁剧疆鏄惁鏄剧ず鍦伴潰 */
3846
4127
  setShowGround(show: boolean): void;
3847
- /** 设置当前使用的地面 ID */
4128
+ /** 璁剧疆褰撳墠浣跨敤鐨勫湴闈?ID */
3848
4129
  setGroundId(id: string): void;
3849
- /** 设置地面高度 */
4130
+ /** 璁剧疆鍦伴潰楂樺害 */
3850
4131
  setGroundHeight(height: number): void;
3851
- /** 设置环境类型(none: 无, hdr: HDR贴图, sky: 天空) */
4132
+ /** 璁剧疆鐜绫诲瀷锛坣one: 鏃? hdr: HDR璐村浘, sky: 澶╃┖锛?*/
3852
4133
  setEnvironmentType(type: EnvironmentType): Promise<void>;
3853
- /** 设置 HDR 贴图 ID,当前环境为 hdr 时立即生效 */
4134
+ /** 璁剧疆 HDR 璐村浘 ID锛屽綋鍓嶇幆澧冧负 hdr 鏃剁珛鍗崇敓鏁?*/
3854
4135
  setHdrId(id: string): Promise<void>;
3855
- /** 设置 HDR 强度(0~100),仅在 hdr 模式下生效 */
4136
+ /** 璁剧疆 HDR 寮哄害锛?~100锛夛紝浠呭湪 hdr 妯″紡涓嬬敓鏁?*/
3856
4137
  setHdrIntensity(value: number): void;
3857
- /** 设置天空预设方案,当前环境为 sky 时立即生效 */
4138
+ /** 璁剧疆澶╃┖棰勮鏂规锛屽綋鍓嶇幆澧冧负 sky 鏃剁珛鍗崇敓鏁?*/
3858
4139
  setSkyPreset(preset: SkyPresetName): void;
3859
- /** 设置天空自定义参数,当前环境为 sky 时立即生效 */
4140
+ /** 璁剧疆澶╃┖鑷畾涔夊弬鏁帮紝褰撳墠鐜涓?sky 鏃剁珛鍗崇敓鏁?*/
3860
4141
  setSkyParams(params: SkyParams): void;
3861
- /** 设置天空亮度(0~100),仅在 sky 模式下生效 */
4142
+ /** 璁剧疆澶╃┖浜害锛?~100锛夛紝浠呭湪 sky 妯″紡涓嬬敓鏁?*/
3862
4143
  setSkyIntensity(value: number): void;
3863
- /** 直接设置场景中环境光的强度 */
4144
+ /** 鐩存帴璁剧疆鍦烘櫙涓幆澧冨厜鐨勫己搴?*/
3864
4145
  setAmbientLightIntensity(intensity: number): void;
3865
- /** 一次性应用所有渲染设置 */
4146
+ /** 涓€娆℃€у簲鐢ㄦ墍鏈夋覆鏌撹缃?*/
4147
+ private _syncSettingsFromModules;
4148
+ private _buildDefaultSettingsFromModules;
4149
+ private _readCurrentSettingsFromModules;
4150
+ private _toRenderMode;
4151
+ private _uniformToPercent;
4152
+ private _shadowToPercent;
4153
+ private _exposureToPercent;
4154
+ private _unitToPercent;
4155
+ private _clampPercent;
4156
+ private _getDirectionalLightShadowIntensity;
3866
4157
  private _applyRenderSettings;
3867
- /** 一次性应用所有显示设置 */
4158
+ /** 涓€娆℃€у簲鐢ㄦ墍鏈夋樉绀鸿缃?*/
3868
4159
  private _applyDisplaySettings;
3869
4160
  /**
3870
- * 应用环境设置。
3871
- * 先关闭当前 HDR 和天空,再根据类型重新启用。
3872
- * 使用版本号机制防止多次异步调用之间的竞态条件。
3873
- */
4161
+ * 搴旂敤鐜璁剧疆銆? * 鍏堝叧闂綋鍓?HDR 鍜屽ぉ绌猴紝鍐嶆牴鎹被鍨嬮噸鏂板惎鐢ㄣ€? * 浣跨敤鐗堟湰鍙锋満鍒堕槻姝㈠娆″紓姝ヨ皟鐢ㄤ箣闂寸殑绔炴€佹潯浠躲€? */
3874
4162
  private _applyEnvironmentSettings;
3875
- /** 在场景中查找平行光并执行回调操作 */
3876
4163
  private _updateDirectionalLight;
3877
- /** 合并环境设置,处理 skyPreset skyParams 的联动关系 */
4164
+ /** 鍚堝苟鐜璁剧疆锛屽鐞?skyPreset 涓?skyParams 鐨勮仈鍔ㄥ叧绯?*/
3878
4165
  private _mergeEnvironmentSettings;
3879
- /** 将原始数据转换为标准预设项 */
4166
+ /** 灏嗗師濮嬫暟鎹浆鎹负鏍囧噯棰勮椤?*/
3880
4167
  private _toPresetItem;
3881
- /** 深拷贝工具方法 */
4168
+ /** 娣辨嫹璐濆伐鍏锋柟娉?*/
3882
4169
  private _clone;
3883
4170
  }
3884
4171
 
@@ -3893,6 +4180,7 @@ declare class SkyManager {
3893
4180
  private sky;
3894
4181
  private sun;
3895
4182
  private params;
4183
+ private currentPreset;
3896
4184
  private currentIntensity;
3897
4185
  private currentEnvironmentTarget;
3898
4186
  private readonly skyScale;
@@ -3912,6 +4200,7 @@ declare class SkyManager {
3912
4200
  getParams(): Readonly<Required<SkyParams>>;
3913
4201
  setParams(params: SkyParams): void;
3914
4202
  setPreset(name: SkyPresetName): void;
4203
+ getCurrentPreset(): SkyPresetName;
3915
4204
  getPresetNames(): SkyPresetName[];
3916
4205
  getPresetList(): SkyPresetInfo[];
3917
4206
  setIntensity(intensity: number): void;
@@ -4030,7 +4319,13 @@ declare class ViewCube {
4030
4319
  declare class ViewTree {
4031
4320
  private engine;
4032
4321
  constructor(engine: any);
4033
- getViewTreeData(url: string): any;
4322
+ getAllViewTreeData(): any[];
4323
+ getViewTreeData(url: string): {
4324
+ ceilingPlans: never[];
4325
+ elevations: never[];
4326
+ floorPlans: never[];
4327
+ sections: never[];
4328
+ };
4034
4329
  openView(url: string, viewId: string): void;
4035
4330
  }
4036
4331
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iflow-engine-base",
3
- "version": "3.5.0",
3
+ "version": "3.5.2",
4
4
  "description": "BIM Engine SDK for Vue2, Vue3, React and HTML",
5
5
  "main": "./dist/bim-engine-sdk.umd.js",
6
6
  "module": "./dist/bim-engine-sdk.es.js",
@@ -43,6 +43,7 @@
43
43
  "dependencies": {
44
44
  "@types/three": "^0.181.0",
45
45
  "axios": "^1.13.2",
46
+ "fabric": "^7.3.1",
46
47
  "jszip": "^3.10.1",
47
48
  "opentype.js": "^1.3.4",
48
49
  "stats.js": "^0.17.0",