{"version":3,"file":"index.vue2.mjs","sources":["../../../../../../packages/preview/supports/code-preview/index.vue"],"sourcesContent":["<script lang='ts' setup>\nimport {ref, shallowRef, watch} from 'vue'\nimport {Codemirror} from 'vue-codemirror'\nimport {javascript} from '@codemirror/lang-javascript'\nimport {json} from '@codemirror/lang-json'\nimport {html} from '@codemirror/lang-html'\nimport {xml} from '@codemirror/lang-xml'\nimport {oneDark} from '@codemirror/theme-one-dark'\nimport type {PreviewProps} from '../../preview.interface'\nimport {getFileRenderByFile, getFileRenderByUrl} from '../../utils/utils'\n\nconst props = withDefaults(\n  defineProps<PreviewProps>(),\n  {\n    url: () => null,\n    file: () => null,\n  },\n)\n\nconst emit = defineEmits<{\n  rendered: []\n  error: [error: Error]\n}>()\n\nconst code = ref()\nconst extensions = [javascript(), json(), html(), xml(), oneDark]\n// Codemirror EditorView instance ref\nconst codeViewer = shallowRef()\n\nfunction handleReady(payload): void {\n  codeViewer.value = payload.view\n  emit('rendered')\n}\n\nwatch(\n  () => props.file,\n  (file) => {\n    if (file) {\n      getFileRenderByFile(file).then((render) => {\n        code.value = render\n      }).catch((e: Error) => {\n        emit('error', e)\n      })\n    }\n  },\n  {immediate: true},\n)\n\nwatch(\n  () => props.url,\n  (url) => {\n    if (url && !props.file) {\n      getFileRenderByUrl(url).then((render) => {\n        code.value = render\n      }).catch((e: Error) => {\n        emit('error', e)\n      })\n    }\n  },\n  {immediate: true},\n)\n</script>\n\n<template>\n  <div class=\"code-preview\">\n    <Codemirror\n      v-model=\"code\" :autofocus=\"true\" :indent-with-tab=\"true\" :tab-size=\"2\"\n      :extensions=\"extensions\" @ready=\"handleReady\"\n    />\n  </div>\n</template>\n\n<style scoped lang='scss'>\n.code-preview {\n  min-height: 100vh;\n  background-color: #282c34;\n  overflow: auto;\n}\n</style>\n"],"names":["props","__props","emit","__emit","code","ref","extensions","javascript","json","html","xml","oneDark","codeViewer","shallowRef","handleReady","payload","watch","file","getFileRenderByFile","render","url","getFileRenderByUrl","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","Codemirror","$event"],"mappings":";;;;;;;;;;;;;;;;;AAWA,UAAMA,IAAQC,GAQRC,IAAOC,GAKPC,IAAOC,EAAA,GACPC,IAAa,CAACC,KAAcC,EAAA,GAAQC,EAAA,GAAQC,EAAA,GAAOC,CAAO,GAE1DC,IAAaC,EAAA;AAEnB,aAASC,EAAYC,GAAe;AAClC,MAAAH,EAAW,QAAQG,EAAQ,MAC3Bb,EAAK,UAAU;AAAA,IACjB;AAEA,WAAAc;AAAA,MACE,MAAMhB,EAAM;AAAA,MACZ,CAACiB,MAAS;AACR,QAAIA,KACFC,EAAoBD,CAAI,EAAE,KAAK,CAACE,MAAW;AACzC,UAAAf,EAAK,QAAQe;AAAA,QACf,CAAC,EAAE,MAAM,CAAC,MAAa;AACrB,UAAAjB,EAAK,SAAS,CAAC;AAAA,QACjB,CAAC;AAAA,MAEL;AAAA,MACA,EAAC,WAAW,GAAA;AAAA,IAAI,GAGlBc;AAAA,MACE,MAAMhB,EAAM;AAAA,MACZ,CAACoB,MAAQ;AACP,QAAIA,KAAO,CAACpB,EAAM,QAChBqB,EAAmBD,CAAG,EAAE,KAAK,CAACD,MAAW;AACvC,UAAAf,EAAK,QAAQe;AAAA,QACf,CAAC,EAAE,MAAM,CAAC,MAAa;AACrB,UAAAjB,EAAK,SAAS,CAAC;AAAA,QACjB,CAAC;AAAA,MAEL;AAAA,MACA,EAAC,WAAW,GAAA;AAAA,IAAI,cAKhBoB,EAAA,GAAAC,EAKM,OALNC,GAKM;AAAA,MAJJC,EAGEC,EAAAC,CAAA,GAAA;AAAA,oBAFSvB,EAAA;AAAA,sDAAAA,EAAI,QAAAwB;AAAA,QAAG,WAAW;AAAA,QAAO,mBAAiB;AAAA,QAAO,YAAU;AAAA,QACnE,YAAAtB;AAAA,QAAyB,SAAOQ;AAAA,MAAA;;;;"}