@meshmakers/octo-process-diagrams 3.3.620 → 3.3.640
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.
|
@@ -3057,10 +3057,10 @@ class PrimitiveRendererRegistry {
|
|
|
3057
3057
|
}
|
|
3058
3058
|
return null;
|
|
3059
3059
|
}
|
|
3060
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3061
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3060
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PrimitiveRendererRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3061
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PrimitiveRendererRegistry, providedIn: 'root' });
|
|
3062
3062
|
}
|
|
3063
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PrimitiveRendererRegistry, decorators: [{
|
|
3064
3064
|
type: Injectable,
|
|
3065
3065
|
args: [{
|
|
3066
3066
|
providedIn: 'root'
|
|
@@ -3338,10 +3338,10 @@ class ExpressionEvaluatorService {
|
|
|
3338
3338
|
clearCache() {
|
|
3339
3339
|
this.expressionCache.clear();
|
|
3340
3340
|
}
|
|
3341
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3342
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3341
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ExpressionEvaluatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3342
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ExpressionEvaluatorService, providedIn: 'root' });
|
|
3343
3343
|
}
|
|
3344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ExpressionEvaluatorService, decorators: [{
|
|
3345
3345
|
type: Injectable,
|
|
3346
3346
|
args: [{
|
|
3347
3347
|
providedIn: 'root'
|
|
@@ -3719,10 +3719,10 @@ class SymbolRenderer {
|
|
|
3719
3719
|
}
|
|
3720
3720
|
return result;
|
|
3721
3721
|
}
|
|
3722
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3723
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3722
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3723
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolRenderer, providedIn: 'root' });
|
|
3724
3724
|
}
|
|
3725
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3725
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolRenderer, decorators: [{
|
|
3726
3726
|
type: Injectable,
|
|
3727
3727
|
args: [{
|
|
3728
3728
|
providedIn: 'root'
|
|
@@ -3815,10 +3815,10 @@ class GetSymbolLibrariesDtoGQL extends i1.Query {
|
|
|
3815
3815
|
constructor(apollo) {
|
|
3816
3816
|
super(apollo);
|
|
3817
3817
|
}
|
|
3818
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3819
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3818
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolLibrariesDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3819
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolLibrariesDtoGQL, providedIn: 'root' });
|
|
3820
3820
|
}
|
|
3821
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3821
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolLibrariesDtoGQL, decorators: [{
|
|
3822
3822
|
type: Injectable,
|
|
3823
3823
|
args: [{
|
|
3824
3824
|
providedIn: 'root'
|
|
@@ -3873,10 +3873,10 @@ class GetSymbolLibraryDtoGQL extends i1.Query {
|
|
|
3873
3873
|
constructor(apollo) {
|
|
3874
3874
|
super(apollo);
|
|
3875
3875
|
}
|
|
3876
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3877
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3876
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolLibraryDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3877
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolLibraryDtoGQL, providedIn: 'root' });
|
|
3878
3878
|
}
|
|
3879
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3879
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolLibraryDtoGQL, decorators: [{
|
|
3880
3880
|
type: Injectable,
|
|
3881
3881
|
args: [{
|
|
3882
3882
|
providedIn: 'root'
|
|
@@ -3907,10 +3907,10 @@ class CreateSymbolLibraryDtoGQL extends i1.Mutation {
|
|
|
3907
3907
|
constructor(apollo) {
|
|
3908
3908
|
super(apollo);
|
|
3909
3909
|
}
|
|
3910
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3911
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3910
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateSymbolLibraryDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3911
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateSymbolLibraryDtoGQL, providedIn: 'root' });
|
|
3912
3912
|
}
|
|
3913
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3913
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateSymbolLibraryDtoGQL, decorators: [{
|
|
3914
3914
|
type: Injectable,
|
|
3915
3915
|
args: [{
|
|
3916
3916
|
providedIn: 'root'
|
|
@@ -3941,10 +3941,10 @@ class UpdateSymbolLibraryDtoGQL extends i1.Mutation {
|
|
|
3941
3941
|
constructor(apollo) {
|
|
3942
3942
|
super(apollo);
|
|
3943
3943
|
}
|
|
3944
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3945
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3944
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateSymbolLibraryDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3945
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateSymbolLibraryDtoGQL, providedIn: 'root' });
|
|
3946
3946
|
}
|
|
3947
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3947
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateSymbolLibraryDtoGQL, decorators: [{
|
|
3948
3948
|
type: Injectable,
|
|
3949
3949
|
args: [{
|
|
3950
3950
|
providedIn: 'root'
|
|
@@ -3985,10 +3985,10 @@ class GetSymbolDefinitionDtoGQL extends i1.Query {
|
|
|
3985
3985
|
constructor(apollo) {
|
|
3986
3986
|
super(apollo);
|
|
3987
3987
|
}
|
|
3988
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3989
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3988
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolDefinitionDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3989
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolDefinitionDtoGQL, providedIn: 'root' });
|
|
3990
3990
|
}
|
|
3991
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3991
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolDefinitionDtoGQL, decorators: [{
|
|
3992
3992
|
type: Injectable,
|
|
3993
3993
|
args: [{
|
|
3994
3994
|
providedIn: 'root'
|
|
@@ -4023,10 +4023,10 @@ class CreateSymbolDefinitionDtoGQL extends i1.Mutation {
|
|
|
4023
4023
|
constructor(apollo) {
|
|
4024
4024
|
super(apollo);
|
|
4025
4025
|
}
|
|
4026
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4027
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
4026
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateSymbolDefinitionDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4027
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateSymbolDefinitionDtoGQL, providedIn: 'root' });
|
|
4028
4028
|
}
|
|
4029
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4029
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateSymbolDefinitionDtoGQL, decorators: [{
|
|
4030
4030
|
type: Injectable,
|
|
4031
4031
|
args: [{
|
|
4032
4032
|
providedIn: 'root'
|
|
@@ -4061,10 +4061,10 @@ class UpdateSymbolDefinitionDtoGQL extends i1.Mutation {
|
|
|
4061
4061
|
constructor(apollo) {
|
|
4062
4062
|
super(apollo);
|
|
4063
4063
|
}
|
|
4064
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4065
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
4064
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateSymbolDefinitionDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4065
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateSymbolDefinitionDtoGQL, providedIn: 'root' });
|
|
4066
4066
|
}
|
|
4067
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4067
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateSymbolDefinitionDtoGQL, decorators: [{
|
|
4068
4068
|
type: Injectable,
|
|
4069
4069
|
args: [{
|
|
4070
4070
|
providedIn: 'root'
|
|
@@ -4085,10 +4085,10 @@ class DeleteSymbolDefinitionDtoGQL extends i1.Mutation {
|
|
|
4085
4085
|
constructor(apollo) {
|
|
4086
4086
|
super(apollo);
|
|
4087
4087
|
}
|
|
4088
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4089
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
4088
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DeleteSymbolDefinitionDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4089
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DeleteSymbolDefinitionDtoGQL, providedIn: 'root' });
|
|
4090
4090
|
}
|
|
4091
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4091
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DeleteSymbolDefinitionDtoGQL, decorators: [{
|
|
4092
4092
|
type: Injectable,
|
|
4093
4093
|
args: [{
|
|
4094
4094
|
providedIn: 'root'
|
|
@@ -4551,10 +4551,10 @@ class SymbolLibraryService {
|
|
|
4551
4551
|
return defaultValue;
|
|
4552
4552
|
}
|
|
4553
4553
|
}
|
|
4554
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4555
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
4554
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4555
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryService, providedIn: 'root' });
|
|
4556
4556
|
}
|
|
4557
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4557
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryService, decorators: [{
|
|
4558
4558
|
type: Injectable,
|
|
4559
4559
|
args: [{
|
|
4560
4560
|
providedIn: 'root'
|
|
@@ -5677,10 +5677,10 @@ class SvgImportService {
|
|
|
5677
5677
|
return { x: pos.x, y: pos.y, width: 50, height: 50 };
|
|
5678
5678
|
}
|
|
5679
5679
|
}
|
|
5680
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5681
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5680
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SvgImportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5681
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SvgImportService, providedIn: 'root' });
|
|
5682
5682
|
}
|
|
5683
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5683
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SvgImportService, decorators: [{
|
|
5684
5684
|
type: Injectable,
|
|
5685
5685
|
args: [{
|
|
5686
5686
|
providedIn: 'root'
|
|
@@ -5721,10 +5721,10 @@ class GetProcessDiagramDtoGQL extends i1.Query {
|
|
|
5721
5721
|
constructor(apollo) {
|
|
5722
5722
|
super(apollo);
|
|
5723
5723
|
}
|
|
5724
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5725
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5724
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetProcessDiagramDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5725
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetProcessDiagramDtoGQL, providedIn: 'root' });
|
|
5726
5726
|
}
|
|
5727
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetProcessDiagramDtoGQL, decorators: [{
|
|
5728
5728
|
type: Injectable,
|
|
5729
5729
|
args: [{
|
|
5730
5730
|
providedIn: 'root'
|
|
@@ -5756,10 +5756,10 @@ class GetProcessDiagramsDtoGQL extends i1.Query {
|
|
|
5756
5756
|
constructor(apollo) {
|
|
5757
5757
|
super(apollo);
|
|
5758
5758
|
}
|
|
5759
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5760
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5759
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetProcessDiagramsDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5760
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetProcessDiagramsDtoGQL, providedIn: 'root' });
|
|
5761
5761
|
}
|
|
5762
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5762
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetProcessDiagramsDtoGQL, decorators: [{
|
|
5763
5763
|
type: Injectable,
|
|
5764
5764
|
args: [{
|
|
5765
5765
|
providedIn: 'root'
|
|
@@ -5789,10 +5789,10 @@ class CreateProcessDiagramDtoGQL extends i1.Mutation {
|
|
|
5789
5789
|
constructor(apollo) {
|
|
5790
5790
|
super(apollo);
|
|
5791
5791
|
}
|
|
5792
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5793
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5792
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateProcessDiagramDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5793
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateProcessDiagramDtoGQL, providedIn: 'root' });
|
|
5794
5794
|
}
|
|
5795
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5795
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: CreateProcessDiagramDtoGQL, decorators: [{
|
|
5796
5796
|
type: Injectable,
|
|
5797
5797
|
args: [{
|
|
5798
5798
|
providedIn: 'root'
|
|
@@ -5822,10 +5822,10 @@ class UpdateProcessDiagramDtoGQL extends i1.Mutation {
|
|
|
5822
5822
|
constructor(apollo) {
|
|
5823
5823
|
super(apollo);
|
|
5824
5824
|
}
|
|
5825
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5826
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5825
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateProcessDiagramDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5826
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateProcessDiagramDtoGQL, providedIn: 'root' });
|
|
5827
5827
|
}
|
|
5828
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5828
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: UpdateProcessDiagramDtoGQL, decorators: [{
|
|
5829
5829
|
type: Injectable,
|
|
5830
5830
|
args: [{
|
|
5831
5831
|
providedIn: 'root'
|
|
@@ -5846,10 +5846,10 @@ class DeleteProcessDiagramDtoGQL extends i1.Mutation {
|
|
|
5846
5846
|
constructor(apollo) {
|
|
5847
5847
|
super(apollo);
|
|
5848
5848
|
}
|
|
5849
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5850
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5849
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DeleteProcessDiagramDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5850
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DeleteProcessDiagramDtoGQL, providedIn: 'root' });
|
|
5851
5851
|
}
|
|
5852
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5852
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DeleteProcessDiagramDtoGQL, decorators: [{
|
|
5853
5853
|
type: Injectable,
|
|
5854
5854
|
args: [{
|
|
5855
5855
|
providedIn: 'root'
|
|
@@ -6084,10 +6084,10 @@ class ProcessDiagramDataService {
|
|
|
6084
6084
|
return defaultValue;
|
|
6085
6085
|
}
|
|
6086
6086
|
}
|
|
6087
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6088
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
6087
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDiagramDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6088
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDiagramDataService, providedIn: 'root' });
|
|
6089
6089
|
}
|
|
6090
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6090
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDiagramDataService, decorators: [{
|
|
6091
6091
|
type: Injectable,
|
|
6092
6092
|
args: [{
|
|
6093
6093
|
providedIn: 'root'
|
|
@@ -6269,10 +6269,10 @@ class DockviewComponent {
|
|
|
6269
6269
|
});
|
|
6270
6270
|
this.disposables.push(() => willDropDisposable.dispose());
|
|
6271
6271
|
}
|
|
6272
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6273
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DockviewComponent, isStandalone: true, selector: "mm-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", className: "className", hideBorders: "hideBorders", locked: "locked", disableAutoResizing: "disableAutoResizing", disableFloatingGroups: "disableFloatingGroups" }, outputs: { ready: "ready", didDrop: "didDrop", willDrop: "willDrop" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["dockviewContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #dockviewContainer class="dv-dockview-container"></div>', isInline: true, styles: [".dv-scrollable{position:relative;overflow:hidden}.dv-scrollable .dv-scrollbar{position:absolute;border-radius:2px;background-color:transparent;will-change:background-color,transform;transform:translateZ(0);backface-visibility:hidden;transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:1s;transition-delay:0s}.dv-scrollable .dv-scrollbar-horizontal{bottom:0;left:0;height:4px}.dv-scrollable .dv-scrollbar-vertical{right:0;top:0;width:4px}.dv-scrollable:hover .dv-scrollbar,.dv-scrollable.dv-scrollable-resizing .dv-scrollbar,.dv-scrollable.dv-scrollable-scrolling .dv-scrollbar{background-color:var(--dv-scrollbar-background-color, rgba(255, 255, 255, .25))}.dv-svg{display:inline-block;fill:currentcolor;line-height:1;stroke:currentcolor;stroke-width:0}.dockview-theme-dark{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2)}.dockview-theme-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-light{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: white;--dv-tabs-and-actions-container-background-color: #f3f3f3;--dv-activegroup-visiblepanel-tab-background-color: white;--dv-activegroup-hiddenpanel-tab-background-color: #ececec;--dv-inactivegroup-visiblepanel-tab-background-color: white;--dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;--dv-tab-divider-color: white;--dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .35);--dv-separator-border: rgba(128, 128, 128, .35);--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-scrollbar-background-color: rgba(0, 0, 0, .25)}.dockview-theme-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2);--dv-tabs-and-actions-container-background-color: #2d2d30;--dv-tabs-and-actions-container-height: 20px;--dv-tabs-and-actions-container-font-size: 11px;--dv-activegroup-visiblepanel-tab-background-color: #007acc;--dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: white;--dv-inactivegroup-visiblepanel-tab-color: white;--dv-inactivegroup-hiddenpanel-tab-color: white}.dockview-theme-vs .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-activegroup-hiddenpanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color)}.dockview-theme-abyss{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-color-abyss-dark: #000c18;--dv-color-abyss: #10192c;--dv-color-abyss-light: #1c1c2a;--dv-color-abyss-lighter: #2b2b4a;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var( --dv-color-abyss-light );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-activegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-inactivegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-tab-divider-color: var(--dv-color-abyss-lighter);--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .25);--dv-separator-border: var(--dv-color-abyss-lighter);--dv-paneview-header-border-color: var(--dv-color-abyss-lighter);--dv-paneview-active-outline-color: #596f99}.dockview-theme-abyss .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #282a36;--dv-tabs-and-actions-container-background-color: #191a21;--dv-activegroup-visiblepanel-tab-background-color: #282a36;--dv-activegroup-hiddenpanel-tab-background-color: #21222c;--dv-inactivegroup-visiblepanel-tab-background-color: #282a36;--dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;--dv-tab-divider-color: #191a21;--dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);--dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);--dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, .5);--dv-separator-border: #bd93f9;--dv-paneview-header-border-color: #bd93f9;--dv-paneview-active-outline-color: #6272a4}.dockview-theme-dracula .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;top:0;content:\"\";width:100%;height:1px;background-color:#94527e;z-index:999}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:\"\";width:100%;height:1px;background-color:#5e3d5a;z-index:999}.dockview-theme-replit{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;box-sizing:border-box;padding:10px;background-color:#ebeced;--dv-group-view-background-color: #ebeced;--dv-tabs-and-actions-container-background-color: #fcfcfc;--dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;--dv-activegroup-hiddenpanel-tab-background-color: #fcfcfc;--dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;--dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);--dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-sash-color: #cfd1d3;--dv-active-sash-color: #babbbb}.dockview-theme-replit .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-replit .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-replit .dv-resize-container{border-radius:10px!important;border:none}.dockview-theme-replit .dv-groupview{overflow:hidden;border-radius:10px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container{border-bottom:1px solid rgba(128,128,128,.35)}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab{margin:4px;border-radius:8px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab:hover{background-color:#e4e5e6!important}.dockview-theme-replit .dv-groupview .dv-content-container{background-color:#fcfcfc}.dockview-theme-replit .dv-groupview.dv-active-group{border:1px solid rgba(128,128,128,.35)}.dockview-theme-replit .dv-groupview.dv-inactive-group{border:1px solid transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash{background-color:transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):after{content:\"\";height:4px;width:40px;border-radius:2px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--dv-sash-color);position:absolute}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):hover,.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):active{background-color:transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):hover:after,.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):active:after{background-color:var(--dv-active-sash-color)}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash{background-color:transparent}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):after{content:\"\";height:40px;width:4px;border-radius:2px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--dv-sash-color);position:absolute}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):hover,.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):active{background-color:transparent}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):hover:after,.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):active:after{background-color:var(--dv-active-sash-color)}.dockview-theme-abyss-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-tab-font-size: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-border-radius: 20px;box-sizing:border-box;--dv-color-abyss-dark: rgb(11, 6, 17);--dv-color-abyss: #16121f;--dv-color-abyss-light: #201d2b;--dv-color-abyss-lighter: #2a2837;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-drag-over-border: 2px solid var(--dv-color-abyss-accent);--dv-drag-over-background-color: \"\";--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var(--dv-color-abyss);--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: var(--dv-color-abyss-primary-text);--dv-activegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-inactivegroup-visiblepanel-tab-color: var( --dv-color-abyss-primary-text );--dv-inactivegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: var(--dv-color-abyss-accent);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, .5);padding:10px;background-color:var(--dv-color-abyss-dark)}.dockview-theme-abyss-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-abyss-spaced .dv-sash{border-radius:4px}.dockview-theme-abyss-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-abyss-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-abyss-spaced .dv-tabs-overflow-container,.dockview-theme-abyss-spaced .dv-tabs-overflow-dropdown-default{border-radius:8px;height:unset!important}.dockview-theme-abyss-spaced .dv-tab{border-radius:8px}.dockview-theme-abyss-spaced .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-abyss-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2)}.dockview-theme-abyss-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color)}.dockview-theme-abyss-spaced .dv-resize-container .dv-groupview{border:2px solid var(--dv-color-abyss-dark)}.dockview-theme-light-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-tab-font-size: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-border-radius: 20px;box-sizing:border-box;--dv-drag-over-border: 2px solid rgb(91, 30, 207);--dv-drag-over-background-color: \"\";--dv-group-view-background-color: #f6f5f9;--dv-tabs-and-actions-container-background-color: white;--dv-activegroup-visiblepanel-tab-background-color: #ededf0;--dv-activegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-inactivegroup-visiblepanel-tab-background-color: #ededf0;--dv-inactivegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-activegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-inactivegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-inactivegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: rgb(91, 30, 207);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, .1);padding:10px;background-color:#f6f5f9;--dv-scrollbar-background-color: rgba(0, 0, 0, .25)}.dockview-theme-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-light-spaced .dv-sash{border-radius:4px}.dockview-theme-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-light-spaced .dv-tabs-overflow-container,.dockview-theme-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:8px;height:unset!important}.dockview-theme-light-spaced .dv-tab{border-radius:8px}.dockview-theme-light-spaced .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2)}.dockview-theme-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color)}.dockview-theme-light-spaced .dv-resize-container .dv-groupview{border:2px solid rgba(255,255,255,.1)}.dv-drop-target-container{position:absolute;z-index:9999;top:0;left:0;height:100%;width:100%;pointer-events:none;overflow:hidden;--dv-transition-duration: .3s}.dv-drop-target-container .dv-drop-target-anchor{position:relative;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);opacity:1;will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden;contain:layout paint;transition:opacity var(--dv-transition-duration) ease-in,transform var(--dv-transition-duration) ease-out}.dv-drop-target{position:relative;--dv-transition-duration: 70ms}.dv-drop-target>.dv-drop-target-dropzone{position:absolute;left:0;top:0;height:100%;width:100%;z-index:1000;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection{position:relative;box-sizing:border-box;height:100%;width:100%;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);transition:top var(--dv-transition-duration) ease-out,left var(--dv-transition-duration) ease-out,width var(--dv-transition-duration) ease-out,height var(--dv-transition-duration) ease-out,opacity var(--dv-transition-duration) ease-out;will-change:transform;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical{border-top:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical{border-bottom:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal{border-left:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal{border-right:1px solid var(--dv-drag-over-border-color)}.dv-dockview{position:relative;background-color:var(--dv-group-view-background-color);contain:layout}.dv-dockview .dv-watermark-container{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1}.dv-dockview .dv-overlay-render-container{position:relative}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-inactivegroup-visiblepanel-tab-background-color);color:var(--dv-inactivegroup-visiblepanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-inactivegroup-hiddenpanel-tab-background-color);color:var(--dv-inactivegroup-hiddenpanel-tab-color)}.dv-tab.dv-tab-dragging{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview{display:flex;height:100%;background-color:var(--dv-group-view-background-color);overflow:hidden;flex-direction:column}.dv-groupview:focus{outline:none}.dv-groupview>.dv-content-container{flex-grow:1;min-height:0;outline:none}.dv-groupview.dv-groupview-header-bottom{flex-direction:column-reverse}.dv-groupview.dv-groupview-header-left{flex-direction:row}.dv-groupview.dv-groupview-header-right{flex-direction:row-reverse}.dv-root-wrapper,.dv-grid-view,.dv-branch-node{height:100%;width:100%}.dv-debug .dv-resize-container .dv-resize-handle-top{background-color:red}.dv-debug .dv-resize-container .dv-resize-handle-bottom{background-color:green}.dv-debug .dv-resize-container .dv-resize-handle-left{background-color:#ff0}.dv-debug .dv-resize-container .dv-resize-handle-right{background-color:#00f}.dv-debug .dv-resize-container .dv-resize-handle-topleft,.dv-debug .dv-resize-container .dv-resize-handle-topright,.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,.dv-debug .dv-resize-container .dv-resize-handle-bottomright{background-color:#0ff}.dv-resize-container{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:calc(var(--dv-overlay-z-index) - 2);border:1px solid var(--dv-tab-divider-color);box-shadow:var(--dv-floating-box-shadow);will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden}.dv-resize-container.dv-hidden{display:none}.dv-resize-container.dv-resize-container-dragging{opacity:.5;will-change:transform,opacity}.dv-resize-container .dv-resize-handle-top{height:4px;width:calc(100% - 8px);left:4px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-bottom{height:4px;width:calc(100% - 8px);left:4px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-left{height:calc(100% - 8px);width:4px;left:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-right{height:calc(100% - 8px);width:4px;right:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-topleft{height:4px;width:4px;top:-2px;left:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:nw-resize}.dv-resize-container .dv-resize-handle-topright{height:4px;width:4px;right:-2px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ne-resize}.dv-resize-container .dv-resize-handle-bottomleft{height:4px;width:4px;left:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:sw-resize}.dv-resize-container .dv-resize-handle-bottomright{height:4px;width:4px;right:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:se-resize}.dv-render-overlay{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:1;width:100%;height:100%;contain:layout paint;isolation:isolate;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.dv-render-overlay.dv-render-overlay-float{z-index:calc(var(--dv-overlay-z-index) - 1)}.dv-debug .dv-render-overlay{outline:1px solid red;outline-offset:-1}.dv-pane-container{height:100%;width:100%}.dv-pane-container.dv-animated .dv-view{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-pane-container .dv-view{overflow:hidden;display:flex;flex-direction:column;padding:0!important}.dv-pane-container .dv-view:not(:first-child):before{background-color:transparent!important}.dv-pane-container .dv-view:not(:first-child) .dv-pane>.dv-pane-header{border-top:1px solid var(--dv-paneview-header-border-color)}.dv-pane-container .dv-view .dv-default-header{background-color:var(--dv-group-view-background-color);color:var(--dv-activegroup-visiblepanel-tab-color);display:flex;padding:0 8px;cursor:pointer}.dv-pane-container .dv-view .dv-default-header .dv-pane-header-icon{display:flex;justify-content:center;align-items:center}.dv-pane-container .dv-view .dv-default-header>span{padding-left:8px;flex-grow:1}.dv-pane-container:first-of-type>.dv-pane>.dv-pane-header{border-top:none!important}.dv-pane-container .dv-pane{display:flex;flex-direction:column;overflow:hidden;height:100%}.dv-pane-container .dv-pane .dv-pane-header{box-sizing:border-box;-webkit-user-select:none;user-select:none;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-header.dv-pane-draggable{cursor:pointer}.dv-pane-container .dv-pane .dv-pane-header:focus:before,.dv-pane-container .dv-pane .dv-pane-header:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:\"\";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-pane-container .dv-pane .dv-pane-body{overflow-y:auto;overflow-x:hidden;flex-grow:1;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-body:focus:before,.dv-pane-container .dv-pane .dv-pane-body:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:\"\";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-enabled{background-color:#000}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-disabled{background-color:orange}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-maximum{background-color:green}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-minimum{background-color:red}.dv-split-view-container{position:relative;overflow:hidden;height:100%;width:100%}.dv-split-view-container.dv-splitview-disabled>.dv-sash-container>.dv-sash{pointer-events:none}.dv-split-view-container.dv-animation .dv-view,.dv-split-view-container.dv-animation .dv-sash{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-split-view-container.dv-horizontal{height:100%}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash{height:100%;width:4px}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-enabled{cursor:ew-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-maximum{cursor:w-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-minimum{cursor:e-resize}.dv-split-view-container.dv-horizontal>.dv-view-container>.dv-view:not(:first-child):before{height:100%;width:1px}.dv-split-view-container.dv-vertical{width:100%}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash{width:100%;height:4px}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-enabled{cursor:ns-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-maximum{cursor:n-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-minimum{cursor:s-resize}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view{width:100%}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view:not(:first-child):before{height:1px;width:100%}.dv-split-view-container .dv-sash-container{height:100%;width:100%;position:absolute}.dv-split-view-container .dv-sash-container .dv-sash{position:absolute;z-index:99;outline:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:none;background-color:var(--dv-sash-color, transparent)}.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active,.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover{background-color:var(--dv-active-sash-color, transparent);transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:var(--dv-active-sash-transition-duration, .1s);transition-delay:var(--dv-active-sash-transition-delay, .5s)}.dv-split-view-container .dv-view-container{position:relative;height:100%;width:100%}.dv-split-view-container .dv-view-container .dv-view{height:100%;box-sizing:border-box;overflow:auto;position:absolute}.dv-split-view-container.dv-separator-border .dv-view:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-separator-border)}.dv-dragged{transform:translateZ(0)}.dv-tab{flex-shrink:0}.dv-tab:focus-within,.dv-tab:focus{position:relative}.dv-tab:focus-within:after,.dv-tab:focus:after{position:absolute;content:\"\";height:100%;width:100%;top:0;left:0;pointer-events:none;outline:1px solid var(--dv-tab-divider-color)!important;outline-offset:-1px;z-index:5}.dv-tab.dv-tab-dragging .dv-default-tab-action{background-color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tab.dv-active-tab .dv-default-tab .dv-default-tab-action{visibility:visible}.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action{visibility:hidden}.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action{visibility:visible}.dv-tab .dv-default-tab{position:relative;height:100%;width:100%;display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis}.dv-tab .dv-default-tab .dv-default-tab-content{flex-grow:1;margin-right:4px}.dv-tab .dv-default-tab .dv-default-tab-action{padding:4px;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.dv-tab .dv-default-tab .dv-default-tab-action:hover{border-radius:2px;background-color:var(--dv-icon-hover-background-color)}.dv-tabs-overflow-dropdown-default{height:100%;color:var(--dv-activegroup-hiddenpanel-tab-color);margin:var(--dv-tab-margin);display:flex;align-items:center;flex-shrink:0;padding:.25rem .5rem;cursor:pointer}.dv-tabs-overflow-dropdown-default>span{padding-left:.25rem}.dv-tabs-overflow-dropdown-default>svg{transform:rotate(90deg)}.dv-tabs-container{display:flex;height:100%;overflow:auto;scrollbar-width:thin;will-change:scroll-position;transform:translateZ(0)}.dv-tabs-container.dv-tabs-container-vertical{width:100%;height:fit-content;max-height:100%;writing-mode:vertical-rl}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before,.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-tab-divider-color)}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before{width:1px;height:100%}.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{width:100%;height:1px}.dv-tabs-container::-webkit-scrollbar{height:3px}.dv-tabs-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color)}.dv-scrollable>.dv-tabs-container{overflow:hidden}.dv-tab{-webkit-user-drag:element;outline:none;padding:.25rem .5rem;cursor:pointer;position:relative;box-sizing:border-box;font-size:var(--dv-tab-font-size);margin:var(--dv-tab-margin)}.dv-tabs-container-vertical .dv-tab{padding:.5rem .25rem}.dv-tabs-overflow-container{flex-direction:column;height:unset;max-height:min(50vh,400px);overflow-y:auto;border:1px solid var(--dv-tab-divider-color);background-color:var(--dv-group-view-background-color);scrollbar-width:thin}.dv-tabs-overflow-container::-webkit-scrollbar{width:6px}.dv-tabs-overflow-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-overflow-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color);border-radius:3px}.dv-tabs-overflow-container .dv-tab:not(:last-child){border-bottom:1px solid var(--dv-tab-divider-color)}.dv-tabs-overflow-container .dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tabs-overflow-container .dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-tabs-and-actions-container{display:flex;background-color:var(--dv-tabs-and-actions-container-background-color);flex-shrink:0;box-sizing:border-box;height:var(--dv-tabs-and-actions-container-height);font-size:var(--dv-tabs-and-actions-container-font-size)}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-scrollable,.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container{flex-grow:1}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab{flex-grow:1;padding:0}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-void-container{flex-grow:0}.dv-tabs-and-actions-container .dv-void-container{display:flex;flex-grow:1}.dv-tabs-and-actions-container .dv-void-container.dv-draggable{cursor:grab}.dv-tabs-and-actions-container .dv-right-actions-container{display:flex}.dv-tabs-and-actions-container .dv-right-actions-container.dv-right-actions-container-vertical{flex-direction:column}.dv-tabs-and-actions-container.dv-groupview-header-vertical{flex-direction:column;height:auto;width:var(--dv-tabs-and-actions-container-height)}.dv-watermark{display:flex;height:100%}mm-dockview{display:block;width:100%;height:100%;position:relative}.dv-dockview-container{width:100%;height:100%;position:absolute;inset:0}.dv-dockview{width:100%;height:100%}.dv-dockview,.dv-grid-view{background-color:var(--dv-background-color, #fafafa);--dv-background-color: #fafafa;--dv-pane-background-color: #ffffff;--dv-tabs-and-actions-container-background-color: #f5f5f5;--dv-activegroup-visiblepanel-tab-background-color: #ffffff;--dv-activegroup-hiddenpanel-tab-background-color: #e8e8e8;--dv-inactivegroup-visiblepanel-tab-background-color: #f0f0f0;--dv-inactivegroup-hiddenpanel-tab-background-color: #e0e0e0;--dv-tab-divider-color: #e0e0e0;--dv-activegroup-visiblepanel-tab-color: #333333;--dv-activegroup-hiddenpanel-tab-color: #666666;--dv-inactivegroup-visiblepanel-tab-color: #666666;--dv-inactivegroup-hiddenpanel-tab-color: #999999;--dv-separator-border: 1px solid #e0e0e0;--dv-group-view-background-color: #ffffff;--dv-tabs-overflow-dropdown-background-color: #f5f5f5;--dv-icon-hover-background-color: #e0e0e0}.dv-tabs-overflow-container{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5);border:1px solid var(--dv-tab-divider-color, #e0e0e0);border-radius:4px;box-shadow:0 2px 8px #00000026}.dv-tabs-container{background-color:var(--dv-tabs-and-actions-container-background-color, #f5f5f5)}div[style*=--dv-overlay-z-index]{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5);border-radius:4px}div[style*=--dv-overlay-z-index] .dv-tabs-overflow-container{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5)}div[style*=--dv-overlay-z-index] .dv-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color, #e8e8e8);color:var(--dv-activegroup-hiddenpanel-tab-color, #666666)}div[style*=--dv-overlay-z-index] .dv-tab:hover{background-color:var(--dv-icon-hover-background-color, #d8d8d8)}div[style*=--dv-overlay-z-index] .dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color, #ffffff);color:var(--dv-activegroup-visiblepanel-tab-color, #333333)}div[style*=--dv-overlay-z-index] .dv-default-tab{background-color:transparent}.dv-tab{font-size:12px;font-weight:500;background-color:var(--dv-activegroup-hiddenpanel-tab-background-color, #e8e8e8);color:var(--dv-activegroup-hiddenpanel-tab-color, #666666)}.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color, #ffffff);color:var(--dv-activegroup-visiblepanel-tab-color, #333333)}.dv-default-tab{display:flex;align-items:center}.dv-default-tab-content{flex:1}.dv-default-tab-action{flex-shrink:0;opacity:.5;transition:opacity .15s ease}.dv-default-tab-action:hover{opacity:1}.dv-sash{background:var(--dv-sash-color, #e0e0e0)}.dv-sash:hover,.dv-sash.dv-active{background:var(--dv-sash-hover-color, #1976d2)}.dv-drop-target-dropzone{background:var(--dv-drag-over-background-color, rgba(25, 118, 210, .15));border:2px dashed var(--dv-drag-over-border-color, #1976d2);border-radius:4px}.dv-floating-group{box-shadow:0 4px 20px #00000026;border-radius:4px;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6272
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DockviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6273
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: DockviewComponent, isStandalone: true, selector: "mm-dockview", inputs: { components: "components", tabComponents: "tabComponents", watermarkComponent: "watermarkComponent", defaultTabComponent: "defaultTabComponent", leftHeaderActionsComponent: "leftHeaderActionsComponent", rightHeaderActionsComponent: "rightHeaderActionsComponent", prefixHeaderActionsComponent: "prefixHeaderActionsComponent", className: "className", hideBorders: "hideBorders", locked: "locked", disableAutoResizing: "disableAutoResizing", disableFloatingGroups: "disableFloatingGroups" }, outputs: { ready: "ready", didDrop: "didDrop", willDrop: "willDrop" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["dockviewContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div #dockviewContainer class="dv-dockview-container"></div>', isInline: true, styles: [".dv-scrollable{position:relative;overflow:hidden}.dv-scrollable .dv-scrollbar{position:absolute;border-radius:2px;background-color:transparent;will-change:background-color,transform;transform:translateZ(0);backface-visibility:hidden;transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:1s;transition-delay:0s}.dv-scrollable .dv-scrollbar-horizontal{bottom:0;left:0;height:4px}.dv-scrollable .dv-scrollbar-vertical{right:0;top:0;width:4px}.dv-scrollable:hover .dv-scrollbar,.dv-scrollable.dv-scrollable-resizing .dv-scrollbar,.dv-scrollable.dv-scrollable-scrolling .dv-scrollbar{background-color:var(--dv-scrollbar-background-color, rgba(255, 255, 255, .25))}.dv-svg{display:inline-block;fill:currentcolor;line-height:1;stroke:currentcolor;stroke-width:0}.dockview-theme-dark{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2)}.dockview-theme-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-light{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: white;--dv-tabs-and-actions-container-background-color: #f3f3f3;--dv-activegroup-visiblepanel-tab-background-color: white;--dv-activegroup-hiddenpanel-tab-background-color: #ececec;--dv-inactivegroup-visiblepanel-tab-background-color: white;--dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;--dv-tab-divider-color: white;--dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .35);--dv-separator-border: rgba(128, 128, 128, .35);--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-scrollbar-background-color: rgba(0, 0, 0, .25)}.dockview-theme-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2);--dv-tabs-and-actions-container-background-color: #2d2d30;--dv-tabs-and-actions-container-height: 20px;--dv-tabs-and-actions-container-font-size: 11px;--dv-activegroup-visiblepanel-tab-background-color: #007acc;--dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: white;--dv-inactivegroup-visiblepanel-tab-color: white;--dv-inactivegroup-hiddenpanel-tab-color: white}.dockview-theme-vs .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-activegroup-hiddenpanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color)}.dockview-theme-abyss{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-color-abyss-dark: #000c18;--dv-color-abyss: #10192c;--dv-color-abyss-light: #1c1c2a;--dv-color-abyss-lighter: #2b2b4a;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var( --dv-color-abyss-light );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-activegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-inactivegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-tab-divider-color: var(--dv-color-abyss-lighter);--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .25);--dv-separator-border: var(--dv-color-abyss-lighter);--dv-paneview-header-border-color: var(--dv-color-abyss-lighter);--dv-paneview-active-outline-color: #596f99}.dockview-theme-abyss .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #282a36;--dv-tabs-and-actions-container-background-color: #191a21;--dv-activegroup-visiblepanel-tab-background-color: #282a36;--dv-activegroup-hiddenpanel-tab-background-color: #21222c;--dv-inactivegroup-visiblepanel-tab-background-color: #282a36;--dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;--dv-tab-divider-color: #191a21;--dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);--dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);--dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, .5);--dv-separator-border: #bd93f9;--dv-paneview-header-border-color: #bd93f9;--dv-paneview-active-outline-color: #6272a4}.dockview-theme-dracula .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;top:0;content:\"\";width:100%;height:1px;background-color:#94527e;z-index:999}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:\"\";width:100%;height:1px;background-color:#5e3d5a;z-index:999}.dockview-theme-replit{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;box-sizing:border-box;padding:10px;background-color:#ebeced;--dv-group-view-background-color: #ebeced;--dv-tabs-and-actions-container-background-color: #fcfcfc;--dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;--dv-activegroup-hiddenpanel-tab-background-color: #fcfcfc;--dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;--dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);--dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-sash-color: #cfd1d3;--dv-active-sash-color: #babbbb}.dockview-theme-replit .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-replit .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-replit .dv-resize-container{border-radius:10px!important;border:none}.dockview-theme-replit .dv-groupview{overflow:hidden;border-radius:10px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container{border-bottom:1px solid rgba(128,128,128,.35)}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab{margin:4px;border-radius:8px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab:hover{background-color:#e4e5e6!important}.dockview-theme-replit .dv-groupview .dv-content-container{background-color:#fcfcfc}.dockview-theme-replit .dv-groupview.dv-active-group{border:1px solid rgba(128,128,128,.35)}.dockview-theme-replit .dv-groupview.dv-inactive-group{border:1px solid transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash{background-color:transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):after{content:\"\";height:4px;width:40px;border-radius:2px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--dv-sash-color);position:absolute}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):hover,.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):active{background-color:transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):hover:after,.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):active:after{background-color:var(--dv-active-sash-color)}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash{background-color:transparent}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):after{content:\"\";height:40px;width:4px;border-radius:2px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--dv-sash-color);position:absolute}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):hover,.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):active{background-color:transparent}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):hover:after,.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):active:after{background-color:var(--dv-active-sash-color)}.dockview-theme-abyss-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-tab-font-size: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-border-radius: 20px;box-sizing:border-box;--dv-color-abyss-dark: rgb(11, 6, 17);--dv-color-abyss: #16121f;--dv-color-abyss-light: #201d2b;--dv-color-abyss-lighter: #2a2837;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-drag-over-border: 2px solid var(--dv-color-abyss-accent);--dv-drag-over-background-color: \"\";--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var(--dv-color-abyss);--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: var(--dv-color-abyss-primary-text);--dv-activegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-inactivegroup-visiblepanel-tab-color: var( --dv-color-abyss-primary-text );--dv-inactivegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: var(--dv-color-abyss-accent);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, .5);padding:10px;background-color:var(--dv-color-abyss-dark)}.dockview-theme-abyss-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-abyss-spaced .dv-sash{border-radius:4px}.dockview-theme-abyss-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-abyss-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-abyss-spaced .dv-tabs-overflow-container,.dockview-theme-abyss-spaced .dv-tabs-overflow-dropdown-default{border-radius:8px;height:unset!important}.dockview-theme-abyss-spaced .dv-tab{border-radius:8px}.dockview-theme-abyss-spaced .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-abyss-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2)}.dockview-theme-abyss-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color)}.dockview-theme-abyss-spaced .dv-resize-container .dv-groupview{border:2px solid var(--dv-color-abyss-dark)}.dockview-theme-light-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-tab-font-size: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-border-radius: 20px;box-sizing:border-box;--dv-drag-over-border: 2px solid rgb(91, 30, 207);--dv-drag-over-background-color: \"\";--dv-group-view-background-color: #f6f5f9;--dv-tabs-and-actions-container-background-color: white;--dv-activegroup-visiblepanel-tab-background-color: #ededf0;--dv-activegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-inactivegroup-visiblepanel-tab-background-color: #ededf0;--dv-inactivegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-activegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-inactivegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-inactivegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: rgb(91, 30, 207);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, .1);padding:10px;background-color:#f6f5f9;--dv-scrollbar-background-color: rgba(0, 0, 0, .25)}.dockview-theme-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-light-spaced .dv-sash{border-radius:4px}.dockview-theme-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-light-spaced .dv-tabs-overflow-container,.dockview-theme-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:8px;height:unset!important}.dockview-theme-light-spaced .dv-tab{border-radius:8px}.dockview-theme-light-spaced .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2)}.dockview-theme-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color)}.dockview-theme-light-spaced .dv-resize-container .dv-groupview{border:2px solid rgba(255,255,255,.1)}.dv-drop-target-container{position:absolute;z-index:9999;top:0;left:0;height:100%;width:100%;pointer-events:none;overflow:hidden;--dv-transition-duration: .3s}.dv-drop-target-container .dv-drop-target-anchor{position:relative;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);opacity:1;will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden;contain:layout paint;transition:opacity var(--dv-transition-duration) ease-in,transform var(--dv-transition-duration) ease-out}.dv-drop-target{position:relative;--dv-transition-duration: 70ms}.dv-drop-target>.dv-drop-target-dropzone{position:absolute;left:0;top:0;height:100%;width:100%;z-index:1000;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection{position:relative;box-sizing:border-box;height:100%;width:100%;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);transition:top var(--dv-transition-duration) ease-out,left var(--dv-transition-duration) ease-out,width var(--dv-transition-duration) ease-out,height var(--dv-transition-duration) ease-out,opacity var(--dv-transition-duration) ease-out;will-change:transform;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical{border-top:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical{border-bottom:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal{border-left:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal{border-right:1px solid var(--dv-drag-over-border-color)}.dv-dockview{position:relative;background-color:var(--dv-group-view-background-color);contain:layout}.dv-dockview .dv-watermark-container{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1}.dv-dockview .dv-overlay-render-container{position:relative}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-inactivegroup-visiblepanel-tab-background-color);color:var(--dv-inactivegroup-visiblepanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-inactivegroup-hiddenpanel-tab-background-color);color:var(--dv-inactivegroup-hiddenpanel-tab-color)}.dv-tab.dv-tab-dragging{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview{display:flex;height:100%;background-color:var(--dv-group-view-background-color);overflow:hidden;flex-direction:column}.dv-groupview:focus{outline:none}.dv-groupview>.dv-content-container{flex-grow:1;min-height:0;outline:none}.dv-groupview.dv-groupview-header-bottom{flex-direction:column-reverse}.dv-groupview.dv-groupview-header-left{flex-direction:row}.dv-groupview.dv-groupview-header-right{flex-direction:row-reverse}.dv-root-wrapper,.dv-grid-view,.dv-branch-node{height:100%;width:100%}.dv-debug .dv-resize-container .dv-resize-handle-top{background-color:red}.dv-debug .dv-resize-container .dv-resize-handle-bottom{background-color:green}.dv-debug .dv-resize-container .dv-resize-handle-left{background-color:#ff0}.dv-debug .dv-resize-container .dv-resize-handle-right{background-color:#00f}.dv-debug .dv-resize-container .dv-resize-handle-topleft,.dv-debug .dv-resize-container .dv-resize-handle-topright,.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,.dv-debug .dv-resize-container .dv-resize-handle-bottomright{background-color:#0ff}.dv-resize-container{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:calc(var(--dv-overlay-z-index) - 2);border:1px solid var(--dv-tab-divider-color);box-shadow:var(--dv-floating-box-shadow);will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden}.dv-resize-container.dv-hidden{display:none}.dv-resize-container.dv-resize-container-dragging{opacity:.5;will-change:transform,opacity}.dv-resize-container .dv-resize-handle-top{height:4px;width:calc(100% - 8px);left:4px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-bottom{height:4px;width:calc(100% - 8px);left:4px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-left{height:calc(100% - 8px);width:4px;left:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-right{height:calc(100% - 8px);width:4px;right:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-topleft{height:4px;width:4px;top:-2px;left:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:nw-resize}.dv-resize-container .dv-resize-handle-topright{height:4px;width:4px;right:-2px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ne-resize}.dv-resize-container .dv-resize-handle-bottomleft{height:4px;width:4px;left:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:sw-resize}.dv-resize-container .dv-resize-handle-bottomright{height:4px;width:4px;right:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:se-resize}.dv-render-overlay{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:1;width:100%;height:100%;contain:layout paint;isolation:isolate;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.dv-render-overlay.dv-render-overlay-float{z-index:calc(var(--dv-overlay-z-index) - 1)}.dv-debug .dv-render-overlay{outline:1px solid red;outline-offset:-1}.dv-pane-container{height:100%;width:100%}.dv-pane-container.dv-animated .dv-view{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-pane-container .dv-view{overflow:hidden;display:flex;flex-direction:column;padding:0!important}.dv-pane-container .dv-view:not(:first-child):before{background-color:transparent!important}.dv-pane-container .dv-view:not(:first-child) .dv-pane>.dv-pane-header{border-top:1px solid var(--dv-paneview-header-border-color)}.dv-pane-container .dv-view .dv-default-header{background-color:var(--dv-group-view-background-color);color:var(--dv-activegroup-visiblepanel-tab-color);display:flex;padding:0 8px;cursor:pointer}.dv-pane-container .dv-view .dv-default-header .dv-pane-header-icon{display:flex;justify-content:center;align-items:center}.dv-pane-container .dv-view .dv-default-header>span{padding-left:8px;flex-grow:1}.dv-pane-container:first-of-type>.dv-pane>.dv-pane-header{border-top:none!important}.dv-pane-container .dv-pane{display:flex;flex-direction:column;overflow:hidden;height:100%}.dv-pane-container .dv-pane .dv-pane-header{box-sizing:border-box;-webkit-user-select:none;user-select:none;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-header.dv-pane-draggable{cursor:pointer}.dv-pane-container .dv-pane .dv-pane-header:focus:before,.dv-pane-container .dv-pane .dv-pane-header:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:\"\";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-pane-container .dv-pane .dv-pane-body{overflow-y:auto;overflow-x:hidden;flex-grow:1;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-body:focus:before,.dv-pane-container .dv-pane .dv-pane-body:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:\"\";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-enabled{background-color:#000}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-disabled{background-color:orange}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-maximum{background-color:green}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-minimum{background-color:red}.dv-split-view-container{position:relative;overflow:hidden;height:100%;width:100%}.dv-split-view-container.dv-splitview-disabled>.dv-sash-container>.dv-sash{pointer-events:none}.dv-split-view-container.dv-animation .dv-view,.dv-split-view-container.dv-animation .dv-sash{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-split-view-container.dv-horizontal{height:100%}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash{height:100%;width:4px}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-enabled{cursor:ew-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-maximum{cursor:w-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-minimum{cursor:e-resize}.dv-split-view-container.dv-horizontal>.dv-view-container>.dv-view:not(:first-child):before{height:100%;width:1px}.dv-split-view-container.dv-vertical{width:100%}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash{width:100%;height:4px}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-enabled{cursor:ns-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-maximum{cursor:n-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-minimum{cursor:s-resize}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view{width:100%}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view:not(:first-child):before{height:1px;width:100%}.dv-split-view-container .dv-sash-container{height:100%;width:100%;position:absolute}.dv-split-view-container .dv-sash-container .dv-sash{position:absolute;z-index:99;outline:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:none;background-color:var(--dv-sash-color, transparent)}.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active,.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover{background-color:var(--dv-active-sash-color, transparent);transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:var(--dv-active-sash-transition-duration, .1s);transition-delay:var(--dv-active-sash-transition-delay, .5s)}.dv-split-view-container .dv-view-container{position:relative;height:100%;width:100%}.dv-split-view-container .dv-view-container .dv-view{height:100%;box-sizing:border-box;overflow:auto;position:absolute}.dv-split-view-container.dv-separator-border .dv-view:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-separator-border)}.dv-dragged{transform:translateZ(0)}.dv-tab{flex-shrink:0}.dv-tab:focus-within,.dv-tab:focus{position:relative}.dv-tab:focus-within:after,.dv-tab:focus:after{position:absolute;content:\"\";height:100%;width:100%;top:0;left:0;pointer-events:none;outline:1px solid var(--dv-tab-divider-color)!important;outline-offset:-1px;z-index:5}.dv-tab.dv-tab-dragging .dv-default-tab-action{background-color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tab.dv-active-tab .dv-default-tab .dv-default-tab-action{visibility:visible}.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action{visibility:hidden}.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action{visibility:visible}.dv-tab .dv-default-tab{position:relative;height:100%;width:100%;display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis}.dv-tab .dv-default-tab .dv-default-tab-content{flex-grow:1;margin-right:4px}.dv-tab .dv-default-tab .dv-default-tab-action{padding:4px;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.dv-tab .dv-default-tab .dv-default-tab-action:hover{border-radius:2px;background-color:var(--dv-icon-hover-background-color)}.dv-tabs-overflow-dropdown-default{height:100%;color:var(--dv-activegroup-hiddenpanel-tab-color);margin:var(--dv-tab-margin);display:flex;align-items:center;flex-shrink:0;padding:.25rem .5rem;cursor:pointer}.dv-tabs-overflow-dropdown-default>span{padding-left:.25rem}.dv-tabs-overflow-dropdown-default>svg{transform:rotate(90deg)}.dv-tabs-container{display:flex;height:100%;overflow:auto;scrollbar-width:thin;will-change:scroll-position;transform:translateZ(0)}.dv-tabs-container.dv-tabs-container-vertical{width:100%;height:fit-content;max-height:100%;writing-mode:vertical-rl}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before,.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-tab-divider-color)}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before{width:1px;height:100%}.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{width:100%;height:1px}.dv-tabs-container::-webkit-scrollbar{height:3px}.dv-tabs-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color)}.dv-scrollable>.dv-tabs-container{overflow:hidden}.dv-tab{-webkit-user-drag:element;outline:none;padding:.25rem .5rem;cursor:pointer;position:relative;box-sizing:border-box;font-size:var(--dv-tab-font-size);margin:var(--dv-tab-margin)}.dv-tabs-container-vertical .dv-tab{padding:.5rem .25rem}.dv-tabs-overflow-container{flex-direction:column;height:unset;max-height:min(50vh,400px);overflow-y:auto;border:1px solid var(--dv-tab-divider-color);background-color:var(--dv-group-view-background-color);scrollbar-width:thin}.dv-tabs-overflow-container::-webkit-scrollbar{width:6px}.dv-tabs-overflow-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-overflow-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color);border-radius:3px}.dv-tabs-overflow-container .dv-tab:not(:last-child){border-bottom:1px solid var(--dv-tab-divider-color)}.dv-tabs-overflow-container .dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tabs-overflow-container .dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-tabs-and-actions-container{display:flex;background-color:var(--dv-tabs-and-actions-container-background-color);flex-shrink:0;box-sizing:border-box;height:var(--dv-tabs-and-actions-container-height);font-size:var(--dv-tabs-and-actions-container-font-size)}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-scrollable,.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container{flex-grow:1}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab{flex-grow:1;padding:0}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-void-container{flex-grow:0}.dv-tabs-and-actions-container .dv-void-container{display:flex;flex-grow:1}.dv-tabs-and-actions-container .dv-void-container.dv-draggable{cursor:grab}.dv-tabs-and-actions-container .dv-right-actions-container{display:flex}.dv-tabs-and-actions-container .dv-right-actions-container.dv-right-actions-container-vertical{flex-direction:column}.dv-tabs-and-actions-container.dv-groupview-header-vertical{flex-direction:column;height:auto;width:var(--dv-tabs-and-actions-container-height)}.dv-watermark{display:flex;height:100%}mm-dockview{display:block;width:100%;height:100%;position:relative}.dv-dockview-container{width:100%;height:100%;position:absolute;inset:0}.dv-dockview{width:100%;height:100%}.dv-dockview,.dv-grid-view{background-color:var(--dv-background-color, #fafafa);--dv-background-color: #fafafa;--dv-pane-background-color: #ffffff;--dv-tabs-and-actions-container-background-color: #f5f5f5;--dv-activegroup-visiblepanel-tab-background-color: #ffffff;--dv-activegroup-hiddenpanel-tab-background-color: #e8e8e8;--dv-inactivegroup-visiblepanel-tab-background-color: #f0f0f0;--dv-inactivegroup-hiddenpanel-tab-background-color: #e0e0e0;--dv-tab-divider-color: #e0e0e0;--dv-activegroup-visiblepanel-tab-color: #333333;--dv-activegroup-hiddenpanel-tab-color: #666666;--dv-inactivegroup-visiblepanel-tab-color: #666666;--dv-inactivegroup-hiddenpanel-tab-color: #999999;--dv-separator-border: 1px solid #e0e0e0;--dv-group-view-background-color: #ffffff;--dv-tabs-overflow-dropdown-background-color: #f5f5f5;--dv-icon-hover-background-color: #e0e0e0}.dv-tabs-overflow-container{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5);border:1px solid var(--dv-tab-divider-color, #e0e0e0);border-radius:4px;box-shadow:0 2px 8px #00000026}.dv-tabs-container{background-color:var(--dv-tabs-and-actions-container-background-color, #f5f5f5)}div[style*=--dv-overlay-z-index]{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5);border-radius:4px}div[style*=--dv-overlay-z-index] .dv-tabs-overflow-container{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5)}div[style*=--dv-overlay-z-index] .dv-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color, #e8e8e8);color:var(--dv-activegroup-hiddenpanel-tab-color, #666666)}div[style*=--dv-overlay-z-index] .dv-tab:hover{background-color:var(--dv-icon-hover-background-color, #d8d8d8)}div[style*=--dv-overlay-z-index] .dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color, #ffffff);color:var(--dv-activegroup-visiblepanel-tab-color, #333333)}div[style*=--dv-overlay-z-index] .dv-default-tab{background-color:transparent}.dv-tab{font-size:12px;font-weight:500;background-color:var(--dv-activegroup-hiddenpanel-tab-background-color, #e8e8e8);color:var(--dv-activegroup-hiddenpanel-tab-color, #666666)}.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color, #ffffff);color:var(--dv-activegroup-visiblepanel-tab-color, #333333)}.dv-default-tab{display:flex;align-items:center}.dv-default-tab-content{flex:1}.dv-default-tab-action{flex-shrink:0;opacity:.5;transition:opacity .15s ease}.dv-default-tab-action:hover{opacity:1}.dv-sash{background:var(--dv-sash-color, #e0e0e0)}.dv-sash:hover,.dv-sash.dv-active{background:var(--dv-sash-hover-color, #1976d2)}.dv-drop-target-dropzone{background:var(--dv-drag-over-background-color, rgba(25, 118, 210, .15));border:2px dashed var(--dv-drag-over-border-color, #1976d2);border-radius:4px}.dv-floating-group{box-shadow:0 4px 20px #00000026;border-radius:4px;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
6274
6274
|
}
|
|
6275
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DockviewComponent, decorators: [{
|
|
6276
6276
|
type: Component,
|
|
6277
6277
|
args: [{ selector: 'mm-dockview', standalone: true, template: '<div #dockviewContainer class="dv-dockview-container"></div>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".dv-scrollable{position:relative;overflow:hidden}.dv-scrollable .dv-scrollbar{position:absolute;border-radius:2px;background-color:transparent;will-change:background-color,transform;transform:translateZ(0);backface-visibility:hidden;transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:1s;transition-delay:0s}.dv-scrollable .dv-scrollbar-horizontal{bottom:0;left:0;height:4px}.dv-scrollable .dv-scrollbar-vertical{right:0;top:0;width:4px}.dv-scrollable:hover .dv-scrollbar,.dv-scrollable.dv-scrollable-resizing .dv-scrollbar,.dv-scrollable.dv-scrollable-scrolling .dv-scrollbar{background-color:var(--dv-scrollbar-background-color, rgba(255, 255, 255, .25))}.dv-svg{display:inline-block;fill:currentcolor;line-height:1;stroke:currentcolor;stroke-width:0}.dockview-theme-dark{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2)}.dockview-theme-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-light{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: white;--dv-tabs-and-actions-container-background-color: #f3f3f3;--dv-activegroup-visiblepanel-tab-background-color: white;--dv-activegroup-hiddenpanel-tab-background-color: #ececec;--dv-inactivegroup-visiblepanel-tab-background-color: white;--dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;--dv-tab-divider-color: white;--dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .35);--dv-separator-border: rgba(128, 128, 128, .35);--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-scrollbar-background-color: rgba(0, 0, 0, .25)}.dockview-theme-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2);--dv-tabs-and-actions-container-background-color: #2d2d30;--dv-tabs-and-actions-container-height: 20px;--dv-tabs-and-actions-container-font-size: 11px;--dv-activegroup-visiblepanel-tab-background-color: #007acc;--dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: white;--dv-inactivegroup-visiblepanel-tab-color: white;--dv-inactivegroup-hiddenpanel-tab-color: white}.dockview-theme-vs .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-activegroup-hiddenpanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color)}.dockview-theme-abyss{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-color-abyss-dark: #000c18;--dv-color-abyss: #10192c;--dv-color-abyss-light: #1c1c2a;--dv-color-abyss-lighter: #2b2b4a;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var( --dv-color-abyss-light );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-activegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-inactivegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-tab-divider-color: var(--dv-color-abyss-lighter);--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .25);--dv-separator-border: var(--dv-color-abyss-lighter);--dv-paneview-header-border-color: var(--dv-color-abyss-lighter);--dv-paneview-active-outline-color: #596f99}.dockview-theme-abyss .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-group-view-background-color: #282a36;--dv-tabs-and-actions-container-background-color: #191a21;--dv-activegroup-visiblepanel-tab-background-color: #282a36;--dv-activegroup-hiddenpanel-tab-background-color: #21222c;--dv-inactivegroup-visiblepanel-tab-background-color: #282a36;--dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;--dv-tab-divider-color: #191a21;--dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);--dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);--dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, .5);--dv-separator-border: #bd93f9;--dv-paneview-header-border-color: #bd93f9;--dv-paneview-active-outline-color: #6272a4}.dockview-theme-dracula .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;top:0;content:\"\";width:100%;height:1px;background-color:#94527e;z-index:999}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:\"\";width:100%;height:1px;background-color:#5e3d5a;z-index:999}.dockview-theme-replit{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;box-sizing:border-box;padding:10px;background-color:#ebeced;--dv-group-view-background-color: #ebeced;--dv-tabs-and-actions-container-background-color: #fcfcfc;--dv-activegroup-visiblepanel-tab-background-color: #f0f1f2;--dv-activegroup-hiddenpanel-tab-background-color: #fcfcfc;--dv-inactivegroup-visiblepanel-tab-background-color: #f0f1f2;--dv-inactivegroup-hiddenpanel-tab-background-color: #fcfcfc;--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-activegroup-hiddenpanel-tab-color: rgb(51, 51, 51);--dv-inactivegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-inactivegroup-hiddenpanel-tab-color: rgb(51, 51, 51);--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-sash-color: #cfd1d3;--dv-active-sash-color: #babbbb}.dockview-theme-replit .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-replit .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-replit .dv-resize-container{border-radius:10px!important;border:none}.dockview-theme-replit .dv-groupview{overflow:hidden;border-radius:10px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container{border-bottom:1px solid rgba(128,128,128,.35)}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab{margin:4px;border-radius:8px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-replit .dv-groupview .dv-tabs-and-actions-container .dv-tab:hover{background-color:#e4e5e6!important}.dockview-theme-replit .dv-groupview .dv-content-container{background-color:#fcfcfc}.dockview-theme-replit .dv-groupview.dv-active-group{border:1px solid rgba(128,128,128,.35)}.dockview-theme-replit .dv-groupview.dv-inactive-group{border:1px solid transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash{background-color:transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):after{content:\"\";height:4px;width:40px;border-radius:2px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--dv-sash-color);position:absolute}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):hover,.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):active{background-color:transparent}.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):hover:after,.dockview-theme-replit .dv-vertical>.dv-sash-container>.dv-sash:not(.disabled):active:after{background-color:var(--dv-active-sash-color)}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash{background-color:transparent}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):after{content:\"\";height:40px;width:4px;border-radius:2px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--dv-sash-color);position:absolute}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):hover,.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):active{background-color:transparent}.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):hover:after,.dockview-theme-replit .dv-horizontal>.dv-sash-container>.dv-sash:not(.disabled):active:after{background-color:var(--dv-active-sash-color)}.dockview-theme-abyss-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-tab-font-size: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-border-radius: 20px;box-sizing:border-box;--dv-color-abyss-dark: rgb(11, 6, 17);--dv-color-abyss: #16121f;--dv-color-abyss-light: #201d2b;--dv-color-abyss-lighter: #2a2837;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-drag-over-border: 2px solid var(--dv-color-abyss-accent);--dv-drag-over-background-color: \"\";--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var(--dv-color-abyss);--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: var(--dv-color-abyss-primary-text);--dv-activegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-inactivegroup-visiblepanel-tab-color: var( --dv-color-abyss-primary-text );--dv-inactivegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: var(--dv-color-abyss-accent);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, .5);padding:10px;background-color:var(--dv-color-abyss-dark)}.dockview-theme-abyss-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-abyss-spaced .dv-sash{border-radius:4px}.dockview-theme-abyss-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-abyss-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-abyss-spaced .dv-tabs-overflow-container,.dockview-theme-abyss-spaced .dv-tabs-overflow-dropdown-default{border-radius:8px;height:unset!important}.dockview-theme-abyss-spaced .dv-tab{border-radius:8px}.dockview-theme-abyss-spaced .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-abyss-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2)}.dockview-theme-abyss-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color)}.dockview-theme-abyss-spaced .dv-resize-container .dv-groupview{border:2px solid var(--dv-color-abyss-dark)}.dockview-theme-light-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(83, 89, 93, .5);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-tab-font-size: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-border-radius: 20px;box-sizing:border-box;--dv-drag-over-border: 2px solid rgb(91, 30, 207);--dv-drag-over-background-color: \"\";--dv-group-view-background-color: #f6f5f9;--dv-tabs-and-actions-container-background-color: white;--dv-activegroup-visiblepanel-tab-background-color: #ededf0;--dv-activegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-inactivegroup-visiblepanel-tab-background-color: #ededf0;--dv-inactivegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-activegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-inactivegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-inactivegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: rgb(91, 30, 207);--dv-floating-box-shadow: 8px 8px 8px 0px rgba(0, 0, 0, .1);padding:10px;background-color:#f6f5f9;--dv-scrollbar-background-color: rgba(0, 0, 0, .25)}.dockview-theme-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-light-spaced .dv-sash{border-radius:4px}.dockview-theme-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-light-spaced .dv-tabs-overflow-container,.dockview-theme-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:8px;height:unset!important}.dockview-theme-light-spaced .dv-tab{border-radius:8px}.dockview-theme-light-spaced .dv-tab .dv-svg{height:8px;width:8px}.dockview-theme-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2)}.dockview-theme-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color)}.dockview-theme-light-spaced .dv-resize-container .dv-groupview{border:2px solid rgba(255,255,255,.1)}.dv-drop-target-container{position:absolute;z-index:9999;top:0;left:0;height:100%;width:100%;pointer-events:none;overflow:hidden;--dv-transition-duration: .3s}.dv-drop-target-container .dv-drop-target-anchor{position:relative;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);opacity:1;will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden;contain:layout paint;transition:opacity var(--dv-transition-duration) ease-in,transform var(--dv-transition-duration) ease-out}.dv-drop-target{position:relative;--dv-transition-duration: 70ms}.dv-drop-target>.dv-drop-target-dropzone{position:absolute;left:0;top:0;height:100%;width:100%;z-index:1000;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection{position:relative;box-sizing:border-box;height:100%;width:100%;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);transition:top var(--dv-transition-duration) ease-out,left var(--dv-transition-duration) ease-out,width var(--dv-transition-duration) ease-out,height var(--dv-transition-duration) ease-out,opacity var(--dv-transition-duration) ease-out;will-change:transform;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical{border-top:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical{border-bottom:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal{border-left:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal{border-right:1px solid var(--dv-drag-over-border-color)}.dv-dockview{position:relative;background-color:var(--dv-group-view-background-color);contain:layout}.dv-dockview .dv-watermark-container{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1}.dv-dockview .dv-overlay-render-container{position:relative}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-inactivegroup-visiblepanel-tab-background-color);color:var(--dv-inactivegroup-visiblepanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-inactivegroup-hiddenpanel-tab-background-color);color:var(--dv-inactivegroup-hiddenpanel-tab-color)}.dv-tab.dv-tab-dragging{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview{display:flex;height:100%;background-color:var(--dv-group-view-background-color);overflow:hidden;flex-direction:column}.dv-groupview:focus{outline:none}.dv-groupview>.dv-content-container{flex-grow:1;min-height:0;outline:none}.dv-groupview.dv-groupview-header-bottom{flex-direction:column-reverse}.dv-groupview.dv-groupview-header-left{flex-direction:row}.dv-groupview.dv-groupview-header-right{flex-direction:row-reverse}.dv-root-wrapper,.dv-grid-view,.dv-branch-node{height:100%;width:100%}.dv-debug .dv-resize-container .dv-resize-handle-top{background-color:red}.dv-debug .dv-resize-container .dv-resize-handle-bottom{background-color:green}.dv-debug .dv-resize-container .dv-resize-handle-left{background-color:#ff0}.dv-debug .dv-resize-container .dv-resize-handle-right{background-color:#00f}.dv-debug .dv-resize-container .dv-resize-handle-topleft,.dv-debug .dv-resize-container .dv-resize-handle-topright,.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,.dv-debug .dv-resize-container .dv-resize-handle-bottomright{background-color:#0ff}.dv-resize-container{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:calc(var(--dv-overlay-z-index) - 2);border:1px solid var(--dv-tab-divider-color);box-shadow:var(--dv-floating-box-shadow);will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden}.dv-resize-container.dv-hidden{display:none}.dv-resize-container.dv-resize-container-dragging{opacity:.5;will-change:transform,opacity}.dv-resize-container .dv-resize-handle-top{height:4px;width:calc(100% - 8px);left:4px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-bottom{height:4px;width:calc(100% - 8px);left:4px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-left{height:calc(100% - 8px);width:4px;left:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-right{height:calc(100% - 8px);width:4px;right:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-topleft{height:4px;width:4px;top:-2px;left:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:nw-resize}.dv-resize-container .dv-resize-handle-topright{height:4px;width:4px;right:-2px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ne-resize}.dv-resize-container .dv-resize-handle-bottomleft{height:4px;width:4px;left:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:sw-resize}.dv-resize-container .dv-resize-handle-bottomright{height:4px;width:4px;right:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:se-resize}.dv-render-overlay{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:1;width:100%;height:100%;contain:layout paint;isolation:isolate;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.dv-render-overlay.dv-render-overlay-float{z-index:calc(var(--dv-overlay-z-index) - 1)}.dv-debug .dv-render-overlay{outline:1px solid red;outline-offset:-1}.dv-pane-container{height:100%;width:100%}.dv-pane-container.dv-animated .dv-view{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-pane-container .dv-view{overflow:hidden;display:flex;flex-direction:column;padding:0!important}.dv-pane-container .dv-view:not(:first-child):before{background-color:transparent!important}.dv-pane-container .dv-view:not(:first-child) .dv-pane>.dv-pane-header{border-top:1px solid var(--dv-paneview-header-border-color)}.dv-pane-container .dv-view .dv-default-header{background-color:var(--dv-group-view-background-color);color:var(--dv-activegroup-visiblepanel-tab-color);display:flex;padding:0 8px;cursor:pointer}.dv-pane-container .dv-view .dv-default-header .dv-pane-header-icon{display:flex;justify-content:center;align-items:center}.dv-pane-container .dv-view .dv-default-header>span{padding-left:8px;flex-grow:1}.dv-pane-container:first-of-type>.dv-pane>.dv-pane-header{border-top:none!important}.dv-pane-container .dv-pane{display:flex;flex-direction:column;overflow:hidden;height:100%}.dv-pane-container .dv-pane .dv-pane-header{box-sizing:border-box;-webkit-user-select:none;user-select:none;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-header.dv-pane-draggable{cursor:pointer}.dv-pane-container .dv-pane .dv-pane-header:focus:before,.dv-pane-container .dv-pane .dv-pane-header:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:\"\";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-pane-container .dv-pane .dv-pane-body{overflow-y:auto;overflow-x:hidden;flex-grow:1;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-body:focus:before,.dv-pane-container .dv-pane .dv-pane-body:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:\"\";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-enabled{background-color:#000}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-disabled{background-color:orange}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-maximum{background-color:green}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-minimum{background-color:red}.dv-split-view-container{position:relative;overflow:hidden;height:100%;width:100%}.dv-split-view-container.dv-splitview-disabled>.dv-sash-container>.dv-sash{pointer-events:none}.dv-split-view-container.dv-animation .dv-view,.dv-split-view-container.dv-animation .dv-sash{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-split-view-container.dv-horizontal{height:100%}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash{height:100%;width:4px}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-enabled{cursor:ew-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-maximum{cursor:w-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-minimum{cursor:e-resize}.dv-split-view-container.dv-horizontal>.dv-view-container>.dv-view:not(:first-child):before{height:100%;width:1px}.dv-split-view-container.dv-vertical{width:100%}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash{width:100%;height:4px}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-enabled{cursor:ns-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-maximum{cursor:n-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-minimum{cursor:s-resize}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view{width:100%}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view:not(:first-child):before{height:1px;width:100%}.dv-split-view-container .dv-sash-container{height:100%;width:100%;position:absolute}.dv-split-view-container .dv-sash-container .dv-sash{position:absolute;z-index:99;outline:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:none;background-color:var(--dv-sash-color, transparent)}.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active,.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover{background-color:var(--dv-active-sash-color, transparent);transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:var(--dv-active-sash-transition-duration, .1s);transition-delay:var(--dv-active-sash-transition-delay, .5s)}.dv-split-view-container .dv-view-container{position:relative;height:100%;width:100%}.dv-split-view-container .dv-view-container .dv-view{height:100%;box-sizing:border-box;overflow:auto;position:absolute}.dv-split-view-container.dv-separator-border .dv-view:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-separator-border)}.dv-dragged{transform:translateZ(0)}.dv-tab{flex-shrink:0}.dv-tab:focus-within,.dv-tab:focus{position:relative}.dv-tab:focus-within:after,.dv-tab:focus:after{position:absolute;content:\"\";height:100%;width:100%;top:0;left:0;pointer-events:none;outline:1px solid var(--dv-tab-divider-color)!important;outline-offset:-1px;z-index:5}.dv-tab.dv-tab-dragging .dv-default-tab-action{background-color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tab.dv-active-tab .dv-default-tab .dv-default-tab-action{visibility:visible}.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action{visibility:hidden}.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action{visibility:visible}.dv-tab .dv-default-tab{position:relative;height:100%;width:100%;display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis}.dv-tab .dv-default-tab .dv-default-tab-content{flex-grow:1;margin-right:4px}.dv-tab .dv-default-tab .dv-default-tab-action{padding:4px;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.dv-tab .dv-default-tab .dv-default-tab-action:hover{border-radius:2px;background-color:var(--dv-icon-hover-background-color)}.dv-tabs-overflow-dropdown-default{height:100%;color:var(--dv-activegroup-hiddenpanel-tab-color);margin:var(--dv-tab-margin);display:flex;align-items:center;flex-shrink:0;padding:.25rem .5rem;cursor:pointer}.dv-tabs-overflow-dropdown-default>span{padding-left:.25rem}.dv-tabs-overflow-dropdown-default>svg{transform:rotate(90deg)}.dv-tabs-container{display:flex;height:100%;overflow:auto;scrollbar-width:thin;will-change:scroll-position;transform:translateZ(0)}.dv-tabs-container.dv-tabs-container-vertical{width:100%;height:fit-content;max-height:100%;writing-mode:vertical-rl}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before,.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{content:\" \";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-tab-divider-color)}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before{width:1px;height:100%}.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{width:100%;height:1px}.dv-tabs-container::-webkit-scrollbar{height:3px}.dv-tabs-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color)}.dv-scrollable>.dv-tabs-container{overflow:hidden}.dv-tab{-webkit-user-drag:element;outline:none;padding:.25rem .5rem;cursor:pointer;position:relative;box-sizing:border-box;font-size:var(--dv-tab-font-size);margin:var(--dv-tab-margin)}.dv-tabs-container-vertical .dv-tab{padding:.5rem .25rem}.dv-tabs-overflow-container{flex-direction:column;height:unset;max-height:min(50vh,400px);overflow-y:auto;border:1px solid var(--dv-tab-divider-color);background-color:var(--dv-group-view-background-color);scrollbar-width:thin}.dv-tabs-overflow-container::-webkit-scrollbar{width:6px}.dv-tabs-overflow-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-overflow-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color);border-radius:3px}.dv-tabs-overflow-container .dv-tab:not(:last-child){border-bottom:1px solid var(--dv-tab-divider-color)}.dv-tabs-overflow-container .dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tabs-overflow-container .dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-tabs-and-actions-container{display:flex;background-color:var(--dv-tabs-and-actions-container-background-color);flex-shrink:0;box-sizing:border-box;height:var(--dv-tabs-and-actions-container-height);font-size:var(--dv-tabs-and-actions-container-font-size)}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-scrollable,.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container{flex-grow:1}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab{flex-grow:1;padding:0}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-void-container{flex-grow:0}.dv-tabs-and-actions-container .dv-void-container{display:flex;flex-grow:1}.dv-tabs-and-actions-container .dv-void-container.dv-draggable{cursor:grab}.dv-tabs-and-actions-container .dv-right-actions-container{display:flex}.dv-tabs-and-actions-container .dv-right-actions-container.dv-right-actions-container-vertical{flex-direction:column}.dv-tabs-and-actions-container.dv-groupview-header-vertical{flex-direction:column;height:auto;width:var(--dv-tabs-and-actions-container-height)}.dv-watermark{display:flex;height:100%}mm-dockview{display:block;width:100%;height:100%;position:relative}.dv-dockview-container{width:100%;height:100%;position:absolute;inset:0}.dv-dockview{width:100%;height:100%}.dv-dockview,.dv-grid-view{background-color:var(--dv-background-color, #fafafa);--dv-background-color: #fafafa;--dv-pane-background-color: #ffffff;--dv-tabs-and-actions-container-background-color: #f5f5f5;--dv-activegroup-visiblepanel-tab-background-color: #ffffff;--dv-activegroup-hiddenpanel-tab-background-color: #e8e8e8;--dv-inactivegroup-visiblepanel-tab-background-color: #f0f0f0;--dv-inactivegroup-hiddenpanel-tab-background-color: #e0e0e0;--dv-tab-divider-color: #e0e0e0;--dv-activegroup-visiblepanel-tab-color: #333333;--dv-activegroup-hiddenpanel-tab-color: #666666;--dv-inactivegroup-visiblepanel-tab-color: #666666;--dv-inactivegroup-hiddenpanel-tab-color: #999999;--dv-separator-border: 1px solid #e0e0e0;--dv-group-view-background-color: #ffffff;--dv-tabs-overflow-dropdown-background-color: #f5f5f5;--dv-icon-hover-background-color: #e0e0e0}.dv-tabs-overflow-container{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5);border:1px solid var(--dv-tab-divider-color, #e0e0e0);border-radius:4px;box-shadow:0 2px 8px #00000026}.dv-tabs-container{background-color:var(--dv-tabs-and-actions-container-background-color, #f5f5f5)}div[style*=--dv-overlay-z-index]{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5);border-radius:4px}div[style*=--dv-overlay-z-index] .dv-tabs-overflow-container{background-color:var(--dv-tabs-overflow-dropdown-background-color, #f5f5f5)}div[style*=--dv-overlay-z-index] .dv-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color, #e8e8e8);color:var(--dv-activegroup-hiddenpanel-tab-color, #666666)}div[style*=--dv-overlay-z-index] .dv-tab:hover{background-color:var(--dv-icon-hover-background-color, #d8d8d8)}div[style*=--dv-overlay-z-index] .dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color, #ffffff);color:var(--dv-activegroup-visiblepanel-tab-color, #333333)}div[style*=--dv-overlay-z-index] .dv-default-tab{background-color:transparent}.dv-tab{font-size:12px;font-weight:500;background-color:var(--dv-activegroup-hiddenpanel-tab-background-color, #e8e8e8);color:var(--dv-activegroup-hiddenpanel-tab-color, #666666)}.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color, #ffffff);color:var(--dv-activegroup-visiblepanel-tab-color, #333333)}.dv-default-tab{display:flex;align-items:center}.dv-default-tab-content{flex:1}.dv-default-tab-action{flex-shrink:0;opacity:.5;transition:opacity .15s ease}.dv-default-tab-action:hover{opacity:1}.dv-sash{background:var(--dv-sash-color, #e0e0e0)}.dv-sash:hover,.dv-sash.dv-active{background:var(--dv-sash-hover-color, #1976d2)}.dv-drop-target-dropzone{background:var(--dv-drag-over-background-color, rgba(25, 118, 210, .15));border:2px dashed var(--dv-drag-over-border-color, #1976d2);border-radius:4px}.dv-floating-group{box-shadow:0 4px 20px #00000026;border-radius:4px;overflow:hidden}\n"] }]
|
|
6278
6278
|
}], propDecorators: { containerRef: [{
|
|
@@ -6436,8 +6436,8 @@ class ElementPaletteComponent {
|
|
|
6436
6436
|
onDragEnd(_event, item) {
|
|
6437
6437
|
this.elementDragEnd.emit(item);
|
|
6438
6438
|
}
|
|
6439
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6440
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
6439
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ElementPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6440
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ElementPaletteComponent, isStandalone: true, selector: "mm-element-palette", outputs: { elementDragStart: "elementDragStart", elementDragEnd: "elementDragEnd" }, ngImport: i0, template: `
|
|
6441
6441
|
<div class="element-palette" data-testid="element-palette">
|
|
6442
6442
|
<div class="palette-search">
|
|
6443
6443
|
<input type="text"
|
|
@@ -6514,7 +6514,7 @@ class ElementPaletteComponent {
|
|
|
6514
6514
|
</div>
|
|
6515
6515
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.element-palette{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.palette-search{flex-shrink:0;padding:.5rem;border-bottom:1px solid #e0e0e0}.palette-search input{width:100%;padding:.5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px;box-sizing:border-box}.palette-search input:focus{outline:none;border-color:#1976d2}.palette-content{flex:1;min-height:0;overflow-y:auto;padding:.5rem}.palette-category{margin-bottom:.5rem}.category-header{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#f5f5f5;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.category-header:hover{background:#eee}.category-icon{font-size:10px;color:#666}.category-name{font-size:12px;font-weight:500}.category-count{font-size:11px;color:#999}.category-elements{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;padding:.5rem 0}.palette-element{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem;background:#fff;border:1px solid #e0e0e0;border-radius:4px;cursor:grab;transition:all .15s ease}.palette-element:hover{border-color:#1976d2;box-shadow:0 2px 4px #0000001a}.palette-element:active{cursor:grabbing}.element-preview{width:32px;height:28px;display:flex;align-items:center;justify-content:center}.preview-svg{width:100%;height:100%}.element-label{font-size:10px;text-align:center;color:#666}.no-results{padding:1rem;text-align:center;color:#999;font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
6516
6516
|
}
|
|
6517
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6517
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ElementPaletteComponent, decorators: [{
|
|
6518
6518
|
type: Component,
|
|
6519
6519
|
args: [{ selector: 'mm-element-palette', standalone: true, imports: [CommonModule, FormsModule], template: `
|
|
6520
6520
|
<div class="element-palette" data-testid="element-palette">
|
|
@@ -6612,9 +6612,9 @@ class SymbolLibraryPanelComponent {
|
|
|
6612
6612
|
searchTerm = '';
|
|
6613
6613
|
expandedLibraries = new Set();
|
|
6614
6614
|
// Signals
|
|
6615
|
-
_libraries = signal([], ...(ngDevMode ? [{ debugName: "_libraries" }] : []));
|
|
6616
|
-
_isLoading = signal(false, ...(ngDevMode ? [{ debugName: "_isLoading" }] : []));
|
|
6617
|
-
_error = signal(null, ...(ngDevMode ? [{ debugName: "_error" }] : []));
|
|
6615
|
+
_libraries = signal([], ...(ngDevMode ? [{ debugName: "_libraries" }] : /* istanbul ignore next */ []));
|
|
6616
|
+
_isLoading = signal(false, ...(ngDevMode ? [{ debugName: "_isLoading" }] : /* istanbul ignore next */ []));
|
|
6617
|
+
_error = signal(null, ...(ngDevMode ? [{ debugName: "_error" }] : /* istanbul ignore next */ []));
|
|
6618
6618
|
isLoading = this._isLoading.asReadonly();
|
|
6619
6619
|
error = this._error.asReadonly();
|
|
6620
6620
|
filteredLibraries = computed(() => {
|
|
@@ -6633,7 +6633,7 @@ class SymbolLibraryPanelComponent {
|
|
|
6633
6633
|
}))
|
|
6634
6634
|
.filter(library => library.symbols.length > 0 ||
|
|
6635
6635
|
library.name.toLowerCase().includes(term));
|
|
6636
|
-
}, ...(ngDevMode ? [{ debugName: "filteredLibraries" }] : []));
|
|
6636
|
+
}, ...(ngDevMode ? [{ debugName: "filteredLibraries" }] : /* istanbul ignore next */ []));
|
|
6637
6637
|
ngOnInit() {
|
|
6638
6638
|
void this.loadLibraries();
|
|
6639
6639
|
}
|
|
@@ -6784,8 +6784,8 @@ class SymbolLibraryPanelComponent {
|
|
|
6784
6784
|
const style = this.resolveStyle(primitive, styleClasses);
|
|
6785
6785
|
return style.stroke?.opacity ?? defaultOpacity;
|
|
6786
6786
|
}
|
|
6787
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6788
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
6787
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6788
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SymbolLibraryPanelComponent, isStandalone: true, selector: "mm-symbol-library-panel", outputs: { symbolDragStart: "symbolDragStart", symbolDragEnd: "symbolDragEnd" }, ngImport: i0, template: `
|
|
6789
6789
|
<div class="symbol-library-panel">
|
|
6790
6790
|
<div class="panel-search">
|
|
6791
6791
|
<input type="text"
|
|
@@ -6962,7 +6962,7 @@ class SymbolLibraryPanelComponent {
|
|
|
6962
6962
|
</div>
|
|
6963
6963
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.symbol-library-panel{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.panel-search{flex-shrink:0;padding:.5rem;border-bottom:1px solid #e0e0e0}.panel-search input{width:100%;padding:.5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px;box-sizing:border-box}.panel-search input:focus{outline:none;border-color:#9c27b0}.panel-content{flex:1;min-height:0;overflow-y:auto;padding:.5rem}.loading{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:2rem 1rem;color:#666;font-size:12px}.loading-spinner{width:24px;height:24px;border:2px solid #e0e0e0;border-top-color:#9c27b0;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;color:#d32f2f;font-size:12px;text-align:center}.error-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:#ffebee;border-radius:50%;font-weight:700;font-size:18px}.retry-btn{padding:.25rem .75rem;background:#fff;border:1px solid #d32f2f;border-radius:4px;color:#d32f2f;font-size:12px;cursor:pointer}.retry-btn:hover{background:#ffebee}.library-section{margin-bottom:.5rem}.library-header{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#f3e5f5;border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none}.library-header:hover{background:#e1bee7}.expand-icon{font-size:10px;color:#7b1fa2}.library-name{font-size:12px;font-weight:500;color:#7b1fa2}.library-count{font-size:11px;color:#9c27b0}.library-symbols{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;padding:.5rem 0}.symbol-item{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem;background:#fff;border:1px solid #e0e0e0;border-radius:4px;cursor:grab;transition:all .15s ease}.symbol-item:hover{border-color:#9c27b0;box-shadow:0 2px 4px #9c27b033}.symbol-item:active{cursor:grabbing}.symbol-preview{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#fafafa;border-radius:4px;overflow:hidden}.preview-image{max-width:100%;max-height:100%;object-fit:contain}.preview-svg{width:100%;height:100%}.symbol-label{font-size:10px;text-align:center;color:#666;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-library{grid-column:1 / -1;padding:1rem;text-align:center;color:#999;font-size:11px;font-style:italic}.no-results{padding:2rem 1rem;text-align:center;color:#999;font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
6964
6964
|
}
|
|
6965
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6965
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryPanelComponent, decorators: [{
|
|
6966
6966
|
type: Component,
|
|
6967
6967
|
args: [{ selector: 'mm-symbol-library-panel', standalone: true, imports: [CommonModule, FormsModule], template: `
|
|
6968
6968
|
<div class="symbol-library-panel">
|
|
@@ -7303,8 +7303,8 @@ class PropertyInspectorComponent {
|
|
|
7303
7303
|
// Reset input so same file can be selected again
|
|
7304
7304
|
input.value = '';
|
|
7305
7305
|
}
|
|
7306
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
7307
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
7306
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyInspectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7307
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: PropertyInspectorComponent, isStandalone: true, selector: "mm-property-inspector", inputs: { selectedElements: "selectedElements", selectedConnections: "selectedConnections", selectedPrimitives: "selectedPrimitives", selectedSymbolInstances: "selectedSymbolInstances", symbolDefinitions: "symbolDefinitions", availableStyleClasses: "availableStyleClasses" }, outputs: { propertyChange: "propertyChange" }, ngImport: i0, template: `
|
|
7308
7308
|
<div class="property-inspector">
|
|
7309
7309
|
<div class="inspector-content">
|
|
7310
7310
|
@if (selectedElements.length === 0 && selectedConnections.length === 0 && selectedPrimitives.length === 0 && selectedSymbolInstances.length === 0) {
|
|
@@ -8253,7 +8253,7 @@ class PropertyInspectorComponent {
|
|
|
8253
8253
|
</div>
|
|
8254
8254
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.property-inspector{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.inspector-content{flex:1;min-height:0;overflow-y:auto;padding:.5rem}.no-selection,.multi-selection{padding:1rem;text-align:center;color:#666}.hint{font-size:12px;color:#999;margin-top:.5rem}.property-section{margin-bottom:1rem}.section-header{font-size:12px;font-weight:500;color:#666;padding:.5rem 0;border-bottom:1px solid #e0e0e0;margin-bottom:.5rem}.property-group{display:flex;flex-direction:column;gap:.5rem}.property-row{display:flex;align-items:center;gap:.5rem}.property-row label{flex:0 0 80px;font-size:11px;color:#666}.property-row input[type=text],.property-row input[type=number],.property-row select{flex:1;padding:.25rem .5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px}.property-row input[type=text]:focus,.property-row input[type=number]:focus,.property-row select:focus{outline:none;border-color:#1976d2}.property-row input[type=checkbox]{margin:0}.property-row input[type=color]{flex:1;height:28px;padding:2px;border:1px solid #e0e0e0;border-radius:4px}.color-with-opacity{display:flex;align-items:center;gap:.5rem;flex:1}.color-with-opacity input[type=color]{flex:0 0 40px;width:40px}.opacity-slider{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:linear-gradient(to right,transparent,#333);border-radius:2px;cursor:pointer}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#1976d2;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 3px #0000004d}.opacity-slider::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#1976d2;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 3px #0000004d}.opacity-value{flex:0 0 36px;font-size:11px;color:#666;text-align:right}.line-type-select,.style-class-select{flex:1;height:28px;padding:0 .5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px;background:#fff;cursor:pointer}.style-class-select{width:100%}.line-preview{flex:0 0 60px;height:20px;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:4px}.property-row.two-col{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.property-row.two-col>div{display:flex;flex-direction:column;gap:.25rem}.property-row.two-col label{flex:none}.type-badge{display:inline-block;padding:.125rem .5rem;background:#e3f2fd;border-radius:4px;font-size:11px;color:#1976d2}.type-badge.small{padding:.0625rem .375rem;font-size:10px}.exposed-property{flex-direction:column;align-items:flex-start;gap:.25rem}.exposed-property label{font-weight:500;color:#333}.exposed-value{display:flex;align-items:center;gap:.5rem}.default-value{font-size:12px;color:#666}.exposed-hint{font-size:11px;color:#888;margin:.5rem .75rem 0;padding:0;font-style:italic}.info-value{font-size:12px;color:#333}.image-preview-container{display:flex;justify-content:center;padding:.5rem;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:4px;margin-bottom:.5rem}.image-preview{max-width:100%;max-height:100px;object-fit:contain}.file-upload-row{display:flex;align-items:center;gap:.5rem;flex:1}.file-input-hidden{display:none}.file-upload-button{padding:.25rem .75rem;font-size:12px;border:1px solid #1976d2;border-radius:4px;background:#e3f2fd;color:#1976d2;cursor:pointer;white-space:nowrap}.file-upload-button:hover{background:#bbdefb}.file-type-hint{font-size:10px;color:#999}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "ngmodule", type: InputsModule }, { kind: "ngmodule", type: DropDownsModule }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }] });
|
|
8255
8255
|
}
|
|
8256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
8256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyInspectorComponent, decorators: [{
|
|
8257
8257
|
type: Component,
|
|
8258
8258
|
args: [{ selector: 'mm-property-inspector', standalone: true, imports: [CommonModule, FormsModule, InputsModule, DropDownsModule, DecimalPipe], template: `
|
|
8259
8259
|
<div class="property-inspector">
|
|
@@ -9265,8 +9265,8 @@ class ContextMenuComponent {
|
|
|
9265
9265
|
close() {
|
|
9266
9266
|
this.closed.emit();
|
|
9267
9267
|
}
|
|
9268
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
9269
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
9268
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9269
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ContextMenuComponent, isStandalone: true, selector: "mm-context-menu", inputs: { position: "position", items: "items" }, outputs: { action: "action", closed: "closed" }, host: { listeners: { "document:keydown.escape": "onEscape()" }, properties: { "style.left.px": "position.x", "style.top.px": "position.y" } }, ngImport: i0, template: `
|
|
9270
9270
|
<div class="context-menu"
|
|
9271
9271
|
(click)="$event.stopPropagation()">
|
|
9272
9272
|
@for (item of items; track item.id) {
|
|
@@ -9290,7 +9290,7 @@ class ContextMenuComponent {
|
|
|
9290
9290
|
</div>
|
|
9291
9291
|
`, isInline: true, styles: [":host{position:fixed;z-index:10000}.context-menu{min-width:180px;background:var(--context-menu-bg, #1a2332);border:1px solid var(--context-menu-border, rgba(100, 206, 185, .3));border-radius:4px;box-shadow:0 4px 12px #0006;padding:4px 0;font-size:13px}.menu-item{display:flex;align-items:center;width:100%;padding:8px 12px;border:none;background:none;text-align:left;cursor:pointer;color:var(--context-menu-text, #e0e0e0);gap:8px}.menu-item:hover:not(.disabled){background:var(--context-menu-hover, rgba(100, 206, 185, .15))}.menu-item.disabled{color:var(--context-menu-disabled, #666);cursor:not-allowed}.menu-icon{width:20px;text-align:center;flex-shrink:0}.menu-label{flex:1}.menu-shortcut{color:var(--context-menu-shortcut, #888);font-size:11px;margin-left:16px}.menu-separator{height:1px;background:var(--context-menu-separator, rgba(100, 206, 185, .2));margin:4px 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
9292
9292
|
}
|
|
9293
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
9293
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ContextMenuComponent, decorators: [{
|
|
9294
9294
|
type: Component,
|
|
9295
9295
|
args: [{ selector: 'mm-context-menu', standalone: true, imports: [CommonModule], host: {
|
|
9296
9296
|
'[style.left.px]': 'position.x',
|
|
@@ -9345,9 +9345,9 @@ class PathEditorService {
|
|
|
9345
9345
|
// ============================================================================
|
|
9346
9346
|
// State
|
|
9347
9347
|
// ============================================================================
|
|
9348
|
-
_currentPath = signal(null, ...(ngDevMode ? [{ debugName: "_currentPath" }] : []));
|
|
9349
|
-
_selectedNodeId = signal(null, ...(ngDevMode ? [{ debugName: "_selectedNodeId" }] : []));
|
|
9350
|
-
_isDirty = signal(false, ...(ngDevMode ? [{ debugName: "_isDirty" }] : []));
|
|
9348
|
+
_currentPath = signal(null, ...(ngDevMode ? [{ debugName: "_currentPath" }] : /* istanbul ignore next */ []));
|
|
9349
|
+
_selectedNodeId = signal(null, ...(ngDevMode ? [{ debugName: "_selectedNodeId" }] : /* istanbul ignore next */ []));
|
|
9350
|
+
_isDirty = signal(false, ...(ngDevMode ? [{ debugName: "_isDirty" }] : /* istanbul ignore next */ []));
|
|
9351
9351
|
/** Current parsed path */
|
|
9352
9352
|
currentPath = this._currentPath.asReadonly();
|
|
9353
9353
|
/** Currently selected node ID */
|
|
@@ -9355,16 +9355,16 @@ class PathEditorService {
|
|
|
9355
9355
|
/** Whether the path has unsaved changes */
|
|
9356
9356
|
isDirty = this._isDirty.asReadonly();
|
|
9357
9357
|
/** Current segments */
|
|
9358
|
-
segments = computed(() => this._currentPath()?.segments ?? [], ...(ngDevMode ? [{ debugName: "segments" }] : []));
|
|
9358
|
+
segments = computed(() => this._currentPath()?.segments ?? [], ...(ngDevMode ? [{ debugName: "segments" }] : /* istanbul ignore next */ []));
|
|
9359
9359
|
/** Current nodes for visual editing */
|
|
9360
|
-
nodes = computed(() => this._currentPath()?.nodes ?? [], ...(ngDevMode ? [{ debugName: "nodes" }] : []));
|
|
9360
|
+
nodes = computed(() => this._currentPath()?.nodes ?? [], ...(ngDevMode ? [{ debugName: "nodes" }] : /* istanbul ignore next */ []));
|
|
9361
9361
|
/** Selected node */
|
|
9362
9362
|
selectedNode = computed(() => {
|
|
9363
9363
|
const nodeId = this._selectedNodeId();
|
|
9364
9364
|
if (!nodeId)
|
|
9365
9365
|
return null;
|
|
9366
9366
|
return this.nodes().find(n => n.id === nodeId) ?? null;
|
|
9367
|
-
}, ...(ngDevMode ? [{ debugName: "selectedNode" }] : []));
|
|
9367
|
+
}, ...(ngDevMode ? [{ debugName: "selectedNode" }] : /* istanbul ignore next */ []));
|
|
9368
9368
|
// ============================================================================
|
|
9369
9369
|
// Parsing
|
|
9370
9370
|
// ============================================================================
|
|
@@ -10103,10 +10103,10 @@ class PathEditorService {
|
|
|
10103
10103
|
return segment;
|
|
10104
10104
|
}
|
|
10105
10105
|
}
|
|
10106
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
10107
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
10106
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PathEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10107
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PathEditorService, providedIn: 'root' });
|
|
10108
10108
|
}
|
|
10109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
10109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PathEditorService, decorators: [{
|
|
10110
10110
|
type: Injectable,
|
|
10111
10111
|
args: [{
|
|
10112
10112
|
providedIn: 'root'
|
|
@@ -10121,23 +10121,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
10121
10121
|
*/
|
|
10122
10122
|
class PathEditorComponent {
|
|
10123
10123
|
/** Input path data string */
|
|
10124
|
-
pathData = input('', ...(ngDevMode ? [{ debugName: "pathData" }] : []));
|
|
10124
|
+
pathData = input('', ...(ngDevMode ? [{ debugName: "pathData" }] : /* istanbul ignore next */ []));
|
|
10125
10125
|
/** Width of the editor viewport */
|
|
10126
|
-
width = input(300, ...(ngDevMode ? [{ debugName: "width" }] : []));
|
|
10126
|
+
width = input(300, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
10127
10127
|
/** Height of the editor viewport */
|
|
10128
|
-
height = input(200, ...(ngDevMode ? [{ debugName: "height" }] : []));
|
|
10128
|
+
height = input(200, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
10129
10129
|
/** Grid size for snapping (default 10) */
|
|
10130
|
-
gridSize = input(10, ...(ngDevMode ? [{ debugName: "gridSize" }] : []));
|
|
10130
|
+
gridSize = input(10, ...(ngDevMode ? [{ debugName: "gridSize" }] : /* istanbul ignore next */ []));
|
|
10131
10131
|
/** Whether to snap anchor points to grid */
|
|
10132
|
-
snapToGrid = input(true, ...(ngDevMode ? [{ debugName: "snapToGrid" }] : []));
|
|
10132
|
+
snapToGrid = input(true, ...(ngDevMode ? [{ debugName: "snapToGrid" }] : /* istanbul ignore next */ []));
|
|
10133
10133
|
/** Emits when path data changes */
|
|
10134
10134
|
pathChange = output();
|
|
10135
10135
|
/** Reference to SVG element */
|
|
10136
|
-
svgElement = viewChild('svgElement', ...(ngDevMode ? [{ debugName: "svgElement" }] : []));
|
|
10136
|
+
svgElement = viewChild('svgElement', ...(ngDevMode ? [{ debugName: "svgElement" }] : /* istanbul ignore next */ []));
|
|
10137
10137
|
/** Currently dragging node */
|
|
10138
|
-
_draggingNode = signal(null, ...(ngDevMode ? [{ debugName: "_draggingNode" }] : []));
|
|
10138
|
+
_draggingNode = signal(null, ...(ngDevMode ? [{ debugName: "_draggingNode" }] : /* istanbul ignore next */ []));
|
|
10139
10139
|
/** Text editor value (separate to avoid parsing loop) */
|
|
10140
|
-
textEditorValue = signal('', ...(ngDevMode ? [{ debugName: "textEditorValue" }] : []));
|
|
10140
|
+
textEditorValue = signal('', ...(ngDevMode ? [{ debugName: "textEditorValue" }] : /* istanbul ignore next */ []));
|
|
10141
10141
|
/** ViewBox bounds for SVG */
|
|
10142
10142
|
viewBoxBounds = computed(() => {
|
|
10143
10143
|
const nodes = this.pathService.nodes();
|
|
@@ -10156,12 +10156,12 @@ class PathEditorComponent {
|
|
|
10156
10156
|
const width = Math.max(maxX - minX + padding * 2, 100);
|
|
10157
10157
|
const height = Math.max(maxY - minY + padding * 2, 100);
|
|
10158
10158
|
return { x: minX - padding, y: minY - padding, width, height };
|
|
10159
|
-
}, ...(ngDevMode ? [{ debugName: "viewBoxBounds" }] : []));
|
|
10159
|
+
}, ...(ngDevMode ? [{ debugName: "viewBoxBounds" }] : /* istanbul ignore next */ []));
|
|
10160
10160
|
/** ViewBox string for SVG */
|
|
10161
10161
|
viewBox = computed(() => {
|
|
10162
10162
|
const b = this.viewBoxBounds();
|
|
10163
10163
|
return `${b.x} ${b.y} ${b.width} ${b.height}`;
|
|
10164
|
-
}, ...(ngDevMode ? [{ debugName: "viewBox" }] : []));
|
|
10164
|
+
}, ...(ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []));
|
|
10165
10165
|
/** Lines connecting control points to their anchor points */
|
|
10166
10166
|
controlPointLines = computed(() => {
|
|
10167
10167
|
const lines = [];
|
|
@@ -10253,7 +10253,7 @@ class PathEditorComponent {
|
|
|
10253
10253
|
}
|
|
10254
10254
|
}
|
|
10255
10255
|
return lines;
|
|
10256
|
-
}, ...(ngDevMode ? [{ debugName: "controlPointLines" }] : []));
|
|
10256
|
+
}, ...(ngDevMode ? [{ debugName: "controlPointLines" }] : /* istanbul ignore next */ []));
|
|
10257
10257
|
pathService = inject(PathEditorService);
|
|
10258
10258
|
/** Flag to prevent circular updates */
|
|
10259
10259
|
_isUpdating = false;
|
|
@@ -10416,8 +10416,8 @@ class PathEditorComponent {
|
|
|
10416
10416
|
emitChange() {
|
|
10417
10417
|
this.pathChange.emit(this.pathService.getCurrentPathString());
|
|
10418
10418
|
}
|
|
10419
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
10420
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
10419
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PathEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10420
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: PathEditorComponent, isStandalone: true, selector: "mm-path-editor", inputs: { pathData: { classPropertyName: "pathData", publicName: "pathData", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, snapToGrid: { classPropertyName: "snapToGrid", publicName: "snapToGrid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pathChange: "pathChange" }, viewQueries: [{ propertyName: "svgElement", first: true, predicate: ["svgElement"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
10421
10421
|
<div class="path-editor">
|
|
10422
10422
|
<!-- Visual Editor -->
|
|
10423
10423
|
<div class="visual-editor">
|
|
@@ -10535,7 +10535,7 @@ class PathEditorComponent {
|
|
|
10535
10535
|
</div>
|
|
10536
10536
|
`, isInline: true, styles: [".path-editor{display:flex;flex-direction:column;gap:12px;padding:8px;background:#f5f5f5;border-radius:4px;height:100%}.visual-editor{flex:1;display:flex;flex-direction:column;min-height:200px;background:#fff;border:1px solid #ddd;border-radius:4px;overflow:hidden}.path-canvas{flex:1;width:100%;cursor:crosshair}.point-node{fill:#4caf50;stroke:#fff;stroke-width:2;cursor:move}.point-node:hover{fill:#2e7d32}.control-node{fill:#2196f3;stroke:#fff;stroke-width:1.5;cursor:move}.control-node:hover{fill:#1565c0}.selected{stroke:#ff9800;stroke-width:3}.toolbar{display:flex;align-items:center;gap:4px;padding:4px 8px;background:#f9f9f9;border-top:1px solid #ddd}.toolbar-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:12px;font-weight:700;color:#333}.toolbar-btn:hover:not(:disabled){background:#e8e8e8}.toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.separator{width:1px;height:20px;background:#ddd;margin:0 4px}.text-editor{display:flex;flex-direction:column;gap:4px}.text-editor label{font-size:12px;font-weight:500;color:#666}.path-textarea{font-family:Monaco,Consolas,monospace;font-size:12px;padding:8px;border:1px solid #ddd;border-radius:4px;resize:vertical;min-height:60px}.path-textarea:focus{outline:none;border-color:#2196f3}.text-editor-footer{display:flex;justify-content:space-between;font-size:11px;color:#888}.status.dirty{color:#ff9800}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10537
10537
|
}
|
|
10538
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
10538
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PathEditorComponent, decorators: [{
|
|
10539
10539
|
type: Component,
|
|
10540
10540
|
args: [{ selector: 'mm-path-editor', standalone: true, imports: [CommonModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
10541
10541
|
<div class="path-editor">
|
|
@@ -10985,12 +10985,12 @@ class BindingEditorDialogComponent {
|
|
|
10985
10985
|
// Store all bindings for filtering
|
|
10986
10986
|
_allBindings = [];
|
|
10987
10987
|
// Internal state
|
|
10988
|
-
_visible = signal(false, ...(ngDevMode ? [{ debugName: "_visible" }] : []));
|
|
10989
|
-
_property = signal(null, ...(ngDevMode ? [{ debugName: "_property" }] : []));
|
|
10990
|
-
_bindings = signal([], ...(ngDevMode ? [{ debugName: "_bindings" }] : []));
|
|
10991
|
-
_expandedIndex = signal(null, ...(ngDevMode ? [{ debugName: "_expandedIndex" }] : []));
|
|
10992
|
-
_previewInputValue = signal(50, ...(ngDevMode ? [{ debugName: "_previewInputValue" }] : []));
|
|
10993
|
-
_previewErrors = signal(new Map(), ...(ngDevMode ? [{ debugName: "_previewErrors" }] : []));
|
|
10988
|
+
_visible = signal(false, ...(ngDevMode ? [{ debugName: "_visible" }] : /* istanbul ignore next */ []));
|
|
10989
|
+
_property = signal(null, ...(ngDevMode ? [{ debugName: "_property" }] : /* istanbul ignore next */ []));
|
|
10990
|
+
_bindings = signal([], ...(ngDevMode ? [{ debugName: "_bindings" }] : /* istanbul ignore next */ []));
|
|
10991
|
+
_expandedIndex = signal(null, ...(ngDevMode ? [{ debugName: "_expandedIndex" }] : /* istanbul ignore next */ []));
|
|
10992
|
+
_previewInputValue = signal(50, ...(ngDevMode ? [{ debugName: "_previewInputValue" }] : /* istanbul ignore next */ []));
|
|
10993
|
+
_previewErrors = signal(new Map(), ...(ngDevMode ? [{ debugName: "_previewErrors" }] : /* istanbul ignore next */ []));
|
|
10994
10994
|
/**
|
|
10995
10995
|
* Filter bindings for the current property
|
|
10996
10996
|
*/
|
|
@@ -11007,11 +11007,11 @@ class BindingEditorDialogComponent {
|
|
|
11007
11007
|
}
|
|
11008
11008
|
}
|
|
11009
11009
|
// Computed values
|
|
11010
|
-
visible = computed(() => this._visible(), ...(ngDevMode ? [{ debugName: "visible" }] : []));
|
|
11011
|
-
currentProperty = computed(() => this._property(), ...(ngDevMode ? [{ debugName: "currentProperty" }] : []));
|
|
11012
|
-
bindings = computed(() => this._bindings(), ...(ngDevMode ? [{ debugName: "bindings" }] : []));
|
|
11013
|
-
expandedIndex = computed(() => this._expandedIndex(), ...(ngDevMode ? [{ debugName: "expandedIndex" }] : []));
|
|
11014
|
-
previewInputValue = computed(() => this._previewInputValue(), ...(ngDevMode ? [{ debugName: "previewInputValue" }] : []));
|
|
11010
|
+
visible = computed(() => this._visible(), ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
|
|
11011
|
+
currentProperty = computed(() => this._property(), ...(ngDevMode ? [{ debugName: "currentProperty" }] : /* istanbul ignore next */ []));
|
|
11012
|
+
bindings = computed(() => this._bindings(), ...(ngDevMode ? [{ debugName: "bindings" }] : /* istanbul ignore next */ []));
|
|
11013
|
+
expandedIndex = computed(() => this._expandedIndex(), ...(ngDevMode ? [{ debugName: "expandedIndex" }] : /* istanbul ignore next */ []));
|
|
11014
|
+
previewInputValue = computed(() => this._previewInputValue(), ...(ngDevMode ? [{ debugName: "previewInputValue" }] : /* istanbul ignore next */ []));
|
|
11015
11015
|
// Effect type groups for the dropdown
|
|
11016
11016
|
effectTypeGroups = [
|
|
11017
11017
|
{
|
|
@@ -11085,14 +11085,14 @@ class BindingEditorDialogComponent {
|
|
|
11085
11085
|
name: p.name ?? `${p.type}-${p.id.substring(0, 6)}`,
|
|
11086
11086
|
type: 'primitive'
|
|
11087
11087
|
}));
|
|
11088
|
-
}, ...(ngDevMode ? [{ debugName: "primitiveTargets" }] : []));
|
|
11088
|
+
}, ...(ngDevMode ? [{ debugName: "primitiveTargets" }] : /* istanbul ignore next */ []));
|
|
11089
11089
|
symbolInstanceTargets = computed(() => {
|
|
11090
11090
|
return this.symbolInstances.map(s => ({
|
|
11091
11091
|
id: s.id,
|
|
11092
11092
|
name: s.name ?? `symbol-${s.id.substring(0, 6)}`,
|
|
11093
11093
|
type: 'symbolInstance'
|
|
11094
11094
|
}));
|
|
11095
|
-
}, ...(ngDevMode ? [{ debugName: "symbolInstanceTargets" }] : []));
|
|
11095
|
+
}, ...(ngDevMode ? [{ debugName: "symbolInstanceTargets" }] : /* istanbul ignore next */ []));
|
|
11096
11096
|
ngOnInit() {
|
|
11097
11097
|
// Initialize with first binding expanded if any exist
|
|
11098
11098
|
if (this._bindings().length > 0) {
|
|
@@ -11292,8 +11292,8 @@ class BindingEditorDialogComponent {
|
|
|
11292
11292
|
this.saved.emit(mergedBindings);
|
|
11293
11293
|
this._visible.set(false);
|
|
11294
11294
|
}
|
|
11295
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
11296
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
11295
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BindingEditorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11296
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: BindingEditorDialogComponent, isStandalone: true, selector: "mm-binding-editor-dialog", inputs: { show: "show", property: "property", existingBindings: "existingBindings", primitives: "primitives", symbolInstances: "symbolInstances", symbolDefinitions: "symbolDefinitions" }, outputs: { closed: "closed", saved: "saved" }, ngImport: i0, template: `
|
|
11297
11297
|
@if (visible()) {
|
|
11298
11298
|
<kendo-dialog title="Bindings for: {{ currentProperty()?.name }}"
|
|
11299
11299
|
[width]="550"
|
|
@@ -11475,7 +11475,7 @@ class BindingEditorDialogComponent {
|
|
|
11475
11475
|
}
|
|
11476
11476
|
`, isInline: true, styles: [".binding-editor-content{display:flex;flex-direction:column;height:100%;min-height:300px}.bindings-list{flex:1;overflow-y:auto}.list-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid #e0e0e0;margin-bottom:.5rem;font-weight:500;font-size:13px}.empty-state{padding:1.5rem;text-align:center;color:#666;background:#f9f9f9;border-radius:8px}.hint{font-size:12px;color:#999;margin-top:.5rem}.binding-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:.5rem;overflow:hidden}.binding-card.expanded{border-color:#1976d2}.binding-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem;cursor:pointer;background:#fafafa}.binding-header:hover{background:#f5f5f5}.binding-summary{display:flex;align-items:center;gap:.5rem}.target-name{font-weight:500;font-size:13px}.effect-badge{display:inline-block;padding:.125rem .5rem;background:#e8f5e9;border-radius:4px;font-size:10px;color:#2e7d32}.binding-actions{display:flex;gap:.25rem}.binding-form{padding:.75rem;border-top:1px solid #e0e0e0;display:flex;flex-direction:column;gap:.75rem}.form-row{display:flex;align-items:flex-start;gap:.5rem}.form-row label{flex:0 0 90px;font-size:11px;color:#666;padding-top:.5rem}.form-row select,.form-row input[type=text],.form-row input[type=number]{flex:1;padding:.375rem .5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px}.form-row select:focus,.form-row input:focus{outline:none;border-color:#1976d2}.expression-row{flex-direction:column;align-items:stretch}.expression-row label{flex:none;padding-top:0;margin-bottom:.25rem}.expression-input{width:100%}.expression-input input{width:100%;font-family:Consolas,Monaco,monospace}.expression-hint{font-size:10px;color:#999;margin-top:.25rem}.expression-hint code{background:#f5f5f5;padding:.125rem .25rem;border-radius:3px;font-family:Consolas,Monaco,monospace}.expression-preview{background:#f9f9f9;border-radius:6px;padding:.75rem}.expression-preview>label{display:block;font-size:11px;color:#666;margin-bottom:.5rem}.preview-content{display:flex;align-items:center;gap:.75rem}.preview-input,.preview-output{display:flex;align-items:center;gap:.5rem;font-size:12px}.preview-input input[type=number]{width:80px;padding:.25rem .5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px}.boolean-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer}.boolean-toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer}.boolean-label{font-family:monospace;font-size:12px;color:#333}.preview-arrow{color:#666;font-size:16px}.preview-output .output-value{font-weight:500;color:#1976d2;font-family:Consolas,Monaco,monospace}.preview-output.error .output-value{color:#d32f2f}.anchor-row{align-items:flex-start}.anchor-selector{display:flex;align-items:center;gap:.75rem}.anchor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;width:54px;height:54px;background:#e0e0e0;border-radius:4px;padding:2px}.anchor-point{display:flex;align-items:center;justify-content:center;background:#fff;border:none;cursor:pointer;padding:0;border-radius:2px}.anchor-point:hover{background:#e3f2fd}.anchor-point.selected{background:#1976d2}.anchor-dot{width:6px;height:6px;border-radius:50%;background:#999}.anchor-point.selected .anchor-dot{background:#fff}.anchor-point:hover .anchor-dot{background:#1976d2}.anchor-point.selected:hover .anchor-dot{background:#fff}.anchor-label{font-size:11px;color:#666}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "ngmodule", type: DropDownsModule }, { kind: "ngmodule", type: DialogsModule }, { kind: "component", type: i3.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: i3.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }] });
|
|
11477
11477
|
}
|
|
11478
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
11478
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BindingEditorDialogComponent, decorators: [{
|
|
11479
11479
|
type: Component,
|
|
11480
11480
|
args: [{ selector: 'mm-binding-editor-dialog', standalone: true, imports: [CommonModule, FormsModule, ButtonsModule, InputsModule, DropDownsModule, DialogsModule], template: `
|
|
11481
11481
|
@if (visible()) {
|
|
@@ -11708,8 +11708,8 @@ class DesignerSelectionService {
|
|
|
11708
11708
|
_selection = signal({
|
|
11709
11709
|
elements: new Set(),
|
|
11710
11710
|
connections: new Set()
|
|
11711
|
-
}, ...(ngDevMode ? [{ debugName: "_selection" }] : []));
|
|
11712
|
-
_selectionRect = signal(null, ...(ngDevMode ? [{ debugName: "_selectionRect" }] : []));
|
|
11711
|
+
}, ...(ngDevMode ? [{ debugName: "_selection" }] : /* istanbul ignore next */ []));
|
|
11712
|
+
_selectionRect = signal(null, ...(ngDevMode ? [{ debugName: "_selectionRect" }] : /* istanbul ignore next */ []));
|
|
11713
11713
|
// Public readonly signals
|
|
11714
11714
|
selection = this._selection.asReadonly();
|
|
11715
11715
|
selectionRect = this._selectionRect.asReadonly();
|
|
@@ -11719,14 +11719,14 @@ class DesignerSelectionService {
|
|
|
11719
11719
|
hasSelection = computed(() => {
|
|
11720
11720
|
const sel = this._selection();
|
|
11721
11721
|
return sel.elements.size > 0 || sel.connections.size > 0;
|
|
11722
|
-
}, ...(ngDevMode ? [{ debugName: "hasSelection" }] : []));
|
|
11722
|
+
}, ...(ngDevMode ? [{ debugName: "hasSelection" }] : /* istanbul ignore next */ []));
|
|
11723
11723
|
/**
|
|
11724
11724
|
* Get the count of selected items
|
|
11725
11725
|
*/
|
|
11726
11726
|
selectionCount = computed(() => {
|
|
11727
11727
|
const sel = this._selection();
|
|
11728
11728
|
return sel.elements.size + sel.connections.size;
|
|
11729
|
-
}, ...(ngDevMode ? [{ debugName: "selectionCount" }] : []));
|
|
11729
|
+
}, ...(ngDevMode ? [{ debugName: "selectionCount" }] : /* istanbul ignore next */ []));
|
|
11730
11730
|
// ============================================================================
|
|
11731
11731
|
// Element Selection (also used for primitives and symbols)
|
|
11732
11732
|
// ============================================================================
|
|
@@ -12045,10 +12045,10 @@ class DesignerSelectionService {
|
|
|
12045
12045
|
setSelectionRect(rect) {
|
|
12046
12046
|
this._selectionRect.set(rect);
|
|
12047
12047
|
}
|
|
12048
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
12049
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
12048
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12049
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerSelectionService });
|
|
12050
12050
|
}
|
|
12051
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
12051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerSelectionService, decorators: [{
|
|
12052
12052
|
type: Injectable
|
|
12053
12053
|
}] });
|
|
12054
12054
|
|
|
@@ -12084,9 +12084,9 @@ class DesignerHistoryService {
|
|
|
12084
12084
|
/** Maximum number of history entries */
|
|
12085
12085
|
maxHistorySize = 50;
|
|
12086
12086
|
/** History stack */
|
|
12087
|
-
_history = signal([], ...(ngDevMode ? [{ debugName: "_history" }] : []));
|
|
12087
|
+
_history = signal([], ...(ngDevMode ? [{ debugName: "_history" }] : /* istanbul ignore next */ []));
|
|
12088
12088
|
/** Current position in history (-1 = empty, 0 = first entry, etc.) */
|
|
12089
|
-
_currentIndex = signal(-1, ...(ngDevMode ? [{ debugName: "_currentIndex" }] : []));
|
|
12089
|
+
_currentIndex = signal(-1, ...(ngDevMode ? [{ debugName: "_currentIndex" }] : /* istanbul ignore next */ []));
|
|
12090
12090
|
// ============================================================================
|
|
12091
12091
|
// Public Signals
|
|
12092
12092
|
// ============================================================================
|
|
@@ -12095,7 +12095,7 @@ class DesignerHistoryService {
|
|
|
12095
12095
|
*/
|
|
12096
12096
|
canUndo = computed(() => {
|
|
12097
12097
|
return this._currentIndex() > 0;
|
|
12098
|
-
}, ...(ngDevMode ? [{ debugName: "canUndo" }] : []));
|
|
12098
|
+
}, ...(ngDevMode ? [{ debugName: "canUndo" }] : /* istanbul ignore next */ []));
|
|
12099
12099
|
/**
|
|
12100
12100
|
* Whether redo is available
|
|
12101
12101
|
*/
|
|
@@ -12103,13 +12103,13 @@ class DesignerHistoryService {
|
|
|
12103
12103
|
const history = this._history();
|
|
12104
12104
|
const index = this._currentIndex();
|
|
12105
12105
|
return index >= 0 && index < history.length - 1;
|
|
12106
|
-
}, ...(ngDevMode ? [{ debugName: "canRedo" }] : []));
|
|
12106
|
+
}, ...(ngDevMode ? [{ debugName: "canRedo" }] : /* istanbul ignore next */ []));
|
|
12107
12107
|
/**
|
|
12108
12108
|
* Current history length
|
|
12109
12109
|
*/
|
|
12110
12110
|
historyLength = computed(() => {
|
|
12111
12111
|
return this._history().length;
|
|
12112
|
-
}, ...(ngDevMode ? [{ debugName: "historyLength" }] : []));
|
|
12112
|
+
}, ...(ngDevMode ? [{ debugName: "historyLength" }] : /* istanbul ignore next */ []));
|
|
12113
12113
|
/**
|
|
12114
12114
|
* Current position in history
|
|
12115
12115
|
*/
|
|
@@ -12215,10 +12215,10 @@ class DesignerHistoryService {
|
|
|
12215
12215
|
deepClone(obj) {
|
|
12216
12216
|
return JSON.parse(JSON.stringify(obj));
|
|
12217
12217
|
}
|
|
12218
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
12219
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
12218
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerHistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12219
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerHistoryService });
|
|
12220
12220
|
}
|
|
12221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
12221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerHistoryService, decorators: [{
|
|
12222
12222
|
type: Injectable
|
|
12223
12223
|
}] });
|
|
12224
12224
|
|
|
@@ -12257,7 +12257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
12257
12257
|
*/
|
|
12258
12258
|
class DesignerClipboardService {
|
|
12259
12259
|
// Private clipboard state
|
|
12260
|
-
_clipboard = signal(null, ...(ngDevMode ? [{ debugName: "_clipboard" }] : []));
|
|
12260
|
+
_clipboard = signal(null, ...(ngDevMode ? [{ debugName: "_clipboard" }] : /* istanbul ignore next */ []));
|
|
12261
12261
|
// Public readonly signal
|
|
12262
12262
|
clipboard = this._clipboard.asReadonly();
|
|
12263
12263
|
/**
|
|
@@ -12270,7 +12270,7 @@ class DesignerClipboardService {
|
|
|
12270
12270
|
return data.elements.length > 0 ||
|
|
12271
12271
|
data.primitives.length > 0 ||
|
|
12272
12272
|
data.symbolInstances.length > 0;
|
|
12273
|
-
}, ...(ngDevMode ? [{ debugName: "hasContent" }] : []));
|
|
12273
|
+
}, ...(ngDevMode ? [{ debugName: "hasContent" }] : /* istanbul ignore next */ []));
|
|
12274
12274
|
/**
|
|
12275
12275
|
* Count of items in clipboard
|
|
12276
12276
|
*/
|
|
@@ -12282,7 +12282,7 @@ class DesignerClipboardService {
|
|
|
12282
12282
|
data.primitives.length +
|
|
12283
12283
|
data.symbolInstances.length +
|
|
12284
12284
|
data.connections.length;
|
|
12285
|
-
}, ...(ngDevMode ? [{ debugName: "itemCount" }] : []));
|
|
12285
|
+
}, ...(ngDevMode ? [{ debugName: "itemCount" }] : /* istanbul ignore next */ []));
|
|
12286
12286
|
// ============================================================================
|
|
12287
12287
|
// Clipboard Operations
|
|
12288
12288
|
// ============================================================================
|
|
@@ -12432,10 +12432,10 @@ class DesignerClipboardService {
|
|
|
12432
12432
|
deepClone(obj) {
|
|
12433
12433
|
return JSON.parse(JSON.stringify(obj));
|
|
12434
12434
|
}
|
|
12435
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
12436
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
12435
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerClipboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12436
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerClipboardService });
|
|
12437
12437
|
}
|
|
12438
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
12438
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerClipboardService, decorators: [{
|
|
12439
12439
|
type: Injectable
|
|
12440
12440
|
}] });
|
|
12441
12441
|
|
|
@@ -12467,14 +12467,14 @@ class DesignerStateService {
|
|
|
12467
12467
|
// ============================================================================
|
|
12468
12468
|
// Private Signals
|
|
12469
12469
|
// ============================================================================
|
|
12470
|
-
_mode = signal('select', ...(ngDevMode ? [{ debugName: "_mode" }] : []));
|
|
12471
|
-
_zoom = signal(1, ...(ngDevMode ? [{ debugName: "_zoom" }] : []));
|
|
12472
|
-
_panOffset = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "_panOffset" }] : []));
|
|
12473
|
-
_showGrid = signal(true, ...(ngDevMode ? [{ debugName: "_showGrid" }] : []));
|
|
12474
|
-
_snapToGrid = signal(true, ...(ngDevMode ? [{ debugName: "_snapToGrid" }] : []));
|
|
12475
|
-
_gridSize = signal(20, ...(ngDevMode ? [{ debugName: "_gridSize" }] : []));
|
|
12476
|
-
_showElementNames = signal(false, ...(ngDevMode ? [{ debugName: "_showElementNames" }] : []));
|
|
12477
|
-
_hasChanges = signal(false, ...(ngDevMode ? [{ debugName: "_hasChanges" }] : []));
|
|
12470
|
+
_mode = signal('select', ...(ngDevMode ? [{ debugName: "_mode" }] : /* istanbul ignore next */ []));
|
|
12471
|
+
_zoom = signal(1, ...(ngDevMode ? [{ debugName: "_zoom" }] : /* istanbul ignore next */ []));
|
|
12472
|
+
_panOffset = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "_panOffset" }] : /* istanbul ignore next */ []));
|
|
12473
|
+
_showGrid = signal(true, ...(ngDevMode ? [{ debugName: "_showGrid" }] : /* istanbul ignore next */ []));
|
|
12474
|
+
_snapToGrid = signal(true, ...(ngDevMode ? [{ debugName: "_snapToGrid" }] : /* istanbul ignore next */ []));
|
|
12475
|
+
_gridSize = signal(20, ...(ngDevMode ? [{ debugName: "_gridSize" }] : /* istanbul ignore next */ []));
|
|
12476
|
+
_showElementNames = signal(false, ...(ngDevMode ? [{ debugName: "_showElementNames" }] : /* istanbul ignore next */ []));
|
|
12477
|
+
_hasChanges = signal(false, ...(ngDevMode ? [{ debugName: "_hasChanges" }] : /* istanbul ignore next */ []));
|
|
12478
12478
|
// ============================================================================
|
|
12479
12479
|
// Public Readonly Signals
|
|
12480
12480
|
// ============================================================================
|
|
@@ -12498,7 +12498,7 @@ class DesignerStateService {
|
|
|
12498
12498
|
// Computed Signals
|
|
12499
12499
|
// ============================================================================
|
|
12500
12500
|
/** Zoom level as percentage (e.g., 100, 150, 200) */
|
|
12501
|
-
zoomPercentage = computed(() => Math.round(this._zoom() * 100), ...(ngDevMode ? [{ debugName: "zoomPercentage" }] : []));
|
|
12501
|
+
zoomPercentage = computed(() => Math.round(this._zoom() * 100), ...(ngDevMode ? [{ debugName: "zoomPercentage" }] : /* istanbul ignore next */ []));
|
|
12502
12502
|
/** Cursor style based on current mode */
|
|
12503
12503
|
canvasCursor = computed(() => {
|
|
12504
12504
|
switch (this._mode()) {
|
|
@@ -12506,7 +12506,7 @@ class DesignerStateService {
|
|
|
12506
12506
|
case 'connect': return 'crosshair';
|
|
12507
12507
|
default: return 'default';
|
|
12508
12508
|
}
|
|
12509
|
-
}, ...(ngDevMode ? [{ debugName: "canvasCursor" }] : []));
|
|
12509
|
+
}, ...(ngDevMode ? [{ debugName: "canvasCursor" }] : /* istanbul ignore next */ []));
|
|
12510
12510
|
// ============================================================================
|
|
12511
12511
|
// Mode Operations
|
|
12512
12512
|
// ============================================================================
|
|
@@ -12676,10 +12676,10 @@ class DesignerStateService {
|
|
|
12676
12676
|
this._showElementNames.set(false);
|
|
12677
12677
|
this._hasChanges.set(false);
|
|
12678
12678
|
}
|
|
12679
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
12680
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
12679
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12680
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerStateService });
|
|
12681
12681
|
}
|
|
12682
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
12682
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerStateService, decorators: [{
|
|
12683
12683
|
type: Injectable
|
|
12684
12684
|
}] });
|
|
12685
12685
|
|
|
@@ -12940,10 +12940,10 @@ class DesignerCoordinateService {
|
|
|
12940
12940
|
y: bounds.y + bounds.height / 2
|
|
12941
12941
|
};
|
|
12942
12942
|
}
|
|
12943
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
12944
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
12943
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerCoordinateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12944
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerCoordinateService });
|
|
12945
12945
|
}
|
|
12946
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
12946
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerCoordinateService, decorators: [{
|
|
12947
12947
|
type: Injectable
|
|
12948
12948
|
}] });
|
|
12949
12949
|
|
|
@@ -13002,22 +13002,22 @@ class DesignerDragService {
|
|
|
13002
13002
|
// ============================================================================
|
|
13003
13003
|
// Private State
|
|
13004
13004
|
// ============================================================================
|
|
13005
|
-
_state = signal({ ...INITIAL_DRAG_STATE }, ...(ngDevMode ? [{ debugName: "_state" }] : []));
|
|
13005
|
+
_state = signal({ ...INITIAL_DRAG_STATE }, ...(ngDevMode ? [{ debugName: "_state" }] : /* istanbul ignore next */ []));
|
|
13006
13006
|
// ============================================================================
|
|
13007
13007
|
// Public Readonly Signals
|
|
13008
13008
|
// ============================================================================
|
|
13009
13009
|
/** Current drag state */
|
|
13010
13010
|
state = this._state.asReadonly();
|
|
13011
13011
|
/** Whether a drag operation is in progress */
|
|
13012
|
-
isDragging = computed(() => this._state().isDragging, ...(ngDevMode ? [{ debugName: "isDragging" }] : []));
|
|
13012
|
+
isDragging = computed(() => this._state().isDragging, ...(ngDevMode ? [{ debugName: "isDragging" }] : /* istanbul ignore next */ []));
|
|
13013
13013
|
/** ID of the item being dragged (or null) */
|
|
13014
|
-
draggedItemId = computed(() => this._state().itemId, ...(ngDevMode ? [{ debugName: "draggedItemId" }] : []));
|
|
13014
|
+
draggedItemId = computed(() => this._state().itemId, ...(ngDevMode ? [{ debugName: "draggedItemId" }] : /* istanbul ignore next */ []));
|
|
13015
13015
|
/** Type of item being dragged */
|
|
13016
|
-
draggedItemType = computed(() => this._state().itemType, ...(ngDevMode ? [{ debugName: "draggedItemType" }] : []));
|
|
13016
|
+
draggedItemType = computed(() => this._state().itemType, ...(ngDevMode ? [{ debugName: "draggedItemType" }] : /* istanbul ignore next */ []));
|
|
13017
13017
|
/** Whether dragging a group */
|
|
13018
|
-
isDraggingGroup = computed(() => this._state().itemType === 'group', ...(ngDevMode ? [{ debugName: "isDraggingGroup" }] : []));
|
|
13018
|
+
isDraggingGroup = computed(() => this._state().itemType === 'group', ...(ngDevMode ? [{ debugName: "isDraggingGroup" }] : /* istanbul ignore next */ []));
|
|
13019
13019
|
/** Whether dragging a primitive */
|
|
13020
|
-
isDraggingPrimitive = computed(() => this._state().itemType === 'primitive' || this._state().itemType === 'group', ...(ngDevMode ? [{ debugName: "isDraggingPrimitive" }] : []));
|
|
13020
|
+
isDraggingPrimitive = computed(() => this._state().itemType === 'primitive' || this._state().itemType === 'group', ...(ngDevMode ? [{ debugName: "isDraggingPrimitive" }] : /* istanbul ignore next */ []));
|
|
13021
13021
|
// ============================================================================
|
|
13022
13022
|
// Drag Operations
|
|
13023
13023
|
// ============================================================================
|
|
@@ -13194,10 +13194,10 @@ class DesignerDragService {
|
|
|
13194
13194
|
hasMovedBeyondThreshold(threshold = 3) {
|
|
13195
13195
|
return this.getDragDistance() > threshold;
|
|
13196
13196
|
}
|
|
13197
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
13198
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
13197
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDragService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13198
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDragService });
|
|
13199
13199
|
}
|
|
13200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
13200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDragService, decorators: [{
|
|
13201
13201
|
type: Injectable
|
|
13202
13202
|
}] });
|
|
13203
13203
|
|
|
@@ -13259,22 +13259,22 @@ class DesignerResizeService {
|
|
|
13259
13259
|
// ============================================================================
|
|
13260
13260
|
// Private State
|
|
13261
13261
|
// ============================================================================
|
|
13262
|
-
_state = signal({ ...INITIAL_RESIZE_STATE }, ...(ngDevMode ? [{ debugName: "_state" }] : []));
|
|
13262
|
+
_state = signal({ ...INITIAL_RESIZE_STATE }, ...(ngDevMode ? [{ debugName: "_state" }] : /* istanbul ignore next */ []));
|
|
13263
13263
|
// ============================================================================
|
|
13264
13264
|
// Public Readonly Signals
|
|
13265
13265
|
// ============================================================================
|
|
13266
13266
|
/** Current resize state */
|
|
13267
13267
|
state = this._state.asReadonly();
|
|
13268
13268
|
/** Whether a resize operation is in progress */
|
|
13269
|
-
isResizing = computed(() => this._state().isResizing, ...(ngDevMode ? [{ debugName: "isResizing" }] : []));
|
|
13269
|
+
isResizing = computed(() => this._state().isResizing, ...(ngDevMode ? [{ debugName: "isResizing" }] : /* istanbul ignore next */ []));
|
|
13270
13270
|
/** ID of the item being resized (or null) */
|
|
13271
|
-
resizingItemId = computed(() => this._state().itemId, ...(ngDevMode ? [{ debugName: "resizingItemId" }] : []));
|
|
13271
|
+
resizingItemId = computed(() => this._state().itemId, ...(ngDevMode ? [{ debugName: "resizingItemId" }] : /* istanbul ignore next */ []));
|
|
13272
13272
|
/** Type of item being resized */
|
|
13273
|
-
resizingItemType = computed(() => this._state().itemType, ...(ngDevMode ? [{ debugName: "resizingItemType" }] : []));
|
|
13273
|
+
resizingItemType = computed(() => this._state().itemType, ...(ngDevMode ? [{ debugName: "resizingItemType" }] : /* istanbul ignore next */ []));
|
|
13274
13274
|
/** Current resize handle */
|
|
13275
|
-
activeHandle = computed(() => this._state().handle, ...(ngDevMode ? [{ debugName: "activeHandle" }] : []));
|
|
13275
|
+
activeHandle = computed(() => this._state().handle, ...(ngDevMode ? [{ debugName: "activeHandle" }] : /* istanbul ignore next */ []));
|
|
13276
13276
|
/** Whether resizing a group */
|
|
13277
|
-
isResizingGroup = computed(() => this._state().itemType === 'group', ...(ngDevMode ? [{ debugName: "isResizingGroup" }] : []));
|
|
13277
|
+
isResizingGroup = computed(() => this._state().itemType === 'group', ...(ngDevMode ? [{ debugName: "isResizingGroup" }] : /* istanbul ignore next */ []));
|
|
13278
13278
|
// ============================================================================
|
|
13279
13279
|
// Resize Operations
|
|
13280
13280
|
// ============================================================================
|
|
@@ -13582,10 +13582,10 @@ class DesignerResizeService {
|
|
|
13582
13582
|
};
|
|
13583
13583
|
return cursors[handle];
|
|
13584
13584
|
}
|
|
13585
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
13586
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
13585
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerResizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13586
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerResizeService });
|
|
13587
13587
|
}
|
|
13588
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
13588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerResizeService, decorators: [{
|
|
13589
13589
|
type: Injectable
|
|
13590
13590
|
}] });
|
|
13591
13591
|
|
|
@@ -13814,10 +13814,10 @@ class DesignerZOrderService {
|
|
|
13814
13814
|
return true;
|
|
13815
13815
|
return false;
|
|
13816
13816
|
}
|
|
13817
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
13818
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
13817
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerZOrderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13818
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerZOrderService });
|
|
13819
13819
|
}
|
|
13820
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
13820
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerZOrderService, decorators: [{
|
|
13821
13821
|
type: Injectable
|
|
13822
13822
|
}] });
|
|
13823
13823
|
|
|
@@ -14062,10 +14062,10 @@ class DesignerDeletionService {
|
|
|
14062
14062
|
const expanded = this.expandWithGroupChildren(diagram, itemIds);
|
|
14063
14063
|
return expanded.size;
|
|
14064
14064
|
}
|
|
14065
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
14066
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
14065
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDeletionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14066
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDeletionService });
|
|
14067
14067
|
}
|
|
14068
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
14068
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDeletionService, decorators: [{
|
|
14069
14069
|
type: Injectable
|
|
14070
14070
|
}] });
|
|
14071
14071
|
|
|
@@ -14489,10 +14489,10 @@ class DesignerGroupingService {
|
|
|
14489
14489
|
}
|
|
14490
14490
|
return itemId;
|
|
14491
14491
|
}
|
|
14492
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
14493
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
14492
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerGroupingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14493
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerGroupingService });
|
|
14494
14494
|
}
|
|
14495
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
14495
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerGroupingService, decorators: [{
|
|
14496
14496
|
type: Injectable
|
|
14497
14497
|
}] });
|
|
14498
14498
|
|
|
@@ -14534,7 +14534,7 @@ class DesignerContextMenuService {
|
|
|
14534
14534
|
visible: false,
|
|
14535
14535
|
screenPosition: { x: 0, y: 0 },
|
|
14536
14536
|
canvasPosition: null
|
|
14537
|
-
}, ...(ngDevMode ? [{ debugName: "_state" }] : []));
|
|
14537
|
+
}, ...(ngDevMode ? [{ debugName: "_state" }] : /* istanbul ignore next */ []));
|
|
14538
14538
|
_selectionState = signal({
|
|
14539
14539
|
hasSelection: false,
|
|
14540
14540
|
hasClipboard: false,
|
|
@@ -14543,7 +14543,7 @@ class DesignerContextMenuService {
|
|
|
14543
14543
|
canBringForward: false,
|
|
14544
14544
|
canSendBackward: false,
|
|
14545
14545
|
selectedCount: 0
|
|
14546
|
-
}, ...(ngDevMode ? [{ debugName: "_selectionState" }] : []));
|
|
14546
|
+
}, ...(ngDevMode ? [{ debugName: "_selectionState" }] : /* istanbul ignore next */ []));
|
|
14547
14547
|
/** Current context menu state */
|
|
14548
14548
|
state = this._state.asReadonly();
|
|
14549
14549
|
/** Current selection state */
|
|
@@ -14551,7 +14551,7 @@ class DesignerContextMenuService {
|
|
|
14551
14551
|
/** Computed menu items based on selection state */
|
|
14552
14552
|
items = computed(() => {
|
|
14553
14553
|
return this.buildMenuItems(this._selectionState());
|
|
14554
|
-
}, ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
14554
|
+
}, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
14555
14555
|
// ============================================================================
|
|
14556
14556
|
// State Management
|
|
14557
14557
|
// ============================================================================
|
|
@@ -14866,10 +14866,10 @@ class DesignerContextMenuService {
|
|
|
14866
14866
|
return baseItems;
|
|
14867
14867
|
}
|
|
14868
14868
|
}
|
|
14869
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
14870
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
14869
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14870
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerContextMenuService });
|
|
14871
14871
|
}
|
|
14872
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
14872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerContextMenuService, decorators: [{
|
|
14873
14873
|
type: Injectable
|
|
14874
14874
|
}] });
|
|
14875
14875
|
|
|
@@ -14907,13 +14907,13 @@ class DesignerKeyboardService {
|
|
|
14907
14907
|
// ============================================================================
|
|
14908
14908
|
// State
|
|
14909
14909
|
// ============================================================================
|
|
14910
|
-
_shortcuts = signal(new Map(), ...(ngDevMode ? [{ debugName: "_shortcuts" }] : []));
|
|
14910
|
+
_shortcuts = signal(new Map(), ...(ngDevMode ? [{ debugName: "_shortcuts" }] : /* istanbul ignore next */ []));
|
|
14911
14911
|
_modifierKeys = signal({
|
|
14912
14912
|
ctrl: false,
|
|
14913
14913
|
shift: false,
|
|
14914
14914
|
alt: false,
|
|
14915
14915
|
meta: false
|
|
14916
|
-
}, ...(ngDevMode ? [{ debugName: "_modifierKeys" }] : []));
|
|
14916
|
+
}, ...(ngDevMode ? [{ debugName: "_modifierKeys" }] : /* istanbul ignore next */ []));
|
|
14917
14917
|
/** Current modifier keys state */
|
|
14918
14918
|
modifierKeys = this._modifierKeys.asReadonly();
|
|
14919
14919
|
// ============================================================================
|
|
@@ -15288,10 +15288,10 @@ class DesignerKeyboardService {
|
|
|
15288
15288
|
}
|
|
15289
15289
|
return lines.join('\n');
|
|
15290
15290
|
}
|
|
15291
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
15292
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
15291
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerKeyboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15292
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerKeyboardService });
|
|
15293
15293
|
}
|
|
15294
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
15294
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerKeyboardService, decorators: [{
|
|
15295
15295
|
type: Injectable
|
|
15296
15296
|
}], ctorParameters: () => [] });
|
|
15297
15297
|
|
|
@@ -15712,10 +15712,10 @@ class DesignerCreationService {
|
|
|
15712
15712
|
PrimitiveType.Text
|
|
15713
15713
|
];
|
|
15714
15714
|
}
|
|
15715
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
15716
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
15715
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerCreationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15716
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerCreationService });
|
|
15717
15717
|
}
|
|
15718
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
15718
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerCreationService, decorators: [{
|
|
15719
15719
|
type: Injectable
|
|
15720
15720
|
}] });
|
|
15721
15721
|
|
|
@@ -16208,10 +16208,10 @@ class DesignerRenderingService {
|
|
|
16208
16208
|
height: bounds.height + padding * 2
|
|
16209
16209
|
};
|
|
16210
16210
|
}
|
|
16211
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
16212
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
16211
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerRenderingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16212
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerRenderingService });
|
|
16213
16213
|
}
|
|
16214
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
16214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerRenderingService, decorators: [{
|
|
16215
16215
|
type: Injectable
|
|
16216
16216
|
}] });
|
|
16217
16217
|
|
|
@@ -16362,10 +16362,10 @@ class GeometryUtilService {
|
|
|
16362
16362
|
y: vector.x
|
|
16363
16363
|
};
|
|
16364
16364
|
}
|
|
16365
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
16366
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
16365
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GeometryUtilService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16366
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GeometryUtilService, providedIn: 'root' });
|
|
16367
16367
|
}
|
|
16368
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
16368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GeometryUtilService, decorators: [{
|
|
16369
16369
|
type: Injectable,
|
|
16370
16370
|
args: [{ providedIn: 'root' }]
|
|
16371
16371
|
}] });
|
|
@@ -16378,15 +16378,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
16378
16378
|
class DesignerDiagramService {
|
|
16379
16379
|
_diagram;
|
|
16380
16380
|
/** Read-only access to the current diagram */
|
|
16381
|
-
diagram = computed(() => this._diagram(), ...(ngDevMode ? [{ debugName: "diagram" }] : []));
|
|
16381
|
+
diagram = computed(() => this._diagram(), ...(ngDevMode ? [{ debugName: "diagram" }] : /* istanbul ignore next */ []));
|
|
16382
16382
|
/** Convenience accessors */
|
|
16383
|
-
primitives = computed(() => this._diagram().primitives ?? [], ...(ngDevMode ? [{ debugName: "primitives" }] : []));
|
|
16384
|
-
symbols = computed(() => this._diagram().symbolInstances ?? [], ...(ngDevMode ? [{ debugName: "symbols" }] : []));
|
|
16385
|
-
elements = computed(() => this._diagram().elements ?? [], ...(ngDevMode ? [{ debugName: "elements" }] : []));
|
|
16386
|
-
connections = computed(() => this._diagram().connections ?? [], ...(ngDevMode ? [{ debugName: "connections" }] : []));
|
|
16387
|
-
canvas = computed(() => this._diagram().canvas, ...(ngDevMode ? [{ debugName: "canvas" }] : []));
|
|
16383
|
+
primitives = computed(() => this._diagram().primitives ?? [], ...(ngDevMode ? [{ debugName: "primitives" }] : /* istanbul ignore next */ []));
|
|
16384
|
+
symbols = computed(() => this._diagram().symbolInstances ?? [], ...(ngDevMode ? [{ debugName: "symbols" }] : /* istanbul ignore next */ []));
|
|
16385
|
+
elements = computed(() => this._diagram().elements ?? [], ...(ngDevMode ? [{ debugName: "elements" }] : /* istanbul ignore next */ []));
|
|
16386
|
+
connections = computed(() => this._diagram().connections ?? [], ...(ngDevMode ? [{ debugName: "connections" }] : /* istanbul ignore next */ []));
|
|
16387
|
+
canvas = computed(() => this._diagram().canvas, ...(ngDevMode ? [{ debugName: "canvas" }] : /* istanbul ignore next */ []));
|
|
16388
16388
|
constructor() {
|
|
16389
|
-
this._diagram = signal(this.createEmptyDiagram(), ...(ngDevMode ? [{ debugName: "_diagram" }] : []));
|
|
16389
|
+
this._diagram = signal(this.createEmptyDiagram(), ...(ngDevMode ? [{ debugName: "_diagram" }] : /* istanbul ignore next */ []));
|
|
16390
16390
|
}
|
|
16391
16391
|
// ============================================================================
|
|
16392
16392
|
// Diagram-level operations
|
|
@@ -16731,10 +16731,10 @@ class DesignerDiagramService {
|
|
|
16731
16731
|
reset() {
|
|
16732
16732
|
this._diagram.set(this.createEmptyDiagram());
|
|
16733
16733
|
}
|
|
16734
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
16735
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
16734
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDiagramService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16735
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDiagramService });
|
|
16736
16736
|
}
|
|
16737
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
16737
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerDiagramService, decorators: [{
|
|
16738
16738
|
type: Injectable
|
|
16739
16739
|
}], ctorParameters: () => [] });
|
|
16740
16740
|
|
|
@@ -17391,10 +17391,10 @@ class DesignerPrimitiveService {
|
|
|
17391
17391
|
isPath(type) {
|
|
17392
17392
|
return type === PrimitiveType.Path;
|
|
17393
17393
|
}
|
|
17394
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
17395
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
17394
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerPrimitiveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17395
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerPrimitiveService });
|
|
17396
17396
|
}
|
|
17397
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
17397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerPrimitiveService, decorators: [{
|
|
17398
17398
|
type: Injectable
|
|
17399
17399
|
}], ctorParameters: () => [] });
|
|
17400
17400
|
|
|
@@ -17640,10 +17640,10 @@ class DesignerBoundsService {
|
|
|
17640
17640
|
}
|
|
17641
17641
|
return childIds;
|
|
17642
17642
|
}
|
|
17643
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
17644
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
17643
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerBoundsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17644
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerBoundsService });
|
|
17645
17645
|
}
|
|
17646
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
17646
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerBoundsService, decorators: [{
|
|
17647
17647
|
type: Injectable
|
|
17648
17648
|
}] });
|
|
17649
17649
|
|
|
@@ -17927,10 +17927,10 @@ class DesignerAlignmentService {
|
|
|
17927
17927
|
canDistribute(selectedIds) {
|
|
17928
17928
|
return selectedIds.size >= 3;
|
|
17929
17929
|
}
|
|
17930
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
17931
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
17930
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerAlignmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17931
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerAlignmentService });
|
|
17932
17932
|
}
|
|
17933
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
17933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerAlignmentService, decorators: [{
|
|
17934
17934
|
type: Injectable
|
|
17935
17935
|
}] });
|
|
17936
17936
|
|
|
@@ -17969,7 +17969,7 @@ class DesignerAlignmentGuideService {
|
|
|
17969
17969
|
/** Padding to extend guide lines beyond the items */
|
|
17970
17970
|
GUIDE_PADDING = 10;
|
|
17971
17971
|
// Private state
|
|
17972
|
-
_guides = signal([], ...(ngDevMode ? [{ debugName: "_guides" }] : []));
|
|
17972
|
+
_guides = signal([], ...(ngDevMode ? [{ debugName: "_guides" }] : /* istanbul ignore next */ []));
|
|
17973
17973
|
// Public readonly signal
|
|
17974
17974
|
guides = this._guides.asReadonly();
|
|
17975
17975
|
/**
|
|
@@ -18213,10 +18213,10 @@ class DesignerAlignmentGuideService {
|
|
|
18213
18213
|
// Round to avoid floating point precision issues
|
|
18214
18214
|
return Math.round(result);
|
|
18215
18215
|
}
|
|
18216
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
18217
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
18216
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerAlignmentGuideService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18217
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerAlignmentGuideService });
|
|
18218
18218
|
}
|
|
18219
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
18219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerAlignmentGuideService, decorators: [{
|
|
18220
18220
|
type: Injectable
|
|
18221
18221
|
}] });
|
|
18222
18222
|
|
|
@@ -18345,10 +18345,10 @@ class DesignerLayoutService {
|
|
|
18345
18345
|
const panels = isSymbolEditor ? this.symbolEditorDefaultPanels : this.defaultPanels;
|
|
18346
18346
|
return panels.find(p => p.id === panelId);
|
|
18347
18347
|
}
|
|
18348
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
18349
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
18348
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerLayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18349
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerLayoutService, providedIn: 'root' });
|
|
18350
18350
|
}
|
|
18351
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
18351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DesignerLayoutService, decorators: [{
|
|
18352
18352
|
type: Injectable,
|
|
18353
18353
|
args: [{ providedIn: 'root' }]
|
|
18354
18354
|
}] });
|
|
@@ -18367,8 +18367,8 @@ class ElementsPanelComponent {
|
|
|
18367
18367
|
onDragEnd(item) {
|
|
18368
18368
|
this.params.onElementDragEnd?.(item);
|
|
18369
18369
|
}
|
|
18370
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
18371
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
18370
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ElementsPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18371
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ElementsPanelComponent, isStandalone: true, selector: "mm-elements-panel", inputs: { params: "params" }, ngImport: i0, template: `
|
|
18372
18372
|
<div class="panel-container">
|
|
18373
18373
|
<mm-element-palette
|
|
18374
18374
|
(elementDragStart)="onDragStart($event)"
|
|
@@ -18377,7 +18377,7 @@ class ElementsPanelComponent {
|
|
|
18377
18377
|
</div>
|
|
18378
18378
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.panel-container{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;background:var(--dv-pane-background-color, #1f2e40)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ElementPaletteComponent, selector: "mm-element-palette", outputs: ["elementDragStart", "elementDragEnd"] }] });
|
|
18379
18379
|
}
|
|
18380
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
18380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ElementsPanelComponent, decorators: [{
|
|
18381
18381
|
type: Component,
|
|
18382
18382
|
args: [{ selector: 'mm-elements-panel', standalone: true, imports: [CommonModule, ElementPaletteComponent], template: `
|
|
18383
18383
|
<div class="panel-container">
|
|
@@ -18405,8 +18405,8 @@ class SymbolsPanelComponent {
|
|
|
18405
18405
|
onDragEnd() {
|
|
18406
18406
|
this.params.onSymbolDragEnd?.();
|
|
18407
18407
|
}
|
|
18408
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
18409
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
18408
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolsPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18409
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: SymbolsPanelComponent, isStandalone: true, selector: "mm-symbols-panel", inputs: { params: "params" }, ngImport: i0, template: `
|
|
18410
18410
|
<div class="panel-container">
|
|
18411
18411
|
<mm-symbol-library-panel
|
|
18412
18412
|
(symbolDragStart)="onDragStart($event)"
|
|
@@ -18415,7 +18415,7 @@ class SymbolsPanelComponent {
|
|
|
18415
18415
|
</div>
|
|
18416
18416
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.panel-container{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;background:var(--dv-pane-background-color, #1f2e40)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SymbolLibraryPanelComponent, selector: "mm-symbol-library-panel", outputs: ["symbolDragStart", "symbolDragEnd"] }] });
|
|
18417
18417
|
}
|
|
18418
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
18418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolsPanelComponent, decorators: [{
|
|
18419
18419
|
type: Component,
|
|
18420
18420
|
args: [{ selector: 'mm-symbols-panel', standalone: true, imports: [CommonModule, SymbolLibraryPanelComponent], template: `
|
|
18421
18421
|
<div class="panel-container">
|
|
@@ -18438,17 +18438,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
18438
18438
|
class PropertiesPanelComponent {
|
|
18439
18439
|
cdr = inject(ChangeDetectorRef);
|
|
18440
18440
|
// Use signal-based params to ensure reactivity when dockview sets params after init
|
|
18441
|
-
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : []));
|
|
18441
|
+
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : /* istanbul ignore next */ []));
|
|
18442
18442
|
set params(value) {
|
|
18443
18443
|
this._params.set(value);
|
|
18444
18444
|
}
|
|
18445
18445
|
// Computed properties that safely access signals from params
|
|
18446
|
-
selectedElements = computed(() => this._params().selectedElements?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedElements" }] : []));
|
|
18447
|
-
selectedConnections = computed(() => this._params().selectedConnections?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedConnections" }] : []));
|
|
18448
|
-
selectedPrimitives = computed(() => this._params().selectedPrimitives?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedPrimitives" }] : []));
|
|
18449
|
-
selectedSymbolInstances = computed(() => this._params().selectedSymbolInstances?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedSymbolInstances" }] : []));
|
|
18450
|
-
symbolDefinitions = computed(() => this._params().symbolDefinitions?.() ?? new Map(), ...(ngDevMode ? [{ debugName: "symbolDefinitions" }] : []));
|
|
18451
|
-
availableStyleClasses = computed(() => this._params().availableStyleClasses?.() ?? [], ...(ngDevMode ? [{ debugName: "availableStyleClasses" }] : []));
|
|
18446
|
+
selectedElements = computed(() => this._params().selectedElements?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedElements" }] : /* istanbul ignore next */ []));
|
|
18447
|
+
selectedConnections = computed(() => this._params().selectedConnections?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedConnections" }] : /* istanbul ignore next */ []));
|
|
18448
|
+
selectedPrimitives = computed(() => this._params().selectedPrimitives?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedPrimitives" }] : /* istanbul ignore next */ []));
|
|
18449
|
+
selectedSymbolInstances = computed(() => this._params().selectedSymbolInstances?.() ?? [], ...(ngDevMode ? [{ debugName: "selectedSymbolInstances" }] : /* istanbul ignore next */ []));
|
|
18450
|
+
symbolDefinitions = computed(() => this._params().symbolDefinitions?.() ?? new Map(), ...(ngDevMode ? [{ debugName: "symbolDefinitions" }] : /* istanbul ignore next */ []));
|
|
18451
|
+
availableStyleClasses = computed(() => this._params().availableStyleClasses?.() ?? [], ...(ngDevMode ? [{ debugName: "availableStyleClasses" }] : /* istanbul ignore next */ []));
|
|
18452
18452
|
// Effect to trigger change detection when signals update
|
|
18453
18453
|
// This is needed because dockview creates components dynamically outside Angular's normal flow
|
|
18454
18454
|
selectionEffect = effect(() => {
|
|
@@ -18461,12 +18461,12 @@ class PropertiesPanelComponent {
|
|
|
18461
18461
|
this.availableStyleClasses();
|
|
18462
18462
|
// Trigger change detection
|
|
18463
18463
|
this.cdr.markForCheck();
|
|
18464
|
-
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : []));
|
|
18464
|
+
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : /* istanbul ignore next */ []));
|
|
18465
18465
|
onPropertyChange(event) {
|
|
18466
18466
|
this._params().onPropertyChange?.(event);
|
|
18467
18467
|
}
|
|
18468
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
18469
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
18468
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertiesPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18469
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: PropertiesPanelComponent, isStandalone: true, selector: "mm-properties-panel", inputs: { params: "params" }, ngImport: i0, template: `
|
|
18470
18470
|
<div class="panel-container">
|
|
18471
18471
|
<mm-property-inspector
|
|
18472
18472
|
[selectedElements]="selectedElements()"
|
|
@@ -18480,7 +18480,7 @@ class PropertiesPanelComponent {
|
|
|
18480
18480
|
</div>
|
|
18481
18481
|
`, isInline: true, styles: [":host{display:block;height:100%}.panel-container{height:100%;overflow:hidden;background:var(--dv-pane-background-color, #1f2e40)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PropertyInspectorComponent, selector: "mm-property-inspector", inputs: ["selectedElements", "selectedConnections", "selectedPrimitives", "selectedSymbolInstances", "symbolDefinitions", "availableStyleClasses"], outputs: ["propertyChange"] }] });
|
|
18482
18482
|
}
|
|
18483
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
18483
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertiesPanelComponent, decorators: [{
|
|
18484
18484
|
type: Component,
|
|
18485
18485
|
args: [{ selector: 'mm-properties-panel', standalone: true, imports: [CommonModule, PropertyInspectorComponent], template: `
|
|
18486
18486
|
<div class="panel-container">
|
|
@@ -18525,22 +18525,22 @@ class TransformPropertyEditorComponent {
|
|
|
18525
18525
|
propertiesChange = new EventEmitter();
|
|
18526
18526
|
openBindings = new EventEmitter();
|
|
18527
18527
|
// Internal state
|
|
18528
|
-
_properties = signal([], ...(ngDevMode ? [{ debugName: "_properties" }] : []));
|
|
18529
|
-
_bindings = signal([], ...(ngDevMode ? [{ debugName: "_bindings" }] : []));
|
|
18530
|
-
_editingPropertyId = signal(null, ...(ngDevMode ? [{ debugName: "_editingPropertyId" }] : []));
|
|
18531
|
-
_editFormData = signal({}, ...(ngDevMode ? [{ debugName: "_editFormData" }] : []));
|
|
18528
|
+
_properties = signal([], ...(ngDevMode ? [{ debugName: "_properties" }] : /* istanbul ignore next */ []));
|
|
18529
|
+
_bindings = signal([], ...(ngDevMode ? [{ debugName: "_bindings" }] : /* istanbul ignore next */ []));
|
|
18530
|
+
_editingPropertyId = signal(null, ...(ngDevMode ? [{ debugName: "_editingPropertyId" }] : /* istanbul ignore next */ []));
|
|
18531
|
+
_editFormData = signal({}, ...(ngDevMode ? [{ debugName: "_editFormData" }] : /* istanbul ignore next */ []));
|
|
18532
18532
|
// Computed values
|
|
18533
|
-
properties = computed(() => this._properties(), ...(ngDevMode ? [{ debugName: "properties" }] : []));
|
|
18534
|
-
bindings = computed(() => this._bindings(), ...(ngDevMode ? [{ debugName: "bindings" }] : []));
|
|
18535
|
-
editingPropertyId = computed(() => this._editingPropertyId(), ...(ngDevMode ? [{ debugName: "editingPropertyId" }] : []));
|
|
18536
|
-
editFormData = computed(() => this._editFormData(), ...(ngDevMode ? [{ debugName: "editFormData" }] : []));
|
|
18533
|
+
properties = computed(() => this._properties(), ...(ngDevMode ? [{ debugName: "properties" }] : /* istanbul ignore next */ []));
|
|
18534
|
+
bindings = computed(() => this._bindings(), ...(ngDevMode ? [{ debugName: "bindings" }] : /* istanbul ignore next */ []));
|
|
18535
|
+
editingPropertyId = computed(() => this._editingPropertyId(), ...(ngDevMode ? [{ debugName: "editingPropertyId" }] : /* istanbul ignore next */ []));
|
|
18536
|
+
editFormData = computed(() => this._editFormData(), ...(ngDevMode ? [{ debugName: "editFormData" }] : /* istanbul ignore next */ []));
|
|
18537
18537
|
// Check if we're adding a new property (editing an ID that's not in the list)
|
|
18538
18538
|
isAddingNew = computed(() => {
|
|
18539
18539
|
const editingId = this._editingPropertyId();
|
|
18540
18540
|
if (!editingId)
|
|
18541
18541
|
return false;
|
|
18542
18542
|
return !this._properties().some(p => p.id === editingId);
|
|
18543
|
-
}, ...(ngDevMode ? [{ debugName: "isAddingNew" }] : []));
|
|
18543
|
+
}, ...(ngDevMode ? [{ debugName: "isAddingNew" }] : /* istanbul ignore next */ []));
|
|
18544
18544
|
/**
|
|
18545
18545
|
* Get binding count for a property
|
|
18546
18546
|
*/
|
|
@@ -18667,8 +18667,8 @@ class TransformPropertyEditorComponent {
|
|
|
18667
18667
|
* Helper for template
|
|
18668
18668
|
*/
|
|
18669
18669
|
String = String;
|
|
18670
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
18671
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
18670
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TransformPropertyEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18671
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: TransformPropertyEditorComponent, isStandalone: true, selector: "mm-transform-property-editor", inputs: { transformProperties: "transformProperties", propertyBindings: "propertyBindings", primitives: "primitives", symbolInstances: "symbolInstances" }, outputs: { propertiesChange: "propertiesChange", openBindings: "openBindings" }, ngImport: i0, template: `
|
|
18672
18672
|
<div class="transform-property-editor">
|
|
18673
18673
|
<div class="editor-toolbar">
|
|
18674
18674
|
<button kendoButton [svgIcon]="plusIcon" look="flat" (click)="addProperty()">
|
|
@@ -18925,7 +18925,7 @@ class TransformPropertyEditorComponent {
|
|
|
18925
18925
|
</div>
|
|
18926
18926
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.transform-property-editor{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.editor-toolbar{flex-shrink:0;display:flex;justify-content:flex-end;padding:.5rem;border-bottom:1px solid #e0e0e0}.properties-list{flex:1;min-height:0;overflow-y:auto;padding:.5rem}.empty-state{padding:1rem;text-align:center;color:#666}.hint{font-size:12px;color:#999;margin-top:.5rem}.property-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:.5rem;padding:.75rem;transition:box-shadow .2s}.property-card:hover{box-shadow:0 2px 8px #00000014}.property-card.editing{border-color:#1976d2;box-shadow:0 2px 8px #1976d233}.property-header{display:flex;justify-content:space-between;align-items:center}.property-info{display:flex;align-items:center;gap:.5rem}.property-name{font-weight:500;font-size:13px}.property-type-badge{display:inline-block;padding:.125rem .5rem;background:#e3f2fd;border-radius:4px;font-size:10px;color:#1976d2;text-transform:uppercase}.property-unit{font-size:11px;color:#666}.property-actions{display:flex;gap:.25rem}.property-details{display:flex;gap:1rem;margin-top:.5rem;font-size:11px;color:#666}.detail{display:flex;align-items:center;gap:.25rem}.color-swatch{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid #ccc}.bindings-count{padding:.125rem .5rem;background:#f5f5f5;border-radius:4px}.property-description{margin-top:.5rem;font-size:11px;color:#999;font-style:italic}.property-edit-form{display:flex;flex-direction:column;gap:.5rem}.form-row{display:flex;align-items:center;gap:.5rem}.form-row label{flex:0 0 80px;font-size:11px;color:#666}.form-row input[type=text],.form-row input[type=number],.form-row select{flex:1;padding:.375rem .5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px}.form-row input:focus,.form-row select:focus{outline:none;border-color:#1976d2}.form-row input[type=color]{flex:0 0 50px;height:32px;padding:2px;border:1px solid #e0e0e0;border-radius:4px}.form-row input[type=checkbox]{margin:0}.form-row.two-col{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.form-row.two-col>div{display:flex;flex-direction:column;gap:.25rem}.form-row.two-col label{flex:none}.form-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem;padding-top:.5rem;border-top:1px solid #e0e0e0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "ngmodule", type: DropDownsModule }] });
|
|
18927
18927
|
}
|
|
18928
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
18928
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TransformPropertyEditorComponent, decorators: [{
|
|
18929
18929
|
type: Component,
|
|
18930
18930
|
args: [{ selector: 'mm-transform-property-editor', standalone: true, imports: [CommonModule, FormsModule, ButtonsModule, InputsModule, DropDownsModule, DecimalPipe], template: `
|
|
18931
18931
|
<div class="transform-property-editor">
|
|
@@ -19206,14 +19206,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
19206
19206
|
class TransformPanelComponent {
|
|
19207
19207
|
cdr = inject(ChangeDetectorRef);
|
|
19208
19208
|
// Use signal-based params to ensure reactivity when dockview sets params after init
|
|
19209
|
-
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : []));
|
|
19209
|
+
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : /* istanbul ignore next */ []));
|
|
19210
19210
|
set params(value) {
|
|
19211
19211
|
this._params.set(value);
|
|
19212
19212
|
}
|
|
19213
|
-
transformProperties = computed(() => this._params().transformProperties?.() ?? [], ...(ngDevMode ? [{ debugName: "transformProperties" }] : []));
|
|
19214
|
-
propertyBindings = computed(() => this._params().propertyBindings?.() ?? [], ...(ngDevMode ? [{ debugName: "propertyBindings" }] : []));
|
|
19215
|
-
primitives = computed(() => this._params().primitives?.() ?? [], ...(ngDevMode ? [{ debugName: "primitives" }] : []));
|
|
19216
|
-
symbolInstances = computed(() => this._params().symbolInstances?.() ?? [], ...(ngDevMode ? [{ debugName: "symbolInstances" }] : []));
|
|
19213
|
+
transformProperties = computed(() => this._params().transformProperties?.() ?? [], ...(ngDevMode ? [{ debugName: "transformProperties" }] : /* istanbul ignore next */ []));
|
|
19214
|
+
propertyBindings = computed(() => this._params().propertyBindings?.() ?? [], ...(ngDevMode ? [{ debugName: "propertyBindings" }] : /* istanbul ignore next */ []));
|
|
19215
|
+
primitives = computed(() => this._params().primitives?.() ?? [], ...(ngDevMode ? [{ debugName: "primitives" }] : /* istanbul ignore next */ []));
|
|
19216
|
+
symbolInstances = computed(() => this._params().symbolInstances?.() ?? [], ...(ngDevMode ? [{ debugName: "symbolInstances" }] : /* istanbul ignore next */ []));
|
|
19217
19217
|
// Effect to trigger change detection when signals update
|
|
19218
19218
|
selectionEffect = effect(() => {
|
|
19219
19219
|
this.transformProperties();
|
|
@@ -19221,15 +19221,15 @@ class TransformPanelComponent {
|
|
|
19221
19221
|
this.primitives();
|
|
19222
19222
|
this.symbolInstances();
|
|
19223
19223
|
this.cdr.markForCheck();
|
|
19224
|
-
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : []));
|
|
19224
|
+
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : /* istanbul ignore next */ []));
|
|
19225
19225
|
onPropertyChange(event) {
|
|
19226
19226
|
this._params().onPropertyChange?.(event);
|
|
19227
19227
|
}
|
|
19228
19228
|
onOpenBindings(property) {
|
|
19229
19229
|
this._params().onOpenBindings?.(property);
|
|
19230
19230
|
}
|
|
19231
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
19232
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
19231
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TransformPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19232
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: TransformPanelComponent, isStandalone: true, selector: "mm-transform-panel", inputs: { params: "params" }, ngImport: i0, template: `
|
|
19233
19233
|
<div class="panel-container">
|
|
19234
19234
|
<mm-transform-property-editor
|
|
19235
19235
|
[transformProperties]="transformProperties()"
|
|
@@ -19242,7 +19242,7 @@ class TransformPanelComponent {
|
|
|
19242
19242
|
</div>
|
|
19243
19243
|
`, isInline: true, styles: [":host{display:block;height:100%}.panel-container{height:100%;overflow:hidden;background:var(--dv-pane-background-color, #1f2e40)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TransformPropertyEditorComponent, selector: "mm-transform-property-editor", inputs: ["transformProperties", "propertyBindings", "primitives", "symbolInstances"], outputs: ["propertiesChange", "openBindings"] }] });
|
|
19244
19244
|
}
|
|
19245
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
19245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TransformPanelComponent, decorators: [{
|
|
19246
19246
|
type: Component,
|
|
19247
19247
|
args: [{ selector: 'mm-transform-panel', standalone: true, imports: [CommonModule, TransformPropertyEditorComponent], template: `
|
|
19248
19248
|
<div class="panel-container">
|
|
@@ -19283,11 +19283,11 @@ class AnimationEditorComponent {
|
|
|
19283
19283
|
/** Emitted when animations change */
|
|
19284
19284
|
animationsChange = new EventEmitter();
|
|
19285
19285
|
// State
|
|
19286
|
-
_editingAnimationId = signal(null, ...(ngDevMode ? [{ debugName: "_editingAnimationId" }] : []));
|
|
19287
|
-
_showingPresetPicker = signal(false, ...(ngDevMode ? [{ debugName: "_showingPresetPicker" }] : []));
|
|
19286
|
+
_editingAnimationId = signal(null, ...(ngDevMode ? [{ debugName: "_editingAnimationId" }] : /* istanbul ignore next */ []));
|
|
19287
|
+
_showingPresetPicker = signal(false, ...(ngDevMode ? [{ debugName: "_showingPresetPicker" }] : /* istanbul ignore next */ []));
|
|
19288
19288
|
// Computed
|
|
19289
|
-
editingAnimationId = computed(() => this._editingAnimationId(), ...(ngDevMode ? [{ debugName: "editingAnimationId" }] : []));
|
|
19290
|
-
showingPresetPicker = computed(() => this._showingPresetPicker(), ...(ngDevMode ? [{ debugName: "showingPresetPicker" }] : []));
|
|
19289
|
+
editingAnimationId = computed(() => this._editingAnimationId(), ...(ngDevMode ? [{ debugName: "editingAnimationId" }] : /* istanbul ignore next */ []));
|
|
19290
|
+
showingPresetPicker = computed(() => this._showingPresetPicker(), ...(ngDevMode ? [{ debugName: "showingPresetPicker" }] : /* istanbul ignore next */ []));
|
|
19291
19291
|
// Options
|
|
19292
19292
|
animationTypes = [
|
|
19293
19293
|
{ value: 'animate', label: 'Attribute Animation' },
|
|
@@ -19563,8 +19563,8 @@ class AnimationEditorComponent {
|
|
|
19563
19563
|
const unit = match[2] || 's';
|
|
19564
19564
|
return unit === 'ms' ? value / 1000 : value;
|
|
19565
19565
|
}
|
|
19566
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
19567
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
19566
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AnimationEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19567
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: AnimationEditorComponent, isStandalone: true, selector: "mm-animation-editor", inputs: { primitiveId: "primitiveId", animations: "animations", availableProperties: "availableProperties", availablePaths: "availablePaths" }, outputs: { animationsChange: "animationsChange" }, ngImport: i0, template: `
|
|
19568
19568
|
<div class="animation-editor">
|
|
19569
19569
|
<!-- Toolbar -->
|
|
19570
19570
|
<div class="editor-toolbar">
|
|
@@ -19863,7 +19863,7 @@ class AnimationEditorComponent {
|
|
|
19863
19863
|
</div>
|
|
19864
19864
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.animation-editor{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;border:1px solid #e0e0e0;border-radius:4px;background:#fafafa}.editor-toolbar{flex-shrink:0;display:flex;justify-content:flex-end;padding:.5rem;border-bottom:1px solid #e0e0e0}.section-content{flex:1;min-height:0;overflow-y:auto;padding:.5rem}.empty-state{text-align:center;padding:1rem;color:#666}.empty-state p{margin:0 0 .5rem;font-size:12px}.animation-item{background:#fff;border:1px solid #e0e0e0;border-radius:4px;margin-bottom:.5rem}.animation-item:last-child{margin-bottom:0}.item-header{display:flex;align-items:center;gap:.5rem;padding:.5rem;cursor:pointer}.item-header:hover{background:#f5f5f5}.item-icon{font-size:14px}.item-name{font-size:12px;font-weight:500;flex:1}.item-info{font-size:11px;color:#666}.item-actions{display:flex;gap:.25rem;opacity:0;transition:opacity .15s}.item-header:hover .item-actions{opacity:1}.item-edit-form{padding:.75rem;border-top:1px solid #e0e0e0;background:#fafafa}.form-row{margin-bottom:.75rem}.form-row:last-child{margin-bottom:0}.form-row label{display:block;font-size:11px;color:#666;margin-bottom:.25rem}.form-row input[type=checkbox]{margin-right:.5rem}.form-row-group{display:flex;gap:.5rem}.form-row.half{flex:1}.form-row.hint-row{background:#e3f2fd;padding:.5rem;border-radius:4px;margin-top:.5rem}.hint-text{font-size:11px;color:#1565c0;line-height:1.4}.input-with-unit{display:flex;align-items:center;gap:.25rem}.input-with-unit .unit{font-size:11px;color:#666}.anchor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;width:72px}.anchor-point{width:20px;height:20px;border:1px solid #ccc;border-radius:2px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.anchor-point:hover{border-color:#1976d2}.anchor-point.selected{border-color:#1976d2;background:#e3f2fd}.anchor-dot{width:6px;height:6px;border-radius:50%;background:#666}.anchor-point.selected .anchor-dot{background:#1976d2}.preset-picker{background:#fff;border:1px solid #1976d2;border-radius:4px;margin-top:.5rem}.preset-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem;background:#e3f2fd;border-bottom:1px solid #1976d2;font-size:12px;font-weight:500}.preset-groups{padding:.5rem;max-height:200px;overflow-y:auto}.preset-group{margin-bottom:.75rem}.preset-group:last-child{margin-bottom:0}.group-name{font-size:10px;text-transform:uppercase;color:#666;margin-bottom:.25rem}.group-presets{display:flex;flex-wrap:wrap;gap:.25rem}.preset-button{font-size:11px;padding:.25rem .5rem;border:1px solid #e0e0e0;border-radius:3px;background:#fff;cursor:pointer}.preset-button:hover{border-color:#1976d2;background:#e3f2fd}.path-textarea{width:100%;min-height:60px;font-family:monospace;font-size:11px;padding:.5rem;border:1px solid #ccc;border-radius:4px;resize:vertical;line-height:1.4;box-sizing:border-box}.path-preview{margin:.5rem 0}.motion-path-preview{width:100%;height:60px;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:4px}.path-select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff}.flow-particles-hint{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#e8f5e9;border-radius:4px;margin-bottom:.75rem;font-size:11px;color:#2e7d32}.hint-icon{font-size:14px}.color-input{width:40px;height:24px;border:1px solid #ccc;border-radius:4px;cursor:pointer;padding:0}.color-hint{font-size:10px;color:#666;margin-left:.5rem}:host ::ng-deep .k-dropdownlist,:host ::ng-deep .k-textbox,:host ::ng-deep .k-numerictextbox{width:100%}:host ::ng-deep .k-input-sm{font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: i3$1.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i3$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "ngmodule", type: DropDownsModule }, { kind: "component", type: i4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "ngmodule", type: IconsModule }] });
|
|
19865
19865
|
}
|
|
19866
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
19866
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AnimationEditorComponent, decorators: [{
|
|
19867
19867
|
type: Component,
|
|
19868
19868
|
args: [{ selector: 'mm-animation-editor', standalone: true, imports: [
|
|
19869
19869
|
CommonModule,
|
|
@@ -20191,15 +20191,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
20191
20191
|
class AnimationsPanelComponent {
|
|
20192
20192
|
cdr = inject(ChangeDetectorRef);
|
|
20193
20193
|
// Use signal-based params to ensure reactivity when dockview sets params after init
|
|
20194
|
-
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : []));
|
|
20194
|
+
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : /* istanbul ignore next */ []));
|
|
20195
20195
|
set params(value) {
|
|
20196
20196
|
this._params.set(value);
|
|
20197
20197
|
}
|
|
20198
|
-
primitiveId = computed(() => this._params().primitiveId?.() ?? '', ...(ngDevMode ? [{ debugName: "primitiveId" }] : []));
|
|
20199
|
-
animations = computed(() => this._params().animations?.() ?? [], ...(ngDevMode ? [{ debugName: "animations" }] : []));
|
|
20200
|
-
availableProperties = computed(() => this._params().availableProperties?.() ?? [], ...(ngDevMode ? [{ debugName: "availableProperties" }] : []));
|
|
20201
|
-
availablePaths = computed(() => this._params().availablePaths?.() ?? [], ...(ngDevMode ? [{ debugName: "availablePaths" }] : []));
|
|
20202
|
-
supportsAnimations = computed(() => this._params().supportsAnimations?.() ?? true, ...(ngDevMode ? [{ debugName: "supportsAnimations" }] : []));
|
|
20198
|
+
primitiveId = computed(() => this._params().primitiveId?.() ?? '', ...(ngDevMode ? [{ debugName: "primitiveId" }] : /* istanbul ignore next */ []));
|
|
20199
|
+
animations = computed(() => this._params().animations?.() ?? [], ...(ngDevMode ? [{ debugName: "animations" }] : /* istanbul ignore next */ []));
|
|
20200
|
+
availableProperties = computed(() => this._params().availableProperties?.() ?? [], ...(ngDevMode ? [{ debugName: "availableProperties" }] : /* istanbul ignore next */ []));
|
|
20201
|
+
availablePaths = computed(() => this._params().availablePaths?.() ?? [], ...(ngDevMode ? [{ debugName: "availablePaths" }] : /* istanbul ignore next */ []));
|
|
20202
|
+
supportsAnimations = computed(() => this._params().supportsAnimations?.() ?? true, ...(ngDevMode ? [{ debugName: "supportsAnimations" }] : /* istanbul ignore next */ []));
|
|
20203
20203
|
// Effect to trigger change detection when signals update
|
|
20204
20204
|
selectionEffect = effect(() => {
|
|
20205
20205
|
this.primitiveId();
|
|
@@ -20208,12 +20208,12 @@ class AnimationsPanelComponent {
|
|
|
20208
20208
|
this.availablePaths();
|
|
20209
20209
|
this.supportsAnimations();
|
|
20210
20210
|
this.cdr.markForCheck();
|
|
20211
|
-
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : []));
|
|
20211
|
+
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : /* istanbul ignore next */ []));
|
|
20212
20212
|
onAnimationsChange(event) {
|
|
20213
20213
|
this._params().onAnimationsChange?.(event);
|
|
20214
20214
|
}
|
|
20215
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
20216
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
20215
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AnimationsPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20216
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: AnimationsPanelComponent, isStandalone: true, selector: "mm-animations-panel", inputs: { params: "params" }, ngImport: i0, template: `
|
|
20217
20217
|
<div class="panel-container">
|
|
20218
20218
|
@if (primitiveId()) {
|
|
20219
20219
|
@if (supportsAnimations()) {
|
|
@@ -20239,7 +20239,7 @@ class AnimationsPanelComponent {
|
|
|
20239
20239
|
</div>
|
|
20240
20240
|
`, isInline: true, styles: [":host{display:block;height:100%}.panel-container{height:100%;overflow:hidden;background:var(--dv-pane-background-color, #1f2e40)}.no-selection,.not-supported{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center;color:var(--text-secondary, #9292a6)}.no-selection p,.not-supported p{margin:0}.no-selection .hint,.not-supported .hint{margin-top:.5rem;font-size:.85rem;opacity:.7}.not-supported{color:var(--text-muted, #6c757d)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AnimationEditorComponent, selector: "mm-animation-editor", inputs: ["primitiveId", "animations", "availableProperties", "availablePaths"], outputs: ["animationsChange"] }] });
|
|
20241
20241
|
}
|
|
20242
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
20242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: AnimationsPanelComponent, decorators: [{
|
|
20243
20243
|
type: Component,
|
|
20244
20244
|
args: [{ selector: 'mm-animations-panel', standalone: true, imports: [CommonModule, AnimationEditorComponent], template: `
|
|
20245
20245
|
<div class="panel-container">
|
|
@@ -20287,7 +20287,7 @@ class SimulationPanelComponent {
|
|
|
20287
20287
|
valueChange = new EventEmitter();
|
|
20288
20288
|
resetValues = new EventEmitter();
|
|
20289
20289
|
// Internal state
|
|
20290
|
-
_localValues = signal({}, ...(ngDevMode ? [{ debugName: "_localValues" }] : []));
|
|
20290
|
+
_localValues = signal({}, ...(ngDevMode ? [{ debugName: "_localValues" }] : /* istanbul ignore next */ []));
|
|
20291
20291
|
/**
|
|
20292
20292
|
* Check if there are any properties to display
|
|
20293
20293
|
*/
|
|
@@ -20343,8 +20343,8 @@ class SimulationPanelComponent {
|
|
|
20343
20343
|
this._localValues.set({});
|
|
20344
20344
|
this.resetValues.emit();
|
|
20345
20345
|
}
|
|
20346
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
20347
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
20346
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SimulationPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20347
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SimulationPanelComponent, isStandalone: true, selector: "mm-simulation-panel", inputs: { properties: "properties", values: "values" }, outputs: { valueChange: "valueChange", resetValues: "resetValues" }, ngImport: i0, template: `
|
|
20348
20348
|
@if (hasProperties()) {
|
|
20349
20349
|
<div class="simulation-panel" data-testid="simulation-panel">
|
|
20350
20350
|
<div class="panel-toolbar">
|
|
@@ -20437,7 +20437,7 @@ class SimulationPanelComponent {
|
|
|
20437
20437
|
}
|
|
20438
20438
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.simulation-panel{background:#fff;flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.panel-toolbar{flex-shrink:0;display:flex;justify-content:flex-end;padding:.5rem;border-bottom:1px solid #e0e0e0}.panel-content{padding:1rem;flex:1;min-height:0;overflow-y:auto}.properties-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.property-control{position:relative;background:#fafafa;border:1px solid #e0e0e0;border-radius:8px;padding:.75rem 2rem .75rem .75rem}.property-control:hover{border-color:#bdbdbd}.property-control.color-type{min-width:180px}.control-header{display:flex;align-items:baseline;gap:.25rem;margin-bottom:.5rem}.property-name{font-size:12px;font-weight:500;color:#333}.property-unit{font-size:10px;color:#666}.number-control{display:flex;align-items:center;gap:.5rem;min-width:0}.value-slider{flex:1;min-width:0;height:6px;-webkit-appearance:none;appearance:none;background:linear-gradient(to right,#e3f2fd,#1976d2);border-radius:3px;cursor:pointer}.value-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:#1976d2;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 4px #0000004d}.value-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#1976d2;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 4px #0000004d}.value-input{flex:0 0 50px;width:50px;padding:.25rem .375rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px;text-align:right;box-sizing:border-box}.value-input:focus{outline:none;border-color:#1976d2}.value-range{display:flex;justify-content:space-between;font-size:9px;color:#999;margin-top:.25rem}.color-control{display:flex;align-items:center;gap:.5rem}.color-control input[type=color]{width:40px;height:32px;padding:2px;border:1px solid #e0e0e0;border-radius:4px;cursor:pointer}.color-input{flex:1;padding:.25rem .5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:11px;font-family:Consolas,Monaco,monospace}.color-input:focus{outline:none;border-color:#1976d2}.boolean-control{display:flex;align-items:center}.toggle-label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.toggle-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.toggle-text{font-size:12px;color:#666}.string-control input{width:100%;padding:.375rem .5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:12px}.string-control input:focus{outline:none;border-color:#1976d2}.reset-button{position:absolute;top:.5rem;right:.25rem;opacity:0;transition:opacity .15s}.property-control:hover .reset-button{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }] });
|
|
20439
20439
|
}
|
|
20440
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
20440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SimulationPanelComponent, decorators: [{
|
|
20441
20441
|
type: Component,
|
|
20442
20442
|
args: [{ selector: 'mm-simulation-panel', standalone: true, imports: [CommonModule, FormsModule, ButtonsModule, InputsModule, DecimalPipe], template: `
|
|
20443
20443
|
@if (hasProperties()) {
|
|
@@ -20550,26 +20550,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
20550
20550
|
class SimulationPanelWrapperComponent {
|
|
20551
20551
|
cdr = inject(ChangeDetectorRef);
|
|
20552
20552
|
// Use signal-based params to ensure reactivity when dockview sets params after init
|
|
20553
|
-
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : []));
|
|
20553
|
+
_params = signal({}, ...(ngDevMode ? [{ debugName: "_params" }] : /* istanbul ignore next */ []));
|
|
20554
20554
|
set params(value) {
|
|
20555
20555
|
this._params.set(value);
|
|
20556
20556
|
}
|
|
20557
|
-
properties = computed(() => this._params().properties?.() ?? [], ...(ngDevMode ? [{ debugName: "properties" }] : []));
|
|
20558
|
-
values = computed(() => this._params().values?.() ?? {}, ...(ngDevMode ? [{ debugName: "values" }] : []));
|
|
20557
|
+
properties = computed(() => this._params().properties?.() ?? [], ...(ngDevMode ? [{ debugName: "properties" }] : /* istanbul ignore next */ []));
|
|
20558
|
+
values = computed(() => this._params().values?.() ?? {}, ...(ngDevMode ? [{ debugName: "values" }] : /* istanbul ignore next */ []));
|
|
20559
20559
|
// Effect to trigger change detection when signals update
|
|
20560
20560
|
selectionEffect = effect(() => {
|
|
20561
20561
|
this.properties();
|
|
20562
20562
|
this.values();
|
|
20563
20563
|
this.cdr.markForCheck();
|
|
20564
|
-
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : []));
|
|
20564
|
+
}, ...(ngDevMode ? [{ debugName: "selectionEffect" }] : /* istanbul ignore next */ []));
|
|
20565
20565
|
onValueChange(event) {
|
|
20566
20566
|
this._params().onValueChange?.(event);
|
|
20567
20567
|
}
|
|
20568
20568
|
onResetValues() {
|
|
20569
20569
|
this._params().onResetValues?.();
|
|
20570
20570
|
}
|
|
20571
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
20572
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
20571
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SimulationPanelWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20572
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SimulationPanelWrapperComponent, isStandalone: true, selector: "mm-simulation-panel-wrapper", inputs: { params: "params" }, ngImport: i0, template: `
|
|
20573
20573
|
<div class="panel-container">
|
|
20574
20574
|
@if (properties().length > 0) {
|
|
20575
20575
|
<mm-simulation-panel
|
|
@@ -20587,7 +20587,7 @@ class SimulationPanelWrapperComponent {
|
|
|
20587
20587
|
</div>
|
|
20588
20588
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.panel-container{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;background:var(--dv-pane-background-color, #1f2e40)}.no-properties{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center;color:var(--text-secondary, #9292a6)}.no-properties p{margin:0}.no-properties .hint{margin-top:.5rem;font-size:.85rem;opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SimulationPanelComponent, selector: "mm-simulation-panel", inputs: ["properties", "values"], outputs: ["valueChange", "resetValues"] }] });
|
|
20589
20589
|
}
|
|
20590
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
20590
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SimulationPanelWrapperComponent, decorators: [{
|
|
20591
20591
|
type: Component,
|
|
20592
20592
|
args: [{ selector: 'mm-simulation-panel-wrapper', standalone: true, imports: [CommonModule, SimulationPanelComponent], template: `
|
|
20593
20593
|
<div class="panel-container">
|
|
@@ -20633,8 +20633,8 @@ class SettingsPanelComponent {
|
|
|
20633
20633
|
this.onSettingsChange(key, value);
|
|
20634
20634
|
}
|
|
20635
20635
|
}
|
|
20636
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
20637
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
20636
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SettingsPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20637
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: SettingsPanelComponent, isStandalone: true, selector: "mm-settings-panel", ngImport: i0, template: `
|
|
20638
20638
|
<div class="panel-container">
|
|
20639
20639
|
<div class="settings-section">
|
|
20640
20640
|
<h4>Symbol</h4>
|
|
@@ -20709,7 +20709,7 @@ class SettingsPanelComponent {
|
|
|
20709
20709
|
</div>
|
|
20710
20710
|
`, isInline: true, styles: [".panel-container{padding:.5rem;background:#fff}.settings-section{margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #e0e0e0}.settings-section:last-child{border-bottom:none;margin-bottom:0}.settings-section h4{font-size:11px;font-weight:600;text-transform:uppercase;color:#666;margin:0 0 .5rem;letter-spacing:.5px}.form-group{margin-bottom:.5rem}.form-group label{display:block;font-size:11px;color:#666;margin-bottom:.25rem}.form-group input,.form-group textarea,.form-group kendo-numerictextbox{width:100%}.form-row{display:flex;gap:.5rem}.form-row .form-group{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: i3$1.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i3$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: i3$1.TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: NumericTextBoxModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
20711
20711
|
}
|
|
20712
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
20712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SettingsPanelComponent, decorators: [{
|
|
20713
20713
|
type: Component,
|
|
20714
20714
|
args: [{ selector: 'mm-settings-panel', standalone: true, imports: [CommonModule, FormsModule, InputsModule, NumericTextBoxModule], template: `
|
|
20715
20715
|
<div class="panel-container">
|
|
@@ -20815,7 +20815,7 @@ class StylesPanelComponent {
|
|
|
20815
20815
|
return this._params;
|
|
20816
20816
|
}
|
|
20817
20817
|
// Local state for selected style
|
|
20818
|
-
_selectedStyleId = signal(null, ...(ngDevMode ? [{ debugName: "_selectedStyleId" }] : []));
|
|
20818
|
+
_selectedStyleId = signal(null, ...(ngDevMode ? [{ debugName: "_selectedStyleId" }] : /* istanbul ignore next */ []));
|
|
20819
20819
|
// Store reference to the styleClasses signal for proper tracking
|
|
20820
20820
|
_styleClassesSignal = null;
|
|
20821
20821
|
// Effect to trigger change detection when styleClasses signal updates
|
|
@@ -20829,7 +20829,7 @@ class StylesPanelComponent {
|
|
|
20829
20829
|
this._selectedStyleId();
|
|
20830
20830
|
// Trigger change detection
|
|
20831
20831
|
this.cdr.markForCheck();
|
|
20832
|
-
}, ...(ngDevMode ? [{ debugName: "styleClassesEffect" }] : []));
|
|
20832
|
+
}, ...(ngDevMode ? [{ debugName: "styleClassesEffect" }] : /* istanbul ignore next */ []));
|
|
20833
20833
|
/**
|
|
20834
20834
|
* Get style classes from params (can be a signal or plain array).
|
|
20835
20835
|
*/
|
|
@@ -21018,8 +21018,8 @@ class StylesPanelComponent {
|
|
|
21018
21018
|
setTimeout(() => document.body.removeChild(preview), 0);
|
|
21019
21019
|
}
|
|
21020
21020
|
}
|
|
21021
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
21022
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
21021
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StylesPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21022
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: StylesPanelComponent, isStandalone: true, selector: "mm-styles-panel", ngImport: i0, template: `
|
|
21023
21023
|
<div class="panel-container">
|
|
21024
21024
|
<div class="panel-toolbar">
|
|
21025
21025
|
<button class="add-button" (click)="addStyle()">+ Add Style</button>
|
|
@@ -21143,7 +21143,7 @@ class StylesPanelComponent {
|
|
|
21143
21143
|
</div>
|
|
21144
21144
|
`, isInline: true, styles: [":host{--panel-bg: var(--designer-panel-bg, #fff);--panel-bg-elevated: var(--designer-panel-bg-elevated, #fafafa);--panel-border: var(--designer-panel-border, #e0e0e0);--panel-text: var(--designer-panel-text, #333);--panel-text-secondary: var(--designer-panel-text-secondary, #666);--panel-text-muted: var(--designer-panel-text-muted, #999);--panel-accent: var(--designer-panel-accent, #1976d2);--panel-accent-hover-bg: var(--designer-panel-accent-hover-bg, #e3f2fd);--panel-input-bg: var(--designer-panel-input-bg, #fff);--panel-delete-hover-bg: var(--designer-panel-delete-hover-bg, #ffebee);--panel-delete-color: var(--designer-panel-delete-color, #d32f2f)}.panel-container{display:flex;flex-direction:column;height:100%;min-height:0;overflow-y:auto;background:var(--panel-bg)}.panel-toolbar{display:flex;padding:.5rem;border-bottom:1px solid var(--panel-border);flex-shrink:0}.add-button{flex:1;padding:.375rem .75rem;font-size:12px;border:1px dashed var(--panel-border);background:var(--panel-bg-elevated);border-radius:4px;cursor:pointer;color:var(--panel-text-secondary);transition:all .15s ease}.add-button:hover{border-color:var(--panel-accent);background:var(--panel-accent-hover-bg);color:var(--panel-accent)}.style-list{flex:0 0 auto;padding:.5rem}.style-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;border:1px solid var(--panel-border);border-radius:4px;margin-bottom:.375rem;cursor:grab;background:var(--panel-bg);transition:all .15s ease}.style-item:hover{border-color:var(--panel-accent);background:var(--panel-bg-elevated)}.style-item.selected{border-color:var(--panel-accent);background:var(--panel-accent-hover-bg)}.style-item:active{cursor:grabbing}.style-preview{width:24px;height:24px;flex-shrink:0;border-radius:3px;overflow:hidden;background:repeating-conic-gradient(#555 0% 25%,#333 0% 50%) 50% / 8px 8px}.style-preview svg{display:block;width:100%;height:100%}.style-name{flex:1;font-size:12px;color:var(--panel-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.delete-button{width:20px;height:20px;padding:0;border:none;background:transparent;cursor:pointer;color:var(--panel-text-muted);border-radius:3px;display:flex;align-items:center;justify-content:center;opacity:.5;transition:all .15s ease}.delete-button:hover{background:var(--panel-delete-hover-bg);color:var(--panel-delete-color);opacity:1}.empty-state{padding:1.5rem 1rem;text-align:center;color:var(--panel-text-muted)}.empty-state p{margin:0;font-size:12px}.empty-state .hint{margin-top:.25rem;font-size:11px}.style-editor{border-top:1px solid var(--panel-border);padding:.5rem;background:var(--panel-bg-elevated)}.editor-section h4{font-size:11px;font-weight:600;text-transform:uppercase;color:var(--panel-text-secondary);margin:0 0 .5rem;letter-spacing:.5px}.form-group{margin-bottom:.5rem}.form-group label{display:block;font-size:11px;color:var(--panel-text-secondary);margin-bottom:.25rem}.form-group input[type=text]{width:150px;padding:.25rem .5rem;border:1px solid var(--panel-border);border-radius:4px;font-size:12px;background:var(--panel-input-bg);color:var(--panel-text)}.form-group input[type=text]:focus{outline:none;border-color:var(--panel-accent)}.form-group input[type=number]{width:80px;padding:.25rem .5rem;border:1px solid var(--panel-border);border-radius:4px;font-size:12px;background:var(--panel-input-bg);color:var(--panel-text)}.form-group input[type=number]:focus{outline:none;border-color:var(--panel-accent)}.color-row{display:flex;align-items:center;gap:.5rem}.color-row input[type=color]{width:32px;height:24px;padding:2px;border:1px solid var(--panel-border);border-radius:4px;cursor:pointer}.opacity-slider{flex:1;height:4px;-webkit-appearance:none;appearance:none;background:linear-gradient(to right,transparent,var(--panel-accent));border-radius:2px;cursor:pointer}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--panel-accent);cursor:pointer;border:2px solid var(--panel-bg);box-shadow:0 1px 3px #0000004d}.opacity-slider::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--panel-accent);cursor:pointer;border:2px solid var(--panel-bg);box-shadow:0 1px 3px #0000004d}.opacity-value{width:36px;font-size:11px;color:var(--panel-text-secondary);text-align:right}.line-type-row{display:flex;align-items:center;gap:.5rem}.line-type-select{flex:1;padding:.25rem .5rem;border:1px solid var(--panel-border);border-radius:4px;font-size:12px;background:var(--panel-input-bg);color:var(--panel-text)}.line-type-select:focus{outline:none;border-color:var(--panel-accent)}.line-preview{width:50px;height:16px;border:1px solid var(--panel-border);border-radius:3px;background:var(--panel-input-bg)}.panel-footer{padding:.5rem;border-top:1px solid var(--panel-border);background:var(--panel-bg-elevated)}.panel-footer .hint{margin:0;font-size:10px;color:var(--panel-text-muted);text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "ngmodule", type: InputsModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21145
21145
|
}
|
|
21146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
21146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: StylesPanelComponent, decorators: [{
|
|
21147
21147
|
type: Component,
|
|
21148
21148
|
args: [{ selector: 'mm-styles-panel', standalone: true, imports: [CommonModule, FormsModule, InputsModule, ButtonsModule, DecimalPipe], template: `
|
|
21149
21149
|
<div class="panel-container">
|
|
@@ -21348,7 +21348,7 @@ class ProcessDesignerComponent {
|
|
|
21348
21348
|
* In symbol editor mode, these come from the symbol definition.
|
|
21349
21349
|
* Stored as a signal for reactive updates in dockview panels.
|
|
21350
21350
|
*/
|
|
21351
|
-
_transformPropertiesInput = signal([], ...(ngDevMode ? [{ debugName: "_transformPropertiesInput" }] : []));
|
|
21351
|
+
_transformPropertiesInput = signal([], ...(ngDevMode ? [{ debugName: "_transformPropertiesInput" }] : /* istanbul ignore next */ []));
|
|
21352
21352
|
set transformProperties(value) {
|
|
21353
21353
|
this._transformPropertiesInput.set(value);
|
|
21354
21354
|
}
|
|
@@ -21361,7 +21361,7 @@ class ProcessDesignerComponent {
|
|
|
21361
21361
|
* Used to evaluate animation enabled states based on expressions.
|
|
21362
21362
|
* Stored as a signal for reactive updates in dockview panels.
|
|
21363
21363
|
*/
|
|
21364
|
-
_propertyBindings = signal([], ...(ngDevMode ? [{ debugName: "_propertyBindings" }] : []));
|
|
21364
|
+
_propertyBindings = signal([], ...(ngDevMode ? [{ debugName: "_propertyBindings" }] : /* istanbul ignore next */ []));
|
|
21365
21365
|
set propertyBindings(value) {
|
|
21366
21366
|
this._propertyBindings.set(value);
|
|
21367
21367
|
}
|
|
@@ -21374,7 +21374,7 @@ class ProcessDesignerComponent {
|
|
|
21374
21374
|
* When set, these override default values for animation evaluation.
|
|
21375
21375
|
* Stored as a signal for reactive animation enabled state evaluation.
|
|
21376
21376
|
*/
|
|
21377
|
-
_simulationPropertyValues = signal({}, ...(ngDevMode ? [{ debugName: "_simulationPropertyValues" }] : []));
|
|
21377
|
+
_simulationPropertyValues = signal({}, ...(ngDevMode ? [{ debugName: "_simulationPropertyValues" }] : /* istanbul ignore next */ []));
|
|
21378
21378
|
set simulationPropertyValues(value) {
|
|
21379
21379
|
this._simulationPropertyValues.set(value);
|
|
21380
21380
|
}
|
|
@@ -21389,22 +21389,22 @@ class ProcessDesignerComponent {
|
|
|
21389
21389
|
* Diagram-level transform properties.
|
|
21390
21390
|
* When editorMode='diagram', these are stored in the diagram itself.
|
|
21391
21391
|
*/
|
|
21392
|
-
_diagramTransformProperties = signal([], ...(ngDevMode ? [{ debugName: "_diagramTransformProperties" }] : []));
|
|
21392
|
+
_diagramTransformProperties = signal([], ...(ngDevMode ? [{ debugName: "_diagramTransformProperties" }] : /* istanbul ignore next */ []));
|
|
21393
21393
|
/**
|
|
21394
21394
|
* Diagram-level property bindings.
|
|
21395
21395
|
* When editorMode='diagram', these are stored in the diagram itself.
|
|
21396
21396
|
*/
|
|
21397
|
-
_diagramPropertyBindings = signal([], ...(ngDevMode ? [{ debugName: "_diagramPropertyBindings" }] : []));
|
|
21397
|
+
_diagramPropertyBindings = signal([], ...(ngDevMode ? [{ debugName: "_diagramPropertyBindings" }] : /* istanbul ignore next */ []));
|
|
21398
21398
|
/**
|
|
21399
21399
|
* Diagram-level animations.
|
|
21400
21400
|
* When editorMode='diagram', these are stored in the diagram itself.
|
|
21401
21401
|
*/
|
|
21402
|
-
_diagramAnimations = signal([], ...(ngDevMode ? [{ debugName: "_diagramAnimations" }] : []));
|
|
21402
|
+
_diagramAnimations = signal([], ...(ngDevMode ? [{ debugName: "_diagramAnimations" }] : /* istanbul ignore next */ []));
|
|
21403
21403
|
/**
|
|
21404
21404
|
* Diagram-level simulation values for testing bindings.
|
|
21405
21405
|
* Used to preview data binding effects in diagram mode.
|
|
21406
21406
|
*/
|
|
21407
|
-
_diagramSimulationValues = signal({}, ...(ngDevMode ? [{ debugName: "_diagramSimulationValues" }] : []));
|
|
21407
|
+
_diagramSimulationValues = signal({}, ...(ngDevMode ? [{ debugName: "_diagramSimulationValues" }] : /* istanbul ignore next */ []));
|
|
21408
21408
|
diagramChange = new EventEmitter();
|
|
21409
21409
|
saveRequest = new EventEmitter();
|
|
21410
21410
|
/**
|
|
@@ -21449,7 +21449,7 @@ class ProcessDesignerComponent {
|
|
|
21449
21449
|
diagramService = inject(DesignerDiagramService);
|
|
21450
21450
|
// State signals
|
|
21451
21451
|
// Diagram is now owned by DesignerDiagramService - computed signal for reactivity
|
|
21452
|
-
_diagram = computed(() => this.diagramService.diagram(), ...(ngDevMode ? [{ debugName: "_diagram" }] : []));
|
|
21452
|
+
_diagram = computed(() => this.diagramService.diagram(), ...(ngDevMode ? [{ debugName: "_diagram" }] : /* istanbul ignore next */ []));
|
|
21453
21453
|
// Selection is now managed by DesignerSelectionService
|
|
21454
21454
|
// Drag state is now managed by DesignerDragService - adapter for legacy interface
|
|
21455
21455
|
// Resize state is now managed by DesignerResizeService - adapter for legacy interface
|
|
@@ -21467,21 +21467,21 @@ class ProcessDesignerComponent {
|
|
|
21467
21467
|
isGroup: state.itemType === 'group',
|
|
21468
21468
|
groupChildData: state.groupChildData ?? undefined
|
|
21469
21469
|
};
|
|
21470
|
-
}, ...(ngDevMode ? [{ debugName: "resizeState" }] : []));
|
|
21470
|
+
}, ...(ngDevMode ? [{ debugName: "resizeState" }] : /* istanbul ignore next */ []));
|
|
21471
21471
|
_panState = signal({
|
|
21472
21472
|
isPanning: false,
|
|
21473
21473
|
startMousePosition: null,
|
|
21474
21474
|
startPanOffset: null
|
|
21475
|
-
}, ...(ngDevMode ? [{ debugName: "_panState" }] : []));
|
|
21475
|
+
}, ...(ngDevMode ? [{ debugName: "_panState" }] : /* istanbul ignore next */ []));
|
|
21476
21476
|
// selectionRect is now managed by DesignerSelectionService
|
|
21477
21477
|
// hasChanges is now managed by DesignerStateService
|
|
21478
21478
|
// Panel visibility state
|
|
21479
|
-
_showLeftPanel = signal(true, ...(ngDevMode ? [{ debugName: "_showLeftPanel" }] : []));
|
|
21480
|
-
_showRightPanel = signal(true, ...(ngDevMode ? [{ debugName: "_showRightPanel" }] : []));
|
|
21479
|
+
_showLeftPanel = signal(true, ...(ngDevMode ? [{ debugName: "_showLeftPanel" }] : /* istanbul ignore next */ []));
|
|
21480
|
+
_showRightPanel = signal(true, ...(ngDevMode ? [{ debugName: "_showRightPanel" }] : /* istanbul ignore next */ []));
|
|
21481
21481
|
// Dockview layout state
|
|
21482
21482
|
layoutService = inject(DesignerLayoutService);
|
|
21483
21483
|
dockviewApi = null;
|
|
21484
|
-
_dockviewReady = signal(false, ...(ngDevMode ? [{ debugName: "_dockviewReady" }] : []));
|
|
21484
|
+
_dockviewReady = signal(false, ...(ngDevMode ? [{ debugName: "_dockviewReady" }] : /* istanbul ignore next */ []));
|
|
21485
21485
|
dockviewReady = this._dockviewReady.asReadonly();
|
|
21486
21486
|
// Dockview panel visibility tracking
|
|
21487
21487
|
_panelVisibility = signal({
|
|
@@ -21493,16 +21493,16 @@ class ProcessDesignerComponent {
|
|
|
21493
21493
|
simulation: true,
|
|
21494
21494
|
settings: true,
|
|
21495
21495
|
styles: true
|
|
21496
|
-
}, ...(ngDevMode ? [{ debugName: "_panelVisibility" }] : []));
|
|
21496
|
+
}, ...(ngDevMode ? [{ debugName: "_panelVisibility" }] : /* istanbul ignore next */ []));
|
|
21497
21497
|
panelVisibility = this._panelVisibility.asReadonly();
|
|
21498
21498
|
// Dockview panel width (resizable)
|
|
21499
|
-
_dockviewPanelWidth = signal(400, ...(ngDevMode ? [{ debugName: "_dockviewPanelWidth" }] : []));
|
|
21499
|
+
_dockviewPanelWidth = signal(400, ...(ngDevMode ? [{ debugName: "_dockviewPanelWidth" }] : /* istanbul ignore next */ []));
|
|
21500
21500
|
dockviewPanelWidth = this._dockviewPanelWidth.asReadonly();
|
|
21501
21501
|
_isResizingDockview = false;
|
|
21502
21502
|
_resizeStartX = 0;
|
|
21503
21503
|
_resizeStartWidth = 400;
|
|
21504
21504
|
// View menu state
|
|
21505
|
-
_viewMenuOpen = signal(false, ...(ngDevMode ? [{ debugName: "_viewMenuOpen" }] : []));
|
|
21505
|
+
_viewMenuOpen = signal(false, ...(ngDevMode ? [{ debugName: "_viewMenuOpen" }] : /* istanbul ignore next */ []));
|
|
21506
21506
|
viewMenuOpen = this._viewMenuOpen.asReadonly();
|
|
21507
21507
|
/**
|
|
21508
21508
|
* View menu items for dropdown button
|
|
@@ -21520,7 +21520,7 @@ class ProcessDesignerComponent {
|
|
|
21520
21520
|
click: () => this.resetDockviewLayout()
|
|
21521
21521
|
});
|
|
21522
21522
|
return items;
|
|
21523
|
-
}, ...(ngDevMode ? [{ debugName: "viewMenuItems" }] : []));
|
|
21523
|
+
}, ...(ngDevMode ? [{ debugName: "viewMenuItems" }] : /* istanbul ignore next */ []));
|
|
21524
21524
|
/**
|
|
21525
21525
|
* Handle view menu item click
|
|
21526
21526
|
*/
|
|
@@ -21546,7 +21546,7 @@ class ProcessDesignerComponent {
|
|
|
21546
21546
|
* Style classes for the symbol (only used in symbol mode with dockview)
|
|
21547
21547
|
* Stored as signal for reactivity in dockview panels
|
|
21548
21548
|
*/
|
|
21549
|
-
_styleClasses = signal([], ...(ngDevMode ? [{ debugName: "_styleClasses" }] : []));
|
|
21549
|
+
_styleClasses = signal([], ...(ngDevMode ? [{ debugName: "_styleClasses" }] : /* istanbul ignore next */ []));
|
|
21550
21550
|
set styleClasses(value) {
|
|
21551
21551
|
this._styleClasses.set(value);
|
|
21552
21552
|
}
|
|
@@ -21560,7 +21560,7 @@ class ProcessDesignerComponent {
|
|
|
21560
21560
|
*/
|
|
21561
21561
|
styleClassesChange = new EventEmitter();
|
|
21562
21562
|
// Container dimensions for effective zoom calculation
|
|
21563
|
-
_containerDimensions = signal({ width: 1, height: 1 }, ...(ngDevMode ? [{ debugName: "_containerDimensions" }] : []));
|
|
21563
|
+
_containerDimensions = signal({ width: 1, height: 1 }, ...(ngDevMode ? [{ debugName: "_containerDimensions" }] : /* istanbul ignore next */ []));
|
|
21564
21564
|
resizeObserver = null;
|
|
21565
21565
|
// History service for undo/redo
|
|
21566
21566
|
historyService = inject((DesignerHistoryService));
|
|
@@ -21588,25 +21588,25 @@ class ProcessDesignerComponent {
|
|
|
21588
21588
|
position: state.screenPosition,
|
|
21589
21589
|
canvasPosition: state.canvasPosition
|
|
21590
21590
|
};
|
|
21591
|
-
}, ...(ngDevMode ? [{ debugName: "contextMenu" }] : []));
|
|
21591
|
+
}, ...(ngDevMode ? [{ debugName: "contextMenu" }] : /* istanbul ignore next */ []));
|
|
21592
21592
|
// Sidebar tab state
|
|
21593
|
-
_activeSidebarTab = signal('elements', ...(ngDevMode ? [{ debugName: "_activeSidebarTab" }] : []));
|
|
21593
|
+
_activeSidebarTab = signal('elements', ...(ngDevMode ? [{ debugName: "_activeSidebarTab" }] : /* istanbul ignore next */ []));
|
|
21594
21594
|
activeSidebarTab = this._activeSidebarTab.asReadonly();
|
|
21595
21595
|
// Path editor state
|
|
21596
|
-
_pathEditorVisible = signal(false, ...(ngDevMode ? [{ debugName: "_pathEditorVisible" }] : []));
|
|
21597
|
-
_editingPathId = signal(null, ...(ngDevMode ? [{ debugName: "_editingPathId" }] : []));
|
|
21596
|
+
_pathEditorVisible = signal(false, ...(ngDevMode ? [{ debugName: "_pathEditorVisible" }] : /* istanbul ignore next */ []));
|
|
21597
|
+
_editingPathId = signal(null, ...(ngDevMode ? [{ debugName: "_editingPathId" }] : /* istanbul ignore next */ []));
|
|
21598
21598
|
pathEditorVisible = this._pathEditorVisible.asReadonly();
|
|
21599
21599
|
// Line endpoint drag state
|
|
21600
|
-
_lineEndpointDrag = signal({ isDragging: false, lineId: null, endpoint: null }, ...(ngDevMode ? [{ debugName: "_lineEndpointDrag" }] : []));
|
|
21600
|
+
_lineEndpointDrag = signal({ isDragging: false, lineId: null, endpoint: null }, ...(ngDevMode ? [{ debugName: "_lineEndpointDrag" }] : /* istanbul ignore next */ []));
|
|
21601
21601
|
// Polyline/Polygon point drag state
|
|
21602
|
-
_polyPointDrag = signal({ isDragging: false, primitiveId: null, pointIndex: null }, ...(ngDevMode ? [{ debugName: "_polyPointDrag" }] : []));
|
|
21602
|
+
_polyPointDrag = signal({ isDragging: false, primitiveId: null, pointIndex: null }, ...(ngDevMode ? [{ debugName: "_polyPointDrag" }] : /* istanbul ignore next */ []));
|
|
21603
21603
|
// Binding editor dialog state
|
|
21604
|
-
_showBindingEditor = signal(false, ...(ngDevMode ? [{ debugName: "_showBindingEditor" }] : []));
|
|
21605
|
-
_editingBindingProperty = signal(null, ...(ngDevMode ? [{ debugName: "_editingBindingProperty" }] : []));
|
|
21604
|
+
_showBindingEditor = signal(false, ...(ngDevMode ? [{ debugName: "_showBindingEditor" }] : /* istanbul ignore next */ []));
|
|
21605
|
+
_editingBindingProperty = signal(null, ...(ngDevMode ? [{ debugName: "_editingBindingProperty" }] : /* istanbul ignore next */ []));
|
|
21606
21606
|
showBindingEditor = this._showBindingEditor.asReadonly();
|
|
21607
21607
|
editingBindingProperty = this._editingBindingProperty.asReadonly();
|
|
21608
21608
|
// Currently selected polyline point (for deletion with Delete key)
|
|
21609
|
-
_selectedPolyPoint = signal(null, ...(ngDevMode ? [{ debugName: "_selectedPolyPoint" }] : []));
|
|
21609
|
+
_selectedPolyPoint = signal(null, ...(ngDevMode ? [{ debugName: "_selectedPolyPoint" }] : /* istanbul ignore next */ []));
|
|
21610
21610
|
selectedPolyPoint = this._selectedPolyPoint.asReadonly();
|
|
21611
21611
|
/** The path data string of the currently editing path primitive */
|
|
21612
21612
|
editingPathData = computed(() => {
|
|
@@ -21617,7 +21617,7 @@ class ProcessDesignerComponent {
|
|
|
21617
21617
|
if (!primitive || primitive.type !== PrimitiveType.Path)
|
|
21618
21618
|
return '';
|
|
21619
21619
|
return primitive.config.d;
|
|
21620
|
-
}, ...(ngDevMode ? [{ debugName: "editingPathData" }] : []));
|
|
21620
|
+
}, ...(ngDevMode ? [{ debugName: "editingPathData" }] : /* istanbul ignore next */ []));
|
|
21621
21621
|
/** Check if exactly one path primitive is selected */
|
|
21622
21622
|
canEditPath = computed(() => {
|
|
21623
21623
|
const sel = this.selectionService.selection();
|
|
@@ -21627,7 +21627,7 @@ class ProcessDesignerComponent {
|
|
|
21627
21627
|
const selectedId = Array.from(sel.elements)[0];
|
|
21628
21628
|
const primitive = primitives.find(p => p.id === selectedId);
|
|
21629
21629
|
return primitive?.type === PrimitiveType.Path;
|
|
21630
|
-
}, ...(ngDevMode ? [{ debugName: "canEditPath" }] : []));
|
|
21630
|
+
}, ...(ngDevMode ? [{ debugName: "canEditPath" }] : /* istanbul ignore next */ []));
|
|
21631
21631
|
/** Check if exactly one polyline/polygon is selected */
|
|
21632
21632
|
isPolylineSelected = computed(() => {
|
|
21633
21633
|
const sel = this.selectionService.selection();
|
|
@@ -21637,7 +21637,7 @@ class ProcessDesignerComponent {
|
|
|
21637
21637
|
const selectedId = Array.from(sel.elements)[0];
|
|
21638
21638
|
const primitive = primitives.find(p => p.id === selectedId);
|
|
21639
21639
|
return primitive?.type === PrimitiveType.Polyline || primitive?.type === PrimitiveType.Polygon;
|
|
21640
|
-
}, ...(ngDevMode ? [{ debugName: "isPolylineSelected" }] : []));
|
|
21640
|
+
}, ...(ngDevMode ? [{ debugName: "isPolylineSelected" }] : /* istanbul ignore next */ []));
|
|
21641
21641
|
/** Check if a polyline point is selected and can be deleted */
|
|
21642
21642
|
canDeletePolyPoint = computed(() => {
|
|
21643
21643
|
const selected = this._selectedPolyPoint();
|
|
@@ -21650,7 +21650,7 @@ class ProcessDesignerComponent {
|
|
|
21650
21650
|
const polyPrim = primitive;
|
|
21651
21651
|
const minPoints = primitive.type === PrimitiveType.Polygon ? 3 : 2;
|
|
21652
21652
|
return polyPrim.config.points.length > minPoints;
|
|
21653
|
-
}, ...(ngDevMode ? [{ debugName: "canDeletePolyPoint" }] : []));
|
|
21653
|
+
}, ...(ngDevMode ? [{ debugName: "canDeletePolyPoint" }] : /* istanbul ignore next */ []));
|
|
21654
21654
|
// Context menu items based on current selection
|
|
21655
21655
|
contextMenuItems = computed(() => {
|
|
21656
21656
|
const hasSelection = this.hasSelection();
|
|
@@ -21684,7 +21684,7 @@ class ProcessDesignerComponent {
|
|
|
21684
21684
|
items.push({ id: 'distributeHorizontally', label: 'Distribute H', icon: '⇿', disabled: selectedCount < 3 }, { id: 'distributeVertically', label: 'Distribute V', icon: '⇵', disabled: selectedCount < 3 }, { id: 'separator6', label: '', separator: true });
|
|
21685
21685
|
items.push({ id: 'selectAll', label: 'Select All', icon: '☐', shortcut: 'Ctrl+A' });
|
|
21686
21686
|
return items;
|
|
21687
|
-
}, ...(ngDevMode ? [{ debugName: "contextMenuItems" }] : []));
|
|
21687
|
+
}, ...(ngDevMode ? [{ debugName: "contextMenuItems" }] : /* istanbul ignore next */ []));
|
|
21688
21688
|
// Public readonly signals - delegated to DesignerStateService
|
|
21689
21689
|
get mode() { return this.stateService.mode; }
|
|
21690
21690
|
get zoom() { return this.stateService.zoom; }
|
|
@@ -21705,7 +21705,7 @@ class ProcessDesignerComponent {
|
|
|
21705
21705
|
isPrimitive: state.itemType === 'primitive' || state.itemType === 'group',
|
|
21706
21706
|
isGroup: state.itemType === 'group'
|
|
21707
21707
|
};
|
|
21708
|
-
}, ...(ngDevMode ? [{ debugName: "dragState" }] : []));
|
|
21708
|
+
}, ...(ngDevMode ? [{ debugName: "dragState" }] : /* istanbul ignore next */ []));
|
|
21709
21709
|
get selectionRect() { return this.selectionService.selectionRect; }
|
|
21710
21710
|
get hasChanges() { return this.stateService.hasChanges; }
|
|
21711
21711
|
/** Clear the hasChanges flag (e.g., after external save) */
|
|
@@ -21721,7 +21721,7 @@ class ProcessDesignerComponent {
|
|
|
21721
21721
|
get zoomPercentage() { return this.stateService.zoomPercentage; }
|
|
21722
21722
|
canvasConfig = computed(() => {
|
|
21723
21723
|
return this._diagram().canvas;
|
|
21724
|
-
}, ...(ngDevMode ? [{ debugName: "canvasConfig" }] : []));
|
|
21724
|
+
}, ...(ngDevMode ? [{ debugName: "canvasConfig" }] : /* istanbul ignore next */ []));
|
|
21725
21725
|
/**
|
|
21726
21726
|
* ViewBox is now fixed to canvas dimensions.
|
|
21727
21727
|
* Zoom is handled by scaling the SVG element itself (Figma-style zoom).
|
|
@@ -21729,21 +21729,21 @@ class ProcessDesignerComponent {
|
|
|
21729
21729
|
viewBox = computed(() => {
|
|
21730
21730
|
const canvas = this.canvasConfig();
|
|
21731
21731
|
return `0 0 ${canvas.width} ${canvas.height}`;
|
|
21732
|
-
}, ...(ngDevMode ? [{ debugName: "viewBox" }] : []));
|
|
21732
|
+
}, ...(ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []));
|
|
21733
21733
|
/**
|
|
21734
21734
|
* Scaled canvas width based on zoom level.
|
|
21735
21735
|
* At zoom 2.0, a 500px canvas becomes 1000px on screen.
|
|
21736
21736
|
*/
|
|
21737
21737
|
scaledCanvasWidth = computed(() => {
|
|
21738
21738
|
return this.canvasConfig().width * this.stateService.zoom();
|
|
21739
|
-
}, ...(ngDevMode ? [{ debugName: "scaledCanvasWidth" }] : []));
|
|
21739
|
+
}, ...(ngDevMode ? [{ debugName: "scaledCanvasWidth" }] : /* istanbul ignore next */ []));
|
|
21740
21740
|
/**
|
|
21741
21741
|
* Scaled canvas height based on zoom level.
|
|
21742
21742
|
* At zoom 2.0, a 300px canvas becomes 600px on screen.
|
|
21743
21743
|
*/
|
|
21744
21744
|
scaledCanvasHeight = computed(() => {
|
|
21745
21745
|
return this.canvasConfig().height * this.stateService.zoom();
|
|
21746
|
-
}, ...(ngDevMode ? [{ debugName: "scaledCanvasHeight" }] : []));
|
|
21746
|
+
}, ...(ngDevMode ? [{ debugName: "scaledCanvasHeight" }] : /* istanbul ignore next */ []));
|
|
21747
21747
|
canvasCursor = computed(() => {
|
|
21748
21748
|
// Show grabbing cursor when actively panning
|
|
21749
21749
|
if (this._panState().isPanning) {
|
|
@@ -21754,7 +21754,7 @@ class ProcessDesignerComponent {
|
|
|
21754
21754
|
case 'connect': return 'crosshair';
|
|
21755
21755
|
default: return 'default';
|
|
21756
21756
|
}
|
|
21757
|
-
}, ...(ngDevMode ? [{ debugName: "canvasCursor" }] : []));
|
|
21757
|
+
}, ...(ngDevMode ? [{ debugName: "canvasCursor" }] : /* istanbul ignore next */ []));
|
|
21758
21758
|
// ============================================================================
|
|
21759
21759
|
// Zoom-Scaled UI Element Sizes
|
|
21760
21760
|
// These ensure UI elements (handles, strokes) maintain constant screen size
|
|
@@ -21765,44 +21765,44 @@ class ProcessDesignerComponent {
|
|
|
21765
21765
|
*/
|
|
21766
21766
|
effectiveZoom = computed(() => {
|
|
21767
21767
|
return Math.max(this.stateService.zoom(), 0.1);
|
|
21768
|
-
}, ...(ngDevMode ? [{ debugName: "effectiveZoom" }] : []));
|
|
21768
|
+
}, ...(ngDevMode ? [{ debugName: "effectiveZoom" }] : /* istanbul ignore next */ []));
|
|
21769
21769
|
/** Size of resize handles in canvas units (constant screen size) */
|
|
21770
|
-
handleSize = computed(() => 8 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "handleSize" }] : []));
|
|
21770
|
+
handleSize = computed(() => 8 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "handleSize" }] : /* istanbul ignore next */ []));
|
|
21771
21771
|
/** Offset for resize handles (half of handleSize) */
|
|
21772
|
-
handleOffset = computed(() => 4 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "handleOffset" }] : []));
|
|
21772
|
+
handleOffset = computed(() => 4 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "handleOffset" }] : /* istanbul ignore next */ []));
|
|
21773
21773
|
/** Stroke width for selection indicators */
|
|
21774
|
-
selectionStrokeWidth = computed(() => 1 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "selectionStrokeWidth" }] : []));
|
|
21774
|
+
selectionStrokeWidth = computed(() => 1 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "selectionStrokeWidth" }] : /* istanbul ignore next */ []));
|
|
21775
21775
|
/** Stroke width for selection highlights (thicker) */
|
|
21776
|
-
selectionHighlightWidth = computed(() => 1.5 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "selectionHighlightWidth" }] : []));
|
|
21776
|
+
selectionHighlightWidth = computed(() => 1.5 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "selectionHighlightWidth" }] : /* istanbul ignore next */ []));
|
|
21777
21777
|
/** Dash array for selection indicators */
|
|
21778
21778
|
selectionDashArray = computed(() => {
|
|
21779
21779
|
const scale = 1 / this.effectiveZoom();
|
|
21780
21780
|
return `${4 * scale} ${2 * scale}`;
|
|
21781
|
-
}, ...(ngDevMode ? [{ debugName: "selectionDashArray" }] : []));
|
|
21781
|
+
}, ...(ngDevMode ? [{ debugName: "selectionDashArray" }] : /* istanbul ignore next */ []));
|
|
21782
21782
|
/** Radius for connection ports and point handles */
|
|
21783
|
-
portRadius = computed(() => 5 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "portRadius" }] : []));
|
|
21783
|
+
portRadius = computed(() => 5 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "portRadius" }] : /* istanbul ignore next */ []));
|
|
21784
21784
|
/** Padding around selection boxes */
|
|
21785
|
-
selectionPadding = computed(() => 2 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "selectionPadding" }] : []));
|
|
21785
|
+
selectionPadding = computed(() => 2 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "selectionPadding" }] : /* istanbul ignore next */ []));
|
|
21786
21786
|
/** Stroke width for alignment guide lines */
|
|
21787
|
-
guideStrokeWidth = computed(() => 1 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "guideStrokeWidth" }] : []));
|
|
21787
|
+
guideStrokeWidth = computed(() => 1 / this.effectiveZoom(), ...(ngDevMode ? [{ debugName: "guideStrokeWidth" }] : /* istanbul ignore next */ []));
|
|
21788
21788
|
/** Active alignment guides from the alignment guide service */
|
|
21789
21789
|
alignmentGuides = this.alignmentGuideService.guides;
|
|
21790
21790
|
selectedElements = computed(() => {
|
|
21791
21791
|
return this.selectionService.getSelectedElements(this._diagram());
|
|
21792
|
-
}, ...(ngDevMode ? [{ debugName: "selectedElements" }] : []));
|
|
21792
|
+
}, ...(ngDevMode ? [{ debugName: "selectedElements" }] : /* istanbul ignore next */ []));
|
|
21793
21793
|
selectedConnections = computed(() => {
|
|
21794
21794
|
return this.selectionService.getSelectedConnections(this._diagram());
|
|
21795
|
-
}, ...(ngDevMode ? [{ debugName: "selectedConnections" }] : []));
|
|
21795
|
+
}, ...(ngDevMode ? [{ debugName: "selectedConnections" }] : /* istanbul ignore next */ []));
|
|
21796
21796
|
selectedPrimitives = computed(() => {
|
|
21797
21797
|
return this.selectionService.getSelectedPrimitives(this._diagram());
|
|
21798
|
-
}, ...(ngDevMode ? [{ debugName: "selectedPrimitives" }] : []));
|
|
21798
|
+
}, ...(ngDevMode ? [{ debugName: "selectedPrimitives" }] : /* istanbul ignore next */ []));
|
|
21799
21799
|
/**
|
|
21800
21800
|
* ID of the first selected primitive (for animations panel).
|
|
21801
21801
|
*/
|
|
21802
21802
|
firstSelectedPrimitiveId = computed(() => {
|
|
21803
21803
|
const primitives = this.selectedPrimitives();
|
|
21804
21804
|
return primitives.length > 0 ? primitives[0].id : '';
|
|
21805
|
-
}, ...(ngDevMode ? [{ debugName: "firstSelectedPrimitiveId" }] : []));
|
|
21805
|
+
}, ...(ngDevMode ? [{ debugName: "firstSelectedPrimitiveId" }] : /* istanbul ignore next */ []));
|
|
21806
21806
|
/**
|
|
21807
21807
|
* Animations of the first selected primitive (for animations panel).
|
|
21808
21808
|
*/
|
|
@@ -21811,7 +21811,7 @@ class ProcessDesignerComponent {
|
|
|
21811
21811
|
if (primitives.length === 0)
|
|
21812
21812
|
return [];
|
|
21813
21813
|
return primitives[0].animations ?? [];
|
|
21814
|
-
}, ...(ngDevMode ? [{ debugName: "firstSelectedPrimitiveAnimations" }] : []));
|
|
21814
|
+
}, ...(ngDevMode ? [{ debugName: "firstSelectedPrimitiveAnimations" }] : /* istanbul ignore next */ []));
|
|
21815
21815
|
/**
|
|
21816
21816
|
* Primitive types that support animations.
|
|
21817
21817
|
* Image and text primitives don't have animation rendering support.
|
|
@@ -21828,7 +21828,7 @@ class ProcessDesignerComponent {
|
|
|
21828
21828
|
if (primitives.length === 0)
|
|
21829
21829
|
return false;
|
|
21830
21830
|
return this.animationSupportedTypes.has(primitives[0].type);
|
|
21831
|
-
}, ...(ngDevMode ? [{ debugName: "firstSelectedPrimitiveSupportsAnimations" }] : []));
|
|
21831
|
+
}, ...(ngDevMode ? [{ debugName: "firstSelectedPrimitiveSupportsAnimations" }] : /* istanbul ignore next */ []));
|
|
21832
21832
|
/**
|
|
21833
21833
|
* Available transform properties for animation property linking.
|
|
21834
21834
|
* In diagram mode, returns diagram-level properties.
|
|
@@ -21840,7 +21840,7 @@ class ProcessDesignerComponent {
|
|
|
21840
21840
|
}
|
|
21841
21841
|
// Use the signal directly for reactive tracking
|
|
21842
21842
|
return this._transformPropertiesInput();
|
|
21843
|
-
}, ...(ngDevMode ? [{ debugName: "availableTransformProperties" }] : []));
|
|
21843
|
+
}, ...(ngDevMode ? [{ debugName: "availableTransformProperties" }] : /* istanbul ignore next */ []));
|
|
21844
21844
|
/**
|
|
21845
21845
|
* Effective property bindings for the current mode.
|
|
21846
21846
|
* In diagram mode, returns diagram-level bindings.
|
|
@@ -21851,7 +21851,7 @@ class ProcessDesignerComponent {
|
|
|
21851
21851
|
return this._diagramPropertyBindings();
|
|
21852
21852
|
}
|
|
21853
21853
|
return this._propertyBindings();
|
|
21854
|
-
}, ...(ngDevMode ? [{ debugName: "effectivePropertyBindings" }] : []));
|
|
21854
|
+
}, ...(ngDevMode ? [{ debugName: "effectivePropertyBindings" }] : /* istanbul ignore next */ []));
|
|
21855
21855
|
/**
|
|
21856
21856
|
* Effective simulation values for the current mode.
|
|
21857
21857
|
* In diagram mode, returns diagram-level simulation values.
|
|
@@ -21862,7 +21862,7 @@ class ProcessDesignerComponent {
|
|
|
21862
21862
|
return this._diagramSimulationValues();
|
|
21863
21863
|
}
|
|
21864
21864
|
return this._simulationPropertyValues();
|
|
21865
|
-
}, ...(ngDevMode ? [{ debugName: "effectiveSimulationValues" }] : []));
|
|
21865
|
+
}, ...(ngDevMode ? [{ debugName: "effectiveSimulationValues" }] : /* istanbul ignore next */ []));
|
|
21866
21866
|
/**
|
|
21867
21867
|
* Computed animation enabled states.
|
|
21868
21868
|
* Reactively evaluates animation bindings when simulation values or bindings change.
|
|
@@ -21914,7 +21914,7 @@ class ProcessDesignerComponent {
|
|
|
21914
21914
|
}
|
|
21915
21915
|
}
|
|
21916
21916
|
return states;
|
|
21917
|
-
}, ...(ngDevMode ? [{ debugName: "animationEnabledStates" }] : []));
|
|
21917
|
+
}, ...(ngDevMode ? [{ debugName: "animationEnabledStates" }] : /* istanbul ignore next */ []));
|
|
21918
21918
|
/**
|
|
21919
21919
|
* Computed property values for symbol instances.
|
|
21920
21920
|
* Evaluates "Pass to child property" bindings and returns a map of
|
|
@@ -21972,7 +21972,7 @@ class ProcessDesignerComponent {
|
|
|
21972
21972
|
}
|
|
21973
21973
|
}
|
|
21974
21974
|
return result;
|
|
21975
|
-
}, ...(ngDevMode ? [{ debugName: "symbolInstancePropertyValues" }] : []));
|
|
21975
|
+
}, ...(ngDevMode ? [{ debugName: "symbolInstancePropertyValues" }] : /* istanbul ignore next */ []));
|
|
21976
21976
|
/**
|
|
21977
21977
|
* Computed direct effects for symbol instances.
|
|
21978
21978
|
* Evaluates bindings that target symbol instances with direct effects like fillLevel, style changes, etc.
|
|
@@ -22030,7 +22030,7 @@ class ProcessDesignerComponent {
|
|
|
22030
22030
|
}
|
|
22031
22031
|
}
|
|
22032
22032
|
return result;
|
|
22033
|
-
}, ...(ngDevMode ? [{ debugName: "symbolInstanceDirectEffects" }] : []));
|
|
22033
|
+
}, ...(ngDevMode ? [{ debugName: "symbolInstanceDirectEffects" }] : /* istanbul ignore next */ []));
|
|
22034
22034
|
/**
|
|
22035
22035
|
* Available path primitives for motion animation.
|
|
22036
22036
|
* Extracts path data from lines, polylines, and path primitives.
|
|
@@ -22047,14 +22047,14 @@ class ProcessDesignerComponent {
|
|
|
22047
22047
|
pathData: this.extractPathData(p)
|
|
22048
22048
|
}))
|
|
22049
22049
|
.filter(p => p.pathData); // Only include primitives with valid path data
|
|
22050
|
-
}, ...(ngDevMode ? [{ debugName: "availablePathPrimitives" }] : []));
|
|
22050
|
+
}, ...(ngDevMode ? [{ debugName: "availablePathPrimitives" }] : /* istanbul ignore next */ []));
|
|
22051
22051
|
/**
|
|
22052
22052
|
* All elements in their actual z-order (no sorting by selection).
|
|
22053
22053
|
* Selection is shown via the overlay layer, not by rendering order.
|
|
22054
22054
|
*/
|
|
22055
22055
|
orderedElements = computed(() => {
|
|
22056
22056
|
return this._diagram().elements;
|
|
22057
|
-
}, ...(ngDevMode ? [{ debugName: "orderedElements" }] : []));
|
|
22057
|
+
}, ...(ngDevMode ? [{ debugName: "orderedElements" }] : /* istanbul ignore next */ []));
|
|
22058
22058
|
/**
|
|
22059
22059
|
* IDs of children that belong to animated groups.
|
|
22060
22060
|
* These are rendered inside the group's animation wrapper, not separately.
|
|
@@ -22071,7 +22071,7 @@ class ProcessDesignerComponent {
|
|
|
22071
22071
|
}
|
|
22072
22072
|
}
|
|
22073
22073
|
return childIds;
|
|
22074
|
-
}, ...(ngDevMode ? [{ debugName: "childrenOfAnimatedGroups" }] : []));
|
|
22074
|
+
}, ...(ngDevMode ? [{ debugName: "childrenOfAnimatedGroups" }] : /* istanbul ignore next */ []));
|
|
22075
22075
|
/**
|
|
22076
22076
|
* All primitives in their actual z-order (no sorting by selection).
|
|
22077
22077
|
* Selection is shown via the overlay layer, not by rendering order.
|
|
@@ -22093,7 +22093,7 @@ class ProcessDesignerComponent {
|
|
|
22093
22093
|
}
|
|
22094
22094
|
}
|
|
22095
22095
|
return primitives;
|
|
22096
|
-
}, ...(ngDevMode ? [{ debugName: "orderedPrimitives" }] : []));
|
|
22096
|
+
}, ...(ngDevMode ? [{ debugName: "orderedPrimitives" }] : /* istanbul ignore next */ []));
|
|
22097
22097
|
/**
|
|
22098
22098
|
* All symbol instances in their z-order.
|
|
22099
22099
|
* Excludes symbols that are children of animated groups.
|
|
@@ -22105,17 +22105,17 @@ class ProcessDesignerComponent {
|
|
|
22105
22105
|
return symbols.filter(s => !excludeIds.has(s.id));
|
|
22106
22106
|
}
|
|
22107
22107
|
return symbols;
|
|
22108
|
-
}, ...(ngDevMode ? [{ debugName: "orderedSymbols" }] : []));
|
|
22108
|
+
}, ...(ngDevMode ? [{ debugName: "orderedSymbols" }] : /* istanbul ignore next */ []));
|
|
22109
22109
|
/**
|
|
22110
22110
|
* Currently selected symbol instances.
|
|
22111
22111
|
*/
|
|
22112
22112
|
selectedSymbols = computed(() => {
|
|
22113
22113
|
return this.selectionService.getSelectedSymbols(this._diagram());
|
|
22114
|
-
}, ...(ngDevMode ? [{ debugName: "selectedSymbols" }] : []));
|
|
22114
|
+
}, ...(ngDevMode ? [{ debugName: "selectedSymbols" }] : /* istanbul ignore next */ []));
|
|
22115
22115
|
/**
|
|
22116
22116
|
* Cached symbol definitions for rendering (mapped by rtId).
|
|
22117
22117
|
*/
|
|
22118
|
-
_symbolDefinitions = signal(new Map(), ...(ngDevMode ? [{ debugName: "_symbolDefinitions" }] : []));
|
|
22118
|
+
_symbolDefinitions = signal(new Map(), ...(ngDevMode ? [{ debugName: "_symbolDefinitions" }] : /* istanbul ignore next */ []));
|
|
22119
22119
|
/**
|
|
22120
22120
|
* Public accessor for symbol definitions map (used by binding editor dialog).
|
|
22121
22121
|
*/
|
|
@@ -27241,8 +27241,8 @@ class ProcessDesignerComponent {
|
|
|
27241
27241
|
return '';
|
|
27242
27242
|
}
|
|
27243
27243
|
}
|
|
27244
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
27245
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
27244
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
27245
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ProcessDesignerComponent, isStandalone: true, selector: "mm-process-designer", inputs: { diagramConfig: "diagramConfig", editorMode: "editorMode", showSaveButtons: "showSaveButtons", transformProperties: "transformProperties", propertyBindings: "propertyBindings", simulationPropertyValues: "simulationPropertyValues", useDockview: "useDockview", symbolSettings: "symbolSettings", styleClasses: "styleClasses" }, outputs: { diagramChange: "diagramChange", saveRequest: "saveRequest", transformPropertiesChange: "transformPropertiesChange", simulationValueChange: "simulationValueChange", simulationReset: "simulationReset", symbolSettingsChange: "symbolSettingsChange", styleClassesChange: "styleClassesChange" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, providers: [
|
|
27246
27246
|
DesignerDiagramService,
|
|
27247
27247
|
DesignerSelectionService,
|
|
27248
27248
|
DesignerClipboardService,
|
|
@@ -27264,7 +27264,7 @@ class ProcessDesignerComponent {
|
|
|
27264
27264
|
DesignerAlignmentGuideService
|
|
27265
27265
|
], viewQueries: [{ propertyName: "canvasContainerRef", first: true, predicate: ["canvasContainer"], descendants: true }, { propertyName: "svgFileInputRef", first: true, predicate: ["svgFileInput"], descendants: true }], ngImport: i0, template: "<div class=\"process-designer\" tabindex=\"0\" data-testid=\"process-designer\">\n <!-- Toolbar -->\n <kendo-toolbar class=\"designer-toolbar\">\n @if (showSaveButtons) {\n <kendo-toolbar-buttongroup>\n <kendo-toolbar-button [svgIcon]=\"saveIcon\" (click)=\"save()\" title=\"Save (Ctrl+S)\" [disabled]=\"!hasChanges()\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"fileTxtIcon\" (click)=\"saveAs()\" title=\"Save As...\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"pencilIcon\" (click)=\"rename()\" title=\"Rename...\"></kendo-toolbar-button>\n </kendo-toolbar-buttongroup>\n <kendo-toolbar-separator></kendo-toolbar-separator>\n }\n\n <kendo-toolbar-buttongroup>\n <kendo-toolbar-button [svgIcon]=\"undoIcon\" (click)=\"undo()\" title=\"Undo (Ctrl+Z)\" [disabled]=\"!canUndo()\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"redoIcon\" (click)=\"redo()\" title=\"Redo (Ctrl+Shift+Z)\" [disabled]=\"!canRedo()\"></kendo-toolbar-button>\n </kendo-toolbar-buttongroup>\n\n <kendo-toolbar-separator></kendo-toolbar-separator>\n\n <kendo-toolbar-buttongroup>\n <kendo-toolbar-button [svgIcon]=\"arrowsNoRepeatIcon\"\n [toggleable]=\"true\"\n [selected]=\"mode() === 'select'\"\n (click)=\"setMode('select')\"\n title=\"Select tool (V)\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"handIcon\"\n [toggleable]=\"true\"\n [selected]=\"mode() === 'pan'\"\n (click)=\"setMode('pan')\"\n title=\"Pan tool (H)\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"linkIcon\"\n [toggleable]=\"true\"\n [selected]=\"mode() === 'connect'\"\n (click)=\"setMode('connect')\"\n title=\"Connect tool (C)\"></kendo-toolbar-button>\n </kendo-toolbar-buttongroup>\n\n <kendo-toolbar-separator></kendo-toolbar-separator>\n\n <kendo-toolbar-buttongroup>\n <kendo-toolbar-button [svgIcon]=\"zoomInIcon\" (click)=\"zoomIn()\" title=\"Zoom in\"></kendo-toolbar-button>\n <span class=\"zoom-level\">{{ zoomPercentage() }}%</span>\n <kendo-toolbar-button [svgIcon]=\"zoomOutIcon\" (click)=\"zoomOut()\" title=\"Zoom out\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"zoomBestFitIcon\" (click)=\"fitToView()\" title=\"Fit content to view\"></kendo-toolbar-button>\n </kendo-toolbar-buttongroup>\n\n <kendo-toolbar-separator></kendo-toolbar-separator>\n\n <kendo-toolbar-buttongroup>\n <kendo-toolbar-button [svgIcon]=\"gridIcon\"\n [toggleable]=\"true\"\n [selected]=\"showGrid()\"\n (selectedChange)=\"toggleGrid()\"\n title=\"Show/hide grid\"></kendo-toolbar-button>\n <kendo-toolbar-button text=\"\u2316\"\n [toggleable]=\"true\"\n [selected]=\"snapToGrid()\"\n (selectedChange)=\"toggleSnapToGrid()\"\n title=\"Snap to grid\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"eyeIcon\"\n [toggleable]=\"true\"\n [selected]=\"showElementNames()\"\n (selectedChange)=\"toggleElementNames()\"\n title=\"Show element names\"></kendo-toolbar-button>\n </kendo-toolbar-buttongroup>\n\n <kendo-toolbar-separator></kendo-toolbar-separator>\n\n <kendo-toolbar-button [svgIcon]=\"uploadIcon\" (click)=\"onImportSvgClick()\" title=\"Import SVG file\"></kendo-toolbar-button>\n <input #svgFileInput\n type=\"file\"\n accept=\".svg,image/svg+xml\"\n style=\"display: none\"\n (change)=\"onSvgFileSelected($event)\"/>\n\n <kendo-toolbar-spacer></kendo-toolbar-spacer>\n\n <kendo-toolbar-buttongroup>\n <kendo-toolbar-button [svgIcon]=\"groupIcon\" (click)=\"groupSelected()\" title=\"Group (Ctrl+G)\"\n [disabled]=\"!canGroup()\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"ungroupIcon\" (click)=\"ungroupSelected()\" title=\"Ungroup (Ctrl+Shift+G)\"\n [disabled]=\"!canUngroup()\"></kendo-toolbar-button>\n </kendo-toolbar-buttongroup>\n\n <kendo-toolbar-separator></kendo-toolbar-separator>\n\n <kendo-toolbar-button [svgIcon]=\"trashIcon\" (click)=\"deleteSelected()\" title=\"Delete selected\"\n [disabled]=\"!hasSelection()\"></kendo-toolbar-button>\n\n <kendo-toolbar-separator></kendo-toolbar-separator>\n\n @if (useDockview) {\n <!-- View menu for dockview panel controls -->\n <kendo-toolbar-dropdownbutton\n [svgIcon]=\"eyeIcon\"\n [data]=\"viewMenuItems()\"\n title=\"View panels\"\n (itemClick)=\"onViewMenuItemClick($event)\">\n </kendo-toolbar-dropdownbutton>\n } @else {\n <!-- Legacy panel toggle buttons -->\n <kendo-toolbar-buttongroup>\n <kendo-toolbar-button [svgIcon]=\"menuIcon\"\n [toggleable]=\"true\"\n [selected]=\"showLeftPanel()\"\n (selectedChange)=\"toggleLeftPanel()\"\n title=\"Toggle element palette (Alt+1)\"></kendo-toolbar-button>\n <kendo-toolbar-button [svgIcon]=\"gearsIcon\"\n [toggleable]=\"true\"\n [selected]=\"showRightPanel()\"\n (selectedChange)=\"toggleRightPanel()\"\n title=\"Toggle property inspector (Alt+2)\"></kendo-toolbar-button>\n </kendo-toolbar-buttongroup>\n }\n </kendo-toolbar>\n\n <!-- Main content area -->\n <div class=\"designer-content\" [class.dockview-enabled]=\"useDockview\"\n [style.display]=\"useDockview ? 'flex' : null\"\n [style.height]=\"useDockview ? '100%' : null\"\n [style.minHeight]=\"useDockview ? '0' : null\">\n <!-- Dockview panels container (when dockview enabled) -->\n @if (useDockview) {\n <div class=\"dockview-panels-container\"\n [style.width.px]=\"dockviewPanelWidth()\"\n [style.flex]=\"'0 0 ' + dockviewPanelWidth() + 'px'\">\n <mm-dockview\n class=\"designer-dockview\"\n [components]=\"panelComponents\"\n (ready)=\"onDockviewReady($event)\">\n </mm-dockview>\n </div>\n <!-- Resize handle for dockview panels -->\n <div class=\"dockview-resize-handle\"\n (mousedown)=\"onDockviewResizeStart($event)\"\n title=\"Drag to resize panels\">\n </div>\n }\n\n <!-- Legacy left sidebar (when dockview disabled) -->\n @if (!useDockview) {\n @if (showLeftPanel()) {\n <div class=\"designer-sidebar\">\n <div class=\"sidebar-header\">\n <div class=\"sidebar-tabs\">\n <button class=\"sidebar-tab\"\n [class.active]=\"activeSidebarTab() === 'elements'\"\n (click)=\"setActiveSidebarTab('elements')\">\n {{ editorMode === 'symbol' ? 'Primitives' : 'Elements' }}\n </button>\n <button class=\"sidebar-tab\"\n [class.active]=\"activeSidebarTab() === 'symbols'\"\n (click)=\"setActiveSidebarTab('symbols')\">\n Symbols\n </button>\n </div>\n <button class=\"sidebar-close\" (click)=\"toggleLeftPanel()\" title=\"Close panel\">\u00D7</button>\n </div>\n <div class=\"sidebar-content\">\n @if (activeSidebarTab() === 'elements') {\n <mm-element-palette\n (elementDragStart)=\"onPaletteDragStart($event)\"\n (elementDragEnd)=\"onPaletteDragEnd($event)\">\n </mm-element-palette>\n } @else {\n <mm-symbol-library-panel\n (symbolDragStart)=\"onSymbolDragStart($event)\"\n (symbolDragEnd)=\"onSymbolDragEnd()\">\n </mm-symbol-library-panel>\n }\n </div>\n </div>\n } @else {\n <div class=\"sidebar-collapsed left\" (click)=\"toggleLeftPanel()\" title=\"Show element palette\">\n <span class=\"collapsed-icon\">\u2630</span>\n </div>\n }\n } <!-- End of legacy left sidebar -->\n\n <!-- Canvas area (always visible) -->\n <div class=\"designer-canvas-container\"\n #canvasContainer\n data-testid=\"designer-canvas-container\"\n (mousedown)=\"onCanvasMouseDown($event)\"\n (mousemove)=\"onCanvasMouseMove($event)\"\n (mouseup)=\"onCanvasMouseUp($event)\"\n (wheel)=\"onCanvasWheel($event)\"\n (dragover)=\"onCanvasDragOver($event)\"\n (drop)=\"onCanvasDrop($event)\"\n (contextmenu)=\"onCanvasContextMenu($event)\">\n <svg class=\"designer-canvas\"\n data-testid=\"designer-canvas\"\n [attr.width]=\"scaledCanvasWidth()\"\n [attr.height]=\"scaledCanvasHeight()\"\n [attr.viewBox]=\"viewBox()\"\n preserveAspectRatio=\"xMinYMin meet\"\n [style.cursor]=\"canvasCursor()\"\n (mousedown)=\"onSvgMouseDown($event)\">\n\n <!-- Background (rendered first, behind everything) -->\n <!-- Canvas background color is set via CSS variable --designer-canvas-color for theme support -->\n <rect x=\"0\" y=\"0\"\n [attr.width]=\"canvasConfig().width\"\n [attr.height]=\"canvasConfig().height\"\n class=\"canvas-background\"\n pointer-events=\"none\"/>\n\n <!-- Grid (on top of background) -->\n <!-- Grid color is set via CSS variable --designer-grid-color for theme support -->\n @if (showGrid()) {\n <defs>\n <pattern id=\"designerGrid\" [attr.width]=\"gridSize()\" [attr.height]=\"gridSize()\"\n patternUnits=\"userSpaceOnUse\">\n <path [attr.d]=\"'M ' + gridSize() + ' 0 L 0 0 0 ' + gridSize()\"\n fill=\"none\" class=\"designer-grid-line\" stroke-width=\"0.5\"/>\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\"\n [attr.width]=\"canvasConfig().width\"\n [attr.height]=\"canvasConfig().height\"\n fill=\"url(#designerGrid)\"\n pointer-events=\"none\"/>\n }\n\n <!-- Invisible click capture layer (for clicking on empty canvas) -->\n <rect x=\"0\" y=\"0\"\n [attr.width]=\"canvasConfig().width\"\n [attr.height]=\"canvasConfig().height\"\n fill=\"transparent\"\n class=\"canvas-click-layer\"/>\n\n <!-- Connections (only in diagram mode) -->\n @if (editorMode === 'diagram') {\n @for (connection of diagram().connections; track connection.id) {\n <g class=\"connection\"\n [class.selected]=\"isConnectionSelected(connection.id)\"\n (mousedown)=\"onConnectionClick($event, connection)\">\n <path [attr.d]=\"getConnectionPath(connection)\"\n [attr.stroke]=\"connection.style.strokeColor\"\n [attr.stroke-width]=\"isConnectionSelected(connection.id) ? connection.style.strokeWidth + 2 : connection.style.strokeWidth\"\n fill=\"none\"\n stroke-linecap=\"round\"/>\n </g>\n }\n\n <!-- Elements in their actual z-order -->\n @for (element of orderedElements(); track element.id) {\n <g class=\"element\"\n [class.selected]=\"isElementSelected(element.id)\"\n [class.dragging]=\"dragState().isDragging && dragState().elementId === element.id\"\n [attr.transform]=\"getElementTransform(element)\"\n (mousedown)=\"onElementMouseDown($event, element)\"\n (contextmenu)=\"onElementContextMenu($event, element)\">\n\n <!-- Invisible hit area (larger than visual for easier clicking) -->\n <rect x=\"-4\" y=\"-4\"\n [attr.width]=\"element.size.width + 8\"\n [attr.height]=\"element.size.height + 8\"\n fill=\"transparent\"\n class=\"element-hit-area\"/>\n\n <!-- Element visual (simplified for designer) -->\n <rect x=\"0\" y=\"0\"\n [attr.width]=\"element.size.width\"\n [attr.height]=\"element.size.height\"\n [attr.fill]=\"getElementFill(element)\"\n [attr.stroke]=\"isElementSelected(element.id) ? '#1976d2' : getElementStroke(element)\"\n [attr.stroke-width]=\"isElementSelected(element.id) ? 2 : (element.style?.strokeWidth ?? 1)\"\n [attr.rx]=\"getElementRadius(element)\"\n [attr.opacity]=\"element.style?.opacity ?? 1\"\n pointer-events=\"none\"/>\n\n <!-- Element type icon/label -->\n <text class=\"element-label\"\n [attr.x]=\"element.size.width / 2\"\n [attr.y]=\"element.size.height / 2\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n font-size=\"10\"\n fill=\"#666\">\n {{ getElementTypeLabel(element) }}\n </text>\n\n <!-- Element name -->\n @if (showElementNames()) {\n <text class=\"element-label\"\n [attr.x]=\"element.size.width / 2\"\n [attr.y]=\"element.size.height + 10\"\n text-anchor=\"middle\">\n {{ element.name }}\n </text>\n }\n\n <!-- Selection handles (zoom-scaled) -->\n @if (isElementSelected(element.id)) {\n <!-- Corner resize handles -->\n <rect class=\"resize-handle nw\" [attr.x]=\"-handleOffset()\" [attr.y]=\"-handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onResizeHandleMouseDown($event, element, 'nw')\"/>\n <rect class=\"resize-handle ne\" [attr.x]=\"element.size.width - handleOffset()\" [attr.y]=\"-handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onResizeHandleMouseDown($event, element, 'ne')\"/>\n <rect class=\"resize-handle sw\" [attr.x]=\"-handleOffset()\" [attr.y]=\"element.size.height - handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onResizeHandleMouseDown($event, element, 'sw')\"/>\n <rect class=\"resize-handle se\" [attr.x]=\"element.size.width - handleOffset()\" [attr.y]=\"element.size.height - handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onResizeHandleMouseDown($event, element, 'se')\"/>\n\n <!-- Connection ports -->\n <circle class=\"connection-port\" [attr.cx]=\"element.size.width / 2\" cy=\"0\" [attr.r]=\"portRadius()\" fill=\"#4caf50\"/>\n <circle class=\"connection-port\" [attr.cx]=\"element.size.width / 2\" [attr.cy]=\"element.size.height\" [attr.r]=\"portRadius()\" fill=\"#4caf50\"/>\n <circle class=\"connection-port\" cx=\"0\" [attr.cy]=\"element.size.height / 2\" [attr.r]=\"portRadius()\" fill=\"#4caf50\"/>\n <circle class=\"connection-port\" [attr.cx]=\"element.size.width\" [attr.cy]=\"element.size.height / 2\" [attr.r]=\"portRadius()\" fill=\"#4caf50\"/>\n }\n </g>\n }\n }\n\n <!-- Primitives in their actual z-order -->\n @for (primitive of orderedPrimitives(); track primitive.id) {\n <g class=\"primitive\"\n [attr.data-testid]=\"'primitive-' + primitive.type + '-' + primitive.id\"\n [class.selected]=\"isPrimitiveSelected(primitive.id)\"\n [class.dragging]=\"dragState().isDragging && dragState().elementId === primitive.id\"\n [attr.transform]=\"getPrimitiveTransform(primitive)\"\n (mousedown)=\"onPrimitiveMouseDown($event, primitive)\"\n (dblclick)=\"onPrimitiveDoubleClick(primitive)\"\n (contextmenu)=\"onPrimitiveContextMenu($event, primitive)\">\n\n <!-- Render based on primitive type -->\n <!-- Resolve style once for this primitive (class + inline merged) -->\n @let rs = resolveStyle(primitive);\n\n @switch (primitive.type) {\n @case ('rectangle') {\n @if (primitiveHasAnimations(primitive) || hasFillLevel(primitive)) {\n <!-- Rectangle with animations or fillLevel - use innerHTML for clip-path support -->\n <g [innerHTML]=\"getPrimitiveWithAnimationsSvg(primitive)\"></g>\n } @else {\n <rect [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n [attr.fill]=\"rs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"rs.fill?.opacity ?? 1\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : (rs.stroke?.color ?? 'none')\"\n [attr.stroke-opacity]=\"rs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? selectionHighlightWidth() : (rs.stroke?.width ?? 1)\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(rs.stroke?.dashArray)\"\n [attr.rx]=\"$any(primitive).config.cornerRadiusX ?? $any(primitive).config.cornerRadius ?? 0\"\n [attr.ry]=\"$any(primitive).config.cornerRadiusY ?? $any(primitive).config.cornerRadius ?? 0\"/>\n }\n }\n @case ('ellipse') {\n @if (primitiveHasAnimations(primitive)) {\n <!-- Ellipse with animations -->\n <g [innerHTML]=\"getPrimitiveWithAnimationsSvg(primitive)\"></g>\n } @else {\n <ellipse [attr.cx]=\"primitive.position.x\"\n [attr.cy]=\"primitive.position.y\"\n [attr.rx]=\"$any(primitive).config.radiusX\"\n [attr.ry]=\"$any(primitive).config.radiusY\"\n [attr.fill]=\"rs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"rs.fill?.opacity ?? 1\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : (rs.stroke?.color ?? 'none')\"\n [attr.stroke-opacity]=\"rs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? selectionHighlightWidth() : (rs.stroke?.width ?? 1)\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(rs.stroke?.dashArray)\"/>\n }\n }\n @case ('line') {\n @if (primitiveHasAnimations(primitive)) {\n <!-- Line with animations -->\n <g [innerHTML]=\"getPrimitiveWithAnimationsSvg(primitive)\"></g>\n } @else {\n <line [attr.x1]=\"$any(primitive).config.start.x + primitive.position.x\"\n [attr.y1]=\"$any(primitive).config.start.y + primitive.position.y\"\n [attr.x2]=\"$any(primitive).config.end.x + primitive.position.x\"\n [attr.y2]=\"$any(primitive).config.end.y + primitive.position.y\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : (rs.stroke?.color ?? 'none')\"\n [attr.stroke-opacity]=\"rs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? 3 : (rs.stroke?.width ?? 2)\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(rs.stroke?.dashArray)\"/>\n }\n }\n @case ('path') {\n @if (primitiveHasAnimations(primitive)) {\n <!-- Path with animations -->\n <g [innerHTML]=\"getPrimitiveWithAnimationsSvg(primitive)\"></g>\n } @else {\n <path [attr.d]=\"$any(primitive).config.d\"\n [attr.transform]=\"'translate(' + primitive.position.x + ',' + primitive.position.y + ')'\"\n [attr.fill]=\"rs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"rs.fill?.opacity ?? 1\"\n [attr.fill-rule]=\"$any(primitive).config.fillRule\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : (rs.stroke?.color ?? 'none')\"\n [attr.stroke-opacity]=\"rs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? selectionHighlightWidth() : (rs.stroke?.width ?? 1)\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(rs.stroke?.dashArray)\"/>\n }\n }\n @case ('polygon') {\n @if (primitiveHasAnimations(primitive)) {\n <!-- Polygon with animations -->\n <g [innerHTML]=\"getPrimitiveWithAnimationsSvg(primitive)\"></g>\n } @else {\n <polygon [attr.points]=\"getPolygonPoints($any(primitive))\"\n [attr.fill]=\"rs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"rs.fill?.opacity ?? 1\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : (rs.stroke?.color ?? 'none')\"\n [attr.stroke-opacity]=\"rs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? selectionHighlightWidth() : (rs.stroke?.width ?? 1)\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(rs.stroke?.dashArray)\"/>\n }\n }\n @case ('polyline') {\n @if (primitiveHasAnimations(primitive)) {\n <!-- Polyline with animations -->\n <g [innerHTML]=\"getPrimitiveWithAnimationsSvg(primitive)\"></g>\n } @else {\n <polyline [attr.points]=\"getPolylinePoints($any(primitive))\"\n fill=\"none\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : (rs.stroke?.color ?? '#333')\"\n [attr.stroke-opacity]=\"rs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? 3 : (rs.stroke?.width ?? 2)\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(rs.stroke?.dashArray)\"/>\n }\n }\n @case ('text') {\n <text [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.fill]=\"$any(primitive).config.textStyle?.color ?? '#333'\"\n [attr.font-size]=\"$any(primitive).config.textStyle?.fontSize ?? 14\"\n [attr.font-family]=\"$any(primitive).config.textStyle?.fontFamily ?? 'Arial, sans-serif'\">\n {{ $any(primitive).config.content }}\n </text>\n }\n @case ('image') {\n @if ($any(primitive).config.src) {\n <!-- Render actual image when src is available -->\n <image [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n [attr.href]=\"$any(primitive).config.src\"\n [attr.preserveAspectRatio]=\"$any(primitive).config.preserveAspectRatio !== false ? 'xMidYMid meet' : 'none'\"/>\n <!-- Selection border overlay -->\n @if (isPrimitiveSelected(primitive.id)) {\n <rect [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n fill=\"none\"\n stroke=\"#1976d2\"\n [attr.stroke-width]=\"selectionHighlightWidth()\"\n stroke-dasharray=\"4 2\"/>\n }\n } @else {\n <!-- Placeholder when no src -->\n <rect [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n fill=\"#f5f5f5\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : '#ccc'\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? selectionHighlightWidth() : 1\"\n stroke-dasharray=\"4 2\"/>\n <text class=\"primitive-label\"\n [attr.x]=\"primitive.position.x + $any(primitive).config.width / 2\"\n [attr.y]=\"primitive.position.y + $any(primitive).config.height / 2\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n font-size=\"10\"\n fill=\"#999\">Image</text>\n }\n }\n @case ('group') {\n <!-- Groups render their fill/stroke if defined, children render separately -->\n @if (primitiveHasAnimations(primitive)) {\n <!-- Group with animations -->\n <g [innerHTML]=\"getPrimitiveWithAnimationsSvg(primitive)\"></g>\n } @else {\n @let groupBounds = getPrimitiveBoundingBox(primitive);\n <rect [attr.x]=\"groupBounds.x\"\n [attr.y]=\"groupBounds.y\"\n [attr.width]=\"groupBounds.width\"\n [attr.height]=\"groupBounds.height\"\n [attr.fill]=\"rs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"rs.fill?.opacity ?? 1\"\n [attr.stroke]=\"isPrimitiveSelected(primitive.id) ? '#1976d2' : (rs.stroke?.color ?? 'none')\"\n [attr.stroke-opacity]=\"rs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"isPrimitiveSelected(primitive.id) ? 1.5 : (rs.stroke?.width ?? 0)\"\n [attr.stroke-dasharray]=\"isPrimitiveSelected(primitive.id) ? '6 3' : (getStrokeDashArray(rs.stroke?.dashArray))\"\n pointer-events=\"all\"/>\n }\n }\n }\n\n <!-- Primitive name label -->\n @if (showElementNames() && primitive.name) {\n <text class=\"primitive-label\"\n [attr.x]=\"getPrimitiveBoundingBox(primitive).x + getPrimitiveBoundingBox(primitive).width / 2\"\n [attr.y]=\"getPrimitiveBoundingBox(primitive).y + getPrimitiveBoundingBox(primitive).height + 10\"\n text-anchor=\"middle\">\n {{ primitive.name }}\n </text>\n }\n\n <!-- Selection handles for primitives -->\n @if (isPrimitiveSelected(primitive.id)) {\n @let bbox = getPrimitiveBoundingBox(primitive);\n @if (primitive.type === 'line') {\n <!-- Line-specific endpoint handles -->\n @let lineConfig = $any(primitive).config;\n <!-- Start endpoint handle (zoom-scaled) -->\n <circle class=\"endpoint-handle\"\n [attr.cx]=\"lineConfig.start.x + primitive.position.x\"\n [attr.cy]=\"lineConfig.start.y + primitive.position.y\"\n [attr.r]=\"portRadius() + 1\"\n fill=\"#1976d2\"\n stroke=\"white\"\n [attr.stroke-width]=\"selectionHighlightWidth()\"\n (mousedown)=\"onLineEndpointMouseDown($event, primitive, 'start')\"/>\n <!-- End endpoint handle (zoom-scaled) -->\n <circle class=\"endpoint-handle\"\n [attr.cx]=\"lineConfig.end.x + primitive.position.x\"\n [attr.cy]=\"lineConfig.end.y + primitive.position.y\"\n [attr.r]=\"portRadius() + 1\"\n fill=\"#1976d2\"\n stroke=\"white\"\n [attr.stroke-width]=\"selectionHighlightWidth()\"\n (mousedown)=\"onLineEndpointMouseDown($event, primitive, 'end')\"/>\n } @else if (primitive.type === 'polyline' || primitive.type === 'polygon') {\n <!-- Polyline/Polygon point handles (zoom-scaled) -->\n @for (point of getPolyPoints(primitive); track point.index) {\n <circle class=\"endpoint-handle\"\n [class.selected]=\"isPolyPointSelected(primitive.id, point.index)\"\n [attr.cx]=\"point.x\"\n [attr.cy]=\"point.y\"\n [attr.r]=\"portRadius()\"\n [attr.fill]=\"isPolyPointSelected(primitive.id, point.index) ? '#ff5722' : '#1976d2'\"\n stroke=\"white\"\n [attr.stroke-width]=\"selectionHighlightWidth()\"\n (mousedown)=\"onPolyPointMouseDown($event, primitive, point.index)\"/>\n }\n } @else {\n <!-- Selection outline (zoom-scaled) -->\n <rect [attr.x]=\"bbox.x - selectionPadding()\"\n [attr.y]=\"bbox.y - selectionPadding()\"\n [attr.width]=\"bbox.width + selectionPadding() * 2\"\n [attr.height]=\"bbox.height + selectionPadding() * 2\"\n fill=\"none\"\n stroke=\"#1976d2\"\n [attr.stroke-width]=\"selectionStrokeWidth()\"\n [attr.stroke-dasharray]=\"selectionDashArray()\"\n pointer-events=\"none\"/>\n <!-- Corner handles (zoom-scaled) -->\n <rect class=\"resize-handle nw\" [attr.x]=\"bbox.x - handleOffset()\" [attr.y]=\"bbox.y - handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onPrimitiveResizeHandleMouseDown($event, primitive, 'nw')\"/>\n <rect class=\"resize-handle ne\" [attr.x]=\"bbox.x + bbox.width - handleOffset()\" [attr.y]=\"bbox.y - handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onPrimitiveResizeHandleMouseDown($event, primitive, 'ne')\"/>\n <rect class=\"resize-handle sw\" [attr.x]=\"bbox.x - handleOffset()\" [attr.y]=\"bbox.y + bbox.height - handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onPrimitiveResizeHandleMouseDown($event, primitive, 'sw')\"/>\n <rect class=\"resize-handle se\" [attr.x]=\"bbox.x + bbox.width - handleOffset()\" [attr.y]=\"bbox.y + bbox.height - handleOffset()\" [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onPrimitiveResizeHandleMouseDown($event, primitive, 'se')\"/>\n\n <!-- Animation origin indicator (crosshair, zoom-scaled) -->\n @if (primitiveHasAnimations(primitive)) {\n @let origin = getAnimationOrigin(primitive);\n @if (origin) {\n <g class=\"animation-origin-indicator\" pointer-events=\"none\">\n <!-- Outer circle -->\n <circle [attr.cx]=\"origin.x\" [attr.cy]=\"origin.y\" [attr.r]=\"handleSize()\"\n fill=\"none\" stroke=\"#ff5722\" [attr.stroke-width]=\"selectionHighlightWidth()\" opacity=\"0.8\"/>\n <!-- Inner dot -->\n <circle [attr.cx]=\"origin.x\" [attr.cy]=\"origin.y\" [attr.r]=\"selectionPadding()\"\n fill=\"#ff5722\" opacity=\"0.9\"/>\n <!-- Crosshair lines -->\n <line [attr.x1]=\"origin.x - handleSize() * 1.5\" [attr.y1]=\"origin.y\"\n [attr.x2]=\"origin.x - portRadius()\" [attr.y2]=\"origin.y\"\n stroke=\"#ff5722\" [attr.stroke-width]=\"selectionHighlightWidth()\" opacity=\"0.8\"/>\n <line [attr.x1]=\"origin.x + portRadius()\" [attr.y1]=\"origin.y\"\n [attr.x2]=\"origin.x + handleSize() * 1.5\" [attr.y2]=\"origin.y\"\n stroke=\"#ff5722\" [attr.stroke-width]=\"selectionHighlightWidth()\" opacity=\"0.8\"/>\n <line [attr.x1]=\"origin.x\" [attr.y1]=\"origin.y - handleSize() * 1.5\"\n [attr.x2]=\"origin.x\" [attr.y2]=\"origin.y - portRadius()\"\n stroke=\"#ff5722\" [attr.stroke-width]=\"selectionHighlightWidth()\" opacity=\"0.8\"/>\n <line [attr.x1]=\"origin.x\" [attr.y1]=\"origin.y + portRadius()\"\n [attr.x2]=\"origin.x\" [attr.y2]=\"origin.y + handleSize() * 1.5\"\n stroke=\"#ff5722\" [attr.stroke-width]=\"selectionHighlightWidth()\" opacity=\"0.8\"/>\n </g>\n }\n }\n }\n }\n </g>\n }\n\n <!-- Symbol Instances -->\n @for (symbolInstance of orderedSymbols(); track symbolInstance.id) {\n @let symbolDef = getSymbolDefinition(symbolInstance);\n @let instanceDirectEffects = symbolInstanceDirectEffects().get(symbolInstance.id);\n @if (symbolDef) {\n <g class=\"symbol-instance\"\n [class.selected]=\"isSymbolSelected(symbolInstance.id)\"\n [class.dragging]=\"dragState().isDragging && dragState().elementId === symbolInstance.id\"\n [attr.transform]=\"getSymbolTransform(symbolInstance, symbolDef)\"\n [attr.opacity]=\"instanceDirectEffects?.['style.opacity'] ?? 1\"\n (mousedown)=\"onSymbolMouseDown($event, symbolInstance)\"\n (contextmenu)=\"onSymbolContextMenu($event, symbolInstance)\">\n\n <!-- Invisible hit area for easier selection -->\n <rect x=\"-4\" y=\"-4\"\n [attr.width]=\"symbolDef.bounds.width + 8\"\n [attr.height]=\"symbolDef.bounds.height + 8\"\n fill=\"transparent\"\n class=\"symbol-hit-area\"/>\n\n <!-- Render symbol primitives (including nested symbol instances) with direct effects applied -->\n @let symPropValues = symbolInstancePropertyValues().get(symbolInstance.id) ?? symbolInstance.propertyValues ?? {};\n @let symPrimitives = getSymbolPrimitivesWithDirectEffects(symbolInstance, symbolDef, symPropValues);\n @let animatedGroupChildIds = getAnimatedGroupChildIds(symbolDef);\n @for (primitive of symPrimitives; track primitive.id) {\n <!-- Skip invisible primitives and children of animated groups (rendered inside their group) -->\n @if (primitive.visible !== false && !animatedGroupChildIds.has(primitive.id)) {\n <!-- Check if primitive has animations - use innerHTML binding for animated primitives -->\n @if (symbolPrimitiveHasAnimations(primitive) || (primitive.fillLevel !== undefined && primitive.fillLevel >= 0 && primitive.fillLevel <= 1)) {\n <!-- Primitive with animations or fillLevel - use innerHTML for SVG animation support -->\n <g [attr.transform]=\"getPrimitiveTransform(primitive)\"\n [attr.opacity]=\"primitive.style?.opacity ?? 1\"\n [innerHTML]=\"getSymbolPrimitiveWithAnimationsSvg(primitive, symbolDef, symPropValues, symbolDef.styleClasses, symPrimitives)\"></g>\n } @else {\n <!-- Static primitive without animations -->\n <!-- Resolve style using symbol's styleClasses -->\n @let srs = resolveStyleWithClasses(primitive, symbolDef.styleClasses);\n <!-- Wrapper group for transform effects and overall opacity -->\n <g [attr.transform]=\"getPrimitiveTransform(primitive)\"\n [attr.opacity]=\"primitive.style?.opacity ?? 1\">\n @switch (primitive.type) {\n @case ('rectangle') {\n <!-- Standard rectangle without fillLevel -->\n <rect [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n [attr.fill]=\"srs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"srs.fill?.opacity ?? 1\"\n [attr.stroke]=\"srs.stroke?.color ?? 'none'\"\n [attr.stroke-opacity]=\"srs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"srs.stroke?.width ?? 1\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(srs.stroke?.dashArray)\"\n [attr.rx]=\"$any(primitive).config.cornerRadiusX ?? $any(primitive).config.cornerRadius ?? 0\"\n [attr.ry]=\"$any(primitive).config.cornerRadiusY ?? $any(primitive).config.cornerRadius ?? 0\"/>\n }\n @case ('ellipse') {\n <ellipse [attr.cx]=\"primitive.position.x\"\n [attr.cy]=\"primitive.position.y\"\n [attr.rx]=\"$any(primitive).config.radiusX\"\n [attr.ry]=\"$any(primitive).config.radiusY\"\n [attr.fill]=\"srs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"srs.fill?.opacity ?? 1\"\n [attr.stroke]=\"srs.stroke?.color ?? 'none'\"\n [attr.stroke-opacity]=\"srs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"srs.stroke?.width ?? 1\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(srs.stroke?.dashArray)\"/>\n }\n @case ('line') {\n <line [attr.x1]=\"$any(primitive).config.start.x + primitive.position.x\"\n [attr.y1]=\"$any(primitive).config.start.y + primitive.position.y\"\n [attr.x2]=\"$any(primitive).config.end.x + primitive.position.x\"\n [attr.y2]=\"$any(primitive).config.end.y + primitive.position.y\"\n [attr.stroke]=\"srs.stroke?.color ?? 'none'\"\n [attr.stroke-opacity]=\"srs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"srs.stroke?.width ?? 2\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(srs.stroke?.dashArray)\"/>\n }\n @case ('path') {\n <path [attr.d]=\"$any(primitive).config.d\"\n [attr.transform]=\"'translate(' + primitive.position.x + ',' + primitive.position.y + ')'\"\n [attr.fill]=\"srs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"srs.fill?.opacity ?? 1\"\n [attr.fill-rule]=\"$any(primitive).config.fillRule\"\n [attr.stroke]=\"srs.stroke?.color ?? 'none'\"\n [attr.stroke-opacity]=\"srs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"srs.stroke?.width ?? 1\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(srs.stroke?.dashArray)\"/>\n }\n @case ('polygon') {\n <polygon [attr.points]=\"getPolygonPoints($any(primitive))\"\n [attr.fill]=\"srs.fill?.color ?? 'none'\"\n [attr.fill-opacity]=\"srs.fill?.opacity ?? 1\"\n [attr.stroke]=\"srs.stroke?.color ?? 'none'\"\n [attr.stroke-opacity]=\"srs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"srs.stroke?.width ?? 1\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(srs.stroke?.dashArray)\"/>\n }\n @case ('polyline') {\n <polyline [attr.points]=\"getPolylinePoints($any(primitive))\"\n fill=\"none\"\n [attr.stroke]=\"srs.stroke?.color ?? 'none'\"\n [attr.stroke-opacity]=\"srs.stroke?.opacity ?? 1\"\n [attr.stroke-width]=\"srs.stroke?.width ?? 2\"\n [attr.stroke-dasharray]=\"getStrokeDashArray(srs.stroke?.dashArray)\"/>\n }\n @case ('text') {\n <text [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.fill]=\"$any(primitive).config.textStyle?.color ?? '#333'\"\n [attr.font-size]=\"$any(primitive).config.textStyle?.fontSize ?? 14\"\n [attr.font-family]=\"$any(primitive).config.textStyle?.fontFamily ?? 'Arial, sans-serif'\">\n {{ $any(primitive).config.content }}\n </text>\n }\n @case ('image') {\n @if ($any(primitive).config.src) {\n @if ($any(primitive).config.sourceType === 'svg') {\n <!-- SVG content embedded via foreignObject -->\n <foreignObject [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n [innerHTML]=\"getSafeHtml($any(primitive).config.src)\"></foreignObject>\n } @else {\n <!-- URL or data URL image -->\n <image [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n [attr.href]=\"$any(primitive).config.src\"\n [attr.preserveAspectRatio]=\"$any(primitive).config.preserveAspectRatio !== false ? 'xMidYMid meet' : 'none'\"/>\n }\n } @else {\n <!-- Placeholder when no src -->\n <rect [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config.width\"\n [attr.height]=\"$any(primitive).config.height\"\n fill=\"#f5f5f5\"\n stroke=\"#ccc\"\n stroke-width=\"1\"\n stroke-dasharray=\"4 2\"/>\n <text [attr.x]=\"primitive.position.x + $any(primitive).config.width / 2\"\n [attr.y]=\"primitive.position.y + $any(primitive).config.height / 2\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n font-size=\"10\"\n fill=\"#999\">Image</text>\n }\n }\n }\n </g>\n }\n }\n }\n\n <!-- Symbol name label -->\n @if (showElementNames() && symbolInstance.name) {\n <text class=\"symbol-label\"\n [attr.x]=\"symbolDef.bounds.width / 2\"\n [attr.y]=\"symbolDef.bounds.height + 10\"\n text-anchor=\"middle\">\n {{ symbolInstance.name }}\n </text>\n }\n\n <!-- Selection handles for symbols (zoom-scaled) -->\n @if (isSymbolSelected(symbolInstance.id)) {\n <!-- Selection outline -->\n <rect [attr.x]=\"-selectionPadding()\" [attr.y]=\"-selectionPadding()\"\n [attr.width]=\"symbolDef.bounds.width + selectionPadding() * 2\"\n [attr.height]=\"symbolDef.bounds.height + selectionPadding() * 2\"\n fill=\"none\"\n stroke=\"#1976d2\"\n [attr.stroke-width]=\"selectionHighlightWidth()\"\n [attr.stroke-dasharray]=\"selectionDashArray()\"\n pointer-events=\"none\"/>\n <!-- Corner handles -->\n <rect class=\"resize-handle nw\" [attr.x]=\"-handleOffset()\" [attr.y]=\"-handleOffset()\"\n [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onSymbolResizeHandleMouseDown($event, symbolInstance, 'nw')\"/>\n <rect class=\"resize-handle ne\" [attr.x]=\"symbolDef.bounds.width - handleOffset()\" [attr.y]=\"-handleOffset()\"\n [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onSymbolResizeHandleMouseDown($event, symbolInstance, 'ne')\"/>\n <rect class=\"resize-handle sw\" [attr.x]=\"-handleOffset()\" [attr.y]=\"symbolDef.bounds.height - handleOffset()\"\n [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onSymbolResizeHandleMouseDown($event, symbolInstance, 'sw')\"/>\n <rect class=\"resize-handle se\" [attr.x]=\"symbolDef.bounds.width - handleOffset()\" [attr.y]=\"symbolDef.bounds.height - handleOffset()\"\n [attr.width]=\"handleSize()\" [attr.height]=\"handleSize()\" fill=\"#1976d2\"\n (mousedown)=\"onSymbolResizeHandleMouseDown($event, symbolInstance, 'se')\"/>\n }\n </g>\n }\n }\n\n <!-- Selection Overlay Layer (always on top for visual feedback, zoom-scaled) -->\n <g class=\"selection-overlay\" pointer-events=\"none\">\n <!-- Element selection indicators (only in diagram mode) -->\n @if (editorMode === 'diagram') {\n @for (element of selectedElements(); track element.id) {\n <rect [attr.x]=\"element.position.x - selectionPadding()\"\n [attr.y]=\"element.position.y - selectionPadding()\"\n [attr.width]=\"element.size.width + selectionPadding() * 2\"\n [attr.height]=\"element.size.height + selectionPadding() * 2\"\n fill=\"none\"\n stroke=\"#1976d2\"\n [attr.stroke-width]=\"selectionStrokeWidth()\"\n [attr.stroke-dasharray]=\"selectionDashArray()\"\n class=\"selection-indicator\"/>\n }\n }\n <!-- Primitive selection indicators -->\n @for (primitive of selectedPrimitives(); track primitive.id) {\n @let bbox = getPrimitiveBoundingBox(primitive);\n <rect [attr.x]=\"bbox.x - selectionPadding()\"\n [attr.y]=\"bbox.y - selectionPadding()\"\n [attr.width]=\"bbox.width + selectionPadding() * 2\"\n [attr.height]=\"bbox.height + selectionPadding() * 2\"\n fill=\"none\"\n stroke=\"#1976d2\"\n [attr.stroke-width]=\"selectionStrokeWidth()\"\n [attr.stroke-dasharray]=\"selectionDashArray()\"\n class=\"selection-indicator\"/>\n }\n <!-- Symbol selection indicators -->\n @for (symbolInstance of selectedSymbols(); track symbolInstance.id) {\n @let symbolDef = getSymbolDefinition(symbolInstance);\n @if (symbolDef) {\n @let bbox = getSymbolBoundingBox(symbolInstance, symbolDef);\n <rect [attr.x]=\"bbox.x - selectionPadding()\"\n [attr.y]=\"bbox.y - selectionPadding()\"\n [attr.width]=\"bbox.width + selectionPadding() * 2\"\n [attr.height]=\"bbox.height + selectionPadding() * 2\"\n fill=\"none\"\n stroke=\"#1976d2\"\n [attr.stroke-width]=\"selectionStrokeWidth()\"\n [attr.stroke-dasharray]=\"selectionDashArray()\"\n class=\"selection-indicator\"/>\n }\n }\n </g>\n\n <!-- Selection rectangle (for marquee selection, zoom-scaled) -->\n @if (selectionRect()) {\n <rect [attr.x]=\"selectionRect()!.x\"\n [attr.y]=\"selectionRect()!.y\"\n [attr.width]=\"selectionRect()!.width\"\n [attr.height]=\"selectionRect()!.height\"\n fill=\"rgba(25, 118, 210, 0.1)\"\n stroke=\"#1976d2\"\n [attr.stroke-width]=\"selectionStrokeWidth()\"\n [attr.stroke-dasharray]=\"selectionDashArray()\"/>\n }\n\n <!-- Alignment Guides (shown during drag) -->\n @for (guide of alignmentGuides(); track $index) {\n @if (guide.type === 'horizontal') {\n <line [attr.x1]=\"guide.start\"\n [attr.y1]=\"guide.position\"\n [attr.x2]=\"guide.end\"\n [attr.y2]=\"guide.position\"\n stroke=\"#ff4081\"\n [attr.stroke-width]=\"guideStrokeWidth()\"\n pointer-events=\"none\"/>\n } @else {\n <line [attr.x1]=\"guide.position\"\n [attr.y1]=\"guide.start\"\n [attr.x2]=\"guide.position\"\n [attr.y2]=\"guide.end\"\n stroke=\"#ff4081\"\n [attr.stroke-width]=\"guideStrokeWidth()\"\n pointer-events=\"none\"/>\n }\n }\n </svg>\n </div>\n\n <!-- Property Inspector (right sidebar - legacy mode only) -->\n @if (!useDockview) {\n @if (showRightPanel()) {\n <div class=\"designer-inspector-container\">\n <div class=\"inspector-header\">\n <span class=\"inspector-title\">Properties</span>\n <button class=\"sidebar-close\" (click)=\"toggleRightPanel()\" title=\"Close panel\">\u00D7</button>\n </div>\n <mm-property-inspector\n class=\"designer-inspector\"\n [selectedElements]=\"selectedElements()\"\n [selectedConnections]=\"selectedConnections()\"\n [selectedPrimitives]=\"selectedPrimitives()\"\n [selectedSymbolInstances]=\"selectedSymbols()\"\n [symbolDefinitions]=\"symbolDefinitionsMap()\"\n [availableStyleClasses]=\"styleClasses\"\n (propertyChange)=\"onPropertyChange($event)\">\n </mm-property-inspector>\n </div>\n } @else {\n <div class=\"sidebar-collapsed right\" (click)=\"toggleRightPanel()\" title=\"Show properties\">\n <span class=\"collapsed-icon\">\u2699</span>\n </div>\n }\n }\n </div>\n\n <!-- Context Menu -->\n @if (contextMenu().visible) {\n <mm-context-menu\n [position]=\"contextMenu().position\"\n [items]=\"contextMenuItems()\"\n (action)=\"onContextMenuAction($event)\"\n (closed)=\"closeContextMenu()\">\n </mm-context-menu>\n }\n\n <!-- Path Editor Dialog -->\n @if (pathEditorVisible()) {\n <kendo-dialog\n title=\"Edit Path\"\n [width]=\"500\"\n [height]=\"500\"\n (close)=\"closePathEditor()\">\n <mm-path-editor\n [pathData]=\"editingPathData()\"\n [width]=\"460\"\n [height]=\"280\"\n (pathChange)=\"onPathEditorChange($event)\">\n </mm-path-editor>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closePathEditor()\">Done</button>\n </kendo-dialog-actions>\n </kendo-dialog>\n }\n\n <!-- Binding Editor Dialog -->\n <mm-binding-editor-dialog\n [show]=\"showBindingEditor()\"\n [property]=\"editingBindingProperty()\"\n [existingBindings]=\"effectivePropertyBindings()\"\n [primitives]=\"diagram().primitives ?? []\"\n [symbolInstances]=\"diagram().symbolInstances ?? []\"\n [symbolDefinitions]=\"symbolDefinitionsMap()\"\n (closed)=\"closeBindingEditor()\"\n (saved)=\"onBindingsSaved($event)\">\n </mm-binding-editor-dialog>\n\n <!-- Status bar -->\n <div class=\"designer-statusbar\">\n <span class=\"diagram-name\" title=\"Diagram name\">{{ diagram().name }}</span>\n <span class=\"statusbar-divider\">|</span>\n <span>Primitives: {{ (diagram().primitives ?? []).length }}</span>\n <span>Symbols: {{ (diagram().symbolInstances ?? []).length }}</span>\n @if (editorMode === 'diagram') {\n <span>Elements: {{ diagram().elements.length }}</span>\n <span>Connections: {{ diagram().connections.length }}</span>\n }\n <span>Selected: {{ selection().elements.size + selection().connections.size }}</span>\n @if (hasChanges()) {\n <span class=\"unsaved-indicator\">* Unsaved</span>\n }\n </div>\n</div>\n", styles: [":host{--designer-bg: #f5f5f5;--designer-surface: #ffffff;--designer-surface-alt: #f5f5f5;--designer-border: #e0e0e0;--designer-text: #333333;--designer-text-muted: #666666;--designer-accent: #1976d2;--designer-accent-secondary: #1565c0;--designer-canvas-bg: #e8e8e8;--designer-hover-bg: #eeeeee;--designer-canvas-color: #fafafa;--designer-grid-color: #e0e0e0;display:flex;flex-direction:column;flex:1;width:100%;height:100%;min-height:0;overflow:hidden}.process-designer{display:flex;flex-direction:column;flex:1;height:100%;min-height:0;background:var(--designer-bg);outline:none;overflow:hidden}.designer-toolbar{flex-shrink:0;border-bottom:1px solid var(--designer-border)}.zoom-level{min-width:40px;text-align:center;font-size:12px;padding:0 .25rem;color:var(--designer-text)}.k-menu-separator{height:1px;margin:4px 0;background-color:var(--designer-border)}.designer-content{display:flex;flex:1;height:100%;min-height:0;overflow:hidden}.designer-sidebar{width:220px;display:flex;flex-direction:column;border-right:1px solid var(--designer-border);background:var(--designer-surface)}.sidebar-header{display:flex;align-items:stretch;border-bottom:1px solid var(--designer-border)}.sidebar-tabs{display:flex;flex:1}.sidebar-tab{flex:1;padding:.5rem;background:var(--designer-surface-alt);border:none;border-bottom:2px solid transparent;font-size:12px;font-weight:500;color:var(--designer-text-muted);cursor:pointer;transition:all .15s ease}.sidebar-tab:hover{background:var(--designer-hover-bg);color:var(--designer-text)}.sidebar-tab.active{background:var(--designer-surface);border-bottom-color:var(--designer-accent);color:var(--designer-accent)}.sidebar-content{flex:1;overflow-y:auto}.sidebar-close{width:28px;background:transparent;border:none;border-left:1px solid var(--designer-border);cursor:pointer;font-size:16px;color:var(--designer-text-muted);display:flex;align-items:center;justify-content:center}.sidebar-close:hover{background:var(--designer-hover-bg);color:var(--designer-accent)}.sidebar-collapsed{width:28px;background:var(--designer-surface);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease;writing-mode:vertical-rl;text-orientation:mixed}.sidebar-collapsed.left{border-right:1px solid var(--designer-border)}.sidebar-collapsed.right{border-left:1px solid var(--designer-border)}.sidebar-collapsed:hover{background:var(--designer-surface-alt)}.sidebar-collapsed .collapsed-icon{font-size:14px;color:var(--designer-text-muted)}.designer-inspector-container{width:280px;display:flex;flex-direction:column;border-left:1px solid var(--designer-border);background:var(--designer-surface)}.inspector-header{display:flex;align-items:center;padding:0 .5rem;height:32px;border-bottom:1px solid var(--designer-border);background:var(--designer-surface-alt)}.inspector-header .inspector-title{flex:1;font-size:12px;font-weight:500;color:var(--designer-text)}.designer-canvas-container{flex:1 1 auto;min-width:0;min-height:0;height:100%;overflow:auto;background:var(--designer-canvas-bg);position:relative;box-sizing:border-box;display:flex;padding:20px}.designer-canvas{display:block;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;box-shadow:0 2px 8px #0000001a;margin:auto;flex-shrink:0}.designer-canvas .element-label,.designer-canvas .primitive-label,.designer-canvas .symbol-label{user-select:none;-webkit-user-select:none;pointer-events:none;fill:#aaa;font-size:8px}.canvas-background{cursor:default;fill:var(--designer-canvas-color)}.designer-grid-line{stroke:var(--designer-grid-color)}.designer-inspector{flex:1;overflow-y:auto}.element,.element.selected{cursor:move}.element.dragging{opacity:.7}.element.dragging .element-hit-area{cursor:grabbing}.element-hit-area,.primitive,.primitive.selected{cursor:move}.primitive.dragging{opacity:.7}.symbol-instance,.symbol-instance.selected{cursor:move}.symbol-instance.dragging{opacity:.7}.symbol-instance.dragging .symbol-hit-area{cursor:grabbing}.symbol-hit-area{cursor:move}.resize-handle{cursor:pointer}.resize-handle.nw,.resize-handle.se{cursor:nwse-resize}.resize-handle.ne,.resize-handle.sw{cursor:nesw-resize}.endpoint-handle{cursor:move;transition:r .15s ease,fill .15s ease}.endpoint-handle:hover{r:8}.endpoint-handle.selected{r:7}.connection-port{cursor:crosshair;opacity:.7}.connection-port:hover{opacity:1}.connection{cursor:pointer}.connection.selected path{stroke:#1976d2!important}.selection-overlay .selection-indicator{animation:marching-ants .5s linear infinite}@keyframes marching-ants{0%{stroke-dashoffset:0}to{stroke-dashoffset:6}}.designer-statusbar{flex-shrink:0;display:flex;gap:1rem;padding:.25rem .5rem;background:var(--designer-surface);border-top:1px solid var(--designer-border);font-size:11px;color:var(--designer-text-muted)}.diagram-name{font-weight:500;color:var(--designer-text)}.statusbar-divider{color:var(--designer-border)}.unsaved-indicator{color:#f57c00;font-weight:500}:host{--dv-background-color: var(--designer-bg, #f5f5f5);--dv-pane-background-color: var(--designer-surface, #ffffff);--dv-activegroup-visiblepanel-tab-background-color: var(--designer-surface, #ffffff);--dv-activegroup-hiddenpanel-tab-background-color: var(--designer-surface-alt, #f0f0f0);--dv-inactivegroup-visiblepanel-tab-background-color: var(--designer-surface-alt, #f5f5f5);--dv-inactivegroup-hiddenpanel-tab-background-color: #e8e8e8;--dv-activegroup-visiblepanel-tab-color: var(--designer-accent, #1976d2);--dv-activegroup-hiddenpanel-tab-color: var(--designer-text-muted, #666666);--dv-inactivegroup-visiblepanel-tab-color: var(--designer-text, #333333);--dv-inactivegroup-hiddenpanel-tab-color: #888888;--dv-separator-border: 1px solid var(--designer-border, #e0e0e0);--dv-tabs-and-actions-container-background-color: var(--designer-surface-alt, #f5f5f5);--dv-group-view-background-color: var(--designer-surface, #ffffff);--dv-tab-active-border-bottom: 2px solid var(--designer-accent, #1976d2);--dv-drag-over-background-color: rgba(25, 118, 210, .15);--dv-drag-over-border-color: var(--designer-accent, #1976d2);--dv-sash-color: var(--designer-border, #e0e0e0);--dv-sash-hover-color: var(--designer-accent, #1976d2)}.designer-content.dockview-enabled{display:flex;position:relative;height:100%;min-height:0}.dockview-panels-container{width:400px;min-width:280px;max-width:600px;flex:0 0 400px;height:100%;border-right:1px solid var(--designer-border);position:relative;overflow:hidden}.designer-dockview{position:absolute;inset:0;width:100%;height:100%}.dockview-resize-handle{width:6px;height:100%;cursor:ew-resize;background:transparent;position:relative;flex-shrink:0;z-index:10;transition:background-color .2s ease}.dockview-resize-handle:before{content:\"\";position:absolute;top:0;left:50%;transform:translate(-50%);width:2px;height:100%;background:var(--designer-border, rgba(100, 206, 185, .3));transition:background-color .2s ease,width .2s ease}.dockview-resize-handle:hover{background:#64ceb91a}.dockview-resize-handle:hover:before{width:4px;background:var(--octo-mint, #64ceb9)}.dockview-resize-handle:active{background:#64ceb926}.dockview-resize-handle:active:before{width:4px;background:var(--octo-mint, #64ceb9)}::ng-deep mm-elements-panel,::ng-deep mm-symbols-panel,::ng-deep mm-properties-panel,::ng-deep mm-transform-panel,::ng-deep mm-animations-panel,::ng-deep mm-styles-panel,::ng-deep mm-settings-panel,::ng-deep mm-simulation-panel-wrapper{display:block;height:100%;overflow:hidden}::ng-deep mm-elements-panel .panel-container,::ng-deep mm-symbols-panel .panel-container,::ng-deep mm-properties-panel .panel-container,::ng-deep mm-transform-panel .panel-container,::ng-deep mm-animations-panel .panel-container,::ng-deep mm-styles-panel .panel-container,::ng-deep mm-settings-panel .panel-container,::ng-deep mm-simulation-panel-wrapper .panel-container{height:100%;overflow:auto;background:var(--dv-pane-background-color, var(--designer-surface, #ffffff));color:var(--designer-text, #333333)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: i2$2.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex", "showIcon", "showText"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: i2$2.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "rounded", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: i2$2.ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "fillMode", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { kind: "component", type: i2$2.ToolBarDropDownButtonComponent, selector: "kendo-toolbar-dropdownbutton", inputs: ["arrowIcon", "title", "showText", "showIcon", "text", "icon", "svgIcon", "iconClass", "imageUrl", "popupSettings", "look", "primary", "fillMode", "themeColor", "buttonClass", "textField", "disabled", "data"], outputs: ["itemClick", "open", "close"], exportAs: ["kendoToolBarDropDownButton"] }, { kind: "component", type: i2$2.ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { kind: "component", type: i2$2.ToolBarSpacerComponent, selector: "kendo-toolbar-spacer", exportAs: ["kendoToolBarSpacer"] }, { kind: "ngmodule", type: SVGIconModule }, { kind: "ngmodule", type: InputsModule }, { kind: "ngmodule", type: DropDownsModule }, { kind: "ngmodule", type: DialogsModule }, { kind: "component", type: i3.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: i3.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: ElementPaletteComponent, selector: "mm-element-palette", outputs: ["elementDragStart", "elementDragEnd"] }, { kind: "component", type: SymbolLibraryPanelComponent, selector: "mm-symbol-library-panel", outputs: ["symbolDragStart", "symbolDragEnd"] }, { kind: "component", type: PropertyInspectorComponent, selector: "mm-property-inspector", inputs: ["selectedElements", "selectedConnections", "selectedPrimitives", "selectedSymbolInstances", "symbolDefinitions", "availableStyleClasses"], outputs: ["propertyChange"] }, { kind: "component", type: ContextMenuComponent, selector: "mm-context-menu", inputs: ["position", "items"], outputs: ["action", "closed"] }, { kind: "component", type: PathEditorComponent, selector: "mm-path-editor", inputs: ["pathData", "width", "height", "gridSize", "snapToGrid"], outputs: ["pathChange"] }, { kind: "component", type: DockviewComponent, selector: "mm-dockview", inputs: ["components", "tabComponents", "watermarkComponent", "defaultTabComponent", "leftHeaderActionsComponent", "rightHeaderActionsComponent", "prefixHeaderActionsComponent", "className", "hideBorders", "locked", "disableAutoResizing", "disableFloatingGroups"], outputs: ["ready", "didDrop", "willDrop"] }, { kind: "component", type: BindingEditorDialogComponent, selector: "mm-binding-editor-dialog", inputs: ["show", "property", "existingBindings", "primitives", "symbolInstances", "symbolDefinitions"], outputs: ["closed", "saved"] }] });
|
|
27266
27266
|
}
|
|
27267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
27267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDesignerComponent, decorators: [{
|
|
27268
27268
|
type: Component,
|
|
27269
27269
|
args: [{ selector: 'mm-process-designer', standalone: true, imports: [
|
|
27270
27270
|
CommonModule,
|
|
@@ -27402,7 +27402,7 @@ class SymbolEditorComponent {
|
|
|
27402
27402
|
/**
|
|
27403
27403
|
* Internal diagram config derived from symbol
|
|
27404
27404
|
*/
|
|
27405
|
-
diagramConfig = signal(null, ...(ngDevMode ? [{ debugName: "diagramConfig" }] : []));
|
|
27405
|
+
diagramConfig = signal(null, ...(ngDevMode ? [{ debugName: "diagramConfig" }] : /* istanbul ignore next */ []));
|
|
27406
27406
|
/**
|
|
27407
27407
|
* Initial visibility of the property editor panel
|
|
27408
27408
|
*/
|
|
@@ -27422,32 +27422,32 @@ class SymbolEditorComponent {
|
|
|
27422
27422
|
*/
|
|
27423
27423
|
symbolSettingsChange = new EventEmitter();
|
|
27424
27424
|
// Transform property editing state
|
|
27425
|
-
_transformProperties = signal([], ...(ngDevMode ? [{ debugName: "_transformProperties" }] : []));
|
|
27426
|
-
_propertyBindings = signal([], ...(ngDevMode ? [{ debugName: "_propertyBindings" }] : []));
|
|
27427
|
-
_showBindingEditor = signal(false, ...(ngDevMode ? [{ debugName: "_showBindingEditor" }] : []));
|
|
27428
|
-
_editingProperty = signal(null, ...(ngDevMode ? [{ debugName: "_editingProperty" }] : []));
|
|
27429
|
-
_simulationValues = signal({}, ...(ngDevMode ? [{ debugName: "_simulationValues" }] : []));
|
|
27430
|
-
_propertyPanelVisible = signal(true, ...(ngDevMode ? [{ debugName: "_propertyPanelVisible" }] : []));
|
|
27431
|
-
_styleClasses = signal([], ...(ngDevMode ? [{ debugName: "_styleClasses" }] : []));
|
|
27425
|
+
_transformProperties = signal([], ...(ngDevMode ? [{ debugName: "_transformProperties" }] : /* istanbul ignore next */ []));
|
|
27426
|
+
_propertyBindings = signal([], ...(ngDevMode ? [{ debugName: "_propertyBindings" }] : /* istanbul ignore next */ []));
|
|
27427
|
+
_showBindingEditor = signal(false, ...(ngDevMode ? [{ debugName: "_showBindingEditor" }] : /* istanbul ignore next */ []));
|
|
27428
|
+
_editingProperty = signal(null, ...(ngDevMode ? [{ debugName: "_editingProperty" }] : /* istanbul ignore next */ []));
|
|
27429
|
+
_simulationValues = signal({}, ...(ngDevMode ? [{ debugName: "_simulationValues" }] : /* istanbul ignore next */ []));
|
|
27430
|
+
_propertyPanelVisible = signal(true, ...(ngDevMode ? [{ debugName: "_propertyPanelVisible" }] : /* istanbul ignore next */ []));
|
|
27431
|
+
_styleClasses = signal([], ...(ngDevMode ? [{ debugName: "_styleClasses" }] : /* istanbul ignore next */ []));
|
|
27432
27432
|
/**
|
|
27433
27433
|
* Loaded symbol definitions for nested symbol instances.
|
|
27434
27434
|
* This signal is updated when nested symbols are loaded from the backend.
|
|
27435
27435
|
*/
|
|
27436
|
-
_loadedSymbolDefinitions = signal(new Map(), ...(ngDevMode ? [{ debugName: "_loadedSymbolDefinitions" }] : []));
|
|
27436
|
+
_loadedSymbolDefinitions = signal(new Map(), ...(ngDevMode ? [{ debugName: "_loadedSymbolDefinitions" }] : /* istanbul ignore next */ []));
|
|
27437
27437
|
/**
|
|
27438
27438
|
* Base diagram config that tracks user edits (without simulation transforms).
|
|
27439
27439
|
* This is updated when ProcessDesigner emits changes.
|
|
27440
27440
|
*/
|
|
27441
|
-
_baseDiagramConfig = signal(null, ...(ngDevMode ? [{ debugName: "_baseDiagramConfig" }] : []));
|
|
27441
|
+
_baseDiagramConfig = signal(null, ...(ngDevMode ? [{ debugName: "_baseDiagramConfig" }] : /* istanbul ignore next */ []));
|
|
27442
27442
|
// Computed values for template
|
|
27443
|
-
transformProperties = computed(() => this._transformProperties(), ...(ngDevMode ? [{ debugName: "transformProperties" }] : []));
|
|
27444
|
-
propertyBindings = computed(() => this._propertyBindings(), ...(ngDevMode ? [{ debugName: "propertyBindings" }] : []));
|
|
27445
|
-
showBindingEditor = computed(() => this._showBindingEditor(), ...(ngDevMode ? [{ debugName: "showBindingEditor" }] : []));
|
|
27446
|
-
editingProperty = computed(() => this._editingProperty(), ...(ngDevMode ? [{ debugName: "editingProperty" }] : []));
|
|
27447
|
-
simulationValues = computed(() => this._simulationValues(), ...(ngDevMode ? [{ debugName: "simulationValues" }] : []));
|
|
27448
|
-
propertyPanelVisible = computed(() => this._propertyPanelVisible(), ...(ngDevMode ? [{ debugName: "propertyPanelVisible" }] : []));
|
|
27449
|
-
hasTransformProperties = computed(() => this._transformProperties().length > 0, ...(ngDevMode ? [{ debugName: "hasTransformProperties" }] : []));
|
|
27450
|
-
styleClasses = computed(() => this._styleClasses(), ...(ngDevMode ? [{ debugName: "styleClasses" }] : []));
|
|
27443
|
+
transformProperties = computed(() => this._transformProperties(), ...(ngDevMode ? [{ debugName: "transformProperties" }] : /* istanbul ignore next */ []));
|
|
27444
|
+
propertyBindings = computed(() => this._propertyBindings(), ...(ngDevMode ? [{ debugName: "propertyBindings" }] : /* istanbul ignore next */ []));
|
|
27445
|
+
showBindingEditor = computed(() => this._showBindingEditor(), ...(ngDevMode ? [{ debugName: "showBindingEditor" }] : /* istanbul ignore next */ []));
|
|
27446
|
+
editingProperty = computed(() => this._editingProperty(), ...(ngDevMode ? [{ debugName: "editingProperty" }] : /* istanbul ignore next */ []));
|
|
27447
|
+
simulationValues = computed(() => this._simulationValues(), ...(ngDevMode ? [{ debugName: "simulationValues" }] : /* istanbul ignore next */ []));
|
|
27448
|
+
propertyPanelVisible = computed(() => this._propertyPanelVisible(), ...(ngDevMode ? [{ debugName: "propertyPanelVisible" }] : /* istanbul ignore next */ []));
|
|
27449
|
+
hasTransformProperties = computed(() => this._transformProperties().length > 0, ...(ngDevMode ? [{ debugName: "hasTransformProperties" }] : /* istanbul ignore next */ []));
|
|
27450
|
+
styleClasses = computed(() => this._styleClasses(), ...(ngDevMode ? [{ debugName: "styleClasses" }] : /* istanbul ignore next */ []));
|
|
27451
27451
|
currentPrimitives = computed(() => {
|
|
27452
27452
|
// Use diagramConfig for the most current primitives (includes unsaved changes)
|
|
27453
27453
|
// Fall back to base config if diagramConfig is empty
|
|
@@ -27455,13 +27455,13 @@ class SymbolEditorComponent {
|
|
|
27455
27455
|
const base = this._baseDiagramConfig();
|
|
27456
27456
|
// Prefer current diagramConfig as it has the latest changes from process-designer
|
|
27457
27457
|
return current?.primitives?.length ? current.primitives : (base?.primitives ?? []);
|
|
27458
|
-
}, ...(ngDevMode ? [{ debugName: "currentPrimitives" }] : []));
|
|
27458
|
+
}, ...(ngDevMode ? [{ debugName: "currentPrimitives" }] : /* istanbul ignore next */ []));
|
|
27459
27459
|
currentSymbolInstances = computed(() => {
|
|
27460
27460
|
// Use diagramConfig for the most current symbol instances (includes unsaved changes)
|
|
27461
27461
|
const current = this.diagramConfig();
|
|
27462
27462
|
const base = this._baseDiagramConfig();
|
|
27463
27463
|
return current?.symbolInstances?.length ? current.symbolInstances : (base?.symbolInstances ?? []);
|
|
27464
|
-
}, ...(ngDevMode ? [{ debugName: "currentSymbolInstances" }] : []));
|
|
27464
|
+
}, ...(ngDevMode ? [{ debugName: "currentSymbolInstances" }] : /* istanbul ignore next */ []));
|
|
27465
27465
|
symbolDefinitionsMap = computed(() => {
|
|
27466
27466
|
// Use loaded definitions signal - this makes the computed reactive to symbol loading
|
|
27467
27467
|
const loadedDefs = this._loadedSymbolDefinitions();
|
|
@@ -27475,7 +27475,7 @@ class SymbolEditorComponent {
|
|
|
27475
27475
|
}
|
|
27476
27476
|
}
|
|
27477
27477
|
return map;
|
|
27478
|
-
}, ...(ngDevMode ? [{ debugName: "symbolDefinitionsMap" }] : []));
|
|
27478
|
+
}, ...(ngDevMode ? [{ debugName: "symbolDefinitionsMap" }] : /* istanbul ignore next */ []));
|
|
27479
27479
|
ngOnChanges(changes) {
|
|
27480
27480
|
// Initialize panel visibility from input
|
|
27481
27481
|
if (changes['showPropertyEditorPanel'] && changes['showPropertyEditorPanel'].isFirstChange()) {
|
|
@@ -28356,8 +28356,8 @@ class SymbolEditorComponent {
|
|
|
28356
28356
|
clearChanges() {
|
|
28357
28357
|
this.processDesigner?.clearChanges();
|
|
28358
28358
|
}
|
|
28359
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
28360
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
28359
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28360
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SymbolEditorComponent, isStandalone: true, selector: "mm-symbol-editor", inputs: { symbol: "symbol", canvasWidth: "canvasWidth", canvasHeight: "canvasHeight", gridSize: "gridSize", showPropertyEditorPanel: "showPropertyEditorPanel", useDockview: "useDockview", symbolSettings: "symbolSettings" }, outputs: { symbolChange: "symbolChange", saveRequest: "saveRequest", symbolSettingsChange: "symbolSettingsChange" }, viewQueries: [{ propertyName: "processDesigner", first: true, predicate: ProcessDesignerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
28361
28361
|
<div class="symbol-editor-container" [class.dockview-enabled]="useDockview">
|
|
28362
28362
|
<div class="editor-main">
|
|
28363
28363
|
<div class="editor-canvas">
|
|
@@ -28436,7 +28436,7 @@ class SymbolEditorComponent {
|
|
|
28436
28436
|
</mm-binding-editor-dialog>
|
|
28437
28437
|
`, isInline: true, styles: [":host{--editor-bg: var(--designer-bg, #f5f5f5);--editor-surface: var(--designer-surface, #ffffff);--editor-surface-alt: var(--designer-surface-alt, #f5f5f5);--editor-border: var(--designer-border, #e0e0e0);--editor-text: var(--designer-text, #333333);--editor-text-muted: var(--designer-text-muted, #666666);--editor-accent: var(--designer-accent, #1976d2);--editor-hover-bg: var(--designer-hover-bg, #eeeeee);display:flex;flex-direction:column;flex:1;width:100%;height:100%;min-height:0;overflow:hidden}.symbol-editor-container{display:flex;flex-direction:column;flex:1;height:100%;min-height:0;overflow:hidden;background:var(--editor-bg)}.editor-main{display:flex;flex:1;height:100%;min-height:0;min-width:0;position:relative;overflow:hidden}.editor-canvas{display:flex;flex:1;height:100%;min-width:0;min-height:0;overflow:hidden}mm-process-designer{flex:1;height:100%;min-height:0;min-width:0}.properties-panel{width:300px;display:flex;flex-direction:column;border-left:1px solid var(--editor-border);background:var(--editor-surface)}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--editor-surface-alt);border-bottom:1px solid var(--editor-border);flex-shrink:0}.panel-title{font-size:13px;font-weight:500;color:var(--editor-text)}.panel-close{width:24px;height:24px;border:none;background:transparent;cursor:pointer;font-size:18px;color:var(--editor-text-muted);border-radius:4px;display:flex;align-items:center;justify-content:center;padding:0}.panel-close:hover{background:var(--editor-hover-bg);color:var(--editor-accent)}.panel-content{flex:1;overflow-y:auto;min-height:0}mm-transform-property-editor{display:block}.panel-collapsed{width:28px;background:var(--editor-surface-alt);border-left:1px solid var(--editor-border);display:flex;flex-direction:column;align-items:center;padding-top:12px;cursor:pointer;transition:background .15s ease}.panel-collapsed:hover{background:var(--editor-hover-bg)}.collapsed-icon{color:var(--editor-text-muted);margin-bottom:8px}.collapsed-label{writing-mode:vertical-rl;text-orientation:mixed;font-size:11px;font-weight:500;color:var(--editor-text-muted);letter-spacing:.5px}mm-simulation-panel{flex-shrink:0}.symbol-editor-container.dockview-enabled .editor-main,.symbol-editor-container.dockview-enabled .editor-canvas{flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ProcessDesignerComponent, selector: "mm-process-designer", inputs: ["diagramConfig", "editorMode", "showSaveButtons", "transformProperties", "propertyBindings", "simulationPropertyValues", "useDockview", "symbolSettings", "styleClasses"], outputs: ["diagramChange", "saveRequest", "transformPropertiesChange", "simulationValueChange", "simulationReset", "symbolSettingsChange", "styleClassesChange"] }, { kind: "component", type: TransformPropertyEditorComponent, selector: "mm-transform-property-editor", inputs: ["transformProperties", "propertyBindings", "primitives", "symbolInstances"], outputs: ["propertiesChange", "openBindings"] }, { kind: "component", type: BindingEditorDialogComponent, selector: "mm-binding-editor-dialog", inputs: ["show", "property", "existingBindings", "primitives", "symbolInstances", "symbolDefinitions"], outputs: ["closed", "saved"] }, { kind: "component", type: SimulationPanelComponent, selector: "mm-simulation-panel", inputs: ["properties", "values"], outputs: ["valueChange", "resetValues"] }] });
|
|
28438
28438
|
}
|
|
28439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
28439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolEditorComponent, decorators: [{
|
|
28440
28440
|
type: Component,
|
|
28441
28441
|
args: [{ selector: 'mm-symbol-editor', standalone: true, imports: [
|
|
28442
28442
|
CommonModule,
|
|
@@ -28558,18 +28558,18 @@ class SymbolLibraryAdminComponent {
|
|
|
28558
28558
|
symbolLibraryService = inject(SymbolLibraryService);
|
|
28559
28559
|
svgImportService = inject(SvgImportService);
|
|
28560
28560
|
// State
|
|
28561
|
-
_libraries = signal([], ...(ngDevMode ? [{ debugName: "_libraries" }] : []));
|
|
28562
|
-
_selectedLibrary = signal(null, ...(ngDevMode ? [{ debugName: "_selectedLibrary" }] : []));
|
|
28563
|
-
_selectedSymbol = signal(null, ...(ngDevMode ? [{ debugName: "_selectedSymbol" }] : []));
|
|
28564
|
-
_editingSymbol = signal(null, ...(ngDevMode ? [{ debugName: "_editingSymbol" }] : []));
|
|
28565
|
-
_isLoading = signal(false, ...(ngDevMode ? [{ debugName: "_isLoading" }] : []));
|
|
28566
|
-
_isSaving = signal(false, ...(ngDevMode ? [{ debugName: "_isSaving" }] : []));
|
|
28567
|
-
_isEditMode = signal(false, ...(ngDevMode ? [{ debugName: "_isEditMode" }] : []));
|
|
28568
|
-
_showLibraryDialog = signal(false, ...(ngDevMode ? [{ debugName: "_showLibraryDialog" }] : []));
|
|
28569
|
-
_showSymbolDialog = signal(false, ...(ngDevMode ? [{ debugName: "_showSymbolDialog" }] : []));
|
|
28570
|
-
_showDeleteDialog = signal(false, ...(ngDevMode ? [{ debugName: "_showDeleteDialog" }] : []));
|
|
28571
|
-
_showSettingsPanel = signal(true, ...(ngDevMode ? [{ debugName: "_showSettingsPanel" }] : []));
|
|
28572
|
-
_isDeleting = signal(false, ...(ngDevMode ? [{ debugName: "_isDeleting" }] : []));
|
|
28561
|
+
_libraries = signal([], ...(ngDevMode ? [{ debugName: "_libraries" }] : /* istanbul ignore next */ []));
|
|
28562
|
+
_selectedLibrary = signal(null, ...(ngDevMode ? [{ debugName: "_selectedLibrary" }] : /* istanbul ignore next */ []));
|
|
28563
|
+
_selectedSymbol = signal(null, ...(ngDevMode ? [{ debugName: "_selectedSymbol" }] : /* istanbul ignore next */ []));
|
|
28564
|
+
_editingSymbol = signal(null, ...(ngDevMode ? [{ debugName: "_editingSymbol" }] : /* istanbul ignore next */ []));
|
|
28565
|
+
_isLoading = signal(false, ...(ngDevMode ? [{ debugName: "_isLoading" }] : /* istanbul ignore next */ []));
|
|
28566
|
+
_isSaving = signal(false, ...(ngDevMode ? [{ debugName: "_isSaving" }] : /* istanbul ignore next */ []));
|
|
28567
|
+
_isEditMode = signal(false, ...(ngDevMode ? [{ debugName: "_isEditMode" }] : /* istanbul ignore next */ []));
|
|
28568
|
+
_showLibraryDialog = signal(false, ...(ngDevMode ? [{ debugName: "_showLibraryDialog" }] : /* istanbul ignore next */ []));
|
|
28569
|
+
_showSymbolDialog = signal(false, ...(ngDevMode ? [{ debugName: "_showSymbolDialog" }] : /* istanbul ignore next */ []));
|
|
28570
|
+
_showDeleteDialog = signal(false, ...(ngDevMode ? [{ debugName: "_showDeleteDialog" }] : /* istanbul ignore next */ []));
|
|
28571
|
+
_showSettingsPanel = signal(true, ...(ngDevMode ? [{ debugName: "_showSettingsPanel" }] : /* istanbul ignore next */ []));
|
|
28572
|
+
_isDeleting = signal(false, ...(ngDevMode ? [{ debugName: "_isDeleting" }] : /* istanbul ignore next */ []));
|
|
28573
28573
|
// Public signals
|
|
28574
28574
|
libraries = this._libraries.asReadonly();
|
|
28575
28575
|
selectedLibrary = this._selectedLibrary.asReadonly();
|
|
@@ -29452,8 +29452,8 @@ class SymbolLibraryAdminComponent {
|
|
|
29452
29452
|
return { x: pos.x, y: pos.y, width: 50, height: 50 };
|
|
29453
29453
|
}
|
|
29454
29454
|
}
|
|
29455
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
29456
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
29455
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryAdminComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29456
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SymbolLibraryAdminComponent, isStandalone: true, selector: "mm-symbol-library-admin", viewQueries: [{ propertyName: "symbolEditor", first: true, predicate: ["symbolEditor"], descendants: true }, { propertyName: "svgFileInputRef", first: true, predicate: ["svgFileInput"], descendants: true }], ngImport: i0, template: `
|
|
29457
29457
|
<div class="symbol-admin">
|
|
29458
29458
|
<div class="admin-header">
|
|
29459
29459
|
<h2>Symbol Library Admin</h2>
|
|
@@ -29940,7 +29940,7 @@ class SymbolLibraryAdminComponent {
|
|
|
29940
29940
|
</div>
|
|
29941
29941
|
`, isInline: true, styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;min-height:0;overflow:hidden}.symbol-admin{display:flex;flex-direction:column;flex:1;height:100%;min-height:0;overflow:hidden;background:#f5f5f5}.admin-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:1rem;background:#fff;border-bottom:1px solid #e0e0e0}.admin-header h2{margin:0;font-size:18px;font-weight:500}.header-actions{display:flex;align-items:center;gap:.75rem}.edit-label{font-size:14px;color:#666;margin-right:.5rem}.admin-content{display:flex;flex:1;overflow:hidden;gap:1px;background:#e0e0e0}.edit-mode-container{display:flex;flex:1;height:100%;min-height:0;overflow:hidden}.edit-settings{width:220px;background:#fff;border-right:1px solid #e0e0e0;overflow-y:auto;flex-shrink:0}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:#f5f5f5;border-bottom:1px solid #e0e0e0;font-size:12px;font-weight:600;color:#333}.settings-close{width:20px;height:20px;background:transparent;border:none;cursor:pointer;font-size:16px;color:#666;padding:0;display:flex;align-items:center;justify-content:center;border-radius:2px}.settings-close:hover{background:#e0e0e0;color:#333}.settings-collapsed{width:28px;background:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;align-items:center;padding:.5rem 0;cursor:pointer;flex-shrink:0;writing-mode:vertical-rl;text-orientation:mixed}.settings-collapsed:hover{background:#f0f0f0}.settings-collapsed .collapsed-icon{font-size:14px;color:#666;margin-bottom:.5rem}.settings-collapsed .collapsed-label{font-size:11px;color:#666;font-weight:500}.settings-section{margin-bottom:1rem;padding:0 .75rem .75rem;border-bottom:1px solid #f0f0f0}.settings-section:first-of-type{padding-top:.75rem}.settings-section:last-child{border-bottom:none;margin-bottom:0}.settings-section h4{margin:0 0 .5rem;font-size:12px;font-weight:600;color:#666;text-transform:uppercase}.editor-container{flex:1;display:flex;height:100%;min-width:0;min-height:0}.libraries-panel,.symbols-panel,.editor-panel{display:flex;flex-direction:column;background:#fff}.libraries-panel{width:250px}.symbols-panel{width:300px}.editor-panel{flex:1}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem;border-bottom:1px solid #e0e0e0;background:#fafafa}.panel-header h3{margin:0;font-size:14px;font-weight:500}.panel-content{flex:1;overflow-y:auto;padding:.5rem}.loading,.empty-state{padding:2rem 1rem;text-align:center;color:#999;font-size:13px}.library-item{padding:.75rem;border:1px solid #e0e0e0;border-radius:4px;margin-bottom:.5rem;cursor:pointer;transition:all .15s ease}.library-item:hover{border-color:#1976d2;background:#f5f5f5}.library-item.selected{border-color:#1976d2;background:#e3f2fd}.library-name{font-weight:500;margin-bottom:.25rem}.library-info{font-size:11px;color:#666}.symbol-item{display:flex;align-items:center;gap:.75rem;padding:.5rem;border:1px solid #e0e0e0;border-radius:4px;margin-bottom:.5rem;cursor:pointer;transition:all .15s ease}.symbol-item:hover,.symbol-item.selected{border-color:#9c27b0;background:#f3e5f5}.symbol-preview{width:48px;height:48px;background:#fafafa;border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center}.symbol-preview img{max-width:100%;max-height:100%;object-fit:contain}.preview-svg{width:100%;height:100%}.symbol-info{flex:1}.symbol-name{font-weight:500;margin-bottom:.25rem}.symbol-size{font-size:11px;color:#666}.symbol-details{margin-bottom:1rem}.detail-row{display:flex;padding:.5rem 0;border-bottom:1px solid #f0f0f0}.detail-row label{width:100px;color:#666;font-size:12px}.detail-row span{flex:1;font-size:13px}.symbol-preview-large{background:#fafafa;border:1px solid #e0e0e0;border-radius:4px;padding:1rem;display:flex;align-items:center;justify-content:center;min-height:200px}.symbol-preview-large svg{max-width:100%;max-height:300px}.edit-form{display:flex;flex-direction:column;gap:.5rem}.dialog-content{padding:1rem}.form-group{margin-bottom:.75rem}.form-group label{display:block;margin-bottom:.25rem;font-size:12px;font-weight:500;color:#666}.form-group input,.form-group textarea,.form-group select{width:100%;box-sizing:border-box}.form-group textarea{min-height:40px}.form-row{display:flex;gap:.5rem}.form-row .form-group{flex:1}.template-select{padding:.5rem;border:1px solid #e0e0e0;border-radius:4px;font-size:14px}.svg-import-group{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;background:#f5f5f5;border-radius:4px;margin-top:.5rem}.svg-filename{font-weight:500;color:#1976d2}.svg-info{font-size:12px;color:#666}.svg-scale-group{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:#e3f2fd;border-radius:4px;margin-top:.25rem}.svg-scale-group label{font-weight:500;margin:0}.scale-info{font-size:12px;color:#666;flex:1}.warning-text{color:#d32f2f;font-size:14px;margin-top:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: i3$1.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i3$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: i3$1.TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: NumericTextBoxModule }, { kind: "ngmodule", type: DialogsModule }, { kind: "component", type: i3.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: i3.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }, { kind: "component", type: SymbolEditorComponent, selector: "mm-symbol-editor", inputs: ["symbol", "canvasWidth", "canvasHeight", "gridSize", "showPropertyEditorPanel", "useDockview", "symbolSettings"], outputs: ["symbolChange", "saveRequest", "symbolSettingsChange"] }] });
|
|
29942
29942
|
}
|
|
29943
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
29943
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryAdminComponent, decorators: [{
|
|
29944
29944
|
type: Component,
|
|
29945
29945
|
args: [{ selector: 'mm-symbol-library-admin', standalone: true, imports: [
|
|
29946
29946
|
CommonModule,
|
|
@@ -30484,10 +30484,10 @@ class SymbolLibraryDataSourceDirective extends DataSourceBase {
|
|
|
30484
30484
|
refresh() {
|
|
30485
30485
|
this.fetchAgain();
|
|
30486
30486
|
}
|
|
30487
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
30488
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
30487
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryDataSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
30488
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: SymbolLibraryDataSourceDirective, isStandalone: true, selector: "[mmSymbolLibraryDataSource]", providers: [{ provide: DataSourceBase, useExisting: forwardRef(() => SymbolLibraryDataSourceDirective) }], exportAs: ["mmSymbolLibraryDataSource"], usesInheritance: true, ngImport: i0 });
|
|
30489
30489
|
}
|
|
30490
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
30490
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryDataSourceDirective, decorators: [{
|
|
30491
30491
|
type: Directive,
|
|
30492
30492
|
args: [{
|
|
30493
30493
|
selector: "[mmSymbolLibraryDataSource]",
|
|
@@ -30614,10 +30614,10 @@ class SymbolLibraryListComponent {
|
|
|
30614
30614
|
}
|
|
30615
30615
|
}
|
|
30616
30616
|
};
|
|
30617
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
30618
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
30617
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30618
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: SymbolLibraryListComponent, isStandalone: true, selector: "mm-symbol-library-list", viewQueries: [{ propertyName: "dataSource", first: true, predicate: ["dir"], descendants: true }], ngImport: i0, template: "<div class=\"symbol-library-list-container\">\n <mm-list-view\n mmSymbolLibraryDataSource\n #dir=\"mmSymbolLibraryDataSource\"\n [sortable]=\"true\"\n [searchTextBoxEnabled]=\"true\"\n [selectable]=\"{mode: 'multiple', enabled: true}\"\n [pageable]=\"{buttonCount: 3, pageSizes: [10, 20, 50, 100]}\"\n [pageSize]=\"20\"\n [columns]=\"[\n {field: 'name', displayName: 'Name', dataType: 'text'},\n {field: 'description', displayName: 'Description', dataType: 'text'},\n {field: 'symbolCount', displayName: 'Symbols', dataType: 'numeric'},\n {field: 'isReadOnly', displayName: 'Read Only', dataType: 'boolean'}\n ]\"\n [actionCommandItems]=\"[\n {id: 'view', type:'link', text: 'View Symbols', svgIcon: viewIcon, onClick: onViewClick}\n ]\"\n [leftToolbarActions]=\"[\n {id: 'new', type:'link', text: 'New Library', svgIcon: plusIcon, onClick: onNewLibrary}\n ]\"\n [contextMenuCommandItems]=\"[\n {id: 'delete', type:'link', text: 'Delete', onClick: onDeleteClick, svgIcon: deleteIcon}\n ]\"\n (rowClicked)=\"onRowClick($event)\">\n </mm-list-view>\n</div>\n", styles: [".symbol-library-list-container{display:flex;flex-direction:column;height:100%;padding:16px;gap:16px}\n"], dependencies: [{ kind: "directive", type: SymbolLibraryDataSourceDirective, selector: "[mmSymbolLibraryDataSource]", exportAs: ["mmSymbolLibraryDataSource"] }, { kind: "component", type: ListViewComponent, selector: "mm-list-view", inputs: ["pageSize", "skip", "rowIsClickable", "showRowCheckBoxes", "showRowSelectAllCheckBox", "contextMenuType", "leftToolbarActions", "rightToolbarActions", "actionCommandItems", "contextMenuCommandItems", "excelExportFileName", "pdfExportFileName", "pageable", "sortable", "rowFilterEnabled", "searchTextBoxEnabled", "messages", "selectable", "columns"], outputs: ["rowClicked"] }] });
|
|
30619
30619
|
}
|
|
30620
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
30620
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryListComponent, decorators: [{
|
|
30621
30621
|
type: Component,
|
|
30622
30622
|
args: [{ selector: 'mm-symbol-library-list', standalone: true, imports: [
|
|
30623
30623
|
SymbolLibraryDataSourceDirective,
|
|
@@ -30654,12 +30654,12 @@ class SymbolLibraryDetailComponent {
|
|
|
30654
30654
|
deleteIcon = trashIcon;
|
|
30655
30655
|
backIcon = arrowLeftIcon;
|
|
30656
30656
|
uploadIcon = uploadIcon;
|
|
30657
|
-
library = signal(null, ...(ngDevMode ? [{ debugName: "library" }] : []));
|
|
30658
|
-
isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
|
|
30659
|
-
selectedSymbol = signal(null, ...(ngDevMode ? [{ debugName: "selectedSymbol" }] : []));
|
|
30657
|
+
library = signal(null, ...(ngDevMode ? [{ debugName: "library" }] : /* istanbul ignore next */ []));
|
|
30658
|
+
isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
30659
|
+
selectedSymbol = signal(null, ...(ngDevMode ? [{ debugName: "selectedSymbol" }] : /* istanbul ignore next */ []));
|
|
30660
30660
|
// Dialog state
|
|
30661
|
-
showSymbolDialog = signal(false, ...(ngDevMode ? [{ debugName: "showSymbolDialog" }] : []));
|
|
30662
|
-
showSvgImportDialog = signal(false, ...(ngDevMode ? [{ debugName: "showSvgImportDialog" }] : []));
|
|
30661
|
+
showSymbolDialog = signal(false, ...(ngDevMode ? [{ debugName: "showSymbolDialog" }] : /* istanbul ignore next */ []));
|
|
30662
|
+
showSvgImportDialog = signal(false, ...(ngDevMode ? [{ debugName: "showSvgImportDialog" }] : /* istanbul ignore next */ []));
|
|
30663
30663
|
// New Symbol form data
|
|
30664
30664
|
newSymbol = {
|
|
30665
30665
|
name: '',
|
|
@@ -30677,8 +30677,8 @@ class SymbolLibraryDetailComponent {
|
|
|
30677
30677
|
width: 100,
|
|
30678
30678
|
height: 100
|
|
30679
30679
|
};
|
|
30680
|
-
libraryName = computed(() => this.library()?.name ?? 'Loading...', ...(ngDevMode ? [{ debugName: "libraryName" }] : []));
|
|
30681
|
-
symbols = computed(() => this.library()?.symbols ?? [], ...(ngDevMode ? [{ debugName: "symbols" }] : []));
|
|
30680
|
+
libraryName = computed(() => this.library()?.name ?? 'Loading...', ...(ngDevMode ? [{ debugName: "libraryName" }] : /* istanbul ignore next */ []));
|
|
30681
|
+
symbols = computed(() => this.library()?.symbols ?? [], ...(ngDevMode ? [{ debugName: "symbols" }] : /* istanbul ignore next */ []));
|
|
30682
30682
|
async ngOnInit() {
|
|
30683
30683
|
const libraryId = this.activatedRoute.snapshot.paramMap.get('libraryId');
|
|
30684
30684
|
if (libraryId) {
|
|
@@ -31153,10 +31153,10 @@ class SymbolLibraryDetailComponent {
|
|
|
31153
31153
|
const style = this.resolveStyle(primitive, styleClasses);
|
|
31154
31154
|
return style.stroke?.opacity ?? defaultOpacity;
|
|
31155
31155
|
}
|
|
31156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
31157
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SymbolLibraryDetailComponent, isStandalone: true, selector: "mm-symbol-library-detail", viewQueries: [{ propertyName: "svgFileInputRef", first: true, predicate: ["svgFileInput"], descendants: true }], ngImport: i0, template: "<div class=\"symbol-library-detail-container\">\n @if (isLoading()) {\n <div class=\"loading-container\">\n <div class=\"loading-spinner\"></div>\n <span>Loading library...</span>\n </div>\n } @else if (library()) {\n <!-- Header -->\n <div class=\"detail-header\">\n <div class=\"header-left\">\n <button kendoButton\n [svgIcon]=\"backIcon\"\n fillMode=\"flat\"\n title=\"Back to library list\"\n (click)=\"navigateBack()\">\n </button>\n <h2 class=\"library-title\">{{ libraryName() }}</h2>\n @if (library()?.isReadOnly) {\n <span class=\"readonly-badge\">Read Only</span>\n }\n </div>\n <div class=\"header-right\">\n <button kendoButton\n [svgIcon]=\"uploadIcon\"\n fillMode=\"outline\"\n title=\"Import SVG\"\n (click)=\"showSvgImportDialogFn()\"\n [disabled]=\"!!library()?.isReadOnly\">\n </button>\n <button kendoButton\n [svgIcon]=\"plusIcon\"\n themeColor=\"primary\"\n title=\"New Symbol\"\n (click)=\"showCreateSymbolDialog()\"\n [disabled]=\"!!library()?.isReadOnly\">\n </button>\n </div>\n </div>\n\n <!-- Symbols Grid -->\n <div class=\"symbols-grid\">\n @for (symbol of symbols(); track symbol.rtId) {\n <div class=\"symbol-card\"\n [class.selected]=\"selectedSymbol()?.rtId === symbol.rtId\"\n (click)=\"selectSymbol(symbol)\">\n <div class=\"symbol-preview\">\n <svg [attr.viewBox]=\"'0 0 ' + symbol.bounds.width + ' ' + symbol.bounds.height\" preserveAspectRatio=\"xMidYMid meet\">\n @for (primitive of symbol.primitives; track primitive.id) {\n @switch (primitive.type) {\n @case ('rectangle') {\n <rect\n [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config?.width\"\n [attr.height]=\"$any(primitive).config?.height\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses)\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n [attr.rx]=\"$any(primitive).config?.cornerRadius || 0\"\n [attr.ry]=\"$any(primitive).config?.cornerRadius || 0\"\n />\n }\n @case ('ellipse') {\n <ellipse\n [attr.cx]=\"primitive.position.x + ($any(primitive).config?.radiusX || 0)\"\n [attr.cy]=\"primitive.position.y + ($any(primitive).config?.radiusY || 0)\"\n [attr.rx]=\"$any(primitive).config?.radiusX\"\n [attr.ry]=\"$any(primitive).config?.radiusY\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses)\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('line') {\n <line\n [attr.x1]=\"$any(primitive).config?.start?.x\"\n [attr.y1]=\"$any(primitive).config?.start?.y\"\n [attr.x2]=\"$any(primitive).config?.end?.x\"\n [attr.y2]=\"$any(primitive).config?.end?.y\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('path') {\n <path\n [attr.d]=\"$any(primitive).config?.d\"\n [attr.transform]=\"'translate(' + primitive.position.x + ',' + primitive.position.y + ')'\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses, 'none')\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('text') {\n <text\n [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses, '#333333')\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.font-size]=\"$any(primitive).config?.fontSize || 12\"\n [attr.font-family]=\"$any(primitive).config?.fontFamily || 'sans-serif'\"\n >{{ $any(primitive).config?.text }}</text>\n }\n @case ('polyline') {\n <polyline\n [attr.points]=\"getPointsWithOffset(primitive)\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses, 'none')\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('polygon') {\n <polygon\n [attr.points]=\"getPointsWithOffset(primitive)\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses)\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n }\n }\n </svg>\n </div>\n <div class=\"symbol-info\">\n <span class=\"symbol-name\">{{ symbol.name }}</span>\n <div class=\"symbol-actions\">\n <button kendoButton [svgIcon]=\"editIcon\" fillMode=\"flat\" size=\"small\" (click)=\"editSymbol(symbol); $event.stopPropagation()\">\n </button>\n <button kendoButton [svgIcon]=\"deleteIcon\" fillMode=\"flat\" size=\"small\"\n [disabled]=\"!!library()?.isReadOnly\"\n (click)=\"deleteSymbol(symbol); $event.stopPropagation()\">\n </button>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"no-symbols\">\n <p>No symbols in this library</p>\n <button kendoButton [svgIcon]=\"plusIcon\" themeColor=\"primary\" (click)=\"showCreateSymbolDialog()\" [disabled]=\"!!library()?.isReadOnly\">\n Create First Symbol\n </button>\n </div>\n }\n </div>\n } @else {\n <div class=\"error-container\">\n <p>Library not found</p>\n <button kendoButton (click)=\"navigateBack()\">Go Back</button>\n </div>\n }\n</div>\n\n<!-- Create Symbol Dialog -->\n@if (showSymbolDialog()) {\n <kendo-dialog title=\"Create Symbol\" (close)=\"closeSymbolDialog()\" [width]=\"450\">\n <div class=\"dialog-content\">\n <div class=\"form-group\">\n <label>Name *</label>\n <input kendoTextBox [(ngModel)]=\"newSymbol.name\" placeholder=\"Symbol name\"/>\n </div>\n <div class=\"form-group\">\n <label>Description</label>\n <textarea kendoTextArea [(ngModel)]=\"newSymbol.description\" placeholder=\"Optional description\" rows=\"2\"></textarea>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Width</label>\n <kendo-numerictextbox [(ngModel)]=\"newSymbol.width\" [min]=\"10\" [max]=\"2000\" [step]=\"10\" [format]=\"'n0'\"></kendo-numerictextbox>\n </div>\n <div class=\"form-group\">\n <label>Height</label>\n <kendo-numerictextbox [(ngModel)]=\"newSymbol.height\" [min]=\"10\" [max]=\"2000\" [step]=\"10\" [format]=\"'n0'\"></kendo-numerictextbox>\n </div>\n </div>\n <div class=\"form-group\">\n <label>Category</label>\n <input kendoTextBox [(ngModel)]=\"newSymbol.category\" placeholder=\"e.g., Basic, Flow, Equipment\"/>\n </div>\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeSymbolDialog()\">Cancel</button>\n <button kendoButton themeColor=\"primary\" (click)=\"createSymbol()\" [disabled]=\"!newSymbol.name\">\n Create\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Import SVG Dialog -->\n@if (showSvgImportDialog()) {\n <kendo-dialog title=\"Import Symbol from SVG\" (close)=\"closeSvgImportDialog()\" [width]=\"500\">\n <div class=\"dialog-content\">\n <!-- Hidden file input -->\n <input #svgFileInput\n type=\"file\"\n accept=\".svg,image/svg+xml\"\n style=\"display: none\"\n (change)=\"onSvgFileSelected($event)\"/>\n\n <!-- File Selection -->\n <div class=\"form-group svg-file-group\">\n <button kendoButton (click)=\"svgFileInputRef.nativeElement.click()\">\n {{ svgImport.svgFileName ? 'Change SVG file...' : 'Select SVG file...' }}\n </button>\n @if (svgImport.svgFileName) {\n <div class=\"svg-file-info\">\n <span class=\"svg-filename\">{{ svgImport.svgFileName }}</span>\n <span class=\"svg-stats\">\n {{ svgImport.svgPrimitives?.length || 0 }} elements\n @if (svgImport.styleClasses && svgImport.styleClasses.length > 0) {\n , {{ svgImport.styleClasses.length }} style(s)\n }\n </span>\n </div>\n }\n </div>\n\n @if (svgImport.svgPrimitives) {\n <!-- Scale Control -->\n <div class=\"form-group svg-scale-group\">\n <label>Scale:</label>\n <kendo-numerictextbox\n [(ngModel)]=\"svgImport.svgScale\"\n [min]=\"0.1\"\n [max]=\"10\"\n [step]=\"0.1\"\n [decimals]=\"1\"\n [format]=\"'n1'\"\n (valueChange)=\"onSvgScaleChange($event)\"\n style=\"width: 100px\">\n </kendo-numerictextbox>\n <span class=\"scale-info\">\n Original: {{ svgImport.svgOriginalWidth }}\u00D7{{ svgImport.svgOriginalHeight }}px\n \u2192 {{ svgImport.width }}\u00D7{{ svgImport.height }}px\n </span>\n <button kendoButton look=\"flat\" (click)=\"resetSvgScale()\" title=\"Reset to 1x\">\n Reset\n </button>\n </div>\n\n <!-- Symbol Properties -->\n <div class=\"form-group\">\n <label>Name *</label>\n <input kendoTextBox [(ngModel)]=\"svgImport.name\" placeholder=\"Symbol name\"/>\n </div>\n <div class=\"form-group\">\n <label>Description</label>\n <textarea kendoTextArea [(ngModel)]=\"svgImport.description\" placeholder=\"Optional description\" rows=\"2\"></textarea>\n </div>\n <div class=\"form-group\">\n <label>Category</label>\n <input kendoTextBox [(ngModel)]=\"svgImport.category\" placeholder=\"e.g., Basic, Flow, Equipment\"/>\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeSvgImportDialog()\">Cancel</button>\n <button kendoButton themeColor=\"primary\"\n (click)=\"createSymbolFromSvg()\"\n [disabled]=\"!svgImport.name || !svgImport.svgPrimitives?.length\">\n Import\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n", styles: [":host{--card-bg: var(--symbol-card-bg, #1a2332);--card-border: var(--symbol-card-border, rgba(100, 206, 185, .3));--card-hover-border: var(--symbol-card-hover-border, #64ceb9);--card-preview-bg: var(--symbol-card-preview-bg, #394555);--card-info-border: var(--symbol-card-info-border, rgba(100, 206, 185, .2));--text-primary: var(--symbol-text-primary, #e0e0e0);--text-secondary: var(--symbol-text-secondary, #999);--accent-color: var(--symbol-accent-color, #64ceb9)}.symbol-library-detail-container{display:flex;flex-direction:column;height:100%;padding:12px 16px;gap:12px}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid var(--card-border);border-top-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.detail-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--card-border)}.header-left{display:flex;align-items:center;gap:8px}.library-title{margin:0;font-size:1.25rem;font-weight:500;color:var(--text-primary)}.readonly-badge{padding:4px 8px;font-size:.75rem;background:var(--card-preview-bg);border:1px solid var(--card-border);border-radius:4px;color:var(--text-secondary)}.symbols-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;flex:1;overflow-y:auto;padding:4px;align-content:start}.symbol-card{display:flex;flex-direction:column;background:var(--card-bg);border:1px solid var(--card-border);border-radius:8px;overflow:hidden;cursor:pointer;transition:border-color .2s,box-shadow .2s}.symbol-card:hover{border-color:var(--card-hover-border);box-shadow:0 2px 8px #0000004d}.symbol-card.selected{border-color:var(--accent-color);box-shadow:0 0 0 2px #64ceb94d}.symbol-preview{display:flex;align-items:center;justify-content:center;height:120px;padding:12px;background:var(--card-preview-bg)}.symbol-preview svg{width:100%;height:100%;max-width:120px;max-height:100px}.symbol-info{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid var(--card-info-border)}.symbol-name{font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}.symbol-actions{display:flex;gap:4px}.no-symbols{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px;gap:16px;color:var(--text-secondary)}.header-right{display:flex;gap:4px}.dialog-content{padding:16px 0}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:#333}.form-group input,.form-group textarea,.form-group kendo-numerictextbox{width:100%}.form-row{display:flex;gap:16px}.form-row .form-group{flex:1}.svg-file-group{display:flex;flex-direction:column;gap:8px;padding:16px;background:#f5f5f5;border-radius:6px;margin-bottom:16px}.svg-file-info{display:flex;flex-direction:column;gap:4px}.svg-filename{font-weight:500;color:#1976d2}.svg-stats{font-size:12px;color:#666}.svg-scale-group{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#e3f2fd;border-radius:6px;margin-bottom:16px}.svg-scale-group label{font-weight:500;margin:0;white-space:nowrap}.svg-scale-group kendo-numerictextbox{width:100px}.svg-scale-group .scale-info{flex:1;font-size:12px;color:#666}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: SVGIconModule }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: i3$1.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i3$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: i3$1.TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: NumericTextBoxModule }, { kind: "ngmodule", type: DialogsModule }, { kind: "component", type: i3.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: i3.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }] });
|
|
31156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
31157
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SymbolLibraryDetailComponent, isStandalone: true, selector: "mm-symbol-library-detail", viewQueries: [{ propertyName: "svgFileInputRef", first: true, predicate: ["svgFileInput"], descendants: true }], ngImport: i0, template: "<div class=\"symbol-library-detail-container\">\n @if (isLoading()) {\n <div class=\"loading-container\">\n <div class=\"loading-spinner\"></div>\n <span>Loading library...</span>\n </div>\n } @else if (library()) {\n <!-- Header -->\n <div class=\"detail-header\">\n <div class=\"header-left\">\n <button kendoButton\n [svgIcon]=\"backIcon\"\n fillMode=\"flat\"\n title=\"Back to library list\"\n (click)=\"navigateBack()\">\n </button>\n <h2 class=\"library-title\">{{ libraryName() }}</h2>\n @if (library()?.isReadOnly) {\n <span class=\"readonly-badge\">Read Only</span>\n }\n </div>\n <div class=\"header-right\">\n <button kendoButton\n [svgIcon]=\"uploadIcon\"\n fillMode=\"outline\"\n title=\"Import SVG\"\n (click)=\"showSvgImportDialogFn()\"\n [disabled]=\"!!library()?.isReadOnly\">\n </button>\n <button kendoButton\n [svgIcon]=\"plusIcon\"\n themeColor=\"primary\"\n title=\"New Symbol\"\n (click)=\"showCreateSymbolDialog()\"\n [disabled]=\"!!library()?.isReadOnly\">\n </button>\n </div>\n </div>\n\n <!-- Symbols Grid -->\n <div class=\"symbols-grid\">\n @for (symbol of symbols(); track symbol.rtId) {\n <div class=\"symbol-card\"\n [class.selected]=\"selectedSymbol()?.rtId === symbol.rtId\"\n (click)=\"selectSymbol(symbol)\">\n <div class=\"symbol-preview\">\n <svg [attr.viewBox]=\"'0 0 ' + symbol.bounds.width + ' ' + symbol.bounds.height\" preserveAspectRatio=\"xMidYMid meet\">\n @for (primitive of symbol.primitives; track primitive.id) {\n @switch (primitive.type) {\n @case ('rectangle') {\n <rect\n [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.width]=\"$any(primitive).config?.width\"\n [attr.height]=\"$any(primitive).config?.height\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses)\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n [attr.rx]=\"$any(primitive).config?.cornerRadius || 0\"\n [attr.ry]=\"$any(primitive).config?.cornerRadius || 0\"\n />\n }\n @case ('ellipse') {\n <ellipse\n [attr.cx]=\"primitive.position.x + ($any(primitive).config?.radiusX || 0)\"\n [attr.cy]=\"primitive.position.y + ($any(primitive).config?.radiusY || 0)\"\n [attr.rx]=\"$any(primitive).config?.radiusX\"\n [attr.ry]=\"$any(primitive).config?.radiusY\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses)\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('line') {\n <line\n [attr.x1]=\"$any(primitive).config?.start?.x\"\n [attr.y1]=\"$any(primitive).config?.start?.y\"\n [attr.x2]=\"$any(primitive).config?.end?.x\"\n [attr.y2]=\"$any(primitive).config?.end?.y\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('path') {\n <path\n [attr.d]=\"$any(primitive).config?.d\"\n [attr.transform]=\"'translate(' + primitive.position.x + ',' + primitive.position.y + ')'\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses, 'none')\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('text') {\n <text\n [attr.x]=\"primitive.position.x\"\n [attr.y]=\"primitive.position.y\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses, '#333333')\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.font-size]=\"$any(primitive).config?.fontSize || 12\"\n [attr.font-family]=\"$any(primitive).config?.fontFamily || 'sans-serif'\"\n >{{ $any(primitive).config?.text }}</text>\n }\n @case ('polyline') {\n <polyline\n [attr.points]=\"getPointsWithOffset(primitive)\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses, 'none')\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n @case ('polygon') {\n <polygon\n [attr.points]=\"getPointsWithOffset(primitive)\"\n [attr.fill]=\"getFillColor(primitive, symbol.styleClasses)\"\n [attr.stroke]=\"getStrokeColor(primitive, symbol.styleClasses)\"\n [attr.stroke-width]=\"getStrokeWidth(primitive, symbol.styleClasses)\"\n [attr.fill-opacity]=\"getFillOpacity(primitive, symbol.styleClasses)\"\n [attr.stroke-opacity]=\"getStrokeOpacity(primitive, symbol.styleClasses)\"\n />\n }\n }\n }\n </svg>\n </div>\n <div class=\"symbol-info\">\n <span class=\"symbol-name\">{{ symbol.name }}</span>\n <div class=\"symbol-actions\">\n <button kendoButton [svgIcon]=\"editIcon\" fillMode=\"flat\" size=\"small\" (click)=\"editSymbol(symbol); $event.stopPropagation()\">\n </button>\n <button kendoButton [svgIcon]=\"deleteIcon\" fillMode=\"flat\" size=\"small\"\n [disabled]=\"!!library()?.isReadOnly\"\n (click)=\"deleteSymbol(symbol); $event.stopPropagation()\">\n </button>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"no-symbols\">\n <p>No symbols in this library</p>\n <button kendoButton [svgIcon]=\"plusIcon\" themeColor=\"primary\" (click)=\"showCreateSymbolDialog()\" [disabled]=\"!!library()?.isReadOnly\">\n Create First Symbol\n </button>\n </div>\n }\n </div>\n } @else {\n <div class=\"error-container\">\n <p>Library not found</p>\n <button kendoButton (click)=\"navigateBack()\">Go Back</button>\n </div>\n }\n</div>\n\n<!-- Create Symbol Dialog -->\n@if (showSymbolDialog()) {\n <kendo-dialog title=\"Create Symbol\" (close)=\"closeSymbolDialog()\" [width]=\"450\">\n <div class=\"dialog-content\">\n <div class=\"form-group\">\n <label>Name *</label>\n <input kendoTextBox [(ngModel)]=\"newSymbol.name\" placeholder=\"Symbol name\"/>\n </div>\n <div class=\"form-group\">\n <label>Description</label>\n <textarea kendoTextArea [(ngModel)]=\"newSymbol.description\" placeholder=\"Optional description\" rows=\"2\"></textarea>\n </div>\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label>Width</label>\n <kendo-numerictextbox [(ngModel)]=\"newSymbol.width\" [min]=\"10\" [max]=\"2000\" [step]=\"10\" [format]=\"'n0'\"></kendo-numerictextbox>\n </div>\n <div class=\"form-group\">\n <label>Height</label>\n <kendo-numerictextbox [(ngModel)]=\"newSymbol.height\" [min]=\"10\" [max]=\"2000\" [step]=\"10\" [format]=\"'n0'\"></kendo-numerictextbox>\n </div>\n </div>\n <div class=\"form-group\">\n <label>Category</label>\n <input kendoTextBox [(ngModel)]=\"newSymbol.category\" placeholder=\"e.g., Basic, Flow, Equipment\"/>\n </div>\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeSymbolDialog()\">Cancel</button>\n <button kendoButton themeColor=\"primary\" (click)=\"createSymbol()\" [disabled]=\"!newSymbol.name\">\n Create\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Import SVG Dialog -->\n@if (showSvgImportDialog()) {\n <kendo-dialog title=\"Import Symbol from SVG\" (close)=\"closeSvgImportDialog()\" [width]=\"500\">\n <div class=\"dialog-content\">\n <!-- Hidden file input -->\n <input #svgFileInput\n type=\"file\"\n accept=\".svg,image/svg+xml\"\n style=\"display: none\"\n (change)=\"onSvgFileSelected($event)\"/>\n\n <!-- File Selection -->\n <div class=\"form-group svg-file-group\">\n <button kendoButton (click)=\"svgFileInputRef.nativeElement.click()\">\n {{ svgImport.svgFileName ? 'Change SVG file...' : 'Select SVG file...' }}\n </button>\n @if (svgImport.svgFileName) {\n <div class=\"svg-file-info\">\n <span class=\"svg-filename\">{{ svgImport.svgFileName }}</span>\n <span class=\"svg-stats\">\n {{ svgImport.svgPrimitives?.length || 0 }} elements\n @if (svgImport.styleClasses && svgImport.styleClasses.length > 0) {\n , {{ svgImport.styleClasses.length }} style(s)\n }\n </span>\n </div>\n }\n </div>\n\n @if (svgImport.svgPrimitives) {\n <!-- Scale Control -->\n <div class=\"form-group svg-scale-group\">\n <label>Scale:</label>\n <kendo-numerictextbox\n [(ngModel)]=\"svgImport.svgScale\"\n [min]=\"0.1\"\n [max]=\"10\"\n [step]=\"0.1\"\n [decimals]=\"1\"\n [format]=\"'n1'\"\n (valueChange)=\"onSvgScaleChange($event)\"\n style=\"width: 100px\">\n </kendo-numerictextbox>\n <span class=\"scale-info\">\n Original: {{ svgImport.svgOriginalWidth }}\u00D7{{ svgImport.svgOriginalHeight }}px\n \u2192 {{ svgImport.width }}\u00D7{{ svgImport.height }}px\n </span>\n <button kendoButton look=\"flat\" (click)=\"resetSvgScale()\" title=\"Reset to 1x\">\n Reset\n </button>\n </div>\n\n <!-- Symbol Properties -->\n <div class=\"form-group\">\n <label>Name *</label>\n <input kendoTextBox [(ngModel)]=\"svgImport.name\" placeholder=\"Symbol name\"/>\n </div>\n <div class=\"form-group\">\n <label>Description</label>\n <textarea kendoTextArea [(ngModel)]=\"svgImport.description\" placeholder=\"Optional description\" rows=\"2\"></textarea>\n </div>\n <div class=\"form-group\">\n <label>Category</label>\n <input kendoTextBox [(ngModel)]=\"svgImport.category\" placeholder=\"e.g., Basic, Flow, Equipment\"/>\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeSvgImportDialog()\">Cancel</button>\n <button kendoButton themeColor=\"primary\"\n (click)=\"createSymbolFromSvg()\"\n [disabled]=\"!svgImport.name || !svgImport.svgPrimitives?.length\">\n Import\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n", styles: [":host{--card-bg: var(--symbol-card-bg, #1a2332);--card-border: var(--symbol-card-border, rgba(100, 206, 185, .3));--card-hover-border: var(--symbol-card-hover-border, #64ceb9);--card-preview-bg: var(--symbol-card-preview-bg, #394555);--card-info-border: var(--symbol-card-info-border, rgba(100, 206, 185, .2));--text-primary: var(--symbol-text-primary, #e0e0e0);--text-secondary: var(--symbol-text-secondary, #999);--accent-color: var(--symbol-accent-color, #64ceb9)}.symbol-library-detail-container{display:flex;flex-direction:column;height:100%;padding:12px 16px;gap:12px}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid var(--card-border);border-top-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.detail-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--card-border)}.header-left{display:flex;align-items:center;gap:8px}.library-title{margin:0;font-size:1.25rem;font-weight:500;color:var(--text-primary)}.readonly-badge{padding:4px 8px;font-size:.75rem;background:var(--card-preview-bg);border:1px solid var(--card-border);border-radius:4px;color:var(--text-secondary)}.symbols-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;flex:1;overflow-y:auto;padding:4px;align-content:start}.symbol-card{display:flex;flex-direction:column;background:var(--card-bg);border:1px solid var(--card-border);border-radius:8px;overflow:hidden;cursor:pointer;transition:border-color .2s,box-shadow .2s}.symbol-card:hover{border-color:var(--card-hover-border);box-shadow:0 2px 8px #0000004d}.symbol-card.selected{border-color:var(--accent-color);box-shadow:0 0 0 2px #64ceb94d}.symbol-preview{display:flex;align-items:center;justify-content:center;height:120px;padding:12px;background:var(--card-preview-bg)}.symbol-preview svg{width:100%;height:100%;max-width:120px;max-height:100px}.symbol-info{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid var(--card-info-border)}.symbol-name{font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary)}.symbol-actions{display:flex;gap:4px}.no-symbols{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px;gap:16px;color:var(--text-secondary)}.header-right{display:flex;gap:4px}.dialog-content{padding:16px 0}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:#333}.form-group input,.form-group textarea,.form-group kendo-numerictextbox{width:100%}.form-row{display:flex;gap:16px}.form-row .form-group{flex:1}.svg-file-group{display:flex;flex-direction:column;gap:8px;padding:16px;background:#f5f5f5;border-radius:6px;margin-bottom:16px}.svg-file-info{display:flex;flex-direction:column;gap:4px}.svg-filename{font-weight:500;color:#1976d2}.svg-stats{font-size:12px;color:#666}.svg-scale-group{display:flex;align-items:center;gap:12px;padding:12px 16px;background:#e3f2fd;border-radius:6px;margin-bottom:16px}.svg-scale-group label{font-weight:500;margin:0;white-space:nowrap}.svg-scale-group kendo-numerictextbox{width:100px}.svg-scale-group .scale-info{flex:1;font-size:12px;color:#666}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: SVGIconModule }, { kind: "ngmodule", type: InputsModule }, { kind: "directive", type: i3$1.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { kind: "component", type: i3$1.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: i3$1.TextAreaDirective, selector: "textarea[kendoTextArea]", inputs: ["autoSize", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: NumericTextBoxModule }, { kind: "ngmodule", type: DialogsModule }, { kind: "component", type: i3.DialogComponent, selector: "kendo-dialog", inputs: ["actions", "actionsLayout", "autoFocusedElement", "title", "width", "minWidth", "maxWidth", "height", "minHeight", "maxHeight", "animation", "themeColor"], outputs: ["action", "close"], exportAs: ["kendoDialog"] }, { kind: "component", type: i3.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }] });
|
|
31158
31158
|
}
|
|
31159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
31159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolLibraryDetailComponent, decorators: [{
|
|
31160
31160
|
type: Component,
|
|
31161
31161
|
args: [{ selector: 'mm-symbol-library-detail', standalone: true, imports: [
|
|
31162
31162
|
CommonModule,
|
|
@@ -31192,10 +31192,10 @@ class SymbolEditorPageComponent {
|
|
|
31192
31192
|
symbolEditor;
|
|
31193
31193
|
backIcon = arrowLeftIcon;
|
|
31194
31194
|
saveIcon = saveIcon;
|
|
31195
|
-
library = signal(null, ...(ngDevMode ? [{ debugName: "library" }] : []));
|
|
31196
|
-
symbol = signal(null, ...(ngDevMode ? [{ debugName: "symbol" }] : []));
|
|
31197
|
-
isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
|
|
31198
|
-
isSaving = signal(false, ...(ngDevMode ? [{ debugName: "isSaving" }] : []));
|
|
31195
|
+
library = signal(null, ...(ngDevMode ? [{ debugName: "library" }] : /* istanbul ignore next */ []));
|
|
31196
|
+
symbol = signal(null, ...(ngDevMode ? [{ debugName: "symbol" }] : /* istanbul ignore next */ []));
|
|
31197
|
+
isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
31198
|
+
isSaving = signal(false, ...(ngDevMode ? [{ debugName: "isSaving" }] : /* istanbul ignore next */ []));
|
|
31199
31199
|
_hasUnsavedChanges = false;
|
|
31200
31200
|
_currentSymbol = null;
|
|
31201
31201
|
/**
|
|
@@ -31222,7 +31222,7 @@ class SymbolEditorPageComponent {
|
|
|
31222
31222
|
canvasHeight: sym.canvasSize?.height ?? sym.bounds?.height ?? 300,
|
|
31223
31223
|
gridSize: sym.gridSize ?? 10
|
|
31224
31224
|
};
|
|
31225
|
-
}, ...(ngDevMode ? [{ debugName: "symbolSettings" }] : []));
|
|
31225
|
+
}, ...(ngDevMode ? [{ debugName: "symbolSettings" }] : /* istanbul ignore next */ []));
|
|
31226
31226
|
// Implementation of HasUnsavedChanges interface
|
|
31227
31227
|
hasUnsavedChanges() {
|
|
31228
31228
|
return this._hasUnsavedChanges;
|
|
@@ -31390,12 +31390,12 @@ class SymbolEditorPageComponent {
|
|
|
31390
31390
|
event.returnValue = '';
|
|
31391
31391
|
}
|
|
31392
31392
|
}
|
|
31393
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
31394
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
31393
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolEditorPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
31394
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: SymbolEditorPageComponent, isStandalone: true, selector: "mm-symbol-editor-page", host: { listeners: { "window:beforeunload": "handleBeforeUnload($event)" } }, providers: [
|
|
31395
31395
|
{ provide: HAS_UNSAVED_CHANGES, useExisting: SymbolEditorPageComponent }
|
|
31396
31396
|
], viewQueries: [{ propertyName: "symbolEditor", first: true, predicate: SymbolEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"symbol-editor-page-container\">\n @if (isLoading()) {\n <div class=\"loading-container\">\n <div class=\"loading-spinner\"></div>\n <span>Loading symbol editor...</span>\n </div>\n } @else if (symbol()) {\n <!-- Editor Header -->\n <div class=\"editor-header\">\n <div class=\"header-left\">\n <button kendoButton [svgIcon]=\"backIcon\" fillMode=\"flat\" (click)=\"navigateBack()\">\n Back\n </button>\n <div class=\"symbol-title\">\n <span class=\"library-name\">{{ library()?.name }}</span>\n <span class=\"separator\">/</span>\n <span class=\"symbol-name\">{{ symbol()?.name }}</span>\n @if (hasUnsavedChanges()) {\n <span class=\"unsaved-indicator\">*</span>\n }\n </div>\n </div>\n <div class=\"header-right\">\n <button kendoButton\n [svgIcon]=\"saveIcon\"\n themeColor=\"primary\"\n [disabled]=\"isSaving() || !hasUnsavedChanges()\"\n (click)=\"saveSymbol()\">\n {{ isSaving() ? 'Saving...' : 'Save' }}\n </button>\n </div>\n </div>\n\n <!-- Symbol Editor -->\n <div class=\"editor-content\">\n <mm-symbol-editor\n [symbol]=\"symbol()\"\n [canvasWidth]=\"symbol()?.canvasSize?.width ?? symbol()?.bounds?.width ?? 400\"\n [canvasHeight]=\"symbol()?.canvasSize?.height ?? symbol()?.bounds?.height ?? 300\"\n [gridSize]=\"symbol()?.gridSize ?? 10\"\n [useDockview]=\"true\"\n [symbolSettings]=\"symbolSettings()\"\n (symbolChange)=\"onSymbolChange($event)\"\n (saveRequest)=\"onSaveRequest($event)\"\n (symbolSettingsChange)=\"onSymbolSettingsChange($event)\">\n </mm-symbol-editor>\n </div>\n } @else {\n <div class=\"error-container\">\n <p>Symbol not found</p>\n <button kendoButton (click)=\"navigateBack()\">Go Back</button>\n </div>\n }\n</div>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;min-height:0;overflow:hidden;--editor-bg: var(--designer-bg, #f5f5f5);--editor-surface: var(--designer-surface, #ffffff);--editor-surface-alt: var(--designer-surface-alt, #f5f5f5);--editor-border: var(--designer-border, #e0e0e0);--editor-text: var(--designer-text, #333333);--editor-text-muted: var(--designer-text-muted, #666666);--editor-accent: var(--designer-accent, #1976d2)}.symbol-editor-page-container{display:flex;flex-direction:column;flex:1;height:100%;min-height:0;overflow:hidden;background:var(--editor-bg)}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:16px;color:var(--editor-text)}.loading-spinner{width:40px;height:40px;border:3px solid var(--editor-border);border-top-color:var(--editor-accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.editor-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--editor-surface);border-bottom:1px solid var(--editor-border);flex-shrink:0}.header-left{display:flex;align-items:center;gap:16px}.symbol-title{display:flex;align-items:center;gap:8px;font-size:1rem;color:var(--editor-text)}.library-name{color:var(--editor-text-muted)}.separator{color:var(--editor-border)}.symbol-name{font-weight:500;color:var(--editor-text)}.unsaved-indicator{color:#f44336;font-weight:700;font-size:1.2rem}.editor-content{display:flex;flex-direction:column;flex:1;overflow:hidden;min-height:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: SVGIconModule }, { kind: "component", type: SymbolEditorComponent, selector: "mm-symbol-editor", inputs: ["symbol", "canvasWidth", "canvasHeight", "gridSize", "showPropertyEditorPanel", "useDockview", "symbolSettings"], outputs: ["symbolChange", "saveRequest", "symbolSettingsChange"] }] });
|
|
31397
31397
|
}
|
|
31398
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
31398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: SymbolEditorPageComponent, decorators: [{
|
|
31399
31399
|
type: Component,
|
|
31400
31400
|
args: [{ selector: 'mm-symbol-editor-page', standalone: true, imports: [
|
|
31401
31401
|
CommonModule,
|
|
@@ -31453,10 +31453,10 @@ class ProcessDiagramDataSourceDirective extends DataSourceBase {
|
|
|
31453
31453
|
refresh() {
|
|
31454
31454
|
this.fetchAgain();
|
|
31455
31455
|
}
|
|
31456
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
31457
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
31456
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDiagramDataSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
31457
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: ProcessDiagramDataSourceDirective, isStandalone: true, selector: "[mmProcessDiagramDataSource]", providers: [{ provide: DataSourceBase, useExisting: forwardRef(() => ProcessDiagramDataSourceDirective) }], exportAs: ["mmProcessDiagramDataSource"], usesInheritance: true, ngImport: i0 });
|
|
31458
31458
|
}
|
|
31459
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
31459
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDiagramDataSourceDirective, decorators: [{
|
|
31460
31460
|
type: Directive,
|
|
31461
31461
|
args: [{
|
|
31462
31462
|
selector: "[mmProcessDiagramDataSource]",
|
|
@@ -31582,10 +31582,10 @@ class ProcessDiagramListComponent {
|
|
|
31582
31582
|
}
|
|
31583
31583
|
}
|
|
31584
31584
|
};
|
|
31585
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
31586
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
31585
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDiagramListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
31586
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ProcessDiagramListComponent, isStandalone: true, selector: "mm-process-diagram-list", viewQueries: [{ propertyName: "dataSource", first: true, predicate: ["dir"], descendants: true }], ngImport: i0, template: "<div class=\"process-diagram-list-container\">\n <mm-list-view\n mmProcessDiagramDataSource\n #dir=\"mmProcessDiagramDataSource\"\n [sortable]=\"true\"\n [searchTextBoxEnabled]=\"true\"\n [selectable]=\"{mode: 'multiple', enabled: true}\"\n [pageable]=\"{buttonCount: 3, pageSizes: [10, 20, 50, 100]}\"\n [pageSize]=\"20\"\n [columns]=\"[\n {field: 'name', displayName: 'Name', dataType: 'text'},\n {field: 'description', displayName: 'Description', dataType: 'text'},\n {field: 'version', displayName: 'Version', dataType: 'text'},\n {field: 'canvasWidth', displayName: 'Width', dataType: 'numeric'},\n {field: 'canvasHeight', displayName: 'Height', dataType: 'numeric'}\n ]\"\n [actionCommandItems]=\"[\n {id: 'edit', type:'link', text: 'Edit', svgIcon: editIcon, onClick: onEditClick}\n ]\"\n [leftToolbarActions]=\"[\n {id: 'new', type:'link', text: 'New Diagram', svgIcon: plusIcon, onClick: onNewDiagram}\n ]\"\n [contextMenuCommandItems]=\"[\n {id: 'delete', type:'link', text: 'Delete', onClick: onDeleteClick, svgIcon: deleteIcon}\n ]\"\n (rowClicked)=\"onRowClick($event)\">\n </mm-list-view>\n</div>\n", styles: [".process-diagram-list-container{display:flex;flex-direction:column;height:100%;padding:16px;gap:16px}\n"], dependencies: [{ kind: "directive", type: ProcessDiagramDataSourceDirective, selector: "[mmProcessDiagramDataSource]", exportAs: ["mmProcessDiagramDataSource"] }, { kind: "component", type: ListViewComponent, selector: "mm-list-view", inputs: ["pageSize", "skip", "rowIsClickable", "showRowCheckBoxes", "showRowSelectAllCheckBox", "contextMenuType", "leftToolbarActions", "rightToolbarActions", "actionCommandItems", "contextMenuCommandItems", "excelExportFileName", "pdfExportFileName", "pageable", "sortable", "rowFilterEnabled", "searchTextBoxEnabled", "messages", "selectable", "columns"], outputs: ["rowClicked"] }] });
|
|
31587
31587
|
}
|
|
31588
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
31588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ProcessDiagramListComponent, decorators: [{
|
|
31589
31589
|
type: Component,
|
|
31590
31590
|
args: [{ selector: 'mm-process-diagram-list', standalone: true, imports: [
|
|
31591
31591
|
ProcessDiagramDataSourceDirective,
|
|
@@ -31624,10 +31624,10 @@ class GetSymbolDefinitionsDtoGQL extends i1.Query {
|
|
|
31624
31624
|
constructor(apollo) {
|
|
31625
31625
|
super(apollo);
|
|
31626
31626
|
}
|
|
31627
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
31628
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
31627
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolDefinitionsDtoGQL, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31628
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolDefinitionsDtoGQL, providedIn: 'root' });
|
|
31629
31629
|
}
|
|
31630
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
31630
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GetSymbolDefinitionsDtoGQL, decorators: [{
|
|
31631
31631
|
type: Injectable,
|
|
31632
31632
|
args: [{
|
|
31633
31633
|
providedIn: 'root'
|