H1: CCGraphNavPanel — useMemo import + LogCategory fix H2: CCTimetableLessonNodeShapeUtil — props type alignment (cc-graph-props.ts) H3: cc-graph-shapes — add missing CCTimetableLessonNode* import (was never imported) H4: CCNodeSnapshotPanel — RestartAlt import from @mui/icons-material H5: CCExamMarkerPanel + CCFilesPanelEnhanced — BlobPart cast + webkitdirectory @ts-ignore H6: TranscriptionManager — setTranscriptionCallback interface fix Plus: CCExportPdfButton BlobPart cast, SimpleUploadTest icon imports, graph-sidebar LogCategory tsc before: 177 (master) tsc after: 152 (reduction of 25 errors, well below 160 acceptable threshold)
171 lines
9.9 KiB
TypeScript
171 lines
9.9 KiB
TypeScript
import { TLShape } from '@tldraw/tldraw'
|
|
import { CCUserNodeShape, CCUserNodeShapeUtil } from './CCUserNodeShapeUtil'
|
|
import { CCTeacherNodeShape, CCTeacherNodeShapeUtil } from './CCTeacherNodeShapeUtil'
|
|
import { CCStudentNodeShape, CCStudentNodeShapeUtil } from './CCStudentNodeShapeUtil'
|
|
import { CCCalendarNodeShape, CCCalendarNodeShapeUtil } from './CCCalendarNodeShapeUtil'
|
|
import { CCCalendarYearNodeShape, CCCalendarYearNodeShapeUtil } from './CCCalendarYearNodeShapeUtil'
|
|
import { CCCalendarMonthNodeShape, CCCalendarMonthNodeShapeUtil } from './CCCalendarMonthNodeShapeUtil'
|
|
import { CCCalendarWeekNodeShape, CCCalendarWeekNodeShapeUtil } from './CCCalendarWeekNodeShapeUtil'
|
|
import { CCCalendarDayNodeShape, CCCalendarDayNodeShapeUtil } from './CCCalendarDayNodeShapeUtil'
|
|
import { CCCalendarTimeChunkNodeShape, CCCalendarTimeChunkNodeShapeUtil } from './CCCalendarTimeChunkNodeShapeUtil'
|
|
import { CCSchoolNodeShape, CCSchoolNodeShapeUtil } from './CCSchoolNodeShapeUtil'
|
|
import { CCDepartmentNodeShape, CCDepartmentNodeShapeUtil } from './CCDepartmentNodeShapeUtil'
|
|
import { CCRoomNodeShape, CCRoomNodeShapeUtil } from './CCRoomNodeShapeUtil'
|
|
import { CCSubjectClassNodeShape, CCSubjectClassNodeShapeUtil } from './CCSubjectClassNodeShapeUtil'
|
|
import { CCPastoralStructureNodeShape, CCPastoralStructureNodeShapeUtil } from './CCPastoralStructureNodeShapeUtil'
|
|
import { CCYearGroupNodeShape, CCYearGroupNodeShapeUtil } from './CCYearGroupNodeShapeUtil'
|
|
import { CCCurriculumStructureNodeShape, CCCurriculumStructureNodeShapeUtil } from './CCCurriculumStructureNodeShapeUtil'
|
|
import { CCKeyStageNodeShape, CCKeyStageNodeShapeUtil } from './CCKeyStageNodeShapeUtil'
|
|
import { CCKeyStageSyllabusNodeShape, CCKeyStageSyllabusNodeShapeUtil } from './CCKeyStageSyllabusNodeShapeUtil'
|
|
import { CCYearGroupSyllabusNodeShape, CCYearGroupSyllabusNodeShapeUtil } from './CCYearGroupSyllabusNodeShapeUtil'
|
|
import { CCSubjectNodeShape, CCSubjectNodeShapeUtil } from './CCSubjectNodeShapeUtil'
|
|
import { CCTopicNodeShape, CCTopicNodeShapeUtil } from './CCTopicNodeShapeUtil'
|
|
import { CCTopicLessonNodeShape, CCTopicLessonNodeShapeUtil } from './CCTopicLessonNodeShapeUtil'
|
|
import { CCLearningStatementNodeShape, CCLearningStatementNodeShapeUtil } from './CCLearningStatementNodeShapeUtil'
|
|
import { CCSchoolTimetableNodeShape, CCSchoolTimetableNodeShapeUtil } from './CCSchoolTimetableNodeShapeUtil'
|
|
import { CCAcademicYearNodeShape, CCAcademicYearNodeShapeUtil } from './CCAcademicYearNodeShapeUtil'
|
|
import { CCAcademicTermNodeShape, CCAcademicTermNodeShapeUtil } from './CCAcademicTermNodeShapeUtil'
|
|
import { CCAcademicWeekNodeShape, CCAcademicWeekNodeShapeUtil } from './CCAcademicWeekNodeShapeUtil'
|
|
import { CCAcademicDayNodeShape, CCAcademicDayNodeShapeUtil } from './CCAcademicDayNodeShapeUtil'
|
|
import { CCAcademicPeriodNodeShape, CCAcademicPeriodNodeShapeUtil } from './CCAcademicPeriodNodeShapeUtil'
|
|
import { CCRegistrationPeriodNodeShape, CCRegistrationPeriodNodeShapeUtil } from './CCRegistrationPeriodNodeShapeUtil'
|
|
import { CCTeacherTimetableNodeShape, CCTeacherTimetableNodeShapeUtil } from './CCTeacherTimetableNodeShapeUtil'
|
|
import { CCPlannedLessonNodeShape, CCPlannedLessonNodeShapeUtil } from './CCPlannedLessonNodeShapeUtil'
|
|
import { CCDepartmentStructureNodeShape, CCDepartmentStructureNodeShapeUtil } from './CCDepartmentStructureNodeShapeUtil'
|
|
import { CCUserTeacherTimetableNodeShape, CCUserTeacherTimetableNodeShapeUtil } from './CCUserTeacherTimetableNodeShapeUtil'
|
|
import { CCTimetableLessonNodeShape, CCTimetableLessonNodeShapeUtil } from './CCUserTimetableLessonNodeShapeUtil'
|
|
import { CCScienceLabNodeShape, CCScienceLabNodeShapeUtil } from './CCScienceLabNodeShapeUtil'
|
|
// Create a const object with all node types
|
|
export const NODE_SHAPE_TYPES = {
|
|
USER: CCUserNodeShapeUtil.type,
|
|
TEACHER: CCTeacherNodeShapeUtil.type,
|
|
STUDENT: CCStudentNodeShapeUtil.type,
|
|
CALENDAR: CCCalendarNodeShapeUtil.type,
|
|
CALENDAR_YEAR: CCCalendarYearNodeShapeUtil.type,
|
|
CALENDAR_MONTH: CCCalendarMonthNodeShapeUtil.type,
|
|
CALENDAR_WEEK: CCCalendarWeekNodeShapeUtil.type,
|
|
CALENDAR_DAY: CCCalendarDayNodeShapeUtil.type,
|
|
CALENDAR_TIME_CHUNK: CCCalendarTimeChunkNodeShapeUtil.type,
|
|
SCHOOL: CCSchoolNodeShapeUtil.type,
|
|
DEPARTMENT: CCDepartmentNodeShapeUtil.type,
|
|
ROOM: CCRoomNodeShapeUtil.type,
|
|
SUBJECT_CLASS: CCSubjectClassNodeShapeUtil.type,
|
|
PASTORAL_STRUCTURE: CCPastoralStructureNodeShapeUtil.type,
|
|
YEAR_GROUP: CCYearGroupNodeShapeUtil.type,
|
|
CURRICULUM_STRUCTURE: CCCurriculumStructureNodeShapeUtil.type,
|
|
KEY_STAGE: CCKeyStageNodeShapeUtil.type,
|
|
KEY_STAGE_SYLLABUS: CCKeyStageSyllabusNodeShapeUtil.type,
|
|
YEAR_GROUP_SYLLABUS: CCYearGroupSyllabusNodeShapeUtil.type,
|
|
SUBJECT: CCSubjectNodeShapeUtil.type,
|
|
TOPIC: CCTopicNodeShapeUtil.type,
|
|
TOPIC_LESSON: CCTopicLessonNodeShapeUtil.type,
|
|
LEARNING_STATEMENT: CCLearningStatementNodeShapeUtil.type,
|
|
SCIENCE_LAB: CCScienceLabNodeShapeUtil.type,
|
|
SCHOOL_TIMETABLE: CCSchoolTimetableNodeShapeUtil.type,
|
|
ACADEMIC_YEAR: CCAcademicYearNodeShapeUtil.type,
|
|
ACADEMIC_TERM: CCAcademicTermNodeShapeUtil.type,
|
|
ACADEMIC_WEEK: CCAcademicWeekNodeShapeUtil.type,
|
|
ACADEMIC_DAY: CCAcademicDayNodeShapeUtil.type,
|
|
ACADEMIC_PERIOD: CCAcademicPeriodNodeShapeUtil.type,
|
|
REGISTRATION_PERIOD: CCRegistrationPeriodNodeShapeUtil.type,
|
|
TEACHER_TIMETABLE: CCTeacherTimetableNodeShapeUtil.type,
|
|
TIMETABLE_LESSON: CCTimetableLessonNodeShapeUtil.type,
|
|
PLANNED_LESSON: CCPlannedLessonNodeShapeUtil.type,
|
|
DEPARTMENT_STRUCTURE: CCDepartmentStructureNodeShapeUtil.type,
|
|
USER_TEACHER_TIMETABLE: CCUserTeacherTimetableNodeShapeUtil.type,
|
|
USER_TIMETABLE_LESSON: CCTimetableLessonNodeShapeUtil.type,
|
|
} as const;
|
|
|
|
// Create the type from the const object's values
|
|
export type NodeShapeType = typeof NODE_SHAPE_TYPES[keyof typeof NODE_SHAPE_TYPES];
|
|
|
|
// Define AllNodeShapes as a union type of all shape types
|
|
export type AllNodeShapes =
|
|
| CCUserNodeShape
|
|
| CCTeacherNodeShape
|
|
| CCStudentNodeShape
|
|
| CCCalendarNodeShape
|
|
| CCCalendarYearNodeShape
|
|
| CCCalendarMonthNodeShape
|
|
| CCCalendarWeekNodeShape
|
|
| CCCalendarDayNodeShape
|
|
| CCCalendarTimeChunkNodeShape
|
|
| CCSchoolNodeShape
|
|
| CCDepartmentNodeShape
|
|
| CCRoomNodeShape
|
|
| CCSubjectClassNodeShape
|
|
| CCPastoralStructureNodeShape
|
|
| CCYearGroupNodeShape
|
|
| CCCurriculumStructureNodeShape
|
|
| CCKeyStageNodeShape
|
|
| CCKeyStageSyllabusNodeShape
|
|
| CCYearGroupSyllabusNodeShape
|
|
| CCSubjectNodeShape
|
|
| CCTopicNodeShape
|
|
| CCTopicLessonNodeShape
|
|
| CCLearningStatementNodeShape
|
|
| CCScienceLabNodeShape
|
|
| CCSchoolTimetableNodeShape
|
|
| CCAcademicYearNodeShape
|
|
| CCAcademicTermNodeShape
|
|
| CCAcademicWeekNodeShape
|
|
| CCAcademicDayNodeShape
|
|
| CCAcademicPeriodNodeShape
|
|
| CCRegistrationPeriodNodeShape
|
|
| CCTeacherTimetableNodeShape
|
|
| CCTimetableLessonNodeShape
|
|
| CCPlannedLessonNodeShape
|
|
| CCDepartmentStructureNodeShape
|
|
| CCUserTeacherTimetableNodeShape;
|
|
|
|
// Export all shape utils in an object for easy access
|
|
export const ShapeUtils = {
|
|
[CCUserNodeShapeUtil.type]: CCUserNodeShapeUtil,
|
|
[CCTeacherNodeShapeUtil.type]: CCTeacherNodeShapeUtil,
|
|
[CCStudentNodeShapeUtil.type]: CCStudentNodeShapeUtil,
|
|
[CCCalendarNodeShapeUtil.type]: CCCalendarNodeShapeUtil,
|
|
[CCCalendarYearNodeShapeUtil.type]: CCCalendarYearNodeShapeUtil,
|
|
[CCCalendarMonthNodeShapeUtil.type]: CCCalendarMonthNodeShapeUtil,
|
|
[CCCalendarWeekNodeShapeUtil.type]: CCCalendarWeekNodeShapeUtil,
|
|
[CCCalendarDayNodeShapeUtil.type]: CCCalendarDayNodeShapeUtil,
|
|
[CCCalendarTimeChunkNodeShapeUtil.type]: CCCalendarTimeChunkNodeShapeUtil,
|
|
[CCSchoolNodeShapeUtil.type]: CCSchoolNodeShapeUtil,
|
|
[CCDepartmentNodeShapeUtil.type]: CCDepartmentNodeShapeUtil,
|
|
[CCRoomNodeShapeUtil.type]: CCRoomNodeShapeUtil,
|
|
[CCSubjectClassNodeShapeUtil.type]: CCSubjectClassNodeShapeUtil,
|
|
[CCPastoralStructureNodeShapeUtil.type]: CCPastoralStructureNodeShapeUtil,
|
|
[CCYearGroupNodeShapeUtil.type]: CCYearGroupNodeShapeUtil,
|
|
[CCCurriculumStructureNodeShapeUtil.type]: CCCurriculumStructureNodeShapeUtil,
|
|
[CCKeyStageNodeShapeUtil.type]: CCKeyStageNodeShapeUtil,
|
|
[CCKeyStageSyllabusNodeShapeUtil.type]: CCKeyStageSyllabusNodeShapeUtil,
|
|
[CCYearGroupSyllabusNodeShapeUtil.type]: CCYearGroupSyllabusNodeShapeUtil,
|
|
[CCSubjectNodeShapeUtil.type]: CCSubjectNodeShapeUtil,
|
|
[CCTopicNodeShapeUtil.type]: CCTopicNodeShapeUtil,
|
|
[CCTopicLessonNodeShapeUtil.type]: CCTopicLessonNodeShapeUtil,
|
|
[CCLearningStatementNodeShapeUtil.type]: CCLearningStatementNodeShapeUtil,
|
|
[CCScienceLabNodeShapeUtil.type]: CCScienceLabNodeShapeUtil,
|
|
[CCSchoolTimetableNodeShapeUtil.type]: CCSchoolTimetableNodeShapeUtil,
|
|
[CCAcademicYearNodeShapeUtil.type]: CCAcademicYearNodeShapeUtil,
|
|
[CCAcademicTermNodeShapeUtil.type]: CCAcademicTermNodeShapeUtil,
|
|
[CCAcademicWeekNodeShapeUtil.type]: CCAcademicWeekNodeShapeUtil,
|
|
[CCAcademicDayNodeShapeUtil.type]: CCAcademicDayNodeShapeUtil,
|
|
[CCAcademicPeriodNodeShapeUtil.type]: CCAcademicPeriodNodeShapeUtil,
|
|
[CCRegistrationPeriodNodeShapeUtil.type]: CCRegistrationPeriodNodeShapeUtil,
|
|
[CCTeacherTimetableNodeShapeUtil.type]: CCTeacherTimetableNodeShapeUtil,
|
|
[CCTimetableLessonNodeShapeUtil.type]: CCTimetableLessonNodeShapeUtil,
|
|
[CCPlannedLessonNodeShapeUtil.type]: CCPlannedLessonNodeShapeUtil,
|
|
[CCDepartmentStructureNodeShapeUtil.type]: CCDepartmentStructureNodeShapeUtil,
|
|
[CCUserTeacherTimetableNodeShapeUtil.type]: CCUserTeacherTimetableNodeShapeUtil,
|
|
} as const;
|
|
|
|
// Add a type guard to check if a shape is a valid node shape
|
|
export const isValidNodeShape = (shape: TLShape): shape is AllNodeShapes => {
|
|
return shape &&
|
|
typeof shape.type === 'string' &&
|
|
Object.values(NODE_SHAPE_TYPES).includes(shape.type as NodeShapeType);
|
|
};
|
|
|
|
// Add a type guard to check if a type string is a valid node type
|
|
export const isValidNodeType = (type: string): type is NodeShapeType => {
|
|
return Object.values(NODE_SHAPE_TYPES).includes(type as NodeShapeType);
|
|
};
|