fl-web-component 2.0.14 → 2.0.16
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 +4 -0
- package/dist/fl-web-component.common.2.js +126 -48
- package/dist/fl-web-component.common.2.js.map +1 -1
- package/dist/fl-web-component.common.js +255 -122
- 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 +279 -88
|
@@ -1 +1 @@
|
|
|
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-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-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
|
@@ -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 };
|
|
@@ -169,6 +242,23 @@ export default {
|
|
|
169
242
|
}
|
|
170
243
|
}
|
|
171
244
|
},
|
|
245
|
+
updateBounds1(v) {
|
|
246
|
+
if (this.bounds1 === null) {
|
|
247
|
+
this.bounds1 = { minX: v.x, maxX: v.x, minY: v.y, maxY: v.y }
|
|
248
|
+
} else {
|
|
249
|
+
if (v.x < this.bounds1.minX) {
|
|
250
|
+
this.bounds1.minX = v.x
|
|
251
|
+
} else if (v.x > this.bounds1.maxX) {
|
|
252
|
+
this.bounds1.maxX = v.x
|
|
253
|
+
}
|
|
254
|
+
if (v.y < this.bounds1.minY) {
|
|
255
|
+
this.bounds1.minY = v.y
|
|
256
|
+
} else if (v.y > this.bounds1.maxY) {
|
|
257
|
+
this.bounds1.maxY = v.y
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
},
|
|
172
262
|
//思路是计算居中包围盒,然后排除脏数据。
|
|
173
263
|
loadDxf(data) {
|
|
174
264
|
let _this = this;
|
|
@@ -368,111 +458,172 @@ export default {
|
|
|
368
458
|
//doc.text("Hello world!", 10, 10);
|
|
369
459
|
//doc.save("a4.pdf");
|
|
370
460
|
},
|
|
371
|
-
toPdfs(list)
|
|
372
|
-
|
|
461
|
+
toPdfs(list){
|
|
462
|
+
|
|
463
|
+
let _this=this;
|
|
373
464
|
const pdf = new jsPDF('l', 'px', [konvaStage.width(), konvaStage.height()]);
|
|
374
465
|
const exportPixelRatio = 2; // 可以 2/3/4 自己调
|
|
375
466
|
|
|
376
|
-
|
|
377
|
-
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
for(let pageIdx =0;pageIdx <list.length;pageIdx++){
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
let data=list[pageIdx];
|
|
378
474
|
//先绘制图面
|
|
379
475
|
konvaLayer.destroyChildren();
|
|
380
476
|
const parser = new DxfParser();
|
|
381
477
|
let dxf = parser.parse(data);
|
|
382
478
|
let entities = formatEntity(dxf.entities);
|
|
383
479
|
let layers = dxf.tables.layer.layers;
|
|
384
|
-
|
|
480
|
+
|
|
481
|
+
//先计算包围
|
|
482
|
+
for(let key in entities) {
|
|
385
483
|
if (entities[key]) {
|
|
386
484
|
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;
|
|
485
|
+
let l = entities[key].length
|
|
486
|
+
let layerConfig = recordLayerConfig[key]
|
|
487
|
+
let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
|
|
391
488
|
for (let i = 0; i < l; i++) {
|
|
392
489
|
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
|
-
);
|
|
490
|
+
handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
|
|
403
491
|
}
|
|
404
|
-
|
|
492
|
+
|
|
405
493
|
for (let i = 0; i < group.length; i++) {
|
|
494
|
+
let entity = group[i];
|
|
495
|
+
if (entity.type === 'line') {
|
|
496
|
+
let x1 = entity.x1;
|
|
497
|
+
let y1 = entity.y1;
|
|
498
|
+
let x2 = entity.x2;
|
|
499
|
+
let y2 = entity.y2;
|
|
500
|
+
let v1 = {};
|
|
501
|
+
v1.x = x1;
|
|
502
|
+
v1.y = y1;
|
|
503
|
+
let v2 = {};
|
|
504
|
+
v2.x = x2;
|
|
505
|
+
v2.y = y2;
|
|
506
|
+
_this.updateBounds1(v1);
|
|
507
|
+
_this.updateBounds1(v2);
|
|
508
|
+
}
|
|
509
|
+
if (entity.type === "polyline") {
|
|
510
|
+
let flag = false;
|
|
511
|
+
let points = entity.points;
|
|
512
|
+
let closed = entity.closed;
|
|
513
|
+
|
|
514
|
+
for (let j = 0; j < points.length; j++) {
|
|
515
|
+
let index = j % 2;
|
|
516
|
+
if (index === 0) {
|
|
517
|
+
let x = points[j];
|
|
518
|
+
let y = points[j + 1];
|
|
519
|
+
let point = {};
|
|
520
|
+
point.x = x;
|
|
521
|
+
point.y = (y);
|
|
522
|
+
_this.updateBounds1( point);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
console.log("bounds1");
|
|
533
|
+
console.log(_this.bounds1);
|
|
534
|
+
|
|
535
|
+
for (let key in entities) {
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
if (entities[key]) {
|
|
540
|
+
let group = [];
|
|
541
|
+
let l = entities[key].length
|
|
542
|
+
let layerConfig = recordLayerConfig[key]
|
|
543
|
+
let configParams = layerConfig && Object.keys(layerConfig).length > 0 ? layerConfig : null
|
|
544
|
+
for (let i = 0; i < l; i++) {
|
|
545
|
+
let type = entities[key][i].type;
|
|
546
|
+
handleFn(type, dxf, entities[key][i], group, key, configParams, konvaLayer, recordLayerConfig)
|
|
547
|
+
}
|
|
548
|
+
if (!konvaLayer) return
|
|
549
|
+
for(let i = 0; i < group.length;i++) {
|
|
406
550
|
let entity = group[i];
|
|
407
551
|
if (entity.type === 'text') {
|
|
552
|
+
|
|
408
553
|
if (konvaLayer) konvaLayer.add(entity.obj);
|
|
409
554
|
}
|
|
410
555
|
}
|
|
411
556
|
|
|
412
|
-
|
|
557
|
+
|
|
558
|
+
if( group[0].stroke==undefined){
|
|
413
559
|
console.log(group);
|
|
414
|
-
group[0].stroke
|
|
560
|
+
group[0].stroke='#000';
|
|
415
561
|
}
|
|
416
|
-
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
let customShape = new Konva.Shape({
|
|
417
568
|
x: 0,
|
|
418
569
|
y: 0,
|
|
419
570
|
strokeWidth: 0.2,
|
|
420
|
-
name: key.replace(/\s*/g,
|
|
571
|
+
name: key.replace(/\s*/g, ""),
|
|
421
572
|
entityId: key,
|
|
422
573
|
stroke: group[0].stroke,
|
|
423
|
-
customColor: configParams ? configParams.color :
|
|
574
|
+
customColor: configParams ? configParams.color : "",
|
|
424
575
|
//visible: configParams ? configParams.visible :true,
|
|
425
|
-
sceneFunc(context, shape) {
|
|
576
|
+
sceneFunc (context, shape) {
|
|
426
577
|
context.beginPath();
|
|
427
|
-
for
|
|
578
|
+
for(let i = 0; i < group.length;i++){
|
|
428
579
|
let entity = group[i];
|
|
429
580
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
if(entity.type === 'line'){
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
context.strokeStyle=entity.stroke;
|
|
587
|
+
let x1=entity.x1;
|
|
588
|
+
let y1=entity.y1;
|
|
589
|
+
let x2=entity.x2;
|
|
590
|
+
let y2=entity.y2;
|
|
591
|
+
if(x1!=undefined&&y1!=undefined&&x2!=undefined&&y2!=undefined) {
|
|
437
592
|
context.moveTo(x1, -parseFloat(y1));
|
|
438
593
|
context.lineTo(x2, -parseFloat(y2));
|
|
439
594
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
let v2 = {};
|
|
444
|
-
v2.x = x2;
|
|
445
|
-
v2.y = y2;
|
|
446
|
-
_this.updateBounds(v1);
|
|
447
|
-
_this.updateBounds(v2);
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
448
598
|
}
|
|
449
|
-
if
|
|
450
|
-
context.strokeStyle
|
|
599
|
+
if(entity.type === "polyline"){
|
|
600
|
+
context.strokeStyle=entity.stroke;
|
|
601
|
+
|
|
602
|
+
let flag=false;
|
|
603
|
+
|
|
451
604
|
|
|
452
|
-
let flag = false;
|
|
453
605
|
|
|
454
|
-
let points
|
|
606
|
+
let points=entity.points;
|
|
455
607
|
let closed = entity.closed;
|
|
456
608
|
|
|
457
|
-
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
for(let j = 0; j < points.length; j++){
|
|
458
612
|
let index = j % 2;
|
|
459
|
-
if
|
|
613
|
+
if(index === 0){
|
|
460
614
|
let x = points[j];
|
|
461
|
-
let y = points[j
|
|
615
|
+
let y = points[j+1];
|
|
462
616
|
|
|
463
|
-
let point = {};
|
|
464
|
-
point.x = x;
|
|
465
|
-
point.y = y;
|
|
466
|
-
_this.updateBounds(point);
|
|
467
617
|
|
|
468
|
-
|
|
618
|
+
|
|
619
|
+
if(j === 0){
|
|
469
620
|
context.moveTo(x, y);
|
|
470
|
-
}
|
|
471
|
-
context.lineTo(x,
|
|
621
|
+
}else{
|
|
622
|
+
context.lineTo(x,y);
|
|
472
623
|
}
|
|
473
624
|
}
|
|
474
625
|
|
|
475
|
-
if
|
|
626
|
+
if(closed) {
|
|
476
627
|
if (j === points.length - 1) {
|
|
477
628
|
context.lineTo(points[0], points[1]);
|
|
478
629
|
}
|
|
@@ -482,41 +633,81 @@ export default {
|
|
|
482
633
|
}
|
|
483
634
|
// context.closePath();
|
|
484
635
|
context.fillStrokeShape(shape);
|
|
485
|
-
}
|
|
636
|
+
}
|
|
486
637
|
});
|
|
487
638
|
if (konvaLayer) konvaLayer.add(customShape);
|
|
488
639
|
}
|
|
489
640
|
}
|
|
490
|
-
konvaStage.scale({
|
|
491
|
-
x: 2,
|
|
492
|
-
y: 2,
|
|
493
|
-
});
|
|
494
641
|
|
|
495
|
-
|
|
496
|
-
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
const { scale, x, y } = this.calculateScaleAndPosition(
|
|
647
|
+
_this.bounds1,
|
|
648
|
+
konvaStage.width(),
|
|
649
|
+
konvaStage.height(),
|
|
650
|
+
0.05 // 5% 边距
|
|
651
|
+
);
|
|
652
|
+
console.log("test1:")
|
|
653
|
+
console.log(this.bounds1);
|
|
654
|
+
|
|
655
|
+
_this.bounds1=null;
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
konvaStage.position({ x: x, y: y });
|
|
661
|
+
konvaStage.scale({ x: scale, y: scale });
|
|
662
|
+
|
|
663
|
+
konvaStage.batchDraw();
|
|
497
664
|
//添加成功移动视口位置
|
|
498
665
|
|
|
499
|
-
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
if(pageIdx==0){
|
|
500
674
|
pdf.addImage(
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
675
|
+
konvaStage.toDataURL({ pixelRatio: 2 }),
|
|
676
|
+
0,
|
|
677
|
+
0,
|
|
678
|
+
konvaStage.width(),
|
|
679
|
+
konvaStage.height()
|
|
506
680
|
);
|
|
507
|
-
|
|
681
|
+
|
|
682
|
+
}else{
|
|
683
|
+
|
|
508
684
|
pdf.addPage();
|
|
509
685
|
pdf.addImage(
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
686
|
+
konvaStage.toDataURL({ pixelRatio: 2 }),
|
|
687
|
+
0,
|
|
688
|
+
0,
|
|
689
|
+
konvaStage.width(),
|
|
690
|
+
konvaStage.height()
|
|
515
691
|
);
|
|
692
|
+
|
|
516
693
|
}
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
517
702
|
}
|
|
703
|
+
pdf.save("批量导出.pdf");
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
518
710
|
|
|
519
|
-
pdf.save('批量导出.pdf');
|
|
520
711
|
|
|
521
712
|
// var imgData = canvas.toDataURL('image/png');
|
|
522
713
|
//doc.text("Hello world!", 10, 10);
|