@myrmidon/gve-core 2.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/README.md +7 -16
  2. package/fesm2022/myrmidon-gve-core.mjs +833 -833
  3. package/fesm2022/myrmidon-gve-core.mjs.map +1 -1
  4. package/lib/components/animation-timeline/animation-timeline.component.d.ts +7 -10
  5. package/lib/components/animation-timeline-set/animation-timeline-set.component.d.ts +8 -11
  6. package/lib/components/animation-tween/animation-tween.component.d.ts +6 -8
  7. package/lib/components/base-text-char/base-text-char.component.d.ts +3 -6
  8. package/lib/components/base-text-editor/base-text-editor.component.d.ts +5 -7
  9. package/lib/components/base-text-view/base-text-view.component.d.ts +10 -14
  10. package/lib/components/batch-operation-editor/batch-operation-editor.component.d.ts +5 -7
  11. package/lib/components/chain-operation-editor/chain-operation-editor.component.d.ts +10 -14
  12. package/lib/components/chain-result-view/chain-result-view.component.d.ts +6 -10
  13. package/lib/components/chain-view/chain-view.component.d.ts +42 -0
  14. package/lib/components/feature-editor/feature-editor.component.d.ts +8 -12
  15. package/lib/components/feature-set-editor/feature-set-editor.component.d.ts +11 -13
  16. package/lib/components/feature-set-view/feature-set-view.component.d.ts +5 -7
  17. package/lib/components/ln-heights-editor/ln-heights-editor.component.d.ts +5 -8
  18. package/lib/components/operation-source-editor/operation-source-editor.component.d.ts +8 -11
  19. package/lib/components/snapshot-editor/snapshot-editor.component.d.ts +15 -25
  20. package/lib/components/snapshot-text-editor/snapshot-text-editor.component.d.ts +4 -6
  21. package/lib/components/steps-map/steps-map.component.d.ts +6 -10
  22. package/lib/services/gve-api.service.d.ts +37 -0
  23. package/lib/services/gve-graphviz.service.d.ts +20 -0
  24. package/package.json +2 -2
  25. package/public-api.d.ts +2 -1
  26. package/lib/components/simple-tree/simple-tree.component.d.ts +0 -35
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
2
  import { GveAnimationTimeline, GveAnimationTween } from '@myrmidon/gve-snapshot-view';
4
3
  import * as i0 from "@angular/core";
@@ -17,29 +16,27 @@ import * as i0 from "@angular/core";
17
16
  * - 🔥 `timelineCancel` (`void`): emitted when the timeline editing is canceled.
18
17
  */
19
18
  export declare class AnimationTimelineComponent {
20
- private _timeline?;
21
19
  /**
22
20
  * The animation timeline to edit.
23
21
  */
24
- get timeline(): GveAnimationTimeline | undefined;
25
- set timeline(value: GveAnimationTimeline | undefined | null);
22
+ readonly timeline: import("@angular/core").ModelSignal<GveAnimationTimeline | undefined>;
26
23
  /**
27
24
  * The IDs of the elements that can be selected by the tween.
28
25
  * This list is used to allow the user to select an element from a dropdown.
29
26
  */
30
- elementIds?: string[];
27
+ readonly elementIds: import("@angular/core").InputSignal<string[] | undefined>;
31
28
  /**
32
29
  * The tags that can be used by the timeline.
33
30
  */
34
- tags: string[];
31
+ readonly tags: import("@angular/core").InputSignal<string[]>;
35
32
  /**
36
33
  * Emitted when the timeline is changed.
37
34
  */
38
- readonly timelineChange: EventEmitter<GveAnimationTimeline>;
35
+ readonly timelineChange: import("@angular/core").OutputEmitterRef<GveAnimationTimeline>;
39
36
  /**
40
37
  * Emitted when the timeline editing is canceled.
41
38
  */
42
- readonly timelineCancel: EventEmitter<void>;
39
+ readonly timelineCancel: import("@angular/core").OutputEmitterRef<void>;
43
40
  tag: FormControl<string>;
44
41
  tweens: FormControl<GveAnimationTween[]>;
45
42
  vars: FormControl<string | null>;
@@ -53,12 +50,12 @@ export declare class AnimationTimelineComponent {
53
50
  editTween(index: number): void;
54
51
  deleteTween(index: number): void;
55
52
  closeTween(): void;
56
- saveTween(tween: GveAnimationTween): void;
53
+ saveTween(tween?: GveAnimationTween): void;
57
54
  moveTweenUp(index: number): void;
58
55
  moveTweenDown(index: number): void;
59
56
  private getTimeline;
60
57
  close(): void;
61
58
  save(): void;
62
59
  static ɵfac: i0.ɵɵFactoryDeclaration<AnimationTimelineComponent, never>;
63
- static ɵcmp: i0.ɵɵComponentDeclaration<AnimationTimelineComponent, "gve-animation-timeline", never, { "timeline": { "alias": "timeline"; "required": false; }; "elementIds": { "alias": "elementIds"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; }, { "timelineChange": "timelineChange"; "timelineCancel": "timelineCancel"; }, never, never, true, never>;
60
+ static ɵcmp: i0.ɵɵComponentDeclaration<AnimationTimelineComponent, "gve-animation-timeline", never, { "timeline": { "alias": "timeline"; "required": false; "isSignal": true; }; "elementIds": { "alias": "elementIds"; "required": false; "isSignal": true; }; "tags": { "alias": "tags"; "required": false; "isSignal": true; }; }, { "timeline": "timelineChange"; "timelineChange": "timelineChange"; "timelineCancel": "timelineCancel"; }, never, never, true, never>;
64
61
  }
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
2
  import { DialogService } from '@myrmidon/ngx-mat-tools';
4
3
  import { GveAnimationTimeline } from '@myrmidon/gve-snapshot-view';
@@ -17,30 +16,28 @@ import * as i0 from "@angular/core";
17
16
  */
18
17
  export declare class AnimationTimelineSetComponent {
19
18
  private _dialogService;
20
- private _timelines;
21
- editedTimeline?: GveAnimationTimeline;
22
19
  /**
23
20
  * The animation timelines to edit.
24
21
  */
25
- get timelines(): GveAnimationTimeline[];
26
- set timelines(value: GveAnimationTimeline[] | undefined | null);
22
+ readonly timelines: import("@angular/core").ModelSignal<GveAnimationTimeline[]>;
27
23
  /**
28
24
  * The IDs of the elements that can be selected by the tween.
29
25
  * This list is used to allow the user to select an element from a dropdown.
30
26
  */
31
- elementIds?: string[];
27
+ readonly elementIds: import("@angular/core").InputSignal<string[] | undefined>;
32
28
  /**
33
29
  * The tags that can be used by the timeline.
34
30
  */
35
- tags: string[];
31
+ readonly tags: import("@angular/core").InputSignal<string[]>;
36
32
  /**
37
33
  * Emitted when the timelines are changed.
38
34
  */
39
- readonly timelinesChange: EventEmitter<GveAnimationTimeline[]>;
35
+ readonly timelinesChange: import("@angular/core").OutputEmitterRef<GveAnimationTimeline[]>;
40
36
  /**
41
37
  * Emitted when the timeline editing is canceled.
42
38
  */
43
- readonly timelinesCancel: EventEmitter<void>;
39
+ readonly timelinesCancel: import("@angular/core").OutputEmitterRef<void>;
40
+ editedTimeline?: GveAnimationTimeline;
44
41
  set: FormControl<GveAnimationTimeline[]>;
45
42
  form: FormGroup;
46
43
  constructor(formBuilder: FormBuilder, _dialogService: DialogService);
@@ -48,8 +45,8 @@ export declare class AnimationTimelineSetComponent {
48
45
  closeTimeline(): void;
49
46
  newTimeline(): void;
50
47
  editTimeline(index: number): void;
51
- onTimelineChange(timeline: GveAnimationTimeline): void;
48
+ onTimelineChange(timeline?: GveAnimationTimeline | null): void;
52
49
  deleteTimeline(index: number): void;
53
50
  static ɵfac: i0.ɵɵFactoryDeclaration<AnimationTimelineSetComponent, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<AnimationTimelineSetComponent, "gve-animation-timeline-set", never, { "timelines": { "alias": "timelines"; "required": false; }; "elementIds": { "alias": "elementIds"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; }, { "timelinesChange": "timelinesChange"; "timelinesCancel": "timelinesCancel"; }, never, never, true, never>;
51
+ static ɵcmp: i0.ɵɵComponentDeclaration<AnimationTimelineSetComponent, "gve-animation-timeline-set", never, { "timelines": { "alias": "timelines"; "required": false; "isSignal": true; }; "elementIds": { "alias": "elementIds"; "required": false; "isSignal": true; }; "tags": { "alias": "tags"; "required": false; "isSignal": true; }; }, { "timelines": "timelinesChange"; "timelinesChange": "timelinesChange"; "timelinesCancel": "timelinesCancel"; }, never, never, true, never>;
55
52
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
3
  import { GveAnimationTween, TweenType } from '@myrmidon/gve-snapshot-view';
4
4
  import * as i0 from "@angular/core";
@@ -15,25 +15,23 @@ import * as i0 from "@angular/core";
15
15
  */
16
16
  export declare class AnimationTweenComponent implements OnInit, OnDestroy {
17
17
  private _sub?;
18
- private _tween?;
19
18
  /**
20
19
  * The tween to edit.
21
20
  */
22
- get tween(): GveAnimationTween | undefined;
23
- set tween(value: GveAnimationTween | undefined | null);
21
+ readonly tween: import("@angular/core").ModelSignal<GveAnimationTween | undefined>;
24
22
  /**
25
23
  * The IDs of the elements that can be selected by the tween.
26
24
  * This list is used to allow the user to select an element from a dropdown.
27
25
  */
28
- elementIds?: string[];
26
+ readonly elementIds: import("@angular/core").InputSignal<string[] | undefined>;
29
27
  /**
30
28
  * Emitted when the tween is changed.
31
29
  */
32
- readonly tweenChange: EventEmitter<GveAnimationTween>;
30
+ readonly tweenChange: import("@angular/core").OutputEmitterRef<GveAnimationTween>;
33
31
  /**
34
32
  * Emitted when the user cancels the edit.
35
33
  */
36
- readonly tweenCancel: EventEmitter<void>;
34
+ readonly tweenCancel: import("@angular/core").OutputEmitterRef<void>;
37
35
  types: string[];
38
36
  label: FormControl<string>;
39
37
  note: FormControl<string | null>;
@@ -56,5 +54,5 @@ export declare class AnimationTweenComponent implements OnInit, OnDestroy {
56
54
  openUrl(url: string): void;
57
55
  save(): void;
58
56
  static ɵfac: i0.ɵɵFactoryDeclaration<AnimationTweenComponent, never>;
59
- static ɵcmp: i0.ɵɵComponentDeclaration<AnimationTweenComponent, "gve-animation-tween", never, { "tween": { "alias": "tween"; "required": false; }; "elementIds": { "alias": "elementIds"; "required": false; }; }, { "tweenChange": "tweenChange"; "tweenCancel": "tweenCancel"; }, never, never, true, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<AnimationTweenComponent, "gve-animation-tween", never, { "tween": { "alias": "tween"; "required": false; "isSignal": true; }; "elementIds": { "alias": "elementIds"; "required": false; "isSignal": true; }; }, { "tween": "tweenChange"; "tweenChange": "tweenChange"; "tweenCancel": "tweenCancel"; }, never, never, true, never>;
60
58
  }
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  /**
4
3
  * A single character from a base text.
@@ -26,20 +25,18 @@ export interface BaseTextCharEvent {
26
25
  * Used by `gve-base-text-view`.
27
26
  */
28
27
  export declare class BaseTextCharComponent {
29
- private _char;
30
28
  defaultColor: string;
31
29
  defaultBorderColor: string;
32
30
  defaultEmSize: number;
33
31
  /**
34
32
  * The character to display.
35
33
  */
36
- get char(): BaseTextChar | undefined;
37
- set char(value: BaseTextChar | undefined | null);
34
+ readonly char: import("@angular/core").InputSignal<BaseTextChar | undefined>;
38
35
  /**
39
36
  * Emitted when the character is clicked.
40
37
  */
41
- charPick: EventEmitter<BaseTextCharEvent>;
38
+ readonly charPick: import("@angular/core").OutputEmitterRef<BaseTextCharEvent>;
42
39
  onCharClick(event: MouseEvent): void;
43
40
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseTextCharComponent, never>;
44
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseTextCharComponent, "gve-base-text-char", never, { "char": { "alias": "char"; "required": false; }; }, { "charPick": "charPick"; }, never, never, true, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseTextCharComponent, "gve-base-text-char", never, { "char": { "alias": "char"; "required": false; "isSignal": true; }; }, { "charPick": "charPick"; }, never, never, true, never>;
45
42
  }
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
2
  import { CharNode, Feature } from '@myrmidon/gve-snapshot-view';
4
3
  import { DialogService } from '@myrmidon/ngx-mat-tools';
@@ -16,17 +15,16 @@ import * as i0 from "@angular/core";
16
15
  */
17
16
  export declare class BaseTextEditorComponent {
18
17
  private _dialogService;
19
- private _text;
20
18
  /**
21
19
  * The text to edit. In input this can be a string, an array of `CharNode`
22
- * objects. In output this will be an array of `CharNode` objects.
20
+ * objects, or undefined. In output this will be an array of `CharNode`
21
+ * objects.
23
22
  */
24
- get text(): CharNode[];
25
- set text(value: string | CharNode[] | undefined | null);
23
+ readonly text: import("@angular/core").InputSignalWithTransform<CharNode[] | undefined, string | CharNode[] | undefined>;
26
24
  /**
27
25
  * Emitted for the edited text as an array of `CharNode`'s whenever it changes.
28
26
  */
29
- readonly textChange: EventEmitter<CharNode[]>;
27
+ readonly textChange: import("@angular/core").OutputEmitterRef<CharNode[]>;
30
28
  userText: FormControl<string>;
31
29
  form: FormGroup;
32
30
  selectedChar?: CharNode;
@@ -40,5 +38,5 @@ export declare class BaseTextEditorComponent {
40
38
  patchTextFromUser(): void;
41
39
  setTextFromUser(): void;
42
40
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseTextEditorComponent, never>;
43
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseTextEditorComponent, "gve-base-text-editor", never, { "text": { "alias": "text"; "required": false; }; }, { "textChange": "textChange"; }, never, never, true, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseTextEditorComponent, "gve-base-text-editor", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; }, { "textChange": "textChange"; }, never, never, true, never>;
44
42
  }
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { CharNode } from '@myrmidon/gve-snapshot-view';
3
2
  import { BaseTextChar, BaseTextCharEvent } from '../base-text-char/base-text-char.component';
4
3
  import * as i0 from "@angular/core";
@@ -24,50 +23,47 @@ export interface VarBaseTextRange {
24
23
  * - 🔥 `rangePick` (`VarBaseTextRange`): emitted when a range is picked.
25
24
  */
26
25
  export declare class BaseTextViewComponent {
27
- private _text;
28
26
  private _lastSelectedChar?;
29
- private _borderColorCallback?;
30
27
  /**
31
28
  * The default color for the text.
32
29
  */
33
- defaultColor: string;
30
+ readonly defaultColor: import("@angular/core").InputSignal<string>;
34
31
  /**
35
32
  * The default border color for the text.
36
33
  */
37
- defaultBorderColor: string;
34
+ readonly defaultBorderColor: import("@angular/core").InputSignal<string>;
38
35
  /**
39
36
  * The color for the selected text.
40
37
  */
41
- selectionColor: string;
38
+ readonly selectionColor: import("@angular/core").InputSignal<string>;
42
39
  /**
43
40
  * True if line numbers should be displayed next to each line.
44
41
  */
45
- hasLineNumber: boolean;
42
+ readonly hasLineNumber: import("@angular/core").InputSignal<boolean>;
46
43
  /**
47
44
  * The text to display.
48
45
  */
49
- get text(): CharNode[] | undefined;
50
- set text(value: CharNode[] | undefined | null);
46
+ readonly text: import("@angular/core").InputSignal<CharNode[]>;
51
47
  /**
52
48
  * An optional callback to get the color of a character node.
53
49
  * Return null to use the default color.
54
50
  */
55
- get borderColorCallback(): ((node: CharNode) => string | null) | undefined;
56
- set borderColorCallback(value: ((node: CharNode) => string | null) | undefined);
51
+ readonly borderColorCallback: import("@angular/core").InputSignal<((node: CharNode) => string | null) | undefined>;
57
52
  /**
58
53
  * Emitted when a character is picked.
59
54
  */
60
- charPick: EventEmitter<BaseTextCharEvent>;
55
+ readonly charPick: import("@angular/core").OutputEmitterRef<BaseTextCharEvent>;
61
56
  /**
62
57
  * Emitted when a range is picked. This is preceded by a character pick event.
63
58
  * The range is defined by the starting character and the number of characters.
64
59
  * The range is inclusive.
65
60
  */
66
- rangePick: EventEmitter<VarBaseTextRange>;
61
+ readonly rangePick: import("@angular/core").OutputEmitterRef<VarBaseTextRange>;
67
62
  lines: BaseTextChar[][];
63
+ constructor();
68
64
  private buildLines;
69
65
  private resetColors;
70
66
  onCharPick(event: BaseTextCharEvent): void;
71
67
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseTextViewComponent, never>;
72
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseTextViewComponent, "gve-base-text-view", never, { "defaultColor": { "alias": "defaultColor"; "required": false; }; "defaultBorderColor": { "alias": "defaultBorderColor"; "required": false; }; "selectionColor": { "alias": "selectionColor"; "required": false; }; "hasLineNumber": { "alias": "hasLineNumber"; "required": false; }; "text": { "alias": "text"; "required": false; }; "borderColorCallback": { "alias": "borderColorCallback"; "required": false; }; }, { "charPick": "charPick"; "rangePick": "rangePick"; }, never, never, true, never>;
68
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseTextViewComponent, "gve-base-text-view", never, { "defaultColor": { "alias": "defaultColor"; "required": false; "isSignal": true; }; "defaultBorderColor": { "alias": "defaultBorderColor"; "required": false; "isSignal": true; }; "selectionColor": { "alias": "selectionColor"; "required": false; "isSignal": true; }; "hasLineNumber": { "alias": "hasLineNumber"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "borderColorCallback": { "alias": "borderColorCallback"; "required": false; "isSignal": true; }; }, { "charPick": "charPick"; "rangePick": "rangePick"; }, never, never, true, never>;
73
69
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
1
+ import { OnInit } from '@angular/core';
2
2
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
3
  import { MatDialogRef } from '@angular/material/dialog';
4
4
  import { CharChainOperation } from '@myrmidon/gve-snapshot-view';
@@ -20,7 +20,6 @@ export declare class BatchOperationEditorComponent implements OnInit {
20
20
  data?: PayloadMatDialogConfig<{
21
21
  preset?: string;
22
22
  }> | undefined;
23
- private _preset?;
24
23
  busy?: boolean;
25
24
  parseError?: string;
26
25
  text: FormControl<string | null>;
@@ -29,18 +28,17 @@ export declare class BatchOperationEditorComponent implements OnInit {
29
28
  * The preset text to parse if any. Usually you start with a blank
30
29
  * text, but sometimes you might want to pre-set it.
31
30
  */
32
- get preset(): string | undefined | null;
33
- set preset(value: string | undefined | null);
31
+ readonly preset: import("@angular/core").InputSignal<string | undefined>;
34
32
  /**
35
33
  * Emitted when operations change.
36
34
  */
37
- readonly operationsChange: EventEmitter<CharChainOperation[]>;
35
+ readonly operationsChange: import("@angular/core").OutputEmitterRef<CharChainOperation[]>;
38
36
  constructor(formBuilder: FormBuilder, _api: GveApiService, dialogRef?: MatDialogRef<BatchOperationEditorComponent> | undefined, data?: PayloadMatDialogConfig<{
39
37
  preset?: string;
40
38
  }> | undefined);
41
39
  ngOnInit(): void;
42
- parseOperations(): void;
40
+ parseOperations(text?: string): void;
43
41
  close(): void;
44
42
  static ɵfac: i0.ɵɵFactoryDeclaration<BatchOperationEditorComponent, [null, null, { optional: true; }, { optional: true; }]>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<BatchOperationEditorComponent, "gve-batch-operation-editor", never, { "preset": { "alias": "preset"; "required": false; }; }, { "operationsChange": "operationsChange"; }, never, never, true, never>;
43
+ static ɵcmp: i0.ɵɵComponentDeclaration<BatchOperationEditorComponent, "gve-batch-operation-editor", never, { "preset": { "alias": "preset"; "required": false; "isSignal": true; }; }, { "operationsChange": "operationsChange"; }, never, never, true, never>;
46
44
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
3
  import { Clipboard } from '@angular/cdk/clipboard';
4
4
  import { DialogService } from '@myrmidon/ngx-mat-tools';
@@ -60,39 +60,35 @@ export declare class ChainOperationEditorComponent implements OnInit, OnDestroy
60
60
  private _settings;
61
61
  private _dialogService;
62
62
  private readonly _disposables;
63
- private _editorModel?;
64
- private _editor?;
65
63
  private readonly _subs;
66
64
  private readonly _nanoid;
67
- private _operation;
65
+ private _editorModel?;
66
+ private _editor?;
68
67
  private _editedSourceIndex;
69
- private _snapshot;
70
68
  /**
71
69
  * The operation to edit.
72
70
  */
73
- get operation(): CharChainOperation | undefined | null;
74
- set operation(value: CharChainOperation | undefined);
71
+ readonly operation: import("@angular/core").ModelSignal<CharChainOperation | undefined>;
75
72
  /**
76
73
  * The snapshot the operation refers to.
77
74
  */
78
- get snapshot(): SnapshotBase | undefined;
79
- set snapshot(value: SnapshotBase | undefined | null);
75
+ readonly snapshot: import("@angular/core").InputSignal<SnapshotBase | undefined>;
80
76
  /**
81
77
  * Whether to hide the preview request button.
82
78
  */
83
- hidePreview?: boolean;
79
+ readonly hidePreview: import("@angular/core").InputSignal<boolean | undefined>;
84
80
  /**
85
81
  * Emitted when the operation is changed.
86
82
  */
87
- readonly operationChange: EventEmitter<CharChainOperation>;
83
+ readonly operationChange: import("@angular/core").OutputEmitterRef<CharChainOperation>;
88
84
  /**
89
85
  * Emitted when the operation preview is requested.
90
86
  */
91
- readonly operationPreview: EventEmitter<CharChainOperation>;
87
+ readonly operationPreview: import("@angular/core").OutputEmitterRef<CharChainOperation>;
92
88
  /**
93
89
  * Emitted when operation editing is cancelled.
94
90
  */
95
- readonly operationCancel: EventEmitter<void>;
91
+ readonly operationCancel: import("@angular/core").OutputEmitterRef<void>;
96
92
  tabIndex: number;
97
93
  id?: string;
98
94
  hasTo: boolean;
@@ -149,5 +145,5 @@ export declare class ChainOperationEditorComponent implements OnInit, OnDestroy
149
145
  requestPreview(): void;
150
146
  save(): void;
151
147
  static ɵfac: i0.ɵɵFactoryDeclaration<ChainOperationEditorComponent, never>;
152
- static ɵcmp: i0.ɵɵComponentDeclaration<ChainOperationEditorComponent, "gve-chain-operation-editor", never, { "operation": { "alias": "operation"; "required": false; }; "snapshot": { "alias": "snapshot"; "required": false; }; "hidePreview": { "alias": "hidePreview"; "required": false; }; }, { "operationChange": "operationChange"; "operationPreview": "operationPreview"; "operationCancel": "operationCancel"; }, never, never, true, never>;
148
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChainOperationEditorComponent, "gve-chain-operation-editor", never, { "operation": { "alias": "operation"; "required": false; "isSignal": true; }; "snapshot": { "alias": "snapshot"; "required": false; "isSignal": true; }; "hidePreview": { "alias": "hidePreview"; "required": false; "isSignal": true; }; }, { "operation": "operationChange"; "operationChange": "operationChange"; "operationPreview": "operationPreview"; "operationCancel": "operationCancel"; }, never, never, true, never>;
153
149
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormBuilder, FormControl } from '@angular/forms';
3
3
  import { CharNode, OperationFeature } from '@myrmidon/gve-snapshot-view';
4
4
  import { VarBaseTextRange } from '../base-text-view/base-text-view.component';
@@ -20,23 +20,19 @@ import * as i0 from "@angular/core";
20
20
  */
21
21
  export declare class ChainResultViewComponent implements OnInit, OnDestroy {
22
22
  private _subs?;
23
- private _result?;
24
- private _initialStepIndex?;
25
23
  /**
26
24
  * The result to display.
27
25
  */
28
- get result(): CharChainResult | undefined;
29
- set result(value: CharChainResult | undefined | null);
26
+ readonly result: import("@angular/core").InputSignal<CharChainResult | undefined>;
30
27
  /**
31
28
  * The index of the initial step to display after the result is set.
32
29
  * If the index is negative, it is counted from the end of the steps.
33
30
  */
34
- get initialStepIndex(): number | undefined;
35
- set initialStepIndex(value: number | undefined | null);
31
+ readonly initialStepIndex: import("@angular/core").InputSignal<number | undefined>;
36
32
  /**
37
33
  * Emitted when a result's step is picked by the user.
38
34
  */
39
- stepPick: EventEmitter<ChainOperationContextStep>;
35
+ readonly stepPick: import("@angular/core").OutputEmitterRef<ChainOperationContextStep>;
40
36
  versionTags: string[];
41
37
  tags: string[];
42
38
  versionTag: FormControl<string | null>;
@@ -56,7 +52,7 @@ export declare class ChainResultViewComponent implements OnInit, OnDestroy {
56
52
  private findNode;
57
53
  onStepCharPick(event: BaseTextCharEvent): void;
58
54
  onStepRangePick(range: VarBaseTextRange): void;
59
- onStepChange(step: ChainOperationContextStep): void;
55
+ onStepChange(step?: ChainOperationContextStep): void;
60
56
  static ɵfac: i0.ɵɵFactoryDeclaration<ChainResultViewComponent, never>;
61
- static ɵcmp: i0.ɵɵComponentDeclaration<ChainResultViewComponent, "gve-chain-result-view", never, { "result": { "alias": "result"; "required": false; }; "initialStepIndex": { "alias": "initialStepIndex"; "required": false; }; }, { "stepPick": "stepPick"; }, never, never, true, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChainResultViewComponent, "gve-chain-result-view", never, { "result": { "alias": "result"; "required": false; "isSignal": true; }; "initialStepIndex": { "alias": "initialStepIndex"; "required": false; "isSignal": true; }; }, { "stepPick": "stepPick"; }, never, never, true, never>;
62
58
  }
@@ -0,0 +1,42 @@
1
+ import { OnDestroy } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { MatSnackBar } from '@angular/material/snack-bar';
4
+ import { Clipboard } from '@angular/cdk/clipboard';
5
+ import { GraphvizRankdir, GveGraphvizService } from '../../services/gve-graphviz.service';
6
+ import { CharChain } from '../../services/gve-api.service';
7
+ import { SettingsService } from '../../services/settings.service';
8
+ import * as i0 from "@angular/core";
9
+ export declare class ChainViewComponent implements OnDestroy {
10
+ private _graphviz;
11
+ private _settings;
12
+ private _clipboard;
13
+ private _snackbar;
14
+ private readonly _sub?;
15
+ /**
16
+ * The chain to display.
17
+ */
18
+ readonly chain: import("@angular/core").InputSignal<CharChain | undefined>;
19
+ /**
20
+ * The direction of the graph.
21
+ */
22
+ readonly direction: import("@angular/core").InputSignal<GraphvizRankdir>;
23
+ /**
24
+ * All the distinct tags in the chain.
25
+ */
26
+ readonly tags: import("@angular/core").Signal<string[]>;
27
+ /**
28
+ * The tags to show, or empty to show all of them.
29
+ */
30
+ readonly selectedTags: import("@angular/core").ModelSignal<string[]>;
31
+ /**
32
+ * The Graphviz representation of the chain.
33
+ */
34
+ readonly graph: import("@angular/core").Signal<string>;
35
+ userTags: FormControl<string[]>;
36
+ constructor(_graphviz: GveGraphvizService, _settings: SettingsService, _clipboard: Clipboard, _snackbar: MatSnackBar);
37
+ ngOnDestroy(): void;
38
+ copyGraph(): void;
39
+ openExternalEditor(): void;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChainViewComponent, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChainViewComponent, "gve-chain-view", never, { "chain": { "alias": "chain"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "selectedTags": { "alias": "selectedTags"; "required": false; "isSignal": true; }; }, { "selectedTags": "selectedTagsChange"; }, never, never, true, never>;
42
+ }
@@ -1,4 +1,4 @@
1
- import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { ElementRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
3
  import { Feature, FeatureSetPolicy, LabeledId, OperationFeature } from '@myrmidon/gve-snapshot-view';
4
4
  import * as i0 from "@angular/core";
@@ -32,40 +32,36 @@ export interface FeatureMap {
32
32
  */
33
33
  export declare class FeatureEditorComponent implements OnInit, OnDestroy {
34
34
  private _sub?;
35
- private _feature?;
36
- private _map?;
37
35
  private _frozen?;
38
36
  nameControl?: ElementRef;
39
37
  /**
40
38
  * The list of feature names to display in the name selection.
41
39
  * This is used when you have a closed list of features.
42
40
  */
43
- featNames: LabeledId[] | undefined;
41
+ readonly featNames: import("@angular/core").InputSignal<LabeledId[] | undefined>;
44
42
  /**
45
43
  * The feature values map. When specified and the user selects a feature
46
44
  * name present in the map keys, the corresponding values will be used
47
45
  * to populate the value selection.
48
46
  */
49
- get featValues(): FeatureMap | undefined;
50
- set featValues(value: FeatureMap | undefined | null);
47
+ readonly featValues: import("@angular/core").InputSignal<FeatureMap | undefined>;
51
48
  /**
52
49
  * The feature to edit.
53
50
  */
54
- get feature(): Feature | OperationFeature | undefined;
55
- set feature(value: Feature | OperationFeature | undefined | null);
51
+ readonly feature: import("@angular/core").ModelSignal<Feature | OperationFeature | undefined>;
56
52
  /**
57
53
  * True if the feature is a variant operation feature, which has
58
54
  * additional properties like negation, global, and short-lived.
59
55
  */
60
- isVar: boolean;
56
+ readonly isVar: import("@angular/core").InputSignal<boolean>;
61
57
  /**
62
58
  * Event emitted when the user cancels the feature editing.
63
59
  */
64
- featureCancel: EventEmitter<void>;
60
+ readonly featureCancel: import("@angular/core").OutputEmitterRef<void>;
65
61
  /**
66
62
  * Event emitted when the user saves the edited feature.
67
63
  */
68
- featureChange: EventEmitter<OperationFeature | Feature>;
64
+ readonly featureChange: import("@angular/core").OutputEmitterRef<Feature | OperationFeature>;
69
65
  name: FormControl<string>;
70
66
  value: FormControl<string>;
71
67
  setPolicy: FormControl<FeatureSetPolicy>;
@@ -82,5 +78,5 @@ export declare class FeatureEditorComponent implements OnInit, OnDestroy {
82
78
  cancel(): void;
83
79
  save(): void;
84
80
  static ɵfac: i0.ɵɵFactoryDeclaration<FeatureEditorComponent, never>;
85
- static ɵcmp: i0.ɵɵComponentDeclaration<FeatureEditorComponent, "gve-feature-editor", never, { "featNames": { "alias": "featNames"; "required": false; }; "featValues": { "alias": "featValues"; "required": false; }; "feature": { "alias": "feature"; "required": false; }; "isVar": { "alias": "isVar"; "required": false; }; }, { "featureCancel": "featureCancel"; "featureChange": "featureChange"; }, never, never, true, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<FeatureEditorComponent, "gve-feature-editor", never, { "featNames": { "alias": "featNames"; "required": false; "isSignal": true; }; "featValues": { "alias": "featValues"; "required": false; "isSignal": true; }; "feature": { "alias": "feature"; "required": false; "isSignal": true; }; "isVar": { "alias": "isVar"; "required": false; "isSignal": true; }; }, { "feature": "featureChange"; "featureCancel": "featureCancel"; "featureChange": "featureChange"; }, never, never, true, never>;
86
82
  }
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnDestroy, OnInit } from '@angular/core';
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormBuilder, FormControl } from '@angular/forms';
3
3
  import { LabeledId, Feature, OperationFeature } from '@myrmidon/gve-snapshot-view';
4
4
  import { FeatureMap } from '../feature-editor/feature-editor.component';
@@ -19,7 +19,7 @@ import * as i0 from "@angular/core";
19
19
  * - ▶️ `filterThreshold` (`number`): the threshold at which the features filter
20
20
  * should become visible. If set to 0, the filter is always visible; if set to -1,
21
21
  * it is always invisible; otherwise, it gets visible when the number of features
22
- * is greater than the threshold. Default is 5.
22
+ * is equal to or greater than the threshold. Default is 5.
23
23
  * - ▶️ `features` (`Feature[]`): the features to edit.
24
24
  * - ▶️ `isVar`: true if the feature is a variant operation feature, which
25
25
  * has additional properties like negation, global, and short-lived.
@@ -27,40 +27,38 @@ import * as i0 from "@angular/core";
27
27
  */
28
28
  export declare class FeatureSetEditorComponent implements OnInit, OnDestroy {
29
29
  private _sub?;
30
- private _features;
31
30
  private _editedFeatureIndex;
32
31
  POLICIES: string[];
33
32
  /**
34
33
  * True if the features are variable features.
35
34
  */
36
- isVar: boolean;
35
+ readonly isVar: import("@angular/core").InputSignal<boolean>;
37
36
  /**
38
37
  * The list of feature names to display in the name selection.
39
38
  * This is used when you have a closed list of features.
40
39
  */
41
- featNames: LabeledId[] | undefined;
40
+ readonly featNames: import("@angular/core").InputSignal<LabeledId[] | undefined>;
42
41
  /**
43
42
  * The feature values map. When specified and the user selects a feature
44
43
  * name present in the map keys, the corresponding values will be used
45
44
  * to populate the value selection.
46
45
  */
47
- featValues: FeatureMap | undefined;
46
+ readonly featValues: import("@angular/core").InputSignal<FeatureMap | undefined>;
48
47
  /**
49
48
  * The threshold at which the features filter should become visible.
50
49
  * If set to 0, the filter is always visible; if set to -1, it is always
51
50
  * invisible; otherwise, it gets visible when the number of features
52
- * is greater than the threshold. Default is 5.
51
+ * is greater than or equal to the threshold. Default is 5.
53
52
  */
54
- filterThreshold: number;
53
+ readonly filterThreshold: import("@angular/core").InputSignal<number>;
55
54
  /**
56
55
  * The features to edit.
57
56
  */
58
- get features(): Feature[] | OperationFeature[];
59
- set features(value: Feature[] | OperationFeature[]);
57
+ readonly features: import("@angular/core").ModelSignal<Feature[] | OperationFeature[]>;
60
58
  /**
61
59
  * Emitted when the features change.
62
60
  */
63
- featuresChange: EventEmitter<Feature[] | OperationFeature[]>;
61
+ readonly featuresChange: import("@angular/core").OutputEmitterRef<Feature[] | OperationFeature[]>;
64
62
  editedFeature?: Feature | OperationFeature;
65
63
  filter: FormControl<string | null>;
66
64
  filteredFeatures: Feature[] | OperationFeature[];
@@ -71,8 +69,8 @@ export declare class FeatureSetEditorComponent implements OnInit, OnDestroy {
71
69
  addFeature(): void;
72
70
  editFeature(feature: Feature | OperationFeature): void;
73
71
  deleteFeature(feature: Feature | OperationFeature): void;
74
- onFeatureChange(feature: Feature | OperationFeature): void;
72
+ onFeatureChange(feature?: Feature | OperationFeature): void;
75
73
  onFeatureCancel(): void;
76
74
  static ɵfac: i0.ɵɵFactoryDeclaration<FeatureSetEditorComponent, never>;
77
- static ɵcmp: i0.ɵɵComponentDeclaration<FeatureSetEditorComponent, "gve-feature-set-editor", never, { "isVar": { "alias": "isVar"; "required": false; }; "featNames": { "alias": "featNames"; "required": false; }; "featValues": { "alias": "featValues"; "required": false; }; "filterThreshold": { "alias": "filterThreshold"; "required": false; }; "features": { "alias": "features"; "required": false; }; }, { "featuresChange": "featuresChange"; }, never, never, true, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<FeatureSetEditorComponent, "gve-feature-set-editor", never, { "isVar": { "alias": "isVar"; "required": false; "isSignal": true; }; "featNames": { "alias": "featNames"; "required": false; "isSignal": true; }; "featValues": { "alias": "featValues"; "required": false; "isSignal": true; }; "filterThreshold": { "alias": "filterThreshold"; "required": false; "isSignal": true; }; "features": { "alias": "features"; "required": false; "isSignal": true; }; }, { "features": "featuresChange"; "featuresChange": "featuresChange"; }, never, never, true, never>;
78
76
  }