| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | <template lang='pug'>  v-card.editor-modal-drawio.animated.fadeIn(flat, tile)    iframe(      ref='drawio'      src='https://embed.diagrams.net/?embed=1&proto=json&spin=1&saveAndExit=1&noSaveBtn=1&noExitBtn=0'      frameborder='0'    )</template><script>import { sync, get } from 'vuex-pathify'// const xmlTest = `<?xml version="1.0" encoding="UTF-8"?>// <mxfile version="13.4.2">//   <diagram id="SgbkCjxR32CZT1FvBvkp" name="Page-1">//     <mxGraphModel dx="2062" dy="1123" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">//       <root>//         <mxCell id="0" />//         <mxCell id="1" parent="0" />//         <mxCell id="5gE3BTvRYS_8FoJnOusC-1" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">//           <mxGeometry x="380" y="530" width="80" height="80" as="geometry" />//         </mxCell>//       </root>//     </mxGraphModel>//   </diagram>// </mxfile>// `export default {  data() {    return {      content: ''    }  },  computed: {    editorKey: get('editor/editorKey'),    activeModal: sync('editor/activeModal')  },  methods: {    close () {      this.activeModal = ''    },    overwriteAndClose() {      this.$root.$emit('overwriteEditorContent')      this.$root.$emit('resetEditorConflict')      this.close()    },    send (msg) {      this.$refs.drawio.contentWindow.postMessage(JSON.stringify(msg), '*')    },    receive (evt) {      if (evt.frame === null || evt.source !== this.$refs.drawio.contentWindow || evt.data.length < 1) {        return      }      try {        const msg = JSON.parse(evt.data)        switch (msg.event) {          case 'init': {            this.send({              action: 'load',              autosave: 0,              modified: 'unsavedChanges',              xml: this.$store.get('editor/activeModalData'),              title: this.$store.get('page/title')            })            this.$store.set('editor/activeModalData', null)            break          }          case 'save': {            if (msg.exit) {              this.send({                action: 'export',                format: 'xmlsvg'              })            }            break          }          case 'export': {            const svgDataStart = msg.data.indexOf('base64,') + 7            this.$root.$emit('editorInsert', {              kind: 'DIAGRAM',              text: msg.data.slice(svgDataStart)              // text: msg.xml.replace(/ agent="(.*?)"/, '').replace(/ host="(.*?)"/, '').replace(/ etag="(.*?)"/, '')            })            this.close()            break          }          case 'exit': {            this.close()            break          }        }      } catch (err) {        console.error(err)      }    }  },  async mounted () {    window.addEventListener('message', this.receive)  },  beforeDestroy () {    window.removeEventListener('message', this.receive)  }}</script><style lang='scss'>.editor-modal-drawio {  position: fixed !important;  top: 0;  left: 0;  z-index: 10;  width: 100%;  height: 100vh;  background-color: rgba(255,255,255, 1) !important;  overflow: hidden;  > iframe {    width: 100%;    height: 100vh;    border: 0;    padding: 0;    background-color: #FFF;  }}</style>
 |