@myrmidon/gve-core 2.0.0 → 3.0.3

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 +843 -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 +17 -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
@@ -21,30 +21,28 @@ import * as i0 from "@angular/core";
21
21
  */
22
22
  export declare class FeatureSetViewComponent {
23
23
  private _sub?;
24
- private _features;
25
24
  /**
26
25
  * The features.
27
26
  */
28
- get features(): Feature[] | OperationFeature[];
29
- set features(value: Feature[] | OperationFeature[]);
27
+ readonly features: import("@angular/core").InputSignal<Feature[] | OperationFeature[]>;
30
28
  /**
31
29
  * The list of feature names to display in the name selection.
32
30
  * This is used when you have a closed list of features.
33
31
  */
34
- featNames: LabeledId[] | undefined;
32
+ readonly featNames: import("@angular/core").InputSignal<LabeledId[] | undefined>;
35
33
  /**
36
34
  * The feature values map. When specified and the user selects a feature
37
35
  * name present in the map keys, the corresponding values will be used
38
36
  * to populate the value selection.
39
37
  */
40
- featValues: FeatureMap | undefined;
38
+ readonly featValues: import("@angular/core").InputSignal<FeatureMap | undefined>;
41
39
  /**
42
40
  * The threshold at which the features filter should become visible.
43
41
  * If set to 0, the filter is always visible; if set to -1, it is always
44
42
  * invisible; otherwise, it gets visible when the number of features
45
43
  * is greater than the threshold. Default is 5.
46
44
  */
47
- filterThreshold: number;
45
+ readonly filterThreshold: import("@angular/core").InputSignal<number>;
48
46
  filter: FormControl<string | null>;
49
47
  filteredFeatures: Feature[] | OperationFeature[];
50
48
  constructor(formBuilder: FormBuilder);
@@ -52,5 +50,5 @@ export declare class FeatureSetViewComponent {
52
50
  ngOnInit(): void;
53
51
  ngOnDestroy(): void;
54
52
  static ɵfac: i0.ɵɵFactoryDeclaration<FeatureSetViewComponent, never>;
55
- static ɵcmp: i0.ɵɵComponentDeclaration<FeatureSetViewComponent, "gve-feature-set-view", never, { "features": { "alias": "features"; "required": false; }; "featNames": { "alias": "featNames"; "required": false; }; "featValues": { "alias": "featValues"; "required": false; }; "filterThreshold": { "alias": "filterThreshold"; "required": false; }; }, {}, never, never, true, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<FeatureSetViewComponent, "gve-feature-set-view", never, { "features": { "alias": "features"; "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; }; }, {}, never, never, true, never>;
56
54
  }
@@ -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 * as i0 from "@angular/core";
4
4
  /**
@@ -15,24 +15,21 @@ import * as i0 from "@angular/core";
15
15
  export declare class LnHeightsEditorComponent implements OnInit, OnDestroy {
16
16
  private _subs?;
17
17
  private _heights?;
18
- private _lineCount;
19
18
  lineNumber: FormControl<number>;
20
19
  height: FormControl<number>;
21
20
  /**
22
21
  * The total number of lines in the text.
23
22
  */
24
- get lineCount(): number;
25
- set lineCount(value: number);
23
+ readonly lineCount: import("@angular/core").InputSignal<number>;
26
24
  /**
27
25
  * The heights map of the lines. Each key is a line number and the value is
28
26
  * the height of the line.
29
27
  */
30
- get heights(): Record<number, number> | undefined;
31
- set heights(value: Record<number, number> | undefined | null);
28
+ readonly heights: import("@angular/core").InputSignal<Record<number, number> | undefined>;
32
29
  /**
33
30
  * The event emitted when the heights change.
34
31
  */
35
- readonly heightsChange: EventEmitter<Record<number, number> | undefined>;
32
+ readonly heightsChange: import("@angular/core").OutputEmitterRef<Record<number, number> | undefined>;
36
33
  lineNumbers: number[];
37
34
  constructor(formBuilder: FormBuilder);
38
35
  private pruneHeights;
@@ -40,5 +37,5 @@ export declare class LnHeightsEditorComponent implements OnInit, OnDestroy {
40
37
  ngOnDestroy(): void;
41
38
  reset(): void;
42
39
  static ɵfac: i0.ɵɵFactoryDeclaration<LnHeightsEditorComponent, never>;
43
- static ɵcmp: i0.ɵɵComponentDeclaration<LnHeightsEditorComponent, "gve-ln-heights-editor", never, { "lineCount": { "alias": "lineCount"; "required": false; }; "heights": { "alias": "heights"; "required": false; }; }, { "heightsChange": "heightsChange"; }, never, never, true, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<LnHeightsEditorComponent, "gve-ln-heights-editor", never, { "lineCount": { "alias": "lineCount"; "required": false; "isSignal": true; }; "heights": { "alias": "heights"; "required": false; "isSignal": true; }; }, { "heightsChange": "heightsChange"; }, never, never, true, never>;
44
41
  }
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
2
  import { LabeledId, OperationSource } from '@myrmidon/gve-snapshot-view';
4
3
  import * as i0 from "@angular/core";
@@ -19,28 +18,26 @@ import * as i0 from "@angular/core";
19
18
  * edit is canceled.
20
19
  */
21
20
  export declare class OperationSourceEditorComponent {
22
- private _source;
23
21
  /**
24
22
  * The source to edit.
25
23
  */
26
- get source(): OperationSource | undefined;
27
- set source(value: OperationSource | undefined | null);
24
+ readonly source: import("@angular/core").ModelSignal<OperationSource | undefined>;
28
25
  /**
29
- * The list of source IDs when it's closed.
26
+ * The list of source IDs when it's a closed set.
30
27
  */
31
- ids?: LabeledId[];
28
+ readonly ids: import("@angular/core").InputSignal<LabeledId[] | undefined>;
32
29
  /**
33
- * The list of source types when it's closed.
30
+ * The list of source types when it's a closed set.
34
31
  */
35
- types?: LabeledId[];
32
+ readonly types: import("@angular/core").InputSignal<LabeledId[] | undefined>;
36
33
  /**
37
34
  * The event emitted when the source changes.
38
35
  */
39
- readonly sourceChange: EventEmitter<OperationSource | undefined>;
36
+ readonly sourceChange: import("@angular/core").OutputEmitterRef<OperationSource | undefined>;
40
37
  /**
41
38
  * The event emitted when the edit is canceled.
42
39
  */
43
- sourceCancel: EventEmitter<void>;
40
+ sourceCancel: import("@angular/core").OutputEmitterRef<void>;
44
41
  id: FormControl<string>;
45
42
  type: FormControl<string>;
46
43
  rank: FormControl<number>;
@@ -51,5 +48,5 @@ export declare class OperationSourceEditorComponent {
51
48
  cancel(): void;
52
49
  save(): void;
53
50
  static ɵfac: i0.ɵɵFactoryDeclaration<OperationSourceEditorComponent, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<OperationSourceEditorComponent, "gve-operation-source-editor", never, { "source": { "alias": "source"; "required": false; }; "ids": { "alias": "ids"; "required": false; }; "types": { "alias": "types"; "required": false; }; }, { "sourceChange": "sourceChange"; "sourceCancel": "sourceCancel"; }, never, never, true, never>;
51
+ static ɵcmp: i0.ɵɵComponentDeclaration<OperationSourceEditorComponent, "gve-operation-source-editor", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "ids": { "alias": "ids"; "required": false; "isSignal": true; }; "types": { "alias": "types"; "required": false; "isSignal": true; }; }, { "source": "sourceChange"; "sourceChange": "sourceChange"; "sourceCancel": "sourceCancel"; }, never, never, true, never>;
55
52
  }
@@ -1,11 +1,11 @@
1
- import { ElementRef, EventEmitter } from '@angular/core';
1
+ import { ElementRef } from '@angular/core';
2
2
  import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
3
3
  import { MatSnackBar } from '@angular/material/snack-bar';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
5
  import { DialogService } from '@myrmidon/ngx-mat-tools';
6
6
  import { CharChainOperation, CharNode, GveAnimationTimeline, GveVisualEvent, Snapshot, SnapshotViewComponent, SnapshotViewData, SnapshotViewRenderEvent } from '@myrmidon/gve-snapshot-view';
7
7
  import { VarBaseTextRange } from '../base-text-view/base-text-view.component';
8
- import { ChainOperationContextStep, CharChainResult, GveApiService } from '../../services/gve-api.service';
8
+ import { ChainOperationContextStep, CharChain, CharChainResult, GveApiService } from '../../services/gve-api.service';
9
9
  import * as i0 from "@angular/core";
10
10
  /**
11
11
  * 🔑 `gve-snapshot-editor`
@@ -25,37 +25,37 @@ export declare class SnapshotEditorComponent {
25
25
  private _dialogService;
26
26
  private _snackbar;
27
27
  private readonly _nanoid;
28
- private _snapshot?;
29
28
  private _renderer?;
30
29
  private _previewing?;
31
30
  private _transparentIds?;
32
31
  private _stepPickFrozen?;
32
+ private _handlingOver?;
33
+ private _lastOverId?;
33
34
  snapshotView?: ElementRef<SnapshotViewComponent>;
34
35
  /**
35
36
  * The snapshot to edit.
36
37
  */
37
- get snapshot(): Snapshot | undefined;
38
- set snapshot(value: Snapshot | undefined | null);
38
+ readonly snapshot: import("@angular/core").ModelSignal<Snapshot | undefined>;
39
39
  /**
40
40
  * The batch operations text to set for the editor.
41
41
  */
42
- batchOps?: string;
42
+ readonly batchOps: import("@angular/core").InputSignal<string | undefined>;
43
43
  /**
44
44
  * True to disable saving.
45
45
  */
46
- noSave?: boolean;
46
+ readonly noSave: import("@angular/core").InputSignal<boolean | undefined>;
47
47
  /**
48
48
  * True to enable debug mode for view rendition.
49
49
  */
50
- debug?: boolean;
50
+ readonly debug: import("@angular/core").InputSignal<boolean | undefined>;
51
51
  /**
52
52
  * Emitted when the user saves the edited snapshot.
53
53
  */
54
- readonly snapshotChange: EventEmitter<Snapshot>;
54
+ readonly snapshotChange: import("@angular/core").OutputEmitterRef<Snapshot>;
55
55
  /**
56
56
  * Emitted when the user cancels the snapshot editing.
57
57
  */
58
- readonly snapshotCancel: EventEmitter<void>;
58
+ readonly snapshotCancel: import("@angular/core").OutputEmitterRef<void>;
59
59
  width: FormControl<number>;
60
60
  height: FormControl<number>;
61
61
  style: FormControl<string | null>;
@@ -103,6 +103,8 @@ export declare class SnapshotEditorComponent {
103
103
  result?: CharChainResult;
104
104
  resultOperationId?: string;
105
105
  initialStepIndex: number;
106
+ readonly showChain: FormControl<boolean>;
107
+ chain?: CharChain;
106
108
  constructor(formBuilder: FormBuilder, _api: GveApiService, _dialog: MatDialog, _dialogService: DialogService, _snackbar: MatSnackBar);
107
109
  /**
108
110
  * Set the view data for the snapshot view.
@@ -123,7 +125,7 @@ export declare class SnapshotEditorComponent {
123
125
  * Handle the event fired by the base text editor to pick a text range.
124
126
  * @param range The picked range.
125
127
  */
126
- onRangePick(range: VarBaseTextRange): void;
128
+ onRangePick(range?: VarBaseTextRange): void;
127
129
  /**
128
130
  * Update the lists of operation output tags and element IDs by collecting
129
131
  * all the operation tags and the IDs of the elements in their diplomatic.g
@@ -154,7 +156,7 @@ export declare class SnapshotEditorComponent {
154
156
  * was a new operation.
155
157
  * @param op The changed operation.
156
158
  */
157
- onOperationChange(op: CharChainOperation): void;
159
+ onOperationChange(op?: CharChainOperation | null): void;
158
160
  /**
159
161
  * Delete the operation at the specified index.
160
162
  * @param index The index of the operation to delete.
@@ -224,6 +226,7 @@ export declare class SnapshotEditorComponent {
224
226
  * all the operations, as users must be able to browse across its steps.
225
227
  */
226
228
  runToLast(): void;
229
+ getChainAt(index: number, lastOperation?: CharChainOperation): void;
227
230
  /**
228
231
  * Update the snapshot view by running the operations up to the
229
232
  * currently edited operation if any.
@@ -231,17 +234,6 @@ export declare class SnapshotEditorComponent {
231
234
  * @param operation The operation being previewed.
232
235
  */
233
236
  onOperationPreview(operation: CharChainOperation): void;
234
- /**
235
- * Build the snapshot at the specified execution step. This implies adding
236
- * the nodes introduced by the operations up to the specified step, and
237
- * updating the features of the nodes introduced by the specified step.
238
- * Also, the operations after the specified step are removed from the
239
- * snapshot.
240
- *
241
- * @param step The step to build the snapshot at.
242
- * @returns The snapshot at the specified step.
243
- */
244
- private buildSnapshotAtStep;
245
237
  private playTimeline;
246
238
  /**
247
239
  * Handle the event fired by the chain result view to pick a step.
@@ -266,7 +258,7 @@ export declare class SnapshotEditorComponent {
266
258
  *
267
259
  * @param timelines The timelines.
268
260
  */
269
- onTimelinesChange(timelines: GveAnimationTimeline[]): void;
261
+ onTimelinesChange(timelines?: GveAnimationTimeline[] | null): void;
270
262
  /**
271
263
  * Emit the cancel event for this snapshot edit.
272
264
  */
@@ -297,5 +289,5 @@ export declare class SnapshotEditorComponent {
297
289
  */
298
290
  save(): void;
299
291
  static ɵfac: i0.ɵɵFactoryDeclaration<SnapshotEditorComponent, never>;
300
- static ɵcmp: i0.ɵɵComponentDeclaration<SnapshotEditorComponent, "gve-snapshot-editor", never, { "snapshot": { "alias": "snapshot"; "required": false; }; "batchOps": { "alias": "batchOps"; "required": false; }; "noSave": { "alias": "noSave"; "required": false; }; "debug": { "alias": "debug"; "required": false; }; }, { "snapshotChange": "snapshotChange"; "snapshotCancel": "snapshotCancel"; }, never, never, true, never>;
292
+ static ɵcmp: i0.ɵɵComponentDeclaration<SnapshotEditorComponent, "gve-snapshot-editor", never, { "snapshot": { "alias": "snapshot"; "required": false; "isSignal": true; }; "batchOps": { "alias": "batchOps"; "required": false; "isSignal": true; }; "noSave": { "alias": "noSave"; "required": false; "isSignal": true; }; "debug": { "alias": "debug"; "required": false; "isSignal": true; }; }, { "snapshot": "snapshotChange"; "snapshotChange": "snapshotChange"; "snapshotCancel": "snapshotCancel"; }, never, never, true, never>;
301
293
  }
@@ -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 { CharNode } from '@myrmidon/gve-snapshot-view';
@@ -18,15 +18,13 @@ export declare class SnapshotTextEditorComponent implements OnInit {
18
18
  data?: PayloadMatDialogConfig<{
19
19
  text?: CharNode[];
20
20
  }> | undefined;
21
- private _nodes;
22
21
  userText: FormControl<string>;
23
22
  form: FormGroup;
24
- get text(): CharNode[];
25
- set text(value: CharNode[] | undefined | null);
23
+ readonly text: import("@angular/core").ModelSignal<CharNode[]>;
26
24
  /**
27
25
  * Emitted when text changes.
28
26
  */
29
- readonly textChange: EventEmitter<CharNode[]>;
27
+ readonly textChange: import("@angular/core").OutputEmitterRef<CharNode[]>;
30
28
  constructor(formBuilder: FormBuilder, dialogRef?: MatDialogRef<SnapshotTextEditorComponent> | undefined, data?: PayloadMatDialogConfig<{
31
29
  text?: CharNode[];
32
30
  }> | undefined);
@@ -35,5 +33,5 @@ export declare class SnapshotTextEditorComponent implements OnInit {
35
33
  close(): void;
36
34
  save(): void;
37
35
  static ɵfac: i0.ɵɵFactoryDeclaration<SnapshotTextEditorComponent, [null, { optional: true; }, { optional: true; }]>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<SnapshotTextEditorComponent, "gve-snapshot-text-editor", never, { "text": { "alias": "text"; "required": false; }; }, { "textChange": "textChange"; }, never, never, true, never>;
36
+ static ɵcmp: i0.ɵɵComponentDeclaration<SnapshotTextEditorComponent, "gve-snapshot-text-editor", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; }, { "text": "textChange"; "textChange": "textChange"; }, never, never, true, never>;
39
37
  }
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import { ChainOperationContextStep } from '../../services/gve-api.service';
3
2
  import * as i0 from "@angular/core";
4
3
  /**
@@ -21,32 +20,29 @@ import * as i0 from "@angular/core";
21
20
  * automatically selected.
22
21
  */
23
22
  export declare class StepsMapComponent {
24
- private _steps?;
25
- private _selectedStep?;
26
23
  lines: {
27
24
  [key: string]: string[];
28
25
  };
29
26
  /**
30
27
  * The steps to display.
31
28
  */
32
- get steps(): ChainOperationContextStep[] | undefined;
33
- set steps(value: ChainOperationContextStep[] | undefined | null);
29
+ readonly steps: import("@angular/core").InputSignal<ChainOperationContextStep[]>;
34
30
  /**
35
31
  * The step that is currently selected.
36
32
  */
37
- get selectedStep(): ChainOperationContextStep | undefined;
38
- set selectedStep(value: ChainOperationContextStep | undefined);
33
+ readonly selectedStep: import("@angular/core").ModelSignal<ChainOperationContextStep | undefined>;
39
34
  /**
40
35
  * The font size of the steps text.
41
36
  */
42
- textFontSize: string;
37
+ readonly textFontSize: import("@angular/core").InputSignal<string>;
43
38
  /**
44
39
  * Emitted when the selected step has changed by user, or when
45
40
  * the steps are set for the first time.
46
41
  */
47
- selectedStepChange: EventEmitter<ChainOperationContextStep>;
42
+ selectedStepChange: import("@angular/core").OutputEmitterRef<ChainOperationContextStep | undefined>;
43
+ constructor();
48
44
  private updateLines;
49
45
  onStepClick(step: ChainOperationContextStep): void;
50
46
  static ɵfac: i0.ɵɵFactoryDeclaration<StepsMapComponent, never>;
51
- static ɵcmp: i0.ɵɵComponentDeclaration<StepsMapComponent, "gve-steps-map", never, { "steps": { "alias": "steps"; "required": false; }; "selectedStep": { "alias": "selectedStep"; "required": false; }; "textFontSize": { "alias": "textFontSize"; "required": false; }; }, { "selectedStepChange": "selectedStepChange"; }, never, never, true, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<StepsMapComponent, "gve-steps-map", never, { "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "selectedStep": { "alias": "selectedStep"; "required": false; "isSignal": true; }; "textFontSize": { "alias": "textFontSize"; "required": false; "isSignal": true; }; }, { "selectedStep": "selectedStepChange"; "selectedStepChange": "selectedStepChange"; }, never, never, true, never>;
52
48
  }
@@ -76,6 +76,33 @@ export interface ChainOperationTags {
76
76
  inputTag: string;
77
77
  outputTag: string;
78
78
  }
79
+ /**
80
+ * The node of a character-based chain, used for diagnostic
81
+ * or demonstration purposes.
82
+ */
83
+ export interface CharChainNode {
84
+ id: number;
85
+ label: string;
86
+ data: string;
87
+ sourceTag?: string;
88
+ }
89
+ /**
90
+ * The link of a character-based chain, used for diagnostic
91
+ * or demonstration purposes.
92
+ */
93
+ export interface CharChainLink {
94
+ tag: string;
95
+ sourceId: number;
96
+ targetId: number;
97
+ }
98
+ /**
99
+ * The character-based chain, as resulting from running operations
100
+ * on a base text, used for diagnostic or demonstration purposes.
101
+ */
102
+ export interface CharChain {
103
+ nodes: CharChainNode[];
104
+ links: CharChainLink[];
105
+ }
79
106
  /**
80
107
  * Service to interact with the GVE API.
81
108
  */
@@ -106,6 +133,16 @@ export declare class GveApiService {
106
133
  * @returns Result wrapper.
107
134
  */
108
135
  getTags(operations: CharChainOperation[]): Observable<ResultWrapper<string[]>>;
136
+ /**
137
+ * Get the chain corresponding to the operations run on the
138
+ * specified text. This is used for diagnostic or demonstration
139
+ * purposes.
140
+ *
141
+ * @param text The base text.
142
+ * @param operations The operations to run.
143
+ * @returns Result wrapper.
144
+ */
145
+ getChain(text: CharNode[], operations: CharChainOperation[]): Observable<ResultWrapper<CharChain>>;
109
146
  static ɵfac: i0.ɵɵFactoryDeclaration<GveApiService, never>;
110
147
  static ɵprov: i0.ɵɵInjectableDeclaration<GveApiService>;
111
148
  }
@@ -0,0 +1,20 @@
1
+ import { CharChain } from './gve-api.service';
2
+ import * as i0 from "@angular/core";
3
+ export type GraphvizRankdir = 'TB' | 'LR' | 'BT' | 'RL';
4
+ export declare class GveGraphvizService {
5
+ private hashString;
6
+ private hslToRgb;
7
+ private getColorForTag;
8
+ private getExcludedNodeIds;
9
+ /**
10
+ * Represent the received chain as a Graphviz digraph.
11
+ *
12
+ * @param chain The source chain if any.
13
+ * @param tags The tags to show. When set, only the links with these tags are shown.
14
+ * @param rankdir The rank direction.
15
+ * @returns Graphviz representation of the chain.
16
+ */
17
+ generateGraph(chain?: CharChain, tags?: string[], rankdir?: GraphvizRankdir): string;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<GveGraphvizService, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<GveGraphvizService>;
20
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myrmidon/gve-core",
3
- "version": "2.0.0",
3
+ "version": "3.0.3",
4
4
  "description": "Cadmus - GVE Angular frontend core components.",
5
5
  "keywords": [
6
6
  "GVE"
@@ -18,7 +18,7 @@
18
18
  "@angular/core": "^19.0.0",
19
19
  "@cisstech/nge": "^18.0.4",
20
20
  "@myrmidon/ngx-mat-tools": "^0.0.1",
21
- "@myrmidon/ngx-tools": "^0.0.1",
21
+ "@myrmidon/ngx-tools": "^1.0.0",
22
22
  "@myrmidon/gve-snapshot-view": "^1.1.6",
23
23
  "@svgdotjs/svg.js": "^3.2.4",
24
24
  "gsap": "^3.12.5",
package/public-api.d.ts CHANGED
@@ -7,14 +7,15 @@ export * from './lib/components/base-text-view/base-text-view.component';
7
7
  export * from './lib/components/batch-operation-editor/batch-operation-editor.component';
8
8
  export * from './lib/components/chain-operation-editor/chain-operation-editor.component';
9
9
  export * from './lib/components/chain-result-view/chain-result-view.component';
10
+ export * from './lib/components/chain-view/chain-view.component';
10
11
  export * from './lib/components/feature-editor/feature-editor.component';
11
12
  export * from './lib/components/feature-set-editor/feature-set-editor.component';
12
13
  export * from './lib/components/feature-set-view/feature-set-view.component';
13
14
  export * from './lib/components/ln-heights-editor/ln-heights-editor.component';
14
15
  export * from './lib/components/operation-source-editor/operation-source-editor.component';
15
- export * from './lib/components/simple-tree/simple-tree.component';
16
16
  export * from './lib/components/snapshot-editor/snapshot-editor.component';
17
17
  export * from './lib/components/snapshot-text-editor/snapshot-text-editor.component';
18
18
  export * from './lib/components/steps-map/steps-map.component';
19
19
  export * from './lib/services/gve-api.service';
20
+ export * from './lib/services/gve-graphviz.service';
20
21
  export * from './lib/services/settings.service';
@@ -1,35 +0,0 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
2
- import { TreeNode } from '@myrmidon/gve-snapshot-view';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * 🔑 `gve-simple-tree`
6
- *
7
- * A simple tree component.
8
- *
9
- * - ▶️ `node` (`TreeNode<any>`): the node to display.
10
- * - ▶️ `selectedNode` (`TreeNode<any> | null`): the selected node.
11
- * - 🔥 `selectedNodeChange` (`EventEmitter<TreeNode<any> | null>`): the event
12
- * emitted when the selected node changes.
13
- */
14
- export declare class SimpleTreeComponent implements OnInit {
15
- private _node;
16
- /**
17
- * The node to display.
18
- */
19
- get node(): TreeNode<any> | undefined;
20
- set node(value: TreeNode<any> | undefined);
21
- /**
22
- * The selected node.
23
- */
24
- selectedNode?: TreeNode<any> | null;
25
- /**
26
- * The event emitted when the selected node changes.
27
- */
28
- selectedNodeChange: EventEmitter<TreeNode<any> | null>;
29
- level: number;
30
- ngOnInit(): void;
31
- private calculateLevel;
32
- selectNode(node: TreeNode<any>): void;
33
- static ɵfac: i0.ɵɵFactoryDeclaration<SimpleTreeComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<SimpleTreeComponent, "gve-simple-tree", never, { "node": { "alias": "node"; "required": false; }; "selectedNode": { "alias": "selectedNode"; "required": false; }; }, { "selectedNodeChange": "selectedNodeChange"; }, never, never, true, never>;
35
- }