mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-28 16:32:28 +00:00
74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
export class SimilarContentController {
|
|
constructor({ modal } = {}) {
|
|
this.modal = modal;
|
|
}
|
|
|
|
initialize({ playerModal } = {}) {
|
|
if (!this.modal) {
|
|
return { container: null, heading: null, list: null };
|
|
}
|
|
|
|
this.modal.teardownSimilarContentMediaQuery?.();
|
|
|
|
const heading =
|
|
playerModal?.querySelector("#playerModalSimilarContentHeading") || null;
|
|
const list =
|
|
playerModal?.querySelector("#playerModalSimilarContentList") || null;
|
|
const section =
|
|
list?.closest("[aria-labelledby='playerModalSimilarContentHeading']") ||
|
|
heading?.closest("[aria-labelledby='playerModalSimilarContentHeading']") ||
|
|
null;
|
|
const container =
|
|
list?.closest(".watch-container") ||
|
|
heading?.closest(".watch-container") ||
|
|
section?.closest(".watch-container") ||
|
|
section ||
|
|
null;
|
|
|
|
this.modal.similarContentHeading = heading;
|
|
this.modal.similarContentList = list;
|
|
this.modal.similarContentContainer = container;
|
|
|
|
this.modal.setupSimilarContentMediaQuery?.();
|
|
|
|
if (list && list.children.length) {
|
|
this.modal.toggleSimilarContentVisibility?.(true);
|
|
} else {
|
|
this.modal.toggleSimilarContentVisibility?.(false);
|
|
}
|
|
|
|
return { container, heading, list };
|
|
}
|
|
|
|
update(action = {}) {
|
|
if (!this.modal) {
|
|
return;
|
|
}
|
|
const { type } = action;
|
|
switch (type) {
|
|
case "set-items":
|
|
this.modal.setSimilarContent?.(action.items, action.options);
|
|
break;
|
|
case "set-visibility":
|
|
this.modal.toggleSimilarContentVisibility?.(action.visible);
|
|
break;
|
|
case "clear":
|
|
this.modal.clearSimilarContent?.(action.options);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
destroy() {
|
|
if (!this.modal) {
|
|
return;
|
|
}
|
|
this.modal.teardownSimilarContentMediaQuery?.();
|
|
this.modal.similarContentHeading = null;
|
|
this.modal.similarContentList = null;
|
|
this.modal.similarContentContainer = null;
|
|
}
|
|
}
|
|
|