import { reactive, watchEffect } from 'vue'
import { compileFile, MAIN_FILE } from './sfcCompiler'
+import { utoa, atou } from './utils'
const welcomeCode = `
<template>
const savedFiles = location.hash.slice(1)
if (savedFiles) {
- const saved = JSON.parse(atob(savedFiles))
+ const saved = JSON.parse(atou(savedFiles))
for (const filename in saved) {
files[filename] = new File(filename, saved[filename])
}
}
watchEffect(() => {
- history.replaceState({}, '', '#' + btoa(JSON.stringify(exportFiles())))
+ history.replaceState({}, '', '#' + utoa(JSON.stringify(exportFiles())))
})
export function exportFiles() {
}, n)
}
}
+
+// prefer old unicode hacks for backward compatibility
+// https://base64.guru/developers/javascript/examples/unicode-strings
+export function utoa(data: string): string {
+ return btoa(unescape(encodeURIComponent(data)))
+}
+
+export function atou(base64: string): string {
+ return decodeURIComponent(escape(atob(base64)))
+}