fl-web-component 2.0.13 → 2.0.15
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.
- package/README.md +6 -0
- package/dist/fl-web-component.common.js +288 -164
- package/dist/fl-web-component.common.js.map +1 -1
- package/dist/fl-web-component.css +1 -1
- package/package.json +1 -1
- package/packages/components/com-flcanvas/index.vue +262 -88
- package/packages/components/com-graphics/index.vue +102 -89
- package/packages/utils/StreamLoader.js +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.fl-model-containor[data-v-45f83ec2]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-45f83ec2] .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-45f83ec2] .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-45f83ec2] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-45f83ec2] .measure-label-font{word-break:break-all}[data-v-45f83ec2] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-45f83ec2]{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-45f83ec2]{opacity:1;visibility:visible}.loading-content[data-v-45f83ec2]{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-45f83ec2]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-45f83ec2 1s linear infinite;animation:spin-45f83ec2 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-45f83ec2{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-45f83ec2{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-45f83ec2]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-45f83ec2]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-45f83ec2]{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-45f83ec2]{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-21bcf2d9]{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-3e15de76]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-3e15de76] .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-3e15de76] .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-3e15de76] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-3e15de76] .measure-label-font{word-break:break-all}[data-v-3e15de76] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-3e15de76]{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-3e15de76]{opacity:1;visibility:visible}.loading-content[data-v-3e15de76]{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-3e15de76]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-3e15de76 1s linear infinite;animation:spin-3e15de76 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-3e15de76{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-3e15de76{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-3e15de76]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-3e15de76]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-3e15de76]{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-3e15de76]{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-5d3a370c]{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
|
@@ -55,6 +55,8 @@ export default {
|
|
|
55
55
|
data() {
|
|
56
56
|
return {
|
|
57
57
|
bounds: null,
|
|
58
|
+
bounds1:null,
|
|
59
|
+
|
|
58
60
|
};
|
|
59
61
|
},
|
|
60
62
|
created() {
|
|
@@ -118,33 +120,61 @@ export default {
|
|
|
118
120
|
};
|
|
119
121
|
konvaStage.position(newPos);
|
|
120
122
|
});
|
|
121
|
-
|
|
123
|
+
//双击鼠标滚轮
|
|
124
|
+
konvaStage.on("pointerdblclick", (e) => {
|
|
125
|
+
/*
|
|
122
126
|
konvaStage.scale({
|
|
123
127
|
x: 1,
|
|
124
128
|
y: 1,
|
|
125
129
|
});
|
|
126
|
-
let x
|
|
127
|
-
let y
|
|
130
|
+
let x=-parseFloat(this.bounds.minX);
|
|
131
|
+
let y =-parseFloat(this.bounds.minY);
|
|
128
132
|
|
|
129
133
|
konvaStage.setX(x);
|
|
130
134
|
konvaStage.setY(y); // 750
|
|
131
135
|
|
|
132
136
|
//算一下舞台中点
|
|
133
|
-
let width
|
|
134
|
-
let height
|
|
135
|
-
let x1
|
|
136
|
-
let y1
|
|
137
|
+
let width=konvaStage.width();
|
|
138
|
+
let height=konvaStage.height()
|
|
139
|
+
let x1=width/2;
|
|
140
|
+
let y1=height/2;
|
|
137
141
|
|
|
138
142
|
//算包围盒宽高
|
|
139
143
|
|
|
140
|
-
let boundsWidth
|
|
141
|
-
let boundsHeight
|
|
144
|
+
let boundsWidth=this.bounds.maxX-this.bounds.minX;
|
|
145
|
+
let boundsHeight=Math.abs(Math.abs(this.bounds.maxY)-Math.abs(this.bounds.minY));
|
|
146
|
+
|
|
147
|
+
let x2=x+x1-(boundsWidth/2);
|
|
148
|
+
let y2=y+y1-(boundsHeight/2)
|
|
149
|
+
|
|
142
150
|
|
|
143
|
-
let x2 = x + x1 - boundsWidth / 2;
|
|
144
|
-
let y2 = y + y1 - boundsHeight / 2;
|
|
145
151
|
|
|
146
152
|
konvaStage.setX(x2);
|
|
147
153
|
konvaStage.setY(y2); // 750
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
*/
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
const { scale, x, y } = this.calculateScaleAndPosition(
|
|
163
|
+
this.bounds,
|
|
164
|
+
konvaStage.width(),
|
|
165
|
+
konvaStage.height(),
|
|
166
|
+
0.05 // 5% 边距
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
console.log("test2:");
|
|
170
|
+
console.log(this.bounds)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
konvaStage.position({ x: x, y: y });
|
|
174
|
+
konvaStage.scale({ x: scale, y: scale });
|
|
175
|
+
|
|
176
|
+
konvaStage.batchDraw();
|
|
177
|
+
|
|
148
178
|
});
|
|
149
179
|
});
|
|
150
180
|
|
|
@@ -153,6 +183,49 @@ export default {
|
|
|
153
183
|
//销毁方法
|
|
154
184
|
|
|
155
185
|
methods: {
|
|
186
|
+
calculateScaleAndPosition(contentBounds, stageWidth, stageHeight, padding = 0.1) {
|
|
187
|
+
// 1. 计算内容的实际宽高
|
|
188
|
+
const contentWidth = contentBounds.maxX - contentBounds.minX;
|
|
189
|
+
const contentHeight = contentBounds.maxY - contentBounds.minY;
|
|
190
|
+
|
|
191
|
+
// 2. 处理空内容或零宽高的边界情况
|
|
192
|
+
if (contentWidth <= 0 || contentHeight <= 0) {
|
|
193
|
+
return {
|
|
194
|
+
scale: 1,
|
|
195
|
+
x: stageWidth / 2,
|
|
196
|
+
y: stageHeight / 2
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// 3. 计算可用区域(留出边距)
|
|
201
|
+
const availableWidth = stageWidth * (1 - padding * 2);
|
|
202
|
+
const availableHeight = stageHeight * (1 - padding * 2);
|
|
203
|
+
|
|
204
|
+
// 4. 计算缩放比例(取较小的那个,确保完全显示)
|
|
205
|
+
const scaleX = availableWidth / contentWidth;
|
|
206
|
+
const scaleY = availableHeight / contentHeight;
|
|
207
|
+
const scale = Math.min(scaleX, scaleY);
|
|
208
|
+
|
|
209
|
+
// 5. 计算缩放后的内容尺寸
|
|
210
|
+
const scaledWidth = contentWidth * scale;
|
|
211
|
+
const scaledHeight = contentHeight * scale;
|
|
212
|
+
|
|
213
|
+
// 6. 计算居中偏移量
|
|
214
|
+
// 内容中心点在缩放后的位置
|
|
215
|
+
const contentCenterX = (contentBounds.minX + contentBounds.maxX) / 2;
|
|
216
|
+
const contentCenterY = (contentBounds.minY + contentBounds.maxY) / 2;
|
|
217
|
+
|
|
218
|
+
// 画布中心点
|
|
219
|
+
const stageCenterX = stageWidth / 2;
|
|
220
|
+
const stageCenterY = stageHeight / 2;
|
|
221
|
+
|
|
222
|
+
// 偏移量 = 画布中心 - 内容中心 * 缩放
|
|
223
|
+
const x = stageCenterX - contentCenterX * scale;
|
|
224
|
+
const y = stageCenterY - contentCenterY * scale;
|
|
225
|
+
|
|
226
|
+
return { scale, x, y };
|
|
227
|
+
},
|
|
228
|
+
|
|
156
229
|
updateBounds(v) {
|
|
157
230
|
if (this.bounds === null) {
|
|
158
231
|
this.bounds = { minX: v.x, maxX: v.x, minY: v.y, maxY: v.y };
|
|
@@ -368,111 +441,172 @@ export default {
|
|
|
368
441
|
//doc.text("Hello world!", 10, 10);
|
|
369
442
|
//doc.save("a4.pdf");
|
|
370
443
|
},
|
|
371
|
-
toPdfs(list)
|
|
372
|
-
|
|
444
|
+
toPdfs(list){
|
|
445
|
+
|
|
446
|
+
let _this=this;
|
|
373
447
|
const pdf = new jsPDF('l', 'px', [konvaStage.width(), konvaStage.height()]);
|
|
374
448
|
const exportPixelRatio = 2; // 可以 2/3/4 自己调
|
|
375
449
|
|
|
376
|
-
|
|
377
|
-
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
for(let pageIdx =0;pageIdx <list.length;pageIdx++){
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
let data=list[pageIdx];
|
|
378
457
|
//先绘制图面
|
|
379
458
|
konvaLayer.destroyChildren();
|
|
380
459
|
const parser = new DxfParser();
|
|
381
460
|
let dxf = parser.parse(data);
|
|
382
461
|
let entities = formatEntity(dxf.entities);
|
|
383
462
|
let layers = dxf.tables.layer.layers;
|
|
384
|
-
|
|
463
|
+
|
|
464
|
+
//先计算包围
|
|
465
|
+
for(let key in entities) {
|
|
385
466
|
if (entities[key]) {
|
|
386
467
|
let group = [];
|
|
387
|
-
let l = entities[key].length
|
|
388
|
-
let layerConfig = recordLayerConfig[key]
|
|
389
|
-
let configParams =
|
|
390
|
-
layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null;
|
|
468
|
+
let l = entities[key].length
|
|
469
|
+
let layerConfig = recordLayerConfig[key]
|
|
470
|
+
let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
|
|
391
471
|
for (let i = 0; i < l; i++) {
|
|
392
472
|
let type = entities[key][i].type;
|
|
393
|
-
handleFn(
|
|
394
|
-
type,
|
|
395
|
-
dxf,
|
|
396
|
-
entities[key][i],
|
|
397
|
-
group,
|
|
398
|
-
key,
|
|
399
|
-
configParams,
|
|
400
|
-
konvaLayer,
|
|
401
|
-
recordLayerConfig
|
|
402
|
-
);
|
|
473
|
+
handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
|
|
403
474
|
}
|
|
404
|
-
|
|
475
|
+
|
|
405
476
|
for (let i = 0; i < group.length; i++) {
|
|
477
|
+
let entity = group[i];
|
|
478
|
+
if (entity.type === 'line') {
|
|
479
|
+
let x1 = entity.x1;
|
|
480
|
+
let y1 = entity.y1;
|
|
481
|
+
let x2 = entity.x2;
|
|
482
|
+
let y2 = entity.y2;
|
|
483
|
+
let v1 = {};
|
|
484
|
+
v1.x = x1;
|
|
485
|
+
v1.y = y1;
|
|
486
|
+
let v2 = {};
|
|
487
|
+
v2.x = x2;
|
|
488
|
+
v2.y = y2;
|
|
489
|
+
_this.updateBounds1(v1);
|
|
490
|
+
_this.updateBounds1(v2);
|
|
491
|
+
}
|
|
492
|
+
if (entity.type === "polyline") {
|
|
493
|
+
let flag = false;
|
|
494
|
+
let points = entity.points;
|
|
495
|
+
let closed = entity.closed;
|
|
496
|
+
|
|
497
|
+
for (let j = 0; j < points.length; j++) {
|
|
498
|
+
let index = j % 2;
|
|
499
|
+
if (index === 0) {
|
|
500
|
+
let x = points[j];
|
|
501
|
+
let y = points[j + 1];
|
|
502
|
+
let point = {};
|
|
503
|
+
point.x = x;
|
|
504
|
+
point.y = (y);
|
|
505
|
+
_this.updateBounds1( point);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
console.log("bounds1");
|
|
516
|
+
console.log(_this.bounds1);
|
|
517
|
+
|
|
518
|
+
for (let key in entities) {
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
if (entities[key]) {
|
|
523
|
+
let group = [];
|
|
524
|
+
let l = entities[key].length
|
|
525
|
+
let layerConfig = recordLayerConfig[key]
|
|
526
|
+
let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
|
|
527
|
+
for (let i = 0; i < l; i++) {
|
|
528
|
+
let type = entities[key][i].type;
|
|
529
|
+
handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
|
|
530
|
+
}
|
|
531
|
+
if (!konvaLayer) return
|
|
532
|
+
for(let i = 0; i < group.length;i++) {
|
|
406
533
|
let entity = group[i];
|
|
407
534
|
if (entity.type === 'text') {
|
|
535
|
+
|
|
408
536
|
if (konvaLayer) konvaLayer.add(entity.obj);
|
|
409
537
|
}
|
|
410
538
|
}
|
|
411
539
|
|
|
412
|
-
|
|
540
|
+
|
|
541
|
+
if( group[0].stroke==undefined){
|
|
413
542
|
console.log(group);
|
|
414
|
-
group[0].stroke
|
|
543
|
+
group[0].stroke='#000';
|
|
415
544
|
}
|
|
416
|
-
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
let customShape = new Konva.Shape({
|
|
417
551
|
x: 0,
|
|
418
552
|
y: 0,
|
|
419
553
|
strokeWidth: 0.2,
|
|
420
|
-
name: key.replace(/\s*/g,
|
|
554
|
+
name: key.replace(/\s*/g, ""),
|
|
421
555
|
entityId: key,
|
|
422
556
|
stroke: group[0].stroke,
|
|
423
|
-
customColor: configParams ? configParams.color :
|
|
557
|
+
customColor: configParams ? configParams.color : "",
|
|
424
558
|
//visible: configParams ? configParams.visible :true,
|
|
425
|
-
sceneFunc(context, shape) {
|
|
559
|
+
sceneFunc (context, shape) {
|
|
426
560
|
context.beginPath();
|
|
427
|
-
for
|
|
561
|
+
for(let i = 0; i < group.length;i++){
|
|
428
562
|
let entity = group[i];
|
|
429
563
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
if(entity.type === 'line'){
|
|
567
|
+
|
|
568
|
+
|
|
569
|
+
context.strokeStyle=entity.stroke;
|
|
570
|
+
let x1=entity.x1;
|
|
571
|
+
let y1=entity.y1;
|
|
572
|
+
let x2=entity.x2;
|
|
573
|
+
let y2=entity.y2;
|
|
574
|
+
if(x1!=undefined&&y1!=undefined&&x2!=undefined&&y2!=undefined) {
|
|
437
575
|
context.moveTo(x1, -parseFloat(y1));
|
|
438
576
|
context.lineTo(x2, -parseFloat(y2));
|
|
439
577
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
let v2 = {};
|
|
444
|
-
v2.x = x2;
|
|
445
|
-
v2.y = y2;
|
|
446
|
-
_this.updateBounds(v1);
|
|
447
|
-
_this.updateBounds(v2);
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
448
581
|
}
|
|
449
|
-
if
|
|
450
|
-
context.strokeStyle
|
|
582
|
+
if(entity.type === "polyline"){
|
|
583
|
+
context.strokeStyle=entity.stroke;
|
|
451
584
|
|
|
452
|
-
let flag
|
|
585
|
+
let flag=false;
|
|
453
586
|
|
|
454
|
-
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
let points=entity.points;
|
|
455
590
|
let closed = entity.closed;
|
|
456
591
|
|
|
457
|
-
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
for(let j = 0; j < points.length; j++){
|
|
458
595
|
let index = j % 2;
|
|
459
|
-
if
|
|
596
|
+
if(index === 0){
|
|
460
597
|
let x = points[j];
|
|
461
|
-
let y = points[j
|
|
598
|
+
let y = points[j+1];
|
|
462
599
|
|
|
463
|
-
let point = {};
|
|
464
|
-
point.x = x;
|
|
465
|
-
point.y = y;
|
|
466
|
-
_this.updateBounds(point);
|
|
467
600
|
|
|
468
|
-
|
|
601
|
+
|
|
602
|
+
if(j === 0){
|
|
469
603
|
context.moveTo(x, y);
|
|
470
|
-
}
|
|
471
|
-
context.lineTo(x,
|
|
604
|
+
}else{
|
|
605
|
+
context.lineTo(x,y);
|
|
472
606
|
}
|
|
473
607
|
}
|
|
474
608
|
|
|
475
|
-
if
|
|
609
|
+
if(closed) {
|
|
476
610
|
if (j === points.length - 1) {
|
|
477
611
|
context.lineTo(points[0], points[1]);
|
|
478
612
|
}
|
|
@@ -482,41 +616,81 @@ export default {
|
|
|
482
616
|
}
|
|
483
617
|
// context.closePath();
|
|
484
618
|
context.fillStrokeShape(shape);
|
|
485
|
-
}
|
|
619
|
+
}
|
|
486
620
|
});
|
|
487
621
|
if (konvaLayer) konvaLayer.add(customShape);
|
|
488
622
|
}
|
|
489
623
|
}
|
|
490
|
-
konvaStage.scale({
|
|
491
|
-
x: 2,
|
|
492
|
-
y: 2,
|
|
493
|
-
});
|
|
494
624
|
|
|
495
|
-
|
|
496
|
-
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
const { scale, x, y } = this.calculateScaleAndPosition(
|
|
630
|
+
_this.bounds1,
|
|
631
|
+
konvaStage.width(),
|
|
632
|
+
konvaStage.height(),
|
|
633
|
+
0.05 // 5% 边距
|
|
634
|
+
);
|
|
635
|
+
console.log("test1:")
|
|
636
|
+
console.log(this.bounds1);
|
|
637
|
+
|
|
638
|
+
_this.bounds1=null;
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
konvaStage.position({ x: x, y: y });
|
|
644
|
+
konvaStage.scale({ x: scale, y: scale });
|
|
645
|
+
|
|
646
|
+
konvaStage.batchDraw();
|
|
497
647
|
//添加成功移动视口位置
|
|
498
648
|
|
|
499
|
-
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
if(pageIdx==0){
|
|
500
657
|
pdf.addImage(
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
658
|
+
konvaStage.toDataURL({ pixelRatio: 2 }),
|
|
659
|
+
0,
|
|
660
|
+
0,
|
|
661
|
+
konvaStage.width(),
|
|
662
|
+
konvaStage.height()
|
|
506
663
|
);
|
|
507
|
-
|
|
664
|
+
|
|
665
|
+
}else{
|
|
666
|
+
|
|
508
667
|
pdf.addPage();
|
|
509
668
|
pdf.addImage(
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
669
|
+
konvaStage.toDataURL({ pixelRatio: 2 }),
|
|
670
|
+
0,
|
|
671
|
+
0,
|
|
672
|
+
konvaStage.width(),
|
|
673
|
+
konvaStage.height()
|
|
515
674
|
);
|
|
675
|
+
|
|
516
676
|
}
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
517
685
|
}
|
|
686
|
+
pdf.save("批量导出.pdf");
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
518
693
|
|
|
519
|
-
pdf.save('批量导出.pdf');
|
|
520
694
|
|
|
521
695
|
// var imgData = canvas.toDataURL('image/png');
|
|
522
696
|
//doc.text("Hello world!", 10, 10);
|