overleaf/services/web/frontend/js/features/source-editor/extensions/completion-logger.ts
Eric Mc Sween cce1a91205 Merge pull request #13897 from overleaf/ae-completion-event
Fix regular expression for completion event logging

GitOrigin-RevId: fbe3b91722fe40d4bb1116f23a78ebcebbd02b37
2023-07-17 11:13:27 +00:00

28 lines
900 B
TypeScript

import { ViewPlugin } from '@codemirror/view'
import { pickedCompletion } from '@codemirror/autocomplete'
import { emitCompletionEvent } from './toolbar/utils/analytics'
/**
* A custom view plugin that watches for transactions with the `pickedCompletion` annotation.
* If the completion label starts with a command, log that command for analytics.
*/
export const completionLogger = ViewPlugin.define(view => {
return {
update(update) {
for (const tr of update.transactions) {
const completion = tr.annotation(pickedCompletion)
if (completion) {
const command = completionCommand(completion.label)
if (command) {
emitCompletionEvent(view, command)
}
}
}
},
}
})
const completionCommand = (label: string): string | null => {
const matches = label.match(/^\\(\w+)/)
return matches ? matches[1] : null
}