{"version":3,"file":"shout-angular-query-builder.mjs","sources":["../../../projects/shout-angular-query-builder/src/lib/query-builder/query-operator.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-field.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-entity.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-switch-group.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-button-group.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-input.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-remove-button.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-empty-warning.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-arrow-icon.directive.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-builder.component.ts","../../../projects/shout-angular-query-builder/src/lib/query-builder/query-builder.component.html","../../../projects/shout-angular-query-builder/src/lib/angular2-query-builder.module.ts","../../../projects/shout-angular-query-builder/src/public-api.ts","../../../projects/shout-angular-query-builder/src/shout-angular-query-builder.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryOperator]',\n    standalone: false\n})\nexport class QueryOperatorDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryField]',\n    standalone: false\n})\nexport class QueryFieldDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryEntity]',\n    standalone: false\n})\nexport class QueryEntityDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[querySwitchGroup]',\n    standalone: false\n})\nexport class QuerySwitchGroupDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryButtonGroup]',\n    standalone: false\n})\nexport class QueryButtonGroupDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryInput]',\n    standalone: false\n})\nexport class QueryInputDirective {\n    /** Unique name for query input type. */\n    @Input()\n    get queryInputType(): string {\n        return this._type;\n    }\n    set queryInputType(value: string) {\n    // If the directive is set without a type (updated programatically), then this setter will\n    // trigger with an empty string and should not overwrite the programatically set value.\n        if (!value) {\n            return;\n        }\n        this._type = value;\n    }\n    private _type: string;\n\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryRemoveButton]',\n    standalone: false\n})\nexport class QueryRemoveButtonDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryEmptyWarning]',\n    standalone: false\n})\nexport class QueryEmptyWarningDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[queryArrowIcon]',\n    standalone: false\n})\nexport class QueryArrowIconDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","import {\n    AbstractControl,\n    ControlValueAccessor,\n    NG_VALUE_ACCESSOR,\n    NG_VALIDATORS,\n    ValidationErrors,\n    Validator\n} from '@angular/forms';\nimport { QueryOperatorDirective } from './query-operator.directive';\nimport { QueryFieldDirective } from './query-field.directive';\nimport { QueryEntityDirective } from './query-entity.directive';\nimport { QuerySwitchGroupDirective } from './query-switch-group.directive';\nimport { QueryButtonGroupDirective } from './query-button-group.directive';\nimport { QueryInputDirective } from './query-input.directive';\nimport { QueryRemoveButtonDirective } from './query-remove-button.directive';\nimport { QueryEmptyWarningDirective } from './query-empty-warning.directive';\nimport { QueryArrowIconDirective } from './query-arrow-icon.directive';\nimport {\n    ButtonGroupContext,\n    Entity,\n    Field,\n    SwitchGroupContext,\n    EntityContext,\n    FieldContext,\n    InputContext,\n    LocalRuleMeta,\n    OperatorContext,\n    Option,\n    QueryBuilderClassNames,\n    QueryBuilderConfig,\n    RemoveButtonContext,\n    ArrowIconContext,\n    Rule,\n    RuleSet,\n    EmptyWarningContext, Operator,\n} from './query-builder.interfaces';\nimport {\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    forwardRef,\n    Input,\n    OnChanges,\n    OnInit,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ElementRef\n} from '@angular/core';\n\nexport const CONTROL_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => QueryBuilderComponent),\n    multi: true\n};\n\nexport const VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => QueryBuilderComponent),\n    multi: true\n};\n\n@Component({\n    selector: 'query-builder',\n    templateUrl: './query-builder.component.html',\n    styleUrls: ['./query-builder.component.scss'],\n    providers: [CONTROL_VALUE_ACCESSOR, VALIDATOR],\n    standalone: false\n})\nexport class QueryBuilderComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n    public fields: Field[];\n    public filterFields: Field[];\n    public entities: Entity[];\n    public defaultClassNames: QueryBuilderClassNames = {\n        arrowIconButton: 'q-arrow-icon-button',\n        arrowIcon: 'q-icon q-arrow-icon',\n        removeIcon: 'q-icon q-remove-icon',\n        addIcon: 'q-icon q-add-icon',\n        button: 'q-button',\n        buttonGroup: 'q-button-group',\n        removeButton: 'q-remove-button',\n        switchGroup: 'q-switch-group',\n        switchLabel: 'q-switch-label',\n        switchRadio: 'q-switch-radio',\n        rightAlign: 'q-right-align',\n        transition: 'q-transition',\n        collapsed: 'q-collapsed',\n        treeContainer: 'q-tree-container',\n        tree: 'q-tree',\n        row: 'q-row',\n        connector: 'q-connector',\n        rule: 'q-rule',\n        ruleSet: 'q-ruleset',\n        invalidRuleSet: 'q-invalid-ruleset',\n        emptyWarning: 'q-empty-warning',\n        fieldControl: 'q-field-control',\n        fieldControlSize: 'q-control-size',\n        entityControl: 'q-entity-control',\n        entityControlSize: 'q-control-size',\n        operatorControl: 'q-operator-control',\n        operatorControlSize: 'q-control-size',\n        inputControl: 'q-input-control',\n        inputControlSize: 'q-control-size'\n    };\n    @Input() public defaultOperatorMap: { [key: string]: Operator[] } = {\n        string: ['=', '!=', 'contains', 'like'],\n        number: ['=', '!=', '>', '>=', '<', '<='],\n        time: ['=', '!=', '>', '>=', '<', '<='],\n        date: ['=', '!=', '>', '>=', '<', '<='],\n        category: ['=', '!=', 'in', 'not in'],\n        boolean: ['=']\n    };\n    @Input() disabled: boolean;\n    @Input() data: RuleSet = { condition: 'and', rules: [] };\n\n    // For ControlValueAccessor interface\n    public onChangeCallback: () => void;\n    public onTouchedCallback: () => any;\n\n    @Input() allowRuleset: boolean = true;\n    @Input() allowCollapse: boolean = false;\n    @Input() emptyMessage: string = 'A ruleset cannot be empty. Please add a rule or remove it all together.';\n    @Input() classNames: QueryBuilderClassNames;\n    @Input() operatorMap: { [key: string]: string[] };\n    @Input() parentValue: RuleSet;\n    @Input() config: QueryBuilderConfig = { fields: {} };\n    @Input() parentArrowIconTemplate: QueryArrowIconDirective;\n    @Input() parentInputTemplates: QueryList<QueryInputDirective>;\n    @Input() parentOperatorTemplate: QueryOperatorDirective;\n    @Input() parentFieldTemplate: QueryFieldDirective;\n    @Input() parentEntityTemplate: QueryEntityDirective;\n    @Input() parentSwitchGroupTemplate: QuerySwitchGroupDirective;\n    @Input() parentButtonGroupTemplate: QueryButtonGroupDirective;\n    @Input() parentRemoveButtonTemplate: QueryRemoveButtonDirective;\n    @Input() parentEmptyWarningTemplate: QueryEmptyWarningDirective;\n    @Input() parentChangeCallback: () => void;\n    @Input() parentTouchedCallback: () => void;\n    @Input() persistValueOnFieldChange: boolean = false;\n\n    @ViewChild('treeContainer', {static: true}) treeContainer: ElementRef;\n\n    @ContentChild(QueryButtonGroupDirective) buttonGroupTemplate: QueryButtonGroupDirective;\n    @ContentChild(QuerySwitchGroupDirective) switchGroupTemplate: QuerySwitchGroupDirective;\n    @ContentChild(QueryFieldDirective) fieldTemplate: QueryFieldDirective;\n    @ContentChild(QueryEntityDirective) entityTemplate: QueryEntityDirective;\n    @ContentChild(QueryOperatorDirective) operatorTemplate: QueryOperatorDirective;\n    @ContentChild(QueryRemoveButtonDirective) removeButtonTemplate: QueryRemoveButtonDirective;\n    @ContentChild(QueryEmptyWarningDirective) emptyWarningTemplate: QueryEmptyWarningDirective;\n    @ContentChildren(QueryInputDirective) inputTemplates: QueryList<QueryInputDirective> = new QueryList<QueryInputDirective>();\n    @ContentChild(QueryArrowIconDirective) arrowIconTemplate: QueryArrowIconDirective;\n\n    private defaultTemplateTypes: string[] = [\n        'string', 'number', 'time', 'date', 'category', 'boolean', 'multiselect'];\n    private defaultPersistValueTypes: string[] = [\n        'string', 'number', 'time', 'date', 'boolean'];\n    private operatorsCache: { [key: string]: Operator[] };\n    private inputContextCache = new Map<Rule, InputContext>();\n    private operatorContextCache = new Map<Rule, OperatorContext>();\n    private fieldContextCache = new Map<Rule, FieldContext>();\n    private entityContextCache = new Map<Rule, EntityContext>();\n    private removeButtonContextCache = new Map<Rule, RemoveButtonContext>();\n    private buttonGroupContext: ButtonGroupContext;\n\n    constructor(private changeDetectorRef: ChangeDetectorRef) { }\n\n    // ----------OnInit Implementation----------\n\n    ngOnInit() { }\n\n    // ----------OnChanges Implementation----------\n\n    ngOnChanges(changes: SimpleChanges) {\n        const config = this.config;\n        const type = typeof config;\n        if (type === 'object') {\n            this.fields = Object.keys(config.fields).map((value) => {\n                const field = config.fields[value];\n                field.value = field.value || value;\n                return field;\n            });\n            if (config.entities) {\n                this.entities = Object.keys(config.entities).map((value) => {\n                    const entity = config.entities[value];\n                    entity.value = entity.value || value;\n                    return entity;\n                });\n            } else {\n                this.entities = null;\n            }\n            this.operatorsCache = {};\n        } else {\n            throw new Error(`Expected 'config' must be a valid object, got ${type} instead.`);\n        }\n    }\n\n    // ----------Validator Implementation----------\n\n    validate(control: AbstractControl): ValidationErrors | null {\n        const errors: { [key: string]: any } = {};\n        const ruleErrorStore = [];\n        let hasErrors = false;\n\n        if (!this.config.allowEmptyRulesets && this.checkEmptyRuleInRuleset(this.data)) {\n            errors.empty = 'Empty rulesets are not allowed.';\n            hasErrors = true;\n        }\n\n        this.validateRulesInRuleset(this.data, ruleErrorStore);\n\n        if (ruleErrorStore.length) {\n            errors.rules = ruleErrorStore;\n            hasErrors = true;\n        }\n        return hasErrors ? errors : null;\n    }\n\n    // ----------ControlValueAccessor Implementation----------\n\n    @Input()\n    get value(): RuleSet {\n        return this.data;\n    }\n    set value(value: RuleSet) {\n    // When component is initialized without a formControl, null is passed to value\n        this.data = value || { condition: 'and', rules: [] };\n        this.handleDataChange();\n    }\n\n    writeValue(obj: any): void {\n        this.value = obj;\n    }\n    registerOnChange(fn: any): void {\n        this.onChangeCallback = () => fn(this.data);\n    }\n    registerOnTouched(fn: any): void {\n        this.onTouchedCallback = () => fn(this.data);\n    }\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        this.changeDetectorRef.detectChanges();\n    }\n\n    // ----------END----------\n\n    getDisabledState = (): boolean => this.disabled;\n\n    findTemplateForRule(rule: Rule): TemplateRef<any> {\n        const type = this.getInputType(rule.field, rule.operator);\n        if (type) {\n            const queryInput = this.findQueryInput(type);\n            if (queryInput) {\n                return queryInput.template;\n            } else {\n                if (this.defaultTemplateTypes.indexOf(type) === -1) {\n                    console.warn(`Could not find template for field with type: ${type}`);\n                }\n                return null;\n            }\n        }\n    }\n\n    findQueryInput(type: string): QueryInputDirective {\n        const templates = this.parentInputTemplates || this.inputTemplates;\n        return templates.find((item) => item.queryInputType === type);\n    }\n\n    getOperators(field: string): Operator[] {\n        if (this.operatorsCache[field]) {\n            return this.operatorsCache[field];\n        }\n        let operators = [] as Operator[];\n        const fieldObject = this.config.fields[field];\n\n        if (this.config.getOperators) {\n            return this.config.getOperators(field, fieldObject);\n        }\n\n        const type = fieldObject.type;\n\n        if (fieldObject && fieldObject.operators) {\n            operators = fieldObject.operators;\n        } else if (type) {\n            operators = (this.operatorMap && this.operatorMap[type]) || this.defaultOperatorMap[type] || [];\n            if (operators.length === 0) {\n                console.warn(\n                    `No operators found for field '${field}' with type ${fieldObject.type}. ` +\n          'Please define an \\'operators\\' property on the field or use the \\'operatorMap\\' binding to fix this.');\n            }\n            if (fieldObject.nullable) {\n                operators = operators.concat(['is null', 'is not null']);\n            }\n        } else {\n            console.warn(`No 'type' property found on field: '${field}'`);\n        }\n\n        // Cache reference to array object, so it won't be computed next time and trigger a rerender.\n        this.operatorsCache[field] = operators;\n        return operators;\n    }\n\n    getFields(entity: string): Field[] {\n        if (this.entities && entity) {\n            return this.fields.filter((field) => field && field.entity === entity);\n        } else {\n            return this.fields;\n        }\n    }\n\n    getInputType(field: string, operator: string): string {\n        if (this.config.getInputType) {\n            return this.config.getInputType(field, operator);\n        }\n\n        if (!this.config.fields[field]) {\n            throw new Error(`No configuration for field '${field}' could be found! Please add it to config.fields.`);\n        }\n\n        const type = this.config.fields[field].type;\n        switch (operator) {\n        case 'is null':\n        case 'is not null':\n            return null;  // No displayed component\n        case 'in':\n        case 'not in':\n            return type === 'category' || type === 'boolean' ? 'multiselect' : type;\n        default:\n            return type;\n        }\n    }\n\n    getOptions(field: string): any {\n        if (this.config.getOptions) {\n            return this.config.getOptions(field);\n        }\n        return this.config.fields[field].options || [];\n    }\n\n    getClassNames(...args): string {\n        const clsLookup = this.classNames ? this.classNames : this.defaultClassNames;\n        const classNames = args.map((id) => clsLookup[id] || this.defaultClassNames[id]).filter((c) => !!c);\n        return classNames.length ? classNames.join(' ') : null;\n    }\n\n    getDefaultField(entity: Entity): Field {\n        if (!entity) {\n            return null;\n        } else if (entity.defaultField !== undefined) {\n            return this.getDefaultValue(entity.defaultField);\n        } else {\n            const entityFields = this.fields.filter((field) => field && field.entity === entity.value);\n            if (entityFields && entityFields.length) {\n                return entityFields[0];\n            } else {\n                console.warn(`No fields found for entity '${entity.name}'. ` +\n          'A \\'defaultOperator\\' is also not specified on the field config. Operator value will default to null.');\n                return null;\n            }\n        }\n    }\n\n    getDefaultOperator(field: Field): string {\n        if (field && field.defaultOperator !== undefined) {\n            return this.getOperatorValue(this.getDefaultValue(field.defaultOperator) as Operator);\n        } else {\n            const operators = this.getOperators(field.value);\n            if (operators && operators.length) {\n                return this.getOperatorValue(operators[0]);\n            } else {\n                console.warn(`No operators found for field '${field.value}'. ` +\n          'A \\'defaultOperator\\' is also not specified on the field config. Operator value will default to null.');\n                return null;\n            }\n        }\n    }\n\n    getOperatorValue = (operator: Operator) => {\n        if (typeof operator === 'string') {\n            return operator;\n        } else {\n            return operator?.value;\n        }\n    };\n\n    addRule(parent?: RuleSet): void {\n        if (this.disabled) {\n            return;\n        }\n\n        parent = parent || this.data;\n        if (this.config.addRule) {\n            this.config.addRule(parent);\n        } else {\n            const field = this.fields[0];\n            parent.rules = parent.rules.concat([{\n                field: field.value,\n                operator: this.getDefaultOperator(field),\n                value: this.getDefaultValue(field.defaultValue),\n                entity: field.entity\n            }]);\n        }\n\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    removeRule(rule: Rule, parent?: RuleSet): void {\n        if (this.disabled) {\n            return;\n        }\n\n        parent = parent || this.data;\n        if (this.config.removeRule) {\n            this.config.removeRule(rule, parent);\n        } else {\n            parent.rules = parent.rules.filter((r) => r !== rule);\n        }\n        this.inputContextCache.delete(rule);\n        this.operatorContextCache.delete(rule);\n        this.fieldContextCache.delete(rule);\n        this.entityContextCache.delete(rule);\n        this.removeButtonContextCache.delete(rule);\n\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    addRuleSet(parent?: RuleSet): void {\n        if (this.disabled) {\n            return;\n        }\n\n        parent = parent || this.data;\n        if (this.config.addRuleSet) {\n            this.config.addRuleSet(parent);\n        } else {\n            parent.rules = parent.rules.concat([{ condition: 'and', rules: [] }]);\n        }\n\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    removeRuleSet(ruleset?: RuleSet, parent?: RuleSet): void {\n        if (this.disabled) {\n            return;\n        }\n\n        ruleset = ruleset || this.data;\n        parent = parent || this.parentValue;\n        if (this.config.removeRuleSet) {\n            this.config.removeRuleSet(ruleset, parent);\n        } else {\n            parent.rules = parent.rules.filter((r) => r !== ruleset);\n        }\n\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    transitionEnd(e: Event): void {\n        this.treeContainer.nativeElement.style.maxHeight = null;\n    }\n\n    toggleCollapse(): void {\n        this.computedTreeContainerHeight();\n        setTimeout(() => {\n            this.data.collapsed = !this.data.collapsed;\n        }, 100);\n    }\n\n    computedTreeContainerHeight(): void {\n        const nativeElement: HTMLElement = this.treeContainer.nativeElement;\n        if (nativeElement && nativeElement.firstElementChild) {\n            nativeElement.style.maxHeight = (nativeElement.firstElementChild.clientHeight + 8) + 'px';\n        }\n    }\n\n    changeCondition(value: string): void {\n        if (this.disabled) {\n            return;\n        }\n\n        this.data.condition = value;\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    changeOperator(rule: Rule): void {\n        if (this.disabled) {\n            return;\n        }\n\n        if (this.config.coerceValueForOperator) {\n            rule.value = this.config.coerceValueForOperator(rule.operator, rule.value, rule);\n        } else {\n            rule.value = this.coerceValueForOperator(rule.operator, rule.value, rule);\n        }\n\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    coerceValueForOperator(operator: string, value: any, rule: Rule): any {\n        const inputType: string = this.getInputType(rule.field, operator);\n        if (inputType === 'multiselect' && !Array.isArray(value)) {\n            return [value];\n        }\n        return value;\n    }\n\n    changeInput(): void {\n        if (this.disabled) {\n            return;\n        }\n\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    changeField(fieldValue: string, rule: Rule): void {\n        if (this.disabled) {\n            return;\n        }\n\n        const inputContext = this.inputContextCache.get(rule);\n        const currentField = inputContext && inputContext.field;\n\n        const nextField: Field = this.config.fields[fieldValue];\n\n        const nextValue = this.calculateFieldChangeValue(\n            currentField, nextField, rule.value);\n\n        if (nextValue !== undefined) {\n            rule.value = nextValue;\n        } else {\n            delete rule.value;\n        }\n\n        rule.operator = this.getDefaultOperator(nextField);\n\n        // Create new context objects so templates will automatically update\n        this.inputContextCache.delete(rule);\n        this.operatorContextCache.delete(rule);\n        this.fieldContextCache.delete(rule);\n        this.entityContextCache.delete(rule);\n        this.getInputContext(rule);\n        this.getFieldContext(rule);\n        this.getOperatorContext(rule);\n        this.getEntityContext(rule);\n\n        this.handleTouched();\n        this.handleDataChange();\n    }\n\n    changeEntity(entityValue: string, rule: Rule, index: number, data: RuleSet): void {\n        if (this.disabled) {\n            return;\n        }\n        let i = index;\n        let rs = data;\n        const entity: Entity = this.entities.find((e) => e.value === entityValue);\n        const defaultField: Field = this.getDefaultField(entity);\n        if (!rs) {\n            rs = this.data;\n            i = rs.rules.findIndex((x) => x === rule);\n        }\n        rule.field = defaultField.value;\n        rs.rules[i] = rule;\n        if (defaultField) {\n            this.changeField(defaultField.value, rule);\n        } else {\n            this.handleTouched();\n            this.handleDataChange();\n        }\n    }\n\n    getDefaultValue(defaultValue: any): any {\n        switch (typeof defaultValue) {\n        case 'function':\n            return (defaultValue as (() => any))();\n        default:\n            return defaultValue;\n        }\n    }\n\n    getOperatorTemplate(): TemplateRef<any> {\n        const t = this.parentOperatorTemplate || this.operatorTemplate;\n        return t ? t.template : null;\n    }\n\n    getFieldTemplate(): TemplateRef<any> {\n        const t = this.parentFieldTemplate || this.fieldTemplate;\n        return t ? t.template : null;\n    }\n\n    getEntityTemplate(): TemplateRef<any> {\n        const t = this.parentEntityTemplate || this.entityTemplate;\n        return t ? t.template : null;\n    }\n\n    getArrowIconTemplate(): TemplateRef<any> {\n        const t = this.parentArrowIconTemplate || this.arrowIconTemplate;\n        return t ? t.template : null;\n    }\n\n    getButtonGroupTemplate(): TemplateRef<any> {\n        const t = this.parentButtonGroupTemplate || this.buttonGroupTemplate;\n        return t ? t.template : null;\n    }\n\n    getSwitchGroupTemplate(): TemplateRef<any> {\n        const t = this.parentSwitchGroupTemplate || this.switchGroupTemplate;\n        return t ? t.template : null;\n    }\n\n    getRemoveButtonTemplate(): TemplateRef<any> {\n        const t = this.parentRemoveButtonTemplate || this.removeButtonTemplate;\n        return t ? t.template : null;\n    }\n\n    getEmptyWarningTemplate(): TemplateRef<any> {\n        const t = this.parentEmptyWarningTemplate || this.emptyWarningTemplate;\n        return t ? t.template : null;\n    }\n\n    getQueryItemClassName(local: LocalRuleMeta): string {\n        let cls = this.getClassNames('row', 'connector', 'transition');\n        cls += ' ' + this.getClassNames(local.ruleset ? 'ruleSet' : 'rule');\n        if (local.invalid) {\n            cls += ' ' + this.getClassNames('invalidRuleSet');\n        }\n        return cls;\n    }\n\n    getButtonGroupContext(): ButtonGroupContext {\n        if (!this.buttonGroupContext) {\n            this.buttonGroupContext = {\n                addRule: this.addRule.bind(this),\n                addRuleSet: this.allowRuleset && this.addRuleSet.bind(this),\n                removeRuleSet: this.allowRuleset && this.parentValue && this.removeRuleSet.bind(this),\n                getDisabledState: this.getDisabledState,\n                $implicit: this.data\n            };\n        }\n        return this.buttonGroupContext;\n    }\n\n    getRemoveButtonContext(rule: Rule): RemoveButtonContext {\n        if (!this.removeButtonContextCache.has(rule)) {\n            this.removeButtonContextCache.set(rule, {\n                removeRule: this.removeRule.bind(this),\n                getDisabledState: this.getDisabledState,\n                $implicit: rule\n            });\n        }\n        return this.removeButtonContextCache.get(rule);\n    }\n\n    getFieldContext(rule: Rule): FieldContext {\n        if (!this.fieldContextCache.has(rule)) {\n            this.fieldContextCache.set(rule, {\n                onChange: this.changeField.bind(this),\n                getFields: this.getFields.bind(this),\n                getDisabledState: this.getDisabledState,\n                fields: this.fields,\n                $implicit: rule\n            });\n        }\n        return this.fieldContextCache.get(rule);\n    }\n\n    getEntityContext(rule: Rule): EntityContext {\n        if (!this.entityContextCache.has(rule)) {\n            this.entityContextCache.set(rule, {\n                onChange: this.changeEntity.bind(this),\n                getDisabledState: this.getDisabledState,\n                entities: this.entities,\n                $implicit: rule\n            });\n        }\n        return this.entityContextCache.get(rule);\n    }\n\n    getSwitchGroupContext(): SwitchGroupContext {\n        return {\n            onChange: this.changeCondition.bind(this),\n            getDisabledState: this.getDisabledState,\n            $implicit: this.data\n        };\n    }\n\n    getArrowIconContext(): ArrowIconContext {\n        return {\n            getDisabledState: this.getDisabledState,\n            $implicit: this.data\n        };\n    }\n\n    getEmptyWarningContext(): EmptyWarningContext {\n        return {\n            getDisabledState: this.getDisabledState,\n            message: this.emptyMessage,\n            $implicit: this.data\n        };\n    }\n\n    getOperatorContext(rule: Rule): OperatorContext {\n        if (!this.operatorContextCache.has(rule)) {\n            this.operatorContextCache.set(rule, {\n                onChange: this.changeOperator.bind(this),\n                getDisabledState: this.getDisabledState,\n                getOperatorValue: this.getOperatorValue,\n                operators: this.getOperators(rule.field),\n                $implicit: rule\n            });\n        }\n        return this.operatorContextCache.get(rule);\n    }\n\n    getInputContext(rule: Rule): InputContext {\n        if (!this.inputContextCache.has(rule)) {\n            this.inputContextCache.set(rule, {\n                onChange: this.changeInput.bind(this),\n                getDisabledState: this.getDisabledState,\n                options: this.getOptions(rule.field),\n                field: this.config.fields[rule.field],\n                $implicit: rule\n            });\n        }\n        return this.inputContextCache.get(rule);\n    }\n\n    private calculateFieldChangeValue(\n        currentField: Field,\n        nextField: Field,\n        currentValue: any\n    ): any {\n\n        if (this.config.calculateFieldChangeValue != null) {\n            return this.config.calculateFieldChangeValue(\n                currentField, nextField, currentValue);\n        }\n\n        const canKeepValue = () => {\n            if (currentField == null || nextField == null) {\n                return false;\n            }\n            return currentField.type === nextField.type\n        && this.defaultPersistValueTypes.indexOf(currentField.type) !== -1;\n        };\n\n        if (this.persistValueOnFieldChange && canKeepValue()) {\n            return currentValue;\n        }\n\n        if (nextField && nextField.defaultValue !== undefined) {\n            return this.getDefaultValue(nextField.defaultValue);\n        }\n\n        return undefined;\n    }\n\n    private checkEmptyRuleInRuleset(ruleset: RuleSet): boolean {\n        if (!ruleset || !ruleset.rules || ruleset.rules.length === 0) {\n            return true;\n        } else {\n            return ruleset.rules.some((item: RuleSet) => {\n                if (item.rules) {\n                    return this.checkEmptyRuleInRuleset(item);\n                } else {\n                    return false;\n                }\n            });\n        }\n    }\n\n    private validateRulesInRuleset(ruleset: RuleSet, errorStore: any[]) {\n        if (ruleset && ruleset.rules && ruleset.rules.length > 0) {\n            ruleset.rules.forEach((item) => {\n                if ((item as RuleSet).rules) {\n                    return this.validateRulesInRuleset(item as RuleSet, errorStore);\n                } else if ((item as Rule).field) {\n                    const field = this.config.fields[(item as Rule).field];\n                    if (field && field.validator && field.validator.apply) {\n                        const error = field.validator(item as Rule, ruleset);\n                        if (error != null) {\n                            errorStore.push(error);\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n    private handleDataChange(): void {\n        this.changeDetectorRef.markForCheck();\n        if (this.onChangeCallback) {\n            this.onChangeCallback();\n        }\n        if (this.parentChangeCallback) {\n            this.parentChangeCallback();\n        }\n    }\n\n    private handleTouched(): void {\n        if (this.onTouchedCallback) {\n            this.onTouchedCallback();\n        }\n        if (this.parentTouchedCallback) {\n            this.parentTouchedCallback();\n        }\n    }\n}\n","<div [ngClass]=\"getClassNames('switchRow')\">\n  <ng-template #defaultArrowIcon>\n    <i [ngClass]=\"getClassNames('arrowIcon')\"></i>\n  </ng-template>\n\n  <a *ngIf=\"allowCollapse\" (click)=\"toggleCollapse()\" [ngClass]=\"getClassNames('arrowIconButton', data.collapsed ? 'collapsed' : null)\">\n    <ng-container *ngIf=\"getArrowIconTemplate() as template; else defaultArrowIcon\">\n      <ng-container *ngTemplateOutlet=\"template; context: getArrowIconContext()\"></ng-container>\n    </ng-container>\n  </a>\n\n  <ng-container *ngIf=\"getButtonGroupTemplate() as template; else defaultButtonGroup\">\n    <div [ngClass]=\"getClassNames('buttonGroup', 'rightAlign')\">\n      <ng-container *ngTemplateOutlet=\"template; context: getButtonGroupContext()\"></ng-container>\n    </div>\n  </ng-container>\n\n  <ng-template #defaultButtonGroup>\n    <div [ngClass]=\"getClassNames('buttonGroup', 'rightAlign')\">\n      <button type=\"button\" (click)=\"addRule()\" [ngClass]=\"getClassNames('button')\" [disabled]=disabled>\n        <i [ngClass]=\"getClassNames('addIcon')\"></i> Rule\n      </button>\n      <button type=\"button\" (click)=\"addRuleSet()\" [ngClass]=\"getClassNames('button')\" *ngIf=\"allowRuleset\" [disabled]=disabled>\n        <i [ngClass]=\"getClassNames('addIcon')\"></i> Ruleset\n      </button>\n      <ng-container *ngIf=\"!!parentValue && allowRuleset\">\n        <button type=\"button\" (click)=\"removeRuleSet()\" [ngClass]=\"getClassNames('button', 'removeButton')\" [disabled]=disabled>\n          <i [ngClass]=\"getClassNames('removeIcon')\"></i>\n        </button>\n      </ng-container>\n    </div>\n  </ng-template>\n\n  <ng-container *ngIf=\"getSwitchGroupTemplate() as template; else defaultSwitchGroup\">\n    <ng-container *ngTemplateOutlet=\"template; context: getSwitchGroupContext()\"></ng-container>\n  </ng-container>\n\n  <ng-template #defaultSwitchGroup>\n    <div [ngClass]=\"getClassNames('switchGroup', 'transition')\" *ngIf=\"data\">\n      <div [ngClass]=\"getClassNames('switchControl')\">\n        <input type=\"radio\" [ngClass]=\"getClassNames('switchRadio')\" [(ngModel)]=\"data.condition\" [disabled]=disabled\n          value=\"and\" #andOption />\n        <label (click)=\"changeCondition(andOption.value)\" [ngClass]=\"getClassNames('switchLabel')\">AND</label>\n      </div>\n      <div [ngClass]=\"getClassNames('switchControl')\">\n        <input type=\"radio\" [ngClass]=\"getClassNames('switchRadio')\" [(ngModel)]=\"data.condition\" [disabled]=disabled\n          value=\"or\" #orOption />\n        <label (click)=\"changeCondition(orOption.value)\" [ngClass]=\"getClassNames('switchLabel')\">OR</label>\n      </div>\n    </div>\n  </ng-template>\n</div>\n\n<div #treeContainer (transitionend)=\"transitionEnd($event)\" [ngClass]=\"getClassNames('treeContainer', data.collapsed ? 'collapsed' : null)\">\n  <ul [ngClass]=\"getClassNames('tree')\" *ngIf=\"data && data.rules\">\n    <ng-container *ngFor=\"let rule of data.rules;let i=index\">\n\n      <ng-container *ngIf=\"{ruleset: !!rule.rules, invalid: !config.allowEmptyRulesets && rule.rules && rule.rules.length === 0} as local\">\n        <li [ngClass]=\"getQueryItemClassName(local)\">\n          <ng-container *ngIf=\"!local.ruleset\">\n\n            <ng-container *ngIf=\"getRemoveButtonTemplate() as template; else defaultRemoveButton\">\n              <div [ngClass]=\"getClassNames('buttonGroup', 'rightAlign')\">\n                <ng-container *ngTemplateOutlet=\"template; context: getRemoveButtonContext(rule)\"></ng-container>\n              </div>\n            </ng-container>\n\n            <ng-template #defaultRemoveButton>\n              <div [ngClass]=\"getClassNames('removeButtonSize', 'rightAlign')\">\n                <button type=\"button\" [ngClass]=\"getClassNames('button', 'removeButton')\" (click)=\"removeRule(rule, data)\" [disabled]=disabled>\n                  <i [ngClass]=\"getClassNames('removeIcon')\"></i>\n                </button>\n              </div>\n            </ng-template>\n\n            <div *ngIf=\"entities?.length > 0\" class=\"q-inline-block-display\">\n              <ng-container *ngIf=\"getEntityTemplate() as template; else defaultEntity\">\n                <ng-container *ngTemplateOutlet=\"template; context: getEntityContext(rule)\"></ng-container>\n              </ng-container>\n            </div>\n\n            <ng-template #defaultEntity>\n              <div [ngClass]=\"getClassNames('entityControlSize')\">\n                <select [ngClass]=\"getClassNames('entityControl')\" [(ngModel)]=\"rule.entity\" (ngModelChange)=\"changeEntity($event, rule,i,data)\"\n                  [disabled]=\"disabled\">\n                  <option *ngFor=\"let entity of entities\" [ngValue]=\"entity.value\">\n                    {{entity.name}}\n                  </option>\n                </select>\n              </div>\n            </ng-template>\n\n            <ng-container *ngIf=\"getFieldTemplate() as template; else defaultField\">\n              <ng-container *ngTemplateOutlet=\"template; context: getFieldContext(rule)\"></ng-container>\n            </ng-container>\n\n            <ng-template #defaultField>\n              <div [ngClass]=\"getClassNames('fieldControlSize')\">\n                <select [ngClass]=\"getClassNames('fieldControl')\" [(ngModel)]=\"rule.field\" (ngModelChange)=\"changeField($event, rule)\"\n                  [disabled]=\"disabled\">\n                  <option *ngFor=\"let field of getFields(rule.entity)\" [ngValue]=\"field.value\">\n                    {{field.name}}\n                  </option>\n                </select>\n              </div>\n            </ng-template>\n\n            <ng-container *ngIf=\"getOperatorTemplate() as template; else defaultOperator\">\n              <ng-container *ngTemplateOutlet=\"template; context: getOperatorContext(rule)\"></ng-container>\n            </ng-container>\n\n            <ng-template #defaultOperator>\n              <div [ngClass]=\"getClassNames('operatorControlSize')\">\n                <select [ngClass]=\"getClassNames('operatorControl')\" [(ngModel)]=\"rule.operator\" (ngModelChange)=\"changeOperator(rule)\"\n                  [disabled]=\"disabled\">\n                  <option *ngFor=\"let operator of getOperators(rule.field)\" [ngValue]=\"getOperatorValue(operator)\">\n                    {{operator?.localized ?? operator }}\n                  </option>\n                </select>\n              </div>\n            </ng-template>\n\n            <ng-container *ngIf=\"findTemplateForRule(rule) as template; else defaultInput\">\n              <ng-container *ngTemplateOutlet=\"template; context: getInputContext(rule)\"></ng-container>\n            </ng-container>\n\n            <ng-template #defaultInput>\n              <div [ngClass]=\"getClassNames('inputControlSize')\" [ngSwitch]=\"getInputType(rule.field, rule.operator)\">\n                <input [ngClass]=\"getClassNames('inputControl')\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"changeInput()\"\n                  [disabled]=\"disabled\" *ngSwitchCase=\"'string'\" type=\"text\">\n                <input [ngClass]=\"getClassNames('inputControl')\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"changeInput()\"\n                  [disabled]=\"disabled\" *ngSwitchCase=\"'number'\" type=\"number\">\n                <input [ngClass]=\"getClassNames('inputControl')\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"changeInput()\"\n                  [disabled]=\"disabled\" *ngSwitchCase=\"'date'\" type=\"date\">\n                <input [ngClass]=\"getClassNames('inputControl')\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"changeInput()\"\n                  [disabled]=\"disabled\" *ngSwitchCase=\"'time'\" type=\"time\">\n                <select [ngClass]=\"getClassNames('inputControl')\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"changeInput()\"\n                  [disabled]=\"disabled\" *ngSwitchCase=\"'category'\">\n                  <option *ngFor=\"let opt of getOptions(rule.field)\" [ngValue]=\"opt.value\">\n                    {{opt.name}}\n                  </option>\n                </select>\n                <ng-container *ngSwitchCase=\"'multiselect'\">\n                  <select [ngClass]=\"getClassNames('inputControl')\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"changeInput()\"\n                    [disabled]=\"disabled\" multiple>\n                    <option *ngFor=\"let opt of getOptions(rule.field)\" [ngValue]=\"opt.value\">\n                      {{opt.name}}\n                    </option>\n                  </select>\n                </ng-container>\n                <input [ngClass]=\"getClassNames('inputControl')\" [(ngModel)]=\"rule.value\" (ngModelChange)=\"changeInput()\"\n                  [disabled]=\"disabled\" *ngSwitchCase=\"'boolean'\" type=\"checkbox\">\n              </div>\n            </ng-template>\n\n          </ng-container>\n          <query-builder *ngIf=\"local.ruleset\" [data]=\"rule\" [disabled]=\"disabled\" [parentTouchedCallback]=\"parentTouchedCallback || onTouchedCallback\"\n            [parentChangeCallback]=\"parentChangeCallback || onChangeCallback\" [parentInputTemplates]=\"parentInputTemplates || inputTemplates\"\n            [parentOperatorTemplate]=\"parentOperatorTemplate || operatorTemplate\" [parentFieldTemplate]=\"parentFieldTemplate || fieldTemplate\"\n            [parentEntityTemplate]=\"parentEntityTemplate || entityTemplate\" [parentSwitchGroupTemplate]=\"parentSwitchGroupTemplate || switchGroupTemplate\"\n            [parentButtonGroupTemplate]=\"parentButtonGroupTemplate || buttonGroupTemplate\" [parentRemoveButtonTemplate]=\"parentRemoveButtonTemplate || removeButtonTemplate\"\n            [parentEmptyWarningTemplate]=\"parentEmptyWarningTemplate || emptyWarningTemplate\" [parentArrowIconTemplate]=\"parentArrowIconTemplate || arrowIconTemplate\"\n            [parentValue]=\"data\" [classNames]=\"classNames\" [config]=\"config\" [allowRuleset]=\"allowRuleset\"\n            [allowCollapse]=\"allowCollapse\" [emptyMessage]=\"emptyMessage\" [operatorMap]=\"operatorMap\">\n          </query-builder>\n\n          <ng-container *ngIf=\"getEmptyWarningTemplate() as template; else defaultEmptyWarning\">\n            <ng-container *ngIf=\"local.invalid\">\n              <ng-container *ngTemplateOutlet=\"template; context: getEmptyWarningContext()\"></ng-container>\n            </ng-container>\n          </ng-container>\n\n          <ng-template #defaultEmptyWarning>\n            <p [ngClass]=\"getClassNames('emptyWarning')\" *ngIf=\"local.invalid\">\n              {{emptyMessage}}\n            </p>\n          </ng-template>\n        </li>\n      </ng-container>\n    </ng-container>\n  </ul>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, } from '@angular/forms';\n\nimport { QueryBuilderComponent } from './query-builder/query-builder.component';\n\nimport { QueryArrowIconDirective } from './query-builder/query-arrow-icon.directive';\nimport { QueryFieldDirective } from './query-builder/query-field.directive';\nimport { QueryInputDirective } from './query-builder/query-input.directive';\nimport { QueryEntityDirective } from './query-builder/query-entity.directive';\nimport { QueryOperatorDirective } from './query-builder/query-operator.directive';\nimport { QueryButtonGroupDirective } from './query-builder/query-button-group.directive';\nimport { QuerySwitchGroupDirective } from './query-builder/query-switch-group.directive';\nimport { QueryRemoveButtonDirective } from './query-builder/query-remove-button.directive';\nimport { QueryEmptyWarningDirective } from './query-builder/query-empty-warning.directive';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule\n    ],\n    declarations: [\n        QueryBuilderComponent,\n        QueryInputDirective,\n        QueryOperatorDirective,\n        QueryFieldDirective,\n        QueryEntityDirective,\n        QueryButtonGroupDirective,\n        QuerySwitchGroupDirective,\n        QueryRemoveButtonDirective,\n        QueryEmptyWarningDirective,\n        QueryArrowIconDirective\n    ],\n    exports: [\n        QueryBuilderComponent,\n        QueryInputDirective,\n        QueryOperatorDirective,\n        QueryFieldDirective,\n        QueryEntityDirective,\n        QueryButtonGroupDirective,\n        QuerySwitchGroupDirective,\n        QueryRemoveButtonDirective,\n        QueryEmptyWarningDirective,\n        QueryArrowIconDirective\n    ]\n})\nexport class QueryBuilderModule { }\n","/*\n * Public API Surface of angular2-query-builder\n */\n\nexport * from './lib/query-builder/query-builder.interfaces';\n\nexport * from './lib/query-builder/query-builder.component';\n\nexport * from './lib/query-builder/query-button-group.directive';\nexport * from './lib/query-builder/query-entity.directive';\nexport * from './lib/query-builder/query-field.directive';\nexport * from './lib/query-builder/query-input.directive';\nexport * from './lib/query-builder/query-operator.directive';\nexport * from './lib/query-builder/query-switch-group.directive';\nexport * from './lib/query-builder/query-remove-button.directive';\nexport * from './lib/query-builder/query-empty-warning.directive';\nexport * from './lib/query-builder/query-arrow-icon.directive';\n\nexport * from './lib/angular2-query-builder.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}