more patchwork done

This commit is contained in:
Crazypersonalph
2023-12-04 17:36:59 +08:00
parent 070c19dc00
commit c7d0096b53
+61 -57
View File
@@ -20,6 +20,7 @@ import { updateBgDurations } from './seqta/ui/Animation';
import { updateAllColors } from './seqta/ui/colors/Manager'; import { updateAllColors } from './seqta/ui/colors/Manager';
import { appendBackgroundToUI } from './seqta/ui/ImageBackgrounds'; import { appendBackgroundToUI } from './seqta/ui/ImageBackgrounds';
import { enableCurrentTheme } from './seqta/ui/Themes'; import { enableCurrentTheme } from './seqta/ui/Themes';
import { ObjectType } from 'typescript';
declare global { declare global {
interface Window { interface Window {
@@ -726,10 +727,11 @@ export async function ObserveMenuItemPosition() {
mutation.addedNodes.forEach(function (added_node) { mutation.addedNodes.forEach(function (added_node) {
const node = added_node as HTMLElement const node = added_node as HTMLElement
if (!node?.dataset?.checked && !MenuOptionsOpen) { if (!node?.dataset?.checked && !MenuOptionsOpen) {
if (MenuitemSVGKey[added_node?.dataset?.key]) { const key = MenuitemSVGKey[node?.dataset?.key! as keyof typeof MenuitemSVGKey]
if (key) {
ReplaceMenuSVG( ReplaceMenuSVG(
added_node, added_node,
MenuitemSVGKey[added_node.dataset.key], MenuitemSVGKey[node.dataset.key as keyof typeof MenuitemSVGKey],
); );
} }
ChangeMenuItemPositions(menuorder); ChangeMenuItemPositions(menuorder);
@@ -738,7 +740,7 @@ export async function ObserveMenuItemPosition() {
}); });
}); });
observer.observe(document.querySelector('#menu').firstChild, { observer.observe(document.querySelector('#menu')!.firstChild!, {
subtree: true, subtree: true,
childList: true, childList: true,
}); });
@@ -747,7 +749,7 @@ export async function ObserveMenuItemPosition() {
result.then(open, onError) result.then(open, onError)
} }
function main(storedSetting) { function main(storedSetting: any) {
const onoff = storedSetting.onoff; const onoff = storedSetting.onoff;
DarkMode = storedSetting.DarkMode; DarkMode = storedSetting.DarkMode;
@@ -862,36 +864,36 @@ export function closeSettings() {
var extensionsettings = document.getElementById('ExtensionPopup'); var extensionsettings = document.getElementById('ExtensionPopup');
if (SettingsClicked == true) { if (SettingsClicked == true) {
extensionsettings.classList.add('hide'); extensionsettings!.classList.add('hide');
animate( animate(
'#ExtensionPopup', '#ExtensionPopup',
{ opacity: [1, 0], scale: [1, 0] }, { opacity: [1, 0], scale: [1, 0] },
{ easing: spring({ stiffness: 220, damping: 18 }) } { easing: spring({ stiffness: 220, damping: 18 }) }
); );
SettingsClicked = false; SettingsClicked = false;
document.getElementById('ExtensionIframe').contentWindow.postMessage('popupClosed', '*'); (document.getElementById('ExtensionIframe') as HTMLIFrameElement).contentWindow!.postMessage('popupClosed', '*');
} }
extensionsettings.classList.add('hide'); extensionsettings!.classList.add('hide');
} }
function addExtensionSettings() { function addExtensionSettings() {
const link = GetCSSElement('interface/popup.css'); const link = GetCSSElement('interface/popup.css');
document.querySelector('html').appendChild(link); document.querySelector('html')!.appendChild(link);
const extensionPopup = document.createElement('div'); const extensionPopup = document.createElement('div');
extensionPopup.classList.add('outside-container', 'hide'); extensionPopup.classList.add('outside-container', 'hide');
extensionPopup.id = 'ExtensionPopup'; extensionPopup.id = 'ExtensionPopup';
document.body.appendChild(extensionPopup); document.body.appendChild(extensionPopup);
const extensionIframe = document.createElement('iframe'); const extensionIframe: HTMLIFrameElement = document.createElement('iframe');
extensionIframe.src = `${browser.runtime.getURL('interface/index.html')}#settings/embedded`; extensionIframe.src = `${browser.runtime.getURL('interface/index.html')}#settings/embedded`;
extensionIframe.id = 'ExtensionIframe'; extensionIframe.id = 'ExtensionIframe';
extensionIframe.allowTransparency = true; extensionIframe.style.backgroundColor = 'transparent';
extensionIframe.style.width = '384px'; extensionIframe.style.width = '384px';
extensionIframe.style.height = '600px'; extensionIframe.style.height = '600px';
extensionIframe.style.border = 'none'; extensionIframe.style.border = 'none';
extensionIframe.setAttribute('excludeDarkCheck', true); extensionIframe.setAttribute('excludeDarkCheck', 'true');
extensionPopup.appendChild(extensionIframe); extensionPopup.appendChild(extensionIframe);
const container = document.getElementById('container'); const container = document.getElementById('container');
@@ -903,24 +905,24 @@ function addExtensionSettings() {
{ opacity: [1, 0], scale: [1, 0] }, { opacity: [1, 0], scale: [1, 0] },
{ easing: [.22, .03, .26, 1] } { easing: [.22, .03, .26, 1] }
); );
document.getElementById('ExtensionIframe').contentWindow.postMessage('popupClosed', '*'); (document.getElementById('ExtensionIframe') as HTMLIFrameElement).contentWindow!.postMessage('popupClosed', '*');
SettingsClicked = false; SettingsClicked = false;
}; };
container.onclick = (event) => { container!.onclick = (event) => {
if (event.target.closest('#AddedSettings') == null && SettingsClicked) { if ((event.target as HTMLElement).closest('#AddedSettings') == null && SettingsClicked) {
closeExtensionPopup() closeExtensionPopup()
} }
}; };
} }
function saveNewOrder(sortable) { function saveNewOrder(sortable: any) {
var order = sortable.toArray(); var order = sortable.toArray();
console.log("Order: ", order); console.log("Order: ", order);
browser.storage.local.set({ menuorder: order }); browser.storage.local.set({ menuorder: order });
} }
function cloneAttributes(target, source) { function cloneAttributes(target: any, source: any) {
[...source.attributes].forEach((attr) => { [...source.attributes].forEach((attr) => {
target.setAttribute(attr.nodeName, attr.nodeValue); target.setAttribute(attr.nodeName, attr.nodeValue);
}); });
@@ -928,26 +930,26 @@ function cloneAttributes(target, source) {
export function OpenMenuOptions() { export function OpenMenuOptions() {
const result = browser.storage.local.get() const result = browser.storage.local.get()
function open (result) { function open (result: any) {
var container = document.getElementById('container'); var container = document.getElementById('container');
var menu = document.getElementById('menu'); var menu = document.getElementById('menu');
if (result.defaultmenuorder.length == '0') { if (result.defaultmenuorder.length == '0') {
let childnodes = menu.firstChild.childNodes; let childnodes = menu!.firstChild!.childNodes;
let newdefaultmenuorder = []; let newdefaultmenuorder = [];
for (let i = 0; i < childnodes.length; i++) { for (let i = 0; i < childnodes.length; i++) {
const element = childnodes[i]; const element = childnodes[i];
newdefaultmenuorder.push(element.dataset.key); newdefaultmenuorder.push((element as HTMLElement).dataset.key);
browser.storage.local.set({ defaultmenuorder: newdefaultmenuorder }); browser.storage.local.set({ defaultmenuorder: newdefaultmenuorder });
} }
} }
let childnodes = menu.firstChild.childNodes; let childnodes = menu!.firstChild!.childNodes;
if (result.defaultmenuorder.length != childnodes.length) { if (result.defaultmenuorder.length != childnodes.length) {
for (let i = 0; i < childnodes.length; i++) { for (let i = 0; i < childnodes.length; i++) {
const element = childnodes[i]; const element = childnodes[i];
if (!result.defaultmenuorder.indexOf(element.dataset.key)) { if (!result.defaultmenuorder.indexOf((element as HTMLElement).dataset.key)) {
let newdefaultmenuorder = result.defaultmenuorder; let newdefaultmenuorder = result.defaultmenuorder;
newdefaultmenuorder.push(element.dataset.key); newdefaultmenuorder.push((element as HTMLElement).dataset.key);
browser.storage.local.set({ defaultmenuorder: newdefaultmenuorder }); browser.storage.local.set({ defaultmenuorder: newdefaultmenuorder });
} }
} }
@@ -957,9 +959,9 @@ export function OpenMenuOptions() {
let cover = document.createElement('div'); let cover = document.createElement('div');
cover.classList.add('notMenuCover'); cover.classList.add('notMenuCover');
menu.style.zIndex = '20'; menu!.style.zIndex = '20';
menu.style.setProperty('--menuHidden', 'flex'); menu!.style.setProperty('--menuHidden', 'flex');
container.append(cover); container!.append(cover);
let menusettings = document.createElement('div'); let menusettings = document.createElement('div');
menusettings.classList.add('editmenuoption-container'); menusettings.classList.add('editmenuoption-container');
@@ -977,56 +979,57 @@ export function OpenMenuOptions() {
menusettings.appendChild(defaultbutton); menusettings.appendChild(defaultbutton);
menusettings.appendChild(savebutton); menusettings.appendChild(savebutton);
menu.appendChild(menusettings); menu!.appendChild(menusettings);
let ListItems = menu.firstChild.childNodes; let ListItems = menu!.firstChild!.childNodes;
for (let i = 0; i < ListItems.length; i++) { for (let i = 0; i < ListItems.length; i++) {
const element = ListItems[i]; const element1 = ListItems[i];
const element = element1 as HTMLElement
element.classList.add('draggable'); (element as HTMLElement).classList.add('draggable');
if (element.classList.contains('hasChildren')) { if ((element as HTMLElement).classList.contains('hasChildren')) {
element.classList.remove('active'); (element as HTMLElement).classList.remove('active');
menu.firstChild.classList.remove('noscroll'); (element.firstChild as HTMLElement).classList.remove('noscroll');
} }
let MenuItemToggle = stringToHTML( let MenuItemToggle = stringToHTML(
`<div class="onoffswitch" style="margin: auto 0;"><input class="onoffswitch-checkbox notification menuitem" type="checkbox" id="${element.dataset.key}"><label for="${element.dataset.key}" class="onoffswitch-label"></label>`, `<div class="onoffswitch" style="margin: auto 0;"><input class="onoffswitch-checkbox notification menuitem" type="checkbox" id="${(element as HTMLElement).dataset.key}"><label for="${(element as HTMLElement).dataset.key}" class="onoffswitch-label"></label>`,
).firstChild; ).firstChild;
element.append(MenuItemToggle); (element as HTMLElement).append(MenuItemToggle!);
if (!element.dataset.betterseqta) { if (!element.dataset.betterseqta) {
const a = document.createElement('section') const a = document.createElement('section')
a.innerHTML = element.innerHTML a.innerHTML = element.innerHTML
cloneAttributes(a, element) cloneAttributes(a, element)
menu.firstChild.insertBefore(a, element) menu!.firstChild!.insertBefore(a, element)
element.remove() element.remove()
} }
} }
if (Object.keys(result.menuitems).length == 0) { if (Object.keys(result.menuitems).length == 0) {
menubuttons = menu.firstChild.childNodes; menubuttons = menu!.firstChild!.childNodes;
var menuItems = {}; var menuItems = {};
for (var i = 0; i < menubuttons.length; i++) { for (var i = 0; i < menubuttons.length; i++) {
var id = menubuttons[i].dataset.key; var id = (menubuttons[i] as HTMLElement).dataset.key;
const element = {}; const element: any = {};
element.toggle = true; element.toggle = true;
menuItems[id] = element; (menuItems[id as keyof typeof menuItems] as any) = element;
} }
browser.storage.local.set({ menuitems: menuItems }); browser.storage.local.set({ menuitems: menuItems });
} }
var menubuttons = document.getElementsByClassName('menuitem'); var menubuttons: any = document.getElementsByClassName('menuitem');
const result1 = browser.storage.local.get(['menuitems']) const result1 = browser.storage.local.get(['menuitems'])
function open (result) { function open (result: any) {
var menuItems = result.menuitems; var menuItems = result.menuitems;
let buttons = document.getElementsByClassName('menuitem'); let buttons = document.getElementsByClassName('menuitem');
for (var i = 0; i < buttons.length; i++) { for (var i = 0; i < buttons.length; i++) {
var id = buttons[i].id; var id = buttons[i].id;
if (menuItems[id]) { if (menuItems[id]) {
buttons[i].checked = menuItems[id].toggle; (buttons[i] as HTMLInputElement).checked = menuItems[id].toggle;
} }
if (!menuItems[id]) { if (!menuItems[id]) {
buttons[i].checked = true; (buttons[i] as HTMLInputElement).checked = true;
} }
} }
} }
@@ -1036,7 +1039,7 @@ export function OpenMenuOptions() {
Sortable.mount(new AutoScroll()); Sortable.mount(new AutoScroll());
var el = document.querySelector('#menu > ul'); var el = document.querySelector('#menu > ul');
var sortable = Sortable.create(el, { var sortable = Sortable.create((el as HTMLElement), {
draggable: '.draggable', draggable: '.draggable',
dataIdAttr: 'data-key', dataIdAttr: 'data-key',
animation: 150, animation: 150,
@@ -1049,7 +1052,7 @@ export function OpenMenuOptions() {
console.log(err); console.log(err);
} }
function changeDisplayProperty(element) { function changeDisplayProperty(element: any) {
if (!element.checked) { if (!element.checked) {
element.parentNode.parentNode.style.display = 'var(--menuHidden)'; element.parentNode.parentNode.style.display = 'var(--menuHidden)';
} }
@@ -1063,15 +1066,15 @@ export function OpenMenuOptions() {
} }
function StoreMenuSettings() { function StoreMenuSettings() {
const menuItems = {} const menuItems: any = {};
const menubuttons = menu.firstChild.childNodes const menubuttons = menu!.firstChild!.childNodes
const button = document.getElementsByClassName('menuitem') const button = document.getElementsByClassName('menuitem')
for (let i = 0; i < menubuttons.length; i++) { for (let i = 0; i < menubuttons.length; i++) {
const id = menubuttons[i].dataset.key const id = (menubuttons[i] as HTMLElement).dataset.key;
const element = {} const element: any = {};
element.toggle = button[i].checked element.toggle = (button[i] as HTMLInputElement).checked
menuItems[id] = element menuItems[id as keyof typeof menuItems] = element;
} }
browser.storage.local.set({ menuitems: menuItems }) browser.storage.local.set({ menuitems: menuItems })
} }
@@ -1087,28 +1090,29 @@ export function OpenMenuOptions() {
function closeAll() { function closeAll() {
console.log("Closing!"); console.log("Closing!");
ListItems = menu.firstChild.childNodes; ListItems = menu!.firstChild!.childNodes;
menusettings.remove(); menusettings.remove();
cover.remove(); cover.remove();
MenuOptionsOpen = false; MenuOptionsOpen = false;
menu.style.setProperty('--menuHidden', 'none'); menu!.style.setProperty('--menuHidden', 'none');
for (let i = 0; i < ListItems.length; i++) { for (let i = 0; i < ListItems.length; i++) {
const element = ListItems[i]; const element1 = ListItems[i];
const element = element1 as HTMLElement
element.classList.remove('draggable'); element.classList.remove('draggable');
element.setAttribute('draggable', false); element.setAttribute('draggable', 'false');
if (!element.dataset.betterseqta) { if (!element.dataset.betterseqta) {
const a = document.createElement('li') const a = document.createElement('li')
a.innerHTML = element.innerHTML a.innerHTML = element.innerHTML
cloneAttributes(a, element) cloneAttributes(a, element)
menu.firstChild.insertBefore(a, element) menu!.firstChild!.insertBefore(a, element)
element.remove() element.remove()
} }
} }
let switches = menu.querySelectorAll('.onoffswitch'); let switches = menu!.querySelectorAll('.onoffswitch');
for (let i = 0; i < switches.length; i++) { for (let i = 0; i < switches.length; i++) {
switches[i].remove(); switches[i].remove();
} }