From b8f88c7cfa2c550e2b984fafd1fd501ed238ba44 Mon Sep 17 00:00:00 2001 From: Russell Ballestrini Date: Fri, 19 Dec 2025 19:58:05 -0500 Subject: [PATCH] Update JAVASCRIPT.rst documentation --- docs/JAVASCRIPT.rst | 56 ++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/docs/JAVASCRIPT.rst b/docs/JAVASCRIPT.rst index 3ae02b8..da7c1c0 100644 --- a/docs/JAVASCRIPT.rst +++ b/docs/JAVASCRIPT.rst @@ -9,36 +9,38 @@ Standalone JavaScript Files remarkbox/static/js/custom.js ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Main application JavaScript containing core functionality. +Main application JavaScript containing core functionality. No external +dependencies (jQuery was removed). **previewAjax()** (Lines 5-20) Debounced preview function with 800ms timer. Escapes HTML in raw mode to prevent XSS, then calls sendPreview(). -**sendPreview()** (Lines 22-38) - AJAX request to ``/preview-post`` endpoint for Markdown rendering. +**sendPreview()** (Lines 22-41) + Fetch request to ``/preview-post`` endpoint for Markdown rendering. + Includes ``X-Requested-With: XMLHttpRequest`` header required by server. Optionally triggers MathJax re-rendering. -**toggle()** (Lines 41-57) +**toggle()** (Lines 43-66) CSS-based toggle animation. Adds/removes ``toggle-open`` and ``toggle-closing`` classes. Updates button text after 800ms animation. + Triggers textarea auto-grow on open if content exists. -**Details close animation** (Lines 60-75) +**Details close animation** (Lines 68-83) Event listener for ``.preview-toggle`` clicks. Animates ``
`` element closure over 800ms using ``closing`` class. -**Document ready handler** (Lines 77-103) +**autoGrow()** (Lines 85-89) + Auto-grows textarea height based on content, capped at 400px. + +**Document ready handler** (Lines 91-130) + - Binds input handlers for textarea auto-grow - Binds vote-up/vote-down button click handlers - Fades in alert elements over 2 seconds - Highlights URL fragment targets with ``focused`` class -**sendVote()** (Lines 105-118) - AJAX request to ``/vote-post`` endpoint. Updates vote count on success. - -remarkbox/static/js/jquery-2.1.3.min.js -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -jQuery library for DOM manipulation and AJAX. +**sendVote()** (Lines 132-151) + Fetch request to ``/vote-post`` endpoint. Updates vote count on success. remarkbox/static/js/iframe-resizer/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -79,17 +81,17 @@ Triggers debounced Markdown preview on textarea input. **snippets/forms.j2** (Line 21) Reply textarea with raw preview:: - previewAjax('textarea-{{ node.id }}', 'preview-{{ node.id }}', show_raw=true, mathjax={{ request.mathjax }}) + previewAjax('textarea-{{ node.id }}', 'preview-{{ node.id }}', true, {{ request.mathjax }}) **snippets/forms.j2** (Line 63) Edit textarea without raw preview:: - previewAjax('edit-textarea-{{ node.id }}', 'node-data-{{ node.id }}', show_raw=false, mathjax={{ request.mathjax }}) + previewAjax('edit-textarea-{{ node.id }}', 'node-data-{{ node.id }}', false, {{ request.mathjax }}) **snippets/create.j2** (Line 14) Thread creation textarea:: - previewAjax('thread_data_textarea', 'preview', show_raw=true, mathjax={{ request.mathjax }}) + previewAjax('thread_data_textarea', 'preview', true, {{ request.mathjax }}) Toggle Functionality ~~~~~~~~~~~~~~~~~~~~ @@ -145,10 +147,10 @@ snippets/javascript-includes.j2 var csrf_token = "{{ request.session.get_csrf_token() }}"; -**Google Analytics v4** (Lines 12-18) - Conditional loading based on namespace configuration. +**Google Analytics v4** (Lines 10-18) + Conditional loading based on namespace configuration (gtag.js). -**MathJax** (Lines 25-27) +**MathJax** (Lines 20-27) Mathematical formula rendering. Loaded from CDN when enabled. embed-iframe.txt.j2 @@ -169,11 +171,6 @@ snippets/stripe.j2 **Payment form handling** (Lines 83-132) Stripe card element initialization, validation, and token creation. -snippets/google-analytics.j2 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Legacy Universal Analytics (ga.js) for backward compatibility. - CSS Classes Managed by JavaScript --------------------------------- @@ -194,4 +191,15 @@ Remarkbox functions without JavaScript: (e.g., ``/{node_id}/edit``, ``/{node_id}/reply``) - Forms submit normally without AJAX - ``
`` elements work natively for preview toggle +- Textareas remain fixed size (no auto-grow) - Voting requires JavaScript (AJAX-only) + + +Removed Dependencies +-------------------- + +The following were removed to reduce bundle size: + +- **jQuery 2.1.3** (84KB) - Replaced with vanilla JS (fetch, addEventListener, querySelectorAll) +- **Legacy Google Analytics** (ga.js) - Using gtag v4 instead +- **IE8 polyfills** - IE8 is no longer supported