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