{"version":3,"file":"rete-angular-jellytech-plugin.mjs","sources":["../../src/ref.ts","../../src/presets/classic/components/node/node.component.ts","../../src/presets/classic/components/node/node.component.html","../../src/presets/classic/components/socket/socket.component.ts","../../src/presets/classic/components/control/control.component.ts","../../src/presets/classic/components/control/control.component.html","../../src/presets/classic/components/connection/connection.component.ts","../../src/presets/classic/components/connection/connection.component.html","../../src/presets/classic/components/connection/connection-wrapper.component.ts","../../src/presets/classic/index.ts","../../src/presets/context-menu/debounce.ts","../../src/presets/context-menu/components/search/search.component.ts","../../src/presets/context-menu/components/search/search.component.html","../../src/presets/context-menu/components/item/item.component.ts","../../src/presets/context-menu/components/item/item.component.html","../../src/presets/context-menu/components/menu/menu.component.ts","../../src/presets/context-menu/components/menu/menu.component.html","../../src/presets/context-menu/index.ts","../../src/shared/drag.ts","../../src/presets/minimap/components/mini-viewport/mini-viewport.component.ts","../../src/presets/minimap/components/mini-viewport/mini-viewport.component.html","../../src/presets/minimap/components/mini-node/mini-node.component.ts","../../src/presets/minimap/components/mini-node/mini-node.component.html","../../src/presets/minimap/components/minimap/minimap.component.ts","../../src/presets/minimap/components/minimap/minimap.component.html","../../src/presets/minimap/index.ts","../../src/presets/reroute/components/pin/pin.component.ts","../../src/presets/reroute/components/pins/pins.component.ts","../../src/presets/reroute/components/pins/pins.component.html","../../src/presets/reroute/index.ts","../../src/presets/index.ts","../../src/presets/classic/components/scada-blank-node/scada-blank-node.component.ts","../../src/presets/classic/components/scada-blank-node/scada-blank-node.component.html","../../src/presets/classic/components/scada-overview-node/scada-overview-node.component.ts","../../src/presets/classic/components/scada-overview-node/scada-overview-node.component.html","../../src/presets/classic/components/scada-socket/scada-socket.component.ts","../../src/module.ts","../../src/presets/context-menu/module.ts","../../src/presets/minimap/module.ts","../../src/presets/reroute/module.ts","../../src/presets/classic/components/scada-socket/scada-socket.ts","../../src/presets/classic/components/scada-connection/scada-connection.ts","../../src/presets/classic/components/scada-overview-socket/scada-overview-socket.component.ts","../../src/reflect.ts","../../src/core.ts","../../src/rete-angular-jellytech-plugin.ts"],"sourcesContent":["import { Input, ElementRef, OnChanges, OnDestroy } from '@angular/core';\nimport { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[refComponent]'\n})\nexport class RefDirective implements OnChanges, OnDestroy {\n  @Input() data!: any\n  @Input() emit!: any\n\n  constructor(private el: ElementRef) { }\n\n  ngOnChanges() {\n    this.emit({ type: 'render', data: { ...this.data, element: this.el.nativeElement } })\n  }\n\n  ngOnDestroy() {\n    this.emit({ type: 'unmount', data: { element: this.el.nativeElement } })\n  }\n}\n","import { Component, Input, HostBinding, ChangeDetectorRef, OnChanges } from '@angular/core';\nimport { ClassicPreset as Classic } from 'rete';\nimport { KeyValue } from '@angular/common';\n// [imports]\n\ntype NodeExtraData = { width?: number, height?: number }\ntype SortValue<N extends Classic.Node> = (N['controls'] | N['inputs'] | N['outputs'])[string]\n\n@Component({\n  // [component-directive]\n  templateUrl: './node.component.html',\n  styleUrls: ['./node.component.sass'],\n  host: {\n    'data-testid': 'node'\n  }\n})\nexport class NodeComponent implements OnChanges {\n  @Input() data!: Classic.Node & NodeExtraData;\n  @Input() emit!: (data: any) => void\n  @Input() rendered!: () => void\n\n  seed = 0\n\n  @HostBinding('style.width.px') get width() {\n    return this.data.width\n  }\n\n  @HostBinding('style.height.px') get height() {\n    return this.data.height\n  }\n\n  @HostBinding('class.selected') get selected() {\n    return this.data.selected\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach()\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges()\n    requestAnimationFrame(() => this.rendered())\n    this.seed++ // force render sockets\n  }\n\n  sortByIndex<N extends Classic.Node, I extends KeyValue<string, SortValue<N>>>(a: I, b: I) {\n    const ai = a.value?.index || 0\n    const bi = b.value?.index || 0\n\n    return ai - bi\n  }\n}\n","<div class=\"title\" data-testid=\"title\">{{ data.label }}</div>\n<div\n  class=\"output\"\n  *ngFor=\"let output of data.outputs | keyvalue : sortByIndex\"\n  [attr.data-testid]=\"'output-' + output.key\"\n>\n  <div class=\"output-title\" data-testid=\"output-title\">\n    {{ output.value?.label }}\n  </div>\n  <div\n    class=\"output-socket\"\n    refComponent\n    [data]=\"{\n      type: 'socket',\n      side: 'output',\n      key: output.key,\n      nodeId: data.id,\n      payload: output.value?.socket,\n      seed: seed\n    }\"\n    [emit]=\"emit\"\n    data-testid=\"output-socket\"\n  ></div>\n</div>\n<div\n  class=\"control\"\n  *ngFor=\"let control of data.controls | keyvalue : sortByIndex\"\n  refComponent\n  [data]=\"{ type: 'control', payload: control.value }\"\n  [emit]=\"emit\"\n  [attr.data-testid]=\"'control-' + control.key\"\n></div>\n<div\n  class=\"input\"\n  *ngFor=\"let input of data.inputs | keyvalue : sortByIndex\"\n  [attr.data-testid]=\"'input-' + input.key\"\n>\n  <div\n    class=\"input-socket\"\n    refComponent\n    [data]=\"{\n      type: 'socket',\n      side: 'input',\n      key: input.key,\n      nodeId: data.id,\n      payload: input.value?.socket,\n      seed: seed\n    }\"\n    [emit]=\"emit\"\n    data-testid=\"input-socket\"\n  ></div>\n  <div\n    class=\"input-title\"\n    data-testid=\"input-title\"\n    *ngIf=\"!input.value?.control || !input.value?.showControl\"\n  >\n    {{ input.value?.label }}\n  </div>\n  <div\n    class=\"input-control\"\n    [style.display]=\"\n      input.value?.control && input.value?.showControl ? '' : 'none'\n    \"\n    refComponent\n    [data]=\"{ type: 'control', payload: input.value?.control }\"\n    [emit]=\"emit\"\n    data-testid=\"input-control\"\n  ></div>\n</div>\n","import {\n  Component,\n  Input,\n  HostBinding,\n  AfterViewChecked,\n  ChangeDetectorRef,\n  OnChanges,\n} from \"@angular/core\";\n\n@Component({\n  template: ``,\n  styleUrls: [\"./socket.component.scss\"],\n})\nexport class SocketComponent implements OnChanges {\n  @Input() data!: any;\n  @Input() side!: any;\n  @Input() rendered!: any;\n\n  @HostBinding(\"title\") get title() {\n    return this.data.name;\n  }\n\n  @HostBinding(\"style.background\") get color() {\n    return this.side === \"input\" ? \"red\" : \"blue\";\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach();\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges();\n    requestAnimationFrame(() => this.rendered());\n  }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectorRef, HostListener } from '@angular/core';\nimport { ClassicPreset } from 'rete';\n\n@Component({\n  templateUrl: `./control.component.html`,\n  styleUrls: ['./control.component.sass']\n})\nexport class ControlComponent<T extends 'text' | 'number'> implements OnChanges {\n  @Input() data!: ClassicPreset.InputControl<T>;\n  @Input() rendered!: any;\n\n\n  @HostListener('pointerdown', ['$event'])\n  public pointerdown(event: any) {\n    event.stopPropagation();\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach()\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const seed = changes['seed']\n    const data = changes['data']\n\n    if ((seed && seed.currentValue !== seed.previousValue)\n      || (data && data.currentValue !== data.previousValue)) {\n      this.cdr.detectChanges()\n    }\n    requestAnimationFrame(() => this.rendered())\n  }\n\n  onChange(e: Event) {\n    const target = e.target as HTMLInputElement\n    const value = (this.data.type === 'number'\n      ? +target.value\n      : target.value) as ClassicPreset.InputControl<T>['value']\n\n    this.data.setValue(value)\n    this.cdr.detectChanges()\n  }\n}\n","<input\n  [value]=\"data.value\"\n  [readonly]=\"data.readonly\"\n  [type]=\"data.type\"\n  (input)=\"onChange($event)\"\n/>\n","import { Component, Input } from \"@angular/core\";\nimport { ClassicPreset } from \"rete\";\nimport { Position } from \"../../../../types\";\n\n@Component({\n  selector: \"connection\",\n  templateUrl: \"./connection.component.html\",\n  styleUrls: [\"./connection.component.scss\"],\n})\nexport class ConnectionComponent {\n  @Input() data!: ClassicPreset.Connection<\n    ClassicPreset.Node,\n    ClassicPreset.Node\n  >;\n  @Input() start!: Position;\n  @Input() end!: Position;\n  @Input() path!: string;\n  @Input() set color(value: string) {\n    this._color = value;\n  }\n  @Input() set direction(value: string) {\n    this._pathClass =\n      value === \"forward\"\n        ? \"animated-path\"\n        : value === \"backward\"\n        ? \"reverse-ants\"\n        : \"static-dash\";\n  }\n  @Input() set value(value: number) {\n    this._value = value;\n  }\n\n  _value: number = 0;\n  _color: string = \"rgba(188,202,210,0.3)\";\n  _pathClass: \"animated-path\" | \"reverse-ants\" | \"static-dash\" = \"static-dash\";\n}\n","<svg data-testid=\"connection\">\n  <path\n    [attr.d]=\"path\"\n    [attr.stroke]=\"_color\"\n    fill=\"none\"\n    [ngClass]=\"_pathClass\"\n  />\n</svg>\n","import {\n  Component,\n  Input,\n  OnInit,\n  ChangeDetectorRef,\n  OnChanges,\n  ViewContainerRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n} from \"@angular/core\";\nimport { ClassicPreset } from \"rete\";\nimport { Position } from \"../../../../types\";\n\ntype PositionWatcher = (cb: (value: Position) => void) => () => void;\n\n@Component({\n  template: \"\",\n})\nexport class ConnectionWrapperComponent implements OnInit, OnChanges {\n  @Input() data!: ClassicPreset.Connection<\n    ClassicPreset.Node,\n    ClassicPreset.Node\n  > & {\n    color?: string;\n    direction?: string;\n    value?: number;\n  };\n  @Input() start!: Position | PositionWatcher;\n  @Input() end!: Position | PositionWatcher;\n  @Input() path!: (start: Position, end: Position) => Promise<string>;\n  @Input() rendered!: any;\n  @Input() connectionComponent!: any;\n  @Input() color!: string;\n  ref!: ComponentRef<any>;\n\n  startOb: Position | null = null;\n  get _start(): Position | null {\n    return \"x\" in this.start ? this.start : this.startOb;\n  }\n  endOb: Position | null = null;\n  get _end(): Position | null {\n    return \"x\" in this.end ? this.end : this.endOb;\n  }\n  _path!: string;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    public viewContainerRef: ViewContainerRef,\n    private componentFactoryResolver: ComponentFactoryResolver\n  ) {\n    this.cdr.detach();\n  }\n\n  async ngOnChanges(): Promise<void> {\n    await this.updatePath();\n    requestAnimationFrame(() => this.rendered());\n    this.cdr.detectChanges();\n    this.update();\n  }\n\n  async updatePath() {\n    if (this._start && this._end) {\n      this._path = await this.path(this._start, this._end);\n    }\n  }\n\n  ngOnInit() {\n    if (typeof this.start === \"function\") {\n      this.start(async (value) => {\n        this.startOb = value;\n        await this.updatePath();\n        this.cdr.detectChanges();\n        this.update();\n      });\n    }\n    if (typeof this.end === \"function\") {\n      this.end(async (value) => {\n        this.endOb = value;\n        await this.updatePath();\n        this.cdr.detectChanges();\n        this.update();\n      });\n    }\n    const componentFactory =\n      this.componentFactoryResolver.resolveComponentFactory(\n        this.connectionComponent\n      );\n    this.viewContainerRef.clear();\n\n    this.ref = this.viewContainerRef.createComponent(componentFactory);\n    this.update();\n  }\n\n  update() {\n    this.ref.instance.data = this.data;\n    this.ref.instance.start = this._start;\n    this.ref.instance.end = this._end;\n    this.ref.instance.path = this._path;\n    this.ref.instance.color = this.data.color || \"rgba(188,202,210,0.3)\";\n    this.ref.instance.direction = this.data.direction || \"static-dash\";\n    this.ref.instance.value = this.data.value || 0;\n  }\n}\n","import { Type } from \"@angular/core\";\nimport { BaseSchemes, ClassicPreset, getUID, Scope } from \"rete\";\nimport {\n  classicConnectionPath,\n  loopConnectionPath,\n  SocketPositionWatcher,\n  getDOMSocketPosition,\n  getElementCenter,\n  BaseSocketPosition,\n} from \"rete-render-utils\";\nimport {\n  AngularArea2D,\n  ClassicScheme,\n  ConnectionTypes,\n  ExtractPayload,\n  Side,\n} from \"./types\";\nimport { NodeComponent } from \"./components/node/node.component\";\nimport { SocketComponent } from \"./components/socket/socket.component\";\nimport { ControlComponent } from \"./components/control/control.component\";\nimport { ConnectionComponent } from \"./components/connection/connection.component\";\nimport { ConnectionWrapperComponent } from \"./components/connection/connection-wrapper.component\";\nimport { Position } from \"../../types\";\nimport { RenderPreset } from \"../types\";\nimport { Props } from \"rete-render-utils/_types/sockets-position/dom-socket-position\";\n\ntype AngularComponent = Type<any>;\ntype CustomizationProps<Schemes extends ClassicScheme> = {\n  node?: (data: ExtractPayload<Schemes, \"node\">) => AngularComponent | null;\n  connection?: (\n    data: ExtractPayload<Schemes, \"connection\">\n  ) => AngularComponent | null;\n  socket?: (data: ExtractPayload<Schemes, \"socket\">) => AngularComponent | null;\n  control?: (\n    data: ExtractPayload<Schemes, \"control\">\n  ) => AngularComponent | null;\n};\n\ntype ClassicProps<Schemes extends ClassicScheme, K> = {\n  socketPositionWatcher?: SocketPositionWatcher<Scope<never, [K]>>;\n  customize?: CustomizationProps<Schemes>;\n  connectionType?: string;\n};\n\n/**\n * Classic preset for rendering nodes, connections, controls and sockets.\n */\nexport function setup<\n  Schemes extends ClassicScheme,\n  K extends AngularArea2D<Schemes>\n>(props?: ClassicProps<Schemes, K>): RenderPreset<Schemes, K> {\n  const positionWatcher =\n    typeof props?.socketPositionWatcher === \"undefined\"\n      ? getDOMSocketPosition<Schemes, any>() // fix Type instantiation is excessively deep and possibly infinite.\n      : props?.socketPositionWatcher;\n  const { node, connection, socket, control } = props?.customize || {};\n  const globalConnectionType = props?.connectionType || \"straight\";\n\n  return {\n    attach(plugin) {\n      positionWatcher.attach(plugin as unknown as Scope<never, [K]>);\n    },\n    update(context) {\n      const data = context.data.payload;\n\n      if (context.data.type === \"connection\") {\n        const { start, end } = context.data;\n\n        return {\n          data,\n          ...(start ? { start } : {}),\n          ...(end ? { end } : {}),\n        };\n      }\n      return { data };\n    },\n    updateNode(context, plugin) {\n      const parent = plugin.parentScope();\n      const emit = parent.emit.bind(parent);\n      const rendered = () => {\n        emit({ type: \"rendered\", data: context.data } as any);\n      };\n\n      if (context.data.type === \"node\") {\n        const component = node ? node(context.data) : NodeComponent;\n\n        return {\n          key: `node-${context.data.payload.id}`,\n          component,\n          props: {\n            data: context.data.payload,\n            emit,\n            rendered,\n          },\n        };\n      }\n      return;\n    },\n    mount(context, plugin) {\n      const parent = plugin.parentScope();\n      const emit = parent.emit.bind(parent);\n      const rendered = () => {\n        emit({ type: \"rendered\", data: context.data } as any);\n      };\n\n      if (context.data.type === \"node\") {\n        const component = node ? node(context.data) : NodeComponent;\n\n        return {\n          key: `node-${context.data.payload.id}`,\n          component,\n          props: {\n            data: context.data.payload,\n            emit,\n            rendered,\n          },\n        };\n      }\n      if (context.data.type === \"connection\") {\n        const component = connection\n          ? connection(context.data)\n          : ConnectionComponent;\n        const id = context.data.payload.id;\n        const { sourceOutput, targetInput, source, target } =\n          context.data.payload;\n        const { start, end, payload } = context.data;\n\n        return {\n          key: `connection-${id}`,\n          component: ConnectionWrapperComponent,\n          props: {\n            connectionComponent: component,\n            data: payload,\n            start:\n              start ||\n              ((change: any) =>\n                positionWatcher.listen(source, \"output\", sourceOutput, change)),\n            end:\n              end ||\n              ((change: any) =>\n                positionWatcher.listen(target, \"input\", targetInput, change)),\n            path: async (start: Position, end: Position) => {\n              const response = await plugin.emit({\n                type: \"connectionpath\",\n                data: { payload, points: [start, end] },\n              });\n\n              if (!response) return \"\";\n\n              let { path, points } = response.data;\n\n              const curvature = 0.3;\n\n              const connectionType = payload.type || globalConnectionType;\n\n              if (connectionType === \"straight\")\n                path = buildStepStraightPath(start, end);\n\n              if (connectionType === \"90deg\") {\n                path = buildStep90DegPath(\n                  start,\n                  end,\n                  payload[\"sourceDirection\"],\n                  payload[\"targetDirection\"]\n                );\n              }\n\n              if (connectionType === \"curve\") {\n                path = buildCurvePath(\n                  start,\n                  end,\n                  payload.sourceDirection,\n                  payload.targetDirection,\n                  curvature,\n                  payload.curveDirection,\n                  payload.curvatureOffset\n                );\n              }\n\n              if (!path && points.length !== 2)\n                throw new Error(\n                  \"cannot render connection with a custom number of points\"\n                );\n              if (!path)\n                return payload.isLoop\n                  ? loopConnectionPath(\n                      points as [Position, Position],\n                      curvature,\n                      120\n                    )\n                  : classicConnectionPath(\n                      points as [Position, Position],\n                      curvature\n                    );\n\n              return path;\n            },\n            rendered,\n          },\n        };\n      }\n      if (context.data.type === \"socket\") {\n        const component = socket ? socket(context.data) : SocketComponent;\n        return {\n          key: `socket-${getUID()}`,\n          component,\n          props: {\n            data: context.data.payload,\n            side: context.data.side,\n            rendered,\n          },\n        };\n      }\n      if (context.data.type === \"control\") {\n        const component = control\n          ? control(context.data)\n          : context.data.payload instanceof ClassicPreset.InputControl\n          ? ControlComponent\n          : null;\n\n        if (component) {\n          return {\n            key: `control-${context.data.payload.id}`,\n            component,\n            props: {\n              data: context.data.payload,\n              rendered,\n            },\n          };\n        }\n        return;\n      }\n      return;\n    },\n  };\n}\n\nexport function buildStepStraightPath(start: Position, end: Position): string {\n  const f = (n: number) => Math.round(n * 10) / 10;\n\n  const segments: string[] = [];\n  segments.push(`M${f(start.x)},${f(start.y)}`);\n  segments.push(`L${f(end.x)},${f(end.y)}`);\n\n  return segments.join(\"\");\n}\n\nexport function buildStep90DegPath(\n  start: Position,\n  end: Position,\n  sourceDirection?: string,\n  targetDirection?: string\n): string {\n  let startX = start.x;\n  let endX = end.x;\n  let startY = start.y;\n  let endY = end.y;\n\n  const helfSocketSize = 6;\n\n  if (sourceDirection === \"left\") {\n    startX = startX - helfSocketSize;\n    startY = startY - helfSocketSize;\n  } else if (sourceDirection === \"right\") {\n    startX = startX + helfSocketSize;\n    startY = startY - helfSocketSize;\n  } else if (sourceDirection === \"top\") {\n    startY = startY - helfSocketSize;\n    startX = startX - helfSocketSize;\n  } else if (sourceDirection === \"down\") {\n    startY = startY + helfSocketSize;\n    startX = startX - helfSocketSize;\n  }\n\n  if (targetDirection === \"left\") {\n    endX = endX - helfSocketSize;\n    endY = endY - helfSocketSize;\n  } else if (targetDirection === \"right\") {\n    endX = endX + helfSocketSize;\n    endY = endY - helfSocketSize;\n  } else if (targetDirection === \"top\") {\n    endY = endY - helfSocketSize;\n    endX = endX - helfSocketSize;\n  } else if (targetDirection === \"down\") {\n    endY = endY + helfSocketSize;\n    endX = endX - helfSocketSize;\n  }\n\n  const preX =\n    sourceDirection === \"left\"\n      ? startX - 20\n      : sourceDirection === \"right\"\n      ? startX + 20\n      : startX;\n  const postX =\n    targetDirection === \"left\"\n      ? endX - 20\n      : targetDirection === \"right\"\n      ? endX + 20\n      : endX;\n  const preY =\n    sourceDirection === \"top\"\n      ? startY - 20\n      : sourceDirection === \"down\"\n      ? startY + 20\n      : startY;\n  const postY =\n    targetDirection === \"top\"\n      ? endY - 20\n      : targetDirection === \"down\"\n      ? endY + 20\n      : endY;\n  const midX = (preX + postX) / 2;\n  const midY = (preY + postY) / 2;\n  const f = (n: number) => Math.round(n * 10) / 10;\n\n  const segments: string[] = [];\n  segments.push(`M${f(startX)},${f(startY)}`);\n  segments.push(`L${f(preX)},${f(preY)}`);\n\n  {\n    segments.push(`L${f(preX)},${f(midY)}`);\n    segments.push(`L${f(midX)},${f(midY)}`);\n    segments.push(`L${f(postX)},${f(midY)}`);\n    segments.push(`L${f(postX)},${f(postY)}`);\n  }\n  segments.push(`L${f(postX)},${f(postY)}`);\n  segments.push(`L${f(endX)},${f(endY)}`);\n\n  return segments.join(\"\");\n}\n\nexport function buildCurvePath(\n  start: Position,\n  end: Position,\n  sourceDirection?: string,\n  targetDirection?: string,\n  curvature?: number,\n  curveDirection?: string,\n  curvatureOffset?: number\n): string {\n  const preX = start.x;\n  const postX = end.x;\n  const preY = start.y;\n  const postY = end.y;\n\n  const f = (n: number) => Math.round(n * 10) / 10;\n  const curv = typeof curvature === \"number\" ? curvature : 0.3;\n\n  const curvOffset = typeof curvatureOffset === \"number\" ? curvatureOffset : 3;\n\n  const midX = (preX + postX) / 2;\n  const midY = (preY + postY) / 2;\n  let ctrlX = midX;\n  let ctrlY = midY;\n\n  const remSize = parseFloat(\n    getComputedStyle(document.documentElement).fontSize\n  );\n\n  const dx = Math.abs(postX - preX);\n  const dy = Math.abs(postY - preY);\n\n  switch (curveDirection) {\n    case \"right\":\n      ctrlX = Math.max(preX, postX) + dx * curv + curvOffset * remSize;\n      break;\n    case \"left\":\n      ctrlX = Math.max(preX, postX) + dx * curv - curvOffset * remSize;\n      break;\n    case \"up\":\n      ctrlY = Math.max(preY, postY) + dy * curv - curvOffset * remSize;\n      break;\n    case \"down\":\n      ctrlY = Math.max(preY, postY) + dy * curv + curvOffset * remSize;\n      break;\n  }\n  // Quadratic Bezier for smooth parenthesis-like curve\n  return `M${f(preX)} ${f(preY)} Q ${f(ctrlX)} ${f(ctrlY)} ${f(postX)} ${f(\n    postY\n  )} `;\n}\n","export function debounce(cb: () => void) {\n  return {\n    timeout: null as null | number,\n    cancel() {\n      if (this.timeout) {\n        window.clearTimeout(this.timeout)\n        this.timeout = null\n      }\n    },\n    call(delay: number) {\n      this.timeout = window.setTimeout(() => {\n        cb()\n      }, delay)\n    }\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'context-menu-search',\n  templateUrl: './search.component.html',\n  styleUrls: ['./search.component.sass']\n})\nexport class ContextMenuSearchComponent {\n  @Input() value!: string\n  @Output() update = new EventEmitter<string>()\n}\n","<input class=\"search\" [value]=\"value\" (input)=\"update.emit($any($event.target)?.value || '')\"\n  data-testid=\"context-menu-search-input\" />\n","import { ChangeDetectorRef, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { Item } from '../../types';\nimport { debounce } from '../../debounce';\n// [imports]\n\n@Component({\n  // [component-directive]\n  selector: 'context-menu-item',\n  templateUrl: './item.component.html',\n  styleUrls: ['./item.component.sass', '../../block.sass'],\n  host: {\n    'data-testid': 'context-menu-item'\n  }\n})\nexport class ContextMenuItemComponent {\n  @Input() subitems?: Item[]\n  @Input() delay!: number\n  @Output() select = new EventEmitter<void>();\n  @Output() hide = new EventEmitter<void>();\n\n  @HostBinding('class.block') get block() { return true }\n  @HostBinding('class.hasSubitems') get hasSubitems() { return this.subitems }\n\n  @HostListener('click', ['$event']) click(event: MouseEvent) {\n    event.stopPropagation()\n    this.select.emit()\n    this.hide.emit()\n  }\n  @HostListener('pointerdown', ['$event']) pointerdown(event: PointerEvent) {\n    event.stopPropagation()\n  }\n  @HostListener('wheel', ['$event']) wheel(event: MouseEvent) {\n    event.stopPropagation()\n  }\n\n  hideSubitems = debounce(() => {\n    this.visibleSubitems = false\n    this.cdr.detectChanges()\n  })\n  visibleSubitems = false\n\n  @HostListener('pointerover') pointerover() {\n    this.hideSubitems.cancel()\n    this.visibleSubitems = true\n    this.cdr.detectChanges()\n  }\n  @HostListener('pointerleave') pointerleave() {\n    this.hideSubitems.call(this.delay)\n    this.cdr.detectChanges()\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach()\n  }\n}\n","<ng-content></ng-content>\n<div class=\"subitems\" *ngIf=\"subitems && visibleSubitems\">\n  <context-menu-item\n    *ngFor=\"let item of subitems\"\n    [delay]=\"delay\"\n    (select)=\"item.handler()\"\n    (hide)=\"hide.emit()\"\n  >\n    {{ item.label }}\n  </context-menu-item>\n</div>\n","import { Component, Input, ChangeDetectorRef, OnChanges, OnDestroy, HostListener, HostBinding } from '@angular/core';\nimport { Item } from '../../types';\nimport { debounce } from '../../debounce';\n// [imports]\n\n@Component({\n  // [component-directive]\n  templateUrl: './menu.component.html',\n  styleUrls: ['./menu.component.sass', '../../block.sass'],\n  host: {\n    'data-testid': 'context-menu'\n  }\n})\nexport class ContextMenuComponent implements OnChanges, OnDestroy {\n  @Input() items!: Item[]\n  @Input() delay!: number\n  @Input() searchBar?: boolean\n  @Input() onHide!: () => void\n  @Input() rendered!: () => void\n\n  public filter: string = ''\n\n  hide = debounce(() => {\n    this.onHide()\n    this.cdr.detectChanges()\n  })\n\n  @HostBinding('attr.rete-context-menu') customAttribute = ''\n\n  @HostListener('mouseover') pointerover() {\n    this.hide.cancel()\n    this.cdr.detectChanges()\n  }\n  @HostListener('mouseleave') pointerleave() {\n    this.hide.call(this.delay)\n    this.cdr.detectChanges()\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach()\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges()\n    requestAnimationFrame(() => this.rendered())\n  }\n\n  setFilter(value: string) {\n    this.filter = value\n    this.cdr.detectChanges()\n  }\n\n  getItems() {\n    const filterRegexp = new RegExp(this.filter, 'i')\n    const filteredList = this.items.filter(item => (\n      item.label.match(filterRegexp)\n    ))\n\n    return filteredList\n  }\n\n  ngOnDestroy(): void {\n    if (this.hide) this.hide.cancel()\n  }\n}\n","<div class=\"block\" *ngIf=\"searchBar\">\n  <context-menu-search\n    [value]=\"filter\"\n    (update)=\"setFilter($event)\"\n  ></context-menu-search>\n</div>\n\n<context-menu-item\n  *ngFor=\"let item of getItems()\"\n  [delay]=\"delay\"\n  (select)=\"item.handler()\"\n  [subitems]=\"item.subitems\"\n  (hide)=\"onHide()\"\n>\n  {{ item.label }}\n</context-menu-item>\n","import { BaseSchemes } from \"rete\";\n\nimport { ContextMenuRender } from \"./types\";\nimport { ContextMenuComponent } from \"./components/menu/menu.component\";\nimport { RenderPreset } from \"../types\";\n\n/**\n * Preset for rendering context menu.\n */\nexport function setup<\n  Schemes extends BaseSchemes,\n  K extends ContextMenuRender\n>(props?: { delay?: number }): RenderPreset<Schemes, K> {\n  const delay = typeof props?.delay === \"undefined\" ? 1000 : props.delay;\n\n  return {\n    update(context) {\n      if (context.data.type === \"contextmenu\") {\n        return {\n          items: context.data.items,\n          delay,\n          searchBar: context.data.searchBar,\n          onHide: context.data.onHide,\n        };\n      }\n      return null;\n    },\n    mount(context, plugin) {\n      const parent = plugin.parentScope();\n      const emit = parent.emit.bind(parent);\n      const rendered = () => {\n        emit({ type: \"rendered\", data: context.data } as any);\n      };\n\n      if (context.data.type === \"contextmenu\") {\n        return {\n          key: \"context-menu\",\n          component: ContextMenuComponent,\n          props: {\n            items: context.data.items,\n            delay,\n            searchBar: context.data.searchBar,\n            onHide: context.data.onHide,\n            rendered,\n          },\n        };\n      }\n      return null;\n    },\n  };\n}\n","import { Position } from '../types'\n\ntype Translate = (dx: number, dy: number) => void\ntype StartEvent = { pageX: number, pageY: number }\n\nexport function useDrag(translate: Translate, getPointer: (e: StartEvent) => Position) {\n  return {\n    start(e: StartEvent) {\n      let previous = { ...getPointer(e) }\n\n      function move(moveEvent: MouseEvent) {\n        const current = { ...getPointer(moveEvent) }\n        const dx = current.x - previous.x\n        const dy = current.y - previous.y\n\n        previous = current\n\n        translate(dx, dy)\n      }\n      function up() {\n        window.removeEventListener('pointermove', move)\n        window.removeEventListener('pointerup', up)\n        window.removeEventListener('pointercancel', up)\n      }\n\n      window.addEventListener('pointermove', move)\n      window.addEventListener('pointerup', up)\n      window.addEventListener('pointercancel', up)\n    }\n  }\n}\n","import { Component, Input, HostBinding, HostListener } from '@angular/core';\nimport { useDrag } from '../../../../shared/drag';\nimport { MinimapData } from '../../types';\n\n@Component({\n  selector: 'minimap-mini-viewport',\n  templateUrl: './mini-viewport.component.html',\n  styleUrls: ['./mini-viewport.component.sass'],\n  host: {\n    'data-testid': 'minimap-viewport'\n  }\n})\nexport class MiniViewportComponent {\n  @Input() left!: number\n  @Input() top!: number\n  @Input() width!: number\n  @Input() height!: number\n  @Input() containerWidth!: number\n  @Input() translate!: MinimapData['translate']\n\n  drag = useDrag((dx, dy) => this.onDrag(dx, dy), e => ({ x: e.pageX, y: e.pageY }))\n\n  @HostBinding('style.left') get styleLeft() {\n    return this.px(this.scale(this.left))\n  }\n  @HostBinding('style.top') get styleTop() {\n    return this.px(this.scale(this.top))\n  }\n  @HostBinding('style.width') get styleWidth() {\n    return this.px(this.scale(this.width))\n  }\n  @HostBinding('style.height') get styleHeight() {\n    return this.px(this.scale(this.height))\n  }\n\n  @HostListener('pointerdown', ['$event']) pointerdown(event: PointerEvent) {\n    event.stopPropagation()\n    this.drag.start(event)\n  }\n\n  px(value: number) {\n    return `${value}px`\n  }\n\n  scale(v: number) {\n    return v * this.containerWidth\n  }\n\n  invert(v: number) {\n    return v / this.containerWidth\n  }\n\n  onDrag(dx: number, dy: number) {\n    this.translate(this.invert(-dx), this.invert(-dy))\n  }\n}\n","","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'minimap-mini-node',\n  templateUrl: './mini-node.component.html',\n  styleUrls: ['./mini-node.component.sass'],\n  host: {\n    'data-testid': 'minimap-node'\n  }\n})\nexport class MiniNodeComponent {\n  @Input() left!: number\n  @Input() top!: number\n  @Input() width!: number\n  @Input() height!: number\n\n  @HostBinding('style.left') get styleLeft() {\n    return this.px(this.left)\n  }\n  @HostBinding('style.top') get styleTop() {\n    return this.px(this.top)\n  }\n  @HostBinding('style.width') get styleWidth() {\n    return this.px(this.width)\n  }\n  @HostBinding('style.height') get styleHeight() {\n    return this.px(this.height)\n  }\n\n  px(value: number) {\n    return `${value}px`\n  }\n\n}\n","","import { Component, Input, ChangeDetectorRef, OnChanges, HostListener, ElementRef, HostBinding } from '@angular/core';\nimport { MinimapData } from '../../types';\n// [imports]\n\n@Component({\n  // [component-directive]\n  templateUrl: './minimap.component.html',\n  styleUrls: ['./minimap.component.sass'],\n  host: {\n    'data-testid': 'minimap'\n  }\n})\nexport class MinimapComponent implements OnChanges {\n  @Input() rendered!: () => void\n  @Input() size!: number\n  @Input() ratio!: MinimapData['ratio']\n  @Input() nodes!: MinimapData['nodes']\n  @Input() viewport!: MinimapData['viewport']\n  @Input() translate!: MinimapData['translate']\n  @Input() point!: MinimapData['point']\n\n  @HostBinding('style.width') get width() {\n    return this.px(this.size * this.ratio)\n  }\n  @HostBinding('style.height') get height() {\n    return this.px(this.size)\n  }\n\n  @HostListener('pointerdown', ['$event']) pointerdown(event: PointerEvent) {\n    event.stopPropagation()\n    event.preventDefault()\n  }\n\n  @HostListener('dblclick', ['$event']) dblclick(event: MouseEvent) {\n    event.stopPropagation()\n    event.preventDefault()\n\n    if (!this.el.nativeElement) return\n    const box = this.el.nativeElement.getBoundingClientRect()\n    const x = (event.clientX - box.left) / (this.size * this.ratio)\n    const y = (event.clientY - box.top) / (this.size * this.ratio)\n\n    this.point(x, y)\n  }\n\n  constructor(public el: ElementRef, private cdr: ChangeDetectorRef)  {\n    this.cdr.detach()\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges()\n    requestAnimationFrame(() => this.rendered())\n  }\n\n  px(value: number) {\n    return `${value}px`\n  }\n\n  scale(value: number) {\n    if (!this.el.nativeElement) return 0\n\n    return value * this.el.nativeElement.clientWidth\n  }\n\n  identifyMiniNode(_: number, item: MinimapData['nodes'][number]) {\n    return [item.top, item.left].join('_')\n  }\n}\n","<minimap-mini-node *ngFor=\"let node of nodes; trackBy: identifyMiniNode\" [left]=\"scale(node.left)\"\n  [top]=\"scale(node.top)\" [width]=\"scale(node.width)\" [height]=\"scale(node.height)\">\n\n</minimap-mini-node>\n<minimap-mini-viewport [left]=\"viewport.left\" [top]=\"viewport.top\" [width]=\"viewport.width\" [height]=\"viewport.height\"\n  [containerWidth]=\"el.nativeElement?.clientWidth\" [translate]=\"translate\"></minimap-mini-viewport>\n","import { BaseSchemes } from 'rete';\n\nimport { RenderPreset } from '../types';\nimport { MinimapRender } from './types';\nimport { MinimapComponent } from './components/minimap/minimap.component';\n\n/**\n * Preset for rendering minimap.\n */\nexport function setup<Schemes extends BaseSchemes, K extends MinimapRender>(props?: { size?: number }): RenderPreset<Schemes, K> {\n  return {\n    update(context) {\n      if (context.data.type === 'minimap') {\n        return {\n          nodes: context.data.nodes,\n          size: props?.size || 200,\n          ratio: context.data.ratio,\n          viewport: context.data.viewport,\n          translate: context.data.translate,\n          point: context.data.point\n        }\n      }\n      return null\n    },\n    mount(context, plugin) {\n      const parent = plugin.parentScope()\n      const emit = parent.emit.bind(parent)\n      const rendered = () => {\n        emit({ type: 'rendered', data: context.data } as any)\n      }\n\n      if (context.data.type === 'minimap') {\n        return {\n          key: 'rete-minimap',\n          component: MinimapComponent,\n          props: {\n            nodes: context.data.nodes,\n            size: props?.size || 200,\n            ratio: context.data.ratio,\n            viewport: context.data.viewport,\n            translate: context.data.translate,\n            point: context.data.point,\n            rendered\n          }\n        }\n      }\n      return null\n    }\n  }\n}\n","import { Component, Input, ChangeDetectorRef, OnChanges, HostListener, HostBinding, Output, EventEmitter } from '@angular/core';\nimport { Position } from '../../types';\nimport { useDrag } from '../../../../shared/drag'\n\nconst pinSize = 20\n\n@Component({\n  selector: 'reroute-pin',\n  template: '',\n  styleUrls: ['./pin.component.sass'],\n  host: {\n    'data-testid': 'pin'\n  }\n})\nexport class PinComponent implements OnChanges {\n  @Input() position!: Position\n  @Input() selected?: boolean\n  @Input() getPointer!: () => Position\n  @Output() menu = new EventEmitter<void>()\n  @Output() translate = new EventEmitter<{ dx: number, dy: number }>()\n  @Output() down = new EventEmitter<void>()\n\n  drag = useDrag((dx, dy) => {\n    this.translate.emit({ dx, dy })\n  }, () => this.getPointer())\n\n  @HostBinding('class.selected') get _selected() {\n    return this.selected\n  }\n  @HostBinding('style.top') get top() {\n    return `${this.position.y - pinSize / 2}px`\n  }\n  @HostBinding('style.left') get left() {\n    return `${this.position.x - pinSize / 2}px`\n  }\n  @HostListener('pointerdown', ['$event']) pointerdown(event: PointerEvent) {\n    event.stopPropagation()\n    event.preventDefault()\n\n    this.drag.start(event)\n    this.down.emit()\n  }\n  @HostListener('contextmenu', ['$event']) contextmenu(event: MouseEvent) {\n    event.stopPropagation()\n    event.preventDefault()\n\n    this.menu.emit()\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    // this.cdr.detach()\n  }\n\n  ngOnChanges(): void {\n    // this.cdr.detectChanges()\n    // requestAnimationFrame(() => this.rendered())\n  }\n\n}\n","import { Component, Input, ChangeDetectorRef, OnChanges } from \"@angular/core\";\nimport { Pin, PinData, Position } from \"../../types\";\n\n@Component({\n  // [component-directive]\n  templateUrl: \"./pins.component.html\",\n})\nexport class PinsComponent implements OnChanges {\n  @Input() rendered!: () => void;\n  @Input() pins!: PinData[\"pins\"];\n  @Input() down?: (id: string) => void;\n  @Input() translate?: (id: string, dx: number, dy: number) => void;\n  @Input() menu?: (id: string) => void;\n  @Input() getPointer: () => Position = () => ({ x: 0, y: 0 });\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach();\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges();\n    requestAnimationFrame(() => this.rendered());\n  }\n\n  track(_: number, item: Pin) {\n    return item.id;\n  }\n}\n","<reroute-pin *ngFor=\"let pin of pins; trackBy: track\" [position]=\"pin.position\" [selected]=\"pin.selected\"\n  (menu)=\"menu && menu(pin.id)\" (translate)=\"translate && translate(pin.id, $event.dx, $event.dy)\"\n  (down)=\"down && down(pin.id)\" [getPointer]=\"getPointer\"></reroute-pin>\n","import { BaseSchemes } from 'rete';\nimport { BaseAreaPlugin } from 'rete-area-plugin';\n\nimport { RenderPreset } from '../types'\nimport { PinsRender } from './types';\nimport { PinsComponent } from './components/pins/pins.component';\n\ntype Props = {\n  translate?: (id: string, dx: number, dy: number) => void\n  contextMenu?: (id: string) => void\n  pointerdown?: (id: string) => void\n}\n\n/**\n * Preset for rendering pins.\n */\nexport function setup<Schemes extends BaseSchemes, K extends PinsRender>(props?: Props): RenderPreset<Schemes, K> {\n  const getProps = () => ({\n    menu: props?.contextMenu || (() => null),\n    translate: props?.translate || (() => null),\n    down: props?.pointerdown || (() => null)\n  })\n\n  return {\n    update(context) {\n      if (context.data.type === 'reroute-pins') {\n        return {\n          ...getProps(),\n          pins: context.data.data.pins\n        }\n      }\n      return null\n    },\n    mount(context, plugin) {\n      const area = plugin.parentScope<BaseAreaPlugin<Schemes, PinsRender>>(BaseAreaPlugin)\n      const rendered = () => {\n        area.emit({ type: 'rendered', data: context.data })\n      }\n\n      if (context.data.type === 'reroute-pins') {\n        return {\n          key: 'rete-reroute',\n          component: PinsComponent,\n          props: {\n            ...getProps(),\n            pins: context.data.data.pins,\n            rendered,\n            getPointer: () => area.area.pointer\n          }\n        }\n      }\n      return null\n    }\n  }\n}\n","/**\n * Built-in presets, responsible for rendering different parts of the editor.\n * @module\n */\nexport * as classic from './classic'\nexport * as contextMenu from './context-menu'\nexport * as minimap from './minimap'\nexport * as reroute from './reroute'\n","import {\n  Component,\n  Input,\n  HostBinding,\n  ChangeDetectorRef,\n  OnChanges,\n} from \"@angular/core\";\nimport { ClassicPreset as Classic } from \"rete\";\nimport { KeyValue } from \"@angular/common\";\n// [imports]\n\ntype NodeExtraData = {\n  width?: number;\n  height?: number;\n  positionTop?: boolean;\n  image?: string;\n  color?: string;\n  borderColor?: string;\n  backgroundColor?: string;\n  fontMainStyle?: string;\n  fontStyle?: string;\n  dynamicData?:\n    | Record<string, { label?: string; value: number | string; unit: string }>\n    | Array<{ label?: string; value: number | string; unit?: string }>;\n  onClick?: () => void;\n};\ntype SortValue<N extends Classic.Node> = (\n  | N[\"controls\"]\n  | N[\"inputs\"]\n  | N[\"outputs\"]\n)[string];\n\n@Component({\n  // [component-directive]\n  templateUrl: \"./scada-blank-node.component.html\",\n  styleUrls: [\"./scada-blank-node.component.scss\"],\n  host: {\n    \"data-testid\": \"node\",\n  },\n})\nexport class ScadaBlankNodeComponent implements OnChanges {\n  private _data!: Classic.Node & NodeExtraData;\n  @Input() set data(value: Classic.Node & NodeExtraData) {\n    this._data = value;\n    this.inputsOutputs = {\n      ...this.data.inputs,\n      ...this.data.outputs,\n    };\n  }\n  get data() {\n    return this._data;\n  }\n  @Input() emit!: (data: any) => void;\n  @Input() rendered!: () => void;\n  @Input() version!: number;\n\n  seed = 0;\n\n  inputsOutputs: {\n    [x: string]: Classic.Output<any> | Classic.Input<any> | undefined;\n  } = {};\n\n  @HostBinding(\"style.width\") get width() {\n    return `${this.data.width}rem`;\n  }\n\n  @HostBinding(\"style.height\") get height() {\n    const h = this.data.height;\n    return typeof h === \"number\" ? `${h}rem` : null;\n  }\n\n  @HostBinding(\"class.selected\") get selected() {\n    return this.data.selected;\n  }\n\n  @HostBinding(\"class.dynamic\") get dynamic() {\n    return this.data.dynamicData;\n  }\n\n  @HostBinding(\"style.color\") get color() {\n    return this.data.color || \"black\";\n  }\n\n  @HostBinding(\"style.--node-bg-color\") get backgroundColor() {\n    return this.data.backgroundColor || \"#7d94a1\";\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach();\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges();\n    requestAnimationFrame(() => this.rendered());\n    this.seed++; // force render sockets\n  }\n\n  public forceUpdate() {\n    this.cdr.detectChanges();\n  }\n\n  public isArray<T>(value: unknown): value is Array<T> {\n    return Array.isArray(value);\n  }\n\n  get normalizedDynamicData(): Array<{\n    label?: string;\n    value: number | string;\n    unit?: string;\n  }> {\n    const dd = (this.data as Classic.Node & NodeExtraData).dynamicData as\n      | Record<\n          string,\n          { label?: string; value: number | string; unit?: string }\n        >\n      | Array<{ label?: string; value: number | string; unit?: string }>\n      | undefined;\n\n    if (!dd) return [];\n    if (Array.isArray(dd)) {\n      return dd.map((item) => ({\n        label: item.label,\n        value: item.value,\n        unit: item.unit,\n      }));\n    }\n    return Object.keys(dd).map((key) => {\n      const item = dd[key] as {\n        label?: string;\n        value: number | string;\n        unit?: string;\n      };\n      return {\n        label: item?.label ?? key,\n        value: item?.value,\n        unit: item?.unit,\n      };\n    });\n  }\n\n  sortByIndex<N extends Classic.Node, I extends KeyValue<string, SortValue<N>>>(\n    a: I,\n    b: I\n  ) {\n    const ai = a.value?.index || 0;\n    const bi = b.value?.index || 0;\n\n    return ai - bi;\n  }\n\n  toPx(number: number): number {\n    const rootFontSize =\n      parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n    return number * rootFontSize;\n  }\n\n  private mapPositionToSide(\n    position?: string\n  ): \"left\" | \"right\" | \"top\" | \"bottom\" | null {\n    if (!position) return null;\n    const p = position.toLowerCase();\n    if (p === \"down\" || p === \"bottom\") return \"bottom\";\n    if (p === \"left\" || p === \"right\" || p === \"top\")\n      return p as \"left\" | \"right\" | \"top\";\n    return null;\n  }\n\n  isSidePositioned(socket: any): boolean {\n    return !!this.mapPositionToSide(socket?.direction);\n  }\n\n  getSocketSideClass(socket: any): string | null {\n    const side = this.mapPositionToSide(socket?.direction);\n    return side ? `pos-${side}` : null;\n  }\n\n  onClick() {\n    this.data.onClick?.();\n  }\n}\n","<div class=\"title\" data-testid=\"title\" [ngClass]=\"data.fontMainStyle\">\n  {{ data.label }}\n</div>\n<div class=\"image\" *ngIf=\"data.image\">\n  <img [src]=\"data.image\" />\n</div>\n@for (inOutSocket of inputsOutputs | keyvalue : sortByIndex; track\ninOutSocket.key; let i = $index) {\n<div\n  class=\"input\"\n  [attr.data-testid]=\"'input-' + inOutSocket.key\"\n  style=\"position: absolute; z-index: 1000\"\n  [ngClass]=\"getSocketSideClass(inOutSocket.value?.socket)\"\n>\n  <div\n    class=\"socket\"\n    refComponent\n    [data]=\"{\n      type: 'socket',\n      side: inOutSocket.value?.socket.type,\n      key: inOutSocket.key,\n      nodeId: data.id,\n      payload: inOutSocket.value?.socket,\n      seed: seed\n    }\"\n    [emit]=\"emit\"\n    data-testid=\"input-socket\"\n  ></div>\n</div>\n} @if (data.dynamicData) {\n<div class=\"dynamic-data\">\n  <div class=\"dynamic-list\">\n    @for (item of normalizedDynamicData; track $index) {\n    <div class=\"dynamic-row\">\n      <div class=\"data-box label\" [ngClass]=\"data.fontStyle\">\n        {{ item.label ?? \"\" }}\n      </div>\n      <div class=\"data-box value\">\n        <span class=\"value-text\" [ngClass]=\"data.fontMainStyle\">{{\n          item.value\n        }}</span>\n        <span class=\"unit-text\" [ngClass]=\"data.fontStyle\">{{\n          item.unit ?? \"\"\n        }}</span>\n      </div>\n    </div>\n    }\n  </div>\n</div>\n}\n","import {\n  Component,\n  Input,\n  HostBinding,\n  ChangeDetectorRef,\n  OnChanges,\n} from \"@angular/core\";\nimport { ClassicPreset as Classic } from \"rete\";\nimport { KeyValue } from \"@angular/common\";\n// [imports]\n\ntype NodeExtraData = {\n  width?: number;\n  height?: number;\n  positionTop?: boolean;\n  image?: string;\n  color?: string;\n  borderColor?: string;\n  backgroundColor?: string;\n  fontMainStyle?: string;\n  fontStyle?: string;\n  dynamicData?:\n    | Record<string, { value: number | string; unit: string }>\n    | Array<{ value: number | string; unit?: string }>;\n  onClick?: () => void;\n};\ntype SortValue<N extends Classic.Node> = (\n  | N[\"controls\"]\n  | N[\"inputs\"]\n  | N[\"outputs\"]\n)[string];\n\n@Component({\n  // [component-directive]\n  templateUrl: \"./scada-overview-node.component.html\",\n  styleUrls: [\"./scada-overview-node.component.scss\"],\n  host: {\n    \"data-testid\": \"node\",\n  },\n})\nexport class ScadaOverviewNodeComponent implements OnChanges {\n  private _data!: Classic.Node & NodeExtraData;\n  @Input() set data(value: Classic.Node & NodeExtraData) {\n    this._data = value;\n    this.inputsOutputs = {\n      ...this.data.inputs,\n      ...this.data.outputs,\n    };\n  }\n  get data() {\n    return this._data;\n  }\n  @Input() emit!: (data: any) => void;\n  @Input() rendered!: () => void;\n  @Input() version!: number;\n\n  seed = 0;\n\n  inputsOutputs: {\n    [x: string]: Classic.Output<any> | Classic.Input<any> | undefined;\n  } = {};\n\n  @HostBinding(\"style.width\") get width() {\n    return `${this.data.width}rem`;\n  }\n\n  @HostBinding(\"style.height\") get height() {\n    return `${this.data.height}rem`;\n  }\n\n  @HostBinding(\"class.selected\") get selected() {\n    return this.data.selected;\n  }\n\n  @HostBinding(\"class.dynamic\") get dynamic() {\n    return this.data.dynamicData;\n  }\n\n  @HostBinding(\"style.color\") get color() {\n    return this.data.color || \"black\";\n  }\n\n  @HostBinding(\"style.--node-bg-color\") get backgroundColor() {\n    if (\n      this.data.dynamicData &&\n      Array.isArray(this.data.dynamicData) &&\n      (this.data.dynamicData[0].value == 0 ||\n        this.data.dynamicData[0].value == undefined ||\n        this.data.dynamicData[0].value == \"-\")\n    ) {\n      return \"#7d94a1\";\n    }\n    return this.data.backgroundColor || \"rgba(110,136,255,0.8)\";\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach();\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges();\n    requestAnimationFrame(() => this.rendered());\n    this.seed++; // force render sockets\n  }\n\n  public forceUpdate() {\n    this.cdr.detectChanges();\n  }\n\n  public isArray<T>(value: unknown): value is Array<T> {\n    return Array.isArray(value);\n  }\n\n  sortByIndex<N extends Classic.Node, I extends KeyValue<string, SortValue<N>>>(\n    a: I,\n    b: I\n  ) {\n    const ai = a.value?.index || 0;\n    const bi = b.value?.index || 0;\n\n    return ai - bi;\n  }\n\n  toPx(number: number): number {\n    const rootFontSize =\n      parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n    return number * rootFontSize;\n  }\n\n  onClick() {\n    this.data.onClick?.();\n  }\n}\n","<div class=\"image\" *ngIf=\"data.image\" (click)=\"onClick()\">\n  <img [src]=\"data.image\" />\n</div>\n@for (inOutSocket of inputsOutputs | keyvalue : sortByIndex; track\ninOutSocket.key; let i = $index) {\n<div\n  class=\"input\"\n  [attr.data-testid]=\"'input-' + inOutSocket.key\"\n  style=\"position: absolute; z-index: 1000\"\n  [style.left.px]=\"toPx(inOutSocket.value?.socket?.positionX)\"\n  [style.top.px]=\"toPx(inOutSocket.value?.socket.positionY)\"\n>\n  <div\n    class=\"socket\"\n    refComponent\n    [data]=\"{\n      type: 'socket',\n      side: inOutSocket.value?.socket.type,\n      key: inOutSocket.key,\n      nodeId: data.id,\n      payload: inOutSocket.value?.socket,\n      seed: seed\n    }\"\n    [emit]=\"emit\"\n    data-testid=\"input-socket\"\n  ></div>\n</div>\n} @if (data.dynamicData) {\n<div\n  class=\"dynamic-data\"\n  [ngStyle]=\"{\n    'top.px': data.positionTop ? -toPx(1) : toPx(data.height!) - toPx(data.height!) * 0.3,\n  }\"\n>\n  @if (isArray(data.dynamicData)) {\n  <div class=\"dynamic-row\">\n    <div class=\"data-value\">\n      <span [ngClass]=\"data.fontMainStyle\">{{\n        data.dynamicData[0].value\n      }}</span>\n      <span [ngClass]=\"data.fontStyle\">\n        {{ data.dynamicData[0].unit ?? \"\" }}\n      </span>\n    </div>\n    <div class=\"data-value\">\n      <span [ngClass]=\"data.fontMainStyle\">{{\n        data.dynamicData[1].value\n      }}</span>\n      <span [ngClass]=\"data.fontStyle\">\n        {{ data.dynamicData[1].unit ?? \"\" }}</span\n      >\n    </div>\n  </div>\n  }\n</div>\n}\n","import {\n  Component,\n  Input,\n  HostBinding,\n  AfterViewChecked,\n  ChangeDetectorRef,\n  OnChanges,\n} from \"@angular/core\";\n\n@Component({\n  template: ``,\n  styleUrls: [\"./scada-socket.component.scss\"],\n})\nexport class ScadaSocketComponent implements OnChanges {\n  @Input() data!: any;\n  @Input() side!: any;\n  @Input() rendered!: any;\n\n  @HostBinding(\"title\") get title() {\n    return this.data.name;\n  }\n\n  @HostBinding(\"style.background\") get color() {\n    if (this.data.blankView) {\n      return \"transparent\";\n    }\n    return this.side === \"input\" ? \"red\" : \"blue\";\n  }\n\n  @HostBinding(\"style.border-color\") get borderColor() {\n    if (this.data.blankView) {\n      return \"transparent\";\n    }\n    return this.side === \"input\" ? \"yellow\" : \"black\";\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach();\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges();\n    requestAnimationFrame(() => this.rendered());\n  }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { NodeComponent } from \"./presets/classic/components/node/node.component\";\nimport { ConnectionComponent } from \"./presets/classic/components/connection/connection.component\";\nimport { SocketComponent } from \"./presets/classic/components/socket/socket.component\";\nimport { ConnectionWrapperComponent } from \"./presets/classic/components/connection/connection-wrapper.component\";\nimport { ControlComponent } from \"./presets/classic/components/control/control.component\";\nimport { RefDirective } from \"./ref\";\nimport { ScadaBlankNodeComponent } from \"./presets/classic/components/scada-blank-node/scada-blank-node.component\";\nimport { ScadaOverviewNodeComponent } from \"./presets/classic/components/scada-overview-node/scada-overview-node.component\";\nimport { ScadaSocketComponent } from \"./presets/classic/components/scada-socket/scada-socket.component\";\n\n@NgModule({\n  declarations: [\n    RefDirective,\n    NodeComponent,\n    ScadaBlankNodeComponent,\n    ConnectionComponent,\n    ConnectionWrapperComponent,\n    SocketComponent,\n    ControlComponent,\n    ScadaOverviewNodeComponent,\n    ScadaSocketComponent,\n  ],\n  imports: [CommonModule],\n  exports: [\n    RefDirective,\n    NodeComponent,\n    ScadaBlankNodeComponent,\n    ConnectionComponent,\n    ConnectionWrapperComponent,\n    SocketComponent,\n    ControlComponent,\n    ScadaOverviewNodeComponent,\n    ScadaSocketComponent,\n  ],\n})\nexport class ReteModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ContextMenuComponent } from './components/menu/menu.component'\nimport { ContextMenuSearchComponent } from './components/search/search.component'\nimport { ContextMenuItemComponent } from './components/item/item.component'\n\n@NgModule({\n  declarations: [\n    ContextMenuComponent,\n    ContextMenuSearchComponent,\n    ContextMenuItemComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    ContextMenuComponent,\n    ContextMenuSearchComponent,\n    ContextMenuItemComponent,\n  ]\n})\nexport class ReteContextMenuModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MinimapComponent } from './components/minimap/minimap.component';\nimport { MiniViewportComponent } from './components/mini-viewport/mini-viewport.component';\nimport { MiniNodeComponent } from './components/mini-node/mini-node.component';\n\n@NgModule({\n  declarations: [\n    MinimapComponent,\n    MiniViewportComponent,\n    MiniNodeComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    MinimapComponent,\n    MiniViewportComponent,\n    MiniNodeComponent\n  ]\n})\nexport class ReteMinimapModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PinsComponent } from './components/pins/pins.component';\nimport { PinComponent } from './components/pin/pin.component';\n\n@NgModule({\n  declarations: [\n    PinsComponent,\n    PinComponent,\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    PinsComponent,\n    PinComponent,\n  ]\n})\nexport class ReteRerouteModule {}\n","import { ClassicPreset } from \"rete\";\n\nexport class ScadaSocket extends ClassicPreset.Socket {\n  positionX = 0;\n  positionY = 0;\n  direction = \"\";\n  type = \"\";\n  blankView = false;\n  multipleConnections = true;\n\n  constructor(\n    name: string,\n    positionX: number,\n    positionY: number,\n    direction: string,\n    type: string,\n    blankView?: boolean\n  ) {\n    super(name);\n    this.multipleConnections = true;\n\n    this.positionX = positionX;\n    this.positionY = positionY;\n    this.type = type;\n    this.direction = direction;\n    this.blankView = blankView || false;\n  }\n}\n","import { ClassicPreset } from \"rete\";\nimport { ScadaSocket } from \"../scada-socket/scada-socket\";\nimport { ConnectionTypes } from \"../../types\";\n\nexport class ScadaConnection extends ClassicPreset.Connection<\n  ClassicPreset.Node,\n  ClassicPreset.Node\n> {\n  sourceDirection: string = \"\";\n  targetDirection: string = \"\";\n  type?: ConnectionTypes;\n  curveDirection?: string;\n  curvatureOffset?: number;\n\n  constructor(\n    source: ClassicPreset.Node,\n    sourceOutput: string,\n    target: ClassicPreset.Node,\n    targetInput: string,\n    type?: ConnectionTypes,\n    curveDirection?: string,\n    curvatureOffset?: number\n  ) {\n    super(source, sourceOutput, target, targetInput);\n    const sourceSocket = source[\"outputs\"][sourceOutput]\n      ?.socket as unknown as ScadaSocket;\n    const targetSocket = target[\"inputs\"][targetInput]\n      ?.socket as unknown as ScadaSocket;\n    this.sourceDirection = sourceSocket.direction;\n    this.targetDirection = targetSocket.direction;\n    this.type = type || undefined;\n    this.curveDirection = curveDirection || undefined;\n    this.curvatureOffset = curvatureOffset || undefined;\n  }\n}\n","import {\n  Component,\n  Input,\n  HostBinding,\n  AfterViewChecked,\n  ChangeDetectorRef,\n  OnChanges,\n} from \"@angular/core\";\n\n@Component({\n  template: ``,\n  styleUrls: [\"./scada-overview-socket.component.scss\"],\n})\nexport class ScadaOverviewSocketComponent implements OnChanges {\n  @Input() data!: any;\n  @Input() side!: any;\n  @Input() rendered!: any;\n\n  @HostBinding(\"title\") get title() {\n    return this.data.name;\n  }\n\n  @HostBinding(\"style.background\") get color() {\n    if (this.data.blankView) {\n      return \"transparent\";\n    }\n    return this.side === \"input\" ? \"red\" : \"blue\";\n  }\n\n  @HostBinding(\"style.border-color\") get borderColor() {\n    if (this.data.blankView) {\n      return \"transparent\";\n    }\n    return this.side === \"input\" ? \"yellow\" : \"black\";\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.cdr.detach();\n  }\n\n  ngOnChanges(): void {\n    this.cdr.detectChanges();\n    requestAnimationFrame(() => this.rendered());\n  }\n}\n","export function reflect<T extends object>(obj: T): T {\n  if (typeof obj !== \"object\" || obj === null) {\n    return obj as T;\n  }\n\n  return new Proxy(obj, {\n    get(target: T, prop: string | symbol) {\n      return (target as Record<string | symbol, unknown>)[prop];\n    },\n    set(target: T, prop: string | symbol, value: unknown) {\n      (target as Record<string | symbol, unknown>)[prop] = value;\n      return true;\n    },\n    has(target: T, prop: string | symbol) {\n      return prop in target;\n    },\n    deleteProperty(target: T, prop: string | symbol) {\n      return delete (target as Record<string | symbol, unknown>)[prop];\n    },\n    ownKeys(target: T) {\n      return Reflect.ownKeys(target);\n    },\n  });\n}\n","import { Injector } from \"@angular/core\";\nimport { BaseSchemes, CanAssignSignal, Scope } from \"rete\";\nimport { createCustomElement } from \"@angular/elements\";\n\nimport { NgElement, NodeProps, Position, RenderSignal } from \"./types\";\nimport { RenderPreset } from \"./presets/types\";\nimport { reflect } from \"./reflect\";\n\ntype Item = { key: string; ngElement: NgElement };\n\ntype Renderer = {\n  get(element: HTMLElement): Item | undefined;\n  mount(\n    element: HTMLElement,\n    key: string,\n    component: any,\n    injector: Injector,\n    props: Record<string, unknown>\n  ): void;\n  update(item: Item, props: Record<string, unknown>): void;\n  unmount(element: HTMLElement): void;\n};\nfunction getRenderer(): Renderer {\n  const elements = new WeakMap<HTMLElement, Item>();\n\n  return {\n    get(element) {\n      return elements.get(element);\n    },\n    mount(element, key, component, injector, props) {\n      // LIMITATION: If an element is remounted with the same identifier, the component cannot be replaced\n      let CustomElement = customElements.get(key);\n\n      if (!CustomElement) {\n        CustomElement = createCustomElement(component, { injector });\n        customElements.define(key, CustomElement);\n      }\n\n      const ngElement = new CustomElement(injector) as NodeProps &\n        NgElement &\n        typeof props;\n\n      Object.keys(props).forEach((key) => {\n        ngElement[key] = props[key];\n      });\n\n      element.appendChild(ngElement);\n      elements.set(element, { key, ngElement });\n    },\n    update({ ngElement }, props) {\n      Object.keys(props).forEach((key) => {\n        // Fix: Ensure reflect(props[key]) is always an object\n        // and cast key to string to satisfy TS2345\n        const value = reflect(props[key] as object);\n        ngElement.ngElementStrategy.setInputValue(\n          key,\n          typeof value === \"object\" && value !== null ? value : {}\n        );\n      });\n    },\n    unmount(element) {\n      const existing = elements.get(element);\n\n      if (existing) {\n        existing.ngElement.remove();\n        elements.delete(element);\n      }\n    },\n  };\n}\n\n/**\n * Signals that can be emitted by the plugin\n * @priority 10\n */\nexport type Produces<Schemes extends BaseSchemes> = {\n  type: \"connectionpath\";\n  data: { payload: Schemes[\"Connection\"]; path?: string; points: Position[] };\n};\n\ntype Requires<Schemes extends BaseSchemes> =\n  | RenderSignal<\"node\", { payload: Schemes[\"Node\"] }>\n  | RenderSignal<\n      \"connection\",\n      { payload: Schemes[\"Connection\"]; start?: Position; end?: Position }\n    >\n  | { type: \"unmount\"; data: { element: HTMLElement } }\n  | { type: \"test7\"; data: { payload: Schemes[\"Node\"] } };\n\n/**\n * Angular plugin. Renders nodes, connections and other elements using React.\n * @priority 9\n * @emits connectionpath\n * @listens render\n * @listens unmount\n */\nexport class AngularPlugin<\n  Schemes extends BaseSchemes,\n  T = Requires<Schemes>\n> extends Scope<Produces<Schemes>, [Requires<Schemes> | T]> {\n  presets: RenderPreset<Schemes, T>[] = [];\n  renderer: Renderer;\n  owners = new WeakMap<HTMLElement, RenderPreset<Schemes, T>>();\n\n  /**\n   * @constructor\n   * @param params Plugin properties\n   * @param params.injector Angular's Injector instance\n   */\n  constructor(private params: { injector: Injector }) {\n    super(\"angular-render\");\n    this.renderer = getRenderer();\n\n    this.addPipe((context) => {\n      if (!context || typeof context !== \"object\" || !(\"type\" in context))\n        return context;\n      if (context.type === \"test7\") {\n        this.update(context as unknown as Extract<T, { type: \"render\" }>);\n      }\n      if (context.type === \"unmount\") {\n        this.unmount(context.data.element);\n      } else if (context.type === \"render\") {\n        if (\"filled\" in context.data && context.data.filled) {\n          return context;\n        }\n        if (this.mount(context.data.element, context)) {\n          return {\n            ...context,\n            data: {\n              ...context.data,\n              filled: true,\n            },\n          } as typeof context;\n        }\n      }\n      return context;\n    });\n  }\n\n  override setParent(scope: Scope<Requires<Schemes> | T>): void {\n    super.setParent(scope);\n\n    this.presets.forEach((preset) => {\n      if (preset.attach) preset.attach(this);\n    });\n  }\n\n  private update(context: Extract<T, { type: \"render\" }>) {\n    this.presets.forEach((preset) => {\n      if (preset.updateNode) preset.updateNode(context, this);\n    });\n  }\n\n  private unmount(element: HTMLElement) {\n    this.owners.delete(element);\n    this.renderer.unmount(element);\n  }\n\n  private mount(element: HTMLElement, context: Requires<Schemes>) {\n    const existing = this.renderer.get(element);\n\n    if (existing) {\n      this.presets.forEach((preset) => {\n        if (this.owners.get(element) !== preset) return;\n        const result = preset.update(\n          context as unknown as Extract<T, { type: \"render\" }>,\n          this\n        );\n\n        if (result) {\n          this.renderer.update(existing, result);\n        }\n      });\n      return true;\n    }\n\n    for (const preset of this.presets) {\n      const result = preset.mount(\n        context as unknown as Extract<T, { type: \"render\" }>,\n        this\n      );\n\n      if (!result) continue;\n\n      const { key, component, props } = result;\n\n      this.renderer.mount(element, key, component, this.params.injector, props);\n\n      this.owners.set(element, preset);\n      return true;\n    }\n    return;\n  }\n\n  /**\n   * Adds a preset to the plugin.\n   * @param preset Preset that can render nodes, connections and other elements.\n   */\n  public addPreset<K>(\n    preset: RenderPreset<\n      Schemes,\n      CanAssignSignal<T, K> extends true\n        ? K\n        : \"Cannot apply preset. Provided signals are not compatible\"\n    >\n  ) {\n    const local = preset as unknown as RenderPreset<Schemes, T>;\n\n    if (local.attach) local.attach(this);\n    this.presets.push(local);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.RefDirective","setup","i2.ContextMenuSearchComponent","i3.ContextMenuItemComponent","i2.MiniViewportComponent","i3.MiniNodeComponent","i2.PinComponent"],"mappings":"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"}