+
+
Remarkise
+
+ Render markdown as
+ remark slides — in real time
+
+
+
+
+
+
+
-
-
-
-
+
-
-
-
-
+ }
+
+ // ── URL input trigger ─────────────────────────────────────────
+
+ function triggerUrl() {
+ var val = urlInput.value.trim();
+ if (URL_PAT.test(val)) {
+ remarkise(val);
+ } else {
+ setMessage('That doesn\'t look like a valid URL.', true);
+ }
+ }
+
+ goBtn.addEventListener('click', triggerUrl);
+ urlInput.addEventListener('keydown', function (e) {
+ if (e.key === 'Enter') triggerUrl();
+ });
+
+ // ── Check for ?url= on load ───────────────────────────────────
+
+ var params = new URLSearchParams(window.location.search);
+ var initialUrl = params.get('url');
+ if (initialUrl) {
+ urlInput.value = decodeURIComponent(initialUrl);
+ remarkise(decodeURIComponent(initialUrl));
+ }
+
+ // ── File input (works on Android) ────────────────────────────
+
+ fileInput.addEventListener('change', function (e) {
+ var file = e.target.files[0];
+ if (!file) return;
+ var reader = new FileReader();
+ reader.onloadend = function () { createPresentationFromText(reader.result); };
+ reader.readAsText(file);
+ });
+
+ // ── Drag and drop ─────────────────────────────────────────────
+
+ if (typeof window.FileReader === 'undefined') {
+ dropArea.classList.add('hidden');
+ }
+
+ dropArea.addEventListener('dragover', function (e) {
+ e.preventDefault();
+ dropArea.classList.add('hovering');
+ });
+
+ dropArea.addEventListener('dragleave', function () {
+ dropArea.classList.remove('hovering');
+ });
+
+ dropArea.addEventListener('drop', function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ dropArea.classList.remove('hovering');
+ var file = e.dataTransfer.files[0];
+ if (!file) return;
+ var reader = new FileReader();
+ reader.onloadend = function () { createPresentationFromText(reader.result); };
+ reader.readAsText(file);
+ });
+
+})();
+
+
+
\ No newline at end of file