fl-web-component 2.0.19-beta.0 → 2.0.19

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
- @charset "UTF-8";.fl-model-containor[data-v-a4813dca]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-a4813dca] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-a4813dca] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-a4813dca] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-a4813dca] .measure-label-font{word-break:break-all}[data-v-a4813dca] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-a4813dca]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-a4813dca]{opacity:1;visibility:visible}.loading-content[data-v-a4813dca]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-a4813dca]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-a4813dca 1s linear infinite;animation:spin-a4813dca 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-a4813dca{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-a4813dca{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-a4813dca]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-a4813dca]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-a4813dca]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-a4813dca]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-b313ab6c]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
1
+ @charset "UTF-8";.fl-model-containor[data-v-607a330c]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-607a330c] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-607a330c] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-607a330c] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-607a330c] .measure-label-font{word-break:break-all}[data-v-607a330c] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-607a330c]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-607a330c]{opacity:1;visibility:visible}.loading-content[data-v-607a330c]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-607a330c]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-607a330c 1s linear infinite;animation:spin-607a330c 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-607a330c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-607a330c{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-607a330c]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-607a330c]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-607a330c]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-607a330c]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}#konva-container[data-v-b313ab6c]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-f547d5c6]{font-weight:bolder}.text[data-v-f547d5c6]{margin-top:20px}.line[data-v-f547d5c6]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.center .cen span[data-v-f547d5c6],.center .top span[data-v-f547d5c6]{color:"#53a8ff";display:inline-block;width:30px;height:30px;text-align:center;line-height:30px;border:1px solid;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-f547d5c6]{margin:10px}.button[data-v-f547d5c6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-f547d5c6]{font-family:iconfont!important;font-size:50px;font-style:normal;color:"#53a8ff";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-f547d5c6]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fl-web-component",
3
- "version": "2.0.19-beta.0",
3
+ "version": "2.0.19",
4
4
  "scripts": {
5
5
  "postinstall": "patch-package",
6
6
  "tip1": "仅调试本组件不涉及业务组件,请执行dev",
@@ -8,9 +8,8 @@
8
8
  "lint": "eslint \"{src,packages}/**/*.{vue,js}\" --fix",
9
9
  "prettier": "prettier --write \"packages/**/*.{js,css,less,scss,vue,html}\"",
10
10
  "=": "=============================================================",
11
- "tip2": "同时调试本组件与业务组件,请执行watch,生产模式监听请执行watch:prod",
12
- "watch": "vue-cli-service build --watch --mode development --target lib --name fl-web-component --formats commonjs ./src/main.js",
13
- "watch:prod": "vue-cli-service build --watch --mode production --target lib --name fl-web-component --formats commonjs ./src/main.js",
11
+ "tip2": "同时调试本组件与业务组件,请执行watch",
12
+ "watch": "vue-cli-service build --watch --mode production --target lib --name fl-web-component --formats commonjs ./src/main.js",
14
13
  "build": "npm run lint && vue-cli-service build --target lib --name fl-web-component --formats commonjs ./src/main.js",
15
14
  "build:test": "vue-cli-service build --target lib --name fl-web-component --formats commonjs ./src/main.js",
16
15
  "publish:base": "npm run build && npm publish --registry https://registry.npmjs.org/",
@@ -0,0 +1,77 @@
1
+ {
2
+ "code": 200,
3
+ "msg": "操作成功",
4
+ "data": [
5
+ {
6
+ "id": 5,
7
+ "min": [268.0, 578.0, 5.0],
8
+ "max": [280.0, 588.0, 5.02],
9
+ "flag": 1,
10
+ "obb": [
11
+ 268.0, 588.0, 5.0, 268.0, 578.0, 5.0, 268.0, 588.0, 5.02, 268.0, 588.0, 5.02, 268.0, 578.0,
12
+ 5.0, 268.0, 578.0, 5.02, 268.0, 578.0, 5.0, 271.0, 578.0, 5.0, 268.0, 578.0, 5.02, 268.0,
13
+ 578.0, 5.02, 271.0, 578.0, 5.0, 271.0, 578.0, 5.02, 271.0, 578.0, 5.0, 271.0, 585.0, 5.0,
14
+ 271.0, 578.0, 5.02, 271.0, 578.0, 5.02, 271.0, 585.0, 5.0, 271.0, 585.0, 5.02, 271.0, 585.0,
15
+ 5.0, 280.0, 585.0, 5.0, 271.0, 585.0, 5.02, 271.0, 585.0, 5.02, 280.0, 585.0, 5.0, 280.0,
16
+ 585.0, 5.02, 271.0, 578.0, 5.0, 268.0, 578.0, 5.0, 271.0, 585.0, 5.0, 271.0, 585.0, 5.0,
17
+ 268.0, 578.0, 5.0, 268.0, 588.0, 5.0, 271.0, 585.0, 5.0, 268.0, 588.0, 5.0, 280.0, 588.0,
18
+ 5.0, 280.0, 588.0, 5.0, 280.0, 585.0, 5.0, 271.0, 585.0, 5.0, 268.0, 578.0, 5.02, 271.0,
19
+ 578.0, 5.02, 268.0, 588.0, 5.02, 268.0, 588.0, 5.02, 271.0, 578.0, 5.02, 271.0, 585.0, 5.02,
20
+ 268.0, 588.0, 5.02, 271.0, 585.0, 5.02, 280.0, 585.0, 5.02, 280.0, 585.0, 5.02, 280.0,
21
+ 588.0, 5.02, 268.0, 588.0, 5.02, 280.0, 585.0, 5.0, 280.0, 588.0, 5.0, 280.0, 585.0, 5.02,
22
+ 280.0, 585.0, 5.02, 280.0, 588.0, 5.0, 280.0, 588.0, 5.02, 280.0, 588.0, 5.0, 268.0, 588.0,
23
+ 5.0, 280.0, 588.0, 5.02, 280.0, 588.0, 5.02, 268.0, 588.0, 5.0, 268.0, 588.0, 5.02
24
+ ],
25
+ "transp": 1.0
26
+ },
27
+ {
28
+ "id": 288,
29
+ "min": [2881.839, 3967.814, -0.01065],
30
+ "max": [2882.217, 3967.836, 0.01065],
31
+ "flag": 2,
32
+ "obb": [
33
+ 2882.02807617188, 3967.82495117188, -2.55106394476346e-20, 0.188999995589256,
34
+ 0.0109999999403954, 0.0106499996036291, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0
35
+ ],
36
+ "transp": 1.0
37
+ },
38
+ {
39
+ "id": 291,
40
+ "min": [2882.104, 3967.956, -0.01065],
41
+ "max": [2882.374, 3968.124, 0.01065],
42
+ "flag": 2,
43
+ "obb": [
44
+ 2882.23901367188, 3968.0400390625, -2.55106394476346e-20, 0.188999995589256,
45
+ 0.0109999999403954, 0.0106499996036291, 0.500014126300812, 0.86601722240448, 0.0,
46
+ -0.86601722240448, 0.500014126300812, 0.0, 0.0, 0.0, 1.0
47
+ ],
48
+ "transp": 1.0
49
+ },
50
+ {
51
+ "id": 292,
52
+ "min": [2882.217, 3968.04, -0.01065],
53
+ "max": [2882.374, 3968.124, 0.01065],
54
+ "flag": 3,
55
+ "obb": [
56
+ 276.758514404297, 586.730529785156, 5.27499485015869,
57
+ 276.844261169434, 586.816268920898, 5.47500514984131,
58
+ 276.758514404297, 586.816268920898, 5.27499485015869,
59
+ 276.844261169434, 586.902008056641, 5.47500514984131,
60
+ 276.758514404297, 586.987747192383, 5.27499485015869,
61
+ 276.844261169434, 587.073486328125, 5.47500514984131
62
+ ]
63
+ },
64
+ {
65
+ "id": 293,
66
+ "min": [2882.217, 3968.04, -0.01065],
67
+ "max": [2882.374, 3968.124, 0.01065],
68
+ "flag": 3,
69
+ "obb": [
70
+ 276.758514404297, 586.730529785156, 5.27499485015869,
71
+ 276.844261169434, 586.816268920898, 5.47500514984131,
72
+ 276.758514404297, 586.816268920898, 5.27499485015869,
73
+ 276.844261169434, 586.902008056641, 5.47500514984131
74
+ ]
75
+ }
76
+ ]
77
+ }
@@ -138,7 +138,6 @@ import MeasureHeight from '@/utils/threejs/measure-height.js';
138
138
  import MeasureClearDistance from '@/utils/threejs/measure-clear-distance.js';
139
139
  import { parseData, processMeshData, processNodeData } from '@/utils/flgltf-parser';
140
140
  import {
141
- GEOM_TYPES,
142
141
  handleInstancedMeshModel,
143
142
  resetProcessingState,
144
143
  PRIMITIVE_TYPE,
@@ -155,7 +154,7 @@ import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass.js';
155
154
  import { OutputPass } from 'three/examples/jsm/postprocessing/OutputPass.js';
156
155
  import Stats from 'three/examples/jsm/libs/stats.module.js';
157
156
  import { OBB } from 'three/examples/jsm/math/OBB.js';
158
- // import boxJson from './box.json';
157
+ import boxJson from './box.json';
159
158
  import { StreamLoader } from '../../utils/StreamLoader.js';
160
159
  import StreamLoaderParserWorker from '../../utils/StreamLoaderParser.worker.js';
161
160
  import SceneCommandService from '@/utils/threejs/editor/scene-command-service.js';
@@ -165,6 +164,7 @@ import { onContextHandle } from './component/context';
165
164
 
166
165
  const isDebug = process.env.NODE_ENV !== 'production' || process.env.VUE_APP_IS_WATCH === true;
167
166
  // const isDebug = false;
167
+ const COLLISION_PENETRATION_EPSILON = 0.1;
168
168
 
169
169
  export default {
170
170
  name: 'FlModel',
@@ -1536,12 +1536,8 @@ export default {
1536
1536
  if (isAdd && boxJson) {
1537
1537
  const arr = boxJson ? boxJson : [];
1538
1538
  const modelIds = new Set();
1539
- const validGeomTypes = new Set(Object.values(GEOM_TYPES));
1540
1539
  for (let i = 0; i < arr.length; i++) {
1541
1540
  const it = arr[i];
1542
- if (!validGeomTypes.has(it.geomType)) {
1543
- continue;
1544
- }
1545
1541
  if (it.obb.length == 0) {
1546
1542
  continue;
1547
1543
  }
@@ -1553,22 +1549,10 @@ export default {
1553
1549
  // 构造 AABB
1554
1550
  const boxThree = new this.THREE.Box3(min, max);
1555
1551
 
1556
- const hasMatrix = Array.isArray(it.matrix) && it.matrix.length >= 16;
1557
- const hasMeshMatrix = Array.isArray(it.meshMatrix) && it.meshMatrix.length >= 16;
1558
- let localMatrix = null;
1559
- if (hasMatrix || hasMeshMatrix) {
1560
- localMatrix = new this.THREE.Matrix4();
1561
- if (hasMeshMatrix) {
1562
- localMatrix.fromArray(it.meshMatrix);
1563
- } else {
1564
- localMatrix.identity();
1565
- }
1566
- if (hasMatrix) {
1567
- const matrix = new this.THREE.Matrix4().fromArray(it.matrix);
1568
- localMatrix.multiply(matrix);
1569
- }
1570
-
1571
- const worldMatrix = localMatrix.clone();
1552
+ const hasMatrix = Array.isArray(it.matrix);
1553
+ if (hasMatrix && it.matrix.length >= 16) {
1554
+ const matrix = new this.THREE.Matrix4().fromArray(it.matrix);
1555
+ const worldMatrix = matrix.clone();
1572
1556
  if (this.bizToThreeMatrix) {
1573
1557
  worldMatrix.premultiply(this.bizToThreeMatrix);
1574
1558
  }
@@ -1580,18 +1564,14 @@ export default {
1580
1564
 
1581
1565
  const userData = {
1582
1566
  flag: it.flag || 1, // 默认为 1
1583
- geomType: it.geomType,
1584
1567
  obbData: it.obb, // 存储原始 OBB 数据
1585
1568
  transparent: it.transp > 0,
1586
1569
  sourceVisible: it.visible === false ? false : true,
1587
1570
  visible: it.visible === false ? false : true, // 默认显示
1588
- occlusionEnabled:
1589
- it.geomType === GEOM_TYPES.geom_3d || it.geomType === GEOM_TYPES.geom_3d_obj,
1590
1571
  };
1591
1572
  if (it.flag === 1) {
1592
1573
  userData.indices = it.indices;
1593
- userData.matrix = localMatrix ? localMatrix.toArray() : it.matrix;
1594
- userData.meshMatrix = it.meshMatrix;
1574
+ userData.matrix = it.matrix;
1595
1575
  // userData.matrix = new this.THREE.Matrix4().identity();
1596
1576
  }
1597
1577
  // 如果是 flag=3,解析并存储中心点、半轴长、旋转矩阵
@@ -1609,9 +1589,6 @@ export default {
1609
1589
  center.z
1610
1590
  );
1611
1591
  obbMatrix.multiply(rotationMatrix4);
1612
- if (localMatrix) {
1613
- obbMatrix.premultiply(localMatrix);
1614
- }
1615
1592
 
1616
1593
  userData.obb = {
1617
1594
  matrix: obbMatrix,
@@ -1656,9 +1633,6 @@ export default {
1656
1633
  this.buildOctreeFromBoxIndex();
1657
1634
  console.log('time end', Date.now());
1658
1635
  },
1659
- shouldApplyOcclusionByBox(box) {
1660
- return !!(box && box.userData && box.userData.occlusionEnabled);
1661
- },
1662
1636
  tryInitialCenterAfterBoundsReady() {
1663
1637
  if (this.hasExecutedCentering || this.userInteracting) return;
1664
1638
  if (
@@ -1769,6 +1743,84 @@ export default {
1769
1743
  }
1770
1744
  node.items.push({ id, box });
1771
1745
  },
1746
+ _isCollisionBoxAvailable(box) {
1747
+ if (!box || !box.isBox3 || box.isEmpty()) return false;
1748
+ if (box.userData && box.userData.visible === false) return false;
1749
+ return true;
1750
+ },
1751
+ _formatCollisionPairId(id) {
1752
+ const value = String(id);
1753
+ const numberValue = Number(value);
1754
+ return Number.isFinite(numberValue) ? numberValue : id;
1755
+ },
1756
+ _getBoxMinPenetration(boxA, boxB) {
1757
+ const x = Math.min(boxA.max.x - boxB.min.x, boxB.max.x - boxA.min.x);
1758
+ const y = Math.min(boxA.max.y - boxB.min.y, boxB.max.y - boxA.min.y);
1759
+ const z = Math.min(boxA.max.z - boxB.min.z, boxB.max.z - boxA.min.z);
1760
+ return Math.min(x, y, z);
1761
+ },
1762
+ _isCollisionBoxMatched(boxA, boxB) {
1763
+ if (!this._isCollisionBoxAvailable(boxA) || !this._isCollisionBoxAvailable(boxB))
1764
+ return false;
1765
+ if (!boxA.intersectsBox(boxB)) return false;
1766
+ return this._getBoxMinPenetration(boxA, boxB) > COLLISION_PENETRATION_EPSILON;
1767
+ },
1768
+ _queryOctreeByBox(box) {
1769
+ const results = [];
1770
+ const root = this._octree;
1771
+ if (!root || !this._isCollisionBoxAvailable(box)) return results;
1772
+
1773
+ const stack = [root];
1774
+ while (stack.length) {
1775
+ const node = stack.pop();
1776
+ if (!node || !node.box || !this._isCollisionBoxMatched(node.box, box)) continue;
1777
+
1778
+ if (node.children) {
1779
+ for (let i = 0; i < 8; i++) {
1780
+ stack.push(node.children[i]);
1781
+ }
1782
+ }
1783
+
1784
+ if (node.items && node.items.length) {
1785
+ for (let i = 0; i < node.items.length; i++) {
1786
+ const item = node.items[i];
1787
+ if (item && this._isCollisionBoxMatched(item.box, box)) {
1788
+ results.push(item);
1789
+ }
1790
+ }
1791
+ }
1792
+ }
1793
+
1794
+ return results;
1795
+ },
1796
+ getOctreeCollisionPairs() {
1797
+ const pairs = [];
1798
+ if (!this._boxIndex || this._boxIndex.size === 0) return { pairs };
1799
+
1800
+ if (!this._octree) {
1801
+ this.buildOctreeFromBoxIndex();
1802
+ }
1803
+ if (!this._octree) return { pairs };
1804
+
1805
+ this._boxIndex.forEach((boxA, idA) => {
1806
+ if (!this._isCollisionBoxAvailable(boxA)) return;
1807
+
1808
+ const hits = this._queryOctreeByBox(boxA);
1809
+ for (let i = 0; i < hits.length; i++) {
1810
+ const item = hits[i];
1811
+ if (!item || String(item.id) === String(idA)) continue;
1812
+ const boxB = item.box;
1813
+ if (!this._isCollisionBoxMatched(boxA, boxB)) continue;
1814
+
1815
+ pairs.push({
1816
+ idA: this._formatCollisionPairId(idA),
1817
+ idB: this._formatCollisionPairId(item.id),
1818
+ });
1819
+ }
1820
+ });
1821
+
1822
+ return { pairs };
1823
+ },
1772
1824
  _getCurrentFrustum() {
1773
1825
  // 确保相机矩阵是最新的
1774
1826
  if (this.camera) {
@@ -2251,10 +2303,6 @@ export default {
2251
2303
  for (let i = 0; i < hits.length; i++) {
2252
2304
  if (hits[i].box && hits[i].box.userData && hits[i].box.userData.visible === false)
2253
2305
  continue;
2254
- if (!this.shouldApplyOcclusionByBox(hits[i].box)) {
2255
- visibleIdSet.add(this.formatModelId(hits[i].modelId));
2256
- continue;
2257
- }
2258
2306
  candidates.push(hits[i]);
2259
2307
  }
2260
2308
  } else if (this._boxIndex && this._boxIndex.size > 0) {
@@ -2262,10 +2310,6 @@ export default {
2262
2310
  if (bypassList && bypassList.size > 0 && bypassList.has(modelId)) return;
2263
2311
  if (box.userData && box.userData.visible === false) return;
2264
2312
  if (this.isBoxInFrustum(box)) {
2265
- if (!this.shouldApplyOcclusionByBox(box)) {
2266
- visibleIdSet.add(this.formatModelId(modelId));
2267
- return;
2268
- }
2269
2313
  candidates.push({ modelId, box });
2270
2314
  }
2271
2315
  });
@@ -2941,16 +2985,6 @@ export default {
2941
2985
  instanceInfo && typeof instanceInfo.instanceIndex === 'number'
2942
2986
  ? instanceInfo.instanceIndex
2943
2987
  : null;
2944
- const box =
2945
- this._boxIndex && this._boxIndex.has(String(modelId))
2946
- ? this._boxIndex.get(String(modelId))
2947
- : this._boxIndex && this._boxIndex.has(modelId)
2948
- ? this._boxIndex.get(modelId)
2949
- : null;
2950
- if (!this.shouldApplyOcclusionByBox(box)) {
2951
- allInactive = false;
2952
- continue;
2953
- }
2954
2988
 
2955
2989
  const inFrustum = this.isModelInFrustum(child, instanceIndex, globalFrustum);
2956
2990
  const modelInVisible = toLoadSet.has(modelId);
@@ -2964,18 +2998,6 @@ export default {
2964
2998
 
2965
2999
  // 第二遍遍历:同步状态并决定是否卸载
2966
3000
  for (const modelId of modelIds) {
2967
- const box =
2968
- this._boxIndex && this._boxIndex.has(String(modelId))
2969
- ? this._boxIndex.get(String(modelId))
2970
- : this._boxIndex && this._boxIndex.has(modelId)
2971
- ? this._boxIndex.get(modelId)
2972
- : null;
2973
- if (!this.shouldApplyOcclusionByBox(box)) {
2974
- if (toLoadSet.has(modelId)) {
2975
- toLoadSet.delete(modelId);
2976
- }
2977
- continue;
2978
- }
2979
3001
  // 无论是否卸载,只要模型已在场景中,就从待加载集合中移除
2980
3002
  if (toLoadSet.has(modelId)) {
2981
3003
  toLoadSet.delete(modelId);
@@ -2997,18 +3019,6 @@ export default {
2997
3019
  ? child.parent.userData.instanceId
2998
3020
  : child.uuid;
2999
3021
  if (bypassList && bypassList.size > 0 && bypassList.has(modelId)) return;
3000
- const box =
3001
- this._boxIndex && this._boxIndex.has(String(modelId))
3002
- ? this._boxIndex.get(String(modelId))
3003
- : this._boxIndex && this._boxIndex.has(modelId)
3004
- ? this._boxIndex.get(modelId)
3005
- : null;
3006
- if (!this.shouldApplyOcclusionByBox(box)) {
3007
- if (toLoadSet.has(modelId)) {
3008
- toLoadSet.delete(modelId);
3009
- }
3010
- return;
3011
- }
3012
3022
 
3013
3023
  const inFrustum = this.isModelInFrustum(child, null, globalFrustum);
3014
3024
  let modelInVisible = toLoadSet.has(modelId);