@kusto/monaco-kusto
Version:
CSL, KQL plugin for the Monaco Editor
29 lines (28 loc) • 1.08 kB
JavaScript
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
export function dateStringWrapper(editor) {
editor.onDidPaste(function (event) {
var range = event.range;
if (!range)
return;
var model = editor.getModel();
var pasted = model.getValueInRange(range);
if (!isBareIsoDate(pasted))
return;
var wrapped = "datetime(".concat(pasted, ")");
var edit = {
range: range,
text: wrapped,
forceMoveMarkers: true,
};
var cursorStateComputer = function () {
var startOffset = model.getOffsetAt(range.getStartPosition());
var endPos = model.getPositionAt(startOffset + wrapped.length);
return [new monaco.Selection(endPos.lineNumber, endPos.column, endPos.lineNumber, endPos.column)];
};
editor.executeEdits('paste-date', [edit], cursorStateComputer);
});
}
export function isBareIsoDate(text) {
var s = text.trim();
return /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}Z)?$/.test(s);
}