Add timestamp() to template fns

This commit is contained in:
Gregory Schier
2024-07-30 14:04:33 -07:00
parent dd032a9e4d
commit ecd8b93bd1
2 changed files with 36 additions and 7 deletions

View File

@@ -3,21 +3,32 @@ import { Decoration, EditorView, ViewPlugin, WidgetType } from '@codemirror/view
import { BetterMatchDecorator } from '../BetterMatchDecorator';
class PlaceholderWidget extends WidgetType {
constructor(readonly name: string, readonly isExistingVariable: boolean) {
constructor(
readonly name: string,
readonly exists: boolean,
readonly type: 'function' | 'variable' = 'variable',
) {
super();
}
eq(other: PlaceholderWidget) {
return this.name == other.name && this.isExistingVariable == other.isExistingVariable;
return this.name == other.name && this.exists == other.exists;
}
toDOM() {
const elt = document.createElement('span');
elt.className = `x-theme-placeholder placeholder ${
this.isExistingVariable ? 'x-theme-placeholder--primary' : 'x-theme-placeholder--danger'
!this.exists
? 'x-theme-placeholder--danger'
: this.type === 'variable'
? 'x-theme-placeholder--primary'
: 'x-theme-placeholder--info'
}`;
elt.title = !this.isExistingVariable ? 'Variable not found in active environment' : '';
elt.title = !this.exists ? 'Variable not found in active environment' : '';
elt.textContent = this.name;
return elt;
}
ignoreEvent() {
return false;
}
@@ -43,11 +54,13 @@ export const placeholders = function (variables: { name: string }[]) {
return Decoration.replace({});
}
const isFunction = groupMatch.includes('(');
return Decoration.replace({
inclusive: true,
widget: new PlaceholderWidget(
groupMatch,
variables.some((v) => v.name === groupMatch),
isFunction ? true : variables.some((v) => v.name === groupMatch),
isFunction ? 'function' : 'variable',
),
});
},
@@ -56,9 +69,11 @@ export const placeholders = function (variables: { name: string }[]) {
return ViewPlugin.fromClass(
class {
placeholders: DecorationSet;
constructor(view: EditorView) {
this.placeholders = placeholderMatcher.createDeco(view);
}
update(update: ViewUpdate) {
this.placeholders = placeholderMatcher.updateDeco(update, this.placeholders);
}