| 971 | } |
| 972 | |
| 973 | function buildHistorySection(): HTMLDivElement { |
| 974 | const undo = mkBtn("← Undo", "", () => { |
| 975 | comp!.undo(); |
| 976 | logEntry("undo", "dispatched"); |
| 977 | }); |
| 978 | const redo = mkBtn("Redo →", "", () => { |
| 979 | comp!.redo(); |
| 980 | logEntry("redo", "dispatched"); |
| 981 | }); |
| 982 | const canCheck = mkBtn("can(addGsapTween)?", "", () => { |
| 983 | const r = comp!.can({ |
| 984 | type: "addGsapTween", |
| 985 | target: "hf-badge", |
| 986 | tween: { method: "to", duration: 0.5 }, |
| 987 | }); |
| 988 | logEntry("info", { "can(addGsapTween)": r }); |
| 989 | }); |
| 990 | const overrides = mkBtn("getOverrides()", "", () => logEntry("info", comp!.getOverrides())); |
| 991 | const flush = mkBtn("flush", "", () => { |
| 992 | comp!.flush().then(() => logEntry("info", "flush complete")); |
| 993 | }); |
| 994 | return opSection("History / inspect", opRow(undo, redo), opRow(canCheck, overrides, flush)); |
| 995 | } |
| 996 | |
| 997 | const OPS_SECTIONS = [ |
| 998 | buildPreviewSelectSection, |