OptionalinsertWhen true and there is no in-progress token (open is false at the
moment insert runs), insert insertText at the field's bare caret
instead of splicing over tokenStart. Added for the template-editor
modal (Task 2): its suggestion panel is always populated — filtered rows
while a token is active, every suggestion otherwise, for browsing — and
clicking a row in that browsing state must behave as if the user had
typed the token right there, not silently reuse whatever tokenStart
was left over from the last time a token was active (which could
point at a stale, unrelated position, or 0 on a modal that just opened
and never had one). Extending insert with an explicit opt-in flag
(rather than, say, having the caller reset tokenStart itself, which
the hook doesn't expose, or duplicating insert's splice/caret/
pendingCaret logic in the modal) keeps the one splice implementation
as the single source of truth for both call sites. No effect when a
token is active (open true) — that path is unchanged from Task 1.
Options accepted by TemplateTokenState.insert.