@anglr/dynamic 1.0.0-beta.20231204053311 → 1.0.0-beta.20231207124014
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es2015/layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.js +0 -1
- package/es2015/layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.js.map +1 -1
- package/es2015/math-components/src/dynamicItems/divide/divide.relations.js +7 -1
- package/es2015/math-components/src/dynamicItems/divide/divide.relations.js.map +1 -1
- package/es2015/math-components/src/dynamicItems/subtract/subtract.relations.js +8 -2
- package/es2015/math-components/src/dynamicItems/subtract/subtract.relations.js.map +1 -1
- package/es2015/relations-editor/src/components/relationsCanvas/relationsCanvas.component.js +58 -3
- package/es2015/relations-editor/src/components/relationsCanvas/relationsCanvas.component.js.map +1 -1
- package/es2015/relations-editor/src/components/relationsEditor/relationsEditor.component.js +1 -1
- package/es2015/relations-editor/src/components/relationsEditor/relationsEditor.component.js.map +1 -1
- package/es2015/relations-editor/src/components/relationsNodeBase.js +41 -15
- package/es2015/relations-editor/src/components/relationsNodeBase.js.map +1 -1
- package/es2015/relations-editor/src/components/relationsNodeEndpointBase.js +7 -2
- package/es2015/relations-editor/src/components/relationsNodeEndpointBase.js.map +1 -1
- package/es2015/relations-editor/src/components/relationsNodeInput/relationsNodeInput.component.js +20 -13
- package/es2015/relations-editor/src/components/relationsNodeInput/relationsNodeInput.component.js.map +1 -1
- package/es2015/relations-editor/src/components/relationsNodeOutput/relationsNodeOutput.component.js +20 -12
- package/es2015/relations-editor/src/components/relationsNodeOutput/relationsNodeOutput.component.js.map +1 -1
- package/es2020/layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.js +0 -1
- package/es2020/layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.js.map +1 -1
- package/es2020/math-components/src/dynamicItems/divide/divide.relations.js +7 -1
- package/es2020/math-components/src/dynamicItems/divide/divide.relations.js.map +1 -1
- package/es2020/math-components/src/dynamicItems/subtract/subtract.relations.js +8 -2
- package/es2020/math-components/src/dynamicItems/subtract/subtract.relations.js.map +1 -1
- package/es2020/relations-editor/src/components/relationsCanvas/relationsCanvas.component.js +58 -3
- package/es2020/relations-editor/src/components/relationsCanvas/relationsCanvas.component.js.map +1 -1
- package/es2020/relations-editor/src/components/relationsEditor/relationsEditor.component.js +1 -1
- package/es2020/relations-editor/src/components/relationsEditor/relationsEditor.component.js.map +1 -1
- package/es2020/relations-editor/src/components/relationsNodeBase.js +39 -14
- package/es2020/relations-editor/src/components/relationsNodeBase.js.map +1 -1
- package/es2020/relations-editor/src/components/relationsNodeEndpointBase.js +7 -2
- package/es2020/relations-editor/src/components/relationsNodeEndpointBase.js.map +1 -1
- package/es2020/relations-editor/src/components/relationsNodeInput/relationsNodeInput.component.js +16 -10
- package/es2020/relations-editor/src/components/relationsNodeInput/relationsNodeInput.component.js.map +1 -1
- package/es2020/relations-editor/src/components/relationsNodeOutput/relationsNodeOutput.component.js +16 -10
- package/es2020/relations-editor/src/components/relationsNodeOutput/relationsNodeOutput.component.js.map +1 -1
- package/layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.d.ts.map +1 -1
- package/math-components/src/dynamicItems/divide/divide.relations.d.ts.map +1 -1
- package/math-components/src/dynamicItems/subtract/subtract.relations.d.ts.map +1 -1
- package/package.json +1 -1
- package/relations-editor/src/components/relationsCanvas/relationsCanvas.component.d.ts +12 -3
- package/relations-editor/src/components/relationsCanvas/relationsCanvas.component.d.ts.map +1 -1
- package/relations-editor/src/components/relationsNodeBase.d.ts +14 -4
- package/relations-editor/src/components/relationsNodeBase.d.ts.map +1 -1
- package/relations-editor/src/components/relationsNodeEndpointBase.d.ts +7 -2
- package/relations-editor/src/components/relationsNodeEndpointBase.d.ts.map +1 -1
- package/relations-editor/src/components/relationsNodeInput/relationsNodeInput.component.d.ts.map +1 -1
- package/relations-editor/src/components/relationsNodeOutput/relationsNodeOutput.component.d.ts.map +1 -1
- package/version.bak +1 -1
package/es2015/layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.js
CHANGED
|
@@ -141,7 +141,6 @@ export class LayoutComponentRendererSADirective {
|
|
|
141
141
|
(_q = this.logger) === null || _q === void 0 ? void 0 : _q.debug('LayoutComponentRendererSADirective: initializing component {{@id}}', { id: componentMetadata === null || componentMetadata === void 0 ? void 0 : componentMetadata.id });
|
|
142
142
|
yield ((_r = component.ngOnInit) === null || _r === void 0 ? void 0 : _r.call(component));
|
|
143
143
|
(_s = this.logger) === null || _s === void 0 ? void 0 : _s.debug('LayoutComponentRendererSADirective: invalidating component visuals {{@id}}', { id: componentMetadata === null || componentMetadata === void 0 ? void 0 : componentMetadata.id });
|
|
144
|
-
// component.invalidateVisuals();
|
|
145
144
|
(_t = this.ɵComponentRef) === null || _t === void 0 ? void 0 : _t.changeDetectorRef.markForCheck();
|
|
146
145
|
this.componentElementChange.next((_w = (_v = (_u = this.ɵComponentRef) === null || _u === void 0 ? void 0 : _u.hostView) === null || _v === void 0 ? void 0 : _v.rootNodes) === null || _w === void 0 ? void 0 : _w[0]);
|
|
147
146
|
this.componentChange.next(this.ɵComponentRef);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layoutComponentRenderer.directive.js","sourceRoot":"","sources":["../../../../../layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComponentRef, Directive, EmbeddedViewRef, EventEmitter, Inject, Injector, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, SkipSelf, ValueProvider, ViewContainerRef} from '@angular/core';\nimport {Logger, LOGGER} from '@anglr/common';\nimport {addSimpleChange, DynamicItemExtensionType, DynamicItemLoader, SCOPE_ID} from '@anglr/dynamic';\nimport {nameof} from '@jscrpt/common';\n\nimport {LayoutComponentRendererDirectiveOptions} from './layoutComponentRenderer.options';\nimport {MissingTypeBehavior} from './layoutComponentRenderer.types';\nimport {NotFoundLayoutTypeSAComponent} from '../../components';\nimport {LayoutComponent, LayoutComponentMetadata, LayoutComponentTransform} from '../../interfaces';\nimport {LAYOUT_COMPONENTS_LOADER, LAYOUT_COMPONENT_CHILD_EXTENSIONS, LAYOUT_COMPONENT_TRANSFORM} from '../../misc/tokens';\nimport {LayoutComponentDef} from '../../misc/types';\n\n//TODO: refactor input, output names\n\n/**\n * Renders layout component from metadata\n */\n@Directive(\n{\n selector: '[layoutComponentRenderer]',\n exportAs: 'layoutComponentRenderer',\n providers: \n [\n <ValueProvider>\n {\n provide: LAYOUT_COMPONENT_CHILD_EXTENSIONS,\n useValue: null,\n }\n ],\n standalone: true\n})\nexport class LayoutComponentRendererSADirective<TComponent extends LayoutComponent<TComponentOptions> = any, TComponentOptions = any> implements OnChanges, OnDestroy\n{\n //######################### protected properties #########################\n\n /**\n * Created component reference\n */\n protected ɵComponentRef: ComponentRef<TComponent>|null = null;\n\n //######################### public properties - inputs #########################\n\n /**\n * Type that should be dynamically created into current container\n */\n @Input('layoutComponentRenderer')\n public componentMetadata: LayoutComponentMetadata<TComponentOptions>|undefined|null = null;\n\n /**\n * Custom injector used as parent for layout components tree\n */\n @Input('layoutComponentRendererInjector')\n public customInjector: Injector|undefined|null;\n\n /**\n * Disables component metadata transformer\n */\n @Input('layoutComponentRendererDisableTransformer')\n public disableTransformer: boolean = false;\n\n //######################### public properties - outputs #########################\n\n /**\n * Occurs when rendered component changes\n */\n @Output('layoutComponentRendererComponentChange')\n public componentChange: EventEmitter<ComponentRef<TComponent>|null> = new EventEmitter<ComponentRef<TComponent>|null>();\n\n /**\n * Occurs when components element changes\n */\n @Output()\n public componentElementChange: EventEmitter<HTMLElement|null> = new EventEmitter<HTMLElement|null>();\n\n //######################### protected properties #########################\n\n /**\n * Instance of dynamically created component\n */\n protected get component(): TComponent|null\n {\n if(!this.ɵComponentRef)\n {\n return null;\n }\n\n return this.ɵComponentRef.instance;\n }\n\n //######################### public properties #########################\n\n /**\n * Gets component ref of created component or null\n */\n public get componentRef(): ComponentRef<TComponent>|null\n {\n return this.ɵComponentRef;\n }\n\n //######################### constructor #########################\n constructor(protected viewContainerRef: ViewContainerRef,\n @Inject(LAYOUT_COMPONENTS_LOADER) protected loader: DynamicItemLoader<LayoutComponentDef>,\n @Inject(LAYOUT_COMPONENT_CHILD_EXTENSIONS) @Optional() @SkipSelf() protected childExtensions?: DynamicItemExtensionType[]|null,\n @Inject(SCOPE_ID) @Optional() protected scopeId?: string,\n @Optional() protected options?: LayoutComponentRendererDirectiveOptions,\n @Inject(LAYOUT_COMPONENT_TRANSFORM) @Optional() protected metadataTransformer?: LayoutComponentTransform,\n @Inject(LOGGER) @Optional() protected logger?: Logger,)\n {\n if(!this.options || !(this.options instanceof LayoutComponentRendererDirectiveOptions))\n {\n this.options = new LayoutComponentRendererDirectiveOptions();\n }\n }\n\n //######################### public methods - implementation of OnChanges #########################\n\n /**\n * Called when input value changes\n */\n public async ngOnChanges(changes: SimpleChanges): Promise<void>\n {\n this.logger?.debug('LayoutComponentRendererSADirective: rendering component {{@id}}', {id: this.componentMetadata?.id});\n\n this.ngOnDestroy();\n this.viewContainerRef.clear();\n\n // component metadata is present\n if(nameof<LayoutComponentRendererSADirective<TComponent, TComponentOptions>>('componentMetadata') in changes && this.componentMetadata)\n {\n const injector = this.customInjector ?? this.viewContainerRef.injector;\n let componentMetadata = this.componentMetadata;\n const scopeId = this.componentMetadata.scope;\n\n if(this.metadataTransformer && !this.disableTransformer)\n {\n componentMetadata = this.metadataTransformer(this.componentMetadata, injector);\n }\n \n const layoutComponentType = await this.loader.loadItem(componentMetadata);\n\n if(!layoutComponentType)\n {\n this.logger?.warn('LayoutComponentRendererSADirective: Unable to find layout component type {{@type}}', {type: {name: componentMetadata.name, package: componentMetadata.package}});\n\n switch(this.options?.missingTypeBehavior)\n {\n default:\n //case MissingTypeBehavior.ShowNotFound:\n {\n this.viewContainerRef.createComponent(NotFoundLayoutTypeSAComponent);\n\n break;\n }\n case MissingTypeBehavior.Ignore:\n {\n //do nothing\n\n break;\n }\n case MissingTypeBehavior.ThrowError:\n {\n throw new Error(`LayoutComponentRendererSADirective: Unable to find layout component type Name: ${componentMetadata.name} Package: ${componentMetadata.package}`);\n }\n }\n\n return;\n }\n\n const usedInjector = Injector.create(\n {\n parent: injector,\n providers:\n [\n <ValueProvider>\n {\n provide: SCOPE_ID,\n useValue: scopeId ?? this.scopeId ?? null,\n },\n <ValueProvider>\n {\n provide: LAYOUT_COMPONENT_CHILD_EXTENSIONS,\n useValue: layoutComponentType.childExtensions,\n }\n ]\n });\n\n this.ɵComponentRef = this.viewContainerRef.createComponent(layoutComponentType.data,\n {\n injector: usedInjector,\n }) as ComponentRef<TComponent>;\n\n this.logger?.debug('LayoutComponentRendererSADirective: component rendered {{@id}}', {id: componentMetadata?.id});\n const component = this.component;\n\n if(component)\n {\n //registers extensions and child extensions\n component.registerExtensions(\n [\n ...this.childExtensions?.map(itm => new itm(componentMetadata)) ?? [],\n ...layoutComponentType?.extensions?.map(itm => new itm(componentMetadata)) ?? [],\n ]);\n\n const changes: SimpleChanges = {};\n addSimpleChange<LayoutComponent>(changes, 'options', componentMetadata.options, component.options, true);\n\n this.logger?.debug('LayoutComponentRendererSADirective: setting options for component {{@id}}', {id: componentMetadata?.id});\n component.options = componentMetadata.options;\n \n this.logger?.debug('LayoutComponentRendererSADirective: setting changes for component {{@id}}', {id: componentMetadata?.id});\n await component.ngOnChanges?.(changes);\n\n this.logger?.debug('LayoutComponentRendererSADirective: initializing component {{@id}}', {id: componentMetadata?.id});\n await component.ngOnInit?.();\n\n this.logger?.debug('LayoutComponentRendererSADirective: invalidating component visuals {{@id}}', {id: componentMetadata?.id});\n // component.invalidateVisuals();\n this.ɵComponentRef?.changeDetectorRef.markForCheck();\n\n this.componentElementChange.next((this.ɵComponentRef?.hostView as EmbeddedViewRef<unknown>)?.rootNodes?.[0] as HTMLElement);\n this.componentChange.next(this.ɵComponentRef);\n }\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n if(this.ɵComponentRef)\n {\n this.logger?.debug('LayoutComponentRendererSADirective: destroying component {{@id}}', {id: this.componentMetadata?.id, designer: this.disableTransformer});\n \n this.ɵComponentRef?.destroy();\n this.ɵComponentRef = null;\n this.componentChange.next(null);\n this.componentElementChange.next(null);\n }\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"layoutComponentRenderer.directive.js","sourceRoot":"","sources":["../../../../../layout/src/directives/layoutComponentRenderer/layoutComponentRenderer.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComponentRef, Directive, EmbeddedViewRef, EventEmitter, Inject, Injector, Input, OnChanges, OnDestroy, Optional, Output, SimpleChanges, SkipSelf, ValueProvider, ViewContainerRef} from '@angular/core';\nimport {Logger, LOGGER} from '@anglr/common';\nimport {addSimpleChange, DynamicItemExtensionType, DynamicItemLoader, SCOPE_ID} from '@anglr/dynamic';\nimport {nameof} from '@jscrpt/common';\n\nimport {LayoutComponentRendererDirectiveOptions} from './layoutComponentRenderer.options';\nimport {MissingTypeBehavior} from './layoutComponentRenderer.types';\nimport {NotFoundLayoutTypeSAComponent} from '../../components';\nimport {LayoutComponent, LayoutComponentMetadata, LayoutComponentTransform} from '../../interfaces';\nimport {LAYOUT_COMPONENTS_LOADER, LAYOUT_COMPONENT_CHILD_EXTENSIONS, LAYOUT_COMPONENT_TRANSFORM} from '../../misc/tokens';\nimport {LayoutComponentDef} from '../../misc/types';\n\n//TODO: refactor input, output names\n\n/**\n * Renders layout component from metadata\n */\n@Directive(\n{\n selector: '[layoutComponentRenderer]',\n exportAs: 'layoutComponentRenderer',\n providers: \n [\n <ValueProvider>\n {\n provide: LAYOUT_COMPONENT_CHILD_EXTENSIONS,\n useValue: null,\n }\n ],\n standalone: true\n})\nexport class LayoutComponentRendererSADirective<TComponent extends LayoutComponent<TComponentOptions> = any, TComponentOptions = any> implements OnChanges, OnDestroy\n{\n //######################### protected properties #########################\n\n /**\n * Created component reference\n */\n protected ɵComponentRef: ComponentRef<TComponent>|null = null;\n\n //######################### public properties - inputs #########################\n\n /**\n * Type that should be dynamically created into current container\n */\n @Input('layoutComponentRenderer')\n public componentMetadata: LayoutComponentMetadata<TComponentOptions>|undefined|null = null;\n\n /**\n * Custom injector used as parent for layout components tree\n */\n @Input('layoutComponentRendererInjector')\n public customInjector: Injector|undefined|null;\n\n /**\n * Disables component metadata transformer\n */\n @Input('layoutComponentRendererDisableTransformer')\n public disableTransformer: boolean = false;\n\n //######################### public properties - outputs #########################\n\n /**\n * Occurs when rendered component changes\n */\n @Output('layoutComponentRendererComponentChange')\n public componentChange: EventEmitter<ComponentRef<TComponent>|null> = new EventEmitter<ComponentRef<TComponent>|null>();\n\n /**\n * Occurs when components element changes\n */\n @Output()\n public componentElementChange: EventEmitter<HTMLElement|null> = new EventEmitter<HTMLElement|null>();\n\n //######################### protected properties #########################\n\n /**\n * Instance of dynamically created component\n */\n protected get component(): TComponent|null\n {\n if(!this.ɵComponentRef)\n {\n return null;\n }\n\n return this.ɵComponentRef.instance;\n }\n\n //######################### public properties #########################\n\n /**\n * Gets component ref of created component or null\n */\n public get componentRef(): ComponentRef<TComponent>|null\n {\n return this.ɵComponentRef;\n }\n\n //######################### constructor #########################\n constructor(protected viewContainerRef: ViewContainerRef,\n @Inject(LAYOUT_COMPONENTS_LOADER) protected loader: DynamicItemLoader<LayoutComponentDef>,\n @Inject(LAYOUT_COMPONENT_CHILD_EXTENSIONS) @Optional() @SkipSelf() protected childExtensions?: DynamicItemExtensionType[]|null,\n @Inject(SCOPE_ID) @Optional() protected scopeId?: string,\n @Optional() protected options?: LayoutComponentRendererDirectiveOptions,\n @Inject(LAYOUT_COMPONENT_TRANSFORM) @Optional() protected metadataTransformer?: LayoutComponentTransform,\n @Inject(LOGGER) @Optional() protected logger?: Logger,)\n {\n if(!this.options || !(this.options instanceof LayoutComponentRendererDirectiveOptions))\n {\n this.options = new LayoutComponentRendererDirectiveOptions();\n }\n }\n\n //######################### public methods - implementation of OnChanges #########################\n\n /**\n * Called when input value changes\n */\n public async ngOnChanges(changes: SimpleChanges): Promise<void>\n {\n this.logger?.debug('LayoutComponentRendererSADirective: rendering component {{@id}}', {id: this.componentMetadata?.id});\n\n this.ngOnDestroy();\n this.viewContainerRef.clear();\n\n // component metadata is present\n if(nameof<LayoutComponentRendererSADirective<TComponent, TComponentOptions>>('componentMetadata') in changes && this.componentMetadata)\n {\n const injector = this.customInjector ?? this.viewContainerRef.injector;\n let componentMetadata = this.componentMetadata;\n const scopeId = this.componentMetadata.scope;\n\n if(this.metadataTransformer && !this.disableTransformer)\n {\n componentMetadata = this.metadataTransformer(this.componentMetadata, injector);\n }\n \n const layoutComponentType = await this.loader.loadItem(componentMetadata);\n\n if(!layoutComponentType)\n {\n this.logger?.warn('LayoutComponentRendererSADirective: Unable to find layout component type {{@type}}', {type: {name: componentMetadata.name, package: componentMetadata.package}});\n\n switch(this.options?.missingTypeBehavior)\n {\n default:\n //case MissingTypeBehavior.ShowNotFound:\n {\n this.viewContainerRef.createComponent(NotFoundLayoutTypeSAComponent);\n\n break;\n }\n case MissingTypeBehavior.Ignore:\n {\n //do nothing\n\n break;\n }\n case MissingTypeBehavior.ThrowError:\n {\n throw new Error(`LayoutComponentRendererSADirective: Unable to find layout component type Name: ${componentMetadata.name} Package: ${componentMetadata.package}`);\n }\n }\n\n return;\n }\n\n const usedInjector = Injector.create(\n {\n parent: injector,\n providers:\n [\n <ValueProvider>\n {\n provide: SCOPE_ID,\n useValue: scopeId ?? this.scopeId ?? null,\n },\n <ValueProvider>\n {\n provide: LAYOUT_COMPONENT_CHILD_EXTENSIONS,\n useValue: layoutComponentType.childExtensions,\n }\n ]\n });\n\n this.ɵComponentRef = this.viewContainerRef.createComponent(layoutComponentType.data,\n {\n injector: usedInjector,\n }) as ComponentRef<TComponent>;\n\n this.logger?.debug('LayoutComponentRendererSADirective: component rendered {{@id}}', {id: componentMetadata?.id});\n const component = this.component;\n\n if(component)\n {\n //registers extensions and child extensions\n component.registerExtensions(\n [\n ...this.childExtensions?.map(itm => new itm(componentMetadata)) ?? [],\n ...layoutComponentType?.extensions?.map(itm => new itm(componentMetadata)) ?? [],\n ]);\n\n const changes: SimpleChanges = {};\n addSimpleChange<LayoutComponent>(changes, 'options', componentMetadata.options, component.options, true);\n\n this.logger?.debug('LayoutComponentRendererSADirective: setting options for component {{@id}}', {id: componentMetadata?.id});\n component.options = componentMetadata.options;\n \n this.logger?.debug('LayoutComponentRendererSADirective: setting changes for component {{@id}}', {id: componentMetadata?.id});\n await component.ngOnChanges?.(changes);\n\n this.logger?.debug('LayoutComponentRendererSADirective: initializing component {{@id}}', {id: componentMetadata?.id});\n await component.ngOnInit?.();\n\n this.logger?.debug('LayoutComponentRendererSADirective: invalidating component visuals {{@id}}', {id: componentMetadata?.id});\n this.ɵComponentRef?.changeDetectorRef.markForCheck();\n\n this.componentElementChange.next((this.ɵComponentRef?.hostView as EmbeddedViewRef<unknown>)?.rootNodes?.[0] as HTMLElement);\n this.componentChange.next(this.ɵComponentRef);\n }\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n if(this.ɵComponentRef)\n {\n this.logger?.debug('LayoutComponentRendererSADirective: destroying component {{@id}}', {id: this.componentMetadata?.id, designer: this.disableTransformer});\n \n this.ɵComponentRef?.destroy();\n this.ɵComponentRef = null;\n this.componentChange.next(null);\n this.componentElementChange.next(null);\n }\n }\n}"]}
|
|
@@ -2,7 +2,7 @@ import { __decorate, __metadata } from "tslib";
|
|
|
2
2
|
import { Input } from '@angular/core';
|
|
3
3
|
import { DynamicOutput, PureRelationsComponent } from '@anglr/dynamic/relations';
|
|
4
4
|
import { RelationsEditorMetadata } from '@anglr/dynamic/relations-editor';
|
|
5
|
-
import { isNumber, isPresent, nameof } from '@jscrpt/common';
|
|
5
|
+
import { isNumber, isPresent, isString, nameof } from '@jscrpt/common';
|
|
6
6
|
import { MathDivideRelationsMetadataLoader } from './divide.metadata';
|
|
7
7
|
let MathDivideRelations = class MathDivideRelations {
|
|
8
8
|
//######################### public methods #########################
|
|
@@ -11,6 +11,12 @@ let MathDivideRelations = class MathDivideRelations {
|
|
|
11
11
|
ngOnChanges(changes) {
|
|
12
12
|
if (nameof('input1') in changes ||
|
|
13
13
|
nameof('input2') in changes) {
|
|
14
|
+
if (isString(this.input1)) {
|
|
15
|
+
this.input1 = parseFloat(this.input1);
|
|
16
|
+
}
|
|
17
|
+
if (isString(this.input2)) {
|
|
18
|
+
this.input2 = parseFloat(this.input2);
|
|
19
|
+
}
|
|
14
20
|
if (isNumber(this.input1) &&
|
|
15
21
|
isNumber(this.input2)) {
|
|
16
22
|
if (this.input2 === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"divide.relations.js","sourceRoot":"","sources":["../../../../../math-components/src/dynamicItems/divide/divide.relations.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,KAAK,EAAgB,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,sBAAsB,EAAqB,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAC,uBAAuB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"divide.relations.js","sourceRoot":"","sources":["../../../../../math-components/src/dynamicItems/divide/divide.relations.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,KAAK,EAAgB,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,sBAAsB,EAAqB,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAC,uBAAuB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAC,iCAAiC,EAAC,MAAM,mBAAmB,CAAC;AAK7D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAmB5B,oEAAoE;IAE7D,iBAAiB;IAExB,CAAC;IAEM,WAAW,CAAC,OAAsB;QAErC,IAAG,MAAM,CAA6B,QAAQ,CAAC,IAAI,OAAO;YACvD,MAAM,CAA6B,QAAQ,CAAC,IAAI,OAAO,EAC1D;YACI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;gBACI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzC;YAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;gBACI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzC;YAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;gBACI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EACrB;oBACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,OAAO;iBACV;gBAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBACxC,OAAO;aACV;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B;gBACI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,OAAO;aACV;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B;gBACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC1B,OAAO;aACV;YAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;IACL,CAAC;CAEJ,CAAA;AAhEU;IADN,KAAK,EAAE;;mDAC6B;AAG9B;IADN,KAAK,EAAE;;mDAC6B;AAK9B;IADN,aAAa,EAAE;;mDACqB;AAb5B,mBAAmB;IAF/B,sBAAsB,EAAE;IACxB,uBAAuB,CAAC,iCAAiC,CAAC;GAC9C,mBAAmB,CAqE/B","sourcesContent":["import {Input, SimpleChanges} from '@angular/core';\nimport {DynamicOutput, PureRelationsComponent, RelationsComponent} from '@anglr/dynamic/relations';\nimport {RelationsEditorMetadata} from '@anglr/dynamic/relations-editor';\nimport {isNumber, isPresent, isString, nameof} from '@jscrpt/common';\n\nimport {MathDivideRelationsMetadataLoader} from './divide.metadata';\nimport {MathDivideRelationsOptions} from './divide.options';\n\n@PureRelationsComponent()\n@RelationsEditorMetadata(MathDivideRelationsMetadataLoader)\nexport class MathDivideRelations implements RelationsComponent<MathDivideRelationsOptions>\n{\n //######################### public proeperties - inputs #########################\n\n @Input()\n public input1: number|null|undefined;\n\n @Input()\n public input2: number|null|undefined;\n\n //######################### public properties - dynamic outputs #########################\n\n @DynamicOutput()\n public result: number|null|undefined;\n\n //######################### public properties #########################\n\n relationsOptions: MathDivideRelationsOptions|undefined;\n\n //######################### public methods #########################\n\n public invalidateVisuals(): void\n {\n }\n\n public ngOnChanges(changes: SimpleChanges): void\n {\n if(nameof<MathDivideRelationsOptions>('input1') in changes ||\n nameof<MathDivideRelationsOptions>('input2') in changes)\n {\n if (isString(this.input1))\n {\n this.input1 = parseFloat(this.input1);\n }\n\n if (isString(this.input2))\n {\n this.input2 = parseFloat(this.input2);\n }\n\n if (isNumber(this.input1) &&\n isNumber(this.input2))\n {\n if (this.input2 === 0)\n {\n this.result = null;\n return;\n }\n\n this.result = this.input1 / this.input2;\n return;\n }\n\n if (!isPresent(this.input1))\n {\n this.result = 0;\n return;\n }\n\n if (!isPresent(this.input2))\n {\n this.result = this.input1;\n return;\n }\n\n this.result = null;\n }\n }\n\n}"]}
|
|
@@ -2,7 +2,7 @@ import { __decorate, __metadata } from "tslib";
|
|
|
2
2
|
import { Input } from '@angular/core';
|
|
3
3
|
import { DynamicOutput, PureRelationsComponent } from '@anglr/dynamic/relations';
|
|
4
4
|
import { RelationsEditorMetadata } from '@anglr/dynamic/relations-editor';
|
|
5
|
-
import { isNumber, isPresent, nameof } from '@jscrpt/common';
|
|
5
|
+
import { isNumber, isPresent, isString, nameof } from '@jscrpt/common';
|
|
6
6
|
import { MathSubtractRelationsMetadataLoader } from './subtract.metadata';
|
|
7
7
|
let MathSubtractRelations = class MathSubtractRelations {
|
|
8
8
|
//######################### public methods #########################
|
|
@@ -11,9 +11,15 @@ let MathSubtractRelations = class MathSubtractRelations {
|
|
|
11
11
|
ngOnChanges(changes) {
|
|
12
12
|
if (nameof('input1') in changes ||
|
|
13
13
|
nameof('input2') in changes) {
|
|
14
|
+
if (isString(this.input1)) {
|
|
15
|
+
this.input1 = parseFloat(this.input1);
|
|
16
|
+
}
|
|
17
|
+
if (isString(this.input2)) {
|
|
18
|
+
this.input2 = parseFloat(this.input2);
|
|
19
|
+
}
|
|
14
20
|
if (isNumber(this.input1) &&
|
|
15
21
|
isNumber(this.input2)) {
|
|
16
|
-
this.result = this.input1 - this.input2;
|
|
22
|
+
this.result = +this.input1 - +this.input2;
|
|
17
23
|
return;
|
|
18
24
|
}
|
|
19
25
|
if (!isPresent(this.input1) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtract.relations.js","sourceRoot":"","sources":["../../../../../math-components/src/dynamicItems/subtract/subtract.relations.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,KAAK,EAAgB,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,sBAAsB,EAAqB,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAC,uBAAuB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"subtract.relations.js","sourceRoot":"","sources":["../../../../../math-components/src/dynamicItems/subtract/subtract.relations.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,KAAK,EAAgB,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,sBAAsB,EAAqB,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAC,uBAAuB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAC,mCAAmC,EAAC,MAAM,qBAAqB,CAAC;AAKjE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAmB9B,oEAAoE;IAE7D,iBAAiB;IAExB,CAAC;IAEM,WAAW,CAAC,OAAsB;QAErC,IAAG,MAAM,CAA+B,QAAQ,CAAC,IAAI,OAAO;YACzD,MAAM,CAA+B,QAAQ,CAAC,IAAI,OAAO,EAC5D;YACI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;gBACI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzC;YAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;gBACI,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzC;YAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;gBACI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC1C,OAAO;aACV;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EACzB;gBACI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC9B,OAAO;aACV;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B;gBACI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC1B,OAAO;aACV;YAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACtB;IACL,CAAC;CAEJ,CAAA;AA3DU;IADN,KAAK,EAAE;;qDAC6B;AAG9B;IADN,KAAK,EAAE;;qDAC6B;AAK9B;IADN,aAAa,EAAE;;qDACqB;AAb5B,qBAAqB;IAFjC,sBAAsB,EAAE;IACxB,uBAAuB,CAAC,mCAAmC,CAAC;GAChD,qBAAqB,CAgEjC","sourcesContent":["import {Input, SimpleChanges} from '@angular/core';\nimport {DynamicOutput, PureRelationsComponent, RelationsComponent} from '@anglr/dynamic/relations';\nimport {RelationsEditorMetadata} from '@anglr/dynamic/relations-editor';\nimport {isNumber, isPresent, isString, nameof} from '@jscrpt/common';\n\nimport {MathSubtractRelationsMetadataLoader} from './subtract.metadata';\nimport {MathSubtractRelationsOptions} from './subtract.options';\n\n@PureRelationsComponent()\n@RelationsEditorMetadata(MathSubtractRelationsMetadataLoader)\nexport class MathSubtractRelations implements RelationsComponent<MathSubtractRelationsOptions>\n{\n //######################### public proeperties - inputs #########################\n\n @Input()\n public input1: number|null|undefined;\n\n @Input()\n public input2: number|null|undefined;\n\n //######################### public properties - dynamic outputs #########################\n\n @DynamicOutput()\n public result: number|null|undefined;\n\n //######################### public properties #########################\n\n relationsOptions: MathSubtractRelationsOptions|undefined;\n\n //######################### public methods #########################\n\n public invalidateVisuals(): void\n {\n }\n\n public ngOnChanges(changes: SimpleChanges): void\n {\n if(nameof<MathSubtractRelationsOptions>('input1') in changes ||\n nameof<MathSubtractRelationsOptions>('input2') in changes)\n {\n if (isString(this.input1))\n {\n this.input1 = parseFloat(this.input1);\n }\n\n if (isString(this.input2))\n {\n this.input2 = parseFloat(this.input2);\n }\n\n if (isNumber(this.input1) &&\n isNumber(this.input2))\n {\n this.result = +this.input1 - +this.input2;\n return;\n }\n\n if (!isPresent(this.input1) &&\n isNumber(this.input2))\n {\n this.result = 0 - this.input2;\n return;\n }\n\n if (!isPresent(this.input2))\n {\n this.result = this.input1;\n return;\n }\n\n this.result = null;\n }\n }\n\n}"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, HostBinding, HostListener, ViewChild, ElementRef, Input, Inject, ChangeDetectorRef } from '@angular/core';
|
|
1
|
+
import { Component, ChangeDetectionStrategy, HostBinding, HostListener, ViewChild, ElementRef, Input, Inject, ChangeDetectorRef, EventEmitter, Output } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { MetadataHistoryManager } from '@anglr/dynamic';
|
|
4
4
|
import { select } from 'd3';
|
|
@@ -22,9 +22,13 @@ const DEFAULT_BACKGROUND_SIZE = 16;
|
|
|
22
22
|
*/
|
|
23
23
|
const SCALE_FACTOR_MIN = 0.2;
|
|
24
24
|
/**
|
|
25
|
-
* Maximum
|
|
25
|
+
* Maximum scale factor
|
|
26
26
|
*/
|
|
27
27
|
const SCALE_FACTOR_MAX = 2;
|
|
28
|
+
/**
|
|
29
|
+
* Maximal movement delta
|
|
30
|
+
*/
|
|
31
|
+
const MOVEMENT_DELTA_MAX = 10;
|
|
28
32
|
/**
|
|
29
33
|
* Component used as designer component wrapper for relations component
|
|
30
34
|
*/
|
|
@@ -55,6 +59,11 @@ export class RelationsCanvasSAComponent {
|
|
|
55
59
|
this.relationManager = relationManager;
|
|
56
60
|
this._changeDetector = _changeDetector;
|
|
57
61
|
this.history = history;
|
|
62
|
+
//######################### private properties #########################
|
|
63
|
+
/**
|
|
64
|
+
* Identifier of canvas move timer
|
|
65
|
+
*/
|
|
66
|
+
this._canvasMoveTimer = null;
|
|
58
67
|
//######################### protected properties #########################
|
|
59
68
|
/**
|
|
60
69
|
* Subscriptions created during initialization
|
|
@@ -76,6 +85,10 @@ export class RelationsCanvasSAComponent {
|
|
|
76
85
|
* Canvas position
|
|
77
86
|
*/
|
|
78
87
|
this.canvasPosition = { x: 0, y: 0 };
|
|
88
|
+
/**
|
|
89
|
+
* Mouse position in canvas
|
|
90
|
+
*/
|
|
91
|
+
this.mousePosition = { x: 0, y: 0 };
|
|
79
92
|
/**
|
|
80
93
|
* Zoom level
|
|
81
94
|
*/
|
|
@@ -89,6 +102,8 @@ export class RelationsCanvasSAComponent {
|
|
|
89
102
|
* Node definition data to render
|
|
90
103
|
*/
|
|
91
104
|
this.nodeDefinitions = [];
|
|
105
|
+
//######################### public properties - outputs #########################
|
|
106
|
+
this.convasPositionChanged = new EventEmitter();
|
|
92
107
|
}
|
|
93
108
|
//######################### public methods - implementation of OnInit #########################
|
|
94
109
|
/**
|
|
@@ -159,6 +174,10 @@ export class RelationsCanvasSAComponent {
|
|
|
159
174
|
* @param event - Mouse event that occured
|
|
160
175
|
*/
|
|
161
176
|
onMouseMove(event) {
|
|
177
|
+
this.mousePosition = {
|
|
178
|
+
x: event.clientX - this.boundingBox.left,
|
|
179
|
+
y: event.clientY - this.boundingBox.top
|
|
180
|
+
};
|
|
162
181
|
if (this.isDragging) {
|
|
163
182
|
this.canvasPosition =
|
|
164
183
|
{
|
|
@@ -166,6 +185,36 @@ export class RelationsCanvasSAComponent {
|
|
|
166
185
|
y: event.clientY - this.dragStartPosition.y
|
|
167
186
|
};
|
|
168
187
|
}
|
|
188
|
+
else {
|
|
189
|
+
if ((event === null || event === void 0 ? void 0 : event.buttons) === MouseButton.LEFT) {
|
|
190
|
+
if (!this._canvasMoveTimer) {
|
|
191
|
+
this._canvasMoveTimer = setInterval(() => {
|
|
192
|
+
const delta = {
|
|
193
|
+
x: 0,
|
|
194
|
+
y: 0,
|
|
195
|
+
};
|
|
196
|
+
if (this.mousePosition.x >= this.boundingBox.width * 0.9) {
|
|
197
|
+
delta.x -= Math.min((this.mousePosition.x - this.boundingBox.width * 0.9) / (this.boundingBox.width / 10) * MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);
|
|
198
|
+
}
|
|
199
|
+
else if (this.mousePosition.x <= this.boundingBox.width / 10) {
|
|
200
|
+
delta.x += Math.min((this.boundingBox.width / 10 - this.mousePosition.x) / (this.boundingBox.width / 10) * MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);
|
|
201
|
+
}
|
|
202
|
+
if (this.mousePosition.y >= this.boundingBox.height * 0.9) {
|
|
203
|
+
delta.y -= Math.min((this.mousePosition.y - this.boundingBox.height * 0.9) / (this.boundingBox.height / 10) * MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);
|
|
204
|
+
}
|
|
205
|
+
else if (this.mousePosition.y <= this.boundingBox.height / 10) {
|
|
206
|
+
delta.y += Math.min((this.boundingBox.height / 10 - this.mousePosition.y) / (this.boundingBox.height / 10) * MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);
|
|
207
|
+
}
|
|
208
|
+
if (delta.x != 0 || delta.y != 0) {
|
|
209
|
+
this.convasPositionChanged.emit();
|
|
210
|
+
this.canvasPosition.x += delta.x;
|
|
211
|
+
this.canvasPosition.y += delta.y;
|
|
212
|
+
this._changeDetector.detectChanges();
|
|
213
|
+
}
|
|
214
|
+
}, 33);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
169
218
|
}
|
|
170
219
|
/**
|
|
171
220
|
* Mouse up event, handles moving of canvas
|
|
@@ -175,6 +224,10 @@ export class RelationsCanvasSAComponent {
|
|
|
175
224
|
if (this.isDragging) {
|
|
176
225
|
this.isDragging = false;
|
|
177
226
|
}
|
|
227
|
+
if (this._canvasMoveTimer) {
|
|
228
|
+
clearInterval(this._canvasMoveTimer);
|
|
229
|
+
this._canvasMoveTimer = null;
|
|
230
|
+
}
|
|
178
231
|
}
|
|
179
232
|
/**
|
|
180
233
|
* Wheel event, used for zooming
|
|
@@ -243,7 +296,7 @@ export class RelationsCanvasSAComponent {
|
|
|
243
296
|
}
|
|
244
297
|
}
|
|
245
298
|
RelationsCanvasSAComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RelationsCanvasSAComponent, deps: [{ token: i0.ElementRef }, { token: i1.RelationsNodeManager }, { token: i0.ChangeDetectorRef }, { token: RELATIONS_HISTORY_MANAGER }], target: i0.ɵɵFactoryTarget.Component });
|
|
246
|
-
RelationsCanvasSAComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: RelationsCanvasSAComponent, isStandalone: true, selector: "relations-canvas", inputs: { nodeDefinitions: "nodeDefinitions" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "window:mouseup": "onMouseUp($event)", "wheel": "onWheel($event)" }, properties: { "style.backgroundSize": "this.backgroundSizeStyle", "style.backgroundPosition": "this._backgroundPositionStyle" } }, viewQueries: [{ propertyName: "relationsGroup", first: true, predicate: ["relationsGroup"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flow-area\" [style.transform]=\"'translate(' + canvasPosition.x + 'px, ' + canvasPosition.y + 'px) scale(' + zoomLevel + ')'\">\n <svg class=\"relations-wrapper\">\n <g #relationsGroup></g>\n </svg>\n\n <ng-container *ngFor=\"let nodeDefinition of nodeDefinitions\">\n <ng-container [relationsNodeRenderer]=\"nodeDefinition\" [zoomLevel]=\"zoomLevel\" (destroy)=\"destroyNode($event)\"></ng-container>\n </ng-container>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: RelationsNodeRendererSADirective, selector: "[relationsNodeRenderer]", inputs: ["relationsNodeRenderer", "zoomLevel"], outputs: ["create", "destroy"], exportAs: ["relationsNodeRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
299
|
+
RelationsCanvasSAComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: RelationsCanvasSAComponent, isStandalone: true, selector: "relations-canvas", inputs: { nodeDefinitions: "nodeDefinitions" }, outputs: { convasPositionChanged: "convasPositionChanged" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "window:mouseup": "onMouseUp($event)", "wheel": "onWheel($event)" }, properties: { "style.backgroundSize": "this.backgroundSizeStyle", "style.backgroundPosition": "this._backgroundPositionStyle" } }, viewQueries: [{ propertyName: "relationsGroup", first: true, predicate: ["relationsGroup"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flow-area\" [style.transform]=\"'translate(' + canvasPosition.x + 'px, ' + canvasPosition.y + 'px) scale(' + zoomLevel + ')'\">\n <svg class=\"relations-wrapper\">\n <g #relationsGroup></g>\n </svg>\n\n <ng-container *ngFor=\"let nodeDefinition of nodeDefinitions\">\n <ng-container [relationsNodeRenderer]=\"nodeDefinition\" [zoomLevel]=\"zoomLevel\" (destroy)=\"destroyNode($event)\"></ng-container>\n </ng-container>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: RelationsNodeRendererSADirective, selector: "[relationsNodeRenderer]", inputs: ["relationsNodeRenderer", "zoomLevel"], outputs: ["create", "destroy"], exportAs: ["relationsNodeRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
247
300
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RelationsCanvasSAComponent, decorators: [{
|
|
248
301
|
type: Component,
|
|
249
302
|
args: [{ selector: 'relations-canvas', standalone: true, imports: [
|
|
@@ -264,6 +317,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
|
|
|
264
317
|
args: ['relationsGroup', { read: ElementRef }]
|
|
265
318
|
}], nodeDefinitions: [{
|
|
266
319
|
type: Input
|
|
320
|
+
}], convasPositionChanged: [{
|
|
321
|
+
type: Output
|
|
267
322
|
}], onMouseDown: [{
|
|
268
323
|
type: HostListener,
|
|
269
324
|
args: ['mousedown', ['$event']]
|
package/es2015/relations-editor/src/components/relationsCanvas/relationsCanvas.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationsCanvas.component.js","sourceRoot":"","sources":["../../../../../relations-editor/src/components/relationsCanvas/relationsCanvas.component.ts","../../../../../relations-editor/src/components/relationsCanvas/relationsCanvas.component.html"],"names":[],"mappings":"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","sourcesContent":["import {Component, ChangeDetectionStrategy, HostBinding, HostListener, ViewChild, ElementRef, Input, Inject, OnInit, ChangeDetectorRef, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MetadataHistoryManager} from '@anglr/dynamic';\nimport {select} from 'd3';\nimport {Subscription} from 'rxjs';\n\nimport {Coordinates, RelationsNodeMetadata} from '../../interfaces';\nimport {RelationsNodeManager} from '../../services';\nimport {NodeRelationPath} from '../../misc/nodeRelationPath';\nimport {MouseButton} from '../../misc/enums';\nimport {clamp} from '../../misc/utils';\nimport {RelationsNodeRendererSADirective} from '../../directives';\nimport {RELATIONS_HISTORY_MANAGER} from '../../misc/tokens';\n\n/**\n * Default background size in pixels\n */\nconst DEFAULT_BACKGROUND_SIZE = 16;\n\n/**\n * Minimum scale factor\n */\nconst SCALE_FACTOR_MIN = 0.2;\n\n/**\n * Maximum sclae factor\n */\nconst SCALE_FACTOR_MAX = 2;\n\n/**\n * Component used as designer component wrapper for relations component\n */\n@Component(\n{\n selector: 'relations-canvas',\n templateUrl: 'relationsCanvas.component.html',\n standalone: true,\n imports:\n [\n CommonModule,\n RelationsNodeRendererSADirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RelationsCanvasSAComponent implements OnInit, OnDestroy\n{\n //######################### protected properties #########################\n\n /**\n * Subscriptions created during initialization\n */\n protected _initSubscriptions: Subscription = new Subscription();\n\n /**\n * Background pattern size\n */\n protected backgroundSize: number = DEFAULT_BACKGROUND_SIZE;\n\n /**\n * Drag start position coordinates\n */\n protected dragStartPosition: Coordinates =\n {\n x: 0,\n y: 0,\n };\n\n //######################### protected properties - host bindings #########################\n\n /**\n * Background size css styles\n */\n @HostBinding('style.backgroundSize')\n protected get backgroundSizeStyle(): string\n {\n return `${this.backgroundSize}px ${this.backgroundSize}px`;\n }\n\n /**\n * Background position css styles\n */\n @HostBinding('style.backgroundPosition')\n protected get _backgroundPositionStyle(): string\n {\n return `${this.canvasPosition.x % this.backgroundSize}px ${this.canvasPosition.y % this.backgroundSize}px`;\n }\n\n //######################### protected properties - template bindings #########################\n\n /**\n * Canvas position\n */\n protected canvasPosition: Coordinates = {x: 0, y: 0};\n\n /**\n * Zoom level\n */\n protected zoomLevel = 1;\n\n /**\n * Indication whether canvas is being dragged\n */\n protected isDragging: boolean = false;\n\n \n //######################### protected properties - getters and setters #########################\n\n /**\n * Canvas bounding box\n */\n protected get boundingBox(): DOMRect\n {\n return this.element.nativeElement.getBoundingClientRect();\n }\n\n //######################### protected properties - children #########################\n\n /**\n * Node relations svg group\n */\n @ViewChild('relationsGroup', {read: ElementRef})\n protected relationsGroup: ElementRef|null|undefined;\n\n //######################### public properties - inputs #########################\n\n /**\n * Node definition data to render\n */\n @Input()\n public nodeDefinitions: RelationsNodeMetadata[] = [];\n\n //######################### constructor #########################\n constructor(protected element: ElementRef,\n protected relationManager: RelationsNodeManager,\n private _changeDetector: ChangeDetectorRef,\n @Inject(RELATIONS_HISTORY_MANAGER) protected history: MetadataHistoryManager<RelationsNodeMetadata[]>,)\n {\n }\n\n //######################### public methods - implementation of OnInit #########################\n \n /**\n * Initialize component\n */\n public ngOnInit(): void\n {\n this._initSubscriptions.add(this.relationManager.activeNodeChange.subscribe(() => this.focusNode(this.relationManager.activeNode)));\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this._initSubscriptions.unsubscribe();\n }\n\n //######################### public methods #########################\n\n /**\n * Focuses canvas to selected node\n * @param id Relations node identifier\n * @returns \n */\n public focusNode(id?: string|null): void\n {\n if (!id)\n {\n return;\n }\n\n const node = this.nodeDefinitions?.find(node => node.id === id);\n\n if (node?.nodeMetadata?.coordinates)\n {\n // this._setZoomLevel(1);\n this.canvasPosition = \n {\n x: (-node?.nodeMetadata?.coordinates.x) * this.zoomLevel + this.boundingBox.width/2,\n y: (-node?.nodeMetadata?.coordinates.y) * this.zoomLevel + this.boundingBox.height/2,\n };\n \n this._changeDetector.detectChanges();\n }\n }\n\n /**\n * Creates node relation path\n */\n public createRelation(): NodeRelationPath\n {\n return new NodeRelationPath(select(this.relationsGroup?.nativeElement), this.relationManager, this.history, null, null);\n }\n\n public getPositionInCanvas(point: {x: number, y: number}): Coordinates\n {\n return {\n x: (point.x - this.boundingBox.left - this.canvasPosition.x)/this.zoomLevel,\n y: (point.y - this.boundingBox.top - this.canvasPosition.y)/this.zoomLevel\n };\n }\n\n //######################### protected methods - host listeners #########################\n\n /**\n * Mouse down event, handles moving of canvas\n * @param event - Mouse event that occured\n */\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent): void\n {\n if (event.buttons == MouseButton.LEFT)\n {\n this.dragStartPosition =\n {\n x: event.clientX - this.canvasPosition.x,\n y: event.clientY - this.canvasPosition.y\n };\n \n this.isDragging = true;\n }\n }\n\n /**\n * Mouse move event, handles moving of canvas\n * @param event - Mouse event that occured\n */\n @HostListener('mousemove', ['$event'])\n protected onMouseMove(event: MouseEvent): void\n {\n if (this.isDragging)\n {\n this.canvasPosition =\n {\n x: event.clientX - this.dragStartPosition.x,\n y: event.clientY - this.dragStartPosition.y\n };\n }\n }\n\n /**\n * Mouse up event, handles moving of canvas\n * @param event - Mouse event that occured\n */\n @HostListener('window:mouseup', ['$event'])\n protected onMouseUp(_: MouseEvent): void\n {\n if (this.isDragging)\n {\n this.isDragging = false;\n }\n }\n\n /**\n * Wheel event, used for zooming\n * @param event - Wheel event that occured\n */\n @HostListener('wheel', ['$event'])\n protected onWheel(event: WheelEvent): void\n {\n if (event.deltaY)\n {\n const newZoomLevel = this._calculateNewZoomLevel(event.deltaY > 1 ? -1 : 1); \n \n const posX = (event.clientX - this.canvasPosition.x - this.boundingBox.left) / this.zoomLevel;\n const posY = (event.clientY - this.canvasPosition.y - this.boundingBox.top) / this.zoomLevel;\n\n this.canvasPosition.x = event.clientX - this.boundingBox.left - posX*newZoomLevel;\n this.canvasPosition.y = event.clientY - this.boundingBox.top - posY*newZoomLevel;\n\n this._setZoomLevel(newZoomLevel);\n }\n \n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n //######################### public methods #########################\n\n /**\n * Zooms canvas in by one step\n */\n public zoomIn(): void\n {\n this._setZoomLevel(this._calculateNewZoomLevel(1));\n }\n\n /**\n * Zooms canvas out by one step\n */\n public zoomOut(): void\n {\n this._setZoomLevel(this._calculateNewZoomLevel(-1));\n }\n\n /**\n * Resets zoom level\n */\n public resetZoom(): void\n {\n this._setZoomLevel(1);\n }\n\n //######################### protected methods - template bindings #########################\n\n /**\n * Destroys node\n * @param node - Definition of node to be destroyed\n */\n protected destroyNode(node: RelationsNodeMetadata): void\n {\n const index = this.nodeDefinitions.indexOf(node);\n\n if(index < 0)\n {\n return;\n }\n\n this.nodeDefinitions.splice(index, 1);\n\n this.history.getNewState();\n }\n\n //######################### private methods #########################\n\n /**\n * Calculates new zoom level based on dalte\n * @param delta \n * @returns \n */\n private _calculateNewZoomLevel(delta: number): number\n {\n return clamp(this.zoomLevel + delta * 0.05, SCALE_FACTOR_MIN, SCALE_FACTOR_MAX);\n }\n\n /**\n * Sets zoom level\n * @param newZoomLevel new zoom level\n */\n private _setZoomLevel(newZoomLevel: number): void\n {\n this.zoomLevel = newZoomLevel;\n this.backgroundSize = DEFAULT_BACKGROUND_SIZE * this.zoomLevel;\n }\n}","<div class=\"flow-area\" [style.transform]=\"'translate(' + canvasPosition.x + 'px, ' + canvasPosition.y + 'px) scale(' + zoomLevel + ')'\">\n <svg class=\"relations-wrapper\">\n <g #relationsGroup></g>\n </svg>\n\n <ng-container *ngFor=\"let nodeDefinition of nodeDefinitions\">\n <ng-container [relationsNodeRenderer]=\"nodeDefinition\" [zoomLevel]=\"zoomLevel\" (destroy)=\"destroyNode($event)\"></ng-container>\n </ng-container>\n</div>"]}
|
|
1
|
+
{"version":3,"file":"relationsCanvas.component.js","sourceRoot":"","sources":["../../../../../relations-editor/src/components/relationsCanvas/relationsCanvas.component.ts","../../../../../relations-editor/src/components/relationsCanvas/relationsCanvas.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,uBAAuB,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAU,iBAAiB,EAAa,YAAY,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC9L,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,sBAAsB,EAAC,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAC,MAAM,EAAC,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAC,YAAY,EAAC,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAC,oBAAoB,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAC,gCAAgC,EAAC,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAC,yBAAyB,EAAC,MAAM,mBAAmB,CAAC;;;;;AAE5D;;GAEG;AACH,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACH,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B;;GAEG;AACH,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B;;GAEG;AAaH,MAAM,OAAO,0BAA0B;IA8BnC,0FAA0F;IAE1F;;OAEG;IACH,IACc,mBAAmB;QAE7B,OAAO,GAAG,IAAI,CAAC,cAAc,MAAM,IAAI,CAAC,cAAc,IAAI,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,IACc,wBAAwB;QAElC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC;IAC/G,CAAC;IAwBD,gGAAgG;IAEhG;;OAEG;IACH,IAAW,WAAW;QAElB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;IAC9D,CAAC;IAuBD,iEAAiE;IACjE,YAAsB,OAAmB,EACnB,eAAqC,EACvC,eAAkC,EACG,OAAwD;QAH3F,YAAO,GAAP,OAAO,CAAY;QACnB,oBAAe,GAAf,eAAe,CAAsB;QACvC,oBAAe,GAAf,eAAe,CAAmB;QACG,YAAO,GAAP,OAAO,CAAiD;QAzGjH,wEAAwE;QAExE;;WAEG;QACK,qBAAgB,GAAgB,IAAI,CAAC;QAE7C,0EAA0E;QAE1E;;WAEG;QACO,uBAAkB,GAAiB,IAAI,YAAY,EAAE,CAAC;QAEhE;;WAEG;QACO,mBAAc,GAAW,uBAAuB,CAAC;QAE3D;;WAEG;QACO,sBAAiB,GAC3B;YACI,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACP,CAAC;QAsBF,8FAA8F;QAE9F;;WAEG;QACO,mBAAc,GAAgB,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC;QAErD;;WAEG;QACO,kBAAa,GAAgB,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC;QAEpD;;WAEG;QACO,cAAS,GAAG,CAAC,CAAC;QAExB;;WAEG;QACO,eAAU,GAAY,KAAK,CAAC;QAoBtC,gFAAgF;QAEhF;;WAEG;QAEI,oBAAe,GAA4B,EAAE,CAAC;QAErD,iFAAiF;QAG1E,0BAAqB,GAAuB,IAAI,YAAY,EAAQ,CAAC;IAQ5E,CAAC;IAED,+FAA+F;IAE/F;;OAEG;IACI,QAAQ;QAEX,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxI,CAAC;IAED,kGAAkG;IAElG;;OAEG;IACI,WAAW;QAEd,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IAED,oEAAoE;IAEpE;;;;OAIG;IACI,SAAS,CAAC,EAAgB;;QAE7B,IAAI,CAAC,EAAE,EACP;YACI,OAAO;SACV;QAED,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,eAAe,0CAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhE,IAAI,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,0CAAE,WAAW,EACnC;YACI,yBAAyB;YACzB,IAAI,CAAC,cAAc;gBACnB;oBACI,CAAC,EAAE,CAAC,CAAC,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,0CAAE,WAAW,CAAC,CAAC,CAAA,CAAC,GAAG,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAC,CAAC;oBACpF,CAAC,EAAE,CAAC,CAAC,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,0CAAE,WAAW,CAAC,CAAC,CAAA,CAAC,GAAG,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,CAAC;iBACxF,CAAC;YAEF,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;SACxC;IACL,CAAC;IAED;;OAEG;IACI,cAAc;;QAEjB,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAA,IAAI,CAAC,cAAc,0CAAE,aAAa,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5H,CAAC;IAEM,mBAAmB,CAAC,KAA6B;QAEpD,OAAO;YACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,SAAS;YAC3E,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,SAAS;SAC7E,CAAC;IACN,CAAC;IAED,wFAAwF;IAExF;;;OAGG;IAEO,WAAW,CAAC,KAAiB;QAEnC,IAAI,KAAK,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,EACrC;YACI,IAAI,CAAC,iBAAiB;gBACtB;oBACI,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;oBACxC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;iBAC3C,CAAC;YAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;IACL,CAAC;IAED;;;OAGG;IAEO,WAAW,CAAC,KAAiB;QAEnC,IAAI,CAAC,aAAa,GAAG;YACjB,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI;YACxC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG;SAC1C,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,EACnB;YACI,IAAI,CAAC,cAAc;gBACnB;oBACI,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAC3C,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;iBAC9C,CAAC;SACL;aAED;YACI,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,MAAK,WAAW,CAAC,IAAI,EACvC;gBACI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAC1B;oBACI,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;wBAErC,MAAM,KAAK,GAAgB;4BACvB,CAAC,EAAE,CAAC;4BACJ,CAAC,EAAE,CAAC;yBACP,CAAC;wBAEF,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAC,GAAG,EACtD;4BACI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAC,GAAG,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAC,EAAE,CAAC,GAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;yBAC/I;6BACI,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAC,EAAE,EAC1D;4BACI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAC,EAAE,CAAC,GAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;yBAC9I;wBAED,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,GAAG,EACvD;4BACI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,GAAG,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,EAAE,CAAC,GAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;yBACjJ;6BACI,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,EAAE,EAC3D;4BACI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAC,EAAE,CAAC,GAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;yBAChJ;wBAED,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EAChC;4BACI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;4BAClC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4BACjC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;4BACjC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;yBACxC;oBACL,CAAC,EAAE,EAAE,CAAsB,CAAC;iBAC/B;aACJ;SACJ;IACL,CAAC;IAED;;;OAGG;IAEO,SAAS,CAAC,CAAa;QAE7B,IAAI,IAAI,CAAC,UAAU,EACnB;YACI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,gBAAgB,EACzB;YACI,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC;IACL,CAAC;IAED;;;OAGG;IAEO,OAAO,CAAC,KAAiB;QAE/B,IAAI,KAAK,CAAC,MAAM,EAChB;YACI,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5E,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9F,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAE7F,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,GAAC,YAAY,CAAC;YAClF,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,GAAC,YAAY,CAAC;YAEjF,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;SACpC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACrC,CAAC;IAED,oEAAoE;IAEpE;;OAEG;IACI,MAAM;QAET,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,OAAO;QAEV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,SAAS;QAEZ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,2FAA2F;IAE3F;;;OAGG;IACO,WAAW,CAAC,IAA2B;QAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAG,KAAK,GAAG,CAAC,EACZ;YACI,OAAO;SACV;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,qEAAqE;IAErE;;;;OAIG;IACK,sBAAsB,CAAC,KAAa;QAExC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IACpF,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,YAAoB;QAEtC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC;IACnE,CAAC;;uHAlXQ,0BAA0B,iHA2Gf,yBAAyB;2GA3GpC,0BAA0B,2jBAuFC,UAAU,6BCxIlD,odAQM,2CDoCE,YAAY,4JACZ,gCAAgC;2FAI3B,0BAA0B;kBAZtC,SAAS;+BAEI,kBAAkB,cAEhB,IAAI,WAEhB;wBACI,YAAY;wBACZ,gCAAgC;qBACnC,mBACgB,uBAAuB,CAAC,MAAM;;0BA6GlC,MAAM;2BAAC,yBAAyB;yCAvE/B,mBAAmB;sBADhC,WAAW;uBAAC,sBAAsB;gBAUrB,wBAAwB;sBADrC,WAAW;uBAAC,0BAA0B;gBA4C7B,cAAc;sBADvB,SAAS;uBAAC,gBAAgB,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;gBASxC,eAAe;sBADrB,KAAK;gBAMC,qBAAqB;sBAD3B,MAAM;gBAmFG,WAAW;sBADpB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAoB3B,WAAW;sBADpB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAiE3B,SAAS;sBADlB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAoBhC,OAAO;sBADhB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import {Component, ChangeDetectionStrategy, HostBinding, HostListener, ViewChild, ElementRef, Input, Inject, OnInit, ChangeDetectorRef, OnDestroy, EventEmitter, Output} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MetadataHistoryManager} from '@anglr/dynamic';\nimport {select} from 'd3';\nimport {Subscription} from 'rxjs';\n\nimport {Coordinates, RelationsNodeMetadata} from '../../interfaces';\nimport {RelationsNodeManager} from '../../services';\nimport {NodeRelationPath} from '../../misc/nodeRelationPath';\nimport {MouseButton} from '../../misc/enums';\nimport {clamp} from '../../misc/utils';\nimport {RelationsNodeRendererSADirective} from '../../directives';\nimport {RELATIONS_HISTORY_MANAGER} from '../../misc/tokens';\n\n/**\n * Default background size in pixels\n */\nconst DEFAULT_BACKGROUND_SIZE = 16;\n\n/**\n * Minimum scale factor\n */\nconst SCALE_FACTOR_MIN = 0.2;\n\n/**\n * Maximum scale factor\n */\nconst SCALE_FACTOR_MAX = 2;\n\n/**\n * Maximal movement delta\n */\nconst MOVEMENT_DELTA_MAX = 10;\n\n/**\n * Component used as designer component wrapper for relations component\n */\n@Component(\n{\n selector: 'relations-canvas',\n templateUrl: 'relationsCanvas.component.html',\n standalone: true,\n imports:\n [\n CommonModule,\n RelationsNodeRendererSADirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RelationsCanvasSAComponent implements OnInit, OnDestroy\n{\n //######################### private properties #########################\n\n /**\n * Identifier of canvas move timer\n */\n private _canvasMoveTimer: number|null = null;\n\n //######################### protected properties #########################\n\n /**\n * Subscriptions created during initialization\n */\n protected _initSubscriptions: Subscription = new Subscription();\n\n /**\n * Background pattern size\n */\n protected backgroundSize: number = DEFAULT_BACKGROUND_SIZE;\n\n /**\n * Drag start position coordinates\n */\n protected dragStartPosition: Coordinates =\n {\n x: 0,\n y: 0,\n };\n\n //######################### protected properties - host bindings #########################\n\n /**\n * Background size css styles\n */\n @HostBinding('style.backgroundSize')\n protected get backgroundSizeStyle(): string\n {\n return `${this.backgroundSize}px ${this.backgroundSize}px`;\n }\n\n /**\n * Background position css styles\n */\n @HostBinding('style.backgroundPosition')\n protected get _backgroundPositionStyle(): string\n {\n return `${this.canvasPosition.x % this.backgroundSize}px ${this.canvasPosition.y % this.backgroundSize}px`;\n }\n\n //######################### protected properties - template bindings #########################\n\n /**\n * Canvas position\n */\n protected canvasPosition: Coordinates = {x: 0, y: 0};\n\n /**\n * Mouse position in canvas\n */\n protected mousePosition: Coordinates = {x: 0, y: 0};\n\n /**\n * Zoom level\n */\n protected zoomLevel = 1;\n\n /**\n * Indication whether canvas is being dragged\n */\n protected isDragging: boolean = false;\n\n //######################### protected properties - getters and setters #########################\n\n /**\n * Canvas bounding box\n */\n public get boundingBox(): DOMRect\n {\n return this.element.nativeElement.getBoundingClientRect();\n }\n\n //######################### protected properties - children #########################\n\n /**\n * Node relations svg group\n */\n @ViewChild('relationsGroup', {read: ElementRef})\n protected relationsGroup: ElementRef|null|undefined;\n\n //######################### public properties - inputs #########################\n\n /**\n * Node definition data to render\n */\n @Input()\n public nodeDefinitions: RelationsNodeMetadata[] = [];\n\n //######################### public properties - outputs #########################\n\n @Output()\n public convasPositionChanged: EventEmitter<void> = new EventEmitter<void>();\n\n //######################### constructor #########################\n constructor(protected element: ElementRef,\n protected relationManager: RelationsNodeManager,\n private _changeDetector: ChangeDetectorRef,\n @Inject(RELATIONS_HISTORY_MANAGER) protected history: MetadataHistoryManager<RelationsNodeMetadata[]>,)\n {\n }\n\n //######################### public methods - implementation of OnInit #########################\n \n /**\n * Initialize component\n */\n public ngOnInit(): void\n {\n this._initSubscriptions.add(this.relationManager.activeNodeChange.subscribe(() => this.focusNode(this.relationManager.activeNode)));\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this._initSubscriptions.unsubscribe();\n }\n\n //######################### public methods #########################\n\n /**\n * Focuses canvas to selected node\n * @param id Relations node identifier\n * @returns \n */\n public focusNode(id?: string|null): void\n {\n if (!id)\n {\n return;\n }\n\n const node = this.nodeDefinitions?.find(node => node.id === id);\n\n if (node?.nodeMetadata?.coordinates)\n {\n // this._setZoomLevel(1);\n this.canvasPosition = \n {\n x: (-node?.nodeMetadata?.coordinates.x) * this.zoomLevel + this.boundingBox.width/2,\n y: (-node?.nodeMetadata?.coordinates.y) * this.zoomLevel + this.boundingBox.height/2,\n };\n \n this._changeDetector.detectChanges();\n }\n }\n\n /**\n * Creates node relation path\n */\n public createRelation(): NodeRelationPath\n {\n return new NodeRelationPath(select(this.relationsGroup?.nativeElement), this.relationManager, this.history, null, null);\n }\n\n public getPositionInCanvas(point: {x: number, y: number}): Coordinates\n {\n return {\n x: (point.x - this.boundingBox.left - this.canvasPosition.x)/this.zoomLevel,\n y: (point.y - this.boundingBox.top - this.canvasPosition.y)/this.zoomLevel\n };\n }\n\n //######################### protected methods - host listeners #########################\n\n /**\n * Mouse down event, handles moving of canvas\n * @param event - Mouse event that occured\n */\n @HostListener('mousedown', ['$event'])\n protected onMouseDown(event: MouseEvent): void\n {\n if (event.buttons == MouseButton.LEFT)\n {\n this.dragStartPosition =\n {\n x: event.clientX - this.canvasPosition.x,\n y: event.clientY - this.canvasPosition.y\n };\n \n this.isDragging = true;\n }\n }\n\n /**\n * Mouse move event, handles moving of canvas\n * @param event - Mouse event that occured\n */\n @HostListener('mousemove', ['$event'])\n protected onMouseMove(event: MouseEvent): void\n {\n this.mousePosition = {\n x: event.clientX - this.boundingBox.left,\n y: event.clientY - this.boundingBox.top\n };\n\n if (this.isDragging)\n {\n this.canvasPosition =\n {\n x: event.clientX - this.dragStartPosition.x,\n y: event.clientY - this.dragStartPosition.y\n };\n }\n else\n {\n if (event?.buttons === MouseButton.LEFT)\n {\n if (!this._canvasMoveTimer)\n {\n this._canvasMoveTimer = setInterval(() =>\n {\n const delta: Coordinates = {\n x: 0,\n y: 0,\n };\n\n if (this.mousePosition.x >= this.boundingBox.width*0.9)\n {\n delta.x -= Math.min((this.mousePosition.x - this.boundingBox.width*0.9)/(this.boundingBox.width/10)*MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);\n }\n else if (this.mousePosition.x <= this.boundingBox.width/10)\n {\n delta.x += Math.min((this.boundingBox.width/10 - this.mousePosition.x)/(this.boundingBox.width/10)*MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);\n }\n\n if (this.mousePosition.y >= this.boundingBox.height*0.9)\n {\n delta.y -= Math.min((this.mousePosition.y - this.boundingBox.height*0.9)/(this.boundingBox.height/10)*MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);\n }\n else if (this.mousePosition.y <= this.boundingBox.height/10)\n {\n delta.y += Math.min((this.boundingBox.height/10 - this.mousePosition.y)/(this.boundingBox.height/10)*MOVEMENT_DELTA_MAX, MOVEMENT_DELTA_MAX);\n }\n\n if (delta.x != 0 || delta.y != 0)\n {\n this.convasPositionChanged.emit();\n this.canvasPosition.x += delta.x;\n this.canvasPosition.y += delta.y;\n this._changeDetector.detectChanges();\n }\n }, 33) as unknown as number;\n }\n }\n }\n }\n\n /**\n * Mouse up event, handles moving of canvas\n * @param event - Mouse event that occured\n */\n @HostListener('window:mouseup', ['$event'])\n protected onMouseUp(_: MouseEvent): void\n {\n if (this.isDragging)\n {\n this.isDragging = false;\n }\n\n if (this._canvasMoveTimer)\n {\n clearInterval(this._canvasMoveTimer);\n this._canvasMoveTimer = null;\n }\n }\n\n /**\n * Wheel event, used for zooming\n * @param event - Wheel event that occured\n */\n @HostListener('wheel', ['$event'])\n protected onWheel(event: WheelEvent): void\n {\n if (event.deltaY)\n {\n const newZoomLevel = this._calculateNewZoomLevel(event.deltaY > 1 ? -1 : 1); \n \n const posX = (event.clientX - this.canvasPosition.x - this.boundingBox.left) / this.zoomLevel;\n const posY = (event.clientY - this.canvasPosition.y - this.boundingBox.top) / this.zoomLevel;\n\n this.canvasPosition.x = event.clientX - this.boundingBox.left - posX*newZoomLevel;\n this.canvasPosition.y = event.clientY - this.boundingBox.top - posY*newZoomLevel;\n\n this._setZoomLevel(newZoomLevel);\n }\n \n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n //######################### public methods #########################\n\n /**\n * Zooms canvas in by one step\n */\n public zoomIn(): void\n {\n this._setZoomLevel(this._calculateNewZoomLevel(1));\n }\n\n /**\n * Zooms canvas out by one step\n */\n public zoomOut(): void\n {\n this._setZoomLevel(this._calculateNewZoomLevel(-1));\n }\n\n /**\n * Resets zoom level\n */\n public resetZoom(): void\n {\n this._setZoomLevel(1);\n }\n\n //######################### protected methods - template bindings #########################\n\n /**\n * Destroys node\n * @param node - Definition of node to be destroyed\n */\n protected destroyNode(node: RelationsNodeMetadata): void\n {\n const index = this.nodeDefinitions.indexOf(node);\n\n if(index < 0)\n {\n return;\n }\n\n this.nodeDefinitions.splice(index, 1);\n\n this.history.getNewState();\n }\n\n //######################### private methods #########################\n\n /**\n * Calculates new zoom level based on dalte\n * @param delta \n * @returns \n */\n private _calculateNewZoomLevel(delta: number): number\n {\n return clamp(this.zoomLevel + delta * 0.05, SCALE_FACTOR_MIN, SCALE_FACTOR_MAX);\n }\n\n /**\n * Sets zoom level\n * @param newZoomLevel new zoom level\n */\n private _setZoomLevel(newZoomLevel: number): void\n {\n this.zoomLevel = newZoomLevel;\n this.backgroundSize = DEFAULT_BACKGROUND_SIZE * this.zoomLevel;\n }\n}","<div class=\"flow-area\" [style.transform]=\"'translate(' + canvasPosition.x + 'px, ' + canvasPosition.y + 'px) scale(' + zoomLevel + ')'\">\n <svg class=\"relations-wrapper\">\n <g #relationsGroup></g>\n </svg>\n\n <ng-container *ngFor=\"let nodeDefinition of nodeDefinitions\">\n <ng-container [relationsNodeRenderer]=\"nodeDefinition\" [zoomLevel]=\"zoomLevel\" (destroy)=\"destroyNode($event)\"></ng-container>\n </ng-container>\n</div>"]}
|
|
@@ -90,7 +90,7 @@ export class RelationsEditorSAComponent {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
RelationsEditorSAComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RelationsEditorSAComponent, deps: [{ token: RELATIONS_HISTORY_MANAGER }, { token: i0.ChangeDetectorRef }, { token: i1.EditorHotkeys, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
93
|
-
RelationsEditorSAComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: RelationsEditorSAComponent, isStandalone: true, selector: "relations-editor", inputs: { metadata: "metadata", packages: "packages", whiteList: "whiteList", blackList: "blackList" }, viewQueries: [{ propertyName: "relationCanvas", first: true, predicate: RelationsCanvasSAComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"dynamic-flex-row dynamic-flex-1\">\n <div class=\"overflow-vertical-scroll dynamic-thin-scrollbar\">\n <package-manager></package-manager>\n <nodes-palette [canvasDropList]=\"dropList\" [packages]=\"packages\" [whiteList]=\"whiteList\" [blackList]=\"blackList\" style=\"width: 250px;\"></nodes-palette>\n </div>\n\n <relations-canvas #dropList=\"cdkDropList\" [nodeDefinitions]=\"metadata\" class=\"dynamic-flex-1\" cdkDropList (cdkDropListDropped)=\"addNode($event)\"></relations-canvas>\n</div>", styles: [":host{display: flex;}"], dependencies: [{ kind: "component", type: NodesPaletteSAComponent, selector: "nodes-palette", inputs: ["canvasDropList", "packages", "whiteList", "blackList"] }, { kind: "component", type: RelationsCanvasSAComponent, selector: "relations-canvas", inputs: ["nodeDefinitions"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "ngmodule", type: PackageManagerModule }, { kind: "component", type: i3.PackageManagerComponent, selector: "package-manager" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
93
|
+
RelationsEditorSAComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: RelationsEditorSAComponent, isStandalone: true, selector: "relations-editor", inputs: { metadata: "metadata", packages: "packages", whiteList: "whiteList", blackList: "blackList" }, viewQueries: [{ propertyName: "relationCanvas", first: true, predicate: RelationsCanvasSAComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"dynamic-flex-row dynamic-flex-1\">\n <div class=\"overflow-vertical-scroll dynamic-thin-scrollbar\">\n <package-manager></package-manager>\n <nodes-palette [canvasDropList]=\"dropList\" [packages]=\"packages\" [whiteList]=\"whiteList\" [blackList]=\"blackList\" style=\"width: 250px;\"></nodes-palette>\n </div>\n\n <relations-canvas #dropList=\"cdkDropList\" [nodeDefinitions]=\"metadata\" class=\"dynamic-flex-1\" cdkDropList (cdkDropListDropped)=\"addNode($event)\"></relations-canvas>\n</div>", styles: [":host{display: flex;}"], dependencies: [{ kind: "component", type: NodesPaletteSAComponent, selector: "nodes-palette", inputs: ["canvasDropList", "packages", "whiteList", "blackList"] }, { kind: "component", type: RelationsCanvasSAComponent, selector: "relations-canvas", inputs: ["nodeDefinitions"], outputs: ["convasPositionChanged"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "ngmodule", type: PackageManagerModule }, { kind: "component", type: i3.PackageManagerComponent, selector: "package-manager" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RelationsEditorSAComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
96
96
|
args: [{ selector: 'relations-editor', standalone: true, imports: [
|
package/es2015/relations-editor/src/components/relationsEditor/relationsEditor.component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationsEditor.component.js","sourceRoot":"","sources":["../../../../../relations-editor/src/components/relationsEditor/relationsEditor.component.ts","../../../../../relations-editor/src/components/relationsEditor/relationsEditor.component.html"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relationsEditor.component.js","sourceRoot":"","sources":["../../../../../relations-editor/src/components/relationsEditor/relationsEditor.component.ts","../../../../../relations-editor/src/components/relationsEditor/relationsEditor.component.html"],"names":[],"mappings":"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","sourcesContent":["import {Component, ChangeDetectionStrategy, Input, OnDestroy, OnInit, Inject, ChangeDetectorRef, OnChanges, SimpleChanges, ViewChild, Optional} from '@angular/core';\nimport {CdkDragDrop, DragDropModule} from '@angular/cdk/drag-drop';\nimport {HostDisplayFlexStyle} from '@anglr/common';\nimport {DynamicItemSource, EditorHotkeys, MetadataHistoryManager, PackageManagerModule} from '@anglr/dynamic';\nimport {nameof} from '@jscrpt/common';\nimport {Subscription} from 'rxjs';\n\nimport {NodesPaletteSAComponent} from '../nodesPalette/nodesPalette.component';\nimport {RelationsCanvasSAComponent} from '../relationsCanvas/relationsCanvas.component';\nimport {RelationsNodeDragData, RelationsNodeMetadata} from '../../interfaces';\nimport {RELATIONS_HISTORY_MANAGER} from '../../misc/tokens';\n\n/**\n * Component that represents relations editor with palette and canvas\n */\n@Component(\n{\n selector: 'relations-editor',\n templateUrl: 'relationsEditor.component.html',\n styles: [HostDisplayFlexStyle],\n standalone: true,\n imports:\n [\n NodesPaletteSAComponent,\n RelationsCanvasSAComponent,\n DragDropModule,\n PackageManagerModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RelationsEditorSAComponent implements OnInit, OnChanges, OnDestroy\n{\n //######################### protected properties #########################\n\n /**\n * Subscriptions created during initialization\n */\n protected initSubscriptions: Subscription = new Subscription();\n\n\n //######################### protected properties - view children #########################\n\n /**\n * Relation canvas\n */\n @ViewChild(RelationsCanvasSAComponent)\n protected relationCanvas: RelationsCanvasSAComponent|undefined|null;\n\n //######################### public properties - inputs #########################\n\n /**\n * Metadata used for rendering relations in canvas\n */\n @Input()\n public metadata: RelationsNodeMetadata[] = [];\n\n /**\n * Array of packages that should be used, if specified, package manager is not displayed\n */\n @Input()\n public packages: string[]|undefined|null;\n\n /**\n * Array of dynamic items sources which should be whitelisted, if this is used, package which is whitelisted will override black list and only components from whitelist will be available\n */\n @Input()\n public whiteList: DynamicItemSource[]|undefined|null;\n\n /**\n * Array of dynamic items sources which should be blacklisted, components used in this list will not be available, only if overriden by whitelist\n */\n @Input()\n public blackList: DynamicItemSource[]|undefined|null;\n\n //######################### constructor #########################\n constructor(@Inject(RELATIONS_HISTORY_MANAGER) protected history: MetadataHistoryManager<RelationsNodeMetadata[]>,\n protected changeDetector: ChangeDetectorRef,\n @Optional() protected hotkeys?: EditorHotkeys,)\n {\n hotkeys?.init();\n }\n\n //######################### public methods - implementation of OnInit #########################\n \n /**\n * Initialize component\n */\n public ngOnInit(): void\n {\n this.initSubscriptions.add(this.history.pop.subscribe(metadata =>\n {\n this.metadata = metadata;\n this.changeDetector.detectChanges();\n }));\n\n if(this.hotkeys)\n {\n this.initSubscriptions.add(this.hotkeys.undo.subscribe(() => this.history.undo()));\n this.initSubscriptions.add(this.hotkeys.redo.subscribe(() => this.history.redo()));\n }\n }\n\n //######################### public methods - implementation of OnChanges #########################\n \n /**\n * Called when input value changes\n */\n public ngOnChanges(changes: SimpleChanges): void\n {\n if(nameof<RelationsEditorSAComponent>('metadata') in changes)\n {\n this.history.clean();\n \n if(this.metadata)\n {\n this.history.setInitialState(this.metadata);\n }\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n \n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this.initSubscriptions.unsubscribe();\n this.hotkeys?.destroy();\n }\n\n //######################### protected methods - template bindings #########################\n\n /**\n * Adds new node into canvas and metadata\n * @param event - Drop event that occured\n */\n protected addNode(event: CdkDragDrop<RelationsNodeDragData, RelationsNodeDragData, RelationsNodeDragData>): void\n { \n if (event.item.data.metadata.nodeMetadata?.coordinates)\n {\n const coordinates = this.relationCanvas?.getPositionInCanvas(event.dropPoint);\n\n if(coordinates)\n {\n event.item.data.metadata.nodeMetadata.coordinates.x = coordinates.x;\n event.item.data.metadata.nodeMetadata.coordinates.y = coordinates.y;\n }\n }\n\n this.metadata =\n [\n ...this.metadata,\n event.item.data.metadata,\n ];\n\n this.history.getNewState();\n }\n}","<div class=\"dynamic-flex-row dynamic-flex-1\">\n <div class=\"overflow-vertical-scroll dynamic-thin-scrollbar\">\n <package-manager></package-manager>\n <nodes-palette [canvasDropList]=\"dropList\" [packages]=\"packages\" [whiteList]=\"whiteList\" [blackList]=\"blackList\" style=\"width: 250px;\"></nodes-palette>\n </div>\n\n <relations-canvas #dropList=\"cdkDropList\" [nodeDefinitions]=\"metadata\" class=\"dynamic-flex-1\" cdkDropList (cdkDropListDropped)=\"addNode($event)\"></relations-canvas>\n</div>"]}
|
|
@@ -4,6 +4,7 @@ import { Subject } from 'rxjs';
|
|
|
4
4
|
import { RelationNodeOutputSAComponent } from './relationsNodeOutput/relationsNodeOutput.component';
|
|
5
5
|
import { RelationNodeInputSAComponent } from './relationsNodeInput/relationsNodeInput.component';
|
|
6
6
|
import { RELATIONS_HISTORY_MANAGER } from '../misc/tokens';
|
|
7
|
+
import { RelationsCanvasSAComponent } from './relationsCanvas/relationsCanvas.component';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
/**
|
|
9
10
|
* Base class for relations node components
|
|
@@ -40,10 +41,22 @@ export class RelationsNodeBase {
|
|
|
40
41
|
get destroy() {
|
|
41
42
|
return this.destroySubject.asObservable();
|
|
42
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Node bounding box
|
|
46
|
+
*/
|
|
47
|
+
get boundingBox() {
|
|
48
|
+
return this.element.nativeElement.getBoundingClientRect();
|
|
49
|
+
}
|
|
43
50
|
//######################### constructor #########################
|
|
44
51
|
constructor(changeDetector, element) {
|
|
45
52
|
this.changeDetector = changeDetector;
|
|
46
53
|
this.element = element;
|
|
54
|
+
//######################### protected properties #########################
|
|
55
|
+
this.canvas = inject(RelationsCanvasSAComponent);
|
|
56
|
+
/**
|
|
57
|
+
* Canvas position change subscription
|
|
58
|
+
*/
|
|
59
|
+
this.canvasPositionChangeSubscription = null;
|
|
47
60
|
/**
|
|
48
61
|
* Metadata history manager
|
|
49
62
|
*/
|
|
@@ -63,14 +76,14 @@ export class RelationsNodeBase {
|
|
|
63
76
|
/**
|
|
64
77
|
* Last mouse down position
|
|
65
78
|
*/
|
|
66
|
-
this.
|
|
79
|
+
this.lastMouseMovePosition = {
|
|
67
80
|
x: 0,
|
|
68
81
|
y: 0
|
|
69
82
|
};
|
|
70
83
|
/**
|
|
71
|
-
*
|
|
84
|
+
* Last mouse down offset position
|
|
72
85
|
*/
|
|
73
|
-
this.
|
|
86
|
+
this.lastMouseDownOffset = {
|
|
74
87
|
x: 0,
|
|
75
88
|
y: 0
|
|
76
89
|
};
|
|
@@ -127,8 +140,10 @@ export class RelationsNodeBase {
|
|
|
127
140
|
* Called when component is destroyed
|
|
128
141
|
*/
|
|
129
142
|
ngOnDestroy() {
|
|
130
|
-
var _a;
|
|
143
|
+
var _a, _b;
|
|
131
144
|
(_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
145
|
+
(_b = this.canvasPositionChangeSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
146
|
+
this.canvasPositionChangeSubscription = null;
|
|
132
147
|
}
|
|
133
148
|
//######################### public methods - implementation of RelationsNode #########################
|
|
134
149
|
/**
|
|
@@ -154,16 +169,20 @@ export class RelationsNodeBase {
|
|
|
154
169
|
onMouseDown(event) {
|
|
155
170
|
this.moved = false;
|
|
156
171
|
this.isDragging = true;
|
|
157
|
-
this.
|
|
172
|
+
this.lastMouseDownOffset =
|
|
158
173
|
{
|
|
159
|
-
x: event.clientX,
|
|
160
|
-
y: event.clientY
|
|
161
|
-
};
|
|
162
|
-
this.lastMouseDownNodePosition =
|
|
163
|
-
{
|
|
164
|
-
x: this.nodePosition.x,
|
|
165
|
-
y: this.nodePosition.y
|
|
174
|
+
x: event.clientX - this.boundingBox.left,
|
|
175
|
+
y: event.clientY - this.boundingBox.top
|
|
166
176
|
};
|
|
177
|
+
this.canvasPositionChangeSubscription = this.canvas.convasPositionChanged.subscribe(() => {
|
|
178
|
+
this.nodePosition = this.canvas.getPositionInCanvas({
|
|
179
|
+
x: this.lastMouseMovePosition.x - this.lastMouseDownOffset.x,
|
|
180
|
+
y: this.lastMouseMovePosition.y - this.lastMouseDownOffset.y,
|
|
181
|
+
});
|
|
182
|
+
this.invalidateVisuals();
|
|
183
|
+
this.updatePosition();
|
|
184
|
+
this.updateRelations();
|
|
185
|
+
});
|
|
167
186
|
event.stopImmediatePropagation();
|
|
168
187
|
}
|
|
169
188
|
/**
|
|
@@ -173,11 +192,15 @@ export class RelationsNodeBase {
|
|
|
173
192
|
onMouseMove(event) {
|
|
174
193
|
if (this.isDragging) {
|
|
175
194
|
this.moved = true;
|
|
176
|
-
this.
|
|
195
|
+
this.lastMouseMovePosition =
|
|
177
196
|
{
|
|
178
|
-
x:
|
|
179
|
-
y:
|
|
197
|
+
x: event.clientX,
|
|
198
|
+
y: event.clientY
|
|
180
199
|
};
|
|
200
|
+
this.nodePosition = this.canvas.getPositionInCanvas({
|
|
201
|
+
x: this.lastMouseMovePosition.x - this.lastMouseDownOffset.x,
|
|
202
|
+
y: this.lastMouseMovePosition.y - this.lastMouseDownOffset.y,
|
|
203
|
+
});
|
|
181
204
|
this.updatePosition();
|
|
182
205
|
event.stopImmediatePropagation();
|
|
183
206
|
event.preventDefault();
|
|
@@ -189,11 +212,14 @@ export class RelationsNodeBase {
|
|
|
189
212
|
* @param event
|
|
190
213
|
*/
|
|
191
214
|
onMouseUp(event) {
|
|
215
|
+
var _a;
|
|
192
216
|
if (this.isDragging) {
|
|
193
217
|
if (this.moved) {
|
|
194
218
|
this.history.getNewState();
|
|
195
219
|
}
|
|
196
220
|
this.isDragging = false;
|
|
221
|
+
(_a = this.canvasPositionChangeSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
222
|
+
this.canvasPositionChangeSubscription = null;
|
|
197
223
|
event.stopImmediatePropagation();
|
|
198
224
|
event.preventDefault();
|
|
199
225
|
}
|