Skip to content

Commit 434515a

Browse files
committed
new image suggester and more eslint fixes
1 parent b3e927d commit 434515a

File tree

63 files changed

+963
-677
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+963
-677
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ npm node_modules
22
build
33
main.js
44
Publish.js
5+
*.svelte

exampleVault/Input Fields/Image Suggester.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
image: Other/Images/img_butterfly.webp
2+
image: Other/Images/img_flower.webp
33
---
44

55
```meta-bind

src/api/IAPI.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { InputFieldDeclarationParser } from '../parsers/inputFieldParser/InputFieldParser';
2-
import { ViewFieldDeclarationParser } from '../parsers/viewFieldParser/ViewFieldDeclarationParser';
3-
import { BindTargetParser } from '../parsers/BindTargetParser';
4-
import { IPlugin } from '../IPlugin';
5-
import { InputFieldAPI } from './InputFieldAPI';
1+
import { type InputFieldDeclarationParser } from '../parsers/inputFieldParser/InputFieldParser';
2+
import { type ViewFieldDeclarationParser } from '../parsers/viewFieldParser/ViewFieldDeclarationParser';
3+
import { type BindTargetParser } from '../parsers/BindTargetParser';
4+
import { type IPlugin } from '../IPlugin';
5+
import { type InputFieldAPI } from './InputFieldAPI';
66

77
export interface IAPI {
88
readonly plugin: IPlugin;

src/cm6/Cm6_ViewPlugin.ts

Lines changed: 7 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import { Decoration, DecorationSet, EditorView, ViewPlugin, ViewUpdate } from '@codemirror/view';
2-
import { Range, RangeSet } from '@codemirror/state';
1+
import { Decoration, type DecorationSet, type EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';
2+
import { type Range, type RangeSet } from '@codemirror/state';
33
import { syntaxTree, tokenClassNodeProp } from '@codemirror/language';
4-
import { SyntaxNode } from '@lezer/common';
5-
import { Component, editorLivePreviewField, TFile } from 'obsidian';
6-
import MetaBindPlugin from '../main';
7-
import { MBWidgetType } from './Cm6_Widgets';
4+
import { type SyntaxNode } from '@lezer/common';
5+
import { Component, editorLivePreviewField, type TFile } from 'obsidian';
6+
import type MetaBindPlugin from '../main';
7+
import { type MBWidgetType } from './Cm6_Widgets';
88
import { Cm6_Util } from './Cm6_Util';
99

10+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1011
export function createMarkdownRenderChildWidgetEditorPlugin(plugin: MetaBindPlugin): ViewPlugin<any> {
1112
return ViewPlugin.fromClass(
1213
class {
@@ -195,54 +196,4 @@ export function createMarkdownRenderChildWidgetEditorPlugin(plugin: MetaBindPlug
195196
decorations: v => v.decorations,
196197
},
197198
);
198-
199-
// return StateField.define<RangeSet<Decoration>>({
200-
// create(state): RangeSet<Decoration> {
201-
// return Decoration.none;
202-
// },
203-
//
204-
// update(oldState: RangeSet<Decoration>, transaction: Transaction): RangeSet<Decoration> {
205-
// const builder = new RangeSetBuilder<Decoration>();
206-
// const filePath = transaction.state.field(editorInfoField).file?.path ?? '';
207-
//
208-
// syntaxTree(transaction.state).iterate({
209-
// enter(node: SyntaxNodeRef) {
210-
// // check for inline code
211-
// if (node.type.name !== 'inline-code') {
212-
// return;
213-
// }
214-
//
215-
// // check for selection and cursor
216-
// if (Cm6_Util.checkSelectionOverlap(transaction.selection, node.from, node.to)) {
217-
// return;
218-
// }
219-
//
220-
// // check for content
221-
// const content = transaction.state.sliceDoc(node.from, node.to);
222-
// if (!isDeclaration(widgetType, content)) {
223-
// return;
224-
// }
225-
//
226-
// const widget = constructMarkdownRenderChildWidget(widgetType, content, filePath, plugin);
227-
// if (!widget) {
228-
// return;
229-
// }
230-
//
231-
// builder.add(
232-
// node.from,
233-
// node.to,
234-
// Decoration.replace({
235-
// widget: widget,
236-
// })
237-
// );
238-
// },
239-
// });
240-
//
241-
// return builder.finish();
242-
// },
243-
//
244-
// provide(field: StateField<DecorationSet>): Extension {
245-
// return EditorView.decorations.from(field);
246-
// },
247-
// });
248199
}

src/cm6/Cm6_Widgets.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { EditorView, WidgetType } from '@codemirror/view';
2-
import MetaBindPlugin from '../main';
3-
import { AbstractMDRC } from '../renderChildren/AbstractMDRC';
4-
import { ViewFieldMDRC } from '../renderChildren/ViewFieldMDRC';
5-
import { InputFieldMDRC, RenderChildType } from '../renderChildren/InputFieldMDRC';
6-
import { Component } from 'obsidian';
7-
import { ExcludedMDRC } from '../renderChildren/ExcludedMDRC';
1+
import { type EditorView, WidgetType } from '@codemirror/view';
2+
import type MetaBindPlugin from '../main';
3+
import { type AbstractMDRC } from '../renderChildren/AbstractMDRC';
4+
import { type ViewFieldMDRC } from '../renderChildren/ViewFieldMDRC';
5+
import { type InputFieldMDRC, RenderChildType } from '../renderChildren/InputFieldMDRC';
6+
import { type Component } from 'obsidian';
7+
import { type ExcludedMDRC } from '../renderChildren/ExcludedMDRC';
88

99
export abstract class MarkdownRenderChildWidget<T extends AbstractMDRC> extends WidgetType {
1010
content: string;
@@ -27,7 +27,7 @@ export abstract class MarkdownRenderChildWidget<T extends AbstractMDRC> extends
2727

2828
abstract createRenderChild(container: HTMLElement, component: Component): T | ExcludedMDRC;
2929

30-
public toDOM(view: EditorView): HTMLElement {
30+
public toDOM(_: EditorView): HTMLElement {
3131
const div = document.createElement('span');
3232
div.addClass('cm-inline-code');
3333

src/fieldArguments/AbstractFieldArgument.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export abstract class AbstractFieldArgument<
77
FieldArgumentType extends string,
88
FieldConfig extends FieldArgumentConfig<FieldArgumentType, FieldType>,
99
> {
10-
value: any;
10+
value: unknown;
1111

1212
abstract getConfig(): FieldConfig;
1313

src/fieldArguments/inputFieldArguments/InputFieldArgumentFactory.ts

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -54,36 +54,6 @@ export class InputFieldArgumentFactory {
5454
}
5555
}
5656

57-
// if (argumentIdentifier === InputFieldArgumentType.CLASS) {
58-
// return new ClassInputFieldArgument();
59-
// } else if (argumentIdentifier === InputFieldArgumentType.ADD_LABELS) {
60-
// return new AddLabelsInputFieldArgument();
61-
// } else if (argumentIdentifier === InputFieldArgumentType.MIN_VALUE) {
62-
// return new MinValueInputFieldArgument();
63-
// } else if (argumentIdentifier === InputFieldArgumentType.MAX_VALUE) {
64-
// return new MaxValueInputFieldArgument();
65-
// } else if (argumentIdentifier === InputFieldArgumentType.OPTION) {
66-
// return new OptionInputFieldArgument();
67-
// } else if (argumentIdentifier === InputFieldArgumentType.TITLE) {
68-
// return new TitleInputFieldArgument();
69-
// } else if (argumentIdentifier === InputFieldArgumentType.OPTION_QUERY) {
70-
// return new OptionQueryInputFieldArgument();
71-
// } else if (argumentIdentifier === InputFieldArgumentType.SHOWCASE) {
72-
// return new ShowcaseInputFieldArgument();
73-
// } else if (argumentIdentifier === InputFieldArgumentType.OFF_VALUE) {
74-
// return new OffValueInputFieldArgument();
75-
// } else if (argumentIdentifier === InputFieldArgumentType.ON_VALUE) {
76-
// return new OnValueInputFieldArgument();
77-
// } else if (argumentIdentifier === InputFieldArgumentType.DEFAULT_VALUE) {
78-
// return new DefaultValueInputFieldArgument();
79-
// } else if (argumentIdentifier === InputFieldArgumentType.PLACEHOLDER) {
80-
// return new PlaceholderInputFieldArgument();
81-
// } else if (argumentIdentifier === InputFieldArgumentType.USE_LINKS) {
82-
// return new UseLinksInputFieldArgument();
83-
// } else {
84-
//
85-
// }
86-
8757
throw new MetaBindParsingError(ErrorLevel.ERROR, 'can not crate input field argument', `unknown argument '${argumentIdentifier}'`);
8858
}
8959
}

src/fieldArguments/viewFieldArguments/ViewFieldArgumentFactory.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ export const VIEW_FIELD_ARGUMENT_MAP = {
1212
[ViewFieldArgumentType.HIDDEN]: HiddenViewFieldArgument,
1313
} as const;
1414

15-
// export type ViewFieldArgumentMapType<T extends ViewFieldArgumentType> = AbstractFieldArgumentMapType<T, typeof VIEW_FIELD_ARGUMENT_MAP>;
16-
//
17-
// export type ViewFieldArgumentConstructorMapType<T extends ViewFieldArgumentType> = AbstractFieldArgumentConstructorMapType<T, typeof VIEW_FIELD_ARGUMENT_MAP>;
18-
1915
export type ViewFieldArgumentMapType<T extends ViewFieldArgumentType> = T extends keyof typeof VIEW_FIELD_ARGUMENT_MAP
2016
? InstanceType<(typeof VIEW_FIELD_ARGUMENT_MAP)[T]>
2117
: undefined;
@@ -24,9 +20,6 @@ export type ViewFieldArgumentConstructorMapType<T extends ViewFieldArgumentType>
2420
? (typeof VIEW_FIELD_ARGUMENT_MAP)[T]
2521
: undefined;
2622

27-
type a = ViewFieldArgumentConstructorMapType<ViewFieldArgumentType.HIDDEN>;
28-
type b = ViewFieldArgumentMapType<ViewFieldArgumentType.HIDDEN>;
29-
3023
export class ViewFieldArgumentFactory {
3124
static createViewFieldArgument(argumentIdentifier: ViewFieldArgumentType): NonNullable<ViewFieldArgumentMapType<typeof argumentIdentifier>> {
3225
if (argumentIdentifier in VIEW_FIELD_ARGUMENT_MAP) {
@@ -40,13 +33,5 @@ export class ViewFieldArgumentFactory {
4033
}
4134

4235
throw new MetaBindParsingError(ErrorLevel.ERROR, 'can not crate view field argument', `unknown argument '${argumentIdentifier}'`);
43-
44-
// if (argumentIdentifier === ViewFieldArgumentType.RENDER_MARKDOWN) {
45-
// return new RenderMarkdownViewFieldArgument();
46-
// } else if (argumentIdentifier === ViewFieldArgumentType.HIDDEN) {
47-
// return new HiddenViewFieldArgument();
48-
// } else {
49-
// throw new MetaBindParsingError(ErrorLevel.ERROR, 'can not crate view field argument', `unknown argument '${argumentIdentifier}'`);
50-
// }
5136
}
5237
}

src/inputFields/_new/InputFieldComponent.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { SvelteComponent } from 'svelte';
2-
import { Listener, Notifier } from '../../utils/Signal';
1+
import { type SvelteComponent } from 'svelte';
2+
import { type Listener, Notifier } from '../../utils/Signal';
33

44
export class InputFieldComponent<Value> extends Notifier<Value, Listener<Value>> {
55
private readonly svelteComponent: typeof SvelteComponent;
@@ -17,6 +17,7 @@ export class InputFieldComponent<Value> extends Notifier<Value, Listener<Value>>
1717
* @param value
1818
*/
1919
public setValue(value: Value): void {
20+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
2021
this.svelteComponentInstance?.setValue(value);
2122
}
2223

@@ -28,7 +29,7 @@ export class InputFieldComponent<Value> extends Notifier<Value, Listener<Value>>
2829
* @param initialValue
2930
* @param mountArgs
3031
*/
31-
public mount(container: HTMLElement, initialValue: Value, mountArgs: Record<string, any> = {}): void {
32+
public mount(container: HTMLElement, initialValue: Value, mountArgs: Record<string, unknown> = {}): void {
3233
const props = Object.assign(
3334
{
3435
value: initialValue,

src/inputFields/_new/NewAbstractInputField.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import { InputFieldMDRC } from '../../renderChildren/InputFieldMDRC';
1+
import { type InputFieldMDRC } from '../../renderChildren/InputFieldMDRC';
22
import { InputFieldComponent } from './InputFieldComponent';
3-
import { SvelteComponent } from 'svelte';
4-
import { ComputedSignal, Listener, Notifier } from '../../utils/Signal';
3+
import { type SvelteComponent } from 'svelte';
4+
import { ComputedSignal, type Listener, Notifier } from '../../utils/Signal';
55
import { InputFieldArgumentType } from '../../parsers/inputFieldParser/InputFieldConfigs';
6-
import { DefaultValueInputFieldArgument } from '../../fieldArguments/inputFieldArguments/arguments/DefaultValueInputFieldArgument';
76

87
export abstract class NewAbstractInputField<MetadataValueType, ComponentValueType> extends Notifier<MetadataValueType, Listener<MetadataValueType>> {
98
readonly renderChild: InputFieldMDRC;
@@ -103,7 +102,7 @@ export abstract class NewAbstractInputField<MetadataValueType, ComponentValueTyp
103102
}
104103

105104
private getDefaultValue(): MetadataValueType {
106-
const defaultValueArgument = this.renderChild.getArgument(InputFieldArgumentType.DEFAULT_VALUE) as DefaultValueInputFieldArgument | undefined;
105+
const defaultValueArgument = this.renderChild.getArgument(InputFieldArgumentType.DEFAULT_VALUE);
107106
if (!defaultValueArgument) {
108107
return this.mapValue(this.getFallbackDefaultValue());
109108
}

0 commit comments

Comments
 (0)