{"version":3,"file":"ng3-gui.mjs","sources":["../../../projects/ng3-gui/src/lib/gui-item/gui-item.component.ts","../../../projects/ng3-gui/src/lib/gui-item/gui-folder.component.html","../../../projects/ng3-gui/src/lib/gui-item/gui-item.component.html","../../../projects/ng3-gui/src/lib/gui/gui.component.ts","../../../projects/ng3-gui/src/lib/gui/gui.component.html","../../../projects/ng3-gui/src/lib/ng3-gui.ts","../../../projects/ng3-gui/src/lib/ng3-gui.module.ts","../../../projects/ng3-gui/src/public-api.ts","../../../projects/ng3-gui/src/ng3-gui.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\nimport { Color, Group } from \"three\";\r\nimport { NgtObjectProps } from \"@angular-three/core\";\r\n\r\nimport { FlatUIInputService, InteractiveObjects, ListItem } from \"ng3-flat-ui\";\r\n\r\nimport { Controller, Ng3GUI } from \"../ng3-gui\";\r\n\r\n@Component({\r\n  selector: 'ng3-gui-folder',\r\n  exportAs: 'ng3GUIFolder',\r\n  templateUrl: './gui-folder.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class Ng3GUIFolderComponent extends NgtObjectProps<Group> {\r\n  @Input() gui!: Ng3GUI;\r\n\r\n  @Input() selectable?: InteractiveObjects;\r\n}\r\n\r\n\r\n@Component({\r\n  selector: 'ng3-gui-item',\r\n  exportAs: 'ng3GUIItem',\r\n  templateUrl: './gui-item.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class Ng3GUIItemComponent {\r\n  @Input() width = 1;\r\n  @Input() item!: Controller;\r\n\r\n  @Input() selectable?: InteractiveObjects;\r\n\r\n  constructor(public input: FlatUIInputService) { }\r\n\r\n\r\n  get textvalue(): string {\r\n    return this.item.object[this.item.property].toString();\r\n  }\r\n  set textvalue(newvalue: string) {\r\n    this.item.setValue(newvalue);\r\n  }\r\n\r\n  get boolvalue(): boolean {\r\n    return this.item.object[this.item.property];\r\n  }\r\n  set boolValue(newvalue: boolean) {\r\n    this.item.setValue(newvalue);\r\n  }\r\n\r\n  get numbervalue(): number {\r\n    return this.item.object[this.item.property];\r\n  }\r\n  set numbervalue(newvalue: number) {\r\n    this.item.setValue(newvalue);\r\n  }\r\n\r\n  get colorvalue(): string {\r\n    const value = this.item.object[this.item.property];\r\n    if (typeof value == 'number') {\r\n      return '#' + new Color(value).getHexString()\r\n    }\r\n    return value;\r\n  }\r\n  set colorvalue(newvalue: string) {\r\n    this.item.setValue(newvalue);\r\n  }\r\n\r\n  get listvalue(): string {\r\n    const list = (this.item._min as Array<ListItem>)\r\n    const data = this.item.object[this.item.property];\r\n    const item = list.find(x => x.data == data);\r\n    return item ? item.text : '';\r\n  }\r\n  set listvalue(newvalue: string) {\r\n    const list = (this.item._min as Array<ListItem>)\r\n    const item = list.find(x => x.text == newvalue);\r\n    if (item) {\r\n      this.item.setValue(item.data);\r\n    }\r\n  }\r\n\r\n  execute() {\r\n    const func = this.item.object[this.item.property];\r\n    func.call(this.item.object)\r\n  }\r\n\r\n  enter() {\r\n    this.item._callOnFinishChange();\r\n  }\r\n}\r\n\r\n","<flat-ui-expansion-panel [selectable]=\"selectable\" [title]=\"gui.title\" [width]=\"gui.width\" [height]=\"gui.height\" [expanded]=\"gui.expanded\" [position]=\"position\" [rotation]=\"rotation\" [scale]=\"scale\">\r\n  <ng-template let-parent=\"parent\">\r\n    <ngt-group vertical-layout (heightchange)=\"gui.height=$event\" [appendTo]=\"parent\" [margin]=\"0.02\" [position]=\"[-gui.width/2, gui.height/2, 0.001]\">\r\n\r\n      <ng3-gui-item *ngFor=\"let item of gui.list\" [item]=\"item\" [width]=\"gui.width\" [selectable]=\"selectable\"></ng3-gui-item>\r\n\r\n    </ngt-group>\r\n  </ng-template>\r\n</flat-ui-expansion-panel>\r\n","<ngt-group [ngSwitch]=\"item.classname\">\r\n  <ng-template [ngSwitchCase]=\"'options'\">\r\n    <ngt-group horizontal-layout [margin]=\"0.02\">\r\n      <flat-ui-label [text]=\"item.title\" [width]=\"0.8\"></flat-ui-label>\r\n      <flat-ui-select #list [text]=\"listvalue\" [width]=\"1\" [selectable]=\"selectable\" [enabled]=\"item.enabled\"\r\n                      (change)=\"listvalue=$event\" (openinput)=\"input.openlist($event, list, item._min, listvalue)\">\r\n      </flat-ui-select>\r\n    </ngt-group>\r\n  </ng-template>\r\n  <ng-template [ngSwitchCase]=\"'number'\">\r\n    <ngt-group horizontal-layout [margin]=\"0.02\">\r\n      <flat-ui-label [text]=\"item.title\" [width]=\"0.8\"></flat-ui-label>\r\n      <flat-ui-input-slider [visible]=\"item._min != undefined && item._max != undefined\" [width]=\"0.5\" [min]=\"item._min\" [max]=\"item._max\"\r\n                            [step]=\"item._step\" [value]=\"numbervalue\" [selectable]=\"selectable\" [enabled]=\"item.enabled\"\r\n                            (change)=\"numbervalue=$event\">\r\n      </flat-ui-input-slider>\r\n      <flat-ui-input-number #numpad [min]=\"item._min\" [max]=\"item._max\" [text]=\"textvalue\"\r\n                            [enabled]=\"item.enabled\" [selectable]=\"selectable\"\r\n                            (change)=\"numbervalue=$event\" (enter)=\"enter()\" (openinput)=\"input.opennumpad($event, numpad, textvalue)\">\r\n      </flat-ui-input-number>\r\n    </ngt-group>\r\n  </ng-template>\r\n  <ng-template [ngSwitchCase]=\"'boolean'\">\r\n    <ngt-group horizontal-layout [margin]=\"0.02\">\r\n      <flat-ui-label [text]=\"item.title\" [width]=\"0.8\"></flat-ui-label>\r\n      <flat-ui-input-checkbox [checked]=\"boolvalue\" (change)=\"boolValue=$event\" [selectable]=\"selectable\" [enabled]=\"item.enabled\">\r\n      </flat-ui-input-checkbox>\r\n    </ngt-group>\r\n  </ng-template>\r\n  <ng-template [ngSwitchCase]=\"'string'\">\r\n    <ngt-group horizontal-layout [margin]=\"0.02\">\r\n      <flat-ui-label [text]=\"item.title\" [width]=\"0.8\"></flat-ui-label>\r\n      <flat-ui-input-text #keyboard [text]=\"textvalue\" [overflow]=\"10\" [selectable]=\"selectable\" [enabled]=\"item.enabled\"\r\n                          (change)=\"textvalue=$event\" (enter)=\"enter()\" (openinput)=\"input.openkeyboard($event, keyboard, textvalue)\">\r\n      </flat-ui-input-text>\r\n    </ngt-group>\r\n  </ng-template>\r\n  <ng-template [ngSwitchCase]=\"'textarea'\">\r\n    <ngt-group horizontal-layout [margin]=\"0.02\">\r\n      <flat-ui-label [text]=\"item.title\" [width]=\"0.8\"></flat-ui-label>\r\n      <flat-ui-input-textarea #keyboard [text]=\"textvalue\" [width]=\"item._min != undefined ? item._min : 0.5\" [height]=\"item._max != undefined ? item._max : 0.17\" [selectable]=\"selectable\" [enabled]=\"item.enabled\"\r\n                          (change)=\"textvalue=$event\" (enter)=\"enter()\" (openinput)=\"input.openkeyboard($event, keyboard, textvalue)\">\r\n      </flat-ui-input-textarea>\r\n    </ngt-group>\r\n  </ng-template>\r\n  <ng-template [ngSwitchCase]=\"'function'\">\r\n    <ngt-group horizontal-layout [margin]=\"0.02\">\r\n      <flat-ui-button [text]=\"item.title\" [width]=\"width-0.04\" [selectable]=\"selectable\" [enabled]=\"item.enabled\"\r\n                      (pressed)=\"execute()\">\r\n      </flat-ui-button>\r\n    </ngt-group>\r\n  </ng-template>\r\n  <ng-template [ngSwitchCase]=\"'color'\">\r\n    <ngt-group horizontal-layout [margin]=\"0.02\">\r\n      <flat-ui-label [text]=\"item.title\" [width]=\"0.8\"></flat-ui-label>\r\n      <flat-ui-input-color #color [text]=\"colorvalue\" [selectable]=\"selectable\" [enabled]=\"item.enabled\"\r\n                           (change)=\"colorvalue=$event\" (openinput)=\"input.opencolor($event, color)\">\r\n      </flat-ui-input-color>\r\n      <flat-ui-input-text [text]=\"textvalue\" [overflow]=\"10\" [enabled]=\"false\"></flat-ui-input-text>\r\n    </ngt-group>\r\n  </ng-template>\r\n  <ng-template [ngSwitchCase]=\"'folder'\">\r\n    <ngt-group horizontal-layout>\r\n      <ng3-gui-folder [gui]=\"item.object\" [selectable]=\"selectable\"></ng3-gui-folder>\r\n    </ngt-group>\r\n  </ng-template>\r\n</ngt-group>\r\n","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\nimport { Group, Vector3 } from \"three\";\r\nimport { make, NgtObjectProps } from \"@angular-three/core\";\r\n\r\nimport { FlatUIInputService, InteractiveObjects } from \"ng3-flat-ui\";\r\n\r\nimport { Ng3GUI } from \"../ng3-gui\";\r\n\r\n@Component({\r\n  selector: 'ng3-gui',\r\n  exportAs: 'ng3GUI',\r\n  templateUrl: './gui.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [FlatUIInputService],\r\n})\r\nexport class Ng3GUIComponent extends NgtObjectProps<Group> {\r\n  @Input() gui!: Ng3GUI;\r\n\r\n  @Input() locked = false;\r\n  @Input() sixdof = true;\r\n\r\n  @Input() showexpand = true;\r\n  @Input() showclose = true;\r\n  @Input() scalable = true;\r\n\r\n  @Input() expanded = true;\r\n\r\n  @Input() selectable?: InteractiveObjects;\r\n\r\n  constructor(public input: FlatUIInputService) {\r\n    super();\r\n  }\r\n\r\n  override preInit() {\r\n    super.preInit();\r\n    this.input.scale = make(Vector3, this.scale);\r\n  }\r\n\r\n  pressed(keycode: string) {\r\n    if (keycode == 'Enter') {\r\n      this.input.method.enter.next();\r\n    }\r\n  }\r\n\r\n}\r\n","<flat-ui-drag-panel [selectable]=\"selectable\" [overflow]=\"59\" [sixdof]=\"sixdof\" [title]=\"gui.title\" [width]=\"gui.width\" [height]=\"gui.height\" [position]=\"position\" [rotation]=\"rotation\" [scale]=\"scale\"\r\n                    [locked]=\"locked\" [showclose]=\"showclose\" [showexpand]=\"showexpand\" [scalable]=\"scalable\" [expanded]=\"expanded\">\r\n  <ng-template let-parent=\"parent\">\r\n    <ngt-group vertical-layout (heightchange)=\"gui.height=$event\" [appendTo]=\"parent\" [margin]=\"0.02\" [position]=\"[-gui.width/2, gui.height/2, 0.001]\">\r\n\r\n      <ng3-gui-item *ngFor=\"let item of gui.list\" [item]=\"item\" [width]=\"gui.width\" [selectable]=\"selectable\"></ng3-gui-item>\r\n\r\n    </ngt-group>\r\n  </ng-template>\r\n</flat-ui-drag-panel>\r\n\r\n<flat-ui-list *ngIf=\"input.showlist\" [list]=\"input.list\" [selectedtext]=\"input.method.text\"\r\n              [position]=\"input.position\" [rotation]=\"input.rotation\" [scale]=\"scale\" [selectable]=\"selectable\"\r\n              (change)=\"input.method.text = $event.text;input.showlist=false\" (close)=\"input.showlist=false;input.closeinput()\">\r\n</flat-ui-list>\r\n\r\n<flat-ui-color-picker *ngIf=\"input.showpicker\" [colorvalue]=\"input.method.text\"\r\n                      [position]=\"input.position\" [rotation]=\"input.rotation\" [scale]=\"scale\" [selectable]=\"selectable\"\r\n                      (colorpicked)=\"input.method.text = $event\" (close)=\"input.showpicker=false;input.closeinput()\">\r\n</flat-ui-color-picker>\r\n\r\n<flat-ui-keyboard *ngIf=\"input.showkeyboard\" [text]=\"input.method.text\" [allowenter]=\"true\"\r\n                  [position]=\"input.position\" [rotation]=\"input.rotation\" [scale]=\"scale\" [selectable]=\"selectable\"\r\n                  (change)=\"input.method.text = $event\" (pressed)=\"pressed($event)\" (close)=\"input.showkeyboard=false;input.closeinput()\">\r\n</flat-ui-keyboard>\r\n\r\n<flat-ui-numpad *ngIf=\"input.shownumpad\" [text]=\"input.method.text\"\r\n                [position]=\"input.position\" [rotation]=\"input.rotation\" [scale]=\"scale\" [selectable]=\"selectable\"\r\n                (change)=\"input.method.text = $event\" (pressed)=\"pressed($event)\" (close)=\"input.shownumpad=false;input.closeinput()\">\r\n</flat-ui-numpad>\r\n","import { ListItem } from \"ng3-flat-ui\";\r\n\r\nexport class Controller {\r\n  title!: string;\r\n  _decimals: number;\r\n  enabled = true;\r\n  private initialValue: any;\r\n\r\n  constructor(\r\n    public parent: Ng3GUI,\r\n    public object: any,\r\n    public property: string,\r\n    public classname: string,\r\n    public _min?: number | any | any[],\r\n    public _max?: number,\r\n    public _step?: number\r\n  ) {\r\n    this.title = property;\r\n    this._decimals = 0;\r\n    this.initialValue = this.getValue();\r\n  }\r\n\r\n  getValue(): any { return this.object[this.property] }\r\n  setValue(newvalue: any): Controller {\r\n    if (this.object[this.property] != newvalue) {\r\n      this.object[this.property] = newvalue\r\n      this._callOnChange();\r\n    }\r\n    return this;\r\n  }\r\n\r\n  name(newvalue: string): Controller { this.title = newvalue; return this; }\r\n  max(newvalue: number): Controller { this._max = newvalue; return this; }\r\n  min(newvalue: number): Controller { this._min = newvalue; return this; }\r\n  step(newvalue: number): Controller { this._step = newvalue; return this; }\r\n  decimals(newvalue: number) { this._decimals = newvalue; return this; }\r\n\r\n  listen(): Controller { return this; }\r\n\r\n  disable(): Controller { this.enabled = false; return this; }\r\n  enable(): Controller { this.enabled = true; return this; }\r\n  reset(): Controller {\r\n    this.setValue(this.initialValue);\r\n    this._callOnFinishChange();\r\n    return this;\r\n  }\r\n\r\n  public _changeCallback!: (event: any) => void;\r\n  onChange(callback: (e: any) => void): Controller { this._changeCallback = callback; return this; }\r\n  protected _callOnChange() {\r\n    this.parent._callOnChange(this);\r\n\r\n    if (this._changeCallback !== undefined) {\r\n      this._changeCallback.call(this, this.getValue());\r\n    }\r\n    this._changed = true;\r\n  }\r\n\r\n  public _finishCallback!: (event: any) => void;\r\n  onFinishChange(callback: (e: any) => void): Controller { this._finishCallback = callback; return this; }\r\n\r\n  _changed = false;\r\n  _callOnFinishChange() {\r\n\r\n    if (this._changed) {\r\n\r\n      this.parent._callOnFinishChange(this);\r\n\r\n      if (this._finishCallback !== undefined) {\r\n        this._finishCallback.call(this, this.getValue());\r\n      }\r\n\r\n    }\r\n    this._changed = false;\r\n  }\r\n\r\n}\r\n\r\nexport class Ng3GUI {\r\n  list: Array<Controller> = [];\r\n\r\n  parent?: Ng3GUI;\r\n  root!: Ng3GUI;\r\n  title = '';\r\n  width = 150;\r\n  height = 150;\r\n\r\n  constructor({\r\n    parent,\r\n    title = 'Controls',\r\n    width = 150,\r\n    height = 150,\r\n  }: {\r\n    parent?: Ng3GUI,\r\n    title?: string,\r\n    width?: number,\r\n    height?: number,\r\n  }) {\r\n    this.parent = parent;\r\n    this.title = title;\r\n    this.width = width / 150;\r\n    this.height = height / 150;\r\n    this.root = parent ? parent.root : this;\r\n  }\r\n\r\n  add(object: any, property: string, min?: number | object | any[], max?: number, step?: number): Controller {\r\n    let classname = ''\r\n    let data: any = min;\r\n\r\n    if (Object(min) === min) {\r\n      classname = 'options';\r\n      const values = Array.isArray(min) ? min : Object.values(min as []);\r\n      const names = Array.isArray(min) ? min : Object.keys(min as []);\r\n\r\n      const list: Array<ListItem> = [];\r\n      names.forEach((name, index) => {\r\n        list.push({ text: name.toString(), data: values[index] });\r\n      });\r\n\r\n      data = list\r\n    }\r\n    else {\r\n      const initialValue = object[property];\r\n      classname = typeof initialValue;\r\n    }\r\n    const controller = new Controller(this, object, property, classname, data, max, step);\r\n    this.list.push(controller);\r\n    return controller;\r\n  }\r\n\r\n  addFolder(title: string): Ng3GUI {\r\n    const gui = new Ng3GUI({ parent: this, title, width: this.width * 150, height: this.height * 150 });\r\n    const controller = new Controller(this, gui, title, 'folder');\r\n    this.list.push(controller);\r\n    return gui;\r\n  }\r\n\r\n  addColor(object: any, property: string, rgbScale = 1): Controller {\r\n    const controller = new Controller(this, object, property, 'color');\r\n    this.list.push(controller);\r\n    return controller;\r\n  }\r\n\r\n  addTextArea(object: any, property: string, width: number, height: number): Controller {\r\n    const controller = new Controller(this, object, property, 'textarea', width, height);\r\n    this.list.push(controller);\r\n    return controller;\r\n  }\r\n\r\n  reset(recursive = true) {\r\n    this.list.forEach(c => c.reset());\r\n    return this;\r\n  }\r\n  settitle(newvalue: string): Ng3GUI { this.title = newvalue; return this; }\r\n\r\n  expanded = true;\r\n  open(): Ng3GUI { this.expanded = true; return this; }\r\n  close(): Ng3GUI { this.expanded = false; return this; }\r\n\r\n  public _changeCallback!: (event: any) => void;\r\n  onChange(callback: (e: any) => void): Ng3GUI { this._changeCallback = callback; return this; }\r\n\r\n  _callOnChange(controller: { object: any; property: any; getValue: () => any; }) {\r\n    if (this.parent) {\r\n      this.parent?._callOnChange(controller);\r\n    }\r\n\r\n    if (this._changeCallback !== undefined) {\r\n      this._changeCallback.call(this, {\r\n        object: controller.object,\r\n        property: controller.property,\r\n        value: controller.getValue(),\r\n        controller\r\n      });\r\n    }\r\n  }\r\n\r\n  public _finishCallback!: (event: any) => void;\r\n  onFinishChange(callback: (e: any) => void): Ng3GUI { this._finishCallback = callback; return this; }\r\n\r\n\r\n  _changed = false;\r\n\r\n  _callOnFinishChange(controller: Controller) {\r\n\r\n    if (this._changed) {\r\n\r\n      this.parent?._callOnFinishChange(controller);\r\n\r\n      if (this._finishCallback !== undefined) {\r\n        this._finishCallback.call(this, {\r\n          object: controller.object,\r\n          property: controller.property,\r\n          value: controller.getValue(),\r\n          controller\r\n        });\r\n      }\r\n\r\n    }\r\n    this._changed = false;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { NgtGroupModule } from '@angular-three/core/group';\r\n\r\nimport { Ng3GUIComponent } from './gui/gui.component';\r\nimport { Ng3GUIFolderComponent, Ng3GUIItemComponent } from './gui-item/gui-item.component';\r\n\r\nimport { Ng3FlatUiModule } from 'ng3-flat-ui';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    Ng3GUIItemComponent,\r\n    Ng3GUIFolderComponent,\r\n    Ng3GUIComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    NgtGroupModule,\r\n    Ng3FlatUiModule,\r\n  ],\r\n  exports: [\r\n    Ng3GUIComponent,\r\n  ]\r\n})\r\nexport class Ng3GuiModule { }\r\n","/*\n * Public API Surface of ng3-gui\n */\n\nexport * from './lib/gui/gui.component';\nexport * from './lib/gui-item/gui-item.component';\n\nexport * from './lib/ng3-gui';\n\nexport * from './lib/ng3-gui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4.Ng3GUIItemComponent"],"mappings":"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"}