diff --git a/_config.yml b/_config.yml
index 84ba4bd..89cc1dd 100644
--- a/_config.yml
+++ b/_config.yml
@@ -66,15 +66,6 @@ defaults:
sass:
style: compressed
-compress_html:
- clippings: all
- comments: all
- endings: all
- profile: false
- blanklines: false
- ignore:
- envs: [development]
-
exclude:
- bin/*
- "*.gem"
diff --git a/404.html b/assets/404.html
similarity index 100%
rename from 404.html
rename to assets/404.html
diff --git a/techdemos/encode/index.markdown b/techdemos/encode/index.markdown
index 16a9c31..e93055f 100644
--- a/techdemos/encode/index.markdown
+++ b/techdemos/encode/index.markdown
@@ -22,53 +22,4 @@ Mode:
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/techdemos/encode/js/main.js b/techdemos/encode/js/main.js
new file mode 100644
index 0000000..f7889e9
--- /dev/null
+++ b/techdemos/encode/js/main.js
@@ -0,0 +1,42 @@
+const mode = document.getElementById("mode");
+const encode = document.getElementById("encode");
+const decode = document.getElementById("decode");
+const livemode = document.getElementById("livemode");
+const input = document.getElementById("inputText");
+const output = document.getElementById("outputText");
+const codes = {
+ "Base64": {
+ encode: text => btoa(text),
+ decode: text => atob(text)
+ },
+ "URL": {
+ encode: text => encodeURI(text),
+ decode: text => decodeURI(text)
+ },
+ "URL (component)": {
+ encode: text => encodeURIComponent(text),
+ decode: text => decodeURIComponent(text)
+ }
+}
+for (const code in codes) {
+ let element = document.createElement("option");
+ element.value = code;
+ element.innerText = code;
+ mode.appendChild(element);
+}
+encode.addEventListener("click", () => {
+ output.value = codes[mode.value].encode(input.value);
+});
+decode.addEventListener("click", () => {
+ input.value = codes[mode.value].decode(output.value);
+});
+input.addEventListener("input", () => {
+ if (livemode.checked) {
+ output.value = codes[mode.value].encode(input.value);
+ }
+});
+output.addEventListener("input", () => {
+ if (livemode.checked) {
+ input.value = codes[mode.value].decode(output.value);
+ }
+});
\ No newline at end of file