{"version":3,"file":"universis-ngx-query-builder.mjs","sources":["../../src/lib/ngx-query-element.form.ts","../../src/lib/ngx-query-builder.service.ts","../../src/lib/ngx-query-element.component.ts","../../src/lib/ngx-query-element.component.html","../../src/lib/ngx-composite-query-element.component.ts","../../src/lib/ngx-composite-query-element.component.html","../../src/lib/ngx-query-builder.component.ts","../../src/lib/ngx-query-builder.component.html","../../src/lib/ngx-query-builder-container.component.ts","../../src/lib/ngx-query-builder-container.component.html","../../src/lib/i18n/query-builder.el.ts","../../src/lib/i18n/query-builder.en.ts","../../src/lib/ngx-query-builder.module.ts","../../src/public-api.ts","../../src/universis-ngx-query-builder.ts"],"sourcesContent":["export const QUERY_ELEMENT_FORM = {\n  \"settings\": {\n    \"i18n\": {\n      \"el\": {\n      },\n      \"en\": {\n      }\n    }\n  },\n  \"components\": [\n    {\n      \"label\": \"Columns\",\n      \"columns\": [\n        {\n          \"components\": [\n\n            {\n              \"label\": \"Select\",\n              \"widget\": \"choicesjs\",\n              \"hideLabel\": true,\n              \"tableView\": true,\n              \"dataSrc\": \"custom\",\n              \"data\": {\n                \"custom\": \"values = form.properties\"\n              },\n              \"customOptions\": {\n                \"shouldSort\": true,\n                \"searchResultLimit\": 15,\n                \"removeItemButton\": false,\n              },\n              \"dataType\": \"object\",\n              \"key\": \"left\",\n              \"type\": \"select\",\n              \"input\": true\n            }\n          ],\n          \"width\": 3,\n          \"offset\": 0,\n          \"push\": 0,\n          \"pull\": 0,\n          \"size\": \"md\",\n          \"currentWidth\": 3\n        },\n        {\n          \"components\": [\n            {\n              \"label\": \"Select\",\n              \"customClass\": \"formio-html-select\",\n              \"widget\": \"html5\",\n              \"hideLabel\": true,\n              \"tableView\": true,\n              \"customOptions\": {\n                \"searchResultLimit\": 15,\n                \"removeItemButton\": false,\n              },\n              \"data\": {\n                \"values\": [\n                  {\n                    \"label\": \"equal\",\n                    \"value\": \"$eq\"\n                  },\n                  {\n                    \"label\": \"notEqual\",\n                    \"value\": \"$ne\"\n                  },\n                  {\n                    \"label\": \"greaterThan\",\n                    \"value\": \"$gt\"\n                  },\n                  {\n                    \"label\": \"greaterOrEqual\",\n                    \"value\": \"$ge\"\n                  },\n                  {\n                    \"label\": \"lowerThan\",\n                    \"value\": \"$lt\"\n                  },\n                  {\n                    \"label\": \"lowerOrEqual\",\n                    \"value\": \"$le\"\n                  },\n                  {\n                    \"label\": \"contains\",\n                    \"value\": \"$contains\"\n                  }\n                ]\n              },\n              \"key\": \"operator\",\n              \"type\": \"select\",\n              \"input\": true\n            }\n          ],\n          \"width\": 3,\n          \"offset\": 0,\n          \"push\": 0,\n          \"pull\": 0,\n          \"size\": \"md\",\n          \"currentWidth\": 3\n        },\n        {\n          \"label\": \"RightColumn\",\n          \"columns\": [\n\n          ],\n          \"key\": \"rightColumn\",\n          \"type\": \"columns\",\n          \"input\": false,\n          \"tableView\": false\n        },\n        {\n          \"label\": \"Right\",\n          \"components\": [\n            {\n              \"label\": \"Edm.None\",\n              \"hideLabel\": true,\n              \"tableView\": true,\n              \"disabled\": true,\n              \"key\": \"right\",\n              \"type\": \"textfield\",\n              \"customConditional\": \"show = (data.left == null || (data.left && data.left.value == null))\",\n              \"input\": true\n            },\n            {\n              \"label\": \"Edm.String\",\n              \"hideLabel\": true,\n              \"tableView\": true,\n              \"key\": \"right\",\n              \"type\": \"textfield\",\n              \"customConditional\": \"show = (data.left && (data.left.type == 'Note' || data.left.type == 'Edm.String' || data.left.type == 'Edm.Guid'))\",\n              \"input\": true\n            },\n            {\n              \"label\": \"Edm.Number\",\n              \"hideLabel\": true,\n              \"tableView\": true,\n              \"key\": \"right\",\n              \"type\": \"number\",\n              \"customConditional\": \"show = !!(data.left && (data.left.type === 'Edm.Int16' || data.left.type === 'Edm.Int32' || data.left.type === 'Edm.Int64' || data.left.type === 'Edm.Decimal' || data.left.type === 'Edm.Double'))\",\n              \"input\": true\n            },\n            {\n              \"label\": \"Edm.Boolean\",\n              \"customClass\": \"formio-html-select\",\n              \"widget\": \"html5\",\n              \"hideLabel\": true,\n              \"tableView\": true,\n              \"key\": \"right\",\n              \"data\": {\n                \"values\": [\n                  {\n                    \"label\": \"Yes\",\n                    \"value\": \"true\"\n                  },\n                  {\n                    \"label\": \"No\",\n                    \"value\": \"false\"\n                  }\n                ]\n              },\n              \"type\":\"select\",\n              \"customConditional\": \"show = !!(data.left && data.left.type === 'Edm.Boolean')\",\n              \"input\": true\n            },\n            {\n              \"label\": \"Edm.DateTimeOffset\",\n              \"customProperties\": {\n                \"target\": \"right\"\n              },\n              \"useLocaleSettings\": true,\n              \"format\": \"dd-MMM-yyyy\",\n              \"hideLabel\": true,\n              \"hidden\": true,\n              \"tableView\": false,\n              \"customConditional\": \"show = !!(data.left && (data.left.type == 'Edm.DateTimeOffset' || data.left.type == 'Edm.Date'))\",\n              \"datePicker\": {\n                \"disableWeekends\": false,\n                \"disableWeekdays\": false\n              },\n              \"enableTime\": false,\n              \"enableMinDateInput\": false,\n              \"enableMaxDateInput\": false,\n              \"key\": \"right\",\n              \"type\": \"datetime\",\n              \"input\": true,\n              \"widget\": {\n                \"type\": \"calendar\",\n                \"displayInTimezone\": \"viewer\",\n                \"locale\": \"en\",\n                \"useLocaleSettings\": true,\n                \"allowInput\": true,\n                \"mode\": \"single\",\n                \"enableTime\": false,\n                \"noCalendar\": false,\n                \"format\": \"dd-MMM-yyyy\",\n                \"hourIncrement\": 1,\n                \"minuteIncrement\": 1,\n                \"time_24hr\": false,\n                \"minDate\": null,\n                \"disableWeekends\": false,\n                \"disableWeekdays\": false,\n                \"maxDate\": null\n              }\n            },\n            {\n              \"label\": \"Edm.Collection\",\n              \"customProperties\": {\n                \"target\": \"right\"\n              },\n              \"customOptions\": {\n                \"placeholder\": true,\n                \"placeholderValue\": \"Empty\"\n              },\n              \"labelPosition\": \"top\",\n              \"widget\": \"choicesjs\",\n              \"hideLabel\": true,\n              \"searchEnabled\": false,\n              \"dataSrc\": \"url\",\n              \"customConditional\": \"show = !!(data.left && (data.left.type == 'Edm.Collection'))\",\n              \"data\": {\n                \"values\": [],\n                \"url\": \"/{{data.left.entitySet}}?$select=id as value,name as text\"\n              },\n              \"selectThreshold\": 0.3,\n              \"lazyLoad\": true,\n              \"template\": \"{{ item.text }}\",\n              \"dataType\": \"object\",\n              \"idPath\": \"value\",\n              \"selectValues\": \"value\",\n              \"key\": \"right\",\n              \"type\": \"select\",\n              \"input\": true\n            },\n            \n          ],\n          \"size\": \"md\",\n          \"width\": 3,\n          \"offset\": 0,\n          \"push\": 0,\n          \"pull\": 0,\n          \"currentWidth\": 3\n        },\n        {\n          \"components\": [\n            {\n              \"label\": \"\",\n              \"action\": \"event\",\n              \"showValidations\": false,\n              \"theme\": \"gray-100\",\n              \"customClass\": \"text-theme pr-2 d-none d-md-block\",\n              \"leftIcon\": \"fa fa-times\",\n              \"tableView\": false,\n              \"key\": \"remove\",\n              \"type\": \"button\",\n              \"event\": \"remove\",\n              \"input\": true,\n              \"logic\": [\n                {\n                  \"name\": \"disableRemoveLogic\",\n                  \"trigger\": {\n                    \"type\": \"simple\",\n                    \"simple\": {\n                      \"show\": true,\n                      \"when\": \"removable\",\n                      \"eq\": false\n                    }\n                  },\n                  \"actions\": [\n                    {\n                      \"name\": \"disableRemoveLogicAction\",\n                      \"type\": \"property\",\n                      \"property\": {\n                        \"label\": \"Disabled\",\n                        \"value\": \"disabled\",\n                        \"type\": \"boolean\"\n                      },\n                      \"state\": true\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"label\": \"RemoveFilter\",\n              \"action\": \"event\",\n              \"showValidations\": false,\n              \"theme\": \"gray-100\",\n              \"block\": true,\n              \"customClass\": \"text-theme btn-sm d-md-none d-xs-block\",\n              \"tableView\": false,\n              \"key\": \"remove\",\n              \"type\": \"button\",\n              \"event\": \"remove\",\n              \"input\": true,\n              \"logic\": [\n                {\n                  \"name\": \"disableRemoveLogic\",\n                  \"trigger\": {\n                    \"type\": \"simple\",\n                    \"simple\": {\n                      \"show\": true,\n                      \"when\": \"removable\",\n                      \"eq\": false\n                    }\n                  },\n                  \"actions\": [\n                    {\n                      \"name\": \"disableRemoveLogicAction\",\n                      \"type\": \"property\",\n                      \"property\": {\n                        \"label\": \"Disabled\",\n                        \"value\": \"disabled\",\n                        \"type\": \"boolean\"\n                      },\n                      \"state\": true\n                    }\n                  ]\n                }\n              ]\n            }\n          ],\n          \"size\": \"md\",\n          \"width\": 3,\n          \"offset\": 0,\n          \"push\": 0,\n          \"pull\": 0,\n          \"currentWidth\": 3\n        }\n      ],\n      \"key\": \"columns\",\n      \"type\": \"columns\",\n      \"input\": false,\n      \"tableView\": false\n    }\n  ]\n}","import { Injectable } from '@angular/core';\nimport { AngularDataContext } from '@themost/angular';\nimport { QUERY_ELEMENT_FORM } from './ngx-query-element.form';\nimport { cloneDeep } from 'lodash';\nimport { ServiceUrlPreProcessor } from '@universis/forms';\nimport { ComponentSchema } from 'formiojs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EventEmitter } from '@angular/core';\nimport { EdmSchema, TextUtils } from '@themost/client';\n\nexport declare interface FormComponent extends ComponentSchema {\n  components?: FormComponent[];\n  properties?: {\n    entityType?: string,\n    entitySet?: string,\n  },\n  columns?: FormComponent[];\n  customConditional?: string;\n  dataSrc?: string;\n  data?: any;\n  selectThreshold?: number;\n  lazyLoad?: boolean;\n  template?: string;\n  valueProperty?: string;\n  selectValues?: string;\n  dataType?: string;\n  idPath?: string\n}\n\nexport interface QueryElement {\n  operator: string;\n  left?: any;\n  right?: any;\n  type?: string;\n  elements?: QueryElement[];\n}\n\nexport interface QueryProperty {\n  label: string,\n  value: string,\n  type: string,\n  entitySet?: string,\n  hidden?: boolean,\n  source?: string,\n  template?: string\n}\n\nexport interface BasicQueryElement extends QueryElement {\n  left: any;\n  right: any;\n}\n\nexport interface CompositeQueryElement extends QueryElement  {\n  elements: QueryElement[];\n}\n\n@Injectable()\nexport class QueryBuilderService {\n\n  public loadingComponent = new EventEmitter<FormComponent>(false);\n  public loadingProperties = new EventEmitter<QueryProperty[]>(false);\n\n  constructor(protected context: AngularDataContext, protected translateService: TranslateService) { }\n\n  public findComponent(element: FormComponent, label: string) {\n    if (Array.isArray(element.components)) {\n      for (const item of element.components) {\n        if (item.label === label) {\n          return item;\n        }\n        const result = this.findComponent(item, label);\n        if (result) {\n          return result;\n        }\n      }\n    }\n    if (Array.isArray(element.columns)) {\n      for (const item of element.columns) {\n        if (item.label === label) {\n          return item;\n        }\n        const result = this.findComponent(item, label);\n        if (result) {\n          return result;\n        }\n      }\n    }\n  }\n\n  private deepFindProperty(schema: EdmSchema, entityType: string, property: string): { Name: string, Type: string, EntityType: string } | undefined {\n    let thisEntityType = schema.EntityType.find((item) => item.Name === entityType);\n    if (thisEntityType != null) {\n      // try to find property\n      let find: { Name: string, Type: string } | undefined = thisEntityType.Property.find((item) => item.Name === property);\n      if (find != null) {\n        return {\n          Name: find.Name,\n          Type: find.Type,\n          EntityType: thisEntityType.Name\n        };\n      }\n      // try to find navigation property\n      find = thisEntityType.NavigationProperty.find((item) => item.Name === property);\n      if (find != null) {\n        return {\n          Name: find.Name,\n          Type: find.Type,\n          EntityType: thisEntityType.Name\n        };\n      }\n      if (thisEntityType.BaseType) {\n        return this.deepFindProperty(schema, thisEntityType.BaseType, property);\n      }\n    }\n    return;\n  }\n\n  private deepFindAnyProperty(schema: EdmSchema, anyEntityType: string, anyProperty: string): { Name: string, FullyQualifiedName?: string, Type: string, EntityType: string } | undefined {\n    const properties = anyProperty.split('/');\n    let entityType = anyEntityType;\n    let index = 0;\n    let result: { Name: string; Type: string; EntityType: string; } | undefined;\n    while(index < properties.length) {\n      const property = properties[index];\n      result = this.deepFindProperty(schema, entityType, property);\n      if (index < properties.length) {\n        if (result && result.Type) {\n          entityType = result.Type;\n        } \n      }\n      index += 1;\n    }\n    if (result) {\n      return Object.assign(result, {\n        FullyQualifiedName: anyProperty\n      });\n    }\n    return;\n  }\n\n  async getQueryElementForm(entityType: string, extraOptions?: {\n    includeProperties: string[]\n  }) {\n    const schema = await this.context.getMetadata();\n    const findEntityType = schema.EntityType.find((item) => item.Name === entityType);\n    if (findEntityType == null) {\n      throw new Error('The specified entity type cannot be found');\n    }\n    let props: { Name: string, FullyQualifiedName?: string, Type: string, EntityType: string }[] = [];\n    if (extraOptions && extraOptions.includeProperties) {\n      extraOptions.includeProperties.forEach((includeProperty) => {\n        const prop = this.deepFindAnyProperty(schema, entityType, includeProperty);\n        if (prop) {\n          props.push(prop)\n        }\n      });\n    } else {\n      props = ([] as any[]).concat(...findEntityType.Property).concat(...findEntityType.NavigationProperty);\n    }\n    \n    const properties : QueryProperty[] =  props.map((prop) => {\n      const result: QueryProperty = {\n          label: prop.Name,\n          value: `$${prop.FullyQualifiedName}`,\n          type: prop.Type,\n        };\n        if (/^Edm\\./.test(prop.Type) === false) {\n          const findEntitySet = schema.EntityContainer.EntitySet.find((item) => item.EntityType === prop.Type);\n          if (findEntitySet) {\n            Object.assign(result, {\n              entitySet: findEntitySet.Name\n            });\n            Object.defineProperty(result, 'source', {\n              configurable: true,\n              enumerable: false,\n              writable: true,\n              value: `/${result.entitySet}?$top={{ limit }}&$skip={{ skip }}&$select=id as raw,name as label`\n            });\n          }\n        }\n        return result;\n      }).sort((a, b) => {\n        if (a.label > b.label) {\n          return 1;\n        }\n        if (a.label < b.label) {\n          return -1;\n        }\n        return 0;\n      });\n    \n    const newQueryElementForm = cloneDeep(QUERY_ELEMENT_FORM);\n    // get template component\n    const rightComponent: FormComponent = this.findComponent(newQueryElementForm as any, 'Right');\n    this.loadingProperties.emit(properties);\n    properties.forEach((item) => {\n      if (item.entitySet != null) {\n        // try to find if component has been already set\n        const findComponent = this.findComponent(rightComponent, item.type);\n        if (findComponent == null) {\n          // create component for entitySet\n          const newComponent = {\n            \"label\": item.type,\n            \"properties\": {\n              \"entityType\": item.type,\n              \"entitySet\": item.entitySet\n            },\n            \"widget\": \"choicesjs\",\n            \"hideLabel\": true,\n            \"dataSrc\": \"url\",\n            \"customOptions\": {\n              \"placeholder\": true,\n              \"placeholderValue\": this.translateService.instant('QueryBuilder.Empty')\n            },\n            \"customConditional\": `show = !!(data.left && (data.left.type === '${item.type}'))`,\n            \"data\": {\n              \"url\": item.source\n            },\n            \"selectThreshold\": 0.3,\n            \"lazyLoad\": true,\n            \"template\": item.template || \"{{ item.label }}\",\n            \"dataType\": \"object\",\n\t\t\t\t\t\t\"idPath\": \"val\",\n            \"selectValues\": \"value\",\n            \"key\": \"right\",\n            \"type\": \"select\",\n            \"input\": true\n          };\n          this.loadingComponent.emit(newComponent);\n          if (Array.isArray(rightComponent.components)) {\n            rightComponent.components.push(newComponent);\n          }\n        }\n      }\n    });\n    new ServiceUrlPreProcessor(this.context).parse(newQueryElementForm);\n    Object.assign(newQueryElementForm, {\n      properties: properties.filter((property) => !property.hidden)\n    });\n    return newQueryElementForm;\n  }\n\n  public getQueryFrom(element: QueryElement): string {\n    if (element.type === 'LogicalExpression') {\n      // expect element.elements to be an instance of Array\n      if (Array.isArray(element.elements) === false) {\n        throw new Error('A logical expression should have two or more expressions');\n      }\n      const results: string[] = [];\n      if (Array.isArray(element.elements)) {\n        for (const child of element.elements) {\n          const result = this.getQueryFrom(child);\n          results.push(result);\n        }\n      }\n      let str = results.length > 1 ? '(' : '';\n      str += results.join(' ' + element.operator.replace(/^\\$/, '') + ' ');\n      str += results.length > 1 ? ')' : '';;\n      return str;\n    } else if (element.type === 'BinaryExpression') {\n      // expect left and right operands\n      const leftOperand = (element as BasicQueryElement).left;\n      if (leftOperand == null) {\n        throw new Error('Expected left operand');\n      }\n      const right = (element as BasicQueryElement).right;\n      if (right == null) {\n        throw new Error('Expected left operand');\n      }\n      const left = leftOperand.value.replace(/^\\$/, '').replace(/^\\./g, '/');\n      const operator = element.operator.replace(/^\\$/, '');\n      let value: any;\n      if (typeof right === 'object') {\n        value = TextUtils.escape(right.raw);\n      } else {\n        value = TextUtils.escape(right);\n      }\n      if (operator === 'contains') {\n        return `(indexof(${left}, ${value}) ge 0)`;\n      }\n      return `(${left} ${operator} ${value})`;\n    } else {\n      throw new Error(`Query element of type ${element.type} is not supported`);\n    }\n  }\n\n  public getTextFrom(element: QueryElement): string {\n    if (element.type === 'LogicalExpression') {\n      // expect element.elements to be an instance of Array\n      if (Array.isArray(element.elements) === false) {\n        throw new Error('A logical expression should have two or more expressions');\n      }\n      const results: string[] = [];\n      if (Array.isArray(element.elements)) {\n        for (const child of element.elements) {\n          const result = this.getTextFrom(child);\n          results.push(result);\n        }\n      }\n      let str = results.length > 1 ? '(' : '';\n      str += results.join(' ' + this.translateService.instant(`QueryBuilder.${element.operator}`) + ' ');\n      str += results.length > 1 ? ')' : '';;\n      return str;\n    } else if (element.type === 'BinaryExpression') {\n      // expect left and right operands\n      const leftOperand = (element as BasicQueryElement).left;\n      if (leftOperand == null) {\n        throw new Error('Expected left operand');\n      }\n      const right = (element as BasicQueryElement).right;\n      if (right == null) {\n        throw new Error('Expected right operand');\n      }\n      const left = this.translateService.instant(leftOperand.label);\n      const operator = this.translateService.instant(`QueryBuilder.${element.operator}`).replace(/^\\./g, '/');\n      let value: any;\n      if (typeof right === 'object') {\n        value = this.translateService.instant(right.label);\n      } else if (typeof right === 'boolean') {\n        value = right ? this.translateService.instant('QueryBuilder.true') : this.translateService.instant('QueryBuilder.false');\n      } else {\n        value = (right == null || right === '') ? this.translateService.instant('QueryBuilder.Empty') : right;\n      }\n      return `(${left} ${operator} ${value})`;\n    } else {\n      throw new Error(`Query element of type ${element.type} is not supported`);\n    }\n  }\n\n\n\n}\n","import { Component, ViewEncapsulation, OnInit, AfterViewInit, OnChanges, SimpleChanges, Input, ViewChild, Output, OnDestroy } from '@angular/core';\nimport { BasicQueryElement, FormComponent, QueryBuilderService, QueryElement } from './ngx-query-builder.service';\nimport { TextUtils } from '@themost/client';\nimport { EventEmitter } from '@angular/core';\nimport { FormioComponent, FormioRefreshValue } from '@formio/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { FormatWidth, getLocaleDateFormat } from '@angular/common';\n\nexport class UndefinedFormError extends Error {\n  constructor() {\n    super('Form element cannot be empty at this context');\n  }\n}\n\n@Component({\n    selector: 'universis-query-element',\n    templateUrl: './ngx-query-element.component.html',\n    styleUrls: [\n        './ngx-query-element.component.scss'\n    ],\n    encapsulation: ViewEncapsulation.None\n  })\n  export class QueryElementComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n    private changeSubscription?: Subscription;\n    private customEventSubscription?: Subscription;\n\n    constructor(protected translateService: TranslateService, protected queryBuilderService: QueryBuilderService) {\n      //\n    }\n  ngOnDestroy(): void {\n    if (this.changeSubscription) {\n      this.changeSubscription.unsubscribe();\n    }\n    if (this.customEventSubscription) {\n      this.customEventSubscription.unsubscribe();\n    }\n  }\n\n    @Input() element: QueryElement = {\n      left: null,\n      operator: '$eq',\n      right: null\n    };\n    @Input() template: any;\n    @Input() customParams: any = {};\n    @Input() removable?: boolean;\n    public loading = true;\n    @Output() remove = new EventEmitter();\n    @ViewChild('form') form?: FormioComponent;\n    public refresh = new EventEmitter<FormioRefreshValue>()\n\n    public property?: { label: string; value: string; type: string };\n\n    ngOnInit(): void {\n        \n    }\n    ngAfterViewInit(): void {\n      const left = this.template.properties.find((item) => this.element.left != null && this.element.left.value === item.value);\n      const operator = this.element.operator || '$eq';\n      const right = this.element.right;\n      const removable = this.removable;\n      if (this.form == null) {\n        throw new UndefinedFormError();\n      }\n      this.form.submission = {\n        data: {\n          left,\n          operator,\n          right,\n          removable\n        }\n       };\n       const currentLang = this.translateService.currentLang;\n       const customParams = this.customParams || {};\n       Object.assign(this.template, {\n          customParams\n       });\n\n       // set date time format\n       const shortDateFormat = getLocaleDateFormat(this.translateService.currentLang, FormatWidth.Short);\n       const dateComponent = this.queryBuilderService.findComponent(this.template as FormComponent, 'Edm.DateTimeOffset');\n       if (dateComponent) {\n        dateComponent.format = shortDateFormat;\n        if (dateComponent.widget) {\n          dateComponent.widget.format = shortDateFormat;\n        }\n       }\n       \n       this.form.setForm(this.template);\n       const resources = this.form.formio.i18next.options.resources;\n       if (Object.prototype.hasOwnProperty.call(resources, currentLang) === false) {\n        resources[currentLang] = {\n          translation: {}\n        };\n       }\n       if (Object.prototype.hasOwnProperty.call(resources, 'QueryBuilder') === false) {\n          const translation = this.translateService.instant('QueryBuilder');\n          Object.assign(resources[currentLang].translation, translation);\n          Object.defineProperty(resources, 'QueryBuilder', {\n            configurable: true,\n            enumerable: false,\n            writable: true,\n            value: true\n          });\n       }\n       if (this.form) {\n        this.form.formio.language = currentLang;\n       }\n       this.refresh.emit({\n        submission: this.form.submission\n      });\n\n       this.form.formLoad.subscribe(() => {\n        setTimeout(() => {\n          this.loading = false;\n        }, 50);\n       });\n       this.changeSubscription = this.form.change.subscribe((event: any) => {\n        if (this.form == null) {\n          return;\n        }\n        if (event && event.data) {\n          if (event.changed && event.changed.component && event.changed.component.key === 'left') {\n            const submission = this.form.formio.submission;\n            submission.data.right = event.data.right = \"\";\n            setTimeout(() => {\n              return this.refresh.emit({\n                submission\n              });\n            }, 0);\n          }\n          this.element.left = event.data.left;\n          this.element.operator = event.data.operator;\n          this.element.right = event.data.right;\n          if (TextUtils.isDate(event.data.right)) {\n            this.element.right = event.data.right.substring(0,10);\n          }\n        }\n      });\n      this.customEventSubscription = this.form.customEvent.subscribe((event: any) => {\n        if (event.type === 'remove') {\n          this.remove.emit();\n        }\n      });\n    }\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.removable != null && changes.removable.firstChange === false) {\n          if (this.form) {\n            const submission = this.form.formio.submission;\n            submission.data.removable = changes.removable.currentValue;\n            this.refresh.emit({\n              submission\n            });\n          }\n        }\n    }\n\n  }","<div [ngClass]=\"{ 'formio-loading': loading }\">\n    <formio #form [refresh]=\"refresh\" ></formio>\n</div>","import { Component, ViewEncapsulation, OnInit, AfterViewInit, OnChanges, SimpleChanges, Input, Output, EventEmitter } from '@angular/core';\nimport { BasicQueryElement, CompositeQueryElement, QueryElement } from './ngx-query-builder.service';\n\n@Component({\n    selector: 'universis-query-composite-element',\n    templateUrl: './ngx-composite-query-element.component.html',\n    styleUrls: [\n        './ngx-query-element.component.scss'\n    ],\n    encapsulation: ViewEncapsulation.None\n  })\n  export class QueryCompositeElementComponent implements OnInit, AfterViewInit, OnChanges {\n\n    @Input() element?: QueryElement;\n    @Output() remove = new EventEmitter();\n    @Input() removable?: boolean;\n    @Input() elementTemplate: any = null;\n    @Input() customParams: any = {};\n\n    ngOnInit(): void {\n        //\n    }\n    ngAfterViewInit(): void {\n        //\n    }\n    ngOnChanges(changes: SimpleChanges): void {\n        //\n    }\n\n    addFilter() {\n      if (this.element) {\n        this.element.elements?.push({\n          type: 'BinaryExpression',\n          operator: '$eq',\n          left: null,\n          right: null\n        } as BasicQueryElement);\n      }\n    }\n\n    addInnerGroup(operator?: '$or' | '$and') {\n      if (this.element) {\n        this.element.elements?.push({\n          operator: operator || '$and',\n          type: 'LogicalExpression',\n          elements: [\n            {\n              type: 'BinaryExpression',\n              operator: '$eq',\n              left: null,\n              right: null\n            },\n            {\n              type: 'BinaryExpression',\n              operator: '$eq',\n              left: null,\n              right: null\n            }\n          ]\n        } as CompositeQueryElement);\n      }\n    }\n\n    onRemove(index: number) {\n      if (this.element) {\n        this.element.elements?.splice(index, 1);\n        if (this.element.elements?.length === 0) {\n          this.remove.emit();\n        }\n      }\n    }\n\n    switchGroup(operator: '$and' | '$or') {\n      if (this.element) {\n        this.element.operator = operator;\n      }\n    }\n\n  }","<div class=\"d-flex justify-content-start\" *ngIf=\"elementTemplate\">\n    <div class=\"mr-3 composite-element-placeholder\">\n      <span class=\"badge badge-pill badge-orange font-weight-normal\">\n        <ng-container [ngSwitch]=\"element?.operator\">\n            <span *ngSwitchCase=\"'$or'\" class=\"font-sm text-uppercase\" [translate]=\"'QueryBuilder.Or'\"></span>\n            <span  *ngSwitchDefault class=\"font-sm text-uppercase\" [translate]=\"'QueryBuilder.And'\"></span>\n        </ng-container>\n      </span>\n    </div>\n    <div class=\"mt-2 w-100\">\n        <ng-container *ngFor=\"let element1 of element?.elements;let i = index\">\n            <ng-container [ngSwitch]=\"!!(element1.elements && element1.elements.length)\">\n                <ng-container *ngSwitchCase=\"true\">\n                    <div class=\"mb-2\">\n                        <universis-query-composite-element [customParams]=\"customParams\" [removable]=\"element && element.elements && element.elements.length >= 2\" (remove)=\"onRemove(i)\"\n                            [elementTemplate]=\"elementTemplate\" [element]=\"element1\"></universis-query-composite-element>\n                    </div>\n                </ng-container>\n                <ng-container *ngSwitchDefault>\n                    <universis-query-element [customParams]=\"customParams\" [removable]=\"element && element.elements && element.elements.length >= 2\" (remove)=\"onRemove(i)\"\n                        [element]=\"element1\" [template]=\"elementTemplate\"></universis-query-element>\n                </ng-container>\n             </ng-container>\n        </ng-container>\n        <div class=\"mt-2\">\n            <div class=\"btn-group\">\n                <button (click)=\"switchGroup(element?.operator === '$and' ? '$or' : '$and')\" type=\"button\" class=\"btn btn-sm btn-gray-100 text-dark\" [translate]=\"'QueryBuilder.SwitchGroup'\">\n                </button>\n                <button type=\"button\" class=\"btn btn-sm btn-gray-100 dropdown-toggle dropdown-toggle-split\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                    <span class=\"sr-only\">Switch group</span>\n                </button>\n                <div class=\"dropdown-menu\">\n                    <button (click)=\"switchGroup('$and')\" type=\"button\" class=\"dropdown-item btn-sm text-dark\">\n                        <span class=\"mr-2\">&amp;</span><span [translate]=\"'QueryBuilder.And'\"></span>\n                    </button>\n                    <button (click)=\"switchGroup('$or')\" type=\"button\" class=\"dropdown-item btn-sm text-dark\">\n                    <span class=\"mr-2\">||</span><span [translate]=\"'QueryBuilder.Or'\"></span>\n                    </button>\n                </div>\n            </div>\n            <button (click)=\"addFilter()\" type=\"button\" class=\"ml-2 btn btn-sm btn-gray-100 text-theme\">\n                <span class=\"mr-2\">+</span><span class=\"d-none d-md-inline\" [translate]=\"'QueryBuilder.AddFilter'\"></span>\n                <span class=\"d-md-none\" [translate]=\"'QueryBuilder.Filter'\"></span>\n            </button>\n            \n            <div class=\"ml-2 btn-group\">\n                <button (click)=\"addInnerGroup('$and')\" type=\"button\" class=\"btn btn-sm btn-gray-100 text-theme\">\n                    <span class=\"mr-2\">+</span><span class=\"d-none d-md-inline\" [translate]=\"'QueryBuilder.AddInnerGroup'\"></span><span class=\"d-md-none\" [translate]=\"'QueryBuilder.InnerGroup'\"></span>\n                </button>\n                <button type=\"button\" class=\"btn btn-sm btn-gray-100 dropdown-toggle dropdown-toggle-split\"\n                    data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                    <span class=\"sr-only\">Toggle Dropdown</span>\n                </button>\n                <div class=\"dropdown-menu\">\n                    <button (click)=\"addInnerGroup('$and')\" type=\"button\" class=\"dropdown-item btn-sm text-theme\">\n                        <span class=\"mr-2\">&amp;</span><span [translate]=\"'QueryBuilder.And'\"></span>\n                    </button>\n                    <button (click)=\"addInnerGroup('$or')\" type=\"button\" class=\"dropdown-item btn-sm text-theme\">\n                        <span class=\"mr-2\">||</span><span [translate]=\"'QueryBuilder.Or'\"></span>\n                    </button>\n                </div>\n            </div>\n            <button *ngIf=\"removable\"  (click)=\"remove.emit()\" type=\"button\" class=\"ml-2 btn btn-sm btn-gray-100 text-danger\">\n                <span class=\"mr-2\">-</span><span class=\"d-none d-md-inline\" [translate]=\"'QueryBuilder.RemoveGroup'\"></span><span class=\"d-md-none\" [translate]=\"'QueryBuilder.InnerGroup'\"></span>\n            </button>\n        </div>\n    </div>\n  </div>","import { AfterViewInit, Component, ElementRef, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { AngularDataContext } from '@themost/angular';\nimport { CompositeQueryElement, QueryBuilderService, FormComponent, QueryProperty } from './ngx-query-builder.service';\nimport { EdmEntityType } from '@themost/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport { EventEmitter } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { NgForm } from '@angular/forms';\n\n@Component({\n  selector: 'universis-query-builder',\n  styleUrls: [\n    './ngx-query-builder.scss'\n  ],\n  templateUrl: './ngx-query-builder.component.html',\n  animations: [\n    trigger(\n      'inOutAnimation', \n      [\n        transition(\n          ':enter', \n          [\n            style({ opacity: 0 }),\n            animate('0.5s ease-out', \n                    style({ opacity: 1 }))\n          ]\n        ),\n        transition(\n          ':leave', \n          [\n            style({ opacity: 1 }),\n            animate('0.25s ease-in', \n                    style({ opacity: 0 }))\n          ]\n        )\n      ]\n    )\n  ],\n  encapsulation: ViewEncapsulation.None\n})\nexport class QueryBuilderComponent implements OnInit, AfterViewInit, OnChanges {\n\n  public lastError?: Error;\n  @ViewChild('builder') builder?: ElementRef;\n\n  @Input() @Output() query?: CompositeQueryElement;\n  @Input() persistent?: boolean = false;\n  @Input() includeProperties: string[] = [];\n  @Input() customParams: any = {\n  };\n  public saving = false;\n  public elementTemplate?: EdmEntityType;\n  @Input() entityType?: string;\n  public currentLang: string = 'en';\n  @Output() loadingComponent = new EventEmitter<FormComponent>(false);\n  @Output() loadingProperties = new EventEmitter<QueryProperty[]>(false);\n  @Output() save = new EventEmitter<{\n    title: string,\n    entityType: string,\n    query: CompositeQueryElement\n  }>();\n  \n  constructor(protected context: AngularDataContext,\n    protected translateService: TranslateService,\n    protected queryBuilder: QueryBuilderService) { }\n  \n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.entityType) {\n      //\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.lastError = undefined;\n    // get metadata\n    const propertySubscription = this.queryBuilder.loadingProperties.subscribe((properties) => {\n      this.loadingProperties.emit(properties);\n    });\n    const componentSubscription = this.queryBuilder.loadingComponent.subscribe((formComponent) => {\n      this.loadingComponent.emit(formComponent)\n    });\n    if (this.entityType) {\n      this.queryBuilder.getQueryElementForm(this.entityType, {\n        includeProperties: this.includeProperties\n      }).then((template) => {\n        this.elementTemplate = template as any;\n        componentSubscription.unsubscribe();\n        propertySubscription.unsubscribe();\n      });\n    }\n  }\n\n  ngOnInit(): void {\n    this.currentLang = this.translateService.currentLang;\n  }\n\n  addFilter() {\n    const current = JSON.parse(JSON.stringify(this.query));\n    setTimeout(() => {\n      this.query = {\n        type: 'LogicalExpression',\n        operator: '$and',\n        elements: [\n          current,\n          {\n            operator: '$eq',\n            left: null,\n            right: null\n          }\n        ]\n      }\n    }, 50);\n  }\n\n  switchGroup(operator: '$and' | '$or') {\n    if (this.query) {\n      this.query.operator = operator;\n    }\n  }\n\n  @Input()\n  get queryParams(): any {\n    if (this.query == null) {\n      return {}\n    }\n     return {\n        $filter: this.queryBuilder.getQueryFrom(this.query)\n     }\n  }\n\n  @Input() get queryDescription(): string | undefined {\n    if (this.query == null) {\n      return;\n    }\n    return this.queryBuilder.getTextFrom(this.query);\n  }\n\n  getQueryDescription(): string | undefined {\n    if (this.query == null) {\n      return;\n    }\n    return this.queryBuilder.getTextFrom(this.query);\n  }\n\n  onSave(formComponent: NgForm) {\n    this.save.emit(Object.assign(formComponent.form.value, {\n      query: this.query,\n      entityType: this.entityType\n    }));\n  }\n  onCancelSave() {\n    this.saving = false;\n  }\n\n}\n","<div #builder>\n    <div class=\"card\">\n        <div class=\"card-body\"  [@inOutAnimation] *ngIf=\"query\">\n          <h5 class=\"card-title\" [translate]=\"'QueryBuilder.Title'\"></h5>\n          <h6 [lang]=\"currentLang\" class=\"card-subtitle mb-2 text-gray-300 text-uppercase\" [translate]=\"'QueryBuilder.SubTitle'\"></h6>\n          <ng-container>\n            <universis-query-composite-element [customParams]=\"customParams\" [element]=\"query\" [elementTemplate]=\"elementTemplate\" ></universis-query-composite-element>\n          </ng-container>\n          <div>\n            <button (click)=\"addFilter()\"  type=\"button\" class=\"d-none btn btn-gray-100 text-theme align-middle\">\n                <span class=\"mr-2\">+</span><span [translate]=\"'QueryBuilder.AddFilter'\"></span>\n            </button>\n            <div class=\"ml-2 btn-group d-none\">\n              <button (click)=\"switchGroup(query.operator === '$and' ? '$or' : '$and')\" type=\"button\" class=\"btn btn-gray-100 text-theme\" [translate]=\"'QueryBuilder.SwitchGroup'\"></button>\n              <button type=\"button\" class=\"btn btn-gray-100 dropdown-toggle dropdown-toggle-split\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n                <span class=\"sr-only\">Toggle Dropdown</span>\n              </button>\n              <div class=\"dropdown-menu\">\n                <button (click)=\"switchGroup('$and')\" type=\"button\" class=\"dropdown-item text-theme\">\n                    <span class=\"mr-2\">&amp;</span><span [translate]=\"'QueryBuilder.And'\"></span>\n                </button>\n                <button (click)=\"switchGroup('$or')\" type=\"button\" class=\"dropdown-item text-theme\">\n                  <span class=\"mr-2\">||</span><span [translate]=\"'QueryBuilder.Or'\"></span>\n                </button>\n              </div>\n            </div>\n            <div class=\"ml-2 btn-group\">\n              <button *ngIf=\"persistent === true && saving === false\" (click)=\"saving = !saving\" type=\"button\" class=\"btn btn-gray-100 text-theme\">\n                <span class=\"mr-2\">&gt;</span><span [translate]=\"'QueryBuilder.save'\"></span>\n              </button>\n            </div>\n            <form *ngIf=\"saving\" [@inOutAnimation] #f=\"ngForm\" novalidate>\n              <div ref=\"component\"\n                class=\"form-group has-feedback formio-component formio-component-textfield formio-component-right\">\n                <div ref=\"element\">\n                  <label class=\"form-label mt-2 text-secondary\" [translate]=\"'QueryBuilder.WriteDescription'\"></label>\n                  <input  ngModel [required]=\"true\" class=\"form-control\" type=\"text\" name=\"title\"  ref=\"input\">\n                </div>\n                <div class=\"formio-errors invalid-feedback\" ref=\"messageContainer\">\n                </div>\n              </div>\n              <button [disabled]=\"f.invalid\" (click)=\"onSave(f)\" type=\"button\" class=\"btn btn-theme mr-2\">\n                <span [translate]=\"'QueryBuilder.save'\"></span>\n              </button>\n              <button (click)=\"onCancelSave()\" type=\"button\" class=\"btn btn-gray-100 text-secondary\">\n                <span [translate]=\"'QueryBuilder.cancel'\"></span>\n              </button>\n            </form>\n          </div>\n        </div>\n      </div>\n</div>","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { AfterViewInit, Component, OnChanges, OnInit, Output, SimpleChanges, ViewEncapsulation } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { AngularDataContext } from \"@themost/angular\";\nimport { EventEmitter } from \"@angular/core\";\nimport { QueryBuilderComponent } from \"./ngx-query-builder.component\";\nimport { QueryBuilderService } from \"./ngx-query-builder.service\";\n\n@Component({\n    selector: 'universis-query-builder-container',\n    styleUrls: [\n        './ngx-query-builder.scss'\n      ],\n      templateUrl: './ngx-query-builder-container.component.html',\n      animations: [\n        trigger(\n          'inOutAnimation', \n          [\n            transition(\n              ':enter', \n              [\n                style({ opacity: 0 }),\n                animate('0.5s ease-out', \n                        style({ opacity: 1 }))\n              ]\n            ),\n            transition(\n              ':leave', \n              [\n                style({ opacity: 1 }),\n                animate('0.25s ease-in', \n                        style({ opacity: 0 }))\n              ]\n            )\n          ]\n        )\n      ],\n      encapsulation: ViewEncapsulation.None\n})\nexport class QueryBuilderContainerComponent extends QueryBuilderComponent implements OnInit, AfterViewInit, OnChanges {\n\n    @Output() close = new EventEmitter();\n    @Output() apply = new EventEmitter();\n\n    constructor(context: AngularDataContext,\n        translateService: TranslateService,\n        queryBuilder: QueryBuilderService) {\n            super(context, translateService, queryBuilder);\n    }\n\n    ngAfterViewInit(): void {\n      super.ngAfterViewInit();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n      super.ngOnChanges(changes);\n    }\n\n    ngOnInit(): void {\n      super.ngOnInit();\n    }\n    \n\n    onApply() {\n        this.apply.emit(null);\n    }\n\n    onClose() {\n        this.close.emit(null);\n    }\n}\n","<div>\n  <!--query builder template-->\n  <div class=\"card\">\n    <div class=\"card-body\" [@inOutAnimation] *ngIf=\"query\">\n      <h5 class=\"card-title\" [translate]=\"'QueryBuilder.Title'\"></h5>\n      <h6 [lang]=\"currentLang\" class=\"card-subtitle mb-2 text-gray-300 text-uppercase\"\n        [translate]=\"'QueryBuilder.SubTitle'\"></h6>\n      <ng-container>\n        <universis-query-composite-element [customParams]=\"customParams\" [element]=\"query\"\n          [elementTemplate]=\"elementTemplate\"></universis-query-composite-element>\n      </ng-container>\n      <div>\n        <div class=\"ml-2 btn-group d-none\">\n          <button (click)=\"switchGroup(query.operator === '$and' ? '$or' : '$and')\" type=\"button\"\n            class=\"btn btn-gray-100 text-secondary\" [translate]=\"'QueryBuilder.SwitchGroup'\"></button>\n          <button type=\"button\" class=\"btn btn-gray-100 dropdown-toggle dropdown-toggle-split\" data-toggle=\"dropdown\"\n            aria-haspopup=\"true\" aria-expanded=\"false\">\n            <span class=\"sr-only\">Toggle Dropdown</span>\n          </button>\n          <div class=\"dropdown-menu\">\n            <button (click)=\"switchGroup('$and')\" type=\"button\" class=\"dropdown-item text-secondary\">\n              <span class=\"mr-2\">&amp;</span><span [translate]=\"'QueryBuilder.And'\"></span>\n            </button>\n            <button (click)=\"switchGroup('$or')\" type=\"button\" class=\"dropdown-item text-secondary\">\n              <span class=\"mr-2\">||</span><span [translate]=\"'QueryBuilder.Or'\"></span>\n            </button>\n          </div>\n        </div>\n        <button (click)=\"addFilter()\" type=\"button\" class=\"d-none btn btn-gray-100 text-theme align-middle\">\n          <span class=\"mr-2\">+</span><span [translate]=\"'QueryBuilder.AddFilter'\"></span>\n        </button>\n        <div class=\"ml-2 btn-group\">\n          <button *ngIf=\"persistent === true && saving === false\" (click)=\"saving = !saving\" type=\"button\"\n            class=\"btn btn-gray-100 text-theme\">\n            <span class=\"mr-2\">&gt;</span><span [translate]=\"'QueryBuilder.save'\"></span>\n          </button>\n        </div>\n        <form *ngIf=\"saving\" [@inOutAnimation] #f=\"ngForm\" novalidate>\n          <div ref=\"component\"\n            class=\"form-group has-feedback formio-component formio-component-textfield formio-component-right\">\n            <div ref=\"element\">\n              <label class=\"form-label mt-2 text-secondary\" [translate]=\"'QueryBuilder.WriteDescription'\"></label>\n              <input ngModel [required]=\"true\" class=\"form-control\" type=\"text\" name=\"title\" ref=\"input\">\n            </div>\n            <div class=\"formio-errors invalid-feedback\" ref=\"messageContainer\">\n            </div>\n          </div>\n          <button [disabled]=\"f.invalid\" (click)=\"onSave(f)\" type=\"button\" class=\"btn btn-theme mr-2\">\n            <span [translate]=\"'QueryBuilder.save'\"></span>\n          </button>\n          <button (click)=\"onClose()\" type=\"button\" class=\"btn btn-gray-100 text-secondary\">\n            <span [translate]=\"'QueryBuilder.cancel'\"></span>\n          </button>\n        </form>\n      </div>\n    </div>\n  </div>\n  <!--query builder template-->\n</div>\n<div class=\"d-flex justify-content-start border-top border-gray-100 pt-4 mx-4\">\n  <button (click)=\"onApply()\" type=\"button\" class=\"btn btn-theme mr-2\" [translate]=\"'QueryBuilder.Apply'\"></button>\n  <button (click)=\"onClose()\" type=\"button\" class=\"btn btn-light\" [translate]=\"'QueryBuilder.Close'\"></button>\n</div>","export const el = {\n    \"QueryBuilder\": {\n        \"Title\": \"Κριτήρια\",\n        \"SubTitle\": \"Δημιούργηστε το ερώτημα σας προσθέτοντας απλές ή σύνθετες εκφράσεις\",\n        \"AddFilter\": \"προσθήκη φίλτρου\",\n        \"Filter\": \"φιλτρο\",\n        \"AddGroup\": \"προσθήκη έκφρασης\",\n        \"SwitchGroup\": \"αλλαγή\",\n        \"RemoveGroup\": \"διαγραφή έκφρασης\",\n        \"RemoveFilter\": \"διαγραφή φίλτρου\",\n        \"AddInnerGroup\": \"προσθήκη νέας έκφρασης\",\n        \"InnerGroup\": \"έκφραση\",\n        \"And\": \"και\",\n        \"Or\": \"ή\",\n        \"equal\": \"ίσο με\",\n        \"notEqual\": \"διαφόρο από\",\n        \"greaterThan\": \"μεγαλύτερο από\",\n        \"greaterOrEqual\": \"μεγαλύτερο ή ίσο\",\n        \"lowerThan\": \"μικρότερο από\",\n        \"lowerOrEqual\": \"μικρότερο ή ίσο\",\n        \"contains\": \"περιέχει\",\n        \"notContains\": \"δεν περιέχει\",\n        \"$and\": \"και\",\n        \"$or\": \"ή\",\n        \"$eq\": \"ίσο με\",\n        \"$ne\": \"διαφόρο από\",\n        \"$gt\": \"μεγαλύτερο από\",\n        \"$ge\": \"μεγαλύτερο ή ίσο\",\n        \"$lt\": \"μικρότερο από\",\n        \"$le\": \"μικρότερο ή ίσο\",\n        \"$contains\": \"περιέχει\",\n        \"$notContains\": \"δεν περιέχει\",\n        \"save\": \"αποθήκευση\",\n        \"cancel\": \"άκυρο\",\n        \"WriteDescription\": \"ορίστε μία περιγραφή για αυτό το ερώτημα\",\n        \"Apply\": \"αναζήτηση\",\n        \"Close\": \"κλείσιμο\",\n        \"Empty\": \"Κενό\",\n        \"Type to search\": \"Αναζήτηση\",\n        \"true\": \"ναι\",\n        \"false\": \"όχι\"\n    }\n}\n","export const en = {\n    \"QueryBuilder\": {\n        \"Title\": \"Filters\",\n        \"SubTitle\": \"Build your query by adding simple or advanced expressions\",\n        \"AddFilter\": \"add filter\",\n        \"Filter\": \"filter\",\n        \"AddGroup\": \"add group\",\n        \"SwitchGroup\": \"switch\",\n        \"AddInnerGroup\": \"add inner group\",\n        \"InnerGroup\": \"group\",\n        \"RemoveGroup\": \"remove group\",\n        \"RemoveFilter\": \"remove filter\",\n        \"And\": \"and\",\n        \"Or\": \"or\",\n        \"equal\": \"equal to\",\n        \"notEqual\": \"not equal to\",\n        \"greaterThan\": \"greater than\",\n        \"greaterOrEqual\": \"greater or equal to\",\n        \"lowerThan\": \"lower than\",\n        \"lowerOrEqual\": \"lower or equal to\",\n        \"contains\": \"contains\",\n        \"notContains\": \"not contains\",\n        \"$and\": \"and\",\n        \"$or\": \"or\",\n        \"$eq\": \"equal to\",\n        \"$ne\": \"not equal to\",\n        \"$gt\": \"greater than\",\n        \"$ge\": \"greater or equal to\",\n        \"$lt\": \"lower than\",\n        \"$le\": \"lower or equal to\",\n        \"$contains\": \"contains\",\n        \"$notContains\": \"not contains\",\n        \"save\": \"save\",\n        \"cancel\": \"άκυρο\",\n        \"WriteDescription\": \"write a description for this query\",\n        \"Apply\": \"search\",\n        \"Close\": \"close\",\n        \"Empty\": \"Empty\",\n        \"Type to search\": \"Type to search\",\n        \"Yes\": \"Yes\",\n        \"No\": \"No\",\n        \"true\": \"true\",\n        \"false\": \"false\"\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { QueryBuilderComponent } from './ngx-query-builder.component';\nimport { QueryBuilderService } from './ngx-query-builder.service';\nimport { QueryCompositeElementComponent } from './ngx-composite-query-element.component';\nimport { QueryElementComponent } from './ngx-query-element.component';\nimport * as locales from './i18n';\nimport { FormioModule } from '@formio/angular';\nimport { MostModule } from '@themost/angular';\nimport { QueryBuilderContainerComponent } from './ngx-query-builder-container.component';\n@NgModule({\n  declarations: [\n    QueryBuilderComponent,\n    QueryElementComponent,\n    QueryCompositeElementComponent,\n    QueryBuilderContainerComponent\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    MostModule,\n    TranslateModule,\n    FormioModule\n  ],\n  exports: [\n    QueryBuilderComponent,\n    QueryElementComponent,\n    QueryCompositeElementComponent,\n    QueryBuilderContainerComponent\n  ],\n  entryComponents: [\n    QueryBuilderContainerComponent\n  ],\n  providers: [\n    QueryBuilderService\n  ]\n})\nexport class QueryBuilderModule {\n\n  constructor(translateService: TranslateService) {\n    Object.keys(locales).forEach((locale) => {\n      if (Object.prototype.hasOwnProperty.call(locales, locale)) {\n        translateService.setTranslation(locale, locales[locale], true);\n      }\n    });\n  }\n  \n}\n","/*\n * Public API Surface of ngx-query-builder\n */\n\nexport * from './lib/ngx-query-builder.service';\nexport * from './lib/ngx-query-builder.component';\nexport * from './lib/ngx-query-builder-container.component';\nexport * from './lib/ngx-query-element.component';\nexport * from './lib/ngx-composite-query-element.component';\nexport * from './lib/ngx-query-builder.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.QueryBuilderService","i3","i3.QueryElementComponent","i3.QueryBuilderService","i4","i6.QueryCompositeElementComponent"],"mappings":"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"}