Files
bitvid/dist/js/ui/components/video-modal/similarContentController.js
T
google-labs-jules[bot]andPR0M3TH3AN 0bfa3b08e8 fix(ci): fix netlify deployment by building to dist
- Move from root publishing to clean `dist/` directory
- Create `scripts/build-dist.mjs` to orchestrate build and copy assets
- Update `package.json` build script
- Update `netlify.toml` to publish `dist/`
- Ignore `dist/` in `.gitignore`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-29 09:07:15 +00:00

73 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;
}
}