diff options
Diffstat (limited to 'src/tools/base64-string-converter/base64-string-converter.vue')
-rw-r--r-- | src/tools/base64-string-converter/base64-string-converter.vue | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/src/tools/base64-string-converter/base64-string-converter.vue b/src/tools/base64-string-converter/base64-string-converter.vue index 9d574c9..486758c 100644 --- a/src/tools/base64-string-converter/base64-string-converter.vue +++ b/src/tools/base64-string-converter/base64-string-converter.vue @@ -1,3 +1,30 @@ +<script setup lang="ts"> +import { computed, ref } from 'vue'; +import { useCopy } from '@/composable/copy'; +import { base64ToText, isValidBase64, textToBase64 } from '@/utils/base64'; +import { withDefaultOnError } from '@/utils/defaults'; + +const encodeUrlSafe = useStorage('base64-string-converter--encode-url-safe', false); +const decodeUrlSafe = useStorage('base64-string-converter--decode-url-safe', false); + +const textInput = ref(''); +const base64Output = computed(() => textToBase64(textInput.value, { makeUrlSafe: encodeUrlSafe.value })); +const { copy: copyTextBase64 } = useCopy({ source: base64Output, text: 'Base64 string copied to the clipboard' }); + +const base64Input = ref(''); +const textOutput = computed(() => + withDefaultOnError(() => base64ToText(base64Input.value.trim(), { makeUrlSafe: decodeUrlSafe.value }), ''), +); +const { copy: copyText } = useCopy({ source: textOutput, text: 'String copied to the clipboard' }); +const b64ValidationRules = [ + { + message: 'Invalid base64 string', + validator: (value: string) => isValidBase64(value.trim(), { makeUrlSafe: decodeUrlSafe.value }), + }, +]; +const b64ValidationWatch = [decodeUrlSafe]; +</script> + <template> <c-card title="String to base64"> <n-form-item label="Encode URL safe" label-placement="left"> @@ -24,7 +51,9 @@ /> <div flex justify-center> - <c-button @click="copyTextBase64()"> Copy base64 </c-button> + <c-button @click="copyTextBase64()"> + Copy base64 + </c-button> </div> </c-card> @@ -54,34 +83,9 @@ /> <div flex justify-center> - <c-button @click="copyText()"> Copy decoded string </c-button> + <c-button @click="copyText()"> + Copy decoded string + </c-button> </div> </c-card> </template> - -<script setup lang="ts"> -import { useCopy } from '@/composable/copy'; -import { base64ToText, isValidBase64, textToBase64 } from '@/utils/base64'; -import { withDefaultOnError } from '@/utils/defaults'; -import { computed, ref } from 'vue'; - -const encodeUrlSafe = useStorage('base64-string-converter--encode-url-safe', false); -const decodeUrlSafe = useStorage('base64-string-converter--decode-url-safe', false); - -const textInput = ref(''); -const base64Output = computed(() => textToBase64(textInput.value, { makeUrlSafe: encodeUrlSafe.value })); -const { copy: copyTextBase64 } = useCopy({ source: base64Output, text: 'Base64 string copied to the clipboard' }); - -const base64Input = ref(''); -const textOutput = computed(() => - withDefaultOnError(() => base64ToText(base64Input.value.trim(), { makeUrlSafe: decodeUrlSafe.value }), ''), -); -const { copy: copyText } = useCopy({ source: textOutput, text: 'String copied to the clipboard' }); -const b64ValidationRules = [ - { - message: 'Invalid base64 string', - validator: (value: string) => isValidBase64(value.trim(), { makeUrlSafe: decodeUrlSafe.value }), - }, -]; -const b64ValidationWatch = [decodeUrlSafe]; -</script> |