@visuallyjs/browser-ui-angular 1.2.0 → 1.2.1
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.
- package/esm2022/index.mjs +2 -0
- package/esm2022/lib/base.group.component.mjs +3 -3
- package/esm2022/lib/base.node.component.mjs +3 -3
- package/esm2022/lib/base.port.component.mjs +4 -4
- package/esm2022/lib/base.vertex.component.mjs +33 -12
- package/esm2022/lib/browser-ui-angular.module.mjs +18 -8
- package/esm2022/lib/charts/area.chart.component.mjs +3 -3
- package/esm2022/lib/charts/bar.chart.component.mjs +3 -3
- package/esm2022/lib/charts/bubble.chart.component.mjs +3 -3
- package/esm2022/lib/charts/column.chart.component.mjs +3 -3
- package/esm2022/lib/charts/line.chart.component.mjs +3 -3
- package/esm2022/lib/charts/pie.chart.component.mjs +3 -3
- package/esm2022/lib/charts/sankey.chart.component.mjs +4 -4
- package/esm2022/lib/charts/scatter.chart.component.mjs +3 -3
- package/esm2022/lib/charts/series.based.chart.component.mjs +4 -4
- package/esm2022/lib/charts/xy.chart.component.mjs +3 -3
- package/esm2022/lib/color.tag.component.mjs +6 -6
- package/esm2022/lib/controls-component.mjs +4 -4
- package/esm2022/lib/decorator-component.mjs +3 -3
- package/esm2022/lib/default-group-component.mjs +3 -3
- package/esm2022/lib/default-node-component.mjs +3 -3
- package/esm2022/lib/diagram-component.mjs +34 -12
- package/esm2022/lib/diagram-palette-component.mjs +4 -4
- package/esm2022/lib/edge.type.picker.component.mjs +5 -5
- package/esm2022/lib/export-controls-component.mjs +3 -3
- package/esm2022/lib/inspector.component.mjs +4 -4
- package/esm2022/lib/miniview-component.mjs +4 -4
- package/esm2022/lib/palette.component.mjs +4 -4
- package/esm2022/lib/paper-component.mjs +345 -0
- package/esm2022/lib/shape.component.mjs +4 -4
- package/esm2022/lib/shape.palette.component.mjs +4 -4
- package/esm2022/lib/surface-component.mjs +71 -14
- package/esm2022/lib/surface-popup-component.mjs +62 -0
- package/esm2022/lib/vjs-service.mjs +3 -3
- package/fesm2022/visuallyjs-browser-ui-angular.mjs +645 -142
- package/fesm2022/visuallyjs-browser-ui-angular.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/base.vertex.component.d.ts +29 -3
- package/lib/browser-ui-angular.module.d.ts +23 -21
- package/lib/diagram-component.d.ts +7 -5
- package/lib/overlay-component.d.ts +5 -5
- package/lib/paper-component.d.ts +156 -0
- package/lib/surface-component.d.ts +19 -11
- package/lib/surface-popup-component.d.ts +62 -0
- package/package.json +2 -2
- package/visuallyjs-browser-ui-angular.tgz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, Injectable, inject, ElementRef, effect,
|
|
2
|
+
import { signal, Injectable, inject, ElementRef, effect, Input, Component, ChangeDetectorRef, computed, Directive, input, EventEmitter, ViewContainerRef, NgZone, reflectComponentType, Output, TemplateRef, ViewChild, ContentChild, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { log, Surface, Paper, MiniviewPlugin, EVENT_ZOOM, EVENT_PORT_UPDATED, BrowserUIModel, OVERLAY_TYPE_CUSTOM, ELEMENT_DIV, isGroup, extend, renderSurface, EVENT_NODE_UPDATED, EVENT_PORT_ADDED, EVENT_GROUP_UPDATED, EVENT_DATA_LOAD_END, EVENT_EDGE_UPDATED, EVENT_INTERNAL_CONNECTION, ShapeLibraryDefaults, ShapePalette, convertToMultilineText, DEFAULT_LABEL_FILL_RATIO, LassoPlugin, EVENT_SURFACE_MODE_CHANGED, EVENT_UNDOREDO_UPDATE, TRUE, FALSE, EVENT_SELECT, EVENT_DESELECT, EVENT_SELECTION_CLEARED, SURFACE_MODE_PAN, SURFACE_MODE_SELECT, supportsPathEditing, PAN_VIEW_BOX, PAN_PATH, LASSO_VIEW_BOX, LASSO_PATH, ZOOM_TO_FIT_VIEW_BOX, ZOOM_TO_FIT_PATH, ZOOM_IN_OUT_VIEW_BOX, ZOOM_IN_PATH, ZOOM_OUT_PATH, CLASS_CONTROLS_RESET_SELECTION, RESET_SELECTION_VIEW_BOX, RESET_SELECTION_PATH, CLEAR_VIEW_BOX, CLEAR_PATH, INSPECTOR_CONTEXT_EDGE_PROPERTY_MAPPINGS, EdgeTypePicker, Palette, SvgExportUI, ImageExportUI, CLASS_CONTROLS, CLASS_EXPORT_CONTROLS, INSPECTOR_CONTEXT_RECENT_COLORS, EVENT_CONTEXT_UPDATE, CLASS_COLOR_PICKER, CLASS_COLOR_PICKER_SWATCHES, CLASS_COLOR_PICKER_SWATCH, createDiagram, ColumnChart, BarChart, DiagramPalette, CategoryValueChart, LineChart, AreaChart, PieChart, ScatterChart, BubbleChart, SankeyChart, Edge, Node, Group, Port, Inspector, EVENT_DATA_UPDATED, EVENT_GRAPH_CLEARED } from '@visuallyjs/browser-ui';
|
|
5
|
+
import { log, Surface, Paper, MiniviewPlugin, EVENT_ZOOM, EVENT_PORT_UPDATED, BrowserUIModel, OVERLAY_TYPE_CUSTOM, ELEMENT_DIV, isGroup, extend, renderSurface, EVENT_NODE_UPDATED, EVENT_PORT_ADDED, EVENT_GROUP_UPDATED, EVENT_DATA_LOAD_END, EVENT_EDGE_UPDATED, EVENT_EDGE_ADDED, EVENT_EDGE_REMOVED, EVENT_INTERNAL_CONNECTION, ShapeLibraryDefaults, ShapePalette, convertToMultilineText, DEFAULT_LABEL_FILL_RATIO, LassoPlugin, EVENT_SURFACE_MODE_CHANGED, EVENT_UNDOREDO_UPDATE, TRUE, FALSE, EVENT_SELECT, EVENT_DESELECT, EVENT_SELECTION_CLEARED, SURFACE_MODE_PAN, SURFACE_MODE_SELECT, supportsPathEditing, PAN_VIEW_BOX, PAN_PATH, LASSO_VIEW_BOX, LASSO_PATH, ZOOM_TO_FIT_VIEW_BOX, ZOOM_TO_FIT_PATH, ZOOM_IN_OUT_VIEW_BOX, ZOOM_IN_PATH, ZOOM_OUT_PATH, CLASS_CONTROLS_RESET_SELECTION, RESET_SELECTION_VIEW_BOX, RESET_SELECTION_PATH, CLEAR_VIEW_BOX, CLEAR_PATH, INSPECTOR_CONTEXT_EDGE_PROPERTY_MAPPINGS, EdgeTypePicker, Palette, SvgExportUI, ImageExportUI, CLASS_CONTROLS, CLASS_EXPORT_CONTROLS, INSPECTOR_CONTEXT_RECENT_COLORS, EVENT_CONTEXT_UPDATE, CLASS_COLOR_PICKER, CLASS_COLOR_PICKER_SWATCHES, CLASS_COLOR_PICKER_SWATCH, createDiagram, ColumnChart, BarChart, DiagramPalette, CategoryValueChart, LineChart, AreaChart, PieChart, ScatterChart, BubbleChart, SankeyChart, PopupHandler, CLASS_SURFACE_POPUP, renderPaper, Edge, Node, Group, Port, Inspector, EVENT_DATA_UPDATED, EVENT_GRAPH_CLEARED } from '@visuallyjs/browser-ui';
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class VisuallyJsService {
|
|
@@ -202,10 +202,10 @@ class VisuallyJsService {
|
|
|
202
202
|
this.uiListeners.push(cb);
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
206
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VisuallyJsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
206
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VisuallyJsService, providedIn: 'root' }); }
|
|
207
207
|
}
|
|
208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VisuallyJsService, decorators: [{
|
|
209
209
|
type: Injectable,
|
|
210
210
|
args: [{
|
|
211
211
|
providedIn: 'root',
|
|
@@ -257,16 +257,16 @@ class MiniviewComponent {
|
|
|
257
257
|
this.$miniview.invalidate();
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
261
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
260
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MiniviewComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
261
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MiniviewComponent, selector: "vjs-miniview", inputs: { elementFilter: "elementFilter", typeFunction: "typeFunction", activeTracking: "activeTracking", clickToCenter: "clickToCenter", showLasso: "showLasso", trackSelection: "trackSelection" }, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
262
262
|
}
|
|
263
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
263
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MiniviewComponent, decorators: [{
|
|
264
264
|
type: Component,
|
|
265
265
|
args: [{
|
|
266
266
|
selector: 'vjs-miniview',
|
|
267
267
|
template: `<div></div>`
|
|
268
268
|
}]
|
|
269
|
-
}], ctorParameters:
|
|
269
|
+
}], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { elementFilter: [{
|
|
270
270
|
type: Input
|
|
271
271
|
}], typeFunction: [{
|
|
272
272
|
type: Input
|
|
@@ -307,15 +307,31 @@ class BaseVertexComponent {
|
|
|
307
307
|
this.$data = signal(undefined);
|
|
308
308
|
|
|
309
309
|
this.zoom = signal(1);
|
|
310
|
+
|
|
311
|
+
this.sourceEdges = signal([]);
|
|
312
|
+
|
|
313
|
+
this.allSourceEdges = signal([]);
|
|
314
|
+
|
|
315
|
+
this.targetEdges = signal([]);
|
|
316
|
+
|
|
317
|
+
this.allTargetEdges = signal([]);
|
|
310
318
|
}
|
|
311
319
|
|
|
312
320
|
ngOnInit() {
|
|
313
321
|
this.$data.set(this.data);
|
|
314
|
-
this.
|
|
315
|
-
this.
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
322
|
+
if (this.surface) {
|
|
323
|
+
this._zoomHandler = (p) => {
|
|
324
|
+
this.zoom.set(p.zoom);
|
|
325
|
+
};
|
|
326
|
+
this.zoom.set(this.surface.getZoom());
|
|
327
|
+
this.surface.bind(EVENT_ZOOM, this._zoomHandler);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
$updateEdges() {
|
|
331
|
+
this.sourceEdges.set(this.getVertex().getSourceEdges());
|
|
332
|
+
this.allSourceEdges.set(this.getVertex().getAllSourceEdges());
|
|
333
|
+
this.targetEdges.set(this.getVertex().getTargetEdges());
|
|
334
|
+
this.allTargetEdges.set(this.getVertex().getAllTargetEdges());
|
|
319
335
|
}
|
|
320
336
|
|
|
321
337
|
getVertex() {
|
|
@@ -323,11 +339,12 @@ class BaseVertexComponent {
|
|
|
323
339
|
}
|
|
324
340
|
|
|
325
341
|
ngOnDestroy() {
|
|
326
|
-
this.surface
|
|
327
|
-
delete this._el
|
|
342
|
+
this.surface?.unbind(EVENT_ZOOM, this._zoomHandler);
|
|
343
|
+
delete this._el?._visuallyJsNgComponent._el;
|
|
328
344
|
delete this._el;
|
|
329
345
|
delete this.model;
|
|
330
346
|
delete this.surface;
|
|
347
|
+
delete this.paper;
|
|
331
348
|
}
|
|
332
349
|
|
|
333
350
|
removeVertex() {
|
|
@@ -359,16 +376,16 @@ class BaseVertexComponent {
|
|
|
359
376
|
}
|
|
360
377
|
|
|
361
378
|
cloneVertex(options) {
|
|
362
|
-
this.surface
|
|
379
|
+
this.surface?.cloneVertex(this.getVertex(), options);
|
|
363
380
|
}
|
|
364
381
|
|
|
365
382
|
flashVertex(duration, animName) {
|
|
366
|
-
this.surface
|
|
383
|
+
this.surface?.flashVertex(this.getVertex(), duration, animName);
|
|
367
384
|
}
|
|
368
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
369
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
385
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseVertexComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
386
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseVertexComponent }); }
|
|
370
387
|
}
|
|
371
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
388
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseVertexComponent, decorators: [{
|
|
372
389
|
type: Injectable
|
|
373
390
|
}], propDecorators: { data: [{
|
|
374
391
|
type: Input
|
|
@@ -376,6 +393,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
376
393
|
type: Input
|
|
377
394
|
}], surface: [{
|
|
378
395
|
type: Input
|
|
396
|
+
}], paper: [{
|
|
397
|
+
type: Input
|
|
398
|
+
}], ui: [{
|
|
399
|
+
type: Input
|
|
379
400
|
}], modelObject: [{
|
|
380
401
|
type: Input
|
|
381
402
|
}] } });
|
|
@@ -414,10 +435,10 @@ class BaseGroupComponent extends BaseVertexComponent {
|
|
|
414
435
|
getPort(portId) {
|
|
415
436
|
return this.getGroup().getPort(portId);
|
|
416
437
|
}
|
|
417
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
418
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
438
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
439
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseGroupComponent }); }
|
|
419
440
|
}
|
|
420
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
441
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseGroupComponent, decorators: [{
|
|
421
442
|
type: Injectable
|
|
422
443
|
}] });
|
|
423
444
|
|
|
@@ -427,10 +448,10 @@ class DefaultGroupComponent extends BaseGroupComponent {
|
|
|
427
448
|
super(...arguments);
|
|
428
449
|
this.label = computed(() => this.$data().label || "");
|
|
429
450
|
}
|
|
430
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
431
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
451
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
452
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DefaultGroupComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `<div class="vjs-default-group">{{label()}}</div>`, isInline: true }); }
|
|
432
453
|
}
|
|
433
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultGroupComponent, decorators: [{
|
|
434
455
|
type: Component,
|
|
435
456
|
args: [{
|
|
436
457
|
template: `<div class="vjs-default-group">{{label()}}</div>`
|
|
@@ -469,10 +490,10 @@ class BaseNodeComponent extends BaseVertexComponent {
|
|
|
469
490
|
flashNode(duration, animName) {
|
|
470
491
|
this.flashVertex(duration, animName);
|
|
471
492
|
}
|
|
472
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
473
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
493
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
494
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseNodeComponent }); }
|
|
474
495
|
}
|
|
475
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseNodeComponent, decorators: [{
|
|
476
497
|
type: Injectable
|
|
477
498
|
}] });
|
|
478
499
|
|
|
@@ -482,10 +503,10 @@ class DefaultNodeComponent extends BaseNodeComponent {
|
|
|
482
503
|
super(...arguments);
|
|
483
504
|
this.label = computed(() => this.$data().label || "");
|
|
484
505
|
}
|
|
485
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
486
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
506
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
507
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DefaultNodeComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `<div class="vjs-default-node">{{label()}}</div>`, isInline: true }); }
|
|
487
508
|
}
|
|
488
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
509
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DefaultNodeComponent, decorators: [{
|
|
489
510
|
type: Component,
|
|
490
511
|
args: [{
|
|
491
512
|
template: `<div class="vjs-default-node">{{label()}}</div>`
|
|
@@ -547,15 +568,15 @@ class BasePortComponent {
|
|
|
547
568
|
ngOnDestroy() {
|
|
548
569
|
this.parent.model.unbind(EVENT_PORT_UPDATED, this._signalBinder);
|
|
549
570
|
}
|
|
550
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
551
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
571
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BasePortComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
572
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: BasePortComponent, selector: "vjs-base-port", inputs: { parent: "parent", data: "data" }, ngImport: i0 }); }
|
|
552
573
|
}
|
|
553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
574
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BasePortComponent, decorators: [{
|
|
554
575
|
type: Directive,
|
|
555
576
|
args: [{
|
|
556
577
|
selector: "vjs-base-port",
|
|
557
578
|
}]
|
|
558
|
-
}], ctorParameters:
|
|
579
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { parent: [{
|
|
559
580
|
type: Input
|
|
560
581
|
}], data: [{
|
|
561
582
|
type: Input
|
|
@@ -573,13 +594,36 @@ class BrowserUIAngularModel extends BrowserUIModel {
|
|
|
573
594
|
class SurfaceComponent {
|
|
574
595
|
constructor() {
|
|
575
596
|
|
|
597
|
+
this.data = input();
|
|
598
|
+
|
|
599
|
+
this.url = input();
|
|
600
|
+
|
|
576
601
|
this.vertexEvent = new EventEmitter();
|
|
577
602
|
this.$el = inject(ElementRef);
|
|
578
603
|
this.$viewContainerRef = inject(ViewContainerRef);
|
|
579
604
|
this.$ngZone = inject(NgZone);
|
|
580
605
|
this.$vjs = inject(VisuallyJsService);
|
|
606
|
+
this._dataEffect = effect(() => {
|
|
607
|
+
const currentData = this.data();
|
|
608
|
+
if (currentData) {
|
|
609
|
+
if (this.model) {
|
|
610
|
+
this.model.clear();
|
|
611
|
+
this.model.load({ data: currentData });
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
});
|
|
615
|
+
this._urlEffect = effect(() => {
|
|
616
|
+
const currentUrl = this.url();
|
|
617
|
+
if (currentUrl) {
|
|
618
|
+
// Respond to changes in the url here.
|
|
619
|
+
// For example, if you need to reload the model with new data:
|
|
620
|
+
if (this.model) {
|
|
621
|
+
this.model.clear();
|
|
622
|
+
this.model.load({ url: currentUrl });
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
});
|
|
581
626
|
}
|
|
582
|
-
// $vjsSignals = inject(VisuallyJsSignalService)
|
|
583
627
|
|
|
584
628
|
getNativeElement(component) {
|
|
585
629
|
return component.location.nativeElement.childNodes[0];
|
|
@@ -638,6 +682,32 @@ class SurfaceComponent {
|
|
|
638
682
|
}
|
|
639
683
|
}
|
|
640
684
|
}
|
|
685
|
+
edgeAddedRemoved(params) {
|
|
686
|
+
const info = this.surface.getObjectInfo(params.edge.source, false);
|
|
687
|
+
if (info.el) {
|
|
688
|
+
this._getComponentThen(info.el, (component) => {
|
|
689
|
+
try {
|
|
690
|
+
component.$updateEdges();
|
|
691
|
+
if (component.changeDetectorRef) {
|
|
692
|
+
component.changeDetectorRef.detectChanges();
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
catch (e) { }
|
|
696
|
+
}, false);
|
|
697
|
+
}
|
|
698
|
+
const info2 = this.surface.getObjectInfo(params.edge.target, false);
|
|
699
|
+
if (info2.el && info.obj.getFullId() !== info2.obj.getFullId()) {
|
|
700
|
+
this._getComponentThen(info2.el, (component) => {
|
|
701
|
+
try {
|
|
702
|
+
component.$updateEdges();
|
|
703
|
+
if (component.changeDetectorRef) {
|
|
704
|
+
component.changeDetectorRef.detectChanges();
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
catch (e) { }
|
|
708
|
+
}, false);
|
|
709
|
+
}
|
|
710
|
+
}
|
|
641
711
|
|
|
642
712
|
_processAngularOverlays(view) {
|
|
643
713
|
const self = this;
|
|
@@ -670,7 +740,10 @@ class SurfaceComponent {
|
|
|
670
740
|
angularOverlayComponent.data = edge.data;
|
|
671
741
|
}
|
|
672
742
|
angularOverlayComponent.model = self.model;
|
|
743
|
+
// backwards compat: remove at some point
|
|
744
|
+
;
|
|
673
745
|
angularOverlayComponent.surface = self.surface;
|
|
746
|
+
angularOverlayComponent.ui = self.surface;
|
|
674
747
|
createdComponent.changeDetectorRef.detectChanges();
|
|
675
748
|
return el;
|
|
676
749
|
};
|
|
@@ -733,6 +806,7 @@ class SurfaceComponent {
|
|
|
733
806
|
_componentRef.data = data || {};
|
|
734
807
|
_componentRef.model = model;
|
|
735
808
|
_componentRef.surface = surface;
|
|
809
|
+
_componentRef.ui = surface;
|
|
736
810
|
_componentRef.modelObject = modelObject;
|
|
737
811
|
// get the reflection data for the component
|
|
738
812
|
const componentInfo = reflectComponentType(component);
|
|
@@ -804,11 +878,17 @@ class SurfaceComponent {
|
|
|
804
878
|
model.bind(EVENT_PORT_UPDATED, this.portUpdateFn);
|
|
805
879
|
this.edgeUpdateFn = this.edgeUpdated.bind(this);
|
|
806
880
|
model.bind(EVENT_EDGE_UPDATED, this.edgeUpdateFn);
|
|
807
|
-
|
|
808
|
-
|
|
881
|
+
this.edgeAddFn = this.edgeAddedRemoved.bind(this);
|
|
882
|
+
this.edgeRemoveFn = this.edgeAddedRemoved.bind(this);
|
|
883
|
+
model.bind(EVENT_EDGE_ADDED, this.edgeAddFn);
|
|
884
|
+
model.bind(EVENT_EDGE_REMOVED, this.edgeRemoveFn);
|
|
885
|
+
const initialData = this.data();
|
|
886
|
+
const initialUrl = this.url();
|
|
887
|
+
if (initialData) {
|
|
888
|
+
this.model.load({ data: initialData });
|
|
809
889
|
}
|
|
810
|
-
else if (
|
|
811
|
-
this.model.load({ url:
|
|
890
|
+
else if (initialUrl) {
|
|
891
|
+
this.model.load({ url: initialUrl });
|
|
812
892
|
}
|
|
813
893
|
});
|
|
814
894
|
}
|
|
@@ -820,13 +900,15 @@ class SurfaceComponent {
|
|
|
820
900
|
this.model.unbind(EVENT_PORT_ADDED, this.nodeUpdateFn);
|
|
821
901
|
this.model.unbind(EVENT_PORT_UPDATED, this.portUpdateFn);
|
|
822
902
|
this.model.unbind(EVENT_EDGE_UPDATED, this.edgeUpdateFn);
|
|
903
|
+
this.model.unbind(EVENT_EDGE_ADDED, this.edgeAddFn);
|
|
904
|
+
this.model.unbind(EVENT_EDGE_REMOVED, this.edgeRemoveFn);
|
|
823
905
|
this.model.unbind(EVENT_DATA_LOAD_END, this.dataLoadEndFn);
|
|
824
906
|
this.surface.unbind(EVENT_INTERNAL_CONNECTION, this.edgeAddFn);
|
|
825
907
|
}
|
|
826
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
827
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
908
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SurfaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
909
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: SurfaceComponent, selector: "vjs-surface", inputs: { inputModel: { classPropertyName: "inputModel", publicName: "model", isSignal: false, isRequired: false, transformFunction: null }, viewOptions: { classPropertyName: "viewOptions", publicName: "viewOptions", isSignal: false, isRequired: false, transformFunction: null }, renderOptions: { classPropertyName: "renderOptions", publicName: "renderOptions", isSignal: false, isRequired: false, transformFunction: null }, modelOptions: { classPropertyName: "modelOptions", publicName: "modelOptions", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { vertexEvent: "vertexEvent" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
828
910
|
}
|
|
829
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
911
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SurfaceComponent, decorators: [{
|
|
830
912
|
type: Component,
|
|
831
913
|
args: [{
|
|
832
914
|
selector: "vjs-surface",
|
|
@@ -841,10 +923,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
841
923
|
type: Input
|
|
842
924
|
}], modelOptions: [{
|
|
843
925
|
type: Input
|
|
844
|
-
}], data: [{
|
|
845
|
-
type: Input
|
|
846
|
-
}], url: [{
|
|
847
|
-
type: Input
|
|
848
926
|
}], vertexEvent: [{
|
|
849
927
|
type: Output
|
|
850
928
|
}] } });
|
|
@@ -895,16 +973,16 @@ class ShapePaletteComponent {
|
|
|
895
973
|
}
|
|
896
974
|
});
|
|
897
975
|
}
|
|
898
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
899
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
976
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShapePaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
977
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ShapePaletteComponent, selector: "vjs-shape-palette", inputs: { initialSet: "initialSet", dragSize: "dragSize", iconSize: "iconSize", fill: "fill", outline: "outline", showAllMessage: "showAllMessage", selectAfterDrop: "selectAfterDrop", paletteStrokeWidth: "paletteStrokeWidth", onVertexAdded: "onVertexAdded", dataGenerator: "dataGenerator", preparedShapes: "preparedShapes" }, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
900
978
|
}
|
|
901
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
979
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShapePaletteComponent, decorators: [{
|
|
902
980
|
type: Component,
|
|
903
981
|
args: [{
|
|
904
982
|
template: `<div></div>`,
|
|
905
983
|
selector: `vjs-shape-palette`
|
|
906
984
|
}]
|
|
907
|
-
}], ctorParameters:
|
|
985
|
+
}], ctorParameters: () => [], propDecorators: { initialSet: [{
|
|
908
986
|
type: Input
|
|
909
987
|
}], dragSize: [{
|
|
910
988
|
type: Input
|
|
@@ -967,8 +1045,8 @@ class ShapeComponent {
|
|
|
967
1045
|
ngOnChanges(changes) {
|
|
968
1046
|
this._render();
|
|
969
1047
|
}
|
|
970
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
971
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1048
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShapeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1049
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ShapeComponent, selector: "vjs-shape", inputs: { obj: "obj", width: "width", height: "height", showLabels: "showLabels", labelProperty: "labelProperty", labelStrokeWidth: "labelStrokeWidth", label: "label", multilineLabels: "multilineLabels", labelFillRatio: "labelFillRatio", font: "font" }, usesOnChanges: true, ngImport: i0, template: `<svg:svg
|
|
972
1050
|
[attr.stroke-width]="obj.outlineWidth || 2"
|
|
973
1051
|
attr.fill="{{ obj.fill }}"
|
|
974
1052
|
attr.stroke="{{ obj.outline }}"
|
|
@@ -977,7 +1055,7 @@ class ShapeComponent {
|
|
|
977
1055
|
attr.viewBox="0 0 {{ width }} {{ height }}"
|
|
978
1056
|
></svg:svg>`, isInline: true }); }
|
|
979
1057
|
}
|
|
980
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShapeComponent, decorators: [{
|
|
981
1059
|
type: Component,
|
|
982
1060
|
args: [{
|
|
983
1061
|
template: `<svg:svg
|
|
@@ -990,7 +1068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
990
1068
|
></svg:svg>`,
|
|
991
1069
|
selector: `vjs-shape`,
|
|
992
1070
|
}]
|
|
993
|
-
}], ctorParameters:
|
|
1071
|
+
}], ctorParameters: () => [], propDecorators: { obj: [{
|
|
994
1072
|
type: Input
|
|
995
1073
|
}], width: [{
|
|
996
1074
|
type: Input
|
|
@@ -1116,10 +1194,10 @@ class ControlsComponent {
|
|
|
1116
1194
|
t.clear();
|
|
1117
1195
|
}
|
|
1118
1196
|
}
|
|
1119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1197
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ControlsComponent, selector: "vjs-controls", inputs: { undoRedo: "undoRedo", zoomToExtents: "zoomToExtents", zoomButtons: "zoomButtons", clear: "clear", clearMessage: "clearMessage", buttons: "buttons", orientation: "orientation" }, ngImport: i0, template: "<div class=\"vjs-controls\" [attr.data-vjs-orientation]=\"orientation\">\n <i *ngIf=\"showPanButton\" class=\"vjs-pan-mode vjs-selected-mode\" data-mode=\"pan\" title=\"Pan Mode\" (click)=\"panMode()\">\n <svg viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\">\n <path d=\"M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5 M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5 M14 5.5a1.5 1.5 0 0 1 3 0v6.5 M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47\"></path>\n </svg>\n </i>\n <i *ngIf=\"showLassoButton\" class=\"vjs-select-mode\" data-mode=\"select\" title=\"Select Mode\" (click)=\"selectMode()\">\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path d=\"M18.2848192,17.5777124 L20.8535534,20.1464466 C21.0488155,20.3417088 21.0488155,20.6582912 20.8535534,20.8535534 C20.6582912,21.0488155 20.3417088,21.0488155 20.1464466,20.8535534 L17.5777124,18.2848192 L15.9160251,20.7773501 C15.6899572,21.116452 15.1749357,21.0571624 15.0318354,20.6755617 L12.0318354,12.6755617 C11.8811067,12.2736185 12.2736185,11.8811067 12.6755617,12.0318354 L20.6755617,15.0318354 C21.0571624,15.1749357 21.116452,15.6899572 20.7773501,15.9160251 L18.2848192,17.5777124 L18.2848192,17.5777124 Z M17.2312404,17.0782479 L19.4104716,15.6254271 L13.3544004,13.3544004 L15.6254271,19.4104716 L17.0782479,17.2312404 C17.0974475,17.2011742 17.1201804,17.1727128 17.1464466,17.1464466 C17.1727128,17.1201804 17.2011742,17.0974475 17.2312404,17.0782479 L17.2312404,17.0782479 Z M5.5,3 C5.77614237,3 6,3.22385763 6,3.5 C6,3.77614237 5.77614237,4 5.5,4 C4.67157288,4 4,4.67157288 4,5.5 C4,5.77614237 3.77614237,6 3.5,6 C3.22385763,6 3,5.77614237 3,5.5 C3,4.11928813 4.11928813,3 5.5,3 Z M8.5,4 C8.22385763,4 8,3.77614237 8,3.5 C8,3.22385763 8.22385763,3 8.5,3 L10.5,3 C10.7761424,3 11,3.22385763 11,3.5 C11,3.77614237 10.7761424,4 10.5,4 L8.5,4 Z M13.5,4 C13.2238576,4 13,3.77614237 13,3.5 C13,3.22385763 13.2238576,3 13.5,3 L15.5,3 C15.7761424,3 16,3.22385763 16,3.5 C16,3.77614237 15.7761424,4 15.5,4 L13.5,4 Z M8.5,21 C8.22385763,21 8,20.7761424 8,20.5 C8,20.2238576 8.22385763,20 8.5,20 L10.5,20 C10.7761424,20 11,20.2238576 11,20.5 C11,20.7761424 10.7761424,21 10.5,21 L8.5,21 Z M3,8.5 C3,8.22385763 3.22385763,8 3.5,8 C3.77614237,8 4,8.22385763 4,8.5 L4,10.5 C4,10.7761424 3.77614237,11 3.5,11 C3.22385763,11 3,10.7761424 3,10.5 L3,8.5 Z M3,13.5 C3,13.2238576 3.22385763,13 3.5,13 C3.77614237,13 4,13.2238576 4,13.5 L4,15.5 C4,15.7761424 3.77614237,16 3.5,16 C3.22385763,16 3,15.7761424 3,15.5 L3,13.5 Z M3,18.5 C3,18.2238576 3.22385763,18 3.5,18 C3.77614237,18 4,18.2238576 4,18.5 C4,19.3284271 4.67157288,20 5.5,20 C5.77614237,20 6,20.2238576 6,20.5 C6,20.7761424 5.77614237,21 5.5,21 C4.11928813,21 3,19.8807119 3,18.5 Z M21,10.5 C21,10.7761424 20.7761424,11 20.5,11 C20.2238576,11 20,10.7761424 20,10.5 L20,8.5 C20,8.22385763 20.2238576,8 20.5,8 C20.7761424,8 21,8.22385763 21,8.5 L21,10.5 Z M21,5.5 C21,5.77614237 20.7761424,6 20.5,6 C20.2238576,6 20,5.77614237 20,5.5 C20,4.67157288 19.3284271,4 18.5,4 C18.2238576,4 18,3.77614237 18,3.5 C18,3.22385763 18.2238576,3 18.5,3 C19.8807119,3 21,4.11928813 21,5.5 Z\"></path>\n </svg>\n </i>\n\n <i *ngFor=\"let button of modeButtons\" data-mode=\"{{ button.mode }}\" class=\"{{ button.class }}\" title=\"{{ button.title }}\"></i>\n\n <i *ngIf=\"zoomToExtents\" class=\"vjs-zoom-to-fit\" data-reset=\"true\"title=\"Zoom To Fit\" (click)=\"zoomToFit()\">\n <svg viewBox=\"0 0 32 30\" stroke=\"currentColor\" fill=\"currentColor\"><path d=\"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z\"></path></svg>\n </i>\n\n <i *ngIf=\"zoomButtons\" class=\"vjs-zoom-in\" data-zoom-in=\"true\" title=\"Zoom In\" (click)=\"zoomIn()\">\n <svg viewBox=\"0 0 32 32\" stroke=\"currentColor\" fill=\"currentColor\"><path d=\"M 13 6 L 13 20 M 6 13 L 20 13 M 22,22 L 30,30 M1, 13 a 12,12 0 1,0 24,0 a 12,12 0 1,0 -24,0\"></path></svg>\n </i>\n\n <i *ngIf=\"zoomButtons\" class=\"vjs-zoom-out\" data-zoom-out=\"true\" title=\"Zoom Out\" (click)=\"zoomOut()\">\n <svg viewBox=\"0 0 32 32\" stroke=\"currentColor\" fill=\"currentColor\"><path d=\"M 6 13 L 20 13 M 22,22 L 30,30 M1, 13 a 12,12 0 1,0 24,0 a 12,12 0 1,0 -24,0\"></path></svg>\n </i>\n\n <i *ngIf=\"undoRedo\" class=\"vjs-undo\" data-undo=\"true\" title=\"Undo last action\" (click)=\"undo()\"></i>\n <i *ngIf=\"undoRedo\" class=\"vjs-redo\" data-redo=\"true\" title=\"Redo last action\" (click)=\"redo()\"></i>\n <i class=\"vjs-controls-reset-selection\" title=\"Clear selection\" (click)=\"resetSelection()\">\n <svg viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"currentColor\"><path d=\"M2,5 V2 H5 M9,2 H11 M13,2 H15 M19,2 H22 V5 M22,9 V11 M22,13 V15 M22,19 V22 H19 M15,22 H13 M11,22 H9 M5,22 H2 V19 M2,15 V13 M2,11 V9 M9,9 L15,15 M15,9 L9,15\"></path></svg>\n </i>\n <i *ngIf=\"clear\" class=\"vjs-clear-dataset\" [title]=\"clearMessage\" (click)=\"doClear()\">\n <svg viewBox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"currentColor\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path></svg>\n </i>\n <i *ngFor=\"let button of otherButtons\" class=\"{{ button.class }}\" title=\"{{ button.title }}\"></i>\n </div>", isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
1121
1199
|
}
|
|
1122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ControlsComponent, decorators: [{
|
|
1123
1201
|
type: Component,
|
|
1124
1202
|
args: [{
|
|
1125
1203
|
selector: "vjs-controls",
|
|
@@ -1160,7 +1238,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1160
1238
|
<i *ngFor="let button of otherButtons" class="{{ button.class }}" title="{{ button.title }}"></i>
|
|
1161
1239
|
</div>`,
|
|
1162
1240
|
}]
|
|
1163
|
-
}], ctorParameters:
|
|
1241
|
+
}], ctorParameters: () => [], propDecorators: { undoRedo: [{
|
|
1164
1242
|
type: Input
|
|
1165
1243
|
}], zoomToExtents: [{
|
|
1166
1244
|
type: Input
|
|
@@ -1199,7 +1277,7 @@ class EdgeTypePickerComponent {
|
|
|
1199
1277
|
});
|
|
1200
1278
|
const current = inspector.getValue(this.propertyName) || '';
|
|
1201
1279
|
this.edgeTypePicker = new EdgeTypePicker(inspector.$ui, this.el.nativeElement, this.resolveMappings(), current, (p, v) => {
|
|
1202
|
-
inspector.setValue(this.propertyName, v);
|
|
1280
|
+
inspector.setValue(this.propertyName, v, null);
|
|
1203
1281
|
this.changeEvent.emit(v);
|
|
1204
1282
|
});
|
|
1205
1283
|
this.edgeTypePicker.render(this.propertyName, inspector._currentCommonData);
|
|
@@ -1207,16 +1285,16 @@ class EdgeTypePickerComponent {
|
|
|
1207
1285
|
}
|
|
1208
1286
|
});
|
|
1209
1287
|
}
|
|
1210
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1211
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1288
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeTypePickerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1289
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EdgeTypePickerComponent, selector: "vjs-edge-type", inputs: { propertyName: "propertyName", edgeMappings: "edgeMappings" }, outputs: { changeEvent: "changeEvent" }, ngImport: i0, template: `<div [attr.vjs-att]="propertyName"></div>`, isInline: true }); }
|
|
1212
1290
|
}
|
|
1213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeTypePickerComponent, decorators: [{
|
|
1214
1292
|
type: Component,
|
|
1215
1293
|
args: [{
|
|
1216
1294
|
selector: "vjs-edge-type",
|
|
1217
1295
|
template: `<div [attr.vjs-att]="propertyName"></div>`
|
|
1218
1296
|
}]
|
|
1219
|
-
}], ctorParameters:
|
|
1297
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { propertyName: [{
|
|
1220
1298
|
type: Input
|
|
1221
1299
|
}], edgeMappings: [{
|
|
1222
1300
|
type: Input
|
|
@@ -1272,15 +1350,15 @@ class PaletteComponent {
|
|
|
1272
1350
|
}
|
|
1273
1351
|
});
|
|
1274
1352
|
}
|
|
1275
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1276
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1353
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1354
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PaletteComponent, selector: "[vjs-palette]", inputs: { selector: "selector", dataGenerator: "dataGenerator", typeGenerator: "typeGenerator", groupIdentifier: "groupIdentifier", allowDropOnEdge: "allowDropOnEdge", allowDropOnGroup: "allowDropOnGroup", allowDropOnCanvas: "allowDropOnCanvas", allowDropOnNode: "allowDropOnNode", onVertexAdded: "onVertexAdded", dragSize: "dragSize", canvasDropFilter: "canvasDropFilter", mode: "mode", selectAfterAdd: "selectAfterAdd", allowClickToAdd: "allowClickToAdd", clickToAddOnly: "clickToAddOnly" }, ngImport: i0 }); }
|
|
1277
1355
|
}
|
|
1278
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaletteComponent, decorators: [{
|
|
1279
1357
|
type: Directive,
|
|
1280
1358
|
args: [{
|
|
1281
1359
|
selector: "[vjs-palette]",
|
|
1282
1360
|
}]
|
|
1283
|
-
}], ctorParameters:
|
|
1361
|
+
}], ctorParameters: () => [], propDecorators: { selector: [{
|
|
1284
1362
|
type: Input
|
|
1285
1363
|
}], dataGenerator: [{
|
|
1286
1364
|
type: Input
|
|
@@ -1343,10 +1421,10 @@ class ExportControlsComponent {
|
|
|
1343
1421
|
type: "image/jpeg",
|
|
1344
1422
|
}));
|
|
1345
1423
|
}
|
|
1346
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1347
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1424
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExportControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1425
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ExportControlsComponent, selector: "vjs-export-controls", inputs: { showLabel: "showLabel", label: "label", margins: "margins", svgOptions: "svgOptions", imageOptions: "imageOptions", allowSvgExport: "allowSvgExport", allowPngExport: "allowPngExport", allowJpgExport: "allowJpgExport" }, ngImport: i0, template: "<div class=\"vjs-controls vjs-export-controls\">\n <span *ngIf=\"showLabel\">{{ label }}</span>\n <i *ngIf=\"allowSvgExport\"\n ><a href=\"#\" id=\"exportSvg\" (click)=\"exportSVG()\">SVG</a></i\n >\n <i *ngIf=\"allowPngExport\"\n ><a href=\"#\" id=\"exportPng\" (click)=\"exportPNG()\">PNG</a></i\n >\n <i *ngIf=\"allowJpgExport\"\n ><a href=\"#\" id=\"exportJpg\" (click)=\"exportJPG()\">JPG</a></i\n >\n </div>", isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
1348
1426
|
}
|
|
1349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExportControlsComponent, decorators: [{
|
|
1350
1428
|
type: Component,
|
|
1351
1429
|
args: [{
|
|
1352
1430
|
selector: "vjs-export-controls",
|
|
@@ -1408,7 +1486,7 @@ class ColorPickerComponent {
|
|
|
1408
1486
|
colorInput.onchange = () => {
|
|
1409
1487
|
const color = colorInput.value;
|
|
1410
1488
|
this.pushColor(color);
|
|
1411
|
-
i.setValue(this.propertyName, color, true);
|
|
1489
|
+
i.setValue(this.propertyName, color, null, true);
|
|
1412
1490
|
};
|
|
1413
1491
|
setTimeout(() => {
|
|
1414
1492
|
// if there is a color, maybe push to context
|
|
@@ -1428,7 +1506,7 @@ class ColorPickerComponent {
|
|
|
1428
1506
|
}
|
|
1429
1507
|
selectColor(color) {
|
|
1430
1508
|
this.$getInspector(inspector => {
|
|
1431
|
-
inspector.setValue(this.propertyName, color);
|
|
1509
|
+
inspector.setValue(this.propertyName, color, null);
|
|
1432
1510
|
this.$el.nativeElement.querySelector("[type='color']").value = color;
|
|
1433
1511
|
});
|
|
1434
1512
|
}
|
|
@@ -1447,10 +1525,10 @@ class ColorPickerComponent {
|
|
|
1447
1525
|
}
|
|
1448
1526
|
});
|
|
1449
1527
|
}
|
|
1450
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1451
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1528
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ColorPickerComponent, selector: "vjs-color", inputs: { propertyName: "propertyName", maxColors: "maxColors" }, outputs: { changeEvent: "changeEvent" }, ngImport: i0, template: "<div class=\"vjs-color-picker\">\n <input type=\"color\" [attr.vjs-att]=\"propertyName\"/>\n <div class=\"vjs-color-picker-swatches\">\n <div *ngFor=\"let swatch of swatches()\" class=\"vjs-color-picker-swatch\" attr.data-color=\"{{swatch}}\" style=\"background-color:{{swatch}}\" (click)=\"selectColor(swatch)\"></div>\n </div>\n </div>", isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
|
|
1452
1530
|
}
|
|
1453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1531
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ColorPickerComponent, decorators: [{
|
|
1454
1532
|
type: Component,
|
|
1455
1533
|
args: [{
|
|
1456
1534
|
selector: "vjs-color",
|
|
@@ -1461,7 +1539,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1461
1539
|
</div>
|
|
1462
1540
|
</div>`
|
|
1463
1541
|
}]
|
|
1464
|
-
}], ctorParameters:
|
|
1542
|
+
}], ctorParameters: () => [], propDecorators: { propertyName: [{
|
|
1465
1543
|
type: Input
|
|
1466
1544
|
}], maxColors: [{
|
|
1467
1545
|
type: Input
|
|
@@ -1472,19 +1550,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1472
1550
|
|
|
1473
1551
|
class DiagramComponent {
|
|
1474
1552
|
constructor() {
|
|
1553
|
+
|
|
1554
|
+
this.data = input();
|
|
1555
|
+
|
|
1556
|
+
this.url = input();
|
|
1475
1557
|
this.$ngZone = inject(NgZone);
|
|
1476
1558
|
this.$el = inject(ElementRef);
|
|
1477
1559
|
this.$vjs = inject(VisuallyJsService);
|
|
1560
|
+
this._dataEffect = effect(() => {
|
|
1561
|
+
const currentData = this.data();
|
|
1562
|
+
if (currentData) {
|
|
1563
|
+
if (this.diagram) {
|
|
1564
|
+
this.diagram.clear();
|
|
1565
|
+
this.diagram.load({ data: currentData });
|
|
1566
|
+
}
|
|
1567
|
+
}
|
|
1568
|
+
});
|
|
1569
|
+
this._urlEffect = effect(() => {
|
|
1570
|
+
const currentUrl = this.url();
|
|
1571
|
+
if (currentUrl) {
|
|
1572
|
+
// Respond to changes in the url here.
|
|
1573
|
+
// For example, if you need to reload the model with new data:
|
|
1574
|
+
if (this.diagram) {
|
|
1575
|
+
this.diagram.clear();
|
|
1576
|
+
this.diagram.load({ url: currentUrl });
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
});
|
|
1478
1580
|
}
|
|
1479
1581
|
ngAfterViewInit() {
|
|
1480
1582
|
this.$ngZone.runOutsideAngular(() => {
|
|
1481
1583
|
this.diagram = createDiagram(this.$el.nativeElement, this.options, this.modelOptions);
|
|
1482
1584
|
this.$vjs.$setDiagram(this.diagram);
|
|
1483
|
-
|
|
1484
|
-
|
|
1585
|
+
const initialData = this.data();
|
|
1586
|
+
const initialUrl = this.url();
|
|
1587
|
+
if (initialData) {
|
|
1588
|
+
this.diagram.load({ data: initialData });
|
|
1485
1589
|
}
|
|
1486
|
-
else if (
|
|
1487
|
-
this.diagram.load({ url:
|
|
1590
|
+
else if (initialUrl) {
|
|
1591
|
+
this.diagram.load({ url: initialUrl });
|
|
1488
1592
|
}
|
|
1489
1593
|
});
|
|
1490
1594
|
}
|
|
@@ -1499,10 +1603,10 @@ class DiagramComponent {
|
|
|
1499
1603
|
saveToUrl(options) {
|
|
1500
1604
|
this.diagram.saveToUrl(options);
|
|
1501
1605
|
}
|
|
1502
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1503
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1606
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiagramComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1607
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: DiagramComponent, selector: "vjs-diagram", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, modelOptions: { classPropertyName: "modelOptions", publicName: "modelOptions", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
1504
1608
|
}
|
|
1505
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1609
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiagramComponent, decorators: [{
|
|
1506
1610
|
type: Component,
|
|
1507
1611
|
args: [{
|
|
1508
1612
|
selector: "vjs-diagram",
|
|
@@ -1510,10 +1614,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1510
1614
|
}]
|
|
1511
1615
|
}], propDecorators: { options: [{
|
|
1512
1616
|
type: Input
|
|
1513
|
-
}], data: [{
|
|
1514
|
-
type: Input
|
|
1515
|
-
}], url: [{
|
|
1516
|
-
type: Input
|
|
1517
1617
|
}], modelOptions: [{
|
|
1518
1618
|
type: Input
|
|
1519
1619
|
}] } });
|
|
@@ -1555,12 +1655,12 @@ class SeriesBasedChartComponent {
|
|
|
1555
1655
|
ngOnDestroy() {
|
|
1556
1656
|
this.chart?.destroy();
|
|
1557
1657
|
}
|
|
1558
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1559
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1658
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SeriesBasedChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1659
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SeriesBasedChartComponent }); }
|
|
1560
1660
|
}
|
|
1561
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1661
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SeriesBasedChartComponent, decorators: [{
|
|
1562
1662
|
type: Injectable
|
|
1563
|
-
}], ctorParameters:
|
|
1663
|
+
}], ctorParameters: () => [], propDecorators: { data: [{
|
|
1564
1664
|
type: Input
|
|
1565
1665
|
}], url: [{
|
|
1566
1666
|
type: Input
|
|
@@ -1575,10 +1675,10 @@ class ColumnChartComponent extends SeriesBasedChartComponent {
|
|
|
1575
1675
|
createChart(el, options) {
|
|
1576
1676
|
return new ColumnChart(el, options);
|
|
1577
1677
|
}
|
|
1578
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1579
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1678
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ColumnChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1679
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ColumnChartComponent, selector: "vjs-column-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1580
1680
|
}
|
|
1581
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ColumnChartComponent, decorators: [{
|
|
1582
1682
|
type: Component,
|
|
1583
1683
|
args: [{
|
|
1584
1684
|
selector: "vjs-column-chart",
|
|
@@ -1599,10 +1699,10 @@ class BarChartComponent extends SeriesBasedChartComponent {
|
|
|
1599
1699
|
createChart(el, options) {
|
|
1600
1700
|
return new BarChart(el, options);
|
|
1601
1701
|
}
|
|
1602
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1603
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1702
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BarChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1703
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BarChartComponent, selector: "vjs-bar-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1604
1704
|
}
|
|
1605
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BarChartComponent, decorators: [{
|
|
1606
1706
|
type: Component,
|
|
1607
1707
|
args: [{
|
|
1608
1708
|
selector: "vjs-bar-chart",
|
|
@@ -1658,16 +1758,16 @@ class DiagramPaletteComponent {
|
|
|
1658
1758
|
this.$init(this.inputDiagram);
|
|
1659
1759
|
}
|
|
1660
1760
|
}
|
|
1661
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1662
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1761
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiagramPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1762
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DiagramPaletteComponent, selector: "vjs-diagram-palette", inputs: { fill: "fill", outline: "outline", dragSize: "dragSize", inspector: "inspector", iconSize: "iconSize", showLabels: "showLabels", paletteStrokeWidth: "paletteStrokeWidth", showAllMessage: "showAllMessage", onCellAdded: "onCellAdded", mode: "mode", allowClickToAdd: "allowClickToAdd", autoExitDrawMode: "autoExitDrawMode", selectAfterAdd: "selectAfterAdd", inputDiagram: ["diagram", "inputDiagram"], onVertexAdded: "onVertexAdded", preparedShapes: "preparedShapes" }, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1663
1763
|
}
|
|
1664
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1764
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DiagramPaletteComponent, decorators: [{
|
|
1665
1765
|
type: Component,
|
|
1666
1766
|
args: [{
|
|
1667
1767
|
selector: "vjs-diagram-palette",
|
|
1668
1768
|
template: `<div></div>`,
|
|
1669
1769
|
}]
|
|
1670
|
-
}], ctorParameters:
|
|
1770
|
+
}], ctorParameters: () => [], propDecorators: { fill: [{
|
|
1671
1771
|
type: Input
|
|
1672
1772
|
}], outline: [{
|
|
1673
1773
|
type: Input
|
|
@@ -1707,10 +1807,10 @@ class XYChartComponent extends SeriesBasedChartComponent {
|
|
|
1707
1807
|
createChart(el, options) {
|
|
1708
1808
|
return new CategoryValueChart(el, options);
|
|
1709
1809
|
}
|
|
1710
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1711
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1810
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: XYChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1811
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: XYChartComponent, selector: "vjs-xy-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1712
1812
|
}
|
|
1713
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1813
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: XYChartComponent, decorators: [{
|
|
1714
1814
|
type: Component,
|
|
1715
1815
|
args: [{
|
|
1716
1816
|
selector: "vjs-xy-chart",
|
|
@@ -1731,10 +1831,10 @@ class LineChartComponent extends SeriesBasedChartComponent {
|
|
|
1731
1831
|
createChart(el, options) {
|
|
1732
1832
|
return new LineChart(el, options);
|
|
1733
1833
|
}
|
|
1734
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1735
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1834
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LineChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1835
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LineChartComponent, selector: "vjs-line-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1736
1836
|
}
|
|
1737
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1837
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LineChartComponent, decorators: [{
|
|
1738
1838
|
type: Component,
|
|
1739
1839
|
args: [{
|
|
1740
1840
|
selector: "vjs-line-chart",
|
|
@@ -1755,10 +1855,10 @@ class AreaChartComponent extends SeriesBasedChartComponent {
|
|
|
1755
1855
|
createChart(el, options) {
|
|
1756
1856
|
return new AreaChart(el, options);
|
|
1757
1857
|
}
|
|
1758
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1759
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1858
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AreaChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1859
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AreaChartComponent, selector: "vjs-area-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1760
1860
|
}
|
|
1761
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1861
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AreaChartComponent, decorators: [{
|
|
1762
1862
|
type: Component,
|
|
1763
1863
|
args: [{
|
|
1764
1864
|
selector: "vjs-area-chart",
|
|
@@ -1779,10 +1879,10 @@ class PieChartComponent extends SeriesBasedChartComponent {
|
|
|
1779
1879
|
createChart(el, options) {
|
|
1780
1880
|
return new PieChart(el, options);
|
|
1781
1881
|
}
|
|
1782
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1783
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1882
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PieChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1883
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PieChartComponent, selector: "vjs-pie-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1784
1884
|
}
|
|
1785
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1885
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PieChartComponent, decorators: [{
|
|
1786
1886
|
type: Component,
|
|
1787
1887
|
args: [{
|
|
1788
1888
|
selector: "vjs-pie-chart",
|
|
@@ -1803,10 +1903,10 @@ class ScatterChartComponent extends SeriesBasedChartComponent {
|
|
|
1803
1903
|
createChart(el, options) {
|
|
1804
1904
|
return new ScatterChart(el, options);
|
|
1805
1905
|
}
|
|
1806
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1807
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1906
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ScatterChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1907
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ScatterChartComponent, selector: "vjs-scatter-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1808
1908
|
}
|
|
1809
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1909
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ScatterChartComponent, decorators: [{
|
|
1810
1910
|
type: Component,
|
|
1811
1911
|
args: [{
|
|
1812
1912
|
selector: "vjs-scatter-chart",
|
|
@@ -1827,10 +1927,10 @@ class BubbleChartComponent extends SeriesBasedChartComponent {
|
|
|
1827
1927
|
createChart(el, options) {
|
|
1828
1928
|
return new BubbleChart(el, options);
|
|
1829
1929
|
}
|
|
1830
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1831
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1930
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BubbleChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1931
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BubbleChartComponent, selector: "vjs-bubble-chart", inputs: { data: "data", url: "url", options: "options", useModel: "useModel" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1832
1932
|
}
|
|
1833
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BubbleChartComponent, decorators: [{
|
|
1834
1934
|
type: Component,
|
|
1835
1935
|
args: [{
|
|
1836
1936
|
selector: "vjs-bubble-chart",
|
|
@@ -1896,16 +1996,16 @@ class SankeyChartComponent {
|
|
|
1896
1996
|
ngOnDestroy() {
|
|
1897
1997
|
this.chart?.destroy();
|
|
1898
1998
|
}
|
|
1899
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1900
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1999
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SankeyChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2000
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SankeyChartComponent, selector: "vjs-sankey-chart", inputs: { csvData: "csvData", jsonData: "jsonData", url: "url", interactive: "interactive", pivot: "pivot", options: "options", useModel: "useModel" }, usesOnChanges: true, ngImport: i0, template: `<div></div>`, isInline: true }); }
|
|
1901
2001
|
}
|
|
1902
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2002
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SankeyChartComponent, decorators: [{
|
|
1903
2003
|
type: Component,
|
|
1904
2004
|
args: [{
|
|
1905
2005
|
selector: "vjs-sankey-chart",
|
|
1906
2006
|
template: `<div></div>`
|
|
1907
2007
|
}]
|
|
1908
|
-
}], ctorParameters:
|
|
2008
|
+
}], ctorParameters: () => [], propDecorators: { csvData: [{
|
|
1909
2009
|
type: Input
|
|
1910
2010
|
}], jsonData: [{
|
|
1911
2011
|
type: Input
|
|
@@ -1946,14 +2046,14 @@ class DecoratorComponent {
|
|
|
1946
2046
|
this.surface.unfixElement(this.el.nativeElement.firstElementChild);
|
|
1947
2047
|
}
|
|
1948
2048
|
}
|
|
1949
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1950
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2049
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecoratorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2050
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DecoratorComponent, selector: "vjs-decorator", inputs: { placement: "placement", position: "position", constraints: "constraints" }, ngImport: i0, template: `
|
|
1951
2051
|
<div style="display:inline-block;">
|
|
1952
2052
|
<ng-content></ng-content>
|
|
1953
2053
|
</div>
|
|
1954
2054
|
`, isInline: true }); }
|
|
1955
2055
|
}
|
|
1956
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2056
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DecoratorComponent, decorators: [{
|
|
1957
2057
|
type: Component,
|
|
1958
2058
|
args: [{
|
|
1959
2059
|
selector: "vjs-decorator",
|
|
@@ -1972,13 +2072,409 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1972
2072
|
}] } });
|
|
1973
2073
|
|
|
1974
2074
|
|
|
2075
|
+
class SurfacePopupComponent {
|
|
2076
|
+
constructor() {
|
|
2077
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
2078
|
+
this.vjs = inject(VisuallyJsService);
|
|
2079
|
+
this.initialized = false;
|
|
2080
|
+
this.current = signal(null);
|
|
2081
|
+
this.model = this.vjs.model;
|
|
2082
|
+
this.ui = this.vjs.ui;
|
|
2083
|
+
this.display = computed(() => (this.current() == null ? "none" : "block"));
|
|
2084
|
+
}
|
|
2085
|
+
$hide() {
|
|
2086
|
+
this.popupHandler?.$hide();
|
|
2087
|
+
}
|
|
2088
|
+
ngAfterViewInit() {
|
|
2089
|
+
this.vjs.getSurface((surface) => {
|
|
2090
|
+
if (!this.initialized) {
|
|
2091
|
+
this.initialized = true;
|
|
2092
|
+
this.popupHandler = new PopupHandler(this.selector, this.container.nativeElement, surface, (v) => {
|
|
2093
|
+
this.current.set(v);
|
|
2094
|
+
requestAnimationFrame(() => this.cdr.detectChanges());
|
|
2095
|
+
}, this.anchor);
|
|
2096
|
+
}
|
|
2097
|
+
});
|
|
2098
|
+
}
|
|
2099
|
+
ngOnDestroy() {
|
|
2100
|
+
if (this.popupHandler) {
|
|
2101
|
+
this.popupHandler.$destroy();
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SurfacePopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SurfacePopupComponent, selector: "vjs-surface-popup", inputs: { selector: "selector", anchor: "anchor" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "\n <div #container class=\"vjs-surface-popup\" [style.display]=\"display()\" style=\"position:absolute\">\n <ng-container *ngIf=\"current()\">\n <ng-container *ngTemplateOutlet=\"template; context: { vertex: current(), model: model(), ui: ui(), hide:$hide }\"></ng-container>\n </ng-container>\n </div>\n ", isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
2106
|
+
}
|
|
2107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SurfacePopupComponent, decorators: [{
|
|
2108
|
+
type: Component,
|
|
2109
|
+
args: [{
|
|
2110
|
+
selector: "vjs-surface-popup",
|
|
2111
|
+
template: `
|
|
2112
|
+
<div #container class="${CLASS_SURFACE_POPUP}" [style.display]="display()" style="position:absolute">
|
|
2113
|
+
<ng-container *ngIf="current()">
|
|
2114
|
+
<ng-container *ngTemplateOutlet="template; context: { vertex: current(), model: model(), ui: ui(), hide:$hide }"></ng-container>
|
|
2115
|
+
</ng-container>
|
|
2116
|
+
</div>
|
|
2117
|
+
`
|
|
2118
|
+
}]
|
|
2119
|
+
}], propDecorators: { selector: [{
|
|
2120
|
+
type: Input,
|
|
2121
|
+
args: [{ required: true }]
|
|
2122
|
+
}], anchor: [{
|
|
2123
|
+
type: Input
|
|
2124
|
+
}], template: [{
|
|
2125
|
+
type: ContentChild,
|
|
2126
|
+
args: [TemplateRef]
|
|
2127
|
+
}], container: [{
|
|
2128
|
+
type: ViewChild,
|
|
2129
|
+
args: ["container"]
|
|
2130
|
+
}] } });
|
|
2131
|
+
|
|
2132
|
+
|
|
2133
|
+
class PaperComponent {
|
|
2134
|
+
constructor() {
|
|
2135
|
+
|
|
2136
|
+
this.data = input();
|
|
2137
|
+
|
|
2138
|
+
this.url = input();
|
|
2139
|
+
|
|
2140
|
+
this.vertexEvent = new EventEmitter();
|
|
2141
|
+
this.$el = inject(ElementRef);
|
|
2142
|
+
this.$viewContainerRef = inject(ViewContainerRef);
|
|
2143
|
+
this.$ngZone = inject(NgZone);
|
|
2144
|
+
this.$vjs = inject(VisuallyJsService);
|
|
2145
|
+
this._dataEffect = effect(() => {
|
|
2146
|
+
const currentData = this.data();
|
|
2147
|
+
if (currentData) {
|
|
2148
|
+
if (this.model) {
|
|
2149
|
+
this.model.clear();
|
|
2150
|
+
this.model.load({ data: currentData });
|
|
2151
|
+
}
|
|
2152
|
+
}
|
|
2153
|
+
});
|
|
2154
|
+
this._urlEffect = effect(() => {
|
|
2155
|
+
const currentUrl = this.url();
|
|
2156
|
+
if (currentUrl) {
|
|
2157
|
+
// Respond to changes in the url here.
|
|
2158
|
+
// For example, if you need to reload the model with new data:
|
|
2159
|
+
if (this.model) {
|
|
2160
|
+
this.model.clear();
|
|
2161
|
+
this.model.load({ url: currentUrl });
|
|
2162
|
+
}
|
|
2163
|
+
}
|
|
2164
|
+
});
|
|
2165
|
+
}
|
|
2166
|
+
|
|
2167
|
+
getNativeElement(component) {
|
|
2168
|
+
return component.location.nativeElement.childNodes[0];
|
|
2169
|
+
}
|
|
2170
|
+
_getComponent(el, tryParent) {
|
|
2171
|
+
if (el == null) {
|
|
2172
|
+
return null;
|
|
2173
|
+
}
|
|
2174
|
+
else {
|
|
2175
|
+
let vjc = el._visuallyJsNgComponent;
|
|
2176
|
+
if (vjc == null && tryParent && el.parentNode != null) {
|
|
2177
|
+
vjc = el.parentNode._visuallyJsNgComponent;
|
|
2178
|
+
}
|
|
2179
|
+
return vjc;
|
|
2180
|
+
}
|
|
2181
|
+
}
|
|
2182
|
+
_getComponentThen(el, then, tryParent) {
|
|
2183
|
+
const c = this._getComponent(el, tryParent);
|
|
2184
|
+
if (c != null) {
|
|
2185
|
+
then(c);
|
|
2186
|
+
}
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
nodeOrGroupUpdated(params) {
|
|
2190
|
+
const info = this.paper.getObjectInfo(params.vertex, false);
|
|
2191
|
+
this._getComponentThen(info.el, (component) => {
|
|
2192
|
+
component.data = params.vertex.data;
|
|
2193
|
+
component.$data?.set(component.data);
|
|
2194
|
+
if (component.changeDetectorRef) {
|
|
2195
|
+
component.changeDetectorRef.detectChanges();
|
|
2196
|
+
}
|
|
2197
|
+
}, false);
|
|
2198
|
+
}
|
|
2199
|
+
portUpdated(params) {
|
|
2200
|
+
const info = this.paper.getObjectInfo(params.port, false);
|
|
2201
|
+
this._getComponentThen(info.el, (component) => {
|
|
2202
|
+
if (component instanceof BasePortComponent) {
|
|
2203
|
+
component.data = params.port.data;
|
|
2204
|
+
if (component.changeDetectorRef) {
|
|
2205
|
+
component.changeDetectorRef.detectChanges();
|
|
2206
|
+
}
|
|
2207
|
+
}
|
|
2208
|
+
}, true);
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
edgeUpdated(params) {
|
|
2212
|
+
const connection = this.paper.getRenderedConnection(params.edge.id);
|
|
2213
|
+
if (connection) {
|
|
2214
|
+
for (let id in connection.overlays) {
|
|
2215
|
+
const canvas = connection.overlays[id].contentElement;
|
|
2216
|
+
this._getComponentThen(canvas, (component) => {
|
|
2217
|
+
if (component.changeDetectorRef != null) {
|
|
2218
|
+
component.changeDetectorRef.detectChanges();
|
|
2219
|
+
}
|
|
2220
|
+
}, false);
|
|
2221
|
+
}
|
|
2222
|
+
}
|
|
2223
|
+
}
|
|
2224
|
+
edgeAddedRemoved(params) {
|
|
2225
|
+
const info = this.paper.getObjectInfo(params.edge.source, false);
|
|
2226
|
+
if (info.el) {
|
|
2227
|
+
this._getComponentThen(info.el, (component) => {
|
|
2228
|
+
try {
|
|
2229
|
+
;
|
|
2230
|
+
component.$updateEdges();
|
|
2231
|
+
if (component.changeDetectorRef) {
|
|
2232
|
+
component.changeDetectorRef.detectChanges();
|
|
2233
|
+
}
|
|
2234
|
+
}
|
|
2235
|
+
catch (e) { }
|
|
2236
|
+
}, false);
|
|
2237
|
+
}
|
|
2238
|
+
const info2 = this.paper.getObjectInfo(params.edge.target, false);
|
|
2239
|
+
if (info2.el && info.obj.getFullId() !== info2.obj.getFullId()) {
|
|
2240
|
+
this._getComponentThen(info2.el, (component) => {
|
|
2241
|
+
try {
|
|
2242
|
+
;
|
|
2243
|
+
component.$updateEdges();
|
|
2244
|
+
// tslint:disable-next-line:align
|
|
2245
|
+
if (component.changeDetectorRef) {
|
|
2246
|
+
component.changeDetectorRef.detectChanges();
|
|
2247
|
+
}
|
|
2248
|
+
}
|
|
2249
|
+
catch (e) { }
|
|
2250
|
+
}, false);
|
|
2251
|
+
}
|
|
2252
|
+
}
|
|
2253
|
+
|
|
2254
|
+
_processAngularOverlays(view) {
|
|
2255
|
+
const self = this;
|
|
2256
|
+
const edgeTypes = view.edges || {};
|
|
2257
|
+
for (let edgeTypeId in edgeTypes) {
|
|
2258
|
+
const edgeType = edgeTypes[edgeTypeId];
|
|
2259
|
+
if (edgeType.overlays != null) {
|
|
2260
|
+
edgeType.overlays = edgeType.overlays.map((o) => {
|
|
2261
|
+
if (typeof o === "string") {
|
|
2262
|
+
return o;
|
|
2263
|
+
}
|
|
2264
|
+
else {
|
|
2265
|
+
const fo = o;
|
|
2266
|
+
if (fo.type === AngularComponentOverlayType) {
|
|
2267
|
+
const newSpec = Object.assign(fo, {
|
|
2268
|
+
type: OVERLAY_TYPE_CUSTOM,
|
|
2269
|
+
});
|
|
2270
|
+
newSpec.options = (newSpec.options || {});
|
|
2271
|
+
newSpec.options.create = (connection) => {
|
|
2272
|
+
const el = document.createElement(ELEMENT_DIV);
|
|
2273
|
+
let createdComponent = self.$viewContainerRef.createComponent(newSpec.options.component);
|
|
2274
|
+
let angularOverlayComponent = createdComponent.instance;
|
|
2275
|
+
let nativeEl = createdComponent.location.nativeElement.childNodes[0];
|
|
2276
|
+
el.appendChild(nativeEl);
|
|
2277
|
+
el._visuallyJsNgComponent = angularOverlayComponent;
|
|
2278
|
+
|
|
2279
|
+
if (connection != null) {
|
|
2280
|
+
const edge = connection.edge;
|
|
2281
|
+
angularOverlayComponent.edge = edge;
|
|
2282
|
+
angularOverlayComponent.data = edge.data;
|
|
2283
|
+
}
|
|
2284
|
+
angularOverlayComponent.model = self.model;
|
|
2285
|
+
angularOverlayComponent.ui = self.paper;
|
|
2286
|
+
createdComponent.changeDetectorRef.detectChanges();
|
|
2287
|
+
return el;
|
|
2288
|
+
};
|
|
2289
|
+
return newSpec;
|
|
2290
|
+
}
|
|
2291
|
+
else {
|
|
2292
|
+
return fo;
|
|
2293
|
+
}
|
|
2294
|
+
}
|
|
2295
|
+
});
|
|
2296
|
+
}
|
|
2297
|
+
}
|
|
2298
|
+
return view;
|
|
2299
|
+
}
|
|
2300
|
+
|
|
2301
|
+
save(options) {
|
|
2302
|
+
this.paper.save(options);
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
exportData(options) {
|
|
2306
|
+
return this.paper.model.exportData(options);
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
dataLoadEnd() {
|
|
2310
|
+
setTimeout(() => {
|
|
2311
|
+
if (this.paper != null) {
|
|
2312
|
+
this.paper.repaintEverything();
|
|
2313
|
+
}
|
|
2314
|
+
}, 0);
|
|
2315
|
+
}
|
|
2316
|
+
$removeNgElement(el) {
|
|
2317
|
+
if (el._ref != null) {
|
|
2318
|
+
el._ref.destroy();
|
|
2319
|
+
}
|
|
2320
|
+
if (el.parentNode != null) {
|
|
2321
|
+
el.parentNode.removeChild(el);
|
|
2322
|
+
}
|
|
2323
|
+
}
|
|
2324
|
+
|
|
2325
|
+
ngAfterViewInit() {
|
|
2326
|
+
this.$ngZone.runOutsideAngular(() => {
|
|
2327
|
+
const view = this._processAngularOverlays(this.viewOptions || {});
|
|
2328
|
+
const self = this;
|
|
2329
|
+
this.renderOptions = this.renderOptions || {};
|
|
2330
|
+
const render = (directiveId, data, instance, objectType, paper, def, modelObject, eventInfo) => {
|
|
2331
|
+
let component;
|
|
2332
|
+
if (def.component == null) {
|
|
2333
|
+
if (isGroup(modelObject)) {
|
|
2334
|
+
component = DefaultGroupComponent;
|
|
2335
|
+
}
|
|
2336
|
+
else {
|
|
2337
|
+
component = DefaultNodeComponent;
|
|
2338
|
+
}
|
|
2339
|
+
}
|
|
2340
|
+
else {
|
|
2341
|
+
component = def.component;
|
|
2342
|
+
}
|
|
2343
|
+
let createdComponent = self.$viewContainerRef.createComponent(component);
|
|
2344
|
+
let _componentRef = createdComponent.instance;
|
|
2345
|
+
_componentRef.data = data || {};
|
|
2346
|
+
_componentRef.model = model;
|
|
2347
|
+
_componentRef.paper = paper;
|
|
2348
|
+
_componentRef.ui = paper;
|
|
2349
|
+
_componentRef.modelObject = modelObject;
|
|
2350
|
+
// get the reflection data for the component
|
|
2351
|
+
const componentInfo = reflectComponentType(component);
|
|
2352
|
+
// ..and populate any declared inputs from data
|
|
2353
|
+
componentInfo.inputs.forEach((pt) => {
|
|
2354
|
+
const pv = _componentRef.data[pt.propName];
|
|
2355
|
+
if (pv != null) {
|
|
2356
|
+
_componentRef[pt.propName] = pv;
|
|
2357
|
+
}
|
|
2358
|
+
});
|
|
2359
|
+
// map to any outputs
|
|
2360
|
+
componentInfo.outputs.forEach((pt) => {
|
|
2361
|
+
_componentRef[pt.propName].subscribe((d) => self.vertexEvent.emit({
|
|
2362
|
+
vertex: modelObject,
|
|
2363
|
+
event: pt.propName,
|
|
2364
|
+
payload: d,
|
|
2365
|
+
component: createdComponent,
|
|
2366
|
+
}));
|
|
2367
|
+
});
|
|
2368
|
+
// if angular def has 'inputs' set, set them on the component. this is different to the mechanism above, in which values are extracted from
|
|
2369
|
+
// each node's backing data. here we inject values either as a string or from some arbitrary function.
|
|
2370
|
+
if (def.inputs != null) {
|
|
2371
|
+
for (let k in def.inputs) {
|
|
2372
|
+
const v = def.inputs[k];
|
|
2373
|
+
const value = typeof v === "string" ? v : v(modelObject);
|
|
2374
|
+
_componentRef[k] = value;
|
|
2375
|
+
}
|
|
2376
|
+
}
|
|
2377
|
+
createdComponent.changeDetectorRef.detectChanges();
|
|
2378
|
+
// TODO this should not be necessary
|
|
2379
|
+
const nativeElement = self.getNativeElement(createdComponent);
|
|
2380
|
+
_componentRef._el = nativeElement;
|
|
2381
|
+
_componentRef._el._visuallyJsNgComponent = _componentRef;
|
|
2382
|
+
_componentRef._el._ref = createdComponent; // we store _ref so we can call `destroy` on it later if the node is removed.
|
|
2383
|
+
paper.$vertexRendered(modelObject, nativeElement, def, eventInfo);
|
|
2384
|
+
};
|
|
2385
|
+
const templateRenderer = {
|
|
2386
|
+
asynchronous: false,
|
|
2387
|
+
reactive: true,
|
|
2388
|
+
usesWrapperElement: false,
|
|
2389
|
+
update: (el, data, v, renderer) => { },
|
|
2390
|
+
render,
|
|
2391
|
+
rerender: (directiveId, data, instance, objectType, paper, def, modelObject, eventInfo, originalElement) => {
|
|
2392
|
+
this.$removeNgElement(originalElement);
|
|
2393
|
+
render(directiveId, data, instance, objectType, paper, def, modelObject, eventInfo);
|
|
2394
|
+
},
|
|
2395
|
+
cleanupVertex: (objId, el) => {
|
|
2396
|
+
this.$removeNgElement(el);
|
|
2397
|
+
},
|
|
2398
|
+
cleanupPort: (objId, el) => {
|
|
2399
|
+
this.$removeNgElement(el);
|
|
2400
|
+
},
|
|
2401
|
+
};
|
|
2402
|
+
const renderParams = extend(this.renderOptions || {}, {
|
|
2403
|
+
view: view,
|
|
2404
|
+
});
|
|
2405
|
+
let model = this.inputModel || new BrowserUIAngularModel(this.modelOptions);
|
|
2406
|
+
this.model = model;
|
|
2407
|
+
this.paper = renderPaper(model, self.$el.nativeElement, templateRenderer, renderParams);
|
|
2408
|
+
this.$vjs.$setPaper(this.paper);
|
|
2409
|
+
// ----------------
|
|
2410
|
+
this.nodeUpdateFn = this.nodeOrGroupUpdated.bind(this);
|
|
2411
|
+
model.bind(EVENT_NODE_UPDATED, this.nodeUpdateFn);
|
|
2412
|
+
model.bind(EVENT_PORT_ADDED, this.nodeUpdateFn);
|
|
2413
|
+
model.bind(EVENT_GROUP_UPDATED, this.nodeUpdateFn);
|
|
2414
|
+
this.dataLoadEndFn = this.dataLoadEnd.bind(this);
|
|
2415
|
+
model.bind(EVENT_DATA_LOAD_END, this.dataLoadEndFn);
|
|
2416
|
+
this.portUpdateFn = this.portUpdated.bind(this);
|
|
2417
|
+
model.bind(EVENT_PORT_UPDATED, this.portUpdateFn);
|
|
2418
|
+
this.edgeUpdateFn = this.edgeUpdated.bind(this);
|
|
2419
|
+
model.bind(EVENT_EDGE_UPDATED, this.edgeUpdateFn);
|
|
2420
|
+
this.edgeAddFn = this.edgeAddedRemoved.bind(this);
|
|
2421
|
+
this.edgeRemoveFn = this.edgeAddedRemoved.bind(this);
|
|
2422
|
+
model.bind(EVENT_EDGE_ADDED, this.edgeAddFn);
|
|
2423
|
+
model.bind(EVENT_EDGE_REMOVED, this.edgeRemoveFn);
|
|
2424
|
+
const initialData = this.data();
|
|
2425
|
+
const initialUrl = this.url();
|
|
2426
|
+
if (initialData) {
|
|
2427
|
+
this.model.load({ data: initialData });
|
|
2428
|
+
}
|
|
2429
|
+
else if (initialUrl) {
|
|
2430
|
+
this.model.load({ url: initialUrl });
|
|
2431
|
+
}
|
|
2432
|
+
});
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
ngOnDestroy() {
|
|
2436
|
+
this.paper.destroy();
|
|
2437
|
+
this.model.unbind(EVENT_NODE_UPDATED, this.nodeUpdateFn);
|
|
2438
|
+
this.model.unbind(EVENT_GROUP_UPDATED, this.nodeUpdateFn);
|
|
2439
|
+
this.model.unbind(EVENT_PORT_ADDED, this.nodeUpdateFn);
|
|
2440
|
+
this.model.unbind(EVENT_PORT_UPDATED, this.portUpdateFn);
|
|
2441
|
+
this.model.unbind(EVENT_EDGE_UPDATED, this.edgeUpdateFn);
|
|
2442
|
+
this.model.unbind(EVENT_EDGE_ADDED, this.edgeAddFn);
|
|
2443
|
+
this.model.unbind(EVENT_EDGE_REMOVED, this.edgeRemoveFn);
|
|
2444
|
+
this.model.unbind(EVENT_DATA_LOAD_END, this.dataLoadEndFn);
|
|
2445
|
+
this.paper.unbind(EVENT_INTERNAL_CONNECTION, this.edgeAddFn);
|
|
2446
|
+
}
|
|
2447
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2448
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: PaperComponent, selector: "vjs-paper", inputs: { inputModel: { classPropertyName: "inputModel", publicName: "model", isSignal: false, isRequired: false, transformFunction: null }, viewOptions: { classPropertyName: "viewOptions", publicName: "viewOptions", isSignal: false, isRequired: false, transformFunction: null }, renderOptions: { classPropertyName: "renderOptions", publicName: "renderOptions", isSignal: false, isRequired: false, transformFunction: null }, modelOptions: { classPropertyName: "modelOptions", publicName: "modelOptions", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { vertexEvent: "vertexEvent" }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
2449
|
+
}
|
|
2450
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PaperComponent, decorators: [{
|
|
2451
|
+
type: Component,
|
|
2452
|
+
args: [{
|
|
2453
|
+
selector: "vjs-paper",
|
|
2454
|
+
template: `<ng-content></ng-content>`
|
|
2455
|
+
}]
|
|
2456
|
+
}], propDecorators: { inputModel: [{
|
|
2457
|
+
type: Input,
|
|
2458
|
+
args: [{ alias: "model" }]
|
|
2459
|
+
}], viewOptions: [{
|
|
2460
|
+
type: Input
|
|
2461
|
+
}], renderOptions: [{
|
|
2462
|
+
type: Input
|
|
2463
|
+
}], modelOptions: [{
|
|
2464
|
+
type: Input
|
|
2465
|
+
}], vertexEvent: [{
|
|
2466
|
+
type: Output
|
|
2467
|
+
}] } });
|
|
2468
|
+
|
|
2469
|
+
|
|
1975
2470
|
class VisuallyJsModule {
|
|
1976
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1977
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
2471
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VisuallyJsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2472
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: VisuallyJsModule, declarations: [DefaultNodeComponent,
|
|
1978
2473
|
DefaultGroupComponent,
|
|
1979
2474
|
BasePortComponent,
|
|
1980
2475
|
MiniviewComponent,
|
|
1981
2476
|
SurfaceComponent,
|
|
2477
|
+
PaperComponent,
|
|
1982
2478
|
PaletteComponent,
|
|
1983
2479
|
ShapePaletteComponent,
|
|
1984
2480
|
DiagramPaletteComponent,
|
|
@@ -1998,8 +2494,10 @@ class VisuallyJsModule {
|
|
|
1998
2494
|
ScatterChartComponent,
|
|
1999
2495
|
BubbleChartComponent,
|
|
2000
2496
|
SankeyChartComponent,
|
|
2001
|
-
DecoratorComponent
|
|
2497
|
+
DecoratorComponent,
|
|
2498
|
+
SurfacePopupComponent], imports: [CommonModule], exports: [MiniviewComponent,
|
|
2002
2499
|
SurfaceComponent,
|
|
2500
|
+
PaperComponent,
|
|
2003
2501
|
PaletteComponent,
|
|
2004
2502
|
DiagramPaletteComponent,
|
|
2005
2503
|
ShapeComponent,
|
|
@@ -2018,10 +2516,11 @@ class VisuallyJsModule {
|
|
|
2018
2516
|
ScatterChartComponent,
|
|
2019
2517
|
BubbleChartComponent,
|
|
2020
2518
|
SankeyChartComponent,
|
|
2021
|
-
DecoratorComponent
|
|
2022
|
-
|
|
2519
|
+
DecoratorComponent,
|
|
2520
|
+
SurfacePopupComponent] }); }
|
|
2521
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VisuallyJsModule, imports: [CommonModule] }); }
|
|
2023
2522
|
}
|
|
2024
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2523
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VisuallyJsModule, decorators: [{
|
|
2025
2524
|
type: NgModule,
|
|
2026
2525
|
args: [{
|
|
2027
2526
|
imports: [CommonModule],
|
|
@@ -2031,6 +2530,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2031
2530
|
BasePortComponent,
|
|
2032
2531
|
MiniviewComponent,
|
|
2033
2532
|
SurfaceComponent,
|
|
2533
|
+
PaperComponent,
|
|
2034
2534
|
PaletteComponent,
|
|
2035
2535
|
ShapePaletteComponent,
|
|
2036
2536
|
DiagramPaletteComponent,
|
|
@@ -2050,11 +2550,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2050
2550
|
ScatterChartComponent,
|
|
2051
2551
|
BubbleChartComponent,
|
|
2052
2552
|
SankeyChartComponent,
|
|
2053
|
-
DecoratorComponent
|
|
2553
|
+
DecoratorComponent,
|
|
2554
|
+
SurfacePopupComponent
|
|
2054
2555
|
],
|
|
2055
2556
|
exports: [
|
|
2056
2557
|
MiniviewComponent,
|
|
2057
2558
|
SurfaceComponent,
|
|
2559
|
+
PaperComponent,
|
|
2058
2560
|
PaletteComponent,
|
|
2059
2561
|
DiagramPaletteComponent,
|
|
2060
2562
|
ShapeComponent,
|
|
@@ -2073,7 +2575,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2073
2575
|
ScatterChartComponent,
|
|
2074
2576
|
BubbleChartComponent,
|
|
2075
2577
|
SankeyChartComponent,
|
|
2076
|
-
DecoratorComponent
|
|
2578
|
+
DecoratorComponent,
|
|
2579
|
+
SurfacePopupComponent
|
|
2077
2580
|
]
|
|
2078
2581
|
}]
|
|
2079
2582
|
}] });
|
|
@@ -2143,12 +2646,12 @@ class InspectorComponent {
|
|
|
2143
2646
|
}
|
|
2144
2647
|
|
|
2145
2648
|
afterUpdate(ui) { }
|
|
2146
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2147
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
2649
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InspectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2650
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: InspectorComponent, inputs: { cssClass: "cssClass", showCloseButton: "showCloseButton", context: "context" }, ngImport: i0 }); }
|
|
2148
2651
|
}
|
|
2149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2652
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InspectorComponent, decorators: [{
|
|
2150
2653
|
type: Directive
|
|
2151
|
-
}], ctorParameters:
|
|
2654
|
+
}], ctorParameters: () => [], propDecorators: { cssClass: [{
|
|
2152
2655
|
type: Input
|
|
2153
2656
|
}], showCloseButton: [{
|
|
2154
2657
|
type: Input
|
|
@@ -2201,5 +2704,5 @@ function useVisuallyJsUpdate(callback) {
|
|
|
2201
2704
|
|
|
2202
2705
|
|
|
2203
2706
|
|
|
2204
|
-
export { AngularComponentOverlayType, AreaChartComponent, BarChartComponent, BaseAngularOverlayComponent, BaseGroupComponent, BaseNodeComponent, BasePortComponent, BaseVertexComponent, BrowserUIAngularModel, BubbleChartComponent, ColorPickerComponent, ColumnChartComponent, ControlsComponent, DecoratorComponent, DefaultGroupComponent, DefaultNodeComponent, DiagramComponent, DiagramPaletteComponent, EdgeTypePickerComponent, ExportControlsComponent, InspectorComponent, LineChartComponent, MiniviewComponent, PaletteComponent, PieChartComponent, SankeyChartComponent, ScatterChartComponent, SeriesBasedChartComponent, ShapeComponent, ShapePaletteComponent, SurfaceComponent, VisuallyJsModule, VisuallyJsService, XYChartComponent, useVisuallyJsUpdate, useZoom };
|
|
2707
|
+
export { AngularComponentOverlayType, AreaChartComponent, BarChartComponent, BaseAngularOverlayComponent, BaseGroupComponent, BaseNodeComponent, BasePortComponent, BaseVertexComponent, BrowserUIAngularModel, BubbleChartComponent, ColorPickerComponent, ColumnChartComponent, ControlsComponent, DecoratorComponent, DefaultGroupComponent, DefaultNodeComponent, DiagramComponent, DiagramPaletteComponent, EdgeTypePickerComponent, ExportControlsComponent, InspectorComponent, LineChartComponent, MiniviewComponent, PaletteComponent, PaperComponent, PieChartComponent, SankeyChartComponent, ScatterChartComponent, SeriesBasedChartComponent, ShapeComponent, ShapePaletteComponent, SurfaceComponent, SurfacePopupComponent, VisuallyJsModule, VisuallyJsService, XYChartComponent, useVisuallyJsUpdate, useZoom };
|
|
2205
2708
|
//# sourceMappingURL=visuallyjs-browser-ui-angular.mjs.map
|