When the user opens a different report in the designer, it assigns a new report object — the assigned-report event lets you capture it.

Handle the assigned-report event (Vue).
<script setup lang="ts">
import { Designer, Stimulsoft } from 'stimulsoft-reports-js-vuejs/designer'

var report = new Stimulsoft.Report.StiReport();
report.loadFile("Reports/SimpleList.mrt");
var designerOptions = new Stimulsoft.Designer.StiDesignerOptions();

function onAssignedReport(args: Stimulsoft.Designer.AssignedReportArgs) {
    report = args.report;
}
</script>

<template>
    <Designer :report="report" :options="designerOptions" @assigned-report="onAssignedReport" />
</template>

How it works. The event fires whenever the designer swaps its report, so your component always holds the current template the user is editing.