summaryrefslogtreecommitdiff
path: root/themes/tabi-lean/static/js/isso.js
diff options
context:
space:
mode:
Diffstat (limited to 'themes/tabi-lean/static/js/isso.js')
-rw-r--r--themes/tabi-lean/static/js/isso.js81
1 files changed, 0 insertions, 81 deletions
diff --git a/themes/tabi-lean/static/js/isso.js b/themes/tabi-lean/static/js/isso.js
deleted file mode 100644
index 4666604..0000000
--- a/themes/tabi-lean/static/js/isso.js
+++ /dev/null
@@ -1,81 +0,0 @@
-// Function to initialise Isso.
-function initIsso() {
- // Get the div that will contain the comments.
- const commentsDiv = document.querySelector('.comments');
- if (commentsDiv) {
- // Get the lazy-loading setting from the div.
- const lazyLoading = commentsDiv.getAttribute('data-lazy-loading') === 'true';
-
- // If lazy-loading is enabled, create an Intersection Observer and use it.
- if (lazyLoading) {
- const observer = new IntersectionObserver((entries) => {
- // Loop over the entries.
- entries.forEach((entry) => {
- // If the element is in the viewport, initialize Isso.
- if (entry.isIntersecting) {
- loadIsso(commentsDiv);
- // Once the Isso is loaded, we don't need to observe the element anymore.
- observer.unobserve(commentsDiv);
- }
- });
- });
-
- // Start observing the comments div.
- observer.observe(commentsDiv);
- } else {
- // If lazy-loading is not enabled, initialise Isso immediately.
- loadIsso(commentsDiv);
- }
- }
-}
-
-// Function to load Isso.
-function loadIsso(commentsDiv) {
- // Get the various settings from data attributes on the div.
- const endpointUrl = commentsDiv.getAttribute('data-endpoint-url');
- const pageId = commentsDiv.getAttribute('data-isso-id');
- const title = commentsDiv.getAttribute('data-title');
- const lang = commentsDiv.getAttribute('data-page-language');
- const maxCommentsTop = commentsDiv.getAttribute('data-max-comments-top');
- const maxCommentsNested = commentsDiv.getAttribute('data-max-comments-nested');
- const avatar = commentsDiv.getAttribute('data-avatar');
- const voting = commentsDiv.getAttribute('data-voting');
- const hashes = commentsDiv.getAttribute('data-page-author-hashes');
-
- // Create a new script tag that will load the Isso script.
- const script = document.createElement('script');
- script.src = endpointUrl + 'js/embed.min.js';
- script.async = true;
-
- // Set the various settings as data attributes on the script tag.
- script.setAttribute('data-isso', endpointUrl);
- script.setAttribute('data-isso-lang', lang);
- script.setAttribute('data-isso-max-comments-top', maxCommentsTop);
- script.setAttribute('data-isso-max-comments-nested', maxCommentsNested);
- script.setAttribute('data-isso-avatar', avatar);
- script.setAttribute('data-isso-vote', voting);
- script.setAttribute('data-isso-page-author-hashes', hashes);
- script.setAttribute('data-isso-css', 'false');
-
- // Set the id and data-isso-id of the Isso thread.
- const section = document.createElement('section');
- section.id = 'isso-thread';
- section.setAttribute('data-isso-id', pageId);
- section.setAttribute('data-title', title);
- commentsDiv.appendChild(section);
-
- // Add the script tag to the div.
- commentsDiv.appendChild(script);
-
- // Create a link tag for the Isso CSS.
- const link = document.createElement('link');
- link.rel = 'stylesheet';
- link.type = 'text/css';
- link.href = '/isso.min.css';
-
- // Add the CSS link tag to the head of the document.
- document.head.appendChild(link);
-}
-
-// Initialize Isso.
-initIsso();