* Update frameInformationGet to also return the tab ID
* Add tabId to Frontend
* Pass tabId/frameId to Display
* Pass ownership information using setContent
* Remove ownerFrameId for Popup classes
* Use frameId instead of ownerFrameId for screenshotting
* Use contentOrigin instead of owner
* Update _invokeContentOrigin implementation
* Validate source window before handling messages
* Add unregisterHandler to CrossFrameAPI
* Refactor the process FrameAncestryHandler uses to get ancestor frame IDs
* Store a mapping of child frame information
* Update getFrameAncestryInfo to only run once
* Update _addAnkiNote to track errors
* Change comparison
* Update anki note adding to show errors
* Fix template
* Show errors when Anki card creation behaves unexpectedly
* Update some errors related to anki media injection
* Update addAnkiNote error handling
* Improve Anki errors
* Simplify error messages related to template rendering
* Add autoSearchClipboardContent option
* Hide header if there is any search text
* Add setting for autoSearchClipboardContent
* Add support for autoSearchClipboardContent
* Add _getExpressionAndReading utility
* Add _getExpressionReadingKey utility
* Add _getAudioOptions
* Separate some logic into _createAudioFromInfoList
* Update cache data format so that it can be accessed synchronously
* Allow sources to be manually specified
* Add options to enable playback of a specific entry of a source
* Use a standard map
* Wrap function
* Improve cache to support multiple different source arrays
For the same reading/expression
* Rename variable
* Use null instead of an error
* Simplify details
* Simplify audio creation
* Return an array of sources instead of a single item
* Use sourceIndex instead of index
* Rename APIs
* Return more info about the source
* Return source instead of sourceIndex
* Create HotkeyHelpController
* Expose getAllTemplates
* Update hotkeys on the context page
* Update hotkeys on the display pages
* Fix display issue where a hotkey used to be defined but no longer is
* Add support for allowing TextScanner.search to force focus
* Simplify query parser searched event forwarding
* Defer fallback creation
* Simplify event listeners
* Change type to pointerType
* Change cause to eventType
* Change empty to passive; make .search function passive
* Remove unused input index
* Create AnkiNoteData
* Create AnkiNoteDataDefinitionProxyHandler
* Update media injection
* Create AnkiNoteDataDefinitionSecondaryProperties
* Update note context format
* Expose url and cloze on definition
* Simplify for understandability
* Remove unused _createNoteData
* Update public object
* Remove trims on sentence, since it should already be trimmed
* Fix unused global
* Pass url into setContent
* Update where url is checked from
* Add documentTitle to state information
* Update how _getNoteContext gets the document title
* Update how url is fetched for options context
* Pass document title in to 'searched' event
* Refactor note adding/viewing functions
* Move _addDefinition
* Update where anki field templates are assigned
* Update _createNote to not include options/templates arguments
* Simplify getAnkiNoteInfo to not require duplicateScope
* Move TemplateRendererProxy creation into AnkiNoteBuilder
* Simplify _stringReplaceAsync
* Organize note generation
* Rename API
* Make the template rendering function more generic