@angflow/angular 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +187 -0
  2. package/dist/base.css +1204 -0
  3. package/dist/esm/index.d.ts +2 -0
  4. package/dist/esm/index.d.ts.map +1 -0
  5. package/dist/esm/index.js +2 -0
  6. package/dist/esm/index.js.map +1 -0
  7. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.d.ts +25 -0
  8. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.d.ts.map +1 -0
  9. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.js +58 -0
  10. package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.js.map +1 -0
  11. package/dist/esm/lib/components/attribution/attribution.component.d.ts +6 -0
  12. package/dist/esm/lib/components/attribution/attribution.component.d.ts.map +1 -0
  13. package/dist/esm/lib/components/attribution/attribution.component.js +32 -0
  14. package/dist/esm/lib/components/attribution/attribution.component.js.map +1 -0
  15. package/dist/esm/lib/components/background/background.component.d.ts +31 -0
  16. package/dist/esm/lib/components/background/background.component.d.ts.map +1 -0
  17. package/dist/esm/lib/components/background/background.component.js +209 -0
  18. package/dist/esm/lib/components/background/background.component.js.map +1 -0
  19. package/dist/esm/lib/components/connection-line/connection-line.component.d.ts +36 -0
  20. package/dist/esm/lib/components/connection-line/connection-line.component.d.ts.map +1 -0
  21. package/dist/esm/lib/components/connection-line/connection-line.component.js +146 -0
  22. package/dist/esm/lib/components/connection-line/connection-line.component.js.map +1 -0
  23. package/dist/esm/lib/components/controls/controls.component.d.ts +25 -0
  24. package/dist/esm/lib/components/controls/controls.component.d.ts.map +1 -0
  25. package/dist/esm/lib/components/controls/controls.component.js +174 -0
  26. package/dist/esm/lib/components/controls/controls.component.js.map +1 -0
  27. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.d.ts +6 -0
  28. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.d.ts.map +1 -0
  29. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.js +24 -0
  30. package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.js.map +1 -0
  31. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts +22 -0
  32. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts.map +1 -0
  33. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.js +64 -0
  34. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.js.map +1 -0
  35. package/dist/esm/lib/components/edges/base-edge.component.d.ts +11 -0
  36. package/dist/esm/lib/components/edges/base-edge.component.d.ts.map +1 -0
  37. package/dist/esm/lib/components/edges/base-edge.component.js +56 -0
  38. package/dist/esm/lib/components/edges/base-edge.component.js.map +1 -0
  39. package/dist/esm/lib/components/edges/bezier-edge.component.d.ts +30 -0
  40. package/dist/esm/lib/components/edges/bezier-edge.component.d.ts.map +1 -0
  41. package/dist/esm/lib/components/edges/bezier-edge.component.js +68 -0
  42. package/dist/esm/lib/components/edges/bezier-edge.component.js.map +1 -0
  43. package/dist/esm/lib/components/edges/edge-text.component.d.ts +11 -0
  44. package/dist/esm/lib/components/edges/edge-text.component.d.ts.map +1 -0
  45. package/dist/esm/lib/components/edges/edge-text.component.js +48 -0
  46. package/dist/esm/lib/components/edges/edge-text.component.js.map +1 -0
  47. package/dist/esm/lib/components/edges/simple-bezier-edge.component.d.ts +21 -0
  48. package/dist/esm/lib/components/edges/simple-bezier-edge.component.d.ts.map +1 -0
  49. package/dist/esm/lib/components/edges/simple-bezier-edge.component.js +57 -0
  50. package/dist/esm/lib/components/edges/simple-bezier-edge.component.js.map +1 -0
  51. package/dist/esm/lib/components/edges/smooth-step-edge.component.d.ts +22 -0
  52. package/dist/esm/lib/components/edges/smooth-step-edge.component.d.ts.map +1 -0
  53. package/dist/esm/lib/components/edges/smooth-step-edge.component.js +59 -0
  54. package/dist/esm/lib/components/edges/smooth-step-edge.component.js.map +1 -0
  55. package/dist/esm/lib/components/edges/step-edge.component.d.ts +22 -0
  56. package/dist/esm/lib/components/edges/step-edge.component.d.ts.map +1 -0
  57. package/dist/esm/lib/components/edges/step-edge.component.js +60 -0
  58. package/dist/esm/lib/components/edges/step-edge.component.js.map +1 -0
  59. package/dist/esm/lib/components/edges/straight-edge.component.d.ts +18 -0
  60. package/dist/esm/lib/components/edges/straight-edge.component.d.ts.map +1 -0
  61. package/dist/esm/lib/components/edges/straight-edge.component.js +53 -0
  62. package/dist/esm/lib/components/edges/straight-edge.component.js.map +1 -0
  63. package/dist/esm/lib/components/handle/handle.component.d.ts +28 -0
  64. package/dist/esm/lib/components/handle/handle.component.d.ts.map +1 -0
  65. package/dist/esm/lib/components/handle/handle.component.js +162 -0
  66. package/dist/esm/lib/components/handle/handle.component.js.map +1 -0
  67. package/dist/esm/lib/components/minimap/minimap.component.d.ts +75 -0
  68. package/dist/esm/lib/components/minimap/minimap.component.d.ts.map +1 -0
  69. package/dist/esm/lib/components/minimap/minimap.component.js +319 -0
  70. package/dist/esm/lib/components/minimap/minimap.component.js.map +1 -0
  71. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.d.ts +6 -0
  72. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.d.ts.map +1 -0
  73. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.js +24 -0
  74. package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.js.map +1 -0
  75. package/dist/esm/lib/components/node-resizer/node-resizer.component.d.ts +44 -0
  76. package/dist/esm/lib/components/node-resizer/node-resizer.component.d.ts.map +1 -0
  77. package/dist/esm/lib/components/node-resizer/node-resizer.component.js +198 -0
  78. package/dist/esm/lib/components/node-resizer/node-resizer.component.js.map +1 -0
  79. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.d.ts +19 -0
  80. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.d.ts.map +1 -0
  81. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.js +101 -0
  82. package/dist/esm/lib/components/node-toolbar/node-toolbar.component.js.map +1 -0
  83. package/dist/esm/lib/components/nodes/default-node.component.d.ts +20 -0
  84. package/dist/esm/lib/components/nodes/default-node.component.d.ts.map +1 -0
  85. package/dist/esm/lib/components/nodes/default-node.component.js +52 -0
  86. package/dist/esm/lib/components/nodes/default-node.component.js.map +1 -0
  87. package/dist/esm/lib/components/nodes/group-node.component.d.ts +19 -0
  88. package/dist/esm/lib/components/nodes/group-node.component.d.ts.map +1 -0
  89. package/dist/esm/lib/components/nodes/group-node.component.js +34 -0
  90. package/dist/esm/lib/components/nodes/group-node.component.js.map +1 -0
  91. package/dist/esm/lib/components/nodes/input-node.component.d.ts +20 -0
  92. package/dist/esm/lib/components/nodes/input-node.component.d.ts.map +1 -0
  93. package/dist/esm/lib/components/nodes/input-node.component.js +49 -0
  94. package/dist/esm/lib/components/nodes/input-node.component.js.map +1 -0
  95. package/dist/esm/lib/components/nodes/output-node.component.d.ts +20 -0
  96. package/dist/esm/lib/components/nodes/output-node.component.d.ts.map +1 -0
  97. package/dist/esm/lib/components/nodes/output-node.component.js +48 -0
  98. package/dist/esm/lib/components/nodes/output-node.component.js.map +1 -0
  99. package/dist/esm/lib/components/panel/panel.component.d.ts +13 -0
  100. package/dist/esm/lib/components/panel/panel.component.d.ts.map +1 -0
  101. package/dist/esm/lib/components/panel/panel.component.js +39 -0
  102. package/dist/esm/lib/components/panel/panel.component.js.map +1 -0
  103. package/dist/esm/lib/components/selection-box/selection-box.component.d.ts +12 -0
  104. package/dist/esm/lib/components/selection-box/selection-box.component.d.ts.map +1 -0
  105. package/dist/esm/lib/components/selection-box/selection-box.component.js +56 -0
  106. package/dist/esm/lib/components/selection-box/selection-box.component.js.map +1 -0
  107. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.d.ts +8 -0
  108. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.d.ts.map +1 -0
  109. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.js +35 -0
  110. package/dist/esm/lib/components/viewport-portal/viewport-portal.component.js.map +1 -0
  111. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.d.ts +70 -0
  112. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.d.ts.map +1 -0
  113. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js +503 -0
  114. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js.map +1 -0
  115. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts +281 -0
  116. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts.map +1 -0
  117. package/dist/esm/lib/container/ng-flow/ng-flow.component.js +644 -0
  118. package/dist/esm/lib/container/ng-flow/ng-flow.component.js.map +1 -0
  119. package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts +56 -0
  120. package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts.map +1 -0
  121. package/dist/esm/lib/container/node-renderer/node-renderer.component.js +312 -0
  122. package/dist/esm/lib/container/node-renderer/node-renderer.component.js.map +1 -0
  123. package/dist/esm/lib/container/pane/pane.component.d.ts +35 -0
  124. package/dist/esm/lib/container/pane/pane.component.d.ts.map +1 -0
  125. package/dist/esm/lib/container/pane/pane.component.js +161 -0
  126. package/dist/esm/lib/container/pane/pane.component.js.map +1 -0
  127. package/dist/esm/lib/container/viewport/viewport.component.d.ts +9 -0
  128. package/dist/esm/lib/container/viewport/viewport.component.d.ts.map +1 -0
  129. package/dist/esm/lib/container/viewport/viewport.component.js +35 -0
  130. package/dist/esm/lib/container/viewport/viewport.component.js.map +1 -0
  131. package/dist/esm/lib/directives/drag.directive.d.ts +21 -0
  132. package/dist/esm/lib/directives/drag.directive.d.ts.map +1 -0
  133. package/dist/esm/lib/directives/drag.directive.js +69 -0
  134. package/dist/esm/lib/directives/drag.directive.js.map +1 -0
  135. package/dist/esm/lib/directives/drop-zone.directive.d.ts +30 -0
  136. package/dist/esm/lib/directives/drop-zone.directive.d.ts.map +1 -0
  137. package/dist/esm/lib/directives/drop-zone.directive.js +58 -0
  138. package/dist/esm/lib/directives/drop-zone.directive.js.map +1 -0
  139. package/dist/esm/lib/directives/key-handler.directive.d.ts +29 -0
  140. package/dist/esm/lib/directives/key-handler.directive.d.ts.map +1 -0
  141. package/dist/esm/lib/directives/key-handler.directive.js +176 -0
  142. package/dist/esm/lib/directives/key-handler.directive.js.map +1 -0
  143. package/dist/esm/lib/directives/node-type.directive.d.ts +21 -0
  144. package/dist/esm/lib/directives/node-type.directive.d.ts.map +1 -0
  145. package/dist/esm/lib/directives/node-type.directive.js +32 -0
  146. package/dist/esm/lib/directives/node-type.directive.js.map +1 -0
  147. package/dist/esm/lib/public-api.d.ts +40 -0
  148. package/dist/esm/lib/public-api.d.ts.map +1 -0
  149. package/dist/esm/lib/public-api.js +67 -0
  150. package/dist/esm/lib/public-api.js.map +1 -0
  151. package/dist/esm/lib/services/flow-store.service.d.ts +227 -0
  152. package/dist/esm/lib/services/flow-store.service.d.ts.map +1 -0
  153. package/dist/esm/lib/services/flow-store.service.js +542 -0
  154. package/dist/esm/lib/services/flow-store.service.js.map +1 -0
  155. package/dist/esm/lib/services/ng-flow.service.d.ts +186 -0
  156. package/dist/esm/lib/services/ng-flow.service.d.ts.map +1 -0
  157. package/dist/esm/lib/services/ng-flow.service.js +501 -0
  158. package/dist/esm/lib/services/ng-flow.service.js.map +1 -0
  159. package/dist/esm/lib/services/tokens.d.ts +4 -0
  160. package/dist/esm/lib/services/tokens.d.ts.map +1 -0
  161. package/dist/esm/lib/services/tokens.js +4 -0
  162. package/dist/esm/lib/services/tokens.js.map +1 -0
  163. package/dist/esm/lib/types/edges.d.ts +83 -0
  164. package/dist/esm/lib/types/edges.d.ts.map +1 -0
  165. package/dist/esm/lib/types/edges.js +2 -0
  166. package/dist/esm/lib/types/edges.js.map +1 -0
  167. package/dist/esm/lib/types/general.d.ts +128 -0
  168. package/dist/esm/lib/types/general.d.ts.map +1 -0
  169. package/dist/esm/lib/types/general.js +2 -0
  170. package/dist/esm/lib/types/general.js.map +1 -0
  171. package/dist/esm/lib/types/index.d.ts +5 -0
  172. package/dist/esm/lib/types/index.d.ts.map +1 -0
  173. package/dist/esm/lib/types/index.js +5 -0
  174. package/dist/esm/lib/types/index.js.map +1 -0
  175. package/dist/esm/lib/types/nodes.d.ts +53 -0
  176. package/dist/esm/lib/types/nodes.d.ts.map +1 -0
  177. package/dist/esm/lib/types/nodes.js +2 -0
  178. package/dist/esm/lib/types/nodes.js.map +1 -0
  179. package/dist/esm/lib/types/store.d.ts +71 -0
  180. package/dist/esm/lib/types/store.d.ts.map +1 -0
  181. package/dist/esm/lib/types/store.js +2 -0
  182. package/dist/esm/lib/types/store.js.map +1 -0
  183. package/dist/esm/lib/utils/changes.d.ts +12 -0
  184. package/dist/esm/lib/utils/changes.d.ts.map +1 -0
  185. package/dist/esm/lib/utils/changes.js +134 -0
  186. package/dist/esm/lib/utils/changes.js.map +1 -0
  187. package/dist/esm/lib/utils/index.d.ts +2 -0
  188. package/dist/esm/lib/utils/index.d.ts.map +1 -0
  189. package/dist/esm/lib/utils/index.js +2 -0
  190. package/dist/esm/lib/utils/index.js.map +1 -0
  191. package/dist/esm/lib/utils/type-guards.d.ts +12 -0
  192. package/dist/esm/lib/utils/type-guards.d.ts.map +1 -0
  193. package/dist/esm/lib/utils/type-guards.js +16 -0
  194. package/dist/esm/lib/utils/type-guards.js.map +1 -0
  195. package/dist/style.css +1392 -0
  196. package/package.json +60 -0
@@ -0,0 +1,24 @@
1
+ import { Component, ChangeDetectionStrategy } from '@angular/core';
2
+ import { FlowStore } from '../../services/flow-store.service';
3
+ import { NgFlowService } from '../../services/ng-flow.service';
4
+ import * as i0 from "@angular/core";
5
+ const _c0 = ["*"];
6
+ export class NgFlowProviderComponent {
7
+ static { this.ɵfac = function NgFlowProviderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NgFlowProviderComponent)(); }; }
8
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NgFlowProviderComponent, selectors: [["ng-flow-provider"]], features: [i0.ɵɵProvidersFeature([FlowStore, NgFlowService])], ngContentSelectors: _c0, decls: 1, vars: 0, template: function NgFlowProviderComponent_Template(rf, ctx) { if (rf & 1) {
9
+ i0.ɵɵprojectionDef();
10
+ i0.ɵɵprojection(0);
11
+ } }, encapsulation: 2, changeDetection: 0 }); }
12
+ }
13
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NgFlowProviderComponent, [{
14
+ type: Component,
15
+ args: [{
16
+ selector: 'ng-flow-provider',
17
+ standalone: true,
18
+ providers: [FlowStore, NgFlowService],
19
+ changeDetection: ChangeDetectionStrategy.OnPush,
20
+ template: `<ng-content />`,
21
+ }]
22
+ }], null, null); })();
23
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NgFlowProviderComponent, { className: "NgFlowProviderComponent", filePath: "lib/components/ng-flow-provider/ng-flow-provider.component.ts", lineNumber: 12 }); })();
24
+ //# sourceMappingURL=ng-flow-provider.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-flow-provider.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/ng-flow-provider/ng-flow-provider.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;;;AAS/D,MAAM,OAAO,uBAAuB;wHAAvB,uBAAuB;oEAAvB,uBAAuB,sEAJvB,CAAC,SAAS,EAAE,aAAa,CAAC;;YAE1B,kBAAc;;;iFAEd,uBAAuB;cAPnC,SAAS;eAAC;gBACT,QAAQ,EAAE,kBAAkB;gBAC5B,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;gBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,QAAQ,EAAE,gBAAgB;aAC3B;;kFACY,uBAAuB"}
@@ -0,0 +1,44 @@
1
+ import { AfterViewInit, OnDestroy } from '@angular/core';
2
+ import { type OnResizeStart, type OnResize, type OnResizeEnd, type ShouldResize, type XYResizerChange, type XYResizerChildChange, type ResizeDragEvent, type ResizeParams } from '@angflow/system';
3
+ import * as i0 from "@angular/core";
4
+ export declare class NodeResizerComponent implements AfterViewInit, OnDestroy {
5
+ private store;
6
+ private el;
7
+ readonly nodeIdInput: import("@angular/core").InputSignal<string | undefined>;
8
+ readonly minWidth: import("@angular/core").InputSignal<number>;
9
+ readonly minHeight: import("@angular/core").InputSignal<number>;
10
+ readonly maxWidth: import("@angular/core").InputSignal<number>;
11
+ readonly maxHeight: import("@angular/core").InputSignal<number>;
12
+ readonly keepAspectRatio: import("@angular/core").InputSignal<boolean>;
13
+ readonly isVisible: import("@angular/core").InputSignal<boolean>;
14
+ readonly color: import("@angular/core").InputSignal<string | undefined>;
15
+ readonly handleClassName: import("@angular/core").InputSignal<string>;
16
+ readonly handleStyle: import("@angular/core").InputSignal<Partial<CSSStyleDeclaration> | undefined>;
17
+ readonly lineClassName: import("@angular/core").InputSignal<string>;
18
+ readonly lineStyle: import("@angular/core").InputSignal<Partial<CSSStyleDeclaration> | undefined>;
19
+ readonly autoScale: import("@angular/core").InputSignal<boolean>;
20
+ readonly shouldResize: import("@angular/core").InputSignal<ShouldResize | undefined>;
21
+ readonly onResizeStartCb: import("@angular/core").InputSignal<OnResizeStart | undefined>;
22
+ readonly onResizeCb: import("@angular/core").InputSignal<OnResize | undefined>;
23
+ readonly onResizeEndCb: import("@angular/core").InputSignal<OnResizeEnd | undefined>;
24
+ readonly resizeStart: import("@angular/core").OutputEmitterRef<{
25
+ event: ResizeDragEvent;
26
+ } & ResizeParams>;
27
+ readonly resize: import("@angular/core").OutputEmitterRef<{
28
+ event?: ResizeDragEvent;
29
+ changes?: XYResizerChange;
30
+ childChanges?: XYResizerChildChange[];
31
+ } & Partial<ResizeParams>>;
32
+ readonly resizeEnd: import("@angular/core").OutputEmitterRef<{
33
+ event?: ResizeDragEvent;
34
+ changes?: Required<XYResizerChange>;
35
+ } & Partial<ResizeParams>>;
36
+ private nodeId;
37
+ private resizerInstances;
38
+ constructor(nodeId: string | null);
39
+ ngAfterViewInit(): void;
40
+ ngOnDestroy(): void;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<NodeResizerComponent, [{ optional: true; }]>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<NodeResizerComponent, "ng-flow-node-resizer", never, { "nodeIdInput": { "alias": "nodeId"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "keepAspectRatio": { "alias": "keepAspectRatio"; "required": false; "isSignal": true; }; "isVisible": { "alias": "isVisible"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "handleClassName": { "alias": "handleClassName"; "required": false; "isSignal": true; }; "handleStyle": { "alias": "handleStyle"; "required": false; "isSignal": true; }; "lineClassName": { "alias": "lineClassName"; "required": false; "isSignal": true; }; "lineStyle": { "alias": "lineStyle"; "required": false; "isSignal": true; }; "autoScale": { "alias": "autoScale"; "required": false; "isSignal": true; }; "shouldResize": { "alias": "shouldResize"; "required": false; "isSignal": true; }; "onResizeStartCb": { "alias": "onResizeStart"; "required": false; "isSignal": true; }; "onResizeCb": { "alias": "onResize"; "required": false; "isSignal": true; }; "onResizeEndCb": { "alias": "onResizeEnd"; "required": false; "isSignal": true; }; }, { "resizeStart": "resizeStart"; "resize": "resize"; "resizeEnd": "resizeEnd"; }, never, never, true, never>;
43
+ }
44
+ //# sourceMappingURL=node-resizer.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-resizer.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/node-resizer/node-resizer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,aAAa,EACb,SAAS,EAGV,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;;AAIzB,qBAyEa,oBAAqB,YAAW,aAAa,EAAE,SAAS;IACnE,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,EAAE,CAAmC;IAE7C,QAAQ,CAAC,WAAW,0DAA6D;IACjF,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,SAAS,8CAAa;IAC/B,QAAQ,CAAC,QAAQ,8CAAmB;IACpC,QAAQ,CAAC,SAAS,8CAAmB;IACrC,QAAQ,CAAC,eAAe,+CAAgB;IACxC,QAAQ,CAAC,SAAS,+CAAwB;IAC1C,QAAQ,CAAC,KAAK,0DAAmB;IACjC,QAAQ,CAAC,eAAe,8CAAqB;IAC7C,QAAQ,CAAC,WAAW,gFAAyC;IAC7D,QAAQ,CAAC,aAAa,8CAAqB;IAC3C,QAAQ,CAAC,SAAS,gFAAyC;IAC3D,QAAQ,CAAC,SAAS,+CAAe;IACjC,QAAQ,CAAC,YAAY,gEAAyB;IAC9C,QAAQ,CAAC,eAAe,iEAA2E;IACnG,QAAQ,CAAC,UAAU,4DAAiE;IACpF,QAAQ,CAAC,aAAa,+DAAuE;IAE7F,QAAQ,CAAC,WAAW;eAAmB,eAAe;sBAAqB;IAC3E,QAAQ,CAAC,MAAM;gBAAoB,eAAe;kBAAY,eAAe;uBAAiB,oBAAoB,EAAE;+BAA8B;IAClJ,QAAQ,CAAC,SAAS;gBAAoB,eAAe;kBAAY,QAAQ,CAAC,eAAe,CAAC;+BAA8B;IAExH,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,gBAAgB,CAAsC;gBAErB,MAAM,EAAE,MAAM,GAAG,IAAI;IAI9D,eAAe,IAAI,IAAI;IAqDvB,WAAW,IAAI,IAAI;yCAtFR,oBAAoB;2CAApB,oBAAoB;CAyFhC"}
@@ -0,0 +1,198 @@
1
+ import { Component, ChangeDetectionStrategy, input, output, inject, ElementRef, Optional, Inject, } from '@angular/core';
2
+ import { XYResizer, } from '@angflow/system';
3
+ import { FlowStore } from '../../services/flow-store.service';
4
+ import { NODE_ID } from '../../services/tokens';
5
+ import * as i0 from "@angular/core";
6
+ export class NodeResizerComponent {
7
+ constructor(nodeId) {
8
+ this.store = inject(FlowStore);
9
+ this.el = inject((ElementRef));
10
+ this.nodeIdInput = input(undefined, { ...(ngDevMode ? { debugName: "nodeIdInput" } : /* istanbul ignore next */ {}), alias: 'nodeId' });
11
+ this.minWidth = input(10, ...(ngDevMode ? [{ debugName: "minWidth" }] : /* istanbul ignore next */ []));
12
+ this.minHeight = input(10, ...(ngDevMode ? [{ debugName: "minHeight" }] : /* istanbul ignore next */ []));
13
+ this.maxWidth = input(Infinity, ...(ngDevMode ? [{ debugName: "maxWidth" }] : /* istanbul ignore next */ []));
14
+ this.maxHeight = input(Infinity, ...(ngDevMode ? [{ debugName: "maxHeight" }] : /* istanbul ignore next */ []));
15
+ this.keepAspectRatio = input(false, ...(ngDevMode ? [{ debugName: "keepAspectRatio" }] : /* istanbul ignore next */ []));
16
+ this.isVisible = input(true, ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
17
+ this.color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
18
+ this.handleClassName = input('', ...(ngDevMode ? [{ debugName: "handleClassName" }] : /* istanbul ignore next */ []));
19
+ this.handleStyle = input(...(ngDevMode ? [undefined, { debugName: "handleStyle" }] : /* istanbul ignore next */ []));
20
+ this.lineClassName = input('', ...(ngDevMode ? [{ debugName: "lineClassName" }] : /* istanbul ignore next */ []));
21
+ this.lineStyle = input(...(ngDevMode ? [undefined, { debugName: "lineStyle" }] : /* istanbul ignore next */ []));
22
+ this.autoScale = input(true, ...(ngDevMode ? [{ debugName: "autoScale" }] : /* istanbul ignore next */ []));
23
+ this.shouldResize = input(...(ngDevMode ? [undefined, { debugName: "shouldResize" }] : /* istanbul ignore next */ []));
24
+ this.onResizeStartCb = input(undefined, { ...(ngDevMode ? { debugName: "onResizeStartCb" } : /* istanbul ignore next */ {}), alias: 'onResizeStart' });
25
+ this.onResizeCb = input(undefined, { ...(ngDevMode ? { debugName: "onResizeCb" } : /* istanbul ignore next */ {}), alias: 'onResize' });
26
+ this.onResizeEndCb = input(undefined, { ...(ngDevMode ? { debugName: "onResizeEndCb" } : /* istanbul ignore next */ {}), alias: 'onResizeEnd' });
27
+ this.resizeStart = output();
28
+ this.resize = output();
29
+ this.resizeEnd = output();
30
+ this.nodeId = '';
31
+ this.resizerInstances = [];
32
+ this.nodeId = nodeId ?? '';
33
+ }
34
+ ngAfterViewInit() {
35
+ const resolvedNodeId = this.nodeIdInput() ?? this.nodeId;
36
+ const handles = this.el.nativeElement.querySelectorAll('.xy-flow__resize-control');
37
+ const positions = ['top-left', 'top-right', 'bottom-left', 'bottom-right'];
38
+ // Only set up corner handles (first 4)
39
+ const cornerHandles = Array.from(handles).slice(0, 4);
40
+ cornerHandles.forEach((handle, index) => {
41
+ const resizer = XYResizer({
42
+ domNode: handle,
43
+ nodeId: resolvedNodeId,
44
+ getStoreItems: () => ({
45
+ nodeLookup: this.store.nodeLookup,
46
+ transform: this.store.transform(),
47
+ snapGrid: this.store.snapToGrid() ? this.store.snapGrid() : undefined,
48
+ snapToGrid: this.store.snapToGrid(),
49
+ nodeOrigin: this.store.nodeOrigin(),
50
+ paneDomNode: this.store.domNode(),
51
+ }),
52
+ onChange: (changes, childChanges) => {
53
+ this.resize.emit({ changes, childChanges });
54
+ },
55
+ onEnd: (change) => {
56
+ this.resizeEnd.emit({ changes: change });
57
+ },
58
+ });
59
+ resizer.update({
60
+ controlPosition: positions[index],
61
+ boundaries: {
62
+ minWidth: this.minWidth(),
63
+ minHeight: this.minHeight(),
64
+ maxWidth: this.maxWidth(),
65
+ maxHeight: this.maxHeight(),
66
+ },
67
+ keepAspectRatio: this.keepAspectRatio(),
68
+ onResizeStart: this.onResizeStartCb() ?? ((event, params) => {
69
+ this.resizeStart.emit({ event, ...params });
70
+ }),
71
+ onResize: this.onResizeCb() ?? ((event, params) => {
72
+ this.resize.emit({ event, ...params });
73
+ }),
74
+ onResizeEnd: this.onResizeEndCb() ?? ((event, params) => {
75
+ this.resizeEnd.emit({ event, ...params });
76
+ }),
77
+ shouldResize: this.shouldResize(),
78
+ });
79
+ this.resizerInstances.push(resizer);
80
+ });
81
+ }
82
+ ngOnDestroy() {
83
+ this.resizerInstances.forEach((r) => r.destroy());
84
+ }
85
+ static { this.ɵfac = function NodeResizerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NodeResizerComponent)(i0.ɵɵdirectiveInject(NODE_ID, 8)); }; }
86
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NodeResizerComponent, selectors: [["ng-flow-node-resizer"]], hostAttrs: [1, "ng-flow__node-resizer", "xy-flow__resize-control", 2, "position", "absolute", "inset", "0", "pointer-events", "none"], hostVars: 2, hostBindings: function NodeResizerComponent_HostBindings(rf, ctx) { if (rf & 2) {
87
+ i0.ɵɵstyleProp("display", ctx.isVisible() === false ? "none" : null);
88
+ } }, inputs: { nodeIdInput: [1, "nodeId", "nodeIdInput"], minWidth: [1, "minWidth"], minHeight: [1, "minHeight"], maxWidth: [1, "maxWidth"], maxHeight: [1, "maxHeight"], keepAspectRatio: [1, "keepAspectRatio"], isVisible: [1, "isVisible"], color: [1, "color"], handleClassName: [1, "handleClassName"], handleStyle: [1, "handleStyle"], lineClassName: [1, "lineClassName"], lineStyle: [1, "lineStyle"], autoScale: [1, "autoScale"], shouldResize: [1, "shouldResize"], onResizeStartCb: [1, "onResizeStart", "onResizeStartCb"], onResizeCb: [1, "onResize", "onResizeCb"], onResizeEndCb: [1, "onResizeEnd", "onResizeEndCb"] }, outputs: { resizeStart: "resizeStart", resize: "resize", resizeEnd: "resizeEnd" }, decls: 8, vars: 144, consts: [[1, "xy-flow__resize-control", "handle-top-left"], [1, "xy-flow__resize-control", "handle-top-right"], [1, "xy-flow__resize-control", "handle-bottom-left"], [1, "xy-flow__resize-control", "handle-bottom-right"], [1, "xy-flow__resize-control", "line-top"], [1, "xy-flow__resize-control", "line-right"], [1, "xy-flow__resize-control", "line-bottom"], [1, "xy-flow__resize-control", "line-left"]], template: function NodeResizerComponent_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵdomElement(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "div", 4)(5, "div", 5)(6, "div", 6)(7, "div", 7);
90
+ } if (rf & 2) {
91
+ i0.ɵɵclassMap(ctx.handleClassName());
92
+ i0.ɵɵstyleProp("position", "absolute")("top", "0")("left", "0")("cursor", "nw-resize")("pointer-events", "all")("width", 10, "px")("height", 10, "px")("border-color", ctx.color() ?? null);
93
+ i0.ɵɵadvance();
94
+ i0.ɵɵclassMap(ctx.handleClassName());
95
+ i0.ɵɵstyleProp("position", "absolute")("top", "0")("right", "0")("cursor", "ne-resize")("pointer-events", "all")("width", 10, "px")("height", 10, "px")("border-color", ctx.color() ?? null);
96
+ i0.ɵɵadvance();
97
+ i0.ɵɵclassMap(ctx.handleClassName());
98
+ i0.ɵɵstyleProp("position", "absolute")("bottom", "0")("left", "0")("cursor", "sw-resize")("pointer-events", "all")("width", 10, "px")("height", 10, "px")("border-color", ctx.color() ?? null);
99
+ i0.ɵɵadvance();
100
+ i0.ɵɵclassMap(ctx.handleClassName());
101
+ i0.ɵɵstyleProp("position", "absolute")("bottom", "0")("right", "0")("cursor", "se-resize")("pointer-events", "all")("width", 10, "px")("height", 10, "px")("border-color", ctx.color() ?? null);
102
+ i0.ɵɵadvance();
103
+ i0.ɵɵclassMap(ctx.lineClassName());
104
+ i0.ɵɵstyleProp("position", "absolute")("top", "0")("left", "0")("right", "0")("height", 2, "px")("cursor", "n-resize")("pointer-events", "all")("border-color", ctx.color() ?? null);
105
+ i0.ɵɵadvance();
106
+ i0.ɵɵclassMap(ctx.lineClassName());
107
+ i0.ɵɵstyleProp("position", "absolute")("top", "0")("right", "0")("bottom", "0")("width", 2, "px")("cursor", "e-resize")("pointer-events", "all")("border-color", ctx.color() ?? null);
108
+ i0.ɵɵadvance();
109
+ i0.ɵɵclassMap(ctx.lineClassName());
110
+ i0.ɵɵstyleProp("position", "absolute")("bottom", "0")("left", "0")("right", "0")("height", 2, "px")("cursor", "s-resize")("pointer-events", "all")("border-color", ctx.color() ?? null);
111
+ i0.ɵɵadvance();
112
+ i0.ɵɵclassMap(ctx.lineClassName());
113
+ i0.ɵɵstyleProp("position", "absolute")("top", "0")("left", "0")("bottom", "0")("width", 2, "px")("cursor", "w-resize")("pointer-events", "all")("border-color", ctx.color() ?? null);
114
+ } }, encapsulation: 2, changeDetection: 0 }); }
115
+ }
116
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NodeResizerComponent, [{
117
+ type: Component,
118
+ args: [{
119
+ selector: 'ng-flow-node-resizer',
120
+ standalone: true,
121
+ changeDetection: ChangeDetectionStrategy.OnPush,
122
+ host: {
123
+ 'class': 'ng-flow__node-resizer xy-flow__resize-control',
124
+ 'style': 'position: absolute; inset: 0; pointer-events: none;',
125
+ '[style.display]': 'isVisible() === false ? "none" : null',
126
+ },
127
+ template: `
128
+ <div
129
+ class="xy-flow__resize-control handle-top-left"
130
+ [class]="handleClassName()"
131
+ [style.position]="'absolute'" [style.top]="'0'" [style.left]="'0'"
132
+ [style.cursor]="'nw-resize'" [style.pointer-events]="'all'"
133
+ [style.width.px]="10" [style.height.px]="10"
134
+ [style.border-color]="color() ?? null"
135
+ ></div>
136
+ <div
137
+ class="xy-flow__resize-control handle-top-right"
138
+ [class]="handleClassName()"
139
+ [style.position]="'absolute'" [style.top]="'0'" [style.right]="'0'"
140
+ [style.cursor]="'ne-resize'" [style.pointer-events]="'all'"
141
+ [style.width.px]="10" [style.height.px]="10"
142
+ [style.border-color]="color() ?? null"
143
+ ></div>
144
+ <div
145
+ class="xy-flow__resize-control handle-bottom-left"
146
+ [class]="handleClassName()"
147
+ [style.position]="'absolute'" [style.bottom]="'0'" [style.left]="'0'"
148
+ [style.cursor]="'sw-resize'" [style.pointer-events]="'all'"
149
+ [style.width.px]="10" [style.height.px]="10"
150
+ [style.border-color]="color() ?? null"
151
+ ></div>
152
+ <div
153
+ class="xy-flow__resize-control handle-bottom-right"
154
+ [class]="handleClassName()"
155
+ [style.position]="'absolute'" [style.bottom]="'0'" [style.right]="'0'"
156
+ [style.cursor]="'se-resize'" [style.pointer-events]="'all'"
157
+ [style.width.px]="10" [style.height.px]="10"
158
+ [style.border-color]="color() ?? null"
159
+ ></div>
160
+ <!-- Resize lines -->
161
+ <div
162
+ class="xy-flow__resize-control line-top"
163
+ [class]="lineClassName()"
164
+ [style.position]="'absolute'" [style.top]="'0'" [style.left]="'0'" [style.right]="'0'"
165
+ [style.height.px]="2" [style.cursor]="'n-resize'" [style.pointer-events]="'all'"
166
+ [style.border-color]="color() ?? null"
167
+ ></div>
168
+ <div
169
+ class="xy-flow__resize-control line-right"
170
+ [class]="lineClassName()"
171
+ [style.position]="'absolute'" [style.top]="'0'" [style.right]="'0'" [style.bottom]="'0'"
172
+ [style.width.px]="2" [style.cursor]="'e-resize'" [style.pointer-events]="'all'"
173
+ [style.border-color]="color() ?? null"
174
+ ></div>
175
+ <div
176
+ class="xy-flow__resize-control line-bottom"
177
+ [class]="lineClassName()"
178
+ [style.position]="'absolute'" [style.bottom]="'0'" [style.left]="'0'" [style.right]="'0'"
179
+ [style.height.px]="2" [style.cursor]="'s-resize'" [style.pointer-events]="'all'"
180
+ [style.border-color]="color() ?? null"
181
+ ></div>
182
+ <div
183
+ class="xy-flow__resize-control line-left"
184
+ [class]="lineClassName()"
185
+ [style.position]="'absolute'" [style.top]="'0'" [style.left]="'0'" [style.bottom]="'0'"
186
+ [style.width.px]="2" [style.cursor]="'w-resize'" [style.pointer-events]="'all'"
187
+ [style.border-color]="color() ?? null"
188
+ ></div>
189
+ `,
190
+ }]
191
+ }], () => [{ type: undefined, decorators: [{
192
+ type: Optional
193
+ }, {
194
+ type: Inject,
195
+ args: [NODE_ID]
196
+ }] }], { nodeIdInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeId", required: false }] }], minWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidth", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], keepAspectRatio: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepAspectRatio", required: false }] }], isVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "isVisible", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], handleClassName: [{ type: i0.Input, args: [{ isSignal: true, alias: "handleClassName", required: false }] }], handleStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "handleStyle", required: false }] }], lineClassName: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineClassName", required: false }] }], lineStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineStyle", required: false }] }], autoScale: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoScale", required: false }] }], shouldResize: [{ type: i0.Input, args: [{ isSignal: true, alias: "shouldResize", required: false }] }], onResizeStartCb: [{ type: i0.Input, args: [{ isSignal: true, alias: "onResizeStart", required: false }] }], onResizeCb: [{ type: i0.Input, args: [{ isSignal: true, alias: "onResize", required: false }] }], onResizeEndCb: [{ type: i0.Input, args: [{ isSignal: true, alias: "onResizeEnd", required: false }] }], resizeStart: [{ type: i0.Output, args: ["resizeStart"] }], resize: [{ type: i0.Output, args: ["resize"] }], resizeEnd: [{ type: i0.Output, args: ["resizeEnd"] }] }); })();
197
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NodeResizerComponent, { className: "NodeResizerComponent", filePath: "lib/components/node-resizer/node-resizer.component.ts", lineNumber: 102 }); })();
198
+ //# sourceMappingURL=node-resizer.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-resizer.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/node-resizer/node-resizer.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Position } from '@angflow/system';
2
+ import * as i0 from "@angular/core";
3
+ export declare class NodeToolbarComponent {
4
+ private store;
5
+ /** Node ID(s) this toolbar belongs to. Can be a single ID or array of IDs. */
6
+ readonly nodeIdInput: import("@angular/core").InputSignal<string | string[] | undefined>;
7
+ readonly position: import("@angular/core").InputSignal<Position>;
8
+ readonly isVisible: import("@angular/core").InputSignal<boolean | undefined>;
9
+ readonly offset: import("@angular/core").InputSignal<number>;
10
+ readonly align: import("@angular/core").InputSignal<"center" | "start" | "end">;
11
+ private contextNodeId;
12
+ constructor(nodeId: string | null);
13
+ private readonly resolvedNodeIds;
14
+ readonly shouldShow: import("@angular/core").Signal<boolean>;
15
+ readonly toolbarTransform: import("@angular/core").Signal<string>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<NodeToolbarComponent, [{ optional: true; }]>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<NodeToolbarComponent, "ng-flow-node-toolbar", never, { "nodeIdInput": { "alias": "nodeId"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "isVisible": { "alias": "isVisible"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
18
+ }
19
+ //# sourceMappingURL=node-toolbar.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-toolbar.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/node-toolbar/node-toolbar.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAI3C,qBAYa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAqB;IAElC,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,qEAAwE;IAC5F,QAAQ,CAAC,QAAQ,gDAAiC;IAClD,QAAQ,CAAC,SAAS,2DAAoB;IACtC,QAAQ,CAAC,MAAM,8CAAa;IAC5B,QAAQ,CAAC,KAAK,kEAA+C;IAE7D,OAAO,CAAC,aAAa,CAAc;gBAEM,MAAM,EAAE,MAAM,GAAG,IAAI;IAI9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM7B;IAEH,QAAQ,CAAC,UAAU,0CAOhB;IAEH,QAAQ,CAAC,gBAAgB,yCAqCtB;yCAtEQ,oBAAoB;2CAApB,oBAAoB;CAuEhC"}
@@ -0,0 +1,101 @@
1
+ import { Component, ChangeDetectionStrategy, input, inject, computed, Optional, Inject } from '@angular/core';
2
+ import { Position } from '@angflow/system';
3
+ import { FlowStore } from '../../services/flow-store.service';
4
+ import { NODE_ID } from '../../services/tokens';
5
+ import * as i0 from "@angular/core";
6
+ const _c0 = ["*"];
7
+ export class NodeToolbarComponent {
8
+ constructor(nodeId) {
9
+ this.store = inject(FlowStore);
10
+ /** Node ID(s) this toolbar belongs to. Can be a single ID or array of IDs. */
11
+ this.nodeIdInput = input(undefined, { ...(ngDevMode ? { debugName: "nodeIdInput" } : /* istanbul ignore next */ {}), alias: 'nodeId' });
12
+ this.position = input(Position.Top, ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
13
+ this.isVisible = input(...(ngDevMode ? [undefined, { debugName: "isVisible" }] : /* istanbul ignore next */ []));
14
+ this.offset = input(10, ...(ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ []));
15
+ this.align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
16
+ this.contextNodeId = '';
17
+ this.resolvedNodeIds = computed(() => {
18
+ const inputId = this.nodeIdInput();
19
+ if (inputId !== undefined) {
20
+ return Array.isArray(inputId) ? inputId : [inputId];
21
+ }
22
+ return this.contextNodeId ? [this.contextNodeId] : [];
23
+ }, ...(ngDevMode ? [{ debugName: "resolvedNodeIds" }] : /* istanbul ignore next */ []));
24
+ this.shouldShow = computed(() => {
25
+ if (this.isVisible() !== undefined)
26
+ return this.isVisible();
27
+ const ids = this.resolvedNodeIds();
28
+ return ids.some(id => {
29
+ const node = this.store.nodeLookup.get(id);
30
+ return node?.selected ?? false;
31
+ });
32
+ }, ...(ngDevMode ? [{ debugName: "shouldShow" }] : /* istanbul ignore next */ []));
33
+ this.toolbarTransform = computed(() => {
34
+ const ids = this.resolvedNodeIds();
35
+ if (ids.length === 0)
36
+ return '';
37
+ // Use the first node for positioning
38
+ const node = this.store.nodeLookup.get(ids[0]);
39
+ if (!node)
40
+ return '';
41
+ const w = node.measured?.width ?? node.width ?? 0;
42
+ const h = node.measured?.height ?? node.height ?? 0;
43
+ const pos = this.position();
44
+ const off = this.offset();
45
+ const alignVal = this.align();
46
+ let alignTranslate;
47
+ switch (pos) {
48
+ case Position.Top:
49
+ case Position.Bottom: {
50
+ const xOffset = alignVal === 'start' ? 0 : alignVal === 'end' ? w : w / 2;
51
+ const xTranslate = alignVal === 'start' ? '0' : alignVal === 'end' ? '-100%' : '-50%';
52
+ if (pos === Position.Top) {
53
+ return `translate(${xOffset}px, ${-off}px) translate(${xTranslate}, -100%)`;
54
+ }
55
+ return `translate(${xOffset}px, ${h + off}px) translate(${xTranslate}, 0)`;
56
+ }
57
+ case Position.Left:
58
+ case Position.Right: {
59
+ const yOffset = alignVal === 'start' ? 0 : alignVal === 'end' ? h : h / 2;
60
+ const yTranslate = alignVal === 'start' ? '0' : alignVal === 'end' ? '-100%' : '-50%';
61
+ if (pos === Position.Left) {
62
+ return `translate(${-off}px, ${yOffset}px) translate(-100%, ${yTranslate})`;
63
+ }
64
+ return `translate(${w + off}px, ${yOffset}px) translate(0, ${yTranslate})`;
65
+ }
66
+ default:
67
+ return '';
68
+ }
69
+ }, ...(ngDevMode ? [{ debugName: "toolbarTransform" }] : /* istanbul ignore next */ []));
70
+ this.contextNodeId = nodeId ?? '';
71
+ }
72
+ static { this.ɵfac = function NodeToolbarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NodeToolbarComponent)(i0.ɵɵdirectiveInject(NODE_ID, 8)); }; }
73
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NodeToolbarComponent, selectors: [["ng-flow-node-toolbar"]], hostAttrs: [1, "ng-flow__node-toolbar", 2, "position", "absolute", "pointer-events", "all", "z-index", "1000"], hostVars: 4, hostBindings: function NodeToolbarComponent_HostBindings(rf, ctx) { if (rf & 2) {
74
+ i0.ɵɵstyleProp("display", ctx.shouldShow() ? "block" : "none")("transform", ctx.toolbarTransform());
75
+ } }, inputs: { nodeIdInput: [1, "nodeId", "nodeIdInput"], position: [1, "position"], isVisible: [1, "isVisible"], offset: [1, "offset"], align: [1, "align"] }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function NodeToolbarComponent_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵprojectionDef();
77
+ i0.ɵɵprojection(0);
78
+ } }, encapsulation: 2, changeDetection: 0 }); }
79
+ }
80
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NodeToolbarComponent, [{
81
+ type: Component,
82
+ args: [{
83
+ selector: 'ng-flow-node-toolbar',
84
+ standalone: true,
85
+ changeDetection: ChangeDetectionStrategy.OnPush,
86
+ host: {
87
+ 'class': 'ng-flow__node-toolbar',
88
+ 'style': 'position: absolute; pointer-events: all; z-index: 1000;',
89
+ '[style.display]': 'shouldShow() ? "block" : "none"',
90
+ '[style.transform]': 'toolbarTransform()',
91
+ },
92
+ template: `<ng-content />`,
93
+ }]
94
+ }], () => [{ type: undefined, decorators: [{
95
+ type: Optional
96
+ }, {
97
+ type: Inject,
98
+ args: [NODE_ID]
99
+ }] }], { nodeIdInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeId", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], isVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "isVisible", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "offset", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] }); })();
100
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NodeToolbarComponent, { className: "NodeToolbarComponent", filePath: "lib/components/node-toolbar/node-toolbar.component.ts", lineNumber: 18 }); })();
101
+ //# sourceMappingURL=node-toolbar.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-toolbar.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/node-toolbar/node-toolbar.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Position } from '@angflow/system';
2
+ import * as i0 from "@angular/core";
3
+ export declare class DefaultNodeComponent {
4
+ readonly Position: typeof Position;
5
+ readonly id: import("@angular/core").InputSignal<string>;
6
+ readonly data: import("@angular/core").InputSignal<any>;
7
+ readonly type: import("@angular/core").InputSignal<string | undefined>;
8
+ readonly selected: import("@angular/core").InputSignal<boolean>;
9
+ readonly dragging: import("@angular/core").InputSignal<boolean>;
10
+ readonly zIndex: import("@angular/core").InputSignal<number>;
11
+ readonly isConnectable: import("@angular/core").InputSignal<boolean>;
12
+ readonly positionAbsoluteX: import("@angular/core").InputSignal<number>;
13
+ readonly positionAbsoluteY: import("@angular/core").InputSignal<number>;
14
+ readonly sourcePosition: import("@angular/core").InputSignal<Position | undefined>;
15
+ readonly targetPosition: import("@angular/core").InputSignal<Position | undefined>;
16
+ readonly dragHandle: import("@angular/core").InputSignal<string | undefined>;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<DefaultNodeComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<DefaultNodeComponent, "ng-flow-default-node", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "dragging": { "alias": "dragging"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "isConnectable": { "alias": "isConnectable"; "required": false; "isSignal": true; }; "positionAbsoluteX": { "alias": "positionAbsoluteX"; "required": false; "isSignal": true; }; "positionAbsoluteY": { "alias": "positionAbsoluteY"; "required": false; "isSignal": true; }; "sourcePosition": { "alias": "sourcePosition"; "required": false; "isSignal": true; }; "targetPosition": { "alias": "targetPosition"; "required": false; "isSignal": true; }; "dragHandle": { "alias": "dragHandle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
19
+ }
20
+ //# sourceMappingURL=default-node.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-node.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/nodes/default-node.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAE3C,qBAWa,oBAAoB;IAC/B,QAAQ,CAAC,QAAQ,kBAAY;IAC7B,QAAQ,CAAC,EAAE,8CAA4B;IACvC,QAAQ,CAAC,IAAI,2CAAgB;IAC7B,QAAQ,CAAC,IAAI,0DAAmB;IAChC,QAAQ,CAAC,QAAQ,+CAAgB;IACjC,QAAQ,CAAC,QAAQ,+CAAgB;IACjC,QAAQ,CAAC,MAAM,8CAAY;IAC3B,QAAQ,CAAC,aAAa,+CAAe;IACrC,QAAQ,CAAC,iBAAiB,8CAAY;IACtC,QAAQ,CAAC,iBAAiB,8CAAY;IACtC,QAAQ,CAAC,cAAc,4DAAqB;IAC5C,QAAQ,CAAC,cAAc,4DAAqB;IAC5C,QAAQ,CAAC,UAAU,0DAAmB;yCAb3B,oBAAoB;2CAApB,oBAAoB;CAchC"}
@@ -0,0 +1,52 @@
1
+ import { Component, ChangeDetectionStrategy, input } from '@angular/core';
2
+ import { HandleComponent } from '../handle/handle.component';
3
+ import { Position } from '@angflow/system';
4
+ import * as i0 from "@angular/core";
5
+ export class DefaultNodeComponent {
6
+ constructor() {
7
+ this.Position = Position;
8
+ this.id = input.required(...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
9
+ this.data = input(...(ngDevMode ? [undefined, { debugName: "data" }] : /* istanbul ignore next */ []));
10
+ this.type = input(...(ngDevMode ? [undefined, { debugName: "type" }] : /* istanbul ignore next */ []));
11
+ this.selected = input(false, ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
12
+ this.dragging = input(false, ...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
13
+ this.zIndex = input(0, ...(ngDevMode ? [{ debugName: "zIndex" }] : /* istanbul ignore next */ []));
14
+ this.isConnectable = input(true, ...(ngDevMode ? [{ debugName: "isConnectable" }] : /* istanbul ignore next */ []));
15
+ this.positionAbsoluteX = input(0, ...(ngDevMode ? [{ debugName: "positionAbsoluteX" }] : /* istanbul ignore next */ []));
16
+ this.positionAbsoluteY = input(0, ...(ngDevMode ? [{ debugName: "positionAbsoluteY" }] : /* istanbul ignore next */ []));
17
+ this.sourcePosition = input(...(ngDevMode ? [undefined, { debugName: "sourcePosition" }] : /* istanbul ignore next */ []));
18
+ this.targetPosition = input(...(ngDevMode ? [undefined, { debugName: "targetPosition" }] : /* istanbul ignore next */ []));
19
+ this.dragHandle = input(...(ngDevMode ? [undefined, { debugName: "dragHandle" }] : /* istanbul ignore next */ []));
20
+ }
21
+ static { this.ɵfac = function DefaultNodeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DefaultNodeComponent)(); }; }
22
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DefaultNodeComponent, selectors: [["ng-flow-default-node"]], inputs: { id: [1, "id"], data: [1, "data"], type: [1, "type"], selected: [1, "selected"], dragging: [1, "dragging"], zIndex: [1, "zIndex"], isConnectable: [1, "isConnectable"], positionAbsoluteX: [1, "positionAbsoluteX"], positionAbsoluteY: [1, "positionAbsoluteY"], sourcePosition: [1, "sourcePosition"], targetPosition: [1, "targetPosition"], dragHandle: [1, "dragHandle"] }, decls: 4, vars: 3, consts: [["type", "target", 3, "position"], ["type", "source", 3, "position"]], template: function DefaultNodeComponent_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelement(0, "ng-flow-handle", 0);
24
+ i0.ɵɵelementStart(1, "div");
25
+ i0.ɵɵtext(2);
26
+ i0.ɵɵelementEnd();
27
+ i0.ɵɵelement(3, "ng-flow-handle", 1);
28
+ } if (rf & 2) {
29
+ let tmp_1_0;
30
+ i0.ɵɵproperty("position", ctx.Position.Top);
31
+ i0.ɵɵadvance(2);
32
+ i0.ɵɵtextInterpolate((tmp_1_0 = ctx.data()) == null ? null : tmp_1_0.label);
33
+ i0.ɵɵadvance();
34
+ i0.ɵɵproperty("position", ctx.Position.Bottom);
35
+ } }, dependencies: [HandleComponent], encapsulation: 2, changeDetection: 0 }); }
36
+ }
37
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DefaultNodeComponent, [{
38
+ type: Component,
39
+ args: [{
40
+ selector: 'ng-flow-default-node',
41
+ standalone: true,
42
+ imports: [HandleComponent],
43
+ changeDetection: ChangeDetectionStrategy.OnPush,
44
+ template: `
45
+ <ng-flow-handle type="target" [position]="Position.Top" />
46
+ <div>{{ data()?.label }}</div>
47
+ <ng-flow-handle type="source" [position]="Position.Bottom" />
48
+ `,
49
+ }]
50
+ }], null, { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], dragging: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragging", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], isConnectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isConnectable", required: false }] }], positionAbsoluteX: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteX", required: false }] }], positionAbsoluteY: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteY", required: false }] }], sourcePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourcePosition", required: false }] }], targetPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetPosition", required: false }] }], dragHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragHandle", required: false }] }] }); })();
51
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DefaultNodeComponent, { className: "DefaultNodeComponent", filePath: "lib/components/nodes/default-node.component.ts", lineNumber: 16 }); })();
52
+ //# sourceMappingURL=default-node.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-node.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/nodes/default-node.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAa3C,MAAM,OAAO,oBAAoB;IAXjC;QAYW,aAAQ,GAAG,QAAQ,CAAC;QACpB,OAAE,GAAG,KAAK,CAAC,QAAQ,wEAAU,CAAC;QAC9B,SAAI,GAAG,KAAK,qFAAO,CAAC;QACpB,SAAI,GAAG,KAAK,qFAAU,CAAC;QACvB,aAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC,CAAC;QACxB,aAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC,CAAC;QACxB,WAAM,GAAG,KAAK,CAAC,CAAC,6EAAC,CAAC;QAClB,kBAAa,GAAG,KAAK,CAAC,IAAI,oFAAC,CAAC;QAC5B,sBAAiB,GAAG,KAAK,CAAC,CAAC,wFAAC,CAAC;QAC7B,sBAAiB,GAAG,KAAK,CAAC,CAAC,wFAAC,CAAC;QAC7B,mBAAc,GAAG,KAAK,+FAAY,CAAC;QACnC,mBAAc,GAAG,KAAK,+FAAY,CAAC;QACnC,eAAU,GAAG,KAAK,2FAAU,CAAC;KACvC;qHAdY,oBAAoB;oEAApB,oBAAoB;YAL7B,oCAA0D;YAC1D,2BAAK;YAAA,YAAmB;YAAA,iBAAM;YAC9B,oCAA6D;;;YAF/B,2CAAyB;YAClD,eAAmB;YAAnB,2EAAmB;YACM,cAA4B;YAA5B,8CAA4B;4BALlD,eAAe;;iFAQd,oBAAoB;cAXhC,SAAS;eAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,eAAe,CAAC;gBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,QAAQ,EAAE;;;;GAIT;aACF;;kFACY,oBAAoB"}
@@ -0,0 +1,19 @@
1
+ import { Position } from '@angflow/system';
2
+ import * as i0 from "@angular/core";
3
+ export declare class GroupNodeComponent {
4
+ readonly id: import("@angular/core").InputSignal<string>;
5
+ readonly data: import("@angular/core").InputSignal<any>;
6
+ readonly type: import("@angular/core").InputSignal<string | undefined>;
7
+ readonly selected: import("@angular/core").InputSignal<boolean>;
8
+ readonly dragging: import("@angular/core").InputSignal<boolean>;
9
+ readonly zIndex: import("@angular/core").InputSignal<number>;
10
+ readonly isConnectable: import("@angular/core").InputSignal<boolean>;
11
+ readonly positionAbsoluteX: import("@angular/core").InputSignal<number>;
12
+ readonly positionAbsoluteY: import("@angular/core").InputSignal<number>;
13
+ readonly sourcePosition: import("@angular/core").InputSignal<Position | undefined>;
14
+ readonly targetPosition: import("@angular/core").InputSignal<Position | undefined>;
15
+ readonly dragHandle: import("@angular/core").InputSignal<string | undefined>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<GroupNodeComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<GroupNodeComponent, "ng-flow-group-node", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "dragging": { "alias": "dragging"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "isConnectable": { "alias": "isConnectable"; "required": false; "isSignal": true; }; "positionAbsoluteX": { "alias": "positionAbsoluteX"; "required": false; "isSignal": true; }; "positionAbsoluteY": { "alias": "positionAbsoluteY"; "required": false; "isSignal": true; }; "sourcePosition": { "alias": "sourcePosition"; "required": false; "isSignal": true; }; "targetPosition": { "alias": "targetPosition"; "required": false; "isSignal": true; }; "dragHandle": { "alias": "dragHandle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18
+ }
19
+ //# sourceMappingURL=group-node.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-node.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/nodes/group-node.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAE3C,qBASa,kBAAkB;IAC7B,QAAQ,CAAC,EAAE,8CAA4B;IACvC,QAAQ,CAAC,IAAI,2CAAgB;IAC7B,QAAQ,CAAC,IAAI,0DAAmB;IAChC,QAAQ,CAAC,QAAQ,+CAAgB;IACjC,QAAQ,CAAC,QAAQ,+CAAgB;IACjC,QAAQ,CAAC,MAAM,8CAAY;IAC3B,QAAQ,CAAC,aAAa,+CAAe;IACrC,QAAQ,CAAC,iBAAiB,8CAAY;IACtC,QAAQ,CAAC,iBAAiB,8CAAY;IACtC,QAAQ,CAAC,cAAc,4DAAqB;IAC5C,QAAQ,CAAC,cAAc,4DAAqB;IAC5C,QAAQ,CAAC,UAAU,0DAAmB;yCAZ3B,kBAAkB;2CAAlB,kBAAkB;CAa9B"}
@@ -0,0 +1,34 @@
1
+ import { Component, ChangeDetectionStrategy, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GroupNodeComponent {
4
+ constructor() {
5
+ this.id = input.required(...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
6
+ this.data = input(...(ngDevMode ? [undefined, { debugName: "data" }] : /* istanbul ignore next */ []));
7
+ this.type = input(...(ngDevMode ? [undefined, { debugName: "type" }] : /* istanbul ignore next */ []));
8
+ this.selected = input(false, ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
9
+ this.dragging = input(false, ...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
10
+ this.zIndex = input(0, ...(ngDevMode ? [{ debugName: "zIndex" }] : /* istanbul ignore next */ []));
11
+ this.isConnectable = input(true, ...(ngDevMode ? [{ debugName: "isConnectable" }] : /* istanbul ignore next */ []));
12
+ this.positionAbsoluteX = input(0, ...(ngDevMode ? [{ debugName: "positionAbsoluteX" }] : /* istanbul ignore next */ []));
13
+ this.positionAbsoluteY = input(0, ...(ngDevMode ? [{ debugName: "positionAbsoluteY" }] : /* istanbul ignore next */ []));
14
+ this.sourcePosition = input(...(ngDevMode ? [undefined, { debugName: "sourcePosition" }] : /* istanbul ignore next */ []));
15
+ this.targetPosition = input(...(ngDevMode ? [undefined, { debugName: "targetPosition" }] : /* istanbul ignore next */ []));
16
+ this.dragHandle = input(...(ngDevMode ? [undefined, { debugName: "dragHandle" }] : /* istanbul ignore next */ []));
17
+ }
18
+ static { this.ɵfac = function GroupNodeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || GroupNodeComponent)(); }; }
19
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GroupNodeComponent, selectors: [["ng-flow-group-node"]], hostAttrs: [2, "width", "100%", "height", "100%"], inputs: { id: [1, "id"], data: [1, "data"], type: [1, "type"], selected: [1, "selected"], dragging: [1, "dragging"], zIndex: [1, "zIndex"], isConnectable: [1, "isConnectable"], positionAbsoluteX: [1, "positionAbsoluteX"], positionAbsoluteY: [1, "positionAbsoluteY"], sourcePosition: [1, "sourcePosition"], targetPosition: [1, "targetPosition"], dragHandle: [1, "dragHandle"] }, decls: 0, vars: 0, template: function GroupNodeComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 }); }
20
+ }
21
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GroupNodeComponent, [{
22
+ type: Component,
23
+ args: [{
24
+ selector: 'ng-flow-group-node',
25
+ standalone: true,
26
+ changeDetection: ChangeDetectionStrategy.OnPush,
27
+ host: {
28
+ 'style': 'width: 100%; height: 100%;',
29
+ },
30
+ template: ``,
31
+ }]
32
+ }], null, { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], dragging: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragging", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], isConnectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isConnectable", required: false }] }], positionAbsoluteX: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteX", required: false }] }], positionAbsoluteY: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteY", required: false }] }], sourcePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourcePosition", required: false }] }], targetPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetPosition", required: false }] }], dragHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragHandle", required: false }] }] }); })();
33
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GroupNodeComponent, { className: "GroupNodeComponent", filePath: "lib/components/nodes/group-node.component.ts", lineNumber: 13 }); })();
34
+ //# sourceMappingURL=group-node.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-node.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/nodes/group-node.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAY1E,MAAM,OAAO,kBAAkB;IAT/B;QAUW,OAAE,GAAG,KAAK,CAAC,QAAQ,wEAAU,CAAC;QAC9B,SAAI,GAAG,KAAK,qFAAO,CAAC;QACpB,SAAI,GAAG,KAAK,qFAAU,CAAC;QACvB,aAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC,CAAC;QACxB,aAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC,CAAC;QACxB,WAAM,GAAG,KAAK,CAAC,CAAC,6EAAC,CAAC;QAClB,kBAAa,GAAG,KAAK,CAAC,IAAI,oFAAC,CAAC;QAC5B,sBAAiB,GAAG,KAAK,CAAC,CAAC,wFAAC,CAAC;QAC7B,sBAAiB,GAAG,KAAK,CAAC,CAAC,wFAAC,CAAC;QAC7B,mBAAc,GAAG,KAAK,+FAAY,CAAC;QACnC,mBAAc,GAAG,KAAK,+FAAY,CAAC;QACnC,eAAU,GAAG,KAAK,2FAAU,CAAC;KACvC;mHAbY,kBAAkB;oEAAlB,kBAAkB;;iFAAlB,kBAAkB;cAT9B,SAAS;eAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,IAAI,EAAE;oBACJ,OAAO,EAAE,4BAA4B;iBACtC;gBACD,QAAQ,EAAE,EAAE;aACb;;kFACY,kBAAkB"}