DroppyMarkdownEditorContext

Everything the host editor needs beyond the text binding (DroppyKit 0.2.2).

struct DroppyMarkdownEditorContext

A struct rather than a longer parameter list so future additions stay additive: the factory signature never has to change again.

Initializers

init(documentID:placeholder:commands:onFocusChange:autoFocus:restoreSelectionLocation:onSelectionChange:)

init(documentID: AnyHashable? = nil, placeholder: String = "Start typing…", commands: DroppyMarkdownEditorCommands? = nil, onFocusChange: ((Bool) -> Void)? = nil, autoFocus: Bool = false, restoreSelectionLocation: Int? = nil, onSelectionChange: ((Int) -> Void)? = nil)

Creates a context. Every field defaults, so .init() is the plain editor.

Properties

autoFocus

var autoFocus: Bool

When true the editor takes first responder on mount and on every document switch, so typing works without an extra click.

commands

var commands: DroppyMarkdownEditorCommands?

Optional command bus wired to the droplet's formatting bar.

documentID

var documentID: AnyHashable?

Stable identity of the document being edited. The host watches this to notice a document switch while the editor stays mounted, and reloads instead of routing the new document's edits into the old one.

onFocusChange

var onFocusChange: ((Bool) -> Void)?

Called with true when editing starts and false when it ends, so the host can stand its own key handling down while a droplet types.

onSelectionChange

var onSelectionChange: ((Int) -> Void)?

Called as the caret moves, so the droplet can persist it per document.

placeholder

var placeholder: String

Placeholder shown while the document is empty.

restoreSelectionLocation

var restoreSelectionLocation: Int?

Caret location (UTF-16 offset) to restore when the editor gains focus, so a document reopens where the user left off instead of at the top.