UNPKG

@obliczeniowo/elementary

Version:
1 lines 198 kB
{"version":3,"file":"obliczeniowo-elementary-modeller.mjs","sources":["../../../../projects/components/modeller/components/modeller-box/modeller-box.component.ts","../../../../projects/components/modeller/components/modeller-box/modeller-box.component.html","../../../../projects/components/modeller/components/connector-item/connector-item.component.ts","../../../../projects/components/modeller/components/connector-item/connector-item.component.html","../../../../projects/components/modeller/components/integer-filter-connector/integer-filter-connector.component.ts","../../../../projects/components/modeller/components/integer-filter-connector/integer-filter-connector.component.html","../../../../projects/components/modeller/components/convert-to-histogram/convert-to-histogram.component.ts","../../../../projects/components/modeller/components/convert-to-histogram/convert-to-histogram.component.html","../../../../projects/components/modeller/components/range-filter/range-filter.component.ts","../../../../projects/components/modeller/components/range-filter/range-filter.component.html","../../../../projects/components/modeller/components/string-converter/string-converter.component.ts","../../../../projects/components/modeller/components/string-converter/string-converter.component.html","../../../../projects/components/modeller/components/split-box/split-box.component.ts","../../../../projects/components/modeller/components/value-input/value-input.component.ts","../../../../projects/components/modeller/components/value-input/value-input.component.html","../../../../projects/components/modeller/components/math-box/math-box.component.ts","../../../../projects/components/modeller/components/math-operator/math-operator.component.ts","../../../../projects/components/modeller/components/math-operator/math-operator.component.html","../../../../projects/components/modeller/components/const-or-value/const-or-value.component.ts","../../../../projects/components/modeller/components/const-or-value/const-or-value.component.html","../../../../projects/components/modeller/components/join-array-to-object-box/join-array-to-object-box.component.ts","../../../../projects/components/modeller/components/split-input-box/split-input-box.component.ts","../../../../projects/components/modeller/components/generate/generate.component.ts","../../../../projects/components/modeller/components/generate/generate.component.html","../../../../projects/components/modeller/components/concat-array-box/concat-array-box.component.ts","../../../../projects/components/modeller/components/formula-box/formula-box.component.ts","../../../../projects/components/modeller/components/formula/formula.component.ts","../../../../projects/components/modeller/components/formula/formula.component.html","../../../../projects/components/modeller/get-request/get-request.component.ts","../../../../projects/components/modeller/get-request/get-request.component.html","../../../../projects/components/modeller/services/modeller.service.ts","../../../../projects/components/modeller/components/modeller-space/modeller-space.component.ts","../../../../projects/components/modeller/components/modeller-space/modeller-space.component.html","../../../../projects/components/modeller/modeller.module.ts","../../../../projects/components/modeller/obliczeniowo-elementary-modeller.ts"],"sourcesContent":["import { Component, ComponentRef, HostBinding, Input, Output, SimpleChanges, ViewChild, ViewContainerRef, ElementRef, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { Point2D } from '@obliczeniowo/elementary/classes';\r\n\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { BoxModel } from '../../models/box.model';\r\nimport { RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\r\nimport { ComponentData } from '../../models/component-data';\r\nimport { ModellerService } from '../../services/modeller.service';\r\nimport { ModellerConnectorModel } from '../../models/modeller-connector.model';\r\nimport { BoxItemModel } from '../../models/box-item.model';\r\nimport { ModellerSpaceComponent } from '../../public-api';\r\n\r\n@Component({\r\n    selector: 'obl-modeller-box',\r\n    templateUrl: './modeller-box.component.html',\r\n    styleUrls: ['./modeller-box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ModellerBoxComponent {\r\n  @Input() model?: BoxModel;\r\n  /** world (global translation) */\r\n  @Input() world: Point2D = new Point2D();\r\n  /** local box only translation */\r\n  @Input() translate: Point2D = new Point2D();\r\n  /** translation for dragging this stuff */\r\n  @Input() offset: Point2D = new Point2D();\r\n  // to force display this box on top of any other one in view by set z-index\r\n  @Input() index: number = 0;\r\n  /** Unique per box type registration */\r\n  @Input() id?: string;\r\n  /** globally unique id as meany the same type boxes can exists */\r\n  @Input() subId?: string;\r\n  /** used only for 'input'/'output' type of model */\r\n  @Input() inputModel?: { [key: string]: any };\r\n  /** parent */\r\n  @Input() parent?: ModellerSpaceComponent;\r\n  /** */\r\n  @Input() options?: { [key: string]: any }\r\n\r\n  /** used only for 'input'/'output' type of model */\r\n  @Output() outputChanged = new EventEmitterExt<any>();\r\n  /** */\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  @Output() dragBox = new EventEmitterExt<{ mouse: MouseEvent, component: ModellerBoxComponent }>();\r\n\r\n  @Output() connector = new EventEmitterExt<ModellerConnectorModel>();\r\n\r\n  @Output() remove = new EventEmitterExt<ModellerBoxComponent>();\r\n  /** remove connector by id */\r\n  @Output() removeConnector = new EventEmitterExt<string>();\r\n\r\n  protected connectors?: RelationConnectorComponent[];\r\n\r\n  protected userModel?: { [key: string]: any } | any[];\r\n\r\n  protected dynamic?: boolean = false;\r\n\r\n  protected type: 'input' | 'button' = 'input';\r\n\r\n  @HostBinding('style.z-index') get zIndex() {\r\n    return this.index;\r\n  }\r\n\r\n  @HostBinding('style.transform') get transform() {\r\n    return this.world.add(this.translate).add(this.offset).toCssTranslate('px');\r\n  }\r\n\r\n  @ViewChild('containerRef', { read: ViewContainerRef })\r\n  containerRef!: ViewContainerRef;\r\n\r\n  protected components: ComponentRef<any>[] = [];\r\n\r\n  constructor(\r\n    protected ref: ElementRef<HTMLElement>,\r\n    public changes: ChangeDetectorRef,\r\n    protected modeller: ModellerService\r\n  ) { }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.model && this.containerRef || this.model && changes.containerRef) {\r\n      this.reload();\r\n    }\r\n    if (changes.inputModel && this.inputModel && this.model && this.containerRef) {\r\n      this.reload();\r\n    }\r\n    if (changes.options && this.containerRef) {\r\n      this.userModel = { ...this.options?.userModel, ...this.userModel };\r\n      this.reload();\r\n    }\r\n    if (changes.translate || changes.offset) {\r\n      this.components.forEach(com => com.instance.recalc())\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.reload();\r\n  }\r\n\r\n  allConnectors(): RelationConnectorComponent[] {\r\n    const connectors: RelationConnectorComponent[] = []\r\n    this.components.forEach(component => {\r\n      if (component.instance.left) {\r\n        connectors.push(component.instance.left);\r\n      }\r\n      if (component.instance.right) {\r\n        connectors.push(component.instance.right);\r\n      }\r\n    })\r\n\r\n    return connectors;\r\n  }\r\n\r\n  getBoxItemModel(): BoxItemModel {\r\n    const options: {[key: string]: any} = { };\r\n\r\n    this.components.forEach(component => Object.assign(options, component.instance.options));\r\n\r\n    options.userModel = this.userModel;\r\n\r\n    return {\r\n      id: this.id as string,\r\n      subId: this.subId,\r\n      options: {\r\n        ...options,\r\n        position: this.translate,\r\n      }\r\n    }\r\n  }\r\n\r\n  setConnectors(connectors: RelationConnectorComponent[]) {\r\n    this.connectors = connectors;\r\n    const arr = Array.from(this.connectors);\r\n    this.components.forEach(component => {\r\n      const id = component.instance.getFullId();\r\n\r\n      component.instance.left = undefined;\r\n      component.instance.right = undefined;\r\n\r\n      arr.filter(conn => conn.connector?.left === id || conn.connector?.right === id).forEach(conn => {\r\n        if (conn.connector?.left === id) {\r\n          component.instance.setConnector('left', conn || undefined);\r\n        }\r\n        if (conn.connector?.right === id) {\r\n          component.instance.setConnector('right', conn || undefined);\r\n        }\r\n      });\r\n    })\r\n  }\r\n\r\n  protected clear() {\r\n    this.components.forEach(component => {\r\n      component.instance.connector.clearSubscriptions();\r\n      component.instance.remove.clearSubscriptions();\r\n      component.instance.changed.clearSubscriptions();\r\n      component.instance.optionsChanged.clearSubscriptions();\r\n      component.destroy();\r\n    })\r\n\r\n    this.components = [];\r\n  }\r\n\r\n  protected toDynamic() {\r\n    this.dynamic = true;\r\n  }\r\n\r\n  protected transformUserModel() {\r\n    if (Array.isArray(this.userModel)) {\r\n      const first = this.userModel[0];\r\n\r\n      const obj: { [key: string]: any } = {};\r\n\r\n      const firstKeys = keys(first);\r\n\r\n      firstKeys.forEach(key => obj[key] = []);\r\n\r\n      this.userModel.forEach(item => {\r\n        firstKeys.forEach(key => obj[key].push(item[key]));\r\n      })\r\n      return obj;\r\n    }\r\n    return this.userModel;\r\n  }\r\n\r\n  protected reload() {\r\n    this.clear();\r\n\r\n    this.userModel = this.userModel || this.options?.userModel;\r\n    let userModel = this.transformUserModel();\r\n\r\n    (this.model?.type === 'in-out' || !this.inputModel ? this.model?.components || [] :\r\n      keys({ ...this.inputModel, ...userModel })\r\n        .map(key => {\r\n          return {\r\n            type: this.modeller.getConnector(),\r\n            id: key,\r\n            value: this.model?.type === 'input' ? this.inputModel?.[key] : '',\r\n            removable: !!(userModel || {})?.[key]\r\n          };\r\n        }) as ComponentData[]).forEach(\r\n          com => {\r\n            const component = this.containerRef.createComponent(\r\n              com.type,\r\n              {\r\n                injector: this.containerRef.injector,\r\n              }\r\n            )\r\n\r\n            component.instance.connector.subscribe((connector: any) => {\r\n              this.connector.emit(connector)\r\n            })\r\n\r\n            component.instance.optionsChanged.subscribe(() => {\r\n              this.optionsChanged.emit()\r\n            })\r\n\r\n            component.instance.changed.subscribe(async () => {\r\n              if (this.model?.type === 'output') {\r\n                const values: { [key: string]: any } = {}\r\n                this.components.forEach(component => values[component.instance.id] = component.instance.value);\r\n                if (!this.subId) {\r\n                  this.outputChanged.emit(values);\r\n                }\r\n              }\r\n            })\r\n\r\n            component.setInput('parent', this);\r\n\r\n            component.setInput('id', com.id);\r\n            component.setInput('subId', this.subId);\r\n            component.setInput('inputOutputComponent', com?.inputOutputComponent);\r\n            component.setInput('type', com.connectorType || this.model?.type || 'in-out');\r\n            component.setInput('removable', com.removable);\r\n            component.setInput('options', this.options);\r\n            component.setInput('translations', this.model?.translations);\r\n\r\n            this.setRemove(component, com);\r\n\r\n            if ('input' === this.model?.type) {\r\n              component.setInput('value', com.value)\r\n            }\r\n            // required to start triggering hooks without that is not trigger ngOnChanges/ngOnInit/ngAfterViewInit\r\n            component.changeDetectorRef.detectChanges();\r\n\r\n            this.components.push(component);\r\n          }\r\n        )\r\n  }\r\n\r\n  protected setRemove(component: ComponentRef<any>, com: ComponentData) {\r\n    if (com.removable) {\r\n      component.instance.remove.subscribe((id: string) => {\r\n        if (this.userModel && !Array.isArray(this.userModel)) {\r\n          delete this.userModel[id as any];\r\n        };\r\n        this.removeConnector.emit(`${this.id}:${this.subId}:${id}`);\r\n        this.reload();\r\n        this.options = { ...this.options, userModel: this.userModel };\r\n        this.optionsChanged.emit();\r\n        this?.parent?.setConnectors(this.restoreConnectors);\r\n      })\r\n    }\r\n  }\r\n\r\n  protected restoreConnectors() {\r\n    if (this && this.connectors) {\r\n      this.setConnectors(this.connectors)\r\n    }\r\n  }\r\n\r\n  protected add(name?: string) {\r\n    if (!name) {\r\n      if (!this.userModel) {\r\n        name = (keys(this.userModel || {}).length + 1).toString();\r\n      } else if (!Array.isArray(this.userModel)) {\r\n        let start: number = 0;\r\n        do {\r\n          start ++;\r\n          name = start.toString() as string;\r\n        } while((this.userModel || {})?.[start] === name)\r\n      }\r\n    }\r\n    if (name === '' || keys({ ...this.inputModel, ...this.userModel }).find(key => key === name)) {\r\n      return;\r\n    }\r\n\r\n    this.userModel = { ...this.userModel, [name as string]: name };\r\n    this.reload();\r\n    this.restoreConnectors();\r\n    this.options = { ...this.options, userModel: this.userModel};\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  item(parentId: string, subId: string, id: string): ComponentRef<any> | undefined {\r\n    return this.components.find(item => this.id === parentId && item.instance.subId === subId && item.instance.id === id);\r\n  }\r\n\r\n  recalc() {\r\n    this.components.forEach(com => com.instance.recalc())\r\n  }\r\n}\r\n","<div\r\n  class=\"header\"\r\n  (mousedown)=\"dragBox.emit({ mouse: $event, component: this })\"\r\n>\r\n  {{ model?.translations?.[model?.title || ''] || model?.title }}\r\n  @if (model?.type === 'in-out') {\r\n    <button oblButton [icon]=\"'cancel'\" (click)=\"remove.emit(this)\"></button>\r\n  }\r\n</div>\r\n\r\n<div>\r\n  <ng-container #containerRef></ng-container>\r\n</div>\r\n\r\n@if (model?.type === 'output' || dynamic) {\r\n  <div class=\"output\">\r\n    @if (type === 'input') {\r\n    <obl-input-wrapper [label]=\"modeller.getTranslation('Add new field')\">\r\n      <input oblInput #newName type=\"text\"/>\r\n      <button oblButton [icon]=\"'add'\" (click)=\"add(newName.value); newName.value = ''\" required suffix></button>\r\n    </obl-input-wrapper>\r\n  } @else {\r\n    <button oblButton [icon]=\"'add'\" (click)=\"add()\">{{ modeller.getTranslation('Add new input') }}</button>\r\n  }\r\n  </div>\r\n}\r\n","import { Component, ComponentRef, ElementRef, Input, Output, SimpleChanges, Type, ViewChild, ViewContainerRef, ChangeDetectorRef } from '@angular/core';\r\nimport { Point2D } from '@obliczeniowo/elementary/classes';\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { ModellerConnectorModel } from '../../models/modeller-connector.model';\r\nimport { RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\r\nimport { BoxItemType } from '../../public-api';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-connector-item',\r\n    templateUrl: './connector-item.component.html',\r\n    styleUrls: ['./connector-item.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ConnectorItemComponent {\r\n  /** */\r\n  @Input() left?: RelationConnectorComponent;\r\n  /** */\r\n  @Input() right?: RelationConnectorComponent;\r\n  /** */\r\n  @Input() parent?: ModellerBoxComponent;\r\n  /** Unique per box type registration */\r\n  @Input() id?: string;\r\n  /** Globally unique id as meany the same type boxes can exists */\r\n  @Input() subId?: string;\r\n  /** */\r\n  @Input() inputOutputComponent?: Type<any>;\r\n  /** */\r\n  @Input() type: BoxItemType = 'in-out';\r\n  /** reserved only for input/output */\r\n  @Input() value: any;\r\n  /** if you can remove item */\r\n  @Input() removable?: boolean;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [id: string]: any };\r\n\r\n  @Output() connector = new EventEmitterExt<ModellerConnectorModel>();\r\n  /** emit id to remove item */\r\n  @Output() remove = new EventEmitterExt<string>();\r\n\r\n  @Output() changed = new EventEmitterExt<any>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  protected component?: ComponentRef<any>;\r\n\r\n  @ViewChild('containerRef', { read: ViewContainerRef })\r\n  containerRef!: ViewContainerRef;\r\n\r\n  getFullId(): string {\r\n    return `${this.parent?.id}:${this.subId}:${this.id}`;\r\n  }\r\n\r\n  constructor(protected ref: ElementRef<HTMLElement>, protected changes: ChangeDetectorRef) {\r\n  }\r\n\r\n  setConnector(side: 'left' | 'right', connector?: RelationConnectorComponent) {\r\n    const set = (component: ComponentRef<any>) => {\r\n      if (fullId.includes('get-request')) {\r\n        component.instance.get().then();\r\n      } else {\r\n        component.setInput('toTransform', this.value);\r\n      }\r\n      component.changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    if (this[side]) {\r\n      this[side]?.input.clearSubscriptions();\r\n    }\r\n    this[side] = connector;\r\n    const fullId = this.getFullId();\r\n    if (side === 'right') {\r\n      this.right?.input.subscribe((value) => {\r\n        this.value = value?.data;\r\n        if (value) {\r\n          this.changed.emit(this.value);\r\n        }\r\n        if (value?.stack.includes(fullId)) {\r\n          throw new Error('Endless loop')\r\n        }\r\n        if (this.component) {\r\n          set(this.component);\r\n        } else {\r\n          this.left?.input.next({ stack: [...(value?.stack || []), fullId], data: this.value });\r\n        }\r\n\r\n        this.changes.detectChanges();\r\n      })\r\n    } else {\r\n      if (this.component) {\r\n        set(this.component);\r\n\r\n        this.left?.input.next({ stack: [...(this.right?.input.getValue()?.stack || []), fullId], data: this.component.instance.value });\r\n      } else {\r\n        this.left?.input.next({ stack: [...(this.right?.input.getValue()?.stack || []), fullId], data: this.value });\r\n        this.changed.emit(this.value);\r\n      }\r\n    }\r\n    this.recalc();\r\n  }\r\n\r\n  clicked(side: 'left' | 'right', connPoint: HTMLDivElement) {\r\n    if (this.parent?.parent?.removeEmptyConnector(this.getFullId(), side === 'left' ? 'right' : 'left')) {\r\n      setTimeout(() => this.clicked(side, connPoint));\r\n    }\r\n\r\n    if (this[side === 'left' ? 'right' : 'left']) {\r\n      return;\r\n    }\r\n\r\n    const position = this.getPos(connPoint);\r\n\r\n    this.connector.emit({\r\n      [side === 'left' ? 'right' : 'left']: this.getFullId(),\r\n      [side === 'left' ? 'end' : 'start']: position\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.inputOutputComponent && this.containerRef || this.inputOutputComponent && changes.containerRef) {\r\n      this.reload();\r\n    }\r\n    if (changes.options && changes.containerRef) {\r\n      this.reload();\r\n    }\r\n    if (changes.value) {\r\n      this.changed.emit(this.value);\r\n      if (this.component) {\r\n        this.component.setInput('toTransform', this.value);\r\n        this.component.changeDetectorRef.detectChanges();\r\n      } else {\r\n        this.left?.input.next({ stack: [...(this.right?.input.getValue()?.stack || []), this.getFullId()], data: this.value });\r\n      }\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.reload();\r\n  }\r\n\r\n  getPos(el: HTMLDivElement): Point2D {\r\n    let parent: HTMLElement | null = el;\r\n    let position = new Point2D(el.offsetLeft, el.offsetTop);\r\n\r\n    do {\r\n      parent = parent.parentElement;\r\n\r\n      if (parent) {\r\n        position = position.add(new Point2D(parent.offsetLeft, parent.offsetTop));\r\n      }\r\n      if (parent?.parentElement?.nodeName === 'OBL-MODELLER-SPACE') {\r\n        break;\r\n      }\r\n    } while (parent);\r\n\r\n    return position.add(this.parent?.translate || new Point2D()).add(this.parent?.offset || new Point2D()).add(new Point2D(5, -18));\r\n  }\r\n\r\n  recalc() {\r\n    if (this.left) {\r\n      const left = this.ref.nativeElement.querySelector('div.output-connector') as HTMLDivElement;\r\n      if (this.left.connector) {\r\n        (this.left.connector as any).start = this.getPos(left);\r\n      }\r\n    }\r\n\r\n    if (this.right) {\r\n      const right = this.ref.nativeElement.querySelector('div.input-connector') as HTMLDivElement;\r\n      if (this.right.connector) {\r\n        (this.right.connector as any).end = this.getPos(right);\r\n      }\r\n    }\r\n  }\r\n\r\n  protected transformed = (value: any) => {\r\n    this.left?.input.next({ stack: [...(value?.stack || []), this.getFullId], data: value });\r\n    this.options = this.component?.instance.options;\r\n    if (!value) {\r\n      this.value = undefined;\r\n      this.changes.detectChanges();\r\n    }\r\n  }\r\n\r\n  protected reload() {\r\n    const { component, inputOutputComponent } = this;\r\n    if (component) {\r\n      component.instance.transformed.clearSubscriptions();\r\n      component.instance.optionsChanged.clearSubscriptions();\r\n      component.instance.changed.clearSubscriptions();\r\n      component.destroy();\r\n    }\r\n    if (inputOutputComponent) {\r\n      this.component = this.containerRef.createComponent(\r\n        inputOutputComponent,\r\n        {\r\n          injector: this.containerRef.injector,\r\n        }\r\n      )\r\n\r\n      this.component.instance.transformed.subscribe(this.transformed);\r\n      this.component.instance.optionsChanged.subscribe(() => this.optionsChanged.emit());\r\n      this.component.setInput('toTransform', this.value);\r\n      this.component.setInput('options', this.options);\r\n      this.component.setInput('translations', this.translations);\r\n\r\n      this.component.changeDetectorRef.detectChanges();\r\n    }\r\n  }\r\n}\r\n","@if (['in-out', 'output'].includes(type)) {\r\n  <div\r\n    class=\"input input-connector\"\r\n    [class.connected]=\"right\"\r\n    #input\r\n    (click)=\"clicked('left', input)\"\r\n  >\r\n    &gt;\r\n  </div>\r\n}\r\n<div class=\"container\">\r\n  @if (!inputOutputComponent) {\r\n    <div>{{ id }}: {{ value | json }}</div>\r\n  }\r\n  <ng-container #containerRef></ng-container>\r\n</div>\r\n@if (['in-out', 'input'].includes(type)) {\r\n  <div\r\n    class=\"output output-connector\"\r\n    [class.connected]=\"left\"\r\n    #output\r\n    (click)=\"clicked('right', output)\"\r\n  >\r\n    &lt;\r\n  </div>\r\n}\r\n\r\n@if (removable) {\r\n  <button\r\n    oblButton\r\n    [icon]=\"'cancel'\"\r\n    (click)=\"remove.emit(id)\"\r\n  ></button>\r\n}","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { DropdownSelectItem } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-integer-filter-connector',\r\n    templateUrl: './integer-filter-connector.component.html',\r\n    styleUrls: ['./integer-filter-connector.component.scss'],\r\n    standalone: false\r\n})\r\nexport class IntegerFilterConnectorComponent implements OblConverter {\r\n  @Input() toTransform?: number | number[] | undefined;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [id: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<number | number[] | undefined>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  value: number | number[] | undefined;\r\n\r\n  items: DropdownSelectItem<string>[] = [\r\n    {\r\n      id: 'to-floor',\r\n      text: 'To floor',\r\n    },\r\n    {\r\n      id: 'to-ceil',\r\n      text: 'To ceil',\r\n    },\r\n  ]\r\n\r\n  selected = this.items[0].id;\r\n\r\n  changed(item: DropdownSelectItem<any>) {\r\n    this.selected = item.id;\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  transform() {\r\n    if (this.toTransform) {\r\n      this.options = { ...this.options, selected: this.selected };\r\n      const transform = (value: number) => {\r\n        switch (this.selected) {\r\n          case 'to-floor': {\r\n            return Math.floor(value);\r\n          }\r\n          case 'to-ceil': {\r\n            return Math.ceil(value);\r\n          }\r\n        }\r\n        return undefined;\r\n      }\r\n      if (typeof this.toTransform === 'number') {\r\n        this.value = transform(this.toTransform) || 0;\r\n      } else if (this.toTransform instanceof Array) {\r\n        this.value = this.toTransform.map((value => transform(value) || 0));\r\n      }\r\n    } else {\r\n      this.value = undefined;\r\n    }\r\n    this.transformed.emit(this.value);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.items.forEach((item, index) => {\r\n      this.items[index].text = this.translations?.[item.text] || item.text;\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.toTransform) {\r\n      this.transform();\r\n    }\r\n    if (changes.options) {\r\n      this.selected = this?.options?.selected ?? this.selected;\r\n      this.transform();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.transformed.unsubscribe();\r\n  }\r\n}\r\n","<obl-dropdown-select\r\n  [items]=\"items\"\r\n  (changed)=\"changed($event)\"\r\n  [select]=\"selected\"\r\n  [label]=\"translations?.['Operation type'] || 'Operation type'\"\r\n></obl-dropdown-select>\r\n","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { ElementaryMath } from '@obliczeniowo/elementary/math';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-convert-to-histogram',\r\n    templateUrl: './convert-to-histogram.component.html',\r\n    styleUrls: ['./convert-to-histogram.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ConvertToHistogramComponent implements OblConverter {\r\n  @Input() toTransform?: number[] | undefined;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<number[] | undefined>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  value?: number[];\r\n\r\n  protected ranges: number = 5;\r\n\r\n  transform() {\r\n    if (this.toTransform && this.toTransform instanceof Array) {\r\n      const minMax = ElementaryMath.getMinMax(this.toTransform);\r\n      const dm = (minMax.max - minMax.min) / this.ranges;\r\n\r\n      if (dm === 0) {\r\n        this.value = [this.toTransform.length];\r\n        return;\r\n      }\r\n\r\n      const value = new Array(this.ranges).fill(0);\r\n\r\n      this.toTransform.forEach(item => value[Math.min(Math.floor((item - minMax.min) / dm), this.ranges - 1)] += 1);\r\n\r\n      this.value = value;\r\n    } else {\r\n      this.value = undefined;\r\n    }\r\n    this.transformed.emit(this.value);\r\n  }\r\n\r\n  changed(event: any) {\r\n    this.ranges = +event.value;\r\n    this.options = { ...this.options, ranges: this.ranges }\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.toTransform) {\r\n      this.transform();\r\n    }\r\n    if (changes.options) {\r\n      this.ranges = this?.options?.ranges || this.ranges;\r\n      this.transform();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.transformed.unsubscribe();\r\n  }\r\n}\r\n","<obl-input-wrapper [label]=\"translations?.Range || 'Range'\">\r\n  <input type=\"number\" oblInput [value]=\"ranges\" (change)=\"changed($event.target)\" min=\"2\" />\r\n</obl-input-wrapper>","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-range-filter',\r\n    templateUrl: './range-filter.component.html',\r\n    styleUrls: ['./range-filter.component.scss'],\r\n    standalone: false\r\n})\r\nexport class RangeFilterComponent implements OblConverter {\r\n  @Input() toTransform?: number[] | undefined;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<number[]>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  max: number = 10;\r\n\r\n  min: number = 0;\r\n\r\n  value: number[] | undefined;\r\n\r\n  updateOptions() {\r\n    this.options = { ...this.options, min: this.min, max: this.max };\r\n  }\r\n\r\n  setMin(event: any) {\r\n    this.min = +(event.target.value ?? this.min);\r\n    this.updateOptions();\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  setMax(event: any) {\r\n    this.max = +(event.target.value ?? this.max);\r\n    this.updateOptions();\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  transform() {\r\n    if (this.toTransform instanceof Array) {\r\n      this.value = this.toTransform.filter(value => value >= this.min && value <= this.max);\r\n    } else {\r\n      this.value = undefined;\r\n    }\r\n    this.transformed.emit(this.value);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.toTransform) {\r\n      this.transform();\r\n    }\r\n    if (changes.options) {\r\n      this.min = this.options?.min || this.min;\r\n      this.max = this.options?.max || this.max;\r\n      this.transform();\r\n    }\r\n  }\r\n}\r\n","<obl-input-wrapper [label]=\"translations?.['Min'] || 'Min'\" [step]=\"1\">\r\n  <input type=\"number\" oblInput [value]=\"min\" [max]=\"max\" step=\"any\" (change)=\"setMin($event)\" />\r\n</obl-input-wrapper>\r\n\r\n<obl-input-wrapper [label]=\"translations?.['Max'] || 'Max'\" [step]=\"1\">\r\n  <input type=\"number\" oblInput [value]=\"max\" [min]=\"min\" step=\"any\" (change)=\"setMax($event)\" />\r\n</obl-input-wrapper>","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { DropdownSelectItem } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { firstToUpper, allWordsFirstToUpper, toCamelCase } from '@obliczeniowo/elementary/utils';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-string-converter',\r\n    templateUrl: './string-converter.component.html',\r\n    styleUrls: ['./string-converter.component.scss'],\r\n    standalone: false\r\n})\r\nexport class StringConverterComponent implements OblConverter {\r\n  @Input() toTransform?: string;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<string | string[]>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  items: DropdownSelectItem<string>[] = [\r\n    {\r\n      id: 'to-upper-case',\r\n      text: 'To upper case',\r\n    },\r\n    {\r\n      id: 'to-lower-case',\r\n      text: 'To lower case',\r\n    },\r\n    {\r\n      id: 'first-to-upper-case',\r\n      text: 'First letter to upper case'\r\n    },\r\n    {\r\n      id: 'word-first-to-upper-case',\r\n      text: 'Word first letter to upper case'\r\n    },\r\n    {\r\n      id: 'camel-case',\r\n      text: 'To camel case'\r\n    },\r\n    {\r\n      id: 'split',\r\n      text: 'Split',\r\n    },\r\n    {\r\n      id: 'JSON-parse',\r\n      text: 'JSON parse',\r\n    },\r\n    {\r\n      id: 'substring',\r\n      text: 'Substring',\r\n    },\r\n  ]\r\n\r\n  selected = this.items[0].id;\r\n\r\n  lastError: any;\r\n\r\n  value: string | string[] | undefined;\r\n\r\n  protected split: string = ' ';\r\n  protected start: number = 0;\r\n  protected end: number = 5;\r\n\r\n  transform() {\r\n    if (this.toTransform && typeof this.toTransform === 'string') {\r\n      switch (this.selected) {\r\n        case 'to-upper-case': {\r\n          this.value = this.toTransform.toUpperCase();\r\n        }\r\n          break;\r\n        case 'to-lower-case': {\r\n          this.value = this.toTransform.toLowerCase();\r\n        }\r\n          break;\r\n        case 'first-to-upper-case': {\r\n          this.value = firstToUpper(this.toTransform);\r\n        }\r\n          break;\r\n        case 'word-first-to-upper-case': {\r\n          this.value = allWordsFirstToUpper(this.toTransform);\r\n        }\r\n          break;\r\n        case 'camel-case': {\r\n          this.value = toCamelCase(this.toTransform);\r\n        }\r\n          break;\r\n        case 'split': {\r\n          this.value = this.toTransform.split(this.split);\r\n        }\r\n          break;\r\n        case 'JSON-parse': {\r\n          try {\r\n            this.value = JSON.parse(this.toTransform);\r\n          } catch (error) {\r\n            this.value = undefined;\r\n            this.lastError = new Error('String json parse failure');\r\n          }\r\n        }\r\n          break;\r\n        case 'substring': {\r\n          this.value = this.toTransform.substring(this.start, this.end);\r\n        }\r\n          break;\r\n      }\r\n      this.transformed.emit(this.value);\r\n    } else {\r\n      this.value = undefined;\r\n      this.transformed.emit(this.value);\r\n      this.lastError = new Error('Value is undefined or is not a string');\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.items.forEach((item, index) => {\r\n      this.items[index].text = this.translations?.[item.text] || item.text;\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.toTransform) {\r\n      this.transform();\r\n    }\r\n    if (changes.options) {\r\n      this.selected = this.options?.selected || this.selected;\r\n      this.split = this.options?.split || this.split;\r\n      this.start = this.options?.start || this.start;\r\n      this.end = this.options?.end || this.end;\r\n      this.transform();\r\n    }\r\n  }\r\n\r\n  changed(item: DropdownSelectItem<any>) {\r\n    this.selected = item.id;\r\n    this.options = { ...this.options, selected: this.selected };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  splitChanged(event: any) {\r\n    this.split = event.target.value;\r\n    this.options = { ...this.options, split: this.split };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  startChanged(event: any) {\r\n    this.start = event.target.value;\r\n    this.options = { ...this.options, start: this.start };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  endChanged(event: any) {\r\n    this.end = event.target.value;;\r\n    this.options = { ...this.options, end: this.end };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.transformed.unsubscribe();\r\n  }\r\n}\r\n","<obl-dropdown-select\r\n  [items]=\"items\"\r\n  [select]=\"selected\"\r\n  (changed)=\"changed($event)\"\r\n  [label]=\"translations?.['Operation type'] || 'Operation type'\"\r\n></obl-dropdown-select>\r\n\r\n@if (selected === 'split') {\r\n  <obl-input-wrapper [label]=\"translations?.['Split by'] || 'Split by'\">\r\n    <input type=\"text\" [value]=\"split\" (change)=\"splitChanged($event)\" oblInput />\r\n  </obl-input-wrapper>\r\n}\r\n\r\n@if (selected === 'substring') {\r\n  <obl-input-wrapper [label]=\"translations?.Start || 'Start'\" [step]=\"1\">\r\n    <input\r\n      type=\"number\"\r\n      [value]=\"start\"\r\n      (change)=\"startChanged($event)\"\r\n      oblInput\r\n    />\r\n  </obl-input-wrapper>\r\n\r\n  <obl-input-wrapper [label]=\"translations?.End || 'End'\" [step]=\"1\">\r\n    <input type=\"number\" [value]=\"end\" (change)=\"endChanged($event)\" oblInput />\r\n  </obl-input-wrapper>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { ComponentData } from '../../models/component-data';\r\n\r\n@Component({\r\n    selector: 'obl-split-box',\r\n    templateUrl: '../modeller-box/modeller-box.component.html',\r\n    styleUrls: ['../modeller-box/modeller-box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SplitBoxComponent extends ModellerBoxComponent {\r\n\r\n  protected reload() {\r\n    this.clear();\r\n\r\n    const prepare: { [key: string]: any } | { [key: string]: any }[]  = { object: 0, ...this.transformUserModel() };\r\n\r\n    (keys(prepare)\r\n      .map((key, index) => {\r\n        return {\r\n          type: this.modeller.getConnector(),\r\n          id: key,\r\n          value: prepare[key],\r\n          connectorType: index ? 'input' : 'output'\r\n        };\r\n      }) as ComponentData[]).forEach(\r\n        (com, index) => {\r\n          const component = this.containerRef.createComponent(\r\n            com.type,\r\n            {\r\n              injector: this.containerRef.injector,\r\n            }\r\n          )\r\n\r\n          component.instance.connector.subscribe((connector: any) => {\r\n            this.connector.emit(connector)\r\n          })\r\n\r\n          if (index === 0) {\r\n            component.instance.changed.subscribe((value: any) => {\r\n              if (typeof value === 'string' || typeof value === 'number'\r\n                || JSON.stringify(this.userModel) === JSON.stringify(value)) {\r\n                return;\r\n              }\r\n\r\n              this.userModel = value;\r\n              this.reload();\r\n              setTimeout(() => this.setConnectors(this.connectors || []));\r\n            })\r\n          }\r\n\r\n          component.instance.changed.subscribe(() => {\r\n            if (this.model?.type === 'output') {\r\n              const values: { [key: string]: any } = {}\r\n              this.components.forEach(component => values[component.instance.id] = component.instance.value);\r\n              this.outputChanged.emit(values);\r\n            }\r\n          })\r\n\r\n          component.setInput('parent', this);\r\n\r\n          component.setInput('id', com.id);\r\n          component.setInput('subId', this.subId);\r\n          component.setInput('inputOutputComponent', com?.inputOutputComponent);\r\n          component.setInput('type', com.connectorType || this.model?.type || 'in-out');\r\n          component.setInput('removable', com.removable);\r\n          component.setInput('options', this.options);\r\n\r\n          if (index) {\r\n            component.setInput('value', com.value)\r\n          }\r\n\r\n          if (com.removable) {\r\n            component.instance.remove.subscribe((id: string) => {\r\n              if (this.userModel && !Array.isArray(this.userModel)) {\r\n                delete this.userModel[id as any];\r\n              };\r\n              this.removeConnector.emit(`${this.id}:${this.subId}:${id}`);\r\n              this.reload();\r\n              this.restoreConnectors();\r\n              this.options = { ...this.options, userModel: this.userModel};\r\n              this.optionsChanged.emit();\r\n            })\r\n          }\r\n\r\n          if ('input' === this.model?.type) {\r\n            component.setInput('value', com.value)\r\n          }\r\n          // required to start triggering hooks without that is not trigger ngOnChanges/ngOnInit/ngAfterViewInit\r\n          component.changeDetectorRef.detectChanges();\r\n\r\n          this.components.push(component);\r\n        }\r\n      )\r\n  }\r\n}\r\n","import { Component, Input, Output } from '@angular/core';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-value-input',\r\n    templateUrl: './value-input.component.html',\r\n    styleUrls: ['./value-input.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ValueInputComponent implements OblConverter {\r\n  @Input() id!: string;\r\n\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Input() toTransform?: number[] | number | undefined;\r\n\r\n  @Input() header = 'Value';\r\n\r\n  @Input() options?: { [en: string]: any };\r\n\r\n  @Output() transformed = new EventEmitterExt<number[] | number | undefined>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  transform() {\r\n    this.transformed.emit(this.toTransform);\r\n  }\r\n}\r\n","{{ translations?.[header || ''] || header  }} {{ toTransform | json }}\r\n","import { Component } from '@angular/core';\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\r\n\r\n@Component({\r\n    selector: 'obl-math-box',\r\n    templateUrl: '../modeller-box/modeller-box.component.html',\r\n    styleUrls: ['../modeller-box/modeller-box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class MathBoxComponent extends ModellerBoxComponent {\r\n  values?: { left?: number, right?: number };\r\n\r\n  setConnectors(connectors: RelationConnectorComponent[]) {\r\n    super.setConnectors(connectors);\r\n    this.components?.[2].instance.component.setInput('toTransform', this.values);\r\n  }\r\n\r\n  protected reload() {\r\n    super.reload();\r\n\r\n    if (this.components.length === 3) {\r\n      this.components[0].instance.component.setInput('header', 'Left:');\r\n      this.components[1].instance.component.setInput('header', 'Right:');\r\n\r\n      this.components.forEach(component =>  component.setInput('translations', this.model?.translations));\r\n\r\n      this.components[0].instance.changed.subscribe((value: any) => {\r\n        this.values = { ...this.values, left: value };\r\n        this.components[2].instance.component.setInput('toTransform', this.values);\r\n        this.components[2].changeDetectorRef.detectChanges();\r\n      })\r\n      this.components[1].instance.changed.subscribe((value: any) => {\r\n        this.values = { ...this.values, right: value };\r\n        this.components[2].instance.component.setInput('toTransform', this.values);\r\n        this.components[2].changeDetectorRef.detectChanges();\r\n      })\r\n    }\r\n  }\r\n}\r\n","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { DropdownSelectItem } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-math-operator',\r\n    templateUrl: './math-operator.component.html',\r\n    styleUrls: ['./math-operator.component.scss'],\r\n    standalone: false\r\n})\r\nexport class MathOperatorComponent implements OblConverter {\r\n  @Input() toTransform?: { left?: number | number[], right?: number | number[] };\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<number | number[]>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  items: DropdownSelectItem<string>[] = [\r\n    {\r\n      id: 'add',\r\n      text: 'Add',\r\n    },\r\n    {\r\n      id: 'subtract',\r\n      text: 'Subtract',\r\n    },\r\n    {\r\n      id: 'multiply',\r\n      text: 'Multiply'\r\n    },\r\n    {\r\n      id: 'divide',\r\n      text: 'Divide'\r\n    },\r\n    {\r\n      id: 'power',\r\n      text: 'Power'\r\n    },\r\n    {\r\n      id: 'modulo',\r\n      text: 'Modulo',\r\n    }\r\n  ]\r\n\r\n  selected = this.items[0].id;\r\n\r\n  value: number | number[] | undefined;\r\n\r\n  lastError: any;\r\n\r\n  transform() {\r\n    const { left, right } = this.toTransform || {};\r\n\r\n    const operation = (\r\n      left: number | number[],\r\n      right: number | number[],\r\n      cb: (left: number, right: number) => number\r\n    ) => {\r\n\r\n      const leftNumeric = typeof left === 'number';\r\n      const rightNumeric = typeof right === 'number';\r\n\r\n      if (leftNumeric && rightNumeric) {\r\n        return cb(left, right);\r\n      } else if (!leftNumeric && !rightNumeric) {\r\n        const result: number[] = [];\r\n        (left as Array<number>).forEach((n, index) => {\r\n          result.push(cb(n, (right as number[])[index]));\r\n        });\r\n        return result;\r\n\r\n      } else if (rightNumeric) {\r\n        const result: number[] = [];\r\n        (left as Array<number>).forEach(n => {\r\n          result.push(cb(n, right as number));\r\n        });\r\n        return result;\r\n      } else {\r\n        const result: number[] = [];\r\n        (right as Array<number>).forEach(n => {\r\n          result.push(cb(left as number, n));\r\n        });\r\n        return result;\r\n      }\r\n    }\r\n\r\n    const typed = (value: any) => typeof value === 'number' || Array.isArray(value);\r\n\r\n    if (left !== undefined && right !== undefined && typed(left) && typed(right)) {\r\n      switch (this.selected) {\r\n        case 'add': {\r\n          this.value = operation(left, right, (left: number, right: number) => left + right)\r\n        }\r\n          break;\r\n        case 'subtract': {\r\n          this.value = operation(left, right, (left: number, right: number) => left - right)\r\n        }\r\n          break;\r\n        case 'multiply': {\r\n          this.value = operation(left, right, (left: number, right: number) => left * right)\r\n        }\r\n          break;\r\n        case 'divide': {\r\n          this.value = operation(left, right, (left: number, right: number) => left / right)\r\n        }\r\n          break;\r\n        case 'power': {\r\n          this.value = operation(left, right, (left: number, right: number) => Math.pow(left, right));\r\n        }\r\n          break;\r\n        case 'modulo': {\r\n          this.value = operation(left, right, (left: number, right: number) => left % right)\r\n        }\r\n      }\r\n      this.transformed.emit(this.value);\r\n    } else {\r\n      this.value = undefined;\r\n      this.transformed.emit(this.value);\r\n      this.lastError = new Error('Value is undefined or is not a number')\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.items.forEach((item, index) => {\r\n      this.items[index].text = this.translations?.[item.text] || item.text;\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.toTransform) {\r\n      this.transform();\r\n    }\r\n    if (changes.options) {\r\n      this.selected = this.options?.selected || this.selected;\r\n      this.transform();\r\n    }\r\n  }\r\n\r\n  changed(item: DropdownSelectItem<any>) {\r\n    this.selected = item.id;\r\n    this.options = { ...this.options, selected: this.selected };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n}\r\n","<obl-dropdown-select\r\n  [items]=\"items\"\r\n  [select]=\"selected\"\r\n  (changed)=\"changed($event)\"\r\n  [label]=\"translations?.['Operator type'] || 'Operator type'\"\r\n></obl-dropdown-select>\r\n","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { DropdownSelectItem } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-const-or-value',\r\n    templateUrl: './const-or-value.component.html',\r\n    styleUrls: ['./const-or-value.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ConstOrValueComponent implements OblConverter {\r\n  @Input() toTransform: number = Math.PI;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<string | number | number[]>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  items: DropdownSelectItem<string>[] = [\r\n    {\r\n      id: 'pi',\r\n      text: 'Pi π',\r\n    },\r\n    {\r\n      id: 'e',\r\n      text: 'e',\r\n    },\r\n    {\r\n      id: 'gold',\r\n      text: 'Gold'\r\n    },\r\n    {\r\n      id: 'earth-gravity',\r\n      text: 'Earth gravity'\r\n    },\r\n    {\r\n      id: 'gravity-const',\r\n      text: 'Gravity const'\r\n    },\r\n    {\r\n      id: 'light-speed',\r\n      text: 'Light speed',\r\n    },\r\n    {\r\n      id: 'variable',\r\n      text: 'Numeric variable'\r\n    },\r\n    {\r\n      id: 'planck-constant',\r\n      text: 'Planck constant'\r\n    },\r\n    {\r\n      id: 'apery-const',\r\n      text: 'Apéry const'\r\n    },\r\n    {\r\n      id: 'newman-const',\r\n      text: 'Newman const'\r\n    },\r\n    {\r\n      id: 'string',\r\n      text: 'Text value'\r\n    },\r\n    {\r\n      id: 'json-value',\r\n      text: 'JSON variable'\r\n    }\r\n  ]\r\n\r\n  selected = this.items[0].id;\r\n\r\n  value: number | string | any | undefined;\r\n\r\n  lastError: any;\r\n\r\n  values: { [key: string]: number | string } = {\r\n    pi: Math.PI,\r\n    e: Math.E,\r\n    gold: (Math.sqrt(5) - 1) / 2,\r\n    'earth-gravity': 9.8065,\r\n    'gravity-const': 6.67259e-11,\r\n    'light-speed': 299792458,\r\n    'planck-constant': 6.62807015e-24,\r\n    'apery-const': 1.2020569031595942853997381,\r\n    'newman-const': 2.7e-9,\r\n    variable: 0,\r\n    string: '',\r\n    'json-value': '{}'\r\n  }\r\n\r\n  transform() {\r\n    try {\r\n      this.value = this.selected === 'json-value' ? JSON.parse(this.values?.[this.selected] as string || '{}') : this.values[this.selected];\r\n      this.transformed.emit(this.value);\r\n    } catch (e) {\r\n      this.transformed.emit(undefined);\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.items.forEach((item, index) => {\r\n      this.items[index].text = this.translations?.[item.text] || item.text;\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.options) {\r\n      this.selected = this.options?.selected || this.selected;\r\n      this.values['variable'] = this.options?.value || 0;\r\n      this.values['string'] = this.options?.string || '';\r\n      this.values['json-value'] = this.options?.['json-value'] || '{}';\r\n      this.transform();\r\n    }\r\n  }\r\n\r\n  changed(item: DropdownSelectItem<any>) {\r\n    this.selected = item.id;\r\n    this.options = { ...this.options, selected: item.id };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  variableChanged(variable: any) {\r\n    this.values['variable'] = variable.target.valueAsNumber;\r\n    this.options = { ...this.options, value: this.values['variable'] };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  stringChanged(variable: any) {\r\n    this.values['string'] = variable.target.value;\r\n    this.options = { ...this.options, string: this.values['string'] };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  jsonChanged(variable: any) {\r\n    this.values['json-value'] = variable.target.value;\r\n    this.options = { ...this.options, 'json-value': this.values['json-value'] };\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n}\r\n","<obl-dropdown-select\r\n  [items]=\"items\"\r\n  [select]=\"selected\"\r\n  (changed)=\"changed($event)\"\r\n  [label]=\"translations?.['Constant / variable:'] || 'Constant / variable:'\"\r\n></obl-dropdown-select>\r\n\r\n@if (selected === 'variable') {\r\n  <obl-input-wrapper\r\n    [label]=\"translations?.['Value:'] || 'Value:'\"\r\n    [step]=\"1\"\r\n  >\r\n    <input\r\n      type=\"number\"\r\n      [value]=\"values['variable']\"\r\n      (change)=\"variableChanged($event)\"\r\n      (keyup)=\"variableChanged($event)\"\r\n      oblInput\r\n    />\r\n  </obl-input-wrapper>\r\n}\r\n\r\n@if (selected === 'string') {\r\n  <obl-input-wrapper\r\n    [label]=\"translations?.['Text value:'] || 'Text value:'\"\r\n    [step]=\"1\"\r\n  >\r\n    <input\r\n      [value]=\"values['string']\"\r\n      (change)=\"stringChanged($event)\"\r\n      (keyup)=\"stringChanged($event)\"\r\n      oblInput\r\n    />\r\n  </obl-input-wrapper>\r\n}\r\n\r\n@if (selected === 'json-value') {\r\n  <obl-textarea-wrapper\r\n    [label]=\"translations?.['JSON value:'] || 'JSON value:'\"\r\n  >\r\n    <textarea\r\n      [value]=\"values['json-value']\"\r\n      (change)=\"jsonChanged($event)\"\r\n      (keyup)=\"jsonChanged($event)\"\r\n      oblTextArea\r\n    ></textarea>\r\n  </obl-textarea-wrapper>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { ComponentData } from '../../models/component-data';\r\n\r\n@Component({\r\n    selector: 'obl-join-array-to-object-box',\r\n    templateUrl: '../modeller-box/modeller-box.component.html',\r\n    styleUrls: ['../modeller-box/modeller-box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class JoinArrayToObjectBoxComponent extends ModellerBoxComponent {\r\n  protected dynamic = true;\r\n\r\n  protected reload() {\r\n    this.clear();\r\n\r\n    this.userModel = { ...this.options?.userModel, ...this.userModel };\r\n    let userModel = this.transformUserModel();\r\n\r\n    (keys({ ...(this.model?.components || {}), ...userModel })\r\n      .map((key, index) => {\r\n        return {\r\n          type: this.modeller.getConnector(),\r\n          id: !index ? this.model?.components[0].id : key,\r\n          value: this.model?.type === 'input' ? this.inputModel?.[key] : '',\r\n          removable: !!(userModel || {})?.[key]\r\n        };\r\n      }) as ComponentData[]).forEach(\r\n        (com, index) => {\r\n          const component = this.containerRef.createComponent(\r\n            com.type,\r\n            {\r\n              injector: this.containerRef.injector,\r\n            }\r\n          )\r\n\r\n          component.instance.connector.subscribe((connector: any) => {\r\n            this.connector.emit(connector)\r\n          })\r\n\r\n          component.instance.optionsChanged.subscribe(() => this.optionsChanged.emit())\r\n\r\n          component.setInput('parent', this);\r\n\r\n          component.setInput('id', com.id);\r\n          component.setInput('subId', this.subId);\r\n          component.setInput('inputOutputComponent', com?.inputOutputComponent);\r\n          component.setInput('type', index && 'output' || 'input');\r\n          component.setInput('removable', com.removable);\r\n          component.setInput('options', this.options);\r\n          component.setInput('translations', this.model?.translations);\r\n\r\n          this.setRemove(component, com);\r\n\r\n          if (com.removable) {\r\n            component.instance.optionsChanged.subscribe(() => {\r\n              this.optionsChanged.emit()\r\n            })\r\n\r\n            component.instance.changed.subscribe(() => {\r\n              const collect: { [key: string]: any[] } = {};\r\n              let length = 0;\r\n              this.components.forEach((com, index) => {\r\n                if (index) {\r\n                  collect[com.instance.id] = com.instance.value;\r\n                  length = Math.max(com.instance.value?.length, length);\r\n                }\r\n              })\r\n\r\n              const objects: { [key: string]: any }[] = [];\r\n\r\n              for(let i = 0; i < length; i++) {\r\n                const obj: { [key: string]: any } = {};\r\n                keys(collect).forEach(key => {\r\n                  obj[key] = collect[key][i];\r\n                })\r\n                objects.push(obj);\r\n              }\r\n\r\n              this.components[0].setInput('value', objects)\r\n            })\r\n          }\r\n\r\n          if ('input' === this.model?.type) {\r\n            component.setInput('value', com.value)\r\n          }\r\n          // required to start triggering hooks without that is not trigger ngOnChanges/ngOnInit/ngAfterViewInit\r\n          component.changeDetectorRef.detectChanges();\r\n\r\n          this.components.push(component);\r\n        }\r\n      )\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { ComponentData } from '../../models/component-data';\r\n\r\n@Component({\r\n    selector: 'obl-split-input-box',\r\n    templateUrl: '../modeller-box/modeller-box.component.html',\r\n    styleUrls: ['../modeller-box/modeller-box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SplitInputBoxComponent extends ModellerBoxComponent {\r\n  protected dynamic?: boolean = true;\r\n\r\n  protected reload() {\r\n    this.clear();\r\n\r\n    this.userModel = { ...this.options?.userModel, ...this.userModel };\r\n    let userModel = this.transformUserModel();\r\n\r\n    (keys({ ...(this.model?.components || {}), ...userModel })\r\n      .map((key, index) => {\r\n        return {\r\n          type: this.modeller.getConnector(),\r\n          id: !index ? this.model?.components[0].id : key,\r\n          value: this.model?.type === 'input' ? this.inputModel?.[key] : '',\r\n          removable: !!(userModel || {})?.[key]\r\n        };\r\n      }) as ComponentData[]).forEach(\r\n        (com, index) => {\r\n          const component = this.containerRef.createComponent(\r\n            com.type,\r\n            {\r\n              injector: this.containerRef.injector,\r\n            }\r\n          )\r\n\r\n          component.instance.connector.subscribe((connector: any) => {\r\n            this.connector.emit(connector)\r\n          })\r\n\r\n          component.instance.optionsChanged.subscribe(() => this.optionsChanged.emit())\r\n\r\n          component.setInput('parent', this);\r\n\r\n          component.setInput('id', com.id);\r\n          component.setInput('subId', this.subId);\r\n          component.setInput('inputOutputComponent', com?.inputOutputComponent);\r\n          component.setInput('type', index && 'input' || 'output');\r\n          component.setInput('removable', com.removable);\r\n          component.setInput('options', this.options);\r\n          component.setInput('translations', this.model?.translations);\r\n\r\n          this.setRemove(component, com);\r\n\r\n          if (com.removable) {\r\n            component.instance.optionsChanged.subscribe(() => {\r\n              this.optionsChanged.emit()\r\n            })\r\n          } else {\r\n            component.instance.changed.subscribe((value: any) => {\r\n              this.components.forEach((com, index) => {\r\n                if (index) {\r\n                  com.setInput('value', value)\r\n                }\r\n              })\r\n\r\n            })\r\n          }\r\n\r\n          if ('input' === this.model?.type) {\r\n            component.setInput('value', com.value)\r\n          }\r\n          // required to start triggering hooks without that is not trigger ngOnChanges/ngOnInit/ngAfterViewInit\r\n          component.changeDetectorRef.detectChanges();\r\n\r\n          this.components.push(component);\r\n        }\r\n      )\r\n  }\r\n}\r\n","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { OblConverter } from '../../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\nimport { DropdownSelectItem } from '@obliczeniowo/elementary/dropdown-select';\r\n\r\n@Component({\r\n    selector: 'obl-generate',\r\n    templateUrl: './generate.component.html',\r\n    styleUrls: ['./generate.component.scss'],\r\n    standalone: false\r\n})\r\nexport class GenerateComponent implements OblConverter {\r\n  @Input() toTransform?: number[] | undefined;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<number[] | undefined>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  items: DropdownSelectItem<string>[] = [\r\n    {\r\n      id: 'start-step-count',\r\n      text: 'Start, step and count',\r\n    },\r\n    {\r\n      id: 'start-end-count',\r\n      text: 'Start, end and count',\r\n    },\r\n  ];\r\n\r\n  selected = this.items[0].id;\r\n\r\n  value: number[] | undefined;\r\n\r\n  start: number = 0;\r\n  end: number = 1;\r\n  step: number = 1;\r\n  count: number = 2;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n    this.items.forEach((item, index) => {\r\n      this.items[index].text = this.translations?.[item.text] || item.text;\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.toTransform) {\r\n      this.transform();\r\n    }\r\n    if (changes.options) {\r\n      this.selected = this?.options?.selected ?? this.selected;\r\n      const convert = (v: any, def: any) => v !== undefined && +v || def;\r\n      this.start = convert(this?.options?.start, this.start);\r\n      this.end = convert(this?.options?.end, this.end);\r\n      this.step = convert(this?.options?.step, this.step)\r\n      this.count = convert(this?.options?.count, this.count);\r\n      this.transform();\r\n    }\r\n  }\r\n\r\n  changed(item: DropdownSelectItem<any>) {\r\n    this.selected = item.id;\r\n    this.options = { ...this.options, selected: this.selected };\r\n    setTimeout(() => this.optionsChanged.emit());\r\n    this.transform();\r\n  }\r\n\r\n  transform() {\r\n    const generate = (step: number) => {\r\n      this.value = [];\r\n      for (let i = 0; i < this.count; i++) {\r\n        this.value.push(i * step + this.start);\r\n      }\r\n    }\r\n    switch (this.selected) {\r\n      case 'start-step-count': {\r\n        generate(this.step);\r\n      }\r\n        break;\r\n      case 'start-end-count': {\r\n        const step = (this.end - this.start) / this.count;\r\n        if (step) {\r\n          generate(step);\r\n        }\r\n      }\r\n        break;\r\n    }\r\n    this.transformed.emit(this.value);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.transformed.unsubscribe();\r\n  }\r\n\r\n  set(field: string, ev: any) {\r\n    (this as any)[field] = ev.target.valueAsNumber;\r\n    this.options = { ...this.options, [field]: +ev.target.valueAsNumber };\r\n    setTimeout(() => this.optionsChanged.emit());\r\n    this.transform();\r\n  }\r\n}\r\n","<obl-dropdown-select\r\n  [items]=\"items\"\r\n  (changed)=\"changed($event)\"\r\n  [select]=\"selected\"\r\n  [label]=\"translations?.['Generating type'] || 'Generating type'\"\r\n></obl-dropdown-select>\r\n\r\n@if (selected === 'start-step-count') {\r\n  <div class=\"output\">\r\n    <obl-input-wrapper [label]=\"translations?.['Start'] || 'Start'\">\r\n      <input oblInput type=\"number\" [value]=\"start\" (change)=\"set('start', $event)\"/>\r\n    </obl-input-wrapper>\r\n\r\n    <obl-input-wrapper [label]=\"translations?.['Step'] || 'Step'\">\r\n      <input oblInput type=\"number\" [value]=\"step\" (change)=\"set('step', $event)\"/>\r\n    </obl-input-wrapper>\r\n\r\n    <obl-input-wrapper [label]=\"translations?.['Rounds'] || 'Rounds'\">\r\n      <input oblInput type=\"number\" [value]=\"count\" (change)=\"set('count', $event)\"/>\r\n    </obl-input-wrapper>\r\n  </div>\r\n\r\n  <div class=\"output\">\r\n    <obl-input-wrapper [label]=\"translations?.['Start'] || 'Start'\">\r\n      <input oblInput type=\"number\" [value]=\"start\" (change)=\"set('start', $event)\"/>\r\n    </obl-input-wrapper>\r\n\r\n    <obl-input-wrapper [label]=\"translations?.['End'] || 'End'\">\r\n      <input oblInput type=\"number\" [value]=\"end\" (change)=\"set('end', $event)\"/>\r\n    </obl-input-wrapper>\r\n\r\n    <obl-input-wrapper [label]=\"translations?.['Rounds'] || 'Rounds'\">\r\n      <input oblInput type=\"number\" [value]=\"count\" (change)=\"set('count', $event)\"/>\r\n    </obl-input-wrapper>\r\n  </div>\r\n}","import { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\r\n\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { ComponentData } from '../../models/component-data';\r\nimport { ModellerService } from '../../services/modeller.service';\r\n\r\n@Component({\r\n    selector: 'obl-concat-array-box',\r\n    templateUrl: '../modeller-box/modeller-box.component.html',\r\n    styleUrls: ['../modeller-box/modeller-box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ConcatArrayBoxComponent extends ModellerBoxComponent {\r\n  constructor(\r\n    protected ref: ElementRef<HTMLElement>,\r\n    public changes: ChangeDetectorRef,\r\n    protected modeller: ModellerService\r\n  ) {\r\n    super(ref, changes, modeller);\r\n\r\n    this.type = 'button';\r\n    this.dynamic = true;\r\n  }\r\n\r\n  protected reload() {\r\n    this.clear();\r\n\r\n    this.userModel = { ...this.options?.userModel, ...this.userModel };\r\n    let userModel = this.transformUserModel();\r\n\r\n    (keys({ ...(this.model?.components || {}), ...userModel } as any)\r\n      .map((key, index) => {\r\n        return {\r\n          type: this.modeller.getConnector(),\r\n          id: !index ? this.model?.components[0].id : key,\r\n          value: this.model?.type === 'input' ? this.inputModel?.[key] : '',\r\n          removable: !!(userModel || {})?.[key]\r\n        };\r\n      }) as ComponentData[]).forEach(\r\n        (com, index) => {\r\n          const component = this.containerRef.createComponent(\r\n            com.type,\r\n            {\r\n              injector: this.containerRef.injector,\r\n            }\r\n          )\r\n\r\n          component.instance.connector.subscribe((connector: any) => {\r\n            this.connector.emit(connector)\r\n          })\r\n\r\n          component.instance.optionsChanged.subscribe(() => this.optionsChanged.emit())\r\n\r\n          component.setInput('parent', this);\r\n\r\n          component.setInput('id', com.id);\r\n          component.setInput('subId', this.subId);\r\n          component.setInput('inputOutputComponent', com?.inputOutputComponent);\r\n          component.setInput('type', index && 'output' || 'input');\r\n          component.setInput('removable', com.removable);\r\n          component.setInput('options', this.options);\r\n          component.setInput('translations', this.model?.translations);\r\n\r\n          this.setRemove(component, com);\r\n\r\n          if (com.removable) {\r\n            component.instance.optionsChanged.subscribe(() => {\r\n              this.optionsChanged.emit()\r\n            })\r\n\r\n            component.instance.changed.subscribe(() => {\r\n              let concat: any[] = [];\r\n              this.components.forEach((com, index) => {\r\n                if (index) {\r\n                  const value = com.instance.value;\r\n                  concat = concat.concat(Array.isArray(value) && value || [value]);\r\n                }\r\n              })\r\n\r\n              this.components[0].setInput('value', concat);\r\n            })\r\n          }\r\n\r\n          if ('input' === this.model?.type) {\r\n            component.setInput('value', com.value)\r\n          }\r\n          // required to start triggering hooks without that is not trigger ngOnChanges/ngOnInit/ngAfterViewInit\r\n          component.changeDetectorRef.detectChanges();\r\n\r\n          this.components.push(component);\r\n        }\r\n      )\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { ComponentData } from '../../models/component-data';\r\n\r\n@Component({\r\n    selector: 'obl-formula-box',\r\n    templateUrl: '../modeller-box/modeller-box.component.html',\r\n    styleUrls: ['../modeller-box/modeller-box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class FormulaBoxComponent extends ModellerBoxComponent {\r\n  protected dynamic = true;\r\n\r\n  protected reload() {\r\n    this.clear();\r\n\r\n    this.userModel = { ...this.options?.userModel, ...this.userModel };\r\n    let userModel = this.transformUserModel();\r\n\r\n    (keys({ ...(this.model?.components || {}) as any, ...userModel })\r\n      .map((key, index) => {\r\n        return {\r\n          type: this.modeller.getConnector(),\r\n          id: !index ? this.model?.components[0].id : key,\r\n          value: this.model?.type === 'input' ? this.inputModel?.[key] : '',\r\n          removable: !!(userModel || {})?.[key],\r\n          inputOutputComponent: !index && this.model?.components[0]?.inputOutputComponent || undefined\r\n        };\r\n      }) as ComponentData[]).forEach(\r\n        (com, index) => {\r\n          const component = this.containerRef.createComponent(\r\n            com.type,\r\n            {\r\n              injector: this.containerRef.injector,\r\n            }\r\n          )\r\n\r\n          component.instance.connector.subscribe((connector: any) => {\r\n            this.connector.emit(connector)\r\n          })\r\n\r\n          component.instance.optionsChanged.subscribe(() => this.optionsChanged.emit())\r\n\r\n          component.setInput('parent', this);\r\n\r\n          component.setInput('id', com.id);\r\n          component.setInput('subId', this.subId);\r\n          component.setInput('inputOutputComponent', com?.inputOutputComponent);\r\n          component.setInput('type', index && 'output' || 'input');\r\n          component.setInput('removable', com.removable);\r\n          component.setInput('options', this.options);\r\n          component.setInput('translations', this.model?.translations);\r\n\r\n          this.setRemove(component, com);\r\n\r\n          if (com.removable) {\r\n            component.instance.optionsChanged.subscribe(() => {\r\n              this.optionsChanged.emit()\r\n            })\r\n\r\n            component.instance.changed.subscribe(() => {\r\n              const collect: { [key: string]: any[] } = {};\r\n\r\n              this.components.forEach((com, index) => {\r\n                if (index) {\r\n                  collect[com.instance.id] = com.instance.value;\r\n                }\r\n              })\r\n\r\n              this.components[0].setInput('value', collect);\r\n            })\r\n          }\r\n\r\n          if ('input' === this.model?.type) {\r\n            component.setInput('value', com.value)\r\n          }\r\n          // required to start triggering hooks without that is not trigger ngOnChanges/ngOnInit/ngAfterViewInit\r\n          component.changeDetectorRef.detectChanges();\r\n\r\n          this.components.push(component);\r\n        }\r\n      )\r\n  }\r\n}\r\n","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\nimport { ElementaryMath } from '@obliczeniowo/elementary/math';\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { OblConverter } from '../../models/obl-connector';\r\n\r\n@Component({\r\n    selector: 'obl-formula',\r\n    templateUrl: './formula.component.html',\r\n    styleUrls: ['./formula.component.scss'],\r\n    standalone: false\r\n})\r\nexport class FormulaComponent implements OblConverter {\r\n  @Input() toTransform?: { [name: string]: number | number[] } | undefined;\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<number | number[] | undefined>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  formula: string = '';\r\n\r\n  value?: number | number[];\r\n\r\n  transform() {\r\n    const toTransform = this.toTransform || {};\r\n    if (toTransform) {\r\n\r\n      let length: number | undefined = undefined;\r\n      keys(toTransform).forEach(\r\n        key => length = Array.isArray(this.toTransform?.[key]) && (toTransform?.[key] as any).length || undefined\r\n      );\r\n\r\n      let converted;\r\n\r\n      if (length !== undefined) {\r\n        converted = [];\r\n\r\n        length = length || 1;\r\n\r\n        for (let i = 0; i < length; i++) {\r\n          const collect: { [key: string]: number | undefined } = {}\r\n          keys(toTransform).forEach(key => {\r\n            const value = toTransform?.[key];\r\n\r\n            if (Array.isArray(value)) {\r\n              collect[key] = value[i];\r\n            } else {\r\n              collect[key] = value;\r\n            }\r\n          })\r\n\r\n          converted.push(collect);\r\n        }\r\n      } else {\r\n        converted = toTransform;\r\n      }\r\n\r\n      try {\r\n        const formula = JSON.parse(this.formula);\r\n        let value: any;\r\n        if (Array.isArray(converted)) {\r\n          value = [];\r\n          converted.forEach(values => {\r\n            value.push(ElementaryMath.calculate(formula, values as any));\r\n          })\r\n        } else {\r\n          value = ElementaryMath.calculate(formula, converted as any);\r\n        }\r\n        this.value = value;\r\n      } catch (e) {\r\n        console.log(e);\r\n      }\r\n    } else {\r\n      this.value = undefined;\r\n    }\r\n    this.transformed.emit(this.value);\r\n  }\r\n\r\n  changed(event: any) {\r\n    this.formula = event.value;\r\n    this.options = { ...this.options, formula: this.formula }\r\n    this.transform();\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.toTransform) {\r\n      this.transform();\r\n    }\r\n    if (changes.options) {\r\n      this.formula = this?.options?.formula || this.formula;\r\n      this.transform();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.transformed.unsubscribe();\r\n  }\r\n}\r\n","<obl-input-wrapper [label]=\"translations?.Formula || 'Formula'\">\r\n  <input\r\n    type=\"text\"\r\n    oblInput\r\n    [value]=\"formula\"\r\n    (change)=\"changed($event.target)\"\r\n    (keyup)=\"changed(form)\"\r\n    #form\r\n  />\r\n</obl-input-wrapper>\r\n\r\n<fieldset>\r\n  <legend>{{ translations?.Example || 'Example' }}</legend>\r\n  <p>[\"*\", [\"sin\", [\"get\", \"x\"]], [\"cos\", [\"get\", \"y\"]]]</p>\r\n</fieldset>","import { Component, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { OblConverter } from '../models/obl-connector';\r\nimport { EventEmitterExt } from '@obliczeniowo/elementary/rx-js-ext';\r\n\r\n@Component({\r\n    selector: 'obl-get-request',\r\n    templateUrl: './get-request.component.html',\r\n    styleUrl: './get-request.component.scss',\r\n    standalone: false\r\n})\r\nexport class GetRequestComponent implements OblConverter {\r\n  /** */\r\n  @Input() options?: { [key: string]: any };\r\n  /** */\r\n  @Input() translations?: { [en: string]: string };\r\n\r\n  @Output() transformed = new EventEmitterExt<any | any[]>();\r\n\r\n  @Output() optionsChanged = new EventEmitterExt<void>();\r\n\r\n  path: string = '';\r\n\r\n  @Input() toTransform: any;\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  async get() {\r\n    const [resp, error] = await fetch(this.path).then(resp => resp.json());\r\n\r\n    if (resp) {\r\n      this.toTransform = resp;\r\n      this.transformed.emit(resp);\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.options) {\r\n      this.path = this.options?.path || this.path;\r\n      this.get().then();\r\n    }\r\n  }\r\n\r\n  transform() {\r\n    this.transformed.emit(this.toTransform);\r\n  }\r\n\r\n  changed() {\r\n    this.options = { ...this.options, path: this.path };\r\n    this.transformed.emit(this.toTransform);\r\n    this.optionsChanged.emit();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.transformed.unsubscribe();\r\n  }\r\n}\r\n","<obl-input-wrapper>\r\n  <input oblInput [(ngModel)]=\"path\" (change)=\"changed()\" />\r\n  <div suffix>\r\n    <button oblButton icon=\"ok\" (click)=\"get()\"></button>\r\n  </div>\r\n</obl-input-wrapper>\r\n","import { Injectable, ViewContainerRef } from '@angular/core';\r\n\r\nimport { IPoint2D, Point2D } from '@obliczeniowo/elementary/classes';\r\nimport { MenuItem } from '@obliczeniowo/elementary/menu';\r\nimport { keys } from '@obliczeniowo/elementary/objects';\r\n\r\nimport { ModellerBoxComponent } from './../components/modeller-box/modeller-box.component';\r\nimport { BoxModel } from '../models/box.model';\r\nimport { ConnectorItemComponent } from '../components/connector-item/connector-item.component';\r\nimport { IntegerFilterConnectorComponent } from '../components/integer-filter-connector/integer-filter-connector.component';\r\nimport { ConvertToHistogramComponent } from '../components/convert-to-histogram/convert-to-histogram.component';\r\nimport { RangeFilterComponent } from '../components/range-filter/range-filter.component';\r\nimport { StringConverterComponent } from '../components/string-converter/string-converter.component';\r\nimport { SplitBoxComponent } from '../components/split-box/split-box.component';\r\nimport { ValueInputComponent } from '../components/value-input/value-input.component';\r\nimport { MathBoxComponent } from '../components/math-box/math-box.component';\r\nimport { MathOperatorComponent } from '../components/math-operator/math-operator.component';\r\nimport { ConstOrValueComponent } from '../components/const-or-value/const-or-value.component';\r\nimport { JoinArrayToObjectBoxComponent } from '../components/join-array-to-object-box/join-array-to-object-box.component';\r\nimport { SplitInputBoxComponent } from '../components/split-input-box/split-input-box.component';\r\nimport { GenerateComponent } from '../components/generate/generate.component';\r\nimport { ConcatArrayBoxComponent } from '../components/concat-array-box/concat-array-box.component';\r\nimport { FormulaBoxComponent } from '../components/formula-box/formula-box.component';\r\nimport { FormulaComponent } from '../components/formula/formula.component';\r\nimport { GetRequestComponent } from '../get-request/get-request.component';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ModellerService {\r\n  protected models = new Map<string, BoxModel>();\r\n  protected translations: { [en: string]: string } = {};\r\n\r\n  public menuItems: MenuItem[] = [];\r\n\r\n  constructor() {\r\n    this.register('input', {\r\n      title: 'Input',\r\n      components: [],\r\n      type: 'input',\r\n      translations: this.translations\r\n    });\r\n\r\n    this.register('output', {\r\n      title: 'Output',\r\n      components: [],\r\n      type: 'output',\r\n      translations: this.translations\r\n    });\r\n\r\n    const type = 'in-out';\r\n    this.register('convert-to-histogram', {\r\n      title: 'Convert to histogram',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'histogram', inputOutputComponent: ConvertToHistogramComponent }\r\n      ],\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('integer', {\r\n      title: 'Integer filter',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'integer', inputOutputComponent: IntegerFilterConnectorComponent },\r\n      ],\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('range', {\r\n      title: 'Range filter',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'ranges', inputOutputComponent: RangeFilterComponent },\r\n      ],\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('string-converter', {\r\n      title: 'String converter',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'string-converter', inputOutputComponent: StringConverterComponent },\r\n      ],\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('split-object', {\r\n      title: 'Split object',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'split-object', connectorType: 'output' }\r\n      ],\r\n      box: SplitBoxComponent,\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('math-operator', {\r\n      title: 'Math operator',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'left', connectorType: 'output', inputOutputComponent: ValueInputComponent },\r\n        { type: ConnectorItemComponent, id: 'right', connectorType: 'output', inputOutputComponent: ValueInputComponent },\r\n        { type: ConnectorItemComponent, id: 'math-operator', connectorType: 'input', inputOutputComponent: MathOperatorComponent }\r\n      ],\r\n      box: MathBoxComponent,\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('const-or-variable', {\r\n      title: 'Constant or variable',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'const-or-value', connectorType: 'input', inputOutputComponent: ConstOrValueComponent },\r\n      ],\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('join-array-to-object', {\r\n      title: 'Join array to object',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'convert', connectorType: 'input' },\r\n      ],\r\n      type,\r\n      box: JoinArrayToObjectBoxComponent,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('split-input', {\r\n      title: 'Split input',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'split', connectorType: 'output' },\r\n      ],\r\n      type,\r\n      box: SplitInputBoxComponent,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('generate', {\r\n      title: 'Generate',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'generate-array', connectorType: 'input', inputOutputComponent: GenerateComponent }\r\n      ],\r\n      type,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('concat-arrays', {\r\n      title: 'Concat arrays',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'concat', connectorType: 'input' }\r\n      ],\r\n      type,\r\n      box: ConcatArrayBoxComponent,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('formula', {\r\n      title: 'Formula',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'formula-calc', connectorType: 'input', inputOutputComponent: FormulaComponent }\r\n      ],\r\n      type,\r\n      box: FormulaBoxComponent,\r\n      translations: this.translations\r\n    })\r\n\r\n    this.register('get-request', {\r\n      title: 'Get request',\r\n      components: [\r\n        { type: ConnectorItemComponent, id: 'get-request-input', connectorType: 'input', inputOutputComponent: GetRequestComponent },\r\n      ],\r\n      type,\r\n      translations: this.translations\r\n    })\r\n  }\r\n\r\n  setTranslations(translations: { [en: string]: string }) {\r\n    keys(translations).forEach(key => {\r\n      this.translations[key] = translations[key];\r\n    })\r\n  }\r\n\r\n  getTranslations() {\r\n    return this.translations;\r\n  }\r\n\r\n  getConnector() {\r\n    return ConnectorItemComponent;\r\n  }\r\n\r\n  register(id: string, model: BoxModel) {\r\n    if (this.models.has(id)) {\r\n      throw `This id=${id} is already in use`;\r\n    }\r\n    this.models.set(id, model);\r\n\r\n    this.setMenuItems();\r\n  }\r\n\r\n  create(id: string, container: ViewContainerRef, subId?: string, options?: { position: IPoint2D }) {\r\n    if (!container) {\r\n      throw new Error('container instance not exist');\r\n    }\r\n\r\n    if (!this.models.has(id)) {\r\n      throw `This id=${id} component was not registered`;\r\n    }\r\n\r\n    const model = this.models.get(id);\r\n\r\n    const componentRef = container.createComponent(\r\n      model?.box || ModellerBoxComponent,\r\n      {\r\n        injector: container.injector,\r\n      }\r\n    )\r\n\r\n    componentRef.setInput('model', model);\r\n    componentRef.setInput('id', id);\r\n    componentRef.setInput('subId', !['input', 'output'].includes(model?.type || '') && subId || '');\r\n\r\n    const { position } = options || {};\r\n\r\n    componentRef.setInput('translate', new Point2D(position?.x || 0, position?.y || 0))\r\n\r\n    return componentRef;\r\n  }\r\n\r\n  setMenuItems() {\r\n    const menuItems: MenuItem[] = [];\r\n    const exclude = ['input', 'output'];\r\n    this.models.forEach((value, key) => {\r\n      if (!exclude.includes(key)) {\r\n        menuItems.push({\r\n          id: key,\r\n          text: key.replace(/\\-/g, ' '),\r\n          command: key\r\n        })\r\n      }\r\n    })\r\n\r\n    this.menuItems = menuItems;\r\n  }\r\n\r\n  getTranslation(en: string) {\r\n    return this.translations?.[en] || en;\r\n  }\r\n}\r\n","import * as uuid from 'uuid';\r\n\r\nimport { Point2D } from '@obliczeniowo/elementary/classes';\r\n\r\nimport { Component, ComponentRef, HostListener, Input, SimpleChanges, ViewChild, ViewContainerRef, ElementRef, ViewChildren, QueryList, EventEmitter, Output } from '@angular/core';\r\nimport { BoxItemModel } from '../../models/box-item.model';\r\nimport { ModellerService } from '../../services/modeller.service';\r\nimport { ModellerBoxComponent } from '../modeller-box/modeller-box.component';\r\nimport { ModellerConnectorModel } from '../../models/modeller-connector.model';\r\nimport { Connector, RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\r\n\r\n@Component({\r\n    selector: 'obl-modeller-space',\r\n    templateUrl: './modeller-space.component.html',\r\n    styleUrls: ['./modeller-space.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ModellerSpaceComponent {\r\n  @Input() boxes: BoxItemModel[] = [];\r\n  /** */\r\n  @Input() connectorsSet: Connector[] = [];\r\n  /** Inputs values to filtering out */\r\n  @Input() input: { [key: string]: any } = {};\r\n  /**  */\r\n  @Output() output = new EventEmitter<any>();\r\n  /** */\r\n  @Output() connectorsSetChanged = new EventEmitter<Connector[]>();\r\n  /** */\r\n  @Output() boxesChanged = new EventEmitter<BoxItemModel[]>();\r\n\r\n  /** Output filtered out values */\r\n  protected _output: { [key: string]: any } = {};\r\n\r\n  protected components: (ComponentRef<ModellerBoxComponent> | any)[] = [];\r\n\r\n  protected translation = new Point2D(0, 0);\r\n\r\n  protected buttons: number = 0;\r\n\r\n  protected mouse: Point2D = new Point2D();\r\n\r\n  protected mousePos: Point2D = new Point2D();\r\n\r\n  protected clickedPlace: Point2D = new Point2D();\r\n\r\n  protected selected?: ModellerBoxComponent;\r\n\r\n  protected source?: string;\r\n\r\n  protected connectors: ModellerConnectorModel[] = [];\r\n\r\n  protected create?: ModellerConnectorModel;\r\n\r\n  @ViewChildren(RelationConnectorComponent) protected connectorsComponents!: QueryList<RelationConnectorComponent>;\r\n\r\n  @ViewChild('containerRef', { read: ViewContainerRef })\r\n  containerRef!: ViewContainerRef;\r\n\r\n  timer: any;\r\n\r\n  @HostListener('mousemove', ['$event']) mousemove(event: MouseEvent): void {\r\n    const rect = this.ref.nativeElement.getBoundingClientRect();\r\n\r\n    this.mousePos = new Point2D(event.clientX - rect.x, event.clientY - rect.y);\r\n\r\n    if (this.create) {\r\n      if (!this.timer) {\r\n        this.timer = setInterval(() => {\r\n          if (this.mousePos.y < 50) {\r\n            this.translation = this.translation.add(new Point2D(0, 10));\r\n            this.moveCreated();\r\n            this.recalcPos();\r\n          }\r\n          if (this.mousePos.y > rect.height - 50) {\r\n            this.translation = this.translation.add(new Point2D(0, -10));\r\n            this.moveCreated();\r\n            this.recalcPos();\r\n          }\r\n          if (this.mousePos.x < 50) {\r\n            this.translation = this.translation.add(new Point2D(10, 0));\r\n            this.moveCreated();\r\n            this.recalcPos();\r\n          }\r\n          if (this.mousePos.x > rect.width - 50) {\r\n            this.translation = this.translation.add(new Point2D(-10, 0));\r\n            this.moveCreated();\r\n            this.recalcPos();\r\n          }\r\n        }, 100);\r\n      }\r\n\r\n      this.moveCreated();\r\n    } else if (this.timer) {\r\n      clearInterval(this.timer);\r\n      this.timer = undefined;\r\n    }\r\n\r\n    if (this.buttons === 1) {\r\n      const move = () => this.mouse = new Point2D(event.x, event.y).subtract(this.clickedPlace);\r\n      if (this.selected) {\r\n        move();\r\n        this.selected.offset = new Point2D(event.x, event.y).subtract(this.clickedPlace);\r\n        this.selected.recalc();\r\n      } else {\r\n        if (this.source !== 'svg') {\r\n          return;\r\n        }\r\n        move();\r\n        this.recalcPos();\r\n      }\r\n    }\r\n  }\r\n\r\n  @HostListener('mousedown', ['$event']) mousedown(event: MouseEvent): void {\r\n    this.buttons = event.buttons;\r\n    this.clickedPlace.x = event.x;\r\n    this.clickedPlace.y = event.y;\r\n    this.source = (event.target as any).nodeName;\r\n    if (['svg', 'path'].includes(this.source || '')) {\r\n      this.create = undefined;\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseup', ['$event']) mouseup(event: MouseEvent): void {\r\n    // eslint-disable-next-line eqeqeq\r\n    if (this.buttons == 1) {\r\n      if (this.selected) {\r\n        this.selected.translate = this.selected.translate.add(this.selected.offset);\r\n        this.selected.offset = new Point2D();\r\n        this.selected.recalc();\r\n        this.setBoxes();\r\n      } else {\r\n        this.translation = this.translation.add(this.mouse);\r\n      }\r\n    }\r\n    this.buttons = event.button;\r\n    this.mouse = new Point2D();\r\n    this.selected = undefined;\r\n  }\r\n\r\n  protected moveCreated() {\r\n    if (this.create) {\r\n      if (this.create.right) {\r\n        this.create.start = this.mousePos.subtract(this.translation);\r\n      } else {\r\n        this.create.end = this.mousePos.subtract(this.translation);\r\n      }\r\n    }\r\n  }\r\n\r\n  protected setBoxes() {\r\n    this.boxes = this.components.map(com => com.instance.getBoxItemModel());\r\n    this.boxesChanged.emit(this.boxes);\r\n  }\r\n\r\n  constructor(protected modeller: ModellerService, protected ref: ElementRef<HTMLElement>) {\r\n  }\r\n\r\n  recalcPos() {\r\n    this.components.forEach(component => component.instance.world = this.translation.add(this.mouse));\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.boxes) {\r\n      this.reload();\r\n      this.boxesChanged.emit(this.boxes);\r\n    }\r\n    if (changes.input) {\r\n      this.setInputOutput();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n      this.reload();\r\n      this.setInputOutput();\r\n\r\n      if (this.connectorsSet) {\r\n        this.connectors = [...this.connectorsSet];\r\n        this.setConnectors();\r\n        this.components.forEach(component => {\r\n          component.instance.recalc();\r\n        })\r\n      }\r\n    })\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.timer) {\r\n      clearInterval(this.timer);\r\n    }\r\n  }\r\n\r\n  setInputOutput() {\r\n    const input = this.getInput();\r\n    const output = this.getOutput();\r\n\r\n    if (input && output) {\r\n      input.setInput('inputModel', this.input);\r\n      input.changeDetectorRef.detectChanges();\r\n      output.setInput('inputModel', this.input);\r\n      output.changeDetectorRef.detectChanges();\r\n    }\r\n  }\r\n\r\n  setConnectors(after?: () => void) {\r\n    setTimeout(() => {\r\n      this.components.forEach(component => {\r\n        component.instance.setConnectors(Array.from(this.connectorsComponents));\r\n      })\r\n\r\n      if (after) {\r\n        after();\r\n      }\r\n    });\r\n  }\r\n\r\n  removeEmptyConnector(fullId: string, side: 'left' | 'right'): boolean {\r\n    const find = this.connectors.find(\r\n      con => con?.[side] === fullId);\r\n    if (find) {\r\n      const conn = this.getById(find?.[side === 'left' ? 'right' : 'left'] || '');\r\n      if (conn?.instance?.[side === 'left' ? 'right' : 'left'] || !conn) {\r\n        this.removeConnector(find);\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  reload() {\r\n    if (this.boxes && this.containerRef) {\r\n      /** remove components before reinitialize */\r\n      this.components.forEach((component, index) => {\r\n        if (!this.boxes?.find(box => box.id === component.instance.id && box.subId === component.instance.subId)) {\r\n          if (component.instance.model?.type === 'in-out' &&\r\n            component.instance.id !== 'input' && component.instance.id !== 'output' && component.instance.subId) {\r\n            component.instance.dragBox.clearSubscriptions();\r\n            component.instance.connector.clearSubscriptions();\r\n            component.instance.remove.clearSubscriptions();\r\n            component.instance.removeConnector.clearSubscriptions();\r\n            component.instance.optionsChanged.clearSubscriptions();\r\n            component.destroy();\r\n            this.components[index] = undefined;\r\n          }\r\n        }\r\n      });\r\n\r\n      this.components = this.components.filter(component => {\r\n        return component;\r\n      });\r\n\r\n      const input = this.boxes.find(box => box.id === 'input' && box.subId === '');\r\n      const output = this.boxes.find(box => box.id === 'output' && box.subId === '');\r\n\r\n      (this.components.length\r\n        ? this.boxes\r\n        : Array.from<BoxItemModel>([\r\n        {\r\n          id: 'input',\r\n          subId: '',\r\n          options: input?.options\r\n        },\r\n        {\r\n          id: 'output',\r\n          subId: '',\r\n          options: output?.options\r\n        }\r\n      ]).concat(this.boxes)).forEach(\r\n        (box, index) => {\r\n          if (!this.components.find(\r\n            component => component.instance.id === box.id && component.instance.subId === box.subId)\r\n          ) {\r\n            box.subId = box.subId || uuid.v4();\r\n\r\n            let options: { [key: string]: any } = {};\r\n\r\n            const rect = this.ref.nativeElement.getBoundingClientRect();\r\n\r\n            if (box.options) {\r\n              options = box.options;\r\n            } else {\r\n              if (box.id === 'input' || box.id === 'output') {\r\n                options.position = {\r\n                  x: box.id === 'input' ? 10 : rect.width - 260,\r\n                  y: 10\r\n                };\r\n              } else {\r\n                options.position = this.mousePos.subtract(this.translation);\r\n              }\r\n            }\r\n\r\n            const component = this.modeller.create(box.id, this.containerRef, box.subId, options as any);\r\n\r\n            component.instance.optionsChanged.subscribe(\r\n              () => {\r\n                this.setBoxes();\r\n                this.boxesChanged.emit(this.boxes);\r\n              }\r\n            );\r\n\r\n            component.instance.dragBox.subscribe(data => {\r\n              this.selected = data.component;\r\n              this.create = undefined;\r\n              this.components.sort((p, c) => p.instance.index - c.instance.index).forEach((component, index) => {\r\n                if (component.instance !== this.selected) {\r\n                  component.setInput('index', index);\r\n                  component.changeDetectorRef.detectChanges();\r\n                } else {\r\n                  component.setInput('index', this.components.length)\r\n                  component.changeDetectorRef.detectChanges();\r\n                }\r\n              })\r\n            });\r\n\r\n            component.instance.connector.subscribe(connector => {\r\n              if (!this.create) {\r\n                if (connector.left) {\r\n                  connector.end = this.mousePos.subtract(this.translation);\r\n                } else if (connector.right) {\r\n                  connector.start = this.mousePos.subtract(this.translation);\r\n                }\r\n                this.create = connector;\r\n              } else {\r\n                this.create = { ...this.create, ...connector };\r\n\r\n                if (this.create.left && this.create.right) {\r\n                  this.connectors.push(this.create);\r\n                  this.emitConnectorsSet();\r\n                }\r\n                this.create = undefined;\r\n\r\n                this.setConnectors();\r\n              }\r\n            });\r\n\r\n            component.instance.removeConnector.subscribe((id: string) => {\r\n              const connector = this.connectors.find(conn => conn?.left === id || conn?.right === id);\r\n              if (connector) {\r\n                this.removeConnector(connector);\r\n              }\r\n            })\r\n\r\n            if (box.id !== 'input' && box.id !== 'output') {\r\n              component.instance.remove.subscribe(component => {\r\n                component.allConnectors().forEach(connector => {\r\n                  if (connector.connector?.left) {\r\n                    const found = this.connectors.find(conn => conn.left === connector.connector?.left || conn.right === connector.connector?.right);\r\n                    if (found) {\r\n                      this.removeConnector(found)\r\n                    }\r\n                  }\r\n                })\r\n                this.boxes = (this.boxes || []).filter(box => box.id !== component.id || box.subId !== component.subId)\r\n                this.reload();\r\n                this.boxesChanged.emit(this.boxes);\r\n              });\r\n            }\r\n\r\n            if (box.id === 'output') {\r\n              component.instance.outputChanged.subscribe(value => {\r\n                this.output.emit(value);\r\n              })\r\n            }\r\n\r\n            component.setInput('options', options);\r\n            component.setInput('index', index);\r\n            component.setInput('parent', this);\r\n\r\n            component.changeDetectorRef.detectChanges();\r\n\r\n            this.components.push(component);\r\n          }\r\n        }\r\n      )\r\n      this.recalcPos();\r\n    }\r\n  }\r\n\r\n  getById(id: string) {\r\n    const [parentId, subId, itemId] = id.split(':');\r\n    const item: ComponentRef<any> | undefined = this.components.map(\r\n      (item) => item.instance.item(parentId, subId, itemId)).filter(v => v)?.[0];\r\n    return item;\r\n  }\r\n\r\n  /** by assumption first one should be an output and should always exist */\r\n  getInput(): ComponentRef<ModellerBoxComponent> {\r\n    return this.components[0];\r\n  }\r\n\r\n  /** by assumption second one should be an output and should always exist */\r\n  getOutput(): ComponentRef<ModellerBoxComponent> {\r\n    return this.components[1];\r\n  }\r\n\r\n  protected menuClicked(command: string) {\r\n    this.boxes = [...(this.boxes || [] as any), {\r\n      id: command\r\n    }];\r\n    this.reload();\r\n    // this.boxesChanged.emit(this.boxes);\r\n    this.setBoxes();\r\n  }\r\n\r\n  protected removeConnector(connector: ModellerConnectorModel) {\r\n    const left = this.getById(connector?.left || '');\r\n\r\n    if (left) {\r\n      left.instance.parent.connectors = [];\r\n      left.instance.input?.clearSubscriptions();\r\n      left.instance.left = undefined;\r\n      left.changeDetectorRef.detectChanges();\r\n    }\r\n    const right = this.getById(connector?.right || '');\r\n    if (right) {\r\n      right.instance.parent.connectors = [];\r\n      right.instance.input?.clearSubscriptions();\r\n      right.instance.right = undefined;\r\n      right.setInput('value', undefined);\r\n      right.instance.value = undefined;\r\n      right.changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    this.connectors = this.connectors.filter(con => con !== connector);\r\n\r\n    this.emitConnectorsSet();\r\n  }\r\n\r\n  protected emitConnectorsSet() {\r\n    this.connectorsSet = this.connectors.map(conn => ({ left: conn.left, right: conn.right }));\r\n    this.connectorsSetChanged.emit(this.connectorsSet);\r\n  }\r\n}\r\n","<svg>\r\n  <g\r\n    [attr.transform]=\"\r\n      (selected ? translation : translation.add(mouse)).toCssTranslate()\r\n    \"\r\n  >\r\n    @for (connector of connectors; track $index) {\r\n      <g\r\n        obl-relation-connector\r\n        [right]=\"connector.end\"\r\n        [left]=\"connector.start\"\r\n        [connector]=\"connector\"\r\n        (clicked)=\"removeConnector(connector)\"\r\n      ></g>\r\n    }\r\n\r\n    @if (create) {\r\n      <g\r\n        obl-relation-connector\r\n        [right]=\"create.end\"\r\n        [left]=\"create.start\"\r\n        [connector]=\"create\"\r\n      ></g>\r\n    }\r\n  </g>\r\n</svg>\r\n\r\n<ng-container #containerRef></ng-container>\r\n\r\n<obl-menu\r\n  [target]=\"ref.nativeElement\"\r\n  [items]=\"modeller.menuItems\"\r\n  [translations]=\"modeller.getTranslations()\"\r\n  (clicked)=\"menuClicked($event)\"\r\n></obl-menu>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { InputModule } from '@obliczeniowo/elementary/input';\r\nimport { ConnectorsModule } from '@obliczeniowo/elementary/connectors';\r\nimport { DropdownSelectModule } from '@obliczeniowo/elementary/dropdown-select';\r\nimport { MenuModule } from '@obliczeniowo/elementary/menu';\r\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\r\n\r\nimport { ModellerSpaceComponent } from './components/modeller-space/modeller-space.component';\r\nimport { ModellerBoxComponent } from './components/modeller-box/modeller-box.component';\r\nimport { ConnectorItemComponent } from './components/connector-item/connector-item.component';\r\nimport { IntegerFilterConnectorComponent } from './components/integer-filter-connector/integer-filter-connector.component';\r\nimport { ConvertToHistogramComponent } from './components/convert-to-histogram/convert-to-histogram.component';\r\nimport { RangeFilterComponent } from './components/range-filter/range-filter.component';\r\nimport { StringConverterComponent } from './components/string-converter/string-converter.component';\r\nimport { SplitBoxComponent } from './components/split-box/split-box.component';\r\nimport { MathBoxComponent } from './components/math-box/math-box.component';\r\nimport { ValueInputComponent } from './components/value-input/value-input.component';\r\nimport { MathOperatorComponent } from './components/math-operator/math-operator.component';\r\nimport { ConstOrValueComponent } from './components/const-or-value/const-or-value.component';\r\nimport { JoinArrayToObjectBoxComponent } from './components/join-array-to-object-box/join-array-to-object-box.component';\r\nimport { SplitInputBoxComponent } from './components/split-input-box/split-input-box.component';\r\nimport { GenerateComponent } from './components/generate/generate.component';\r\nimport { ConcatArrayBoxComponent } from './components/concat-array-box/concat-array-box.component';\r\nimport { FormulaBoxComponent } from './components/formula-box/formula-box.component';\r\nimport { FormulaComponent } from './components/formula/formula.component';\r\nimport { GetRequestComponent } from './get-request/get-request.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ModellerSpaceComponent,\r\n    ModellerBoxComponent,\r\n    ConnectorItemComponent,\r\n    IntegerFilterConnectorComponent,\r\n    ConvertToHistogramComponent,\r\n    RangeFilterComponent,\r\n    StringConverterComponent,\r\n    SplitBoxComponent,\r\n    MathBoxComponent,\r\n    ValueInputComponent,\r\n    MathOperatorComponent,\r\n    ConstOrValueComponent,\r\n    JoinArrayToObjectBoxComponent,\r\n    SplitInputBoxComponent,\r\n    GenerateComponent,\r\n    ConcatArrayBoxComponent,\r\n    FormulaBoxComponent,\r\n    FormulaComponent,\r\n    GetRequestComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ConnectorsModule,\r\n    InputModule,\r\n    DropdownSelectModule,\r\n    MenuModule,\r\n    ButtonsModule,\r\n    FormsModule\r\n  ],\r\n  exports: [\r\n    ModellerSpaceComponent,\r\n    ConnectorItemComponent\r\n  ]\r\n})\r\nexport class ModellerModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ModellerService","i2","i3","i1"],"mappings":"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"}