From c9c33e8afd0b3da2e27f0b8266a6a5dee83c841b Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Sun, 19 Jan 2025 18:14:27 +0100 Subject: [PATCH] Move global js to material --- assets/_global/index.js | 124 --------------------------------------- assets/material/index.js | 123 +++++++++++++++++++++++++++++++++++++- 2 files changed, 121 insertions(+), 126 deletions(-) delete mode 100644 assets/_global/index.js diff --git a/assets/_global/index.js b/assets/_global/index.js deleted file mode 100644 index 06664e939..000000000 --- a/assets/_global/index.js +++ /dev/null @@ -1,124 +0,0 @@ -/* jQuery */ -import $ from 'jquery'; - -/* Annotations */ -import annotator from 'annotator'; - -import ClipboardJS from 'clipboard'; -import 'mathjax/es5/tex-svg'; - -/* Fonts */ -import 'material-design-icons-iconfont/dist/material-design-icons.css'; -import 'lato-font/css/lato-font.css'; -import 'open-dyslexic/open-dyslexic-regular.css'; -import '@fontsource/atkinson-hyperlegible'; -import '@fontsource/eb-garamond'; -import '@fontsource/montserrat'; -import '@fontsource/oswald'; -import './global.scss'; - -/* Shortcuts */ -import './js/shortcuts/entry'; -import './js/shortcuts/main'; - -/* Highlight */ -import './js/highlight'; - -import { savePercent, retrievePercent } from './js/tools'; - -/* ========================================================================== - Annotations & Remember position - ========================================================================== */ - -$(document).ready(() => { - if ($('#article').length) { - const app = new annotator.App(); - - app.include(annotator.ui.main, { - element: document.querySelector('article'), - }); - - const authorization = { - permits() { return true; }, - }; - app.registry.registerUtility(authorization, 'authorizationPolicy'); - - const x = JSON.parse($('#annotationroutes').html()); - app.include(annotator.storage.http, $.extend({}, x, { - onError(msg, xhr) { - if (!Object.prototype.hasOwnProperty.call(xhr, 'responseJSON')) { - annotator.notification.banner('An error occurred', 'error'); - return; - } - $.each(xhr.responseJSON.children, (k, v) => { - if (v.errors) { - $.each(v.errors, (n, errorText) => { - annotator.notification.banner(errorText, 'error'); - }); - } - }); - }, - })); - - app.start().then(() => { - app.annotations.load({ entry: x.entryId }); - }); - - $(window).scroll(() => { - const scrollTop = $(window).scrollTop(); - const docHeight = $(document).height(); - const scrollPercent = (scrollTop) / (docHeight); - const scrollPercentRounded = Math.round(scrollPercent * 100) / 100; - savePercent(x.entryId, scrollPercentRounded); - }); - - retrievePercent(x.entryId); - - $(window).resize(() => { - retrievePercent(x.entryId, true); - }); - } - - document.querySelectorAll('[data-handler=tag-rename]').forEach((item) => { - const current = item; - current.wallabag_edit_mode = false; - current.onclick = (event) => { - const target = event.currentTarget; - - if (target.wallabag_edit_mode === false) { - $(target.parentNode.querySelector('[data-handle=tag-link]')).addClass('hidden'); - $(target.parentNode.querySelector('[data-handle=tag-rename-form]')).removeClass('hidden'); - target.parentNode.querySelector('[data-handle=tag-rename-form] input').focus(); - target.querySelector('.material-icons').innerHTML = 'done'; - - target.wallabag_edit_mode = true; - } else { - target.parentNode.querySelector('[data-handle=tag-rename-form]').submit(); - } - }; - }); - - // mimic radio button because emailTwoFactor is a boolean - $('#update_user_googleTwoFactor').on('change', () => { - $('#update_user_emailTwoFactor').prop('checked', false); - }); - - $('#update_user_emailTwoFactor').on('change', () => { - $('#update_user_googleTwoFactor').prop('checked', false); - }); - - // same mimic for super admin - $('#user_googleTwoFactor').on('change', () => { - $('#user_emailTwoFactor').prop('checked', false); - }); - - $('#user_emailTwoFactor').on('change', () => { - $('#user_googleTwoFactor').prop('checked', false); - }); - - // handle copy to clipboard for developer stuff - const clipboard = new ClipboardJS('.btn'); - clipboard.on('success', (e) => { - e.clearSelection(); - }); -}); diff --git a/assets/material/index.js b/assets/material/index.js index 473a55c65..bd508f373 100755 --- a/assets/material/index.js +++ b/assets/material/index.js @@ -4,8 +4,30 @@ import $ from 'jquery'; import 'materialize-css/dist/css/materialize.css'; import 'materialize-css/dist/js/materialize'; -/* Global imports */ -import '../_global/index'; +/* Annotations */ +import annotator from 'annotator'; + +import ClipboardJS from 'clipboard'; +import 'mathjax/es5/tex-svg'; + +/* Fonts */ +import 'material-design-icons-iconfont/dist/material-design-icons.css'; +import 'lato-font/css/lato-font.css'; +import 'open-dyslexic/open-dyslexic-regular.css'; +import '@fontsource/atkinson-hyperlegible'; +import '@fontsource/eb-garamond'; +import '@fontsource/montserrat'; +import '@fontsource/oswald'; +import '../_global/global.scss'; + +/* Shortcuts */ +import '../_global/js/shortcuts/entry'; +import '../_global/js/shortcuts/main'; + +/* Highlight */ +import '../_global/js/highlight'; + +import { savePercent, retrievePercent } from '../_global/js/tools'; /* Tools */ import { @@ -21,6 +43,103 @@ import './css/index.scss'; const mobileMaxWidth = 993; +/* ========================================================================== + Annotations & Remember position + ========================================================================== */ + +$(document).ready(() => { + if ($('#article').length) { + const app = new annotator.App(); + + app.include(annotator.ui.main, { + element: document.querySelector('article'), + }); + + const authorization = { + permits() { return true; }, + }; + app.registry.registerUtility(authorization, 'authorizationPolicy'); + + const x = JSON.parse($('#annotationroutes').html()); + app.include(annotator.storage.http, $.extend({}, x, { + onError(msg, xhr) { + if (!Object.prototype.hasOwnProperty.call(xhr, 'responseJSON')) { + annotator.notification.banner('An error occurred', 'error'); + return; + } + $.each(xhr.responseJSON.children, (k, v) => { + if (v.errors) { + $.each(v.errors, (n, errorText) => { + annotator.notification.banner(errorText, 'error'); + }); + } + }); + }, + })); + + app.start().then(() => { + app.annotations.load({ entry: x.entryId }); + }); + + $(window).scroll(() => { + const scrollTop = $(window).scrollTop(); + const docHeight = $(document).height(); + const scrollPercent = (scrollTop) / (docHeight); + const scrollPercentRounded = Math.round(scrollPercent * 100) / 100; + savePercent(x.entryId, scrollPercentRounded); + }); + + retrievePercent(x.entryId); + + $(window).resize(() => { + retrievePercent(x.entryId, true); + }); + } + + document.querySelectorAll('[data-handler=tag-rename]').forEach((item) => { + const current = item; + current.wallabag_edit_mode = false; + current.onclick = (event) => { + const target = event.currentTarget; + + if (target.wallabag_edit_mode === false) { + $(target.parentNode.querySelector('[data-handle=tag-link]')).addClass('hidden'); + $(target.parentNode.querySelector('[data-handle=tag-rename-form]')).removeClass('hidden'); + target.parentNode.querySelector('[data-handle=tag-rename-form] input').focus(); + target.querySelector('.material-icons').innerHTML = 'done'; + + target.wallabag_edit_mode = true; + } else { + target.parentNode.querySelector('[data-handle=tag-rename-form]').submit(); + } + }; + }); + + // mimic radio button because emailTwoFactor is a boolean + $('#update_user_googleTwoFactor').on('change', () => { + $('#update_user_emailTwoFactor').prop('checked', false); + }); + + $('#update_user_emailTwoFactor').on('change', () => { + $('#update_user_googleTwoFactor').prop('checked', false); + }); + + // same mimic for super admin + $('#user_googleTwoFactor').on('change', () => { + $('#user_emailTwoFactor').prop('checked', false); + }); + + $('#user_emailTwoFactor').on('change', () => { + $('#user_googleTwoFactor').prop('checked', false); + }); + + // handle copy to clipboard for developer stuff + const clipboard = new ClipboardJS('.btn'); + clipboard.on('success', (e) => { + e.clearSelection(); + }); +}); + (function darkTheme() { const rootEl = document.querySelector('html'); const themeDom = {