mirror of
https://github.com/cpvalente/ontime.git
synced 2026-09-04 22:09:10 +00:00
refactor: remove unused code
This commit is contained in:
committed by
Alex Christoffer Rasmussen
parent
c5ff254267
commit
4058231d6b
@@ -1 +0,0 @@
|
|||||||
export type Size = 'xs' | 'sm' | 'md' | 'lg';
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
import { create } from 'zustand';
|
|
||||||
|
|
||||||
type Target = 'cuesheet' | 'timer' | 'clock' | 'countdown' | 'backstage' | 'studio';
|
|
||||||
|
|
||||||
interface SelectionState {
|
|
||||||
[key: string]: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ColumnPermissions {
|
|
||||||
read: string[];
|
|
||||||
write: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
interface CuesheetLinksState {
|
|
||||||
target: Target | null;
|
|
||||||
readSelected: SelectionState;
|
|
||||||
writeSelected: SelectionState;
|
|
||||||
setTarget: (target: Target | null) => void;
|
|
||||||
setField: (field: 'read' | 'write', key: string, value: boolean) => void;
|
|
||||||
toggleField: (field: 'read' | 'write', key: string) => void;
|
|
||||||
selectAll: (field: 'read' | 'write', keys: string[]) => void;
|
|
||||||
clearAll: (field: 'read' | 'write', keys: string[]) => void;
|
|
||||||
// Returns arrays of column keys that have read/write permissions if target is 'cuesheet'
|
|
||||||
getSelections: () => ColumnPermissions | null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useCuesheetLinksStore = create<CuesheetLinksState>((set, get) => ({
|
|
||||||
target: null,
|
|
||||||
readSelected: {},
|
|
||||||
writeSelected: {},
|
|
||||||
setTarget: (target) => set({ target }),
|
|
||||||
setField: (field, key, value) =>
|
|
||||||
set((state) => ({
|
|
||||||
...(field === 'read'
|
|
||||||
? { readSelected: { ...state.readSelected, [key]: value } }
|
|
||||||
: { writeSelected: { ...state.writeSelected, [key]: value } }),
|
|
||||||
})),
|
|
||||||
toggleField: (field, key) =>
|
|
||||||
set((state) => ({
|
|
||||||
...(field === 'read'
|
|
||||||
? { readSelected: { ...state.readSelected, [key]: !state.readSelected[key] } }
|
|
||||||
: { writeSelected: { ...state.writeSelected, [key]: !state.writeSelected[key] } }),
|
|
||||||
})),
|
|
||||||
selectAll: (field, keys) =>
|
|
||||||
set((_state) => ({
|
|
||||||
...(field === 'read'
|
|
||||||
? {
|
|
||||||
readSelected: keys.reduce((acc, key) => {
|
|
||||||
acc[key] = true;
|
|
||||||
return acc;
|
|
||||||
}, {} as SelectionState),
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
writeSelected: keys.reduce((acc, key) => {
|
|
||||||
acc[key] = true;
|
|
||||||
return acc;
|
|
||||||
}, {} as SelectionState),
|
|
||||||
}),
|
|
||||||
})),
|
|
||||||
clearAll: (field, keys) =>
|
|
||||||
set((_state) => ({
|
|
||||||
...(field === 'read'
|
|
||||||
? {
|
|
||||||
readSelected: keys.reduce((acc, key) => {
|
|
||||||
acc[key] = false;
|
|
||||||
return acc;
|
|
||||||
}, {} as SelectionState),
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
writeSelected: keys.reduce((acc, key) => {
|
|
||||||
acc[key] = false;
|
|
||||||
return acc;
|
|
||||||
}, {} as SelectionState),
|
|
||||||
}),
|
|
||||||
})),
|
|
||||||
getSelections: () => {
|
|
||||||
const state = get();
|
|
||||||
if (state.target !== 'cuesheet') return null;
|
|
||||||
|
|
||||||
return {
|
|
||||||
read: Object.entries(state.readSelected)
|
|
||||||
.filter(([_, selected]) => selected)
|
|
||||||
.map(([key]) => key),
|
|
||||||
write: Object.entries(state.writeSelected)
|
|
||||||
.filter(([_, selected]) => selected)
|
|
||||||
.map(([key]) => key),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
import { MaybeString } from 'ontime-types';
|
|
||||||
|
|
||||||
export default function safeParseNumber(value: MaybeString, defaultValue: number = 0): number {
|
|
||||||
if (!value) return defaultValue;
|
|
||||||
const number = Number(value);
|
|
||||||
if (isNaN(number)) return defaultValue;
|
|
||||||
return number;
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
/* eslint-disable react/display-name */
|
|
||||||
import { ComponentType, useEffect } from 'react';
|
|
||||||
import { useLocation, useNavigate } from 'react-router';
|
|
||||||
|
|
||||||
import useUrlPresets from '../common/hooks-query/useUrlPresets';
|
|
||||||
import { getRouteFromPreset } from '../common/utils/urlPresets';
|
|
||||||
|
|
||||||
const withPreset = <P extends object>(Component: ComponentType<P>) => {
|
|
||||||
return (props: Partial<P>) => {
|
|
||||||
const { data } = useUrlPresets();
|
|
||||||
const navigate = useNavigate();
|
|
||||||
const location = useLocation();
|
|
||||||
|
|
||||||
// navigate if is alias route
|
|
||||||
useEffect(() => {
|
|
||||||
if (!data) return;
|
|
||||||
const destination = getRouteFromPreset(location, data);
|
|
||||||
|
|
||||||
// navigate to this destination if its not null
|
|
||||||
if (destination) {
|
|
||||||
navigate(destination);
|
|
||||||
}
|
|
||||||
}, [data, navigate, location]);
|
|
||||||
|
|
||||||
return <Component {...(props as P)} />;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export default withPreset;
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
import { useVisibleRowsStore } from './visibleRowsStore';
|
|
||||||
|
|
||||||
let observer: IntersectionObserver | null = null;
|
|
||||||
|
|
||||||
function getObserver(): IntersectionObserver {
|
|
||||||
if (!observer) {
|
|
||||||
const options: IntersectionObserverInit = {
|
|
||||||
root: null,
|
|
||||||
rootMargin: '400px 0px', // prevent unmounting rows too early
|
|
||||||
threshold: 0.25,
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleOnIntersect: IntersectionObserverCallback = (entries) => {
|
|
||||||
const visibleRows = useVisibleRowsStore.getState();
|
|
||||||
entries.forEach((entry) => {
|
|
||||||
const targetId = entry.target.id;
|
|
||||||
if (entry.isIntersecting) {
|
|
||||||
visibleRows.addVisibleRow(targetId);
|
|
||||||
} else {
|
|
||||||
visibleRows.removeVisibleRow(targetId);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
observer = new IntersectionObserver(handleOnIntersect, options);
|
|
||||||
}
|
|
||||||
|
|
||||||
return observer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* register a row element in the observer
|
|
||||||
*/
|
|
||||||
export function observeRow(element: HTMLElement) {
|
|
||||||
getObserver().observe(element);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* unregister a row element in the observer
|
|
||||||
*/
|
|
||||||
export function unobserveRow(element: HTMLElement) {
|
|
||||||
getObserver().unobserve(element);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* cleanup observer, should be called when the table component unmounts
|
|
||||||
*/
|
|
||||||
export function cleanup() {
|
|
||||||
observer?.disconnect();
|
|
||||||
observer = null;
|
|
||||||
}
|
|
||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
import { create } from 'zustand';
|
|
||||||
|
|
||||||
interface VisibleRowsStore {
|
|
||||||
visibleRows: Set<string>;
|
|
||||||
addVisibleRow: (id: string) => void;
|
|
||||||
removeVisibleRow: (id: string) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const useVisibleRowsStore = create<VisibleRowsStore>((set) => ({
|
|
||||||
visibleRows: new Set(),
|
|
||||||
addVisibleRow: (id) => set((state) => ({ visibleRows: new Set(state.visibleRows).add(id) })),
|
|
||||||
removeVisibleRow: (id) =>
|
|
||||||
set((state) => {
|
|
||||||
const newSet = new Set(state.visibleRows);
|
|
||||||
newSet.delete(id);
|
|
||||||
return { visibleRows: newSet };
|
|
||||||
}),
|
|
||||||
}));
|
|
||||||
Reference in New Issue
Block a user