{"version":3,"file":"obliczeniowo-elementary-categories-relations.mjs","sources":["../../../../projects/components/categories-relations/components/relation-item/relation-item.component.ts","../../../../projects/components/categories-relations/components/relation-item/relation-item.component.html","../../../../projects/components/categories-relations/components/categories-relations/categories-relations.component.ts","../../../../projects/components/categories-relations/components/categories-relations/categories-relations.component.html","../../../../projects/components/categories-relations/categories-relations.module.ts","../../../../projects/components/categories-relations/obliczeniowo-elementary-categories-relations.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Output, HostListener, HostBinding, input, effect } from '@angular/core';\r\nimport { Category } from '@obliczeniowo/elementary/categories';\r\nimport { RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\r\nimport { IPoint2D, Point2D } from '@obliczeniowo/elementary/classes';\r\nimport { MenuComponent } from '@obliczeniowo/elementary/menu';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport type RelationSide = 'left' | 'right';\r\n\r\nexport interface RelationItemClicked {\r\n  side: RelationSide;\r\n  category: Category;\r\n  pos: IPoint2D;\r\n}\r\n\r\n@Component({\r\n    selector: 'obl-relation-item',\r\n    templateUrl: './relation-item.component.html',\r\n    styleUrls: ['./relation-item.component.scss'],\r\n    standalone: false\r\n})\r\nexport class RelationItemComponent {\r\n  category = input<Category>({ name: 'unknown' });\r\n\r\n  side = input<RelationSide>('left');\r\n\r\n  relations = input<RelationConnectorComponent[]>([]);\r\n\r\n  menu = input<MenuComponent>();\r\n\r\n  disabled = input<boolean>();\r\n\r\n  @Output() clicked = new EventEmitter<RelationItemClicked>();\r\n\r\n  @Output() remove = new EventEmitter<{ category: Category; side: RelationSide }>();\r\n\r\n  @Output() editColor = new EventEmitter<{ category: Category; side: RelationSide }>();\r\n\r\n  protected subscription!: Subscription;\r\n\r\n  protected haveRelations = false;\r\n\r\n  @HostListener('click') onClick() {\r\n    this.clicked.emit({ side: this.side(), category: this.category(), pos: this.position });\r\n  }\r\n\r\n  @Output() hovered = new EventEmitter<RelationItemComponent>();\r\n\r\n  protected menuItems = [\r\n    {\r\n      id: 1,\r\n      text: 'Delete',\r\n      command: 'delete',\r\n    },\r\n    {\r\n      id: 2,\r\n      text: 'Set color',\r\n      command: 'set-color',\r\n    }\r\n  ]\r\n\r\n  @HostListener('mouseover') onMouseOver() {\r\n    this.hovered.emit(this);\r\n\r\n    const menu = this.menu();\r\n    if (menu && !this.disabled()) {\r\n      menu.items = this.haveRelations ? this.menuItems : [];\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseleave') onMouseLeave() {\r\n    const menu = this.menu();\r\n    if (menu && !menu?.opened) {\r\n      menu.items = [];\r\n    }\r\n  }\r\n\r\n  @HostBinding('class.left') get isLeft() {\r\n    return this.side() === 'left';\r\n  }\r\n\r\n  @HostBinding('class.right') get isRight() {\r\n    return this.side() === 'right';\r\n  }\r\n\r\n  constructor(protected elementRef: ElementRef<HTMLElement>) {\r\n    effect(() => {\r\n      this.update();\r\n    })\r\n\r\n    effect(() => {\r\n      const menu = this.menu();\r\n      if (this.subscription && !this.subscription?.closed) {\r\n        this.subscription.unsubscribe();\r\n      }\r\n      if (!menu) {\r\n        return;\r\n      }\r\n      this.subscription = menu.command.subscribe((command) => {\r\n        if (menu?.items !== this.menuItems) {\r\n          return;\r\n        }\r\n        switch (command) {\r\n          case 'delete':\r\n            this.remove.emit(\r\n              {\r\n                category: this.category(),\r\n                side: this.side()\r\n              }\r\n            )\r\n            if (menu) {\r\n              menu.items = [];\r\n            }\r\n            this.haveRelations = false;\r\n            break;\r\n          case 'set-color':\r\n            this.editColor.emit({\r\n              category: this.category(),\r\n              side: this.side()\r\n            })\r\n            break;\r\n          case 'on-close':\r\n            menu.items = [];\r\n            break;\r\n        }\r\n      })\r\n    })\r\n\r\n    effect(() => {\r\n      const disabled = this.disabled();\r\n      const menu = this.menu();\r\n      if (!disabled && menu) {\r\n        menu.items = [];\r\n      }\r\n    })\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.subscription && !this.subscription?.closed) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  update() {\r\n    if (this.category() && this.relations()) {\r\n      setTimeout(() => {\r\n        const items = this.relations().filter(relation => relation.connector?.[this.side()] === this.category().name);\r\n\r\n        const dy = 1;\r\n\r\n        this.haveRelations = !!items.length;\r\n\r\n        let pos: Point2D = this.position as Point2D;\r\n        pos = new Point2D(pos.x, pos.y - items.length * dy * 0.5);\r\n\r\n        items.forEach((item, index) => {\r\n          item[this.side()] = pos.add(new Point2D(0, dy * index));\r\n          item.change.detectChanges();\r\n        })\r\n      })\r\n    }\r\n  }\r\n\r\n  get position() {\r\n    const rect = this.elementRef.nativeElement.getBoundingClientRect() as DOMRect;\r\n    const parent = this.elementRef.nativeElement.parentElement?.parentElement?.getBoundingClientRect() as DOMRect;\r\n\r\n    const side = this.side() === 'left' ? 'right' : 'left';\r\n\r\n    const dx = side === 'right' ? 10 : -10;\r\n\r\n    return { x: rect[side] - parent.left + dx, y: rect.top + rect.height / 2 - parent.y };\r\n  }\r\n}\r\n","<div class=\"connection-point\"></div>\r\n{{ category().name }}\r\n","import { Component, Input, ElementRef, ViewChildren, QueryList, EventEmitter, ChangeDetectorRef, Output, HostListener, ViewChild, input } from '@angular/core';\r\nimport { Category } from '@obliczeniowo/elementary/categories';\r\nimport { RelationItemClicked, RelationItemComponent, RelationSide } from '../relation-item/relation-item.component';\r\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { ColorRGB, IPoint2D } from '@obliczeniowo/elementary/classes';\r\nimport { Connector, RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\r\nimport { MenuComponent } from '@obliczeniowo/elementary/menu';\r\nimport { DialogWrapperComponent } from '@obliczeniowo/elementary/dialogs';\r\nimport { ColorComponent } from '@obliczeniowo/elementary/color-picker';\r\n\r\n/**\r\n * Relations item let you create corelation between left items and right one in graphical way and modify them\r\n *\r\n * [menu] - add context menu component {@link MenuComponent} from {@link MenuModule}. Do not set menu items, this component\r\n * will set them up by them self\r\n * [translations] - set the translations using as key current (default) english text and value as new one (translated) to display\r\n */\r\n@Component({\r\n    selector: 'obl-categories-relations',\r\n    templateUrl: './categories-relations.component.html',\r\n    styleUrls: ['./categories-relations.component.scss'],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            multi: true,\r\n            useExisting: CategoriesRelationsComponent\r\n        },\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            multi: true,\r\n            useExisting: CategoriesRelationsComponent\r\n        }\r\n    ],\r\n    standalone: false\r\n})\r\nexport class CategoriesRelationsComponent implements ControlValueAccessor {\r\n  /**\r\n   * right side categories\r\n   */\r\n  @Input() left: Category[] = [];\r\n  /**\r\n   * left side categories\r\n   */\r\n  @Input() right: Category[] = [];\r\n  /**\r\n   * connectors array to create {@link RelationConnectorComponent}\r\n   */\r\n  @Input() connectors: Connector[] = [];\r\n  /**\r\n   * [translations] - set the translations using as key current (default) english text and value as new one (translated) to display\r\n   */\r\n  translations = input<{ [english: string]: string }>({});\r\n  // context menu component reference\r\n  menu = input<MenuComponent>();\r\n\r\n  @Output() changed = new EventEmitter<{ left: Category[]; right: Category[]; connectors: Connector[] }>();\r\n\r\n  @ViewChild(DialogWrapperComponent) color!: DialogWrapperComponent;\r\n\r\n  protected width: number = 0;\r\n  protected height: number = 0;\r\n\r\n  observer = new ResizeObserver(() => {\r\n    this.width = this.elementRef.nativeElement.clientWidth;\r\n    this.height = this.elementRef.nativeElement.clientHeight;\r\n\r\n    this.items?.forEach(item => item.update())\r\n  });\r\n\r\n  protected highlight?: string;\r\n\r\n  protected categoryItemSelected?: RelationItemClicked;\r\n  protected mousePos?: IPoint2D;\r\n\r\n  @ViewChildren(RelationConnectorComponent) set relations(relation: QueryList<RelationConnectorComponent>) {\r\n    setTimeout(() => this.relationsChanged = relation.toArray())\r\n  };\r\n\r\n  @ViewChildren(RelationItemComponent) items!: QueryList<RelationItemComponent>;\r\n\r\n  @ViewChild(ColorComponent) colorPicker!: ColorComponent;\r\n\r\n  @HostListener('mouseover') onMouseOver() {\r\n    const menu = this.menu();\r\n    if (menu) {\r\n      menu.target = this.elementRef.nativeElement;\r\n      menu.translations = this.translations();\r\n    }\r\n  }\r\n\r\n  @Input() disabled?: boolean;\r\n\r\n  protected relationsChanged: RelationConnectorComponent[] = [];\r\n\r\n  protected target: any;\r\n\r\n  protected connectorsSelected?: Connector[];\r\n\r\n  constructor(protected elementRef: ElementRef<HTMLElement>, protected changes: ChangeDetectorRef) {\r\n  }\r\n\r\n  onChange = (value: { left: Category[]; right: Category[]; connectors: Connector[] }) => {\r\n    this.changed.emit(value);\r\n  };\r\n\r\n  onTouched = () => { };\r\n\r\n  onMove(event: MouseEvent) {\r\n    const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n    const mousePos = { x: event.x - rect.x, y: event.y - rect.y }\r\n    if (this.categoryItemSelected) {\r\n      if (this.categoryItemSelected.side === 'left') {\r\n        this.mousePos = { x: Math.max(mousePos.x, this.categoryItemSelected?.pos.x + 50), y: mousePos.y }\r\n      } else {\r\n        this.mousePos = { x: Math.min(mousePos.x, this.categoryItemSelected?.pos.x), y: mousePos.y }\r\n      }\r\n    }\r\n  }\r\n\r\n  writeValue(obj: { left: Category[]; right: Category[]; connectors: Connector[] }): void {\r\n    Object.assign(this, obj);\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n\r\n  setDisabledState?(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  validate(control: any): ValidationErrors | null {\r\n    return null;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.observer.observe(this.elementRef.nativeElement);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.observer.unobserve(this.elementRef.nativeElement);\r\n  }\r\n\r\n  onHoverOverItem(item: RelationItemComponent) {\r\n    if (this.categoryItemSelected?.side !== item.side()) {\r\n      this.mousePos = item.position;\r\n    } else {\r\n      const { x, y } = this.categoryItemSelected.pos;\r\n      this.mousePos = { x: this.categoryItemSelected?.side === 'left' ? x + 50 : x - 50, y };\r\n    }\r\n  }\r\n\r\n  onRemove(item: { category: Category; side: RelationSide }) {\r\n    this.connectors = this.connectors.filter(connector => connector[item.side] !== item.category.name);\r\n    const prepare = { left: this.left, right: this.right, connectors: this.connectors };\r\n\r\n    this.changed.emit(prepare);\r\n\r\n    if (this.onChange) {\r\n      this.onChange(prepare);\r\n    }\r\n    const menu = this.menu();\r\n    if (menu) {\r\n      menu.items = [];\r\n    }\r\n  }\r\n\r\n  setColor(color: ColorRGB) {\r\n    this.color.close();\r\n    if (this.connectorsSelected) {\r\n      this.connectorsSelected.forEach(item => {\r\n        item.color = color.getHexColorBase;\r\n      })\r\n\r\n      this.connectors = [...this.connectors];\r\n      const prepare = { left: this.left, right: this.right, connectors: this.connectors };\r\n      this.changed.emit(prepare);\r\n      if (this.onChange) {\r\n        this.onChange(prepare);\r\n      }\r\n    }\r\n  }\r\n\r\n  onEditColor(item: { category: Category; side: RelationSide }) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n\r\n    this.color.open({ minWidth: '540px' });\r\n    this.colorPicker.chosenColor = ColorRGB.fromHtmlColor(item.category?.color || '#ff0000');\r\n    this.connectorsSelected = this.connectors.filter(connector => connector[item.side] === item.category.name)\r\n\r\n    const menu = this.menu();\r\n    if (menu) {\r\n      menu.items = [];\r\n    }\r\n  }\r\n\r\n  onEditColorConnector(connector: Connector) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n\r\n    this.connectorsSelected = [connector];\r\n    this.color.open({ minWidth: '540px' });\r\n    this.colorPicker.chosenColor = ColorRGB.fromHtmlColor(connector.color || '#ff0000');\r\n    this.colorPicker.ngAfterViewInit();\r\n  }\r\n\r\n  removeConnector(connector: Connector) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.connectors = this.connectors.filter(conn => !(conn.left === connector.left && conn.right === connector.right));\r\n    this.onChange({ left: this.left, right: this.right, connectors: this.connectors });\r\n    this.changes.detectChanges();\r\n  }\r\n\r\n  addConnector(categoryItem: RelationItemClicked) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    if (!this.categoryItemSelected) {\r\n      this.categoryItemSelected = categoryItem;\r\n      this.mousePos = { x: this.categoryItemSelected.pos.x + (this.categoryItemSelected.side === 'left' ? 50 : -50), y: this.categoryItemSelected.pos.y };\r\n    } else {\r\n      if (this.categoryItemSelected.side === categoryItem.side) {\r\n        this.categoryItemSelected = undefined;\r\n        return;\r\n      }\r\n      if (this.connectors.find(con =>\r\n        con?.[categoryItem.side] === categoryItem.category.name &&\r\n        this.categoryItemSelected &&\r\n        con?.[this.categoryItemSelected.side] === this.categoryItemSelected.category.name\r\n      )) {\r\n        this.categoryItemSelected = undefined;\r\n        return;\r\n      }\r\n      this.connectors = [...this.connectors,\r\n      {\r\n        [categoryItem.side]: categoryItem.category.name,\r\n        [this.categoryItemSelected.side]: this.categoryItemSelected.category.name,\r\n        color: categoryItem.side === 'left' ? categoryItem.category.color : this.categoryItemSelected.category.color\r\n      } as any].sort((a: Connector, b: Connector) => {\r\n        return this.left.findIndex(w => w.name === a.left) * this.left.length - this.left.findIndex(w => w.name === b.left) * this.left.length +\r\n          this.right.findIndex(w => w.name === a.right) - this.right.findIndex(w => w.name === b.right);\r\n      });\r\n\r\n      this.onChange({ left: this.left, right: this.right, connectors: this.connectors });\r\n\r\n      this.categoryItemSelected = undefined;\r\n    }\r\n  }\r\n}\r\n","<svg\r\n  [attr.width]=\"width\"\r\n  [attr.height]=\"height\"\r\n  (mousemove)=\"onMove($event)\"\r\n  (click)=\"categoryItemSelected = undefined\"\r\n>\r\n  @for(connector of connectors; track $index) {\r\n    <g\r\n      obl-relation-connector\r\n      [connector]=\"connector\"\r\n      [highlighted]=\"highlight\"\r\n      [disabled]=\"disabled\"\r\n      [menu]=\"menu()\"\r\n      [translations]=\"translations()\"\r\n      (clicked)=\"removeConnector($event)\"\r\n      (remove)=\"removeConnector($event)\"\r\n      (editColor)=\"onEditColorConnector($event)\"\r\n    ></g>\r\n  }\r\n\r\n  @if (categoryItemSelected) {\r\n    <g\r\n      obl-relation-connector\r\n      class=\"selected\"\r\n      [left]=\"\r\n        categoryItemSelected.side === 'left' ? categoryItemSelected.pos : mousePos\r\n      \"\r\n      [right]=\"\r\n        categoryItemSelected.side === 'right'\r\n          ? categoryItemSelected.pos\r\n          : mousePos\r\n      \"\r\n      [defaultColor]=\"'red'\"\r\n      (clicked)=\"removeConnector($event)\"\r\n    ></g>\r\n  }\r\n</svg>\r\n\r\n<div class=\"left-section\">\r\n  @for(item of left; track item.name) {\r\n    <obl-relation-item\r\n      [category]=\"item\"\r\n      [relations]=\"relationsChanged\"\r\n      [disabled]=\"disabled\"\r\n      [menu]=\"menu()\"\r\n      (mouseover)=\"highlight = item.name\"\r\n      (mouseleave)=\"highlight = undefined\"\r\n      (clicked)=\"addConnector($event)\"\r\n      (hovered)=\"onHoverOverItem($event)\"\r\n      (remove)=\"onRemove($event)\"\r\n      (editColor)=\"onEditColor($event)\"\r\n    ></obl-relation-item>\r\n  }\r\n</div>\r\n\r\n<div class=\"right-section\">\r\n  @for (item of right; track item.name) {\r\n    <obl-relation-item\r\n      [category]=\"item\"\r\n      [relations]=\"relationsChanged\"\r\n      [side]=\"'right'\"\r\n      [disabled]=\"disabled\"\r\n      [menu]=\"menu()\"\r\n      (mouseover)=\"highlight = item.name\"\r\n      (mouseleave)=\"highlight = undefined\"\r\n      (clicked)=\"addConnector($event)\"\r\n      (hovered)=\"onHoverOverItem($event)\"\r\n      (remove)=\"onRemove($event)\"\r\n      (editColor)=\"onEditColor($event)\"\r\n    ></obl-relation-item>\r\n  }\r\n</div>\r\n\r\n<obl-dialog-wrapper\r\n  [header]=\"translations()['Color picker'] || 'Color picker'\"\r\n  #color\r\n>\r\n  <obl-color\r\n    [translations]=\"{\r\n      red: translations()['Red'] || 'Red',\r\n      green: translations()['Green'] || 'Green',\r\n      blue: translations()['Blue'] || 'Blue',\r\n      alpha: translations()['Alpha'] || 'Transparent'\r\n    }\"\r\n    #colorSet\r\n  ></obl-color>\r\n  <div class=\"buttons\">\r\n    <button oblButton (click)=\"setColor(colorSet.chosenColor)\">\r\n      {{ translations()['Ok'] || 'Ok' }}\r\n    </button>\r\n    <button oblButton (click)=\"color.close()\">\r\n      {{ translations()['Cancel'] || 'Cancel' }}\r\n    </button>\r\n  </div>\r\n</obl-dialog-wrapper>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RelationItemComponent } from './components/relation-item/relation-item.component';\r\nimport { CategoriesRelationsComponent } from './components/categories-relations/categories-relations.component';\r\nimport { ConnectorsModule } from '@obliczeniowo/elementary/connectors';\r\nimport { MenuModule } from '@obliczeniowo/elementary/menu';\r\nimport { DialogsModule } from '@obliczeniowo/elementary/dialogs';\r\nimport { ColorPickerModule } from '@obliczeniowo/elementary/color-picker';\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    RelationItemComponent,\r\n    CategoriesRelationsComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ConnectorsModule,\r\n    MenuModule,\r\n    DialogsModule,\r\n    ColorPickerModule,\r\n    ButtonsModule\r\n  ],\r\n  exports: [\r\n    CategoriesRelationsComponent\r\n  ]\r\n})\r\nexport class CategoriesRelationsModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5.RelationItemComponent"],"mappings":"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"}