{#if !isBranchAll && !isParallelLoop}
{#snippet header()} If defined, at the end of the step, the predicate expression will be evaluated to decide if the flow should stop early, skip rest of steps in iteration/branch if inside a parallel for loop or branch all, or break if inside a for/while loop or branch all. {/snippet} { if (isStopAfterIfEnabled && flowModule.stop_after_if) { flowModule.stop_after_if = undefined } else { flowModule.stop_after_if = { expr: 'result == undefined', skip_if_stopped: false, error_message: undefined } } }} options={{ right: isLoop ? 'Break loop' : breakableParent ? breakableParent.isParallel ? breakableParent.type === 'loop' ? 'Skip rest of steps in iteration' : 'Skip rest of steps in branch' : 'Break parent loop module' : 'Stop flow if condition met' }} />
{#if flowModule.stop_after_if} {@const earlyStopResult = isLoop ? Array.isArray(result) && result.length > 0 ? result[result.length - 1] : result === NEVER_TESTED_THIS_FAR ? result : undefined : result} {#if !breakableParent && !isLoop}
{ if (flowModule.stop_after_if && event.detail) { flowModule.stop_after_if.error_message = undefined raise_error_message_stop_after_if = false } }} options={{ right: 'Label flow as "skipped" if stopped' }} /> { if (flowModule.stop_after_if) { if (event.detail) { flowModule.stop_after_if.error_message = '' flowModule.stop_after_if.skip_if_stopped = false } else { flowModule.stop_after_if.error_message = undefined } } }} options={{ right: 'Raise an error message if stopped', rightTooltip: 'If enabled and the stop condition is met, an error message will be raised. A custom message can be provided; otherwise, a default message will be used. Mutually exclusive with "Label flow as skipped".' }} />
{/if} {#if raise_error_message_stop_after_if} {/if} Stop condition expression
{ editor?.insertAtCursor(detail) editor?.focus() }} >
{:else} {#if !breakableParent && !isLoop}
{/if} Stop condition expression {/if}
{/if} {#if isLoop || isBranchAll}
{#snippet header()} If defined, at the end of the step, the predicate expression will be evaluated to decide if the flow should stop early, skip rest of steps in iteration/branch if inside a parallel for loop or branch all, or break if inside a for/while loop or branch all. {/snippet} { if (isStopAfterAllIterationsEnabled && flowModule.stop_after_all_iters_if) { flowModule.stop_after_all_iters_if = undefined } else { flowModule.stop_after_all_iters_if = { expr: 'result == undefined', skip_if_stopped: false, error_message: undefined } } }} options={{ right: (breakableParent ? breakableParent.isParallel ? breakableParent.type === 'loop' ? 'Skip rest of steps in iteration' : 'Skip rest of steps in branch' : 'Break parent loop module ' + breakableParent.stepId : 'Stop flow') + ' if condition met' }} />
{#if flowModule.stop_after_all_iters_if} {#if !breakableParent}
{ if (flowModule.stop_after_all_iters_if && event.detail) { flowModule.stop_after_all_iters_if.error_message = undefined raise_error_message_stop_after_all_if = false } }} options={{ right: 'Label flow as "skipped" if stopped' }} /> { if (flowModule.stop_after_all_iters_if) { if (event.detail) { flowModule.stop_after_all_iters_if.error_message = '' flowModule.stop_after_all_iters_if.skip_if_stopped = false } else { flowModule.stop_after_all_iters_if.error_message = undefined } } }} options={{ right: 'Raise an error message if stopped', rightTooltip: 'If enabled and the stop condition is met, an error message will be raised. A custom message can be provided; otherwise, a default message will be used. Mutually exclusive with "Label flow as skipped".' }} />
{/if} {#if raise_error_message_stop_after_all_if} {/if} Stop condition expression
{ editor?.insertAtCursor(detail) editor?.focus() }} >
{:else} {#if !breakableParent}
{/if} Stop condition expression {/if}
{/if}