Skip to content

Commit 4841df6

Browse files
Copilothotlong
andcommitted
refactor: clean up ObjectTimeline - extract timelineConfig, remove as any casts
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent a1d5b38 commit 4841df6

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

packages/plugin-timeline/src/ObjectTimeline.tsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ export const ObjectTimeline: React.FC<ObjectTimelineProps> = ({
8282
const [error, setError] = useState<Error | null>(null);
8383
const [refreshKey, setRefreshKey] = useState(0);
8484

85+
// Resolve nested TimelineConfig (spec-compliant)
86+
const timelineConfig = schema.timeline;
87+
8588
useEffect(() => {
8689
const result = TimelineExtensionSchema.safeParse(schema);
8790
if (!result.success) {
@@ -129,15 +132,14 @@ export const ObjectTimeline: React.FC<ObjectTimelineProps> = ({
129132

130133
if (!effectiveItems && rawData && Array.isArray(rawData)) {
131134
// Resolve TimelineConfig with backwards-compatible fallbacks
132-
const tl = (schema as any).timeline as TimelineConfig | undefined;
133-
const titleField = tl?.titleField ?? schema.mapping?.title ?? schema.titleField ?? 'name';
135+
const titleField = timelineConfig?.titleField ?? schema.mapping?.title ?? schema.titleField ?? 'name';
134136
// Spec-compliant: prefer timeline.startDateField, fallback to flat props
135-
const startDateField = tl?.startDateField ?? schema.mapping?.date ?? schema.startDateField ?? schema.dateField ?? 'date';
136-
const endDateField = tl?.endDateField ?? schema.endDateField ?? startDateField;
137+
const startDateField = timelineConfig?.startDateField ?? schema.mapping?.date ?? schema.startDateField ?? schema.dateField ?? 'date';
138+
const endDateField = timelineConfig?.endDateField ?? schema.endDateField ?? startDateField;
137139
const descField = schema.mapping?.description ?? schema.descriptionField ?? 'description';
138140
const variantField = schema.mapping?.variant ?? 'variant';
139-
const groupByField = tl?.groupByField ?? schema.groupByField;
140-
const colorField = tl?.colorField ?? schema.colorField;
141+
const groupByField = timelineConfig?.groupByField ?? schema.groupByField;
142+
const colorField = timelineConfig?.colorField ?? schema.colorField;
141143

142144
effectiveItems = rawData.map(item => ({
143145
title: item[titleField],
@@ -171,8 +173,7 @@ export const ObjectTimeline: React.FC<ObjectTimelineProps> = ({
171173
});
172174

173175
// Resolve scale: spec timeline.scale takes priority over flat schema.scale
174-
const tl = (schema as any).timeline as TimelineConfig | undefined;
175-
const resolvedScale = tl?.scale ?? schema.scale;
176+
const resolvedScale = timelineConfig?.scale ?? schema.scale;
176177

177178
const effectiveSchema = {
178179
...schema,

0 commit comments

Comments
 (0)