Skip to content

Commit 0e7fdd4

Browse files
duranbdandelany
authored andcommitted
refactor(sequencing): simplify output editor extension handling and reconfiguration
- Remove previousOutputEditorExtension tracking and safeStringify comparison - Add explicit empty array fallback when no output extension is available - Move output format initialization before extension computation for proper dependency order - Replace complex conditional logic with simpler reactive statement for output editor updates - Add dedicated reactive block to reconfigure output editor when adaptation extensions change
1 parent 76e092e commit 0e7fdd4

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

src/components/sequencing/SequenceEditor.svelte

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import { getLintDiagnostics } from '../../utilities/codemirror/lint';
2626
import { blockTheme } from '../../utilities/codemirror/themes/block';
2727
import { phoenixResources } from '../../utilities/sequence-editor/adaptation-resources';
28-
import { safeStringify } from '../../utilities/text';
2928
import { showFailureToast, showSuccessToast } from '../../utilities/toast';
3029
import { replaceFileExtension } from '../../utilities/workspaces';
3130
import CssGrid from '../ui/CssGrid.svelte';
@@ -87,7 +86,6 @@
8786
let commandInfoMapper: CommandInfoMapper;
8887
let inputEditorExtension: Extension = [];
8988
let outputEditorExtension: Extension = [];
90-
let previousOutputEditorExtension: Extension | null = null;
9189
let previousSequenceFilePath: string = sequenceFilePath;
9290
9391
// Debounce only the expensive output format computation, not the state sync
@@ -99,8 +97,14 @@
9997
inputEditorExtension = sequenceAdaptation.input.getEditorExtension(phoenixContext, phoenixResources);
10098
}
10199
100+
$: if (sequenceAdaptation.outputs.length > 0) {
101+
selectedOutputFormat = sequenceAdaptation.outputs[0];
102+
}
103+
102104
$: if (phoenixContext && selectedOutputFormat?.getEditorExtension) {
103105
outputEditorExtension = selectedOutputFormat.getEditorExtension(phoenixContext, phoenixResources);
106+
} else {
107+
outputEditorExtension = [];
104108
}
105109
106110
// insert sequence - use sequenceFilePath as dependency to ensure editor updates when switching files
@@ -156,19 +160,7 @@
156160
editorHeights = '1fr 3px';
157161
}
158162
159-
$: if (sequenceAdaptation.outputs.length > 0) {
160-
selectedOutputFormat = sequenceAdaptation.outputs[0];
161-
}
162-
163-
$: if (
164-
showOutputs &&
165-
(previousShowOutputs !== showOutputs ||
166-
safeStringify(previousOutputEditorExtension) !== safeStringify(outputEditorExtension)) &&
167-
editorOutputDiv
168-
) {
169-
if (safeStringify(previousOutputEditorExtension) !== safeStringify(outputEditorExtension)) {
170-
previousOutputEditorExtension = outputEditorExtension;
171-
}
163+
$: if (showOutputs && previousShowOutputs !== showOutputs && editorOutputDiv) {
172164
if (editorOutputView) {
173165
editorOutputView.destroy();
174166
}
@@ -186,7 +178,6 @@
186178
],
187179
parent: editorOutputDiv,
188180
});
189-
debouncedOutputUpdate(editorSequenceView?.state.doc.toString() ?? '');
190181
}
191182
192183
$: updatedSequenceDefinition = sequenceDefinition;
@@ -205,6 +196,15 @@
205196
debouncedOutputUpdate(editorSequenceView?.state.doc.toString() ?? '');
206197
}
207198
}
199+
$: {
200+
// Reconfigure output editor when adaptation extensions change
201+
if (editorOutputView) {
202+
editorOutputView.dispatch({
203+
effects: [compartmentOutputAdaptation.reconfigure(outputEditorExtension)],
204+
});
205+
debouncedOutputUpdate(editorSequenceView?.state.doc.toString() ?? '');
206+
}
207+
}
208208
209209
function sequenceUpdateListener(viewUpdate: ViewUpdate): void {
210210
const sequence = viewUpdate.state.doc.toString();

0 commit comments

Comments
 (0)