{"version":3,"file":"ngx-surveys.mjs","sources":["../../../projects/ngx-surveys/src/lib/ngx-survey.service.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item.directive.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item.ts","../../../projects/ngx-surveys/src/lib/form-item/error-state.matcher.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-string/form-item-string.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-string/form-item-string.component.html","../../../projects/ngx-surveys/src/lib/components/star-rating/star-rating.component.ts","../../../projects/ngx-surveys/src/lib/components/star-rating/star-rating.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-rating/form-item-rating.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-rating/form-item-rating.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-text/form-item-text.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-text/form-item-text.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-date/form-item-date.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-date/form-item-date.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-segments/form-item-segments.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-segments/form-item-segments.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/radio-group/radio-group.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/radio-group/radio-group.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/selection-list/selection-list.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/selection-list/selection-list.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/select/select.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/select/select.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/form-item-radio.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-radio/form-item-radio.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-numeric-rating/form-item-numeric-rating.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-numeric-rating/form-item-numeric-rating.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-select/form-item-select.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-select/form-item-select.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-options-editor/form-item-options-editor.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-options-editor/form-item-options-editor.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-checkbox/form-item-checkbox.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-checkbox/form-item-checkbox.component.html","../../../projects/ngx-surveys/src/lib/pipes/file-size.pipe.ts","../../../projects/ngx-surveys/src/lib/pipes/truncate.pipe.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/file-list-item-image/file-list-item-image.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/file-list-item-image/file-list-item-image.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/file-list-item-video/file-list-item-video.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/file-list-item-video/file-list-item-video.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/form-item-file.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/form-item-file.component.html","../../../projects/ngx-surveys/src/lib/pipes/duration.pipe.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-voice/form-item-voice.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-voice/form-item-voice.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-label/form-item-label.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-label/form-item-label.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item.component.html","../../../projects/ngx-surveys/src/lib/ngx-survey.component.ts","../../../projects/ngx-surveys/src/lib/ngx-survey.component.html","../../../projects/ngx-surveys/src/lib/dialogs/dialog-section-edit/dialog-section-edit.ts","../../../projects/ngx-surveys/src/lib/dialogs/dialog-section-edit/dialog-section-edit.html","../../../projects/ngx-surveys/src/lib/dialogs/dialog-item-edit/dialog-item-edit.ts","../../../projects/ngx-surveys/src/lib/dialogs/dialog-item-edit/dialog-item-edit.html","../../../projects/ngx-surveys/src/lib/dialogs/dialog-item-visibility/dialog-item-visibility.ts","../../../projects/ngx-surveys/src/lib/dialogs/dialog-item-visibility/dialog-item-visibility.html","../../../projects/ngx-surveys/src/lib/form-builder/form-builder.component.ts","../../../projects/ngx-surveys/src/lib/form-builder/form-builder.component.html","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/file-list-item-file/file-list-item-file.component.ts","../../../projects/ngx-surveys/src/lib/form-item/form-item-file/file-list-item-file/file-list-item-file.component.html","../../../projects/ngx-surveys/src/lib/ngx-survey.module.ts","../../../projects/ngx-surveys/src/ngx-surveys.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormItemError, SurveyFile } from './form-item';\nimport * as _ from 'lodash';\nimport { ReplaySubject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxSurveyService {\n\n    constructor() {\n\n    }\n\n    public onFilesSelected: ReplaySubject<SurveyFile[]> = new ReplaySubject(1);\n\n    public errorMessages: any= {\n        require: \"Field required\",\n        minLength: \"Must be more than {value} characters\",\n        maxLength: \"Must be less than {value} characters\",\n        setLength: \"{value} Digit Number Required\",\n        numeric: \"The entry can only contain numbers\",\n        email: \"Not valid email\"\n    };\n\n    public initForm(form, formValues) {\n        //console.log(form, formValues);\n        form.forEach(section=>{\n            if (section.name) {\n                const groupedItems = _.groupBy(_.filter(section.items, item=>!item.name), item=>item.type);\n\n                _.each(groupedItems, (items, type)=>{\n                    if (type) {\n                        section.items[_.indexOf(section.items, _.first(items))] = {\n                            type: type,\n                            items: items,\n                            name: section.name,\n                            isSectionValueItem: true,\n                        };\n                        _.each(items, (item)=>{\n                            section.items = _.without(section.items, item);\n                        });\n                    }\n                });\n            }\n        });\n\n\n        const visibilityValuesInTableConvert = (item)=>{\n            if (item.visibilityValuesInTable) {\n                const tableItem = _.first(_.map(form, (section)=>{\n                    return _.find(section.items, (item)=>{\n                        if (!item.items) {\n                            return item.actionUpdatesTableValue;\n                        } else {\n                            return _.find(item.items, item=>item.actionUpdatesTableValue);\n                        }\n                    });\n                }));\n                const newValues = <any[]>[];\n                if (tableItem) {\n                    _.each(item.visibilityValuesInTable, (val)=>{\n                        let valItem = _.find(tableItem.items, item=>item.title===val);\n                        newValues.push(valItem && valItem.optionValue ? valItem.optionValue : val);\n                    });\n                }\n                item.visibilityValuesInTable = newValues;\n            }\n        };\n\n        _.each(form, (section)=>{\n            visibilityValuesInTableConvert(section);\n            _.each(section.items, (item)=>{\n                visibilityValuesInTableConvert(item);\n                if (item.type === 'radio' && section.allowsMultipleSelection) {\n                    item.multiple = true;\n                }\n                if (item.multiple && _.isString(item.value)) {\n                    if (_.isString(item.value)) {\n                        try {\n                            item.value = JSON.parse(item.value);\n                        }\n                        catch (err){\n                            console.log(err);\n                        }\n                    }\n                }\n                if (formValues[item.name] !== undefined) {\n                    item.value = formValues[item.name];\n                    if (item.type === 'date' && !_.isString(item.value)) {\n                        //item.value = this.getDateStr(formValues[item.name]);\n                    }\n                    //item.readOnly = item.readOnly || _.contains(this.readOnlyFields, item.name);\n                    if (item.multiple && _.isString(item.value)) {\n                        item.value = JSON.parse(item.value);\n                    }\n\n                    if (item.type === 'numericRating' && _.isString(item.value)) {\n                        item.value = parseInt(item.value);\n                    }\n                }\n                if (item.isSectionValueItem && section.sectionValidation && !item.fieldValidation) {\n                    item.fieldValidation = section.sectionValidation;\n                }\n            });\n            if (section.subtitle) {\n                section.subtitle = section.subtitle.replace(new RegExp('\\n', 'g'), '<br />');\n            }\n        });\n        //console.log(form);\n        return form;\n    }\n\n    public isItemVisible(form, section, item) {\n        let res = true;\n        if (item.visibilityValuesInSection && item.visibilityValuesInSection.length) {\n            let sectionItems = section.items?.filter(item=>item.isSectionValueItem).length ? section.items?.filter(item=>item.isSectionValueItem) : section.items?.filter(item=>item.actionUpdatesSectionValue);\n\n            res = sectionItems.filter((sItem)=>{\n                const valArr=_.isArray(sItem.value) ? sItem.value : [sItem.value];\n                return valArr.find(val=>\n                    item.visibilityValuesInSection.find(arr=>\n                        arr.indexOf(val)>=0\n                    )\n                )\n            }\n            ).length===item.visibilityValuesInSection.length;\n        }\n        if (item.visibilityValuesInTable && item.visibilityValuesInTable.length) {\n            let tableItem = _.first(_.map(form, (section) => {\n                return _.find(section.items, (item) => {\n                    if (!item.items) {\n                        return item.actionUpdatesTableValue;\n                    } else {\n                        return _.find(item.items, item=>item.actionUpdatesTableValue);\n                    }\n                });\n            }));\n            if (tableItem) {\n                res = item.visibilityValuesInTable.indexOf(tableItem.value)>=0;\n            }\n        }\n\n        if (section.visibilityValuesInTable && section.visibilityValuesInTable.length) {\n            let sectionTableItem = _.first(_.map(form, (section) => {\n                return _.find(section.items, (item) => {\n                    if (!item.items) {\n                        return item.actionReloadsTable;\n                    } else {\n                        return _.find(item.items, item=>item.actionReloadsTable);\n                    }\n                });\n            }));\n            if (sectionTableItem) {\n                res = section.visibilityValuesInTable.indexOf(sectionTableItem.value)>=0;\n            }\n        }\n\n        return res;\n    };\n\n    public isSectionVisible(form, section) {\n        let res = false;\n        _.each(section.items, (item)=>{\n            if (this.isItemVisible(form, section, item)) {\n                res = true;\n            }\n        });\n        return !section.items ? this.isItemVisible(form, section, {}) : res;\n    };\n\n    getErrors(item): FormItemError[] {\n        if (item.fieldValidations) {\n            let errors = <FormItemError []> [];\n            _.each(item.fieldValidations.rules, (rule)=>{\n                const err =  <FormItemError> this.checkValidationRule(item, rule);\n                if (err) {\n                    errors.push(err);\n                }\n            });\n            errors = _.flatten(errors);\n            if (item.fieldValidations.type === 'OR') {\n                return errors.length === item.fieldValidations.rules.length ? [errors[errors.length-1]] : [];\n            }\n            return errors;\n        }\n        const err=this.checkValidationRule(item, item.fieldValidation);\n        return err ? [err] : [];\n    };\n\n    checkValidationRule(item, rule) : FormItemError {\n        let res;\n        let errorMessages=_.clone(this.errorMessages);\n        //console.log(item);\n        if (rule && rule.minLength >= 0 && rule.minLength === rule.maxLength) {\n            rule.setLength = rule.maxLength;\n            delete rule.minLength;\n            delete rule.maxLength;\n        }\n        let validationObj = rule || item.sectionValidation;\n        let isNumericError = !/^\\d+$/.test(item.value) && validationObj && validationObj.numeric;\n        if (!validationObj) {\n            //console.log('!validationObj', item);\n        }\n        if (item.type==='label'){\n            return res;\n        }\n\n        _.each(validationObj, (param, name) => {\n            if (name === 'minCount') {\n                name = 'minLength';\n            }\n            let message = '';\n            let itemValue = '' + item.value;\n\n            switch (name) {\n                case \"setLength\":\n                    if (item.value === undefined || (item.value && itemValue.length !== param) || isNumericError) {\n                        message = errorMessages[name].replace('{value}', param);\n                        if (item.keyboardType && item.keyboardType === 'number-pad') {\n                            message = message.replace('characters', 'digits');\n                        }\n                        res={\n                            type: name,\n                            message: message\n                        };\n                    } else if (item.value === null) {\n                        //console.log(item);\n                        res={\n                            type: 'require',\n                            message: errorMessages.require\n                        };\n                    }\n                    break;\n                case \"minLength\":\n                    if (!_.isObject(item.value) && (item.value === null || item.value === undefined || !item.value || (item.value?.length || 0) < param || isNumericError)) {\n                        //console.log(isNumericError, param, item, rule, name);\n                        if (param > 1) {\n                            message = errorMessages[name].replace('{value}', param);\n                            if (item.keyboardType && item.keyboardType === 'number-pad') {\n                                message = message.replace('characters', 'digits');\n                            }\n                            res={\n                                type: name,\n                                message: message\n                            };\n                        } else if (!item.value || !item?.value?.length) {\n                            //console.log(item);\n                            res={\n                                type: 'require',\n                                message: errorMessages.require\n                            };\n                        }\n                        else if (isNumericError) {\n                            res={\n                                type: 'numeric',\n                                message: errorMessages.numeric\n                            };\n                        }\n                    }\n                    if (item.name === 'email' && !res?.length) {\n                        let re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n                        if (!re.test(item.value)) {\n                            res={\n                                type: 'email',\n                                message: errorMessages.email\n                            };\n                        }\n                    }\n                    break;\n                case \"optionKeyValues\":\n                    if (!item.value || !item.value.length){\n                        res={\n                            type: 'require',\n                            message: errorMessages.require\n                        };\n                    }\n                    else {\n                        if (item.value.find(op=>!op.optionValue || !op.label)){\n                            res={\n                                type: 'require',\n                                message: 'All options should have Value and Labels defined'\n                            };\n                        }\n                    }\n                    break;\n                default:\n                    break;\n            }\n        });\n        return res;\n    };\n\n    public getValue(form, validateAll:boolean=false){\n        let value = {};\n        let valid = true;\n        let firstError;\n        _.each(_.filter(form, (section)=>this.isSectionVisible(form, section)), (section)=>{\n            _.each(_.filter(section.items, (item)=>this.isItemVisible(form, section, item)), (item)=>{\n                //value[item.name] = _.isArray(item.value) ? JSON.stringify(item.value) : item.value;\n\n                value[item.name] = item.value;\n                if (validateAll){\n                    item.errors = this.getErrors(item);\n                    if (item.errors && item.errors.length) {\n                        if (!firstError) {\n                            firstError = item;\n                        }\n                        valid = false;\n                    }\n                }\n            });\n        });\n        return {\n            valid,\n            value,\n            firstError\n        };\n    }\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n    selector: '[form-item-host]',\n})\nexport class FormItemDirective {\n    constructor(\n        public viewContainerRef: ViewContainerRef\n    ) { }\n}\n","import { EventEmitter } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nexport interface FormItemError {\n    type?: string;\n    message?: string;\n}\n\nexport interface FormItemValidationRules {\n    minLength?: number;\n    optionKeyValues?: boolean;\n}\n\nexport interface FormItemValidation {\n    rules: FormItemValidationRules[];\n}\n\nexport class FormItem {\n    type: string;\n    name: string;\n    label: string;\n    style: string;\n    hint: string;\n    value?: string | number | string[] | boolean | FormItemOptionItem[] | SurveyFile[] | SurveyFile;\n    errors: FormItemError[];\n    fieldValidations: FormItemValidation;\n    fieldValidation: FormItemValidationRules;\n    hasOptions: boolean;\n    justAdded:  boolean;\n    required:  boolean;\n    readOnly:  boolean;\n    multiple:  boolean;\n    actionUpdatesTableValue: boolean;\n    actionUpdatesSectionValue: boolean;\n    visibilityValuesInTable: string[];\n    visibilityValuesInSection: string[];\n    items?: FormItemOptionItem[];\n    segments?: FormItemOptionItem[];\n    isSectionValueItem?: boolean;\n    busy?:boolean;\n}\n\nexport interface FormItemOptionItem {\n    optionValue: string;\n    label: string;\n    showExplanation?: boolean;\n    explanationLabel?: string;\n    selected?: boolean;\n}\n\n\nexport interface FormItemWidget {\n    item: FormItem;\n    editable: boolean;\n    isMobile?: boolean;\n    changes: EventEmitter<FormItem>;\n}\n\nexport interface FormSection {\n    name?: string;\n    title?: string;\n    subtitle?: string;\n    sectionStyle?: string;\n    items?: FormItem[];\n    isEditable?: boolean;\n    hasError?: boolean;\n    firstErrorText?: string;\n}\n\nexport class SurveyFile {\n    progressSubject: Observable<number>;\n    progressObserver: Observer<number>;\n    progressValue: number;\n    uploading: boolean;\n    name: string;\n    size: number;\n    mime: string;\n    src: string | ArrayBuffer | null;\n    url: string;\n    file: File;\n    duration: number;\n}\n","import {UntypedFormControl, FormGroupDirective, NgForm} from '@angular/forms';\nimport {ErrorStateMatcher} from '@angular/material/core';\n\nexport class SurveyErrorStateMatcher implements ErrorStateMatcher {\n    public item:any;\n  isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n    return !(this.item && !(this.item.errors && this.item.errors.length));\n  }\n}\n\nexport class ItemOptionStateMatcher implements ErrorStateMatcher {\n  isErrorState(control: UntypedFormControl, form: FormGroupDirective | NgForm): boolean {\n    //console.log(control);\n    return control && !control.value;\n  }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, OnChanges } from '@angular/core';\nimport { FormItem, SurveyErrorStateMatcher, FormItemWidget } from '../index';\n\nexport class FormItemString extends FormItem {\n    hint: string;\n}\n\n@Component({\n  selector: 'ammo-form-item-string',\n  templateUrl: './form-item-string.component.html',\n  styleUrls: ['./form-item-string.component.scss']\n})\nexport class FormItemStringComponent implements FormItemWidget, OnInit, OnChanges {\n\n    @Input() item: FormItemString;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemString>();\n    matcher = new SurveyErrorStateMatcher();\n    maxLabelLength=60;\n\n    constructor() { }\n\n    ngOnInit() {\n        this.matcher.item=this.item;\n    }\n\n    ngOnChanges() {\n        this.matcher.item=this.item;\n    }\n\n    checkRequired(placeholder) {\n        if (placeholder === 'Required') {\n            return true;\n        }\n    }\n\n    onValueChanges(item) {\n        this.changes.emit(item);\n    }\n}\n","\n<mat-form-field>\n    <label class=\"long-label-text\" *ngIf=\"item.label.length>=maxLabelLength\" [ngClass]=\"{'has-error':item.errors && item.errors.length}\">{{item.label}} <span *ngIf=\"item.required\" class=\"required-asterix\">*</span></label>\n    <input #inputField\n        matInput\n        [type]=\"item.style || 'text'\"\n        [disabled]=\"!editable\"\n        [attr.id]=\"item.name\"\n        [placeholder]=\"item.label.length<maxLabelLength ? item.label : ''\"\n        [(ngModel)]=\"item.value\"\n        [minlength]=\"item.fieldValidation ? item.fieldValidation.minLength : undefined \"\n        (ngModelChange)=\"onValueChanges(item)\"\n        [errorStateMatcher]=\"matcher\"\n        [required]=\"item.required\"\n    >\n    <mat-error *ngIf=\"item.errors && item.errors.length\">\n      <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n    </mat-error>\n    <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length) && item.hint?.length < maxLabelLength\"><strong>{{item.hint}}</strong> </mat-hint>\n\n</mat-form-field>\n<small class=\"long-hint\" *ngIf=\"!(item.errors && item.errors.length) && item.hint?.length >= maxLabelLength\"><strong>{{item.hint}}</strong> </small>\n\n","import { Component, OnInit, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';\n\n\n@Component({\n  selector: 'mat-star-rating',\n  templateUrl: './star-rating.component.html',\n  styleUrls: ['./star-rating.component.css'],\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class StarRatingComponent implements OnInit {\n\n  @Input() public rating: number;\n  @Input() public starCount: number;\n  @Input() public color: string;\n  @Input() public readOnly: boolean;\n  @Output() public ratingUpdated = new EventEmitter();\n\n  public snackBarDuration: number = 2000;\n  public ratingArr : number[]=[];\n\n  constructor() {\n  }\n\n\n  ngOnInit() {\n    for (let index = 0; index < this.starCount; index++) {\n      this.ratingArr.push(index);\n    }\n  }\n  onClick(rating:number) {\n    if (this.readOnly){\n        return false;\n    }\n    this.rating=rating;\n    this.ratingUpdated.emit(rating);\n    return false;\n  }\n\n  showIcon(index:number) {\n    if (this.rating >= index + 1) {\n      return 'star';\n    } else {\n      return 'star_border';\n    }\n  }\n\n}\nexport enum StarRatingColor {\n  primary = \"primary\",\n  accent = \"accent\",\n  warn = \"warn\"\n}\n","<button mat-icon-button [color]=\"color\" *ngFor=\"let ratingId of ratingArr;index as i\" [id]=\"'star_'+i\" (click)=\"onClick(i+1)\" [matTooltip]=\"ratingId+1\" matTooltipPosition=\"above\">\n  <mat-icon>\n    {{showIcon(i)}}\n  </mat-icon>\n</button>\n<mat-error *ngIf=\"starCount == null || starCount == 0\">\n  Star count is <strong>required</strong> and cannot be zero\n</mat-error>\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { FormItem, FormItemWidget } from '../form-item';\n\nexport class FormItemRating extends FormItem {\n    value: number;\n}\n\n\n@Component({\n  selector: 'ammo-form-item-rating',\n  templateUrl: './form-item-rating.component.html',\n  styleUrls: ['./form-item-rating.component.scss']\n})\nexport class FormItemRatingComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemRating;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemRating>();\n\n    constructor() { }\n\n    ngOnInit() {\n\n    }\n\n    onRatingChanged(value){\n        if (!this.editable){\n            return;\n        }\n        this.item.value=value;\n        this.changes.emit(this.item);\n    }\n}\n","<div class=\"form-group\">\n    <div class=\"col-xs-12 rating-set\">\n        <div class=\"rating-set-title\">{{item.label}}</div>\n        <div class=\"rating-set-stars\">\n            <mat-star-rating\n                [rating]=\"item.value\"\n                [starCount]=\"5\"\n                [color]=\"editable ? 'primary' : 'muted'\"\n                [readOnly]=\"!editable\"\n                (ratingUpdated)=\"onRatingChanged($event)\"\n            ></mat-star-rating>\n        </div>\n        <mat-error *ngIf=\"item.errors && item.errors.length\">\n            <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n        </mat-error>\n        <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n    </div>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { FormItem, SurveyErrorStateMatcher, FormItemWidget } from '../index';\n\nexport class FormItemText extends FormItem {\n    hint: string;\n}\n\n@Component({\n  selector: 'ammo-form-item-text',\n  templateUrl: './form-item-text.component.html',\n  styleUrls: ['./form-item-text.component.scss']\n})\nexport class FormItemTextComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemText;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemText>();\n    matcher = new SurveyErrorStateMatcher();\n    maxLabelLength=60;\n\n    constructor() { }\n\n\n    ngOnInit() {\n        this.matcher.item=this.item;\n    }\n\n    ngOnChanges() {\n        this.matcher.item=this.item;\n    }\n\n    checkRequired(placeholder) {\n        if (placeholder === 'Required') {\n            return true;\n        }\n    }\n\n    onValueChanges(item) {\n        this.changes.emit(item);\n    }\n}\n","\n<mat-form-field class=\"example-full-width\">\n    <label class=\"long-label-text\" *ngIf=\"item.label.length>=maxLabelLength\" [ngClass]=\"{'has-error':item.errors && item.errors.length}\">{{item.label}} <span *ngIf=\"item.required\" class=\"required-asterix\">*</span></label>\n    <textarea matInput\n        [disabled]=\"!editable\"\n        [attr.id]=\"item.name\"\n        [placeholder]=\"item.label.length<maxLabelLength ? item.label : ''\"\n        [(ngModel)]=\"item.value\"\n        (ngModelChange)=\"onValueChanges(item)\"\n        [errorStateMatcher]=\"matcher\"\n        cdkTextareaAutosize\n        #autosize=\"cdkTextareaAutosize\"\n        cdkAutosizeMinRows=\"1\"\n        [required]=\"item.required\"\n    ></textarea>\n    <mat-error *ngIf=\"item.errors && item.errors.length\">\n      <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n    </mat-error>\n    <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length) && item.hint?.length < maxLabelLength\"><strong>{{item.hint}}</strong> </mat-hint>\n\n</mat-form-field>\n<small class=\"long-hint\" *ngIf=\"!(item.errors && item.errors.length) && item.hint?.length >= maxLabelLength\"><strong>{{item.hint}}</strong> </small>\n","import { Component, OnInit, Input, EventEmitter, forwardRef, Output, ViewChild, AfterViewInit } from '@angular/core';\nimport { FormItem, SurveyErrorStateMatcher, FormItemWidget } from '../index';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport moment from \"moment\";\n\nexport class FormItemDate extends FormItem {\n\n}\n\n\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => FormItemDateComponent),\n  multi: true\n};\n\nconst noop = () => {\n};\n\n@Component({\n  selector: 'ammo-form-item-date',\n  templateUrl: './form-item-date.component.html',\n  styleUrls: ['./form-item-date.component.scss'],\n  providers: [\n    CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR\n  ],\n})\nexport class FormItemDateComponent implements FormItemWidget, OnInit, AfterViewInit, ControlValueAccessor {\n\n    @ViewChild('inputField', { static: true }) public inputField:MatInput;\n\n    @Input() item: FormItemDate;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemDate>();\n    matcher = new SurveyErrorStateMatcher();\n\n    innerValue: any;\n\n    constructor() { }\n\n    ngOnInit() {\n        this.matcher.item=this.item;\n        if (this.item.value){\n            this.value=moment(this.item.value.toString());//\n        }\n        this.onTouchedCallback();\n    }\n\n    ngAfterViewInit(){\n        //console.log(this.inputField);\n        this.inputField.value='5/14/2021';\n    }\n\n    ngOnChanges() {\n        this.matcher.item=this.item;\n    }\n\n    checkRequired(placeholder) {\n        if (placeholder === 'Required') {\n            return true;\n        }\n    }\n\n    onValueChanges(ev) {\n        const val=ev.value ? ev.value.format('L') : '';\n        this.item.value=val;\n        this.changes.emit(this.item);\n    }\n\n    //Placeholders for the callbacks which are later provided\n  //by the Control Value Accessor\n  private onTouchedCallback: () => void = noop;\n  private onChangeCallback: (_: any) => void = noop;\n\n\n  //get accessor\n  get value(): any {\n    return this.innerValue;\n  };\n\n  get textValue(): string {\n    return this.value ? this.value.format('L') : '';\n  };\n\n  //set accessor including call the onchange callback\n  set value(v: any) {\n    if (v !== this.innerValue) {\n      this.innerValue = v;\n    }\n  }\n   //Occured value changed from module\n  writeValue(value: any): void {\n    if (value !== this.innerValue) {\n      this.innerValue = value;\n    }\n  }\n\n   registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedCallback = fn;\n  }\n\n  onChange(event) {\n    this.value = event;\n    this.onBlur();\n  }\n\n  onBlur() {\n    this.onChangeCallback(this.innerValue);\n  }\n\n  todate(value){\n    this.value = value ? moment(value) : '';\n    this.onValueChanges({\n        value: this.value\n      })\n  }\n\n}\n","<div class=\"form-group\">\n    <mat-form-field class=\"example-full-width\">\n        <input type=\"hidden\" [matDatepicker]=\"picker\" [(ngModel)]='value' (dateChange)=\"onValueChanges($event)\">\n        <input matInput #inputField\n            [name]=\"item.name\"\n            [disabled]=\"!editable || (value && item.readOnly)\"\n            [attr.id]=\"item.name\"\n            [placeholder]=\"item.label\"\n            (change)='todate($event.target.value)'\n            [ngModel]=\"textValue | date:'MM/dd/yyyy'\"\n            [errorStateMatcher]=\"matcher\"\n            [required]=\"item.required\"\n            mask=\"M0/d0/0000\"\n            (blur)=\"onBlur()\"\n        >\n        <mat-error *ngIf=\"item.errors && item.errors.length\">\n          <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n        </mat-error>\n        <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n        <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n        <mat-datepicker  (selectedChanged)=\"onChange($event)\" #picker></mat-datepicker>\n    </mat-form-field>\n</div>\n\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { FormItem, FormItemOptionItem, FormItemWidget } from '../form-item';\n\nexport class FormItemSegments extends FormItem {\n    segments: FormItemOptionItem[];\n    value: string;\n    hasOptions: boolean=true;\n}\n\n@Component({\n  selector: 'ammo-form-item-segments',\n  templateUrl: './form-item-segments.component.html',\n  styleUrls: ['./form-item-segments.component.scss']\n})\nexport class FormItemSegmentsComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemSegments;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemSegments>();\n\n    constructor() { }\n\n    ngOnInit() {\n\n    }\n\n    onSelectionChange(value){\n        this.item.value=value;\n        this.changes.emit(this.item);\n    }\n\n}\n","<div class=\"form-group\">\n    <mat-label *ngIf=\"item.label\">{{item.label}}</mat-label>\n    <mat-button-toggle-group\n        aria-label=\"type of credits\"\n        [ngClass]=\"{'has-error':item.errors && item.errors.length}\"\n        value=\"{{item.value}}\">\n        <mat-button-toggle\n            *ngFor=\"let segment of item.segments\"\n            [disabled]=\"!editable\"\n            (click)=\"editable ? onSelectionChange(segment.optionValue) : false\"\n            [value]=\"segment.value\"\n            [checked]=\"segment.optionValue===item.value\"\n            >{{segment.label}}\n        </mat-button-toggle>\n    </mat-button-toggle-group>\n    <mat-error *ngIf=\"item.errors && item.errors.length\">\n      <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n    </mat-error>\n    <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n</div>\n","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\nimport { FormItemOptionItem } from '../../form-item';\nimport { MatRadioChange } from '@angular/material/radio';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\n\n\n@Component({\n  selector: 'app-radio-group',\n  templateUrl: './radio-group.component.html',\n  styleUrls: ['./radio-group.component.scss']\n})\nexport class RadioGroupComponent implements OnInit {\n\n  @Input() label: string;\n  @Input() editable: boolean=true;\n  @Input() required: boolean;\n  @Input() multiple: boolean;\n  @Input() options: FormItemOptionItem[]=[];\n  @Output() selectionChange = new EventEmitter<string | string[]>();\n\n  @Input() value: string | string[];\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  isOptionSelected(option:FormItemOptionItem){\n    return this.multiple ? (this.value || []).indexOf(option.optionValue) >=0 : this.value===option.optionValue;\n  }\n\n  onSelectionChange(event:MatRadioChange){\n      this.selectionChange.emit(event.value);\n  }\n  onCheckboxSelectionChange(event:MatCheckboxChange){\n    let value=this.value && Array.isArray(this.value) ? this.value : [];\n    if (event.checked){\n        value.push(event.source.value);\n    }\n    else {\n      value=value.filter(v=>v!==event.source.value);\n    }\n    //console.log(value);\n    this.selectionChange.emit(value);\n  }\n\n}\n","<mat-radio-group [attr.aria-label]=\"label\" *ngIf=\"!multiple\"\n    (change)=\"onSelectionChange($event)\"\n    [disabled]=\"!editable\"\n    [(ngModel)]=\"value\"\n    [required]=\"required\"\n>\n    <mat-radio-button *ngFor=\"let option of options\"\n        [value]=\"option.optionValue\"\n        [checked]=\"isOptionSelected(option)\"\n        >{{option.label}}\n    </mat-radio-button>\n\n</mat-radio-group>\n<div class=\"example-list-section\" *ngIf=\"multiple\">\n    <ul>\n      <li *ngFor=\"let option of options\">\n        <mat-checkbox\n            [value]=\"option.optionValue\"\n            [checked]=\"isOptionSelected(option)\"\n            [disabled]=\"!editable\"\n            (change)=\"onCheckboxSelectionChange($event)\">\n          {{option.label}}\n        </mat-checkbox>\n      </li>\n    </ul>\n</div>\n","import { Component, OnInit, EventEmitter, Input, Output, ViewChild, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatSelectionList, MatSelectionListChange } from '@angular/material/list';\nimport { FormItemOptionItem } from '../../form-item';\n\n@Component({\n  selector: 'app-selection-list',\n  templateUrl: './selection-list.component.html',\n  styleUrls: ['./selection-list.component.scss']\n})\nexport class SelectionListComponent implements OnInit, OnChanges {\n\n  @Input() label: string;\n  @Input() editable: boolean=true;\n  @Input() required: boolean;\n  @Input() multiple: boolean;\n  @Input() options: FormItemOptionItem[]=[];\n  @Output() selectionChange = new EventEmitter<string | string[]>();\n\n  @Input() value: string | string[];\n\n  @ViewChild('selectedOptions', { static: false }) public selectedOptions:MatSelectionList;\n\n  public init:boolean=true;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  isOptionSelected(option:FormItemOptionItem){\n    return this.multiple ? (this.value || []).indexOf(option.optionValue) >=0 : this.value===option.optionValue;\n  }\n\n  onSelectionChange(event: MatSelectionListChange){\n    //console.log(event, this.selectedOptions);\n    this.value=this.multiple ? this.selectedOptions.selectedOptions.selected.map(op=>op.value) : event.options[0].value;\n    this.selectionChange.emit(this.value);\n  }\n\n  ngOnChanges(changes:SimpleChanges){\n    if (changes.multiple && changes.multiple.previousValue!==changes.multiple.currentValue){\n      this.init=false;\n      //console.log(changes);\n      setTimeout(()=>{this.init=true;}, 10);\n    }\n  }\n\n  onOptionClick(event, option:FormItemOptionItem){\n    /*\n    console.log(event, option);\n    if (!this.required){\n        if (this.multiple && this.value.indexOf(option.optionValue)>=0 && Array.isArray(this.value)){\n          this.value=this.value.filter(str=>str!==option.optionValue);\n          this.selectionChange.emit(this.value);\n        }\n        else if (this.value===option.optionValue) {\n          this.value='';\n          this.selectionChange.emit(this.value);\n        }\n    }\n    */\n  }\n\n}\n","<mat-selection-list #selectedOptions *ngIf=\"init\"\n    (selectionChange)=\"onSelectionChange($event)\"\n    [disabled]=\"!editable\"\n\n    [multiple]=\"multiple\"\n>\n    <!--\n        [selected]=\"isOptionSelected(option)\"\n    -->\n    <mat-list-option *ngFor=\"let option of options\"\n        [value]=\"option.optionValue\"\n        [selected]=\"isOptionSelected(option)\"\n        (click)=\"onOptionClick($event, option)\"\n    >\n        <span>{{option.label}}</span>\n        <!--\n        <mat-pseudo-checkbox *ngIf=\"!multiple && isOptionSelected(option)\" class=\"mat-pseudo-checkbox mat-pseudo-checkbox-checked\"></mat-pseudo-checkbox>\n        -->\n    </mat-list-option>\n</mat-selection-list>\n","import { Component, OnInit, EventEmitter, Input, Output, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport { FormItemOptionItem } from '../../form-item';\nimport { SurveyErrorStateMatcher } from '../../error-state.matcher';\n\n\n@Component({\n  selector: 'app-select',\n  templateUrl: './select.component.html',\n  styleUrls: ['./select.component.scss']\n})\nexport class SelectComponent implements OnInit, OnChanges {\n\n  @Input() label: string;\n  @Input() editable: boolean=true;\n  @Input() required: boolean;\n  @Input() multiple: boolean;\n  @Input() options: FormItemOptionItem[]=[];\n  @Output() selectionChange = new EventEmitter<string | string[]>();\n\n  @Input() value: string | string[];\n\n  public init:boolean=true;\n\n  matcher = new SurveyErrorStateMatcher();\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  isOptionSelected(option:FormItemOptionItem){\n    return this.multiple ? (this.value || []).indexOf(option.optionValue) >=0 : this.value===option.optionValue;\n  }\n\n  onSelectionChange(event: MatSelectChange){\n      //console.log(event);\n    this.value=event.value;\n    this.selectionChange.emit(this.value);\n  }\n\n  ngOnChanges(changes:SimpleChanges){\n    if (changes.multiple && changes.multiple.previousValue!==changes.multiple.currentValue){\n      this.init=false;\n      //console.log(changes);\n      setTimeout(()=>{this.init=true;}, 10);\n    }\n  }\n\n}\n","<mat-form-field appearance=\"fill\" *ngIf=\"init\">\n    <mat-select\n      [value]=\"value\"\n      [disabled]=\"!editable\"\n      (selectionChange)=\"onSelectionChange($event)\"\n      [errorStateMatcher]=\"matcher\"\n      [required]=\"required\"\n      [multiple]=\"multiple\"\n    >\n      <mat-option *ngFor=\"let option of options\" [value]=\"option.optionValue\">\n        {{option.label}}\n      </mat-option>\n    </mat-select>\n</mat-form-field>","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { FormItem, FormItemOptionItem, FormItemWidget } from '../form-item';\n\nexport class FormItemRadio extends FormItem {\n    items: FormItemOptionItem[];\n    multiple: boolean;\n    value: string | string[];\n    hasOptions: boolean=true;\n    otherTextValue: string;\n}\n\n@Component({\n  selector: 'ammo-form-item-radio',\n  templateUrl: './form-item-radio.component.html',\n  styleUrls: ['./form-item-radio.component.scss']\n})\nexport class FormItemRadioComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemRadio;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemRadio>();\n\n    explanationValue: string='';\n    explanationLabel: string | undefined;\n    selectedOption: string;\n\n    constructor() { }\n\n    ngOnInit() {\n        //console.log(this.item);\n        if (this.item && !this.item.multiple && Array.isArray(this.item.value)){\n            this.item.value=this.item.value[0];\n        }\n        //console.log(this.item.value);\n        let selectedOptionObj=this.item.items.find(op=>op.optionValue===this.item.value);\n        this.selectedOption=selectedOptionObj ? selectedOptionObj.optionValue : '';\n        if (!this.selectedOption && this.item.value && !this.item.multiple){\n            const valArr=(this.item.value.toString()).split(', ');\n\n            selectedOptionObj=this.item.items.find(op=>op.optionValue===valArr[0]);\n            //console.log(valArr, selectedOptionObj);\n            if (selectedOptionObj){\n                this.selectedOption=selectedOptionObj.optionValue;\n                this.explanationValue=valArr.slice(1, valArr.length).join(', ');\n            }\n        }\n        //console.log(this.item.value);\n    }\n\n\n    onSelectionChange(value:string | string[]){\n        //console.log(value);\n        this.item.value=value;\n        if (!Array.isArray(value)){\n            this.selectedOption=value;\n            this.onExplanationValueChanges(this.explanationValue, this.item.value);\n        }\n        this.changes.emit(this.item);\n    }\n\n\n    onExplanationValueChanges(val:string, selectedOptionVal:string | string[]){\n        //console.log(val);\n        //console.log(val, selectedOptionVal);\n        const option=this.item.items.find(op=>op.optionValue===selectedOptionVal);\n        if (!option || !this.isExplanationRequired(option.optionValue)){\n            return false;\n        }\n\n        this.item.value=option.optionValue+', '+val;\n        this.changes.emit(this.item);\n    }\n\n    isExplanationRequired(selectedOptionVal:string | string[]){\n        //console.log(selectedOptionVal);\n        const option=this.item.items.find(op=>op.optionValue===selectedOptionVal);\n        if (!option){\n            return false;\n        }\n        this.explanationLabel=option.explanationLabel\n        return option && option.showExplanation;\n    }\n}\n","<label *ngIf=\"item.label\" [ngClass]=\"{'has-error':item.errors && item.errors.length}\">{{item.label}} <span class=\"required\" *ngIf=\"item.required\">*</span></label>\n<ng-container *ngIf=\"item.items && item.items.length\">\n    <app-selection-list  *ngIf=\"!item.style || item.style==='list'\"\n        [label]=\"item.label\"\n        [editable]=\"editable\"\n        [required]=\"item.required\"\n        [value]=\"item.multiple ? item.value : selectedOption\"\n        [options]=\"item.items\"\n        [multiple]=\"item.multiple\"\n        (selectionChange)=\"onSelectionChange($event)\"\n    ></app-selection-list>\n    <app-radio-group  *ngIf=\"item.style==='buttons'\"\n        [label]=\"item.label\"\n        [editable]=\"editable\"\n        [required]=\"item.required\"\n        [label]=\"item.label\"\n        [value]=\"item.multiple ? item.value : selectedOption\"\n        [options]=\"item.items\"\n        [multiple]=\"item.multiple\"\n        (selectionChange)=\"onSelectionChange($event)\"\n    ></app-radio-group>\n    <app-select  *ngIf=\"item.style==='select'\"\n        [label]=\"item.label\"\n        [editable]=\"editable\"\n        [required]=\"item.required\"\n        [value]=\"item.multiple ? item.value : selectedOption\"\n        [options]=\"item.items\"\n        [multiple]=\"item.multiple\"\n        (selectionChange)=\"onSelectionChange($event)\"\n    ></app-select>\n    <mat-form-field *ngIf=\"isExplanationRequired(selectedOption)\" class=\"other-option-field\">\n        <mat-label>{{explanationLabel}}</mat-label>\n        <input #inputField\n            matInput\n            [(ngModel)]=\"explanationValue\"\n            (ngModelChange)=\"onExplanationValueChanges($event, selectedOption)\"\n        >\n    </mat-form-field>\n</ng-container>\n\n<mat-error *ngIf=\"item.errors && item.errors.length\">\n    <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n</mat-error>\n<mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { FormItem, FormItemWidget } from '../form-item';\n\nexport class FormItemNumericRating extends FormItem {\n    value: number;\n}\n\n@Component({\n  selector: 'ammo-form-item-numeric-rating',\n  templateUrl: './form-item-numeric-rating.component.html',\n  styleUrls: ['./form-item-numeric-rating.component.scss']\n})\nexport class FormItemNumericRatingComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemNumericRating;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemNumericRating>();\n\n    constructor() { }\n\n    ngOnInit() {\n\n    }\n\n    onSelectionChange(value){\n        this.item.value=value;\n        this.changes.emit(this.item);\n    }\n\n}\n","<div class=\"form-group\">\n    <div class=\"col-xs-12 rating-set\">\n        <div class=\"rating-set-title\">{{item.label}}</div>\n        <div class=\"rating-set-buttons\">\n            <button mat-button class=\"btn btn-sm\" type=\"button\"\n                (click)=\"editable ? onSelectionChange(i) : false\"\n                [ngClass]=\"item.value===i ? 'btn-primary' : 'btn-outline-primary'\"\n                *ngFor=\"let i of [0,1,2,3,4,5,6,7,8,9,10]\">{{i}}</button>\n        </div>\n        <mat-error *ngIf=\"item.errors && item.errors.length\">\n          <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n        </mat-error>\n        <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n    </div>\n</div>\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { SurveyErrorStateMatcher } from '../error-state.matcher';\nimport { FormItem, FormItemOptionItem, FormItemWidget } from '../form-item';\n\nexport class FormItemSelect extends FormItem {\n    items: FormItemOptionItem[];\n    value: string;\n    hasOptions: boolean=true;\n}\n\n@Component({\n  selector: 'ammo-form-item-select',\n  templateUrl: './form-item-select.component.html',\n  styleUrls: ['./form-item-select.component.scss']\n})\nexport class FormItemSelectComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemSelect;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemSelect>();\n    matcher = new SurveyErrorStateMatcher();\n\n    constructor() { }\n\n    ngOnInit() {\n\n    }\n\n    onSelectionChange(value){\n        console.log(value);\n        this.item.value=value;\n        this.changes.emit(this.item);\n    }\n\n    isOptionSelected(option){\n        const item=this.item;\n        return item.value===option.optionValue;\n    }\n}\n","<mat-form-field appearance=\"fill\">\n  <mat-label>{{item.label}}</mat-label>\n  <mat-select\n    [value]=\"item.value\"\n    [disabled]=\"!editable\"\n    (valueChange)=\"onSelectionChange($event)\"\n    [errorStateMatcher]=\"matcher\"\n    [required]=\"item.required\"\n  >\n    <mat-option *ngFor=\"let option of item.items\" [value]=\"option.optionValue\">\n      {{option.label}}\n    </mat-option>\n  </mat-select>\n</mat-form-field>\n\n<mat-error *ngIf=\"item.errors && item.errors.length\">\n  <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n</mat-error>\n<mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport {\n  MatTableDataSource\n} from '@angular/material/table';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ItemOptionStateMatcher } from '../error-state.matcher';\nimport { FormItem, FormItemOptionItem, FormItemWidget, FormItemValidation, FormItemValidationRules } from '../form-item';\n\nexport class FormItemOptionsEditor extends FormItem {\n    value: FormItemOptionItem[];\n    hasOptions: boolean=true;\n    useCustomOptionValues:  boolean=false;\n    allowCustomOptionValues:  boolean=true;\n    allowCustomAnswers:  boolean=true;\n    multiple:  boolean=false;\n    defaultValue: string | string[];\n    fieldValidations: FormItemValidation={\n        rules: <FormItemValidationRules[]> [\n            {\n                \"optionKeyValues\": true\n            }\n        ]\n    };\n}\n\n@Component({\n  selector: 'ammo-form-item-options-editor',\n  templateUrl: './form-item-options-editor.component.html',\n  styleUrls: ['./form-item-options-editor.component.scss']\n})\nexport class FormItemOptionsEditorComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemOptionsEditor;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemOptionsEditor>();\n    matcher = new ItemOptionStateMatcher();\n    dataSource = new MatTableDataSource<FormItemOptionItem>([]);\n    public columns: string[];\n\n    public useCustomValues:boolean=false;\n    public allowCustomValues:boolean=true;\n    public allowCustomAnswers:boolean=true;\n\n    constructor() { }\n\n    ngOnInit() {\n        if (!this.item.value){\n            this.item.value=[];\n        }\n        this.dataSource.data=this.item.value;\n        this.useCustomValues=this.item.useCustomOptionValues;\n        this.allowCustomValues=this.item.allowCustomOptionValues;\n        this.allowCustomAnswers=this.item.allowCustomAnswers;\n        this.setColumns();\n        this.item.value.forEach(option=>{\n            option.selected=this.isOptionSelected(option);\n        });\n        console.log(this.item);\n\n    }\n\n    setColumns(){\n        this.columns=this.useCustomValues ? ['selectedByDefault', 'optionValue', 'label', 'actions'] : ['selectedByDefault', 'label', 'actions'];\n    }\n\n    onUseCustomValuesChange(ev){\n        this.useCustomValues=ev.checked;\n        this.item.useCustomOptionValues=this.useCustomValues;\n        this.setColumns();\n    }\n\n    onValueChange(value){\n        this.item.value=value;\n        //console.log(this.item);\n        if (this.useCustomValues){\n            (this.item.value || []).forEach(field=>{\n                field.optionValue=field.label;\n            })\n        }\n        this.changes.emit(this.item);\n    }\n\n    isOptionSelected(option){\n        //console.log(option);\n        const item=this.item;\n        return item.multiple ? (item.defaultValue || []).indexOf(option.optionValue) >=0 : item.defaultValue===option.optionValue;\n    }\n    setDefaultValue(option, checked) {\n        const item=this.item;\n        if (item.multiple){\n            let value=[...item.defaultValue];\n            const selectedIndex=value.indexOf(option.optionValue);\n            if (selectedIndex>=0){\n                checked ? value.push(option.optionValue) : value=value.filter((str, index)=>index!==selectedIndex);\n            }\n            else if (checked) {\n                value.push(option.optionValue);\n            }\n            item.defaultValue=value;\n        }\n        else {\n            item.defaultValue=checked ? option.optionValue : '';\n        }\n        (this.item.value || []).forEach(option=>{\n            option.selected=this.isOptionSelected(option);\n        });\n        this.changes.emit(this.item);\n    }\n\n    onOptionLabelChange(value, option) {\n        if (!this.useCustomValues){\n            option.optionValue=value;\n        }\n    }\n\n    addOption(){\n        const obj=<FormItemOptionItem>{};\n\n        this.item.value.push(obj);\n        this.dataSource.data=this.item.value;\n    }\n\n    removeOption(option){\n        this.item.value=this.item.value.filter((op, index)=>index!==this.item.value.indexOf(option));\n        this.dataSource.data=this.item.value;\n    }\n\n    onListDropped(event: CdkDragDrop<FormItemOptionItem[]>) {\n        const previousIndex = this.dataSource.data.findIndex(row => row === event.item.data);\n        moveItemInArray(this.dataSource.data,previousIndex, event.currentIndex);\n        this.dataSource.data = this.dataSource.data.slice();\n        //console.log('dropped', JSON.stringify(this.dataSource.data), JSON.stringify(this.item.value));\n    }\n\n    toggleExplanationField (option) {\n        option.showExplanation=!option.showExplanation;\n    }\n}\n","<div>\n    <mat-label>{{item.label}}</mat-label>\n\n    <mat-slide-toggle *ngIf=\"allowCustomValues\"\n      class=\"example-margin\"\n      [color]=\"'primary'\"\n      [checked]=\"useCustomValues\"\n      [disabled]=\"!editable\"\n      (change)=\"onUseCustomValuesChange($event)\"\n    >\n    Use custom option values\n    </mat-slide-toggle>\n\n    <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\"\n        cdkDropList\n        [cdkDropListData]=\"dataSource\"\n        (cdkDropListDropped)=\"onListDropped($event)\"\n        [cdkDropListDisabled]=\"!editable\"\n    >\n\n        <ng-container matColumnDef=\"selectedByDefault\">\n            <th mat-header-cell *matHeaderCellDef> Selected </th>\n            <td mat-cell *matCellDef=\"let element\">\n                <mat-checkbox\n                    [checked]=\"element.selected\"\n                    [color]=\"'primary'\"\n                    (change)=\"setDefaultValue(element, $event.checked)\"\n                ></mat-checkbox>\n            </td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"optionValue\">\n            <th mat-header-cell *matHeaderCellDef> Value </th>\n            <td mat-cell *matCellDef=\"let element\">\n                <mat-form-field class=\"example-full-width\">\n                    <input #inputField\n                        matInput\n                        [(ngModel)]=\"element.optionValue\"\n                        [errorStateMatcher]=\"matcher\"\n                        [disabled]=\"!editable\"\n                    >\n                </mat-form-field>\n            </td>\n        </ng-container>\n\n        <ng-container matColumnDef=\"label\">\n            <th mat-header-cell *matHeaderCellDef> Label </th>\n            <td mat-cell *matCellDef=\"let element\" class=\"row-actions\">\n                <mat-form-field class=\"example-full-width\">\n                    <input #inputField\n                        matInput\n                        [(ngModel)]=\"element.label\"\n                        (ngModelChange)=\"onOptionLabelChange($event, element)\"\n                        [errorStateMatcher]=\"matcher\"\n                        [disabled]=\"!editable\"\n                    >\n                </mat-form-field>\n\n                <mat-form-field class=\"explanation-field\" *ngIf=\"element.showExplanation\">\n                    <mat-label>Explanation field label</mat-label>\n                    <input #inputField\n                        matInput\n                        [(ngModel)]=\"element.explanationLabel\"\n                        [disabled]=\"!editable\"\n                    >\n                </mat-form-field>\n            </td>\n        </ng-container>\n        <ng-container matColumnDef=\"actions\">\n            <th mat-header-cell *matHeaderCellDef></th>\n            <td mat-cell *matCellDef=\"let element\">\n                <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Show text field with custom value\" *ngIf=\"allowCustomAnswers && !item.multiple\" (click)=\"toggleExplanationField(element)\" type=\"button\"\n                    matTooltip=\"Show explanation text field\"\n                    [disabled]=\"!editable\"\n                >\n                  <mat-icon [color]=\"element.showExplanation ? 'primary' : 'disabled'\">comment</mat-icon>\n                </button>\n\n                <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Remove Option\" (click)=\"removeOption(element)\" type=\"button\"\n                    matTooltip=\"Remove Option\"\n                    [disabled]=\"!editable\"\n                >\n                  <mat-icon>delete</mat-icon>\n                </button>\n            </td>\n        </ng-container>\n\n        <tr mat-header-row *matHeaderRowDef=\"columns\"></tr>\n        <tr mat-row *matRowDef=\"let row; columns: columns;\"\n            cdkDrag\n            [cdkDragData]=row\n        ></tr>\n        <tr class=\"mat-row\" *matNoDataRow>\n            <td class=\"mat-cell\" colspan=\"3\">No options</td>\n        </tr>\n    </table>\n    <mat-error *ngIf=\"item.errors && item.errors.length\">\n        <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n    </mat-error>\n    <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n    <button mat-raised-button color=\"primary\" aria-label=\"Add Option\" (click)=\"addOption()\" type=\"button\" matTooltip=\"Add Option\" [disabled]=\"!editable\">\n        Add Option\n    </button>\n</div>\n\n\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { SurveyErrorStateMatcher } from '../error-state.matcher';\nimport { FormItem, FormItemWidget } from '../form-item';\n\nexport class FormItemCheckbox extends FormItem {\n    value: boolean;\n}\n\n@Component({\n  selector: 'ammo-form-item-checkbox',\n  templateUrl: './form-item-checkbox.component.html',\n  styleUrls: ['./form-item-checkbox.component.scss']\n})\nexport class FormItemCheckboxComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemCheckbox;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemCheckbox>();\n    matcher = new SurveyErrorStateMatcher();\n\n    constructor() { }\n\n    ngOnInit() {\n\n    }\n\n    onChange(event:MatCheckboxChange){\n        console.log(event);\n        this.item.value=event.checked;\n        this.changes.emit(this.item);\n    }\n\n}\n","<section class=\"example-section\">\n    <mat-checkbox class=\"example-margin\"\n        [(ngModel)]=\"item.value\"\n        (change)=\"onChange($event)\"\n        [required]=\"item.required\"\n        [disabled]=\"!editable\"\n    >{{item.label}}</mat-checkbox>\n</section>\n<mat-error *ngIf=\"item.errors && item.errors.length\">\n    <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n</mat-error>\n<mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/*\n * Convert bytes into largest possible unit.\n * Takes an precision argument that defaults to 2.\n * Usage:\n *   bytes | fileSize:precision\n * Example:\n *   {{ 1024 |  fileSize}}\n *   formats to: 1 KB\n*/\n@Pipe({name: 'fileSize'})\nexport class FileSizePipe implements PipeTransform {\n\n  private units = [\n    'bytes',\n    'KB',\n    'MB',\n    'GB',\n    'TB',\n    'PB'\n  ];\n\n  transform(bytes: number = 0, precision: number = 2, separator: string = '&nbsp;' ): string {\n    if (!isFinite(bytes)) { return '?'; };\n\n    let unit = 0;\n\n    while ( bytes >= 1024 ) {\n      bytes /= 1024;\n      unit ++;\n    }\n    return bytes.toFixed( + precision ) + separator + this.units[ unit ];\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n  name: 'truncate'\n})\n\nexport class TruncatePipe implements PipeTransform{\n  transform(name: string): string {\n    const ext: string =\n      name.substring(name.lastIndexOf('.') + 1, name.length).toLowerCase();\n    let newName: string = name.replace('.' + ext, '');\n    if (name.length <= 8) {\n      // if file name length is less than 8 do not format\n      // return same name\n      return name;\n    }\n    newName = newName.substring(0, 8) + (name.length > 8 ? '...' : '');\n    return newName + '.' + ext;\n  }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SurveyFile } from '../../form-item';\n\n@Component({\n  selector: 'ammo-file-list-item-image',\n  templateUrl: './file-list-item-image.component.html',\n  styleUrls: ['./file-list-item-image.component.scss']\n})\nexport class FileListItemImageComponent implements OnInit {\n\n    @Input() file: SurveyFile;\n    @Input() allowDelete: boolean;\n    @Output() onDelete = new EventEmitter<SurveyFile>();\n    @Input() type: string;\n\n    constructor() { }\n\n    ngOnInit(): void {\n    }\n\n}\n","<div class=\"image-upload-item\" [ngClass]=\"{uploading: file.uploading}\">\n    <img [src]=\"file.src || file.url\" width=\"100%\" *ngIf=\"type==='image' && (file.src || file.url)\">\n    <mat-icon class=\"file-icon\" *ngIf=\"type!=='image'\">insert_drive_file</mat-icon>\n    <mat-progress-bar mode=\"determinate\"  *ngIf=\"file.uploading\" [value]=\"file.progressValue\"></mat-progress-bar>\n    <div class=\"file-upload-img-info\" *ngIf=\"file.size || file.name\">\n        <div *ngIf=\"file.size\">\n        Size: <span class=\"file-upload-img-info-value\" [innerHTML]=\"file.size| fileSize\"></span>\n        </div>\n        <div *ngIf=\"file.name\" >\n            <a [href]=\"file.url\" class=\"file-name\" target=\"_blank\" [title]=\"file.name\" *ngIf=\"!file.uploading\">{{file.name | truncate}}</a>\n            <span class=\"file-name\" *ngIf=\"file.uploading\">{{file.name | truncate}}</span>\n        </div>\n    </div>\n    <a class=\"delete-btn\" *ngIf=\"allowDelete\" (click)=\"onDelete.emit(file)\" title=\"Delete Image\"><mat-icon>cancel</mat-icon></a>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SurveyFile } from '../../form-item';\n\n@Component({\n  selector: 'ammo-file-list-item-video',\n  templateUrl: './file-list-item-video.component.html',\n  styleUrls: ['./file-list-item-video.component.scss']\n})\nexport class FileListItemVideoComponent implements OnInit {\n\n    @Input() file: SurveyFile;\n    @Input() allowDelete: boolean;\n    @Output() onDelete = new EventEmitter<SurveyFile>();\n\n    constructor() { }\n\n    ngOnInit(): void {\n    }\n}\n","<div class=\"video-upload-item\" [ngClass]=\"{uploading: file.uploading}\">\n    <video class=\"media-player img\" controls preload=\"metadata\" *ngIf=\"file.url\">\n        <source [type]=\"file.mime\" [src]=\"file.url\"/>\n    </video>\n    <mat-progress-bar mode=\"determinate\"  *ngIf=\"file.uploading\" [value]=\"file.progressValue\"></mat-progress-bar>\n    <div class=\"file-upload-img-info\" *ngIf=\"file.size\">\n        Size: <div class=\"file-upload-img-info-value\" [innerHTML]=\"file.size| fileSize\"></div>\n    </div>\n    <a class=\"delete-btn\" *ngIf=\"allowDelete\" (click)=\"onDelete.emit(file)\" title=\"Delete Vieod\"><mat-icon>cancel</mat-icon></a>\n</div>\n","\nimport { Component, OnInit, Input, Output, EventEmitter, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SurveyErrorStateMatcher } from '../index';\nimport { FormItem, FormItemWidget, SurveyFile } from '../form-item';\nimport * as _ from 'lodash';\nimport { NgxFileDropEntry } from 'ngx-file-drop';\nimport { NgxSurveyService } from '../../ngx-survey.service';\n//import { map } from 'rxjs/operators';\n\nexport class FormItemFile extends FormItem {\n    fileType: string;\n    multiple: boolean;\n    value: SurveyFile[];\n    areaLabel: string;\n    buttonLabel: string;\n}\n\n@Component({\n  selector: 'ammo-form-item-file',\n  templateUrl: './form-item-file.component.html',\n  styleUrls: ['./form-item-file.component.scss']\n})\nexport class FormItemFileComponent implements FormItemWidget, OnInit {\n\n    @Input() item: FormItemFile;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemFile>();\n    matcher = new SurveyErrorStateMatcher();\n\n    public fileObjects: any[]=[];\n\n    public files: SurveyFile[];\n\n    public fileIsOver: boolean;\n    public isFilesUploading: boolean;\n    public allowDelete: boolean=true;\n    public uploadedFilesNumber: number=0;\n    public uploadFilesNumber: number=0;\n    public accept:string;\n    private acceptTypes: any={\n        image: '.png, .jpg, .jpeg',\n        video: '.mp4, .mov',\n        file: ''\n    }\n\n\n    constructor(\n        private service: NgxSurveyService,\n        private zone: NgZone,\n    ) { }\n\n\n    ngOnInit() {\n        if (this.item.value){\n            this.files=this.item.value.map(f=>{\n                const obj=_.extend(new SurveyFile(), f);\n                return obj;\n            });\n        }\n        this.matcher.item=this.item;\n        this.accept=this.acceptTypes[this.item.fileType];\n    }\n\n    ngOnChanges() {\n        this.matcher.item=this.item;\n    }\n\n    checkRequired(placeholder) {\n        if (placeholder === 'Required') {\n            return true;\n        }\n    }\n\n    onValueChanges(item) {\n        this.changes.emit(item);\n    }\n\n    removeFile(file:SurveyFile){\n        this.files=_.without(this.files, file);\n        //this.fileObjects=_.without(this.fileObjects, this.fileObjects.find(f=>f.id===file.id));\n        this.item.value=(this.item.value || []).filter(f=>f.url!==file.url);\n        this.changes.emit(this.item);\n    }\n\n    public fileOver(fileIsOver: boolean): void {\n        console.log('fileIsOver', fileIsOver);\n        this.fileIsOver = fileIsOver;\n    }\n\n    public onFileDrop(files: NgxFileDropEntry[]): void {\n\n        const surveyFiles:SurveyFile[]=[];\n\n        let droppedFiles=files.filter(f=>f.fileEntry.isFile && (!this.accept || this.accept.split(',').find(ext=>f.fileEntry.name.indexOf(ext.trim())>0)));\n        if (!this.item.multiple && droppedFiles.length>1){\n            droppedFiles=[droppedFiles[0]];\n        }\n        console.log('onFileDrop', files, this.files, droppedFiles);\n        droppedFiles.forEach(droppedFile=>{\n            const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;\n            fileEntry.file((file: File) => {\n                const surveyFile=new SurveyFile();\n                surveyFile.size=file.size;\n                surveyFile.name=file.name;\n                surveyFile.mime=file.type;\n                surveyFile.file=file;\n                if (file.type.indexOf('image/')===0){\n                    if (FileReader) {\n                        var fr = new FileReader();\n                        fr.onload = function () {\n                            surveyFile.src=fr.result;\n                        }\n                        fr.readAsDataURL(file);\n                    }\n                }\n                surveyFiles.push(surveyFile);\n                if (surveyFiles.length===droppedFiles.length){\n                    this.uploadFiles(surveyFiles);\n                }\n                // Here you can access the real file\n                console.log(droppedFile.relativePath, file);\n            });\n        })\n        this.fileIsOver=false;\n\n    }\n\n    uploadFiles(files: SurveyFile[]) {\n        console.log(files);\n        if(!files.length){\n            return;\n        }\n        this.item.busy=true;\n        files.forEach(file=>{\n            file.uploading=true;\n            file.progressSubject = new Observable(observer => {\n                file.progressObserver = observer\n            });\n            file.progressSubject.subscribe(\n              data => {\n                this.zone.run(()=>{\n                    file.progressValue=data;\n                    //console.log(file);\n                    if (file.url){\n                        this.item.value=this.files.filter(f=>f.url).map(f=>{\n                            const obj=new SurveyFile;\n                            obj.url=f.url;\n                            obj.name=f.name;\n                            obj.mime=f.mime;\n                            obj.size=f.size;\n                            return obj;\n                        });\n                        console.log(this.item);\n                        this.item.busy=!!files.find(f=>f.uploading);\n                        this.changes.emit(this.item);\n                    }\n                })\n              },\n              err=> {\n                this.item.busy=!!files.find(f=>f.uploading);\n              }\n            );\n        })\n        this.service.onFilesSelected.next(files);\n        this.files=_.union(this.files, files);\n\n        this.isFilesUploading = true;\n\n        this.uploadFilesNumber=files.length;\n        this.uploadedFilesNumber=1;\n    }\n}\n","<div class=\"form-group\">\n    <div class=\"col-xs-12 files-set\" [ngClass]=\"{'files-upload-editable':editable}\">\n        <div *ngIf=\"item.label\" class=\"files-set-title label\" [ngClass]=\"{'has-error':item.errors && item.errors.length}\">{{item.label}} <span *ngIf=\"item.required\" class=\"required-asterix\">*</span></div>\n        <div [ngClass]=\"'files-list-'+item.fileType\">\n            <div class=\"file-item\" *ngFor=\"let file of files\">\n                <ammo-file-list-item-image *ngIf=\"item.fileType!=='video'\"\n                    [type]=\"item.fileType\"\n                    [file]=\"file\"\n                    [allowDelete]=\"editable\"\n                    (onDelete)=\"removeFile($event)\"\n                >\n                </ammo-file-list-item-image>\n                <ammo-file-list-item-video *ngIf=\"item.fileType==='video'\"\n                    [file]=\"file\"\n                    [allowDelete]=\"editable\"\n                    (onDelete)=\"removeFile($event)\"\n                >\n                </ammo-file-list-item-video>\n            </div>\n        </div>\n        <div *ngIf=\"!editable && !files?.length\" class=\"no-files-message\">\n            No {{item.fileType==='video' ? 'Videos' : 'Photos'}} Submitted\n        </div>\n        <ngx-file-drop *ngIf=\"(item.multiple || (!item.multiple && (!files || files.length<1)))\"\n            dropZoneLabel=\"Drop files here\"\n            (onFileDrop)=\"onFileDrop($event)\"\n            (onFileOver)=\"fileOver(true)\"\n            (onFileLeave)=\"fileOver(false)\"\n            [multiple]=\"item.multiple\"\n            [accept]=\"accept\"\n            [directory]=\"false\"\n            [disabled]=\"!editable\"\n            [ngClass]=\"{'file-is-over':fileIsOver}\"\n        >\n                <ng-template ngx-file-drop-content-tmp let-openFileSelector=\"openFileSelector\">\n                    <span *ngIf=\"!fileIsOver && editable\">\n                        <ng-container *ngIf=\"item.areaLabel\"{{item.areaLabel}}></ng-container>\n                        <ng-container *ngIf=\"!item.areaLabel\"> Drag & Drop Files here <br />or </ng-container>\n                    </span>\n                    <span *ngIf=\"fileIsOver\">Drop files here</span>\n                    <br/>\n                    <button  *ngIf=\"!fileIsOver\" mat-raised-button [disabled]=\"!editable\" color=\"primary\" type=\"button\" (click)=\"openFileSelector()\">{{item.buttonLabel || 'Browse Files'}}</button>\n                </ng-template>\n        </ngx-file-drop>\n        <mat-error *ngIf=\"item.errors && item.errors.length\">\n          <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n        </mat-error>\n        <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n    </div>\n</div>\n\n\n","import {Pipe, PipeTransform} from '@angular/core';\n//import moment from 'moment';\n\n@Pipe({\n    name: 'duration',\n    pure: true,\n})\nexport class DurationPipe implements PipeTransform {\n\n\n  transform(value: any, ...args: string[]): string {\n    if (typeof args === 'undefined' || !args.length) {\n      throw new Error('DurationPipe: missing required time unit argument');\n    }\n    const arr=new Date(value * 1000).toISOString().substr(11, 8).split(':');\n    const duration = {\n        days: 0,\n        hours: parseInt(arr[0]),\n        minutes: parseInt(arr[1]),\n        seconds: parseInt(arr[2]),\n    }\n    const formats={\n      short: {\n        d: 'd',\n        h: 'h',\n        m: 'm',\n        s: 's',\n      },\n      long: {\n        d: ' days',\n        h: ' hrs',\n        m: ' mins',\n        s: ' secs',\n      }\n    }\n    const f=args[1] || 'short';\n    return args[0]==='seconds'\n      ? (duration.days ? duration.days + formats[f].d+' ' : '') + (duration.hours ? duration.hours + formats[f].h+' ' : '') + (duration.minutes ? duration.minutes + formats[f].m+' ' : '') + duration.seconds + formats[f].s\n      : arr.join(':')\n\n  }\n}\n","import { Component, OnInit, Input, Output, EventEmitter, NgZone, AfterViewInit, ViewChild } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SurveyErrorStateMatcher } from '../index';\nimport { FormItem, FormItemWidget, SurveyFile } from '../form-item';\nimport * as _ from 'lodash';\nimport { NgxSurveyService } from '../../ngx-survey.service';\n//import { map } from 'rxjs/operators';\nimport * as WaveSurfer from 'wavesurfer.js';\nimport RecordRTC, { StereoAudioRecorder } from 'recordrtc';\n\nexport class FormItemVoice extends FormItem {\n    value?: SurveyFile;\n    areaLabel: string;\n    buttonLabel: string;\n}\n\n@Component({\n    selector: 'app-form-item-voice',\n    templateUrl: './form-item-voice.component.html',\n    styleUrls: ['./form-item-voice.component.scss']\n  })\nexport class FormItemVoiceComponent implements FormItemWidget, OnInit, AfterViewInit {\n\n    @ViewChild('audio', { static: true }) audio: any;\n    @ViewChild('waveform', { static: true }) waveformElement: any;\n\n    @Input() item: FormItemVoice;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemVoice>();\n    matcher = new SurveyErrorStateMatcher();\n\n    public fileObject: any;\n\n    public file: undefined | SurveyFile;\n\n    public isFilesUploading: boolean;\n    public allowDelete: boolean=true;\n    public uploadedFilesNumber: number=0;\n    public uploadFilesNumber: number=0;\n\n    public stream:any;\n    public recordRTC:any;\n    public recordedBlob: any;\n    public recordingInprogress: boolean;\n    public blobSize:number;\n    public hasRecord:boolean;\n    public duration:number;\n    public timeLimit:number=120;\n    public wavesurfer:any;\n    public wavesurferPlay:boolean;\n    public isEdge: boolean = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator['msSaveOrOpenBlob'] || !!navigator['msSaveBlob']);\n    public isSafari: boolean = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n    public durationInterval;\n    public controlIcon:string = 'record-circle';\n\n\n    constructor(\n        private service: NgxSurveyService,\n        private zone: NgZone,\n    ) { }\n\n\n    ngOnInit() {\n        if (this.item.value){\n            this.file=_.extend(new SurveyFile(), this.item.value);\n            if (this.file?.url){\n                this.hasRecord=true;\n            }\n        }\n        this.matcher.item=this.item;\n        this.service;\n        this.zone;\n        Observable;\n    }\n\n    ngAfterViewInit() {\n        // set the initial state of the video\n        let audio:HTMLAudioElement = this.audio.nativeElement;\n        audio.muted = false;\n        audio.controls = true;\n        audio.autoplay = false;\n\n        if (this.file?.url){\n            this.hasRecord=true;\n            this.wavesurfer = WaveSurfer.create({\n                container: this.waveformElement.nativeElement,\n                height: 190,\n                waveColor: '#d4d9dd',\n                progressColor: '#555',\n                normalize: true,\n                barHeight: 8,\n                cursorWidth: 1,\n                cursorColor: '#d9d9d9'\n            });\n            this.wavesurfer.load(this.file.url);\n\n            this.wavesurfer.on('ready', ()=>{\n            console.log(this.wavesurfer);\n                this.zone.run(()=>{\n                    if (this.file){\n                        this.file.duration=this.wavesurfer.getDuration();\n                        this.duration=this.file.duration*1000;\n                        this.wavesurferPlay=false;\n                    }\n                })\n\n            });\n            this.wavesurfer.on('play', ()=>{\n                this.zone.run(()=>{\n                    this.wavesurferPlay=true;\n                })\n            });\n            this.wavesurfer.on('pause', ()=>{\n                this.zone.run(()=>{\n                    this.wavesurferPlay=false;\n                })\n\n            });\n        }\n    }\n\n    ngOnChanges() {\n        this.matcher.item=this.item;\n    }\n\n    checkRequired(placeholder) {\n        if (placeholder === 'Required') {\n            return true;\n        }\n    }\n\n    onValueChanges(item) {\n        this.changes.emit(item);\n    }\n\n    clear(){\n        this.file=undefined;\n        this.fileObject=undefined;\n    }\n/*\n    uploadFiles(files: SurveyFile[]) {\n        console.log(files);\n        if(!files.length){\n            return;\n        }\n        files.forEach(file=>{\n            file.uploading=true;\n            file.progressSubject = new Observable(observer => {\n                file.progressObserver = observer\n            });\n            file.progressSubject.subscribe(\n              data => {\n                this.zone.run(()=>{\n                    file.progressValue=data;\n                    //console.log(file);\n                    if (file.url){\n                        this.item.value=this.files.filter(f=>f.url).map(f=>{\n                            const obj=new SurveyFile;\n                            obj.url=f.url;\n                            obj.name=f.name;\n                            obj.mime=f.mime;\n                            return obj;\n                        });\n                        console.log(this.item);\n                        this.changes.emit(this.item);\n                    }\n                })\n              }\n            );\n        })\n        this.service.onFilesSelected.next(files);\n        this.files=_.union(this.files, files);\n\n        this.isFilesUploading = true;\n\n        this.uploadFilesNumber=files.length;\n        this.uploadedFilesNumber=1;\n    }\n    */\n\n    onCloseClick(): void {\n        //this.dialogRef.close();\n    }\n\n    startRecording() {\n        let mediaConstraints = {\n            audio: this.isEdge ? true : {\n                echoCancellation: false\n            }\n        };\n        this.blobSize=0;\n        //window['AudioContext'] = window['AudioContext'] || window['webkitAudioContext'];\n        navigator.mediaDevices\n          .getUserMedia(mediaConstraints)\n          .then(this.successCallback.bind(this), this.errorCallback.bind(this));\n    }\n\n    errorCallback(stream: MediaStream) {\n        //console.log(stream);\n    }\n\n    successCallback(stream: MediaStream) {\n        const microphone=stream;\n\n        if(this.isSafari) {\n            this.audio.muted = true;\n            this.audio.srcObject = microphone;\n        }\n\n        //console.log(stream);\n        //let audio: HTMLAudioElement = this.audio.nativeElement;\n        let options = {\n            mimeType: 'audio/webm',\n            numberOfAudioChannels: this.isEdge ? 1 : 2,\n            checkForInactiveTracks: true,\n            bufferSize: 16384,\n            elementClass: 'multi-streams-mixer'\n        };\n        this.stream = stream;\n\n        if(this.isSafari || this.isEdge) {\n            options['recorderType'] = StereoAudioRecorder;\n        }\n\n        if(navigator.platform && navigator.platform.toString().toLowerCase().indexOf('win') === -1) {\n            options['sampleRate'] = 48000; // or 44100 or remove this line for default\n        }\n        if(this.isSafari) {\n            options['sampleRate'] = 44100;\n            options['bufferSize'] = 4096;\n            options['numberOfAudioChannels'] = 2;\n            options['mimeType']='audio/wav';\n        }\n        if(this.recordRTC) {\n            this.recordRTC.destroy();\n            this.recordRTC = null;\n        }\n\n        this.recordRTC = new RecordRTC(stream, options);\n        this.recordRTC.startRecording();\n        this.audio.srcObject = stream;\n        //audio.src = this.recordRTC.toURL();\n        this.duration=0;\n        this.durationInterval=setInterval(()=>{\n            //console.log(this.recordRTC.getState(), this.recordRTC);\n            if (this.recordRTC && this.recordRTC.getState()==='recording'){\n                this.duration++;\n                //this.cd.detectChanges();\n            }\n            else {\n                //clearInterval(durationInterval);\n            }\n        }, 1000);\n        //console.log(this.recordRTC);\n\n        this.toggleControls();\n        this.recordingInprogress=true;\n    }\n\n    toggleControls() {\n        let audio: HTMLAudioElement = this.audio.nativeElement;\n        audio.muted = !audio.muted;\n        audio.controls = !audio.controls;\n        audio.autoplay = !audio.autoplay;\n    }\n\n    stopRecording() {\n        let recordRTC = this.recordRTC;\n        recordRTC.stopRecording(this.processAudio.bind(this));\n        let stream = this.stream;\n        stream.getTracks().forEach(track => track.stop());\n        this.recordingInprogress=false;\n        if (this.durationInterval){\n            clearInterval(this.durationInterval);\n        }\n    }\n\n    processAudio(audioVideoWebMURL) {\n        let audio: HTMLAudioElement = this.audio.nativeElement;\n        let recordRTC = this.recordRTC;\n        let fileReader = new FileReader();\n        fileReader;\n\n        audio.src = audioVideoWebMURL;\n        this.toggleControls();\n        this.recordedBlob = recordRTC.getBlob();\n        if (!this.recordedBlob){\n            this.hasRecord=false;\n            return;\n        }\n        let ext='mp3';\n        if (this.recordedBlob.type){\n            ext=this.recordedBlob.type.split('/')[1];\n            ext=ext.split(';')[0];\n        }\n        this.recordedBlob.name='audio.'+ext;\n\n        if (!this.file){\n            this.file=new SurveyFile();\n            this.file.name='audio.'+ext;\n        }\n        //this.file.workflow='audio';\n        this.file.mime=this.recordedBlob.type;\n        fileReader.onload = (event) => {\n            if (this.file && event?.target){\n                this.file.src=event.target['result'];\n                this.uploadFile(this.file);\n            }\n        };\n        fileReader.readAsArrayBuffer(this.recordedBlob);\n        this.file.size=this.recordedBlob.size;\n        this.zone.run(()=>{\n            this.hasRecord=true;\n        })\n        //console.log(this.recordedBlob);\n        recordRTC.getDataURL(dataURL=>{\n            //console.log(audioVideoWebMURL, dataURL, audio.src);\n            this.wavesurfer = WaveSurfer.create({\n                  container: this.waveformElement.nativeElement,\n                  height: 190,\n                  waveColor: '#d4d9dd',\n                  progressColor: '#555',\n                  normalize: true,\n                  barHeight: 8,\n                  cursorWidth: 1,\n                  cursorColor: '#d9d9d9'\n            });\n            this.wavesurfer.loadBlob(this.recordedBlob);\n\n            this.wavesurfer.on('ready', ()=>{\n                //console.log(this.wavesurfer.getDuration());\n                if (this.file){\n                    this.file.duration=this.wavesurfer.getDuration();\n                    this.duration=this.file.duration*1000;\n                    this.wavesurferPlay=false;\n                }\n            });\n            this.wavesurfer.on('play', ()=>{\n                this.zone.run(()=>{\n                    this.wavesurferPlay=true;\n                })\n            });\n            this.wavesurfer.on('pause', ()=>{\n                this.zone.run(()=>{\n                    this.wavesurferPlay=false;\n                })\n\n            });\n        });\n\n        return this.file;\n    }\n\n    uploadFile(file:SurveyFile){\n        file.uploading=true;\n        file.progressSubject = new Observable(observer => {\n            file.progressObserver = observer\n        });\n        this.item.busy=true;\n        file.progressSubject.subscribe(\n            data => {\n                this.zone.run(()=>{\n                    file.progressValue=data;\n                    //console.log(file);\n                    if (file.url){\n                        const obj=new SurveyFile;\n                        obj.url=file.url;\n                        obj.name=file.name;\n                        obj.mime=file.mime;\n                        this.item.value=obj;\n                        console.log(this.item);\n                        this.item.busy=false;\n                        this.changes.emit(this.item);\n                    }\n                })\n            },\n            err=>{\n                this.item.busy=false;\n            }\n        );\n        this.service.onFilesSelected.next([file]);\n        this.file=file;\n    }\n\n    play(){\n        if (this.wavesurfer){\n            this.wavesurfer.play();\n        }\n    }\n    pause(){\n        if (this.wavesurfer){\n            this.wavesurfer.pause();\n        }\n    }\n\n    togglePlay(){\n        if (this.wavesurfer){\n            if (this.wavesurferPlay) {\n                this.pause();\n                this.controlIcon = 'play-circle-thin';\n            } else {\n                this.play();\n                this.controlIcon = 'pause-circle-thin';\n            }\n        }\n    }\n\n    toggleRecording(){\n        //console.log('CLICKED');\n        if (this.recordingInprogress){\n            this.stopRecording();\n            this.controlIcon = 'play-circle-thin';\n        } else {\n            this.startRecording();\n            this.controlIcon = 'record-round';\n        }\n    }\n\n    clearBlob(){\n        this.file=undefined;\n        this.recordedBlob=null;\n        this.hasRecord=false;\n        if (this.wavesurfer){\n            this.wavesurfer.destroy()\n        }\n        if (this.recordRTC){\n            //this.recordRTC.destroy()\n        }\n        this.controlIcon = 'record-circle';\n        this.item.value=undefined;\n        this.changes.emit(this.item);\n    }\n\n    download() {\n        this.recordRTC.save('audio.webm');\n    }\n\n    onSave(){\n        //this.stopRecording();\n    }\n\n    ngOnDestroy() {\n        if (this.wavesurfer){\n            this.wavesurfer.destroy()\n        }\n        if (this.recordRTC && this.recordRTC.state==='recording'){\n            this.recordRTC.stopRecording();\n            this.recordRTC.clearRecordedData();\n            //this.stopRecording();\n        }\n        if (this.recordRTC){\n            this.recordRTC.destroy()\n        }\n        if (this.stream){\n            this.stream.getTracks().forEach(track => track.stop());\n        }\n        if (this.durationInterval){\n            this.duration=0;\n            clearInterval(this.durationInterval);\n        }\n    }\n}\n","<div class=\"form-group\">\n    <div class=\"col-xs-12 voice-recorder\">\n        <div *ngIf=\"item.label\" class=\"voice-recorder-title label\" [ngClass]=\"{'has-error':item.errors && item.errors.length}\">{{item.label}} <span *ngIf=\"item.required\" class=\"required-asterix\">*</span></div>\n        <div class=\"audio-recorder\">\n            <audio #audio class=\"audio\" style=\"display:none;\" [src]=\"file?.url\"></audio>\n            <div class=\"main-screen\">\n                <div #waveform class=\"waveform\" [ngClass]=\"{hidden:recordingInprogress || !hasRecord}\"></div>\n                <ng-container *ngIf=\"!recordingInprogress && hasRecord; else startScreen\">\n                    <button mat-button class=\"main-screen-button\" (click)=\"togglePlay()\" type=\"button\">\n                        <mat-icon class=\"main-screen-icon-big\">{{this.wavesurferPlay ? 'pause_circle_outline' : 'play_circle_outline'}}</mat-icon>\n                    </button>\n\n                    <a mat-button class=\"main-screen-button-aside download-btn\" *ngIf=\"item.value && item.value.url\" [href]=\"item.value.url\" target=\"_blank\" title=\"Dowload Record\">\n                        <mat-icon class=\"main-screen-icon-small\">download</mat-icon>\n                    </a>\n                    <button mat-button class=\"main-screen-button-aside delete-btn\" title=\"Delete Record\" (click)=\"clearBlob()\" *ngIf=\"editable\" type=\"button\">\n                        <mat-icon class=\"main-screen-icon-small\">cancel</mat-icon>\n                    </button>\n                    <mat-progress-bar mode=\"determinate\"  *ngIf=\"file && file.uploading\" [value]=\"file.progressValue\"></mat-progress-bar>\n                </ng-container>\n\n            </div>\n\n            <ng-template #startScreen>\n                <div class=\"start-screen\">\n                    <button mat-button class=\"start-screen-button\" (click)=\"toggleRecording()\" [disabled]=\"!editable\" type=\"button\">\n                        <mat-icon class=\"start-screen-icon\" >{{recordingInprogress ? 'mic':'mic_none'}}</mat-icon>\n                        <div *ngIf=\"!recordingInprogress && !hasRecord\" class=\"start-screen-text\">Tap to record audio</div>\n                        <div *ngIf=\"recordingInprogress\" class=\"start-screen-text\">\n                            {{duration | duration:'seconds'}}\n                            / {{timeLimit - duration | duration:'seconds'}}\n                        </div>\n                    </button>\n                </div>\n            </ng-template>\n        </div>\n        <mat-error *ngIf=\"item.errors && item.errors.length\">\n            <div *ngFor=\"let error of item.errors\">{{error.message}}</div>\n        </mat-error>\n        <mat-hint align=\"start\" *ngIf=\"!(item.errors && item.errors.length)\"><strong>{{item.hint}}</strong> </mat-hint>\n    </div>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter, OnChanges } from '@angular/core';\nimport { FormItem, FormItemWidget } from '../index';\n\nexport class FormItemLabel extends FormItem {\n    htmlContent: string;\n}\n\n@Component({\n    selector: 'app-form-item-label',\n    templateUrl: './form-item-label.component.html',\n    styleUrl: './form-item-label.component.scss'\n})\nexport class FormItemLabelComponent implements FormItemWidget, OnInit, OnChanges {\n\n    @Input() item: FormItemLabel;\n    @Input() editable: boolean=true;\n    @Output() changes = new EventEmitter<FormItemLabel>();\n\n    constructor() { }\n\n    ngOnInit() {\n        //console.log(this.item);\n    }\n\n    ngOnChanges() {\n    }\n\n    checkRequired(placeholder) {\n\n    }\n\n    onValueChanges(item) {\n        this.changes.emit(item);\n    }\n}\n","<div [innerHTML]=\"item.htmlContent\"></div>\n","import { Component, OnInit, OnDestroy, Input, ViewChild, ComponentFactoryResolver, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { FormItemDirective } from './form-item.directive';\n\nimport { FormItem, FormItemWidget, FormItemValidation, FormItemOptionItem } from './form-item';\nimport { FormItemString, FormItemStringComponent } from './form-item-string/form-item-string.component';\nimport { FormItemRating, FormItemRatingComponent } from './form-item-rating/form-item-rating.component';\nimport { FormItemText, FormItemTextComponent } from './form-item-text/form-item-text.component';\nimport { FormItemDate, FormItemDateComponent } from './form-item-date/form-item-date.component';\nimport { FormItemSegments, FormItemSegmentsComponent } from './form-item-segments/form-item-segments.component';\nimport { FormItemRadio, FormItemRadioComponent } from './form-item-radio/form-item-radio.component';\nimport { FormItemNumericRating, FormItemNumericRatingComponent } from './form-item-numeric-rating/form-item-numeric-rating.component';\nimport { FormItemSelect, FormItemSelectComponent } from './form-item-select/form-item-select.component';\nimport { FormItemOptionsEditor, FormItemOptionsEditorComponent } from './form-item-options-editor/form-item-options-editor.component';\nimport { FormItemCheckbox, FormItemCheckboxComponent } from './form-item-checkbox/form-item-checkbox.component';\nimport { Subscription } from 'rxjs';\nimport { FormItemFile, FormItemFileComponent } from './form-item-file/form-item-file.component';\nimport { FormItemVoice, FormItemVoiceComponent } from './form-item-voice/form-item-voice.component';\nimport { FormItemLabel, FormItemLabelComponent } from './form-item-label/form-item-label.component';\n\nexport const FormItemTypes={\n    label : {\n        component: FormItemLabelComponent,\n        model: FormItemLabel,\n        label: 'Label'\n    },\n    'string' : {\n        component: FormItemStringComponent,\n        model: FormItemString,\n        label: 'Short text'\n    },\n    text : {\n        component: FormItemTextComponent,\n        model: FormItemText,\n        label: 'Long text'\n    },\n    rating : {\n        component: FormItemRatingComponent,\n        model: FormItemRating,\n        label: 'Star rating'\n    },\n    numericRating : {\n        component: FormItemNumericRatingComponent,\n        model: FormItemNumericRating,\n        label: 'Numeric rating'\n    },\n    segments : {\n        component: FormItemSegmentsComponent,\n        model: FormItemSegments,\n        label: 'Segments'\n    },\n    radio : {\n        component: FormItemRadioComponent,\n        model: FormItemRadio,\n        label: 'Multi Choice'\n    },\n    select : { //Depricated\n        component: FormItemSelectComponent,\n        model: FormItemSelect,\n        //label: 'Select'\n    },\n    optionsEditor : {\n        component: FormItemOptionsEditorComponent,\n        model: FormItemOptionsEditor\n    },\n    checkbox : {\n        component: FormItemCheckboxComponent,\n        model: FormItemCheckbox,\n        label: 'Checkbox'\n    },\n    date : {\n        component: FormItemDateComponent,\n        model: FormItemDate,\n        label: 'Date'\n    },\n    file : {\n        component: FormItemFileComponent,\n        model: FormItemFile,\n        label: 'File Upload'\n    },\n    voice : {\n        component: FormItemVoiceComponent,\n        model: FormItemVoice,\n        label: 'Voice Record'\n    },\n};\n\nexport function buildOption(optionValue: string, label: string): FormItemOptionItem {\n    return <FormItemOptionItem> { optionValue, label };\n}\n\nexport function buildField(type:string, data:any, required?:boolean): FormItem {\n    const obj=Object.assign(new (FormItemTypes[type].model), data);\n    obj.type=type;\n\n    if (required) {\n        (<FormItemValidation>obj.fieldValidations)={\n            rules: [\n                {\n                    minLength: 1\n                }\n            ]\n        }\n    }\n\n    return obj;\n}\n\n\n@Component({\n  selector: 'ngx-survey-form-item',\n  templateUrl: './form-item.component.html',\n  styleUrls: ['./form-item.component.scss']\n})\nexport class FormItemComponent implements OnInit, OnDestroy, OnChanges {\n\n    @Input() type: string;\n    @Input() item: FormItem | FormItemString | FormItemRating | FormItemText | FormItemDate | FormItemSegments | FormItemRadio | FormItemNumericRating\n        | FormItemSelect | FormItemOptionsEditor | FormItemCheckbox | FormItemFile | FormItemLabel;\n    @Input() editable: boolean=true;\n    @Input() isMobile: boolean=false;\n    @Input() id: string;\n    @Output() changes = new EventEmitter<any>();\n\n    @ViewChild(FormItemDirective, { static: true }) public itemHost: FormItemDirective;\n\n    private subscription: Subscription;\n\n    constructor(\n        private componentFactoryResolver: ComponentFactoryResolver,\n    ) {\n\n    }\n\n    ngOnInit() {\n        this.loadComponent();\n    }\n\n    ngOnChanges(changes:SimpleChanges) {\n\n        if (changes && (changes.type || changes.id)){\n            this.loadComponent();\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.subscription){\n            this.subscription.unsubscribe();\n        }\n\n\n    }\n\n    loadComponent() {\n        if (!FormItemTypes[this.type]){\n            return;\n        }\n\n        let componentFactory = this.componentFactoryResolver.resolveComponentFactory(FormItemTypes[this.type].component);\n\n        let viewContainerRef = this.itemHost.viewContainerRef;\n        viewContainerRef.clear();\n\n        let componentRef = viewContainerRef.createComponent(componentFactory);\n        (<FormItemWidget>componentRef.instance).item=this.item;\n        (<FormItemWidget>componentRef.instance).editable=this.editable;\n        (<FormItemWidget>componentRef.instance).isMobile=this.isMobile;\n\n        this.subscription=(<FormItemWidget>componentRef.instance).changes.subscribe(item=>this.changes.emit(item));\n    }\n\n}\n","<ng-template form-item-host></ng-template>\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ElementRef } from '@angular/core';\n//import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\n//import { ResizedEvent } from 'angular-resize-event';\n//import { Subscription } from 'rxjs';\nimport { NgxSurveyService } from './ngx-survey.service';\nimport { MatStepper } from '@angular/material/stepper';\n\n\n@Component({\n  selector: 'ngx-survey',\n  templateUrl: './ngx-survey.component.html',\n  styleUrls: ['./ngx-survey.component.scss']\n})\nexport class NgxSurveyComponent implements OnInit, AfterViewInit, OnDestroy {\n\n    @Input() form:any[];\n    @Input() value:any={};\n    @Input() splitBySteps:boolean;\n    @Input() validateByStepChange:boolean=true;\n    @Input() submitInProgress:boolean;\n    @Input() submitErrorText:string;\n    @Input() editable:boolean=true;\n\n    @Output() valueChange = new EventEmitter<any>();\n    @Output() stepChanged = new EventEmitter<any>();\n    @Output() submit = new EventEmitter<any>();\n    //@Output() resized = new EventEmitter<ResizedEvent>();\n\n    @ViewChild('stepper', { static: false }) public stepper:MatStepper;\n\n    public selectedIndex: number = 0;\n    public isMobile: boolean;\n\n    get submitDisabled(): boolean {\n        return !!this.form.find(section=>section.items.find(item=>item.busy));\n    }\n\n    //private _bpSub: Subscription;\n\n    constructor(\n        //private bpObserver: BreakpointObserver,\n        private elRef:ElementRef,\n        public service: NgxSurveyService,\n    ) {\n\n    }\n\n    ngOnInit() {\n        //console.log(this.value);\n        this.form=this.service.initForm(this.form, this.value);\n        if (this.splitBySteps){\n            this.form.forEach(section=>{\n                section.isEditable=true;\n            });\n        }\n        /*\n        this._bpSub = this.bpObserver\n          .observe(['(max-width: 599px)'])\n          .subscribe((state: BreakpointState) => {\n            this.setMobileStepper(state.matches);\n          });\n          */\n    }\n\n    ngAfterViewInit() {\n        //console.log(this.stepper);\n    }\n\n    onResized(event){\n        //TODO\n    }\n\n    /*\n    onResized(event: ResizedEvent) {\n\n        if (event.newRect.width<600 && !this.isMobile){\n            this.setMobileStepper(true);\n        }\n        else if (event.newRect.width>=600 && this.isMobile){\n            this.setMobileStepper(false);\n        }\n        this.resized.emit(event);\n        //this.width = event.newWidth;\n        //this.height = event.newHeight;\n    }*/\n\n    scrollToField(field) {\n        let el = this.elRef.nativeElement.querySelector('#form_item_' + field.name);\n        if (el){\n            el.scrollIntoView();\n        }\n    };\n\n    isStepEnabled(section){\n        const prevSection=this.form[this.form.indexOf(section)-1];\n        return !this.validateByStepChange || !prevSection || (prevSection && prevSection.submited && !prevSection.hasError);\n    }\n\n    onItemChanges(item) {\n        if (!this.editable){\n            return;\n        }\n        item.errors=this.service.getErrors(item);\n        const {value}=this.service.getValue(this.form, false);\n        this.valueChange.emit(value);\n    }\n\n    selectionChanged(event: any): void {\n    this.selectedIndex = event.selectedIndex;\n  }\n\n  setMobileStepper(isMobile: boolean): void {\n\n    this.isMobile = isMobile;\n    setTimeout(() => {\n        if (this.stepper){\n            this.stepper.selectedIndex = this.selectedIndex;\n        }\n    });\n  }\n\n    onStepChange(step) {\n        //console.log(step);\n        this.stepChanged.emit(step);\n        if (this.validateByStepChange && step.previouslySelectedIndex>=0 && this.form[step.previouslySelectedIndex]){\n            this.submitStep(this.form[step.previouslySelectedIndex], false);\n        }\n\n\n//        this.stepper.selectedIndex=0;\n    }\n\n    submitForm(){\n\n        const {valid, value, firstError}=this.service.getValue(this.form, true);\n        if (valid){\n            this.submit.emit(value);\n        }\n        else {\n            this.scrollToField(firstError);\n        }\n\n    }\n\n    submitStep(section, goToNext){\n        if (!this.editable){\n            return;\n        }\n        //console.log(section);\n        const {valid, firstError}=this.service.getValue([section], true);\n        //console.log({valid, value, firstError});\n        if (valid){\n            section.hasError=false;\n            section.submited=true;\n            //console.log(this.stepper);\n            if (goToNext){\n                setTimeout(()=>{\n                    this.stepper.next();\n                }, 100)\n            }\n\n        }\n        else {\n            //console.log(firstError);\n            this.scrollToField(firstError);\n            section.hasError=true;\n            if (firstError && firstError.errors && firstError.errors[0]){\n                section.firstErrorText=firstError.label+': '+firstError.errors[0].message;\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        //this._bpSub.unsubscribe();\n    }\n\n}\n","<div (resized)=\"onResized($event)\">\n    <form name=\"surveyForm\" *ngIf=\"!splitBySteps\">\n        <fieldset class=\"form-fieldset\" *ngFor=\"let section of form\">\n            <ng-container *ngIf=\"service.isSectionVisible(form, section)\">\n                <legend class=\"form-legend\" *ngIf=\"section.title || section.subtitle\">\n                    <span [ngClass]=\"'section-style-'+section.sectionStyle\" [innerHtml]=\"section.title\"></span>\n                    <span *ngIf=\"section.subtitle\"><br /><small [innerHtml]=\"section.subtitle\"></small></span>\n                </legend>\n\n                <div class=\"form-fieldset-content\">\n                    <div *ngFor=\"let item of section.items\" [attr.id]=\"'form_item_'+item.name\">\n                        <ngx-survey-form-item\n                            *ngIf=\"service.isItemVisible(form, section, item)\"\n                            [type]=\"item.type\"\n                            [item]=\"item\"\n                            [editable]=\"editable\"\n                            [isMobile]=\"isMobile\"\n                            (changes)=\"onItemChanges($event)\"\n                        ></ngx-survey-form-item>\n                    </div>\n                </div>\n            </ng-container>\n        </fieldset>\n    </form>\n\n    <div *ngIf=\"splitBySteps\">\n        <mat-horizontal-stepper #stepper *ngIf=\"!isMobile\"\n            (selectionChange)=\"onStepChange($event)\"\n        >\n    <!--\n        <ng-template matStepperIcon=\"done\" let-index=\"index\">\n            {{index+1}}\n        </ng-template>\n\n    -->\n\n        <mat-step  *ngFor=\"let section of form; index as i;\"\n            [editable]=\"isStepEnabled(section)\"\n            [completed]=\"section.submited\"\n\n            [hasError]=\"section.hasError\"\n            [errorMessage]=\"section.firstErrorText\"\n        >\n\n            <form>\n                <ng-template matStepLabel>{{section.title}}</ng-template>\n                <h3 *ngIf=\"section.subtitle\">{{section.subtitle}}</h3>\n                <div *ngFor=\"let item of section.items\" [attr.id]=\"'form_item_'+item.name\">\n                    <ngx-survey-form-item\n                        *ngIf=\"service.isItemVisible(form, section, item)\"\n                        [type]=\"item.type\"\n                        [item]=\"item\"\n                        [editable]=\"editable\"\n                        [isMobile]=\"isMobile\"\n                        (changes)=\"onItemChanges($event)\"\n                    ></ngx-survey-form-item>\n                </div>\n            </form>\n            <div *ngIf=\"i<form.length-1\">\n                <button mat-button type=\"button\" class=\"btn btn-primary btn-block\" (click)=\"submitStep(section, true)\">Continue</button>\n            </div>\n            <div *ngIf=\"i>=form.length-1\">\n                <div class=\"text-center text-danger global-error\" *ngIf=\"submitErrorText\">{{submitErrorText}}<br /></div>\n                <button mat-button type=\"button\" class=\"btn btn-success btn-block\" (click)=\"submitForm()\" [disabled]=\"submitInProgress || submitDisabled\"><i class=\"fa fa-spinner fa-spin\" *ngIf=\"submitInProgress\"></i> Submit</button>\n            </div>\n        </mat-step>\n        </mat-horizontal-stepper>\n\n        <mat-vertical-stepper #stepper *ngIf=\"isMobile\"\n            (selectionChange)=\"onStepChange($event)\"\n        >\n    <!--\n        <ng-template matStepperIcon=\"done\" let-index=\"index\">\n            {{index+1}}\n        </ng-template>\n\n    -->\n\n        <mat-step  *ngFor=\"let section of form; index as i;\"\n            [editable]=\"isStepEnabled(section)\"\n            [completed]=\"section.submited\"\n\n            [hasError]=\"section.hasError\"\n            [errorMessage]=\"section.firstErrorText\"\n        >\n\n            <form>\n                <ng-template matStepLabel>{{section.title}}</ng-template>\n                <h3 *ngIf=\"section.subtitle\">{{section.subtitle}}</h3>\n                <div *ngFor=\"let item of section.items\" [attr.id]=\"'form_item_'+item.name\">\n                    <ngx-survey-form-item\n                        *ngIf=\"service.isItemVisible(form, section, item)\"\n                        [type]=\"item.type\"\n                        [item]=\"item\"\n                        [editable]=\"editable\"\n                        (changes)=\"onItemChanges($event)\"\n                        [isMobile]=\"isMobile\"\n                    ></ngx-survey-form-item>\n                </div>\n            </form>\n            <div *ngIf=\"i<form.length-1\">\n                <button mat-button type=\"button\" class=\"btn btn-primary btn-block\" (click)=\"submitStep(section, true)\">Continue</button>\n            </div>\n            <div *ngIf=\"i>=form.length-1\">\n                <div class=\"text-center text-danger global-error\" *ngIf=\"submitErrorText\">{{submitErrorText}}<br /></div>\n                <button mat-button type=\"button\" class=\"btn btn-success btn-block\" (click)=\"submitForm()\" [disabled]=\"submitInProgress || submitDisabled\"><i class=\"fa fa-spinner fa-spin\" *ngIf=\"submitInProgress\"></i> Submit</button>\n            </div>\n        </mat-step>\n        </mat-vertical-stepper>\n    </div>\n</div>\n","import { Component, Inject, ViewChild } from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { NgxSurveyComponent } from '../../ngx-survey.component'\nimport { FormItem, FormSection } from '../../form-item/form-item';\nimport { buildField } from '../../form-item/form-item.component';\nimport * as _ from 'lodash';\n\nexport interface DialogSectionData {\n    section: FormSection,\n    params: any\n}\n\n@Component({\n  selector: 'dialog-section-edit',\n  templateUrl: './dialog-section-edit.html',\n  styleUrls: ['./dialog-section-edit.scss']\n})\nexport class DialogSectionEdit {\n\n    @ViewChild('survey', { static: false }) public survey:NgxSurveyComponent;\n\n    public section:FormSection;\n    public readOnly: boolean;\n\n    public commonFields: FormItem[] =[\n        //buildField('string', {name: \"name\", label: \"Name\"}, true),\n        buildField('string', {name: \"title\", label: \"Title\"}),\n        buildField('string', {name: \"subtitle\", label: \"Subtitle\"}),\n        /*\n        buildField('select', {name: \"sectionStyle\", label: \"Section Style\", items: [\n            {\n                optionValue: 'Bold',\n                label: 'Bold',\n                style: \"Checkmark\"\n            },\n            {\n                optionValue: 'Normal',\n                label: 'Normal',\n                style: \"Checkmark\"\n            }\n        ]}, true),\n        */\n    ];\n\n    public sectionEditForm:FormSection[]=[\n        {\n            items: [...this.commonFields]\n        }\n    ];\n\n    constructor(\n        public dialogRef: MatDialogRef<DialogSectionEdit>,\n        @Inject(MAT_DIALOG_DATA) public data: DialogSectionData\n    ) {\n        const section=data.section;\n        this.readOnly=data.params.readOnly;\n        this.section=section;\n    }\n\n    onNoClick(): void {\n        this.dialogRef.close();\n    }\n\n    onFormSubmit(data){\n        data.name=_.camelCase(data.title);\n        this.section=data;\n        this.dialogRef.close(this.section);\n    }\n\n    onOkClick(): void {\n        //console.log(this.data);\n        this.survey.submitForm();\n    }\n\n}\n","<h1 mat-dialog-title>Edit section</h1>\n<div mat-dialog-content>\n    <ngx-survey #survey\n        [form]=\"sectionEditForm\"\n        [value]=\"section\"\n        (submit)=\"onFormSubmit($event)\"\n        [editable]=\"!readOnly\"\n    ></ngx-survey>\n</div>\n<div mat-dialog-actions>\n  <button mat-button (click)=\"onNoClick()\">Cancel</button>\n  <button mat-button (click)=\"onOkClick()\" [disabled]=\"readOnly\" cdkFocusInitial >Ok</button>\n</div>\n","import { Component, Inject, ViewChild } from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { NgxSurveyComponent } from '../../ngx-survey.component'\nimport { FormItem, FormItemOptionItem } from '../../form-item/form-item';\nimport { buildField, buildOption, FormItemTypes } from '../../form-item/form-item.component';\nimport * as _ from 'lodash';\n\nexport interface DialogItemData {\n    item: FormItem,\n    params: any\n}\n\n@Component({\n  selector: 'dialog-item-edit',\n  templateUrl: './dialog-item-edit.html',\n  styleUrls: ['./dialog-item-edit.scss']\n})\nexport class DialogItemEdit {\n\n    @ViewChild('survey', { static: false }) public survey:NgxSurveyComponent;\n\n    public item:FormItem;\n\n    public commonFields: FormItem[];\n\n    public extraFields: FormItem[]=[];\n\n    public itemEditForm:any[];\n\n    public multiChoiseFieldsOnly:boolean;\n    public customFieldNamesAllowed:boolean;\n    public readOnly: boolean;\n\n    public multiChoiseFieldTypes:string[]=[\"radio\", \"select\", \"segments\"];\n\n    constructor(\n        public dialogRef: MatDialogRef<DialogItemEdit>,\n        @Inject(MAT_DIALOG_DATA) public data: DialogItemData\n    ) {\n        console.log(data, this.commonFields);\n        const item=data.item;\n        if (item.fieldValidations && item.fieldValidations.rules && item.fieldValidations.rules.find(r=>r.minLength && r.minLength > 0)){\n            item.required=true;\n        }\n        this.item=item;\n        this.multiChoiseFieldsOnly=data.params.multiChoiseFieldsOnly;\n        this.customFieldNamesAllowed=data.params.customFieldNamesAllowed;\n        this.readOnly=data.params.readOnly;\n        this.setFormFields();\n    }\n\n    setFormFields(){\n        console.log(Object.keys(FormItemTypes).filter(key=>this.multiChoiseFieldsOnly ? this.multiChoiseFieldTypes.indexOf(key)>=0 : true));\n        this.commonFields=[\n            buildField('select', {name: \"type\", label: \"Type\", items: Object.keys(FormItemTypes).filter(key=>this.multiChoiseFieldsOnly ? this.multiChoiseFieldTypes.indexOf(key)>=0 : true).map(key=>{\n                const item=<FormItemOptionItem>FormItemTypes[key];\n                return item.label ? buildOption(key, item.label) : null;\n            }).filter(t=>t), actionUpdatesSectionValue: true}, true),\n            buildField('select', {name: \"style\", label: \"Text Field Style\", items: [\n                buildOption('text', 'Standard Text Field'),\n                buildOption('number', 'Number'),\n                buildOption('email', 'E-mail'),\n                buildOption('password', 'Password'),\n                buildOption('url', 'URL'),\n            ], visibilityValuesInSection: [\"string\"], value:'text'}, true),\n            buildField('select', {name: \"fileType\", label: \"Uploader Type\", items: [\n                buildOption('image', 'Image'),\n                buildOption('video', 'Video'),\n                buildOption('file', 'Any File'),\n            ], visibilityValuesInSection: [\"file\"], value:'image'}, true),\n            buildField('select', {name: \"style\", label: \"Style\", items: [\n                buildOption('list', 'List with selection'),\n                buildOption('buttons', 'Radio Buttons'),\n                buildOption('select', 'Select'),\n            ], visibilityValuesInSection: [\"radio\"], value:'list'}, true),\n            buildField('checkbox', {name: \"multiple\", label: \"Allow multiple files upload\", visibilityValuesInSection: [\"file\"]}),\n            /*\n            buildField('string', {name: \"areaLabel\", label: \"Area Label\", visibilityValuesInSection: [\"file\"], defaultValue:'Drag and drop files here or use \"Browse Files\" button'}),\n            buildField('string', {name: \"buttonLabel\", label: \"Button Label\", visibilityValuesInSection: [\"file\"], defaultValue:'Browse Files'}),\n            */\n            buildField('string', {name: \"name\", label: \"Name\", visibilityValuesInSection: !this.customFieldNamesAllowed ? ['none'] : undefined}, false),\n            buildField('text', {name: \"label\", label: \"Label\"}),\n            buildField('text', {name: \"hint\", label: \"Hint\"}),\n            buildField('text', {name: \"htmlContent\", label: \"Content\", visibilityValuesInSection: [\"label\"]}),\n            buildField('checkbox', {name: \"required\", label: \"Required\"}),\n            buildField('checkbox', {name: \"actionUpdatesSectionValue\", label: \"Action Updates Section Value\", visibilityValuesInSection: [this.multiChoiseFieldTypes]}),\n            buildField('checkbox', {name: \"multiple\", label: \"Multiple Answers\", visibilityValuesInSection: [\"radio\"]}),\n            buildField('optionsEditor', {name: \"items\", label: \"Options\", visibilityValuesInSection: [[\"radio\", \"select\"]], allowCustomAnswers: !this.multiChoiseFieldsOnly, allowCustomOptionValues: this.customFieldNamesAllowed, defaultValue: this.item.value, multiple: this.item.multiple}),\n            buildField('optionsEditor', {name: \"segments\", label: \"Segments\", visibilityValuesInSection: [\"segments\"], allowCustomAnswers: false, allowCustomOptionValues: this.customFieldNamesAllowed, defaultValue: this.item.value}),\n\n        ];\n        this.itemEditForm=[\n            {\n                items: [...this.commonFields]\n            }\n        ];\n    }\n\n    onFormChange(values:FormItem){\n        console.log(values, this.itemEditForm);\n        const optionsEditField=this.itemEditForm[0].items.find(f=>f.name==='items');\n        if (optionsEditField && optionsEditField.multiple!==values.multiple){\n            optionsEditField.multiple=values.multiple;\n            if (values.multiple){\n                optionsEditField.defaultValue=[];\n            }\n        }\n        console.log(optionsEditField);\n    }\n\n    onNoClick(): void {\n        this.dialogRef.close();\n    }\n\n    onFormSubmit(item){\n        if (!item.fieldValidations){\n            item.fieldValidations={};\n        }\n        if (!item.fieldValidations.rules){\n            item.fieldValidations.rules=[];\n        }\n        if (!item.name || !this.customFieldNamesAllowed){\n            item.name=_.camelCase(item.label);\n        }\n        console.log(item);\n        const minLengthRule=item.fieldValidations.rules.find(r=>r.minLength > 0);\n        console.log(item, minLengthRule);\n        if (item.required && !minLengthRule){\n            item.fieldValidations.rules.push({\n                minLength:1\n            });\n        }\n        else if (!item.required && minLengthRule) {\n            minLengthRule.minLength=0;\n        }\n        ['segments', 'items'].forEach(key=>{\n            if (item[key] && item[key].length){\n                let defaultValArr:string[]=[];\n                let defaultValStr='';\n                item[key].forEach(option=>{\n                    if (option.selected){\n                        defaultValArr.push(option.optionValue);\n                        defaultValStr=option.optionValue;\n                    }\n                    delete option.selected;\n                });\n                item.value=item.multiple ? defaultValArr : defaultValStr;\n            }\n        })\n        this.item=item;\n        this.dialogRef.close(this.item);\n    }\n\n    onOkClick(): void {\n        //console.log(this.data);\n        this.survey.submitForm();\n    }\n\n}\n","<h1 mat-dialog-title>Edit Field</h1>\n<div mat-dialog-content>\n    <ngx-survey #survey\n        [form]=\"itemEditForm\"\n        [value]=\"item\"\n        (valueChange)=\"onFormChange($event)\"\n        (submit)=\"onFormSubmit($event)\"\n        [editable]=\"!readOnly\"\n    ></ngx-survey>\n</div>\n<div mat-dialog-actions>\n  <button mat-button (click)=\"onNoClick()\">Cancel</button>\n  <button mat-button (click)=\"onOkClick()\" [disabled]=\"readOnly\" cdkFocusInitial>Ok</button>\n</div>\n","import { Component, Inject, ViewChild } from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { NgxSurveyComponent } from '../../ngx-survey.component'\nimport { FormItem, FormSection, buildField } from '../../form-item/index';\n\n\nexport interface FormItemVisibilityData {\n    sectionItems: FormItem[],\n    visibility: string[],\n    readOnly: boolean\n}\n\n@Component({\n  selector: 'dialog-item-visibility',\n  templateUrl: './dialog-item-visibility.html',\n  styleUrls: ['./dialog-item-visibility.scss']\n})\nexport class DialogItemVisibility {\n\n    @ViewChild('survey', { static: false }) public survey:NgxSurveyComponent;\n\n    public formFields: FormItem[] =[\n\n    ];\n\n    public extraFields: FormItem[]=[];\n\n    public itemEditForm: FormSection[]=[\n        {\n            items: []\n        }\n    ];\n\n    public value:any;\n    public readOnly: boolean;\n\n    constructor(\n        public dialogRef: MatDialogRef<DialogItemVisibility>,\n        @Inject(MAT_DIALOG_DATA) public data: FormItemVisibilityData\n    ) {\n        console.log(data);\n        const value={};\n        this.formFields=data.sectionItems.map(item=>{\n            this.data.visibility.forEach(val=>{\n                if ((item.items || item.segments)?.find(op=>val.indexOf(op.optionValue)>=0)){\n                    value[item.name]=val;\n                }\n            });\n            return buildField('radio', {name: item.name, label: item.label || item.name, items: item.items || item.segments, multiple: true}, false);\n        });\n        this.value=value;\n        this.itemEditForm=[{\n            items: this.formFields\n        }];\n        this.readOnly=data.readOnly;\n        console.log(this.itemEditForm, value);\n\n    }\n\n    onFormChange(values){\n        console.log(values);\n    }\n\n    onNoClick(): void {\n        this.dialogRef.close();\n    }\n\n    onFormSubmit(value){\n        this.dialogRef.close(value);\n    }\n\n    onOkClick(): void {\n        //console.log(this.data);\n        this.survey.submitForm();\n    }\n\n}\n","<h1 mat-dialog-title>Field Visibility</h1>\n<div mat-dialog-content>\n    <ngx-survey #survey\n        [form]=\"itemEditForm\"\n        [value]=\"value\"\n        (valueChange)=\"onFormChange($event)\"\n        (submit)=\"onFormSubmit($event)\"\n        [editable]=\"!readOnly\"\n    ></ngx-survey>\n</div>\n<div mat-dialog-actions>\n  <button mat-button (click)=\"onNoClick()\">Cancel</button>\n  <button mat-button (click)=\"onOkClick()\" [disabled]=\"readOnly\" cdkFocusInitial>Ok</button>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';\nimport { NgxSurveyService } from '../ngx-survey.service';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport * as _ from 'lodash';\nimport * as moment from 'moment';\n\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { DialogSectionEdit, DialogItemEdit, DialogItemVisibility } from '../dialogs/index';\nimport { FormItem, FormSection, buildField, FormItemComponent } from '../form-item/index';\n\n\n@Component({\n  selector: 'ngx-survey-form-builder',\n  templateUrl: './form-builder.component.html',\n  styleUrls: ['./form-builder.component.scss']\n})\nexport class FormBuilderComponent implements OnInit {\n\n    @Output() changes = new EventEmitter<any[]>();\n    @Output() onFieldAdded = new EventEmitter<FormItem>();\n\n    @Input() set form(form: FormSection[]){\n        this._form=this.service.initForm(form, this.formValues);\n        //console.log(this._form);\n    };\n\n    get form() : FormSection[] {\n        return this._form;\n    }\n\n    @Input() allowMultiChoiseFieldsOnly:boolean=false;\n    @Input() enableEditFieldValues:boolean=true;\n    @Input() showFieldNames:boolean=true;\n    @Input() readOnly:boolean=false;\n\n    @ViewChildren('formFieldItem') formItemElements: QueryList<FormItemComponent>\n\n    private _form;\n    public formValues:any={};\n\n    public sortableSectionOptions:any={\n        onUpdate: (event: any) => {\n            //event;\n            //console.log(event);\n            this.changes.emit(this.form);\n        },\n        //handle: '.sortable-handle'\n    }\n\n    onSectionDropped(event: CdkDragDrop<FormItem[]>){\n        const previousIndex = this.form.findIndex(row => event.item && row === event.item.data);\n        moveItemInArray(this.form,previousIndex, event.currentIndex);\n        this.form = this.form.slice();\n        this.changes.emit(this.form);\n    }\n\n    onItemDropped(event: CdkDragDrop<FormItem[]>, section: FormSection){\n        const previousIndex = (section.items || []).findIndex(row => event.item && row === event.item.data);\n        moveItemInArray((section.items || []),previousIndex, event.currentIndex);\n        section.items = (section.items || []).slice();\n        this.changes.emit(this.form);\n    }\n\n    public sortableItemOptions:any={\n        onUpdate: (event: any) => {\n            //event;\n            //console.log(event);\n            this.changes.emit(this.form);\n        },\n        handle: '.form-item'\n    }\n\n    constructor(\n        public service: NgxSurveyService,\n        public dialog: MatDialog,\n    ) { }\n\n\n    openSectionDialog(section: FormSection): void {\n        const dialogRef = this.dialog.open(DialogSectionEdit, {\n            minWidth: '450px',\n            data: {\n                params: {\n                    readOnly: this.readOnly,\n                },\n                section: section\n            },\n        });\n\n        dialogRef.afterClosed().subscribe(result => {\n            console.log('The dialog was closed', result);\n            if (result && !this.readOnly){\n                section=_.extend(section, result);\n                this.changes.emit(this.form);\n            }\n\n        });\n    }\n\n    openItemDialog(item: FormItem, section?: FormSection): void {\n        const dialogRef = this.dialog.open(DialogItemEdit, {\n            minWidth: '450px',\n            data: {\n                params: {\n                    multiChoiseFieldsOnly: this.allowMultiChoiseFieldsOnly,\n                    customFieldNamesAllowed: this.showFieldNames,\n                    readOnly: this.readOnly,\n                },\n                item: _.cloneDeep(item)\n            },\n        });\n\n        dialogRef.afterClosed().subscribe(result => {\n            console.log('The dialog was closed', result, section);\n            if (result && !this.readOnly){\n                item=_.extend(item, result);\n                const itemComponent=this.formItemElements.find(el=>el.item===item);\n                if (section && !this.showFieldNames){\n                    item.name=_.camelCase((section.name || '')+' '+item.name);\n                }\n                if (item.justAdded){\n                    this.onFieldAdded.emit(item);\n                }\n\n                item.justAdded=false;\n                this.changes.emit(this.form);\n                if (itemComponent){\n                    itemComponent.loadComponent();\n                }\n            }\n            else if(section && item.justAdded) {\n                this.removeField(item, section);\n            }\n        });\n    }\n\n    getSectionValueItemsForItem(item: FormItem, section: FormSection){\n        return (section.items || []).filter(sItem=>sItem.actionUpdatesSectionValue && sItem.name!==item.name);\n    }\n\n    openItemVisibilityDialog(item: FormItem, section: FormSection): void {\n\n        const sectionValueItems=this.getSectionValueItemsForItem(item, section);\n\n        const dialogRef = this.dialog.open(DialogItemVisibility, {\n            width: '450px',\n            data: {\n                sectionItems: sectionValueItems,\n                visibility: item.visibilityValuesInSection || [],\n                readOnly: this.readOnly,\n            }\n        });\n\n        dialogRef.afterClosed().subscribe(result => {\n            console.log('The dialog was closed', result);\n            if (result && !this.readOnly){\n                item.visibilityValuesInSection=[];\n                sectionValueItems.forEach(sItem=>{\n                    if (result[sItem.name]){\n                        item.visibilityValuesInSection.push(result[sItem.name]);\n                    }\n                });\n                console.log(item);\n                this.changes.emit(this.form);\n            }\n\n            /*\n            if (result){\n                item=_.extend(item, result);\n                this.changes.emit(this.form);\n            }\n            else if(section && item.justAdded) {\n                this.removeField(item, section);\n            }*/\n        });\n    }\n\n    ngOnInit() {\n    }\n\n    getDateStr(time) {\n        time = time / 1000000;\n        return moment.utc(time).format(\"MM/DD/YYYY\");\n    };\n\n    getDateValue(str) {\n        var dt = new Date(str);\n        dt.setMinutes(dt.getMinutes() - dt.getTimezoneOffset());\n\n        return dt;\n    };\n\n\n/*\n    setItemValue(item, value) {\n        item.value = item.multiple ? _.contains(item.value || [], value) ? _.without(item.value, value) : _.union(item.value || [], [value]) : value;\n    };\n\n    isSelected(item, value) {\n        return item.multiple ? _.contains(item.value || [], value) : item.value === value;\n    };\n*/\n\n    onItemChanges(item: FormItem): void {\n        item.errors=this.service.getErrors(item);\n        this.changes.emit(this.form);\n    }\n\n    removeField(item: FormItem, section: FormSection): void {\n        section.items=(section.items || []).filter((op, index)=>index!==(section.items || []).indexOf(item));\n        this.changes.emit(this.form);\n    }\n\n    cloneItem(item: FormItem, section: FormSection): void {\n        //section.items=(section.items || []).filter((op, index)=>index!==(section.items || []).indexOf(item));\n        //console.log(item);\n        if (this.readOnly){\n            return;\n        }\n        const newItem=_.cloneDeep(item);\n        let newName=newItem.name+'_clone';\n        if (section.items?.find(item=>item.name===newName)){\n            const index=section.items?.filter(item=>item.name.indexOf(newName)>=0).length;\n            newName+='_'+index;\n        }\n        newItem.name=newName;\n        newItem.actionUpdatesSectionValue=false;\n        section.items?.splice(section.items?.indexOf(item)+1, 0, newItem);\n        this.changes.emit(this.form);\n    }\n\n    clearValue(item: FormItem, section: FormSection): void {\n        item.value='';\n        this.changes.emit(this.form);\n    }\n\n    addFeild(section: FormSection): void {\n        if (!section.items){\n            section.items=[];\n        }\n        const field=this.allowMultiChoiseFieldsOnly ? buildField('radio', {name: \"\", label: \"\", items:[], style: \"list\"}, true) : buildField('string', {name: \"\", label: \"\"});\n        field.justAdded=true;\n        section.items.push(field);\n        this.openItemDialog(field, section);\n    }\n\n    removeSection(section: FormSection): void {\n        this.form=this.form.filter((op, index)=>index!==this.form.indexOf(section));\n        this.changes.emit(this.form);\n    }\n\n    addSection(): void {\n\n        this.form.push(<FormSection> {\n\n        });\n        this.changes.emit(this.form);\n    }\n\n}\n","<form name=\"surveyForm\"\n    cdkDropList\n    [cdkDropListData]=\"form\"\n    (cdkDropListDropped)=\"onSectionDropped($event)\"\n    [cdkDropListDisabled]=\"readOnly\"\n>\n    <mat-card *ngFor=\"let section of form\"\n        cdkDrag\n        [cdkDragData]=section\n    >\n        <div class=\"section-drag-placeholder\" *cdkDragPlaceholder></div>\n        <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n         <mat-card-header class=\"section-header\">\n          <mat-card-title class=\"section-title\">\n            <div class=\"section-title-text\">\n                <span [ngClass]=\"'section-style-'+section.sectionStyle\" [innerHtml]=\"section.title\"></span>\n            </div>\n\n            <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Toggle menu\"\n                matTooltip=\"Edit Section\"\n                matTooltipPosition=\"above\"\n                (click)=\"openSectionDialog(section)\"\n            >\n              <mat-icon>edit</mat-icon>\n            </button>\n             <button mat-icon-button class=\"form-item-actions-button \" aria-label=\"Toggle menu\"\n                matTooltip=\"Delete Section\"\n                matTooltipPosition=\"above\"\n                (click)=\"removeSection(section)\"\n                [disabled]=\"readOnly\"\n            >\n              <mat-icon>delete</mat-icon>\n            </button>\n            <!--\n            <button mat-icon-button class=\"more-button\" [matMenuTriggerFor]=\"menu\" aria-label=\"Toggle menu\">\n              <mat-icon>more_vert</mat-icon>\n            </button>\n            <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n              <button mat-menu-item (click)=\"openSectionDialog(section)\">Edit Section</button>\n              <button mat-menu-item (click)=\"removeSection(section)\">Remove</button>\n            </mat-menu>\n            -->\n\n          </mat-card-title>\n          <mat-card-subtitle>\n            <span *ngIf=\"section.subtitle\"><small [innerHtml]=\"section.subtitle\"></small></span>\n          </mat-card-subtitle>\n        </mat-card-header>\n        <mat-card-content>\n            <div *ngIf=\"service.isSectionVisible(form, section)\">\n                <div cdkDropList\n                    [cdkDropListData]=\"section.items\"\n                    (cdkDropListDropped)=\"onItemDropped($event, section)\"\n                    [cdkDropListDisabled]=\"readOnly\"\n                    class=\"form-items-list\"\n                >\n                    <div *ngFor=\"let item of section.items\" [attr.id]=\"'form_item_'+item.name\" class=\"form-item\"\n                        cdkDrag\n                        [cdkDragData]=item\n                    >\n                        <div class=\"item-drag-placeholder\" *cdkDragPlaceholder></div>\n                        <div class=\"form-item-actions\">\n                            <div class=\"form-item-var-name\">\n                                <small *ngIf=\"showFieldNames\">{{item.name}}</small>\n                            </div>\n                            <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Visibility\" *ngIf=\"getSectionValueItemsForItem(item, section).length\"\n                                matTooltip=\"Visibility\"\n                                matTooltipPosition=\"above\"\n                                (click)=\"openItemVisibilityDialog(item, section)\"\n                            >\n                                <mat-icon\n                                    [color]=\"item.visibilityValuesInSection && item.visibilityValuesInSection.length ? 'primary' : 'disabled'\"\n                                >visibility</mat-icon>\n                            </button>\n                            <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Toggle menu\" *ngIf=\"!readOnly\"\n                                matTooltip=\"Clone\"\n                                matTooltipPosition=\"above\"\n                                (click)=\"cloneItem(item, section)\"\n                            >\n                              <mat-icon>filter_none</mat-icon>\n                            </button>\n                            <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Toggle menu\"\n                                matTooltip=\"Edit Field\"\n                                matTooltipPosition=\"above\"\n                                (click)=\"openItemDialog(item, section)\"\n                            >\n                              <mat-icon>edit</mat-icon>\n                            </button>\n                            <!--\n                            <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Toggle menu\" *ngIf=\"item.value && !readOnly\"\n                                matTooltip=\"Clear field value\"\n                                matTooltipPosition=\"above\"\n                                (click)=\"clearValue(item, section)\"\n                            >\n                              <mat-icon>cancel_presentation</mat-icon>\n                            </button>\n                            -->\n\n                            <button mat-icon-button class=\"form-item-actions-button\" aria-label=\"Toggle menu\" [disabled]=\"readOnly\"\n                                matTooltip=\"Delete Field\"\n                                matTooltipPosition=\"above\"\n                                (click)=\"removeField(item, section)\"\n                            >\n                              <mat-icon>delete</mat-icon>\n                            </button>\n\n                        </div>\n                        <ngx-survey-form-item\n                            [type]=\"item.type\"\n                            [item]=\"item\"\n                            [editable]=\"enableEditFieldValues && !readOnly\"\n                            (changes)=\"onItemChanges($event)\"\n                            #formFieldItem\n                        ></ngx-survey-form-item>\n                    </div>\n                </div>\n            </div>\n        <div class=\"add-item-button\"\n        >\n            <button mat-stroked-button color=\"primary\" (click)=\"addFeild(section)\" [disabled]=\"readOnly\">Add Field</button>\n        </div>\n        <!--\n            <button mat-icon-button class=\"add-item-button\" aria-label=\"Toggle menu\">\n          <mat-icon>add_circle</mat-icon>\n        </button>\n        -->\n        </mat-card-content>\n    </mat-card>\n    <div class=\"add-item-button\"\n        matTooltip=\"Add Section\"\n        matTooltipPosition=\"above\"\n    >\n        <button mat-mini-fab color=\"primary\" aria-label=\"Add Section\" (click)=\"addSection()\" [disabled]=\"readOnly\">\n          <mat-icon>add</mat-icon>\n        </button>\n    </div>\n</form>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SurveyFile } from '../../form-item';\n\n@Component({\n  selector: 'ammo-file-list-item-file',\n  templateUrl: './file-list-item-file.component.html',\n  styleUrls: ['./file-list-item-file.component.scss']\n})\nexport class FileListItemFileComponent implements OnInit {\n\n    @Input() file: SurveyFile;\n    @Input() allowDelete: boolean;\n    @Output() onDelete = new EventEmitter<SurveyFile>();\n\n    constructor() { }\n\n    ngOnInit(): void {\n    }\n\n}\n","<div class=\"file\">\n    <div class=\"file-title\">\n        <div class=\"file-name\">\n            <mat-icon>insert_drive_file</mat-icon>\n            <strong *ngIf=\"file.uploading\">{{file.name}}</strong>\n            <a [href]=\"file.url\" target=\"_blank\" *ngIf=\"!file.uploading\">{{file.name}}</a>\n            <span class=\"file-size\" [innerHTML]=\"file.size | fileSize\"></span>\n        </div>\n        <a class=\"file-upload-cancel\" [href]=\"file.url\" target=\"_blank\" *ngIf=\"!file.uploading\"><mat-icon>cloud_download</mat-icon></a>\n        <a class=\"file-upload-cancel\" *ngIf=\"allowDelete\" (click)=\"onDelete.emit(file)\"><mat-icon>delete</mat-icon></a>\n    </div>\n    <mat-progress-bar mode=\"determinate\"  *ngIf=\"file.uploading\" [value]=\"file.progressValue\"></mat-progress-bar>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMomentDateModule } from \"@angular/material-moment-adapter\";\nimport { MatCardModule } from '@angular/material/card';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTableModule } from '@angular/material/table';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { NgxFileDropModule } from 'ngx-file-drop';\n\n\nimport { StarRatingComponent } from './components/star-rating/star-rating.component';\n\nimport { FormItemDirective } from './form-item/form-item.directive';\nimport { FormItemComponent } from './form-item/form-item.component';\n\nimport { FormItemStringComponent } from './form-item/form-item-string/form-item-string.component';\nimport { FormItemRatingComponent } from './form-item/form-item-rating/form-item-rating.component';\nimport { FormItemTextComponent } from './form-item/form-item-text/form-item-text.component';\nimport { FormItemDateComponent } from './form-item/form-item-date/form-item-date.component';\nimport { FormItemSegmentsComponent } from './form-item/form-item-segments/form-item-segments.component';\nimport { FormItemRadioComponent } from './form-item/form-item-radio/form-item-radio.component';\nimport { FormItemNumericRatingComponent } from './form-item/form-item-numeric-rating/form-item-numeric-rating.component';\nimport { FormItemSelectComponent } from './form-item/form-item-select/form-item-select.component';\nimport { FormItemOptionsEditorComponent } from './form-item/form-item-options-editor/form-item-options-editor.component';\nimport { FormItemCheckboxComponent } from './form-item/form-item-checkbox/form-item-checkbox.component';\n\nimport { FormBuilderComponent } from './form-builder/form-builder.component';\nimport { DialogSectionEdit } from './dialogs/dialog-section-edit/dialog-section-edit';\nimport { DialogItemEdit } from './dialogs/dialog-item-edit/dialog-item-edit';\nimport { DialogItemVisibility } from './dialogs/dialog-item-visibility/dialog-item-visibility';\nimport { NgxSurveyComponent } from './ngx-survey.component';\nimport { NgxSurveyService } from './ngx-survey.service';\nimport { NgxMaskModule } from 'ngx-mask';\n//import { AngularResizeEventModule } from 'angular-resize-event';\nimport { RadioGroupComponent } from './form-item/form-item-radio/radio-group/radio-group.component';\nimport { SelectionListComponent } from './form-item/form-item-radio/selection-list/selection-list.component';\nimport { SelectComponent } from './form-item/form-item-radio/select/select.component';\nimport { FormItemFileComponent } from './form-item/form-item-file/form-item-file.component';\nimport { FileListItemFileComponent } from './form-item/form-item-file/file-list-item-file/file-list-item-file.component';\nimport { FileListItemImageComponent } from './form-item/form-item-file/file-list-item-image/file-list-item-image.component';\nimport { FileListItemVideoComponent } from './form-item/form-item-file/file-list-item-video/file-list-item-video.component';\nimport { FileSizePipe } from './pipes/file-size.pipe';\nimport { DurationPipe } from './pipes/duration.pipe';\nimport { FormItemVoiceComponent } from './form-item/form-item-voice/form-item-voice.component';\nimport { TruncatePipe } from './pipes/truncate.pipe';\nimport { FormItemLabelComponent } from './form-item/form-item-label/form-item-label.component';\n\nconst formItemComponents=[\n    FormItemStringComponent,\n    FormItemRatingComponent,\n    FormItemTextComponent,\n    FormItemDateComponent,\n    FormItemSegmentsComponent,\n    FormItemRadioComponent,\n    FormItemNumericRatingComponent,\n    FormItemSelectComponent,\n    FormItemOptionsEditorComponent,\n    FormItemCheckboxComponent,\n    FormItemLabelComponent,\n\n    DialogSectionEdit,\n    DialogItemEdit,\n    DialogItemVisibility\n];\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        MatButtonToggleModule,\n        MatButtonModule,\n        MatInputModule,\n        MatDatepickerModule,\n        MatListModule,\n        MatTooltipModule,\n        MatIconModule,\n        MatMomentDateModule,\n        MatCardModule,\n        MatMenuModule,\n        MatDialogModule,\n        MatSelectModule,\n        MatTableModule,\n        DragDropModule,\n        MatCheckboxModule,\n        MatRadioModule,\n        MatSlideToggleModule,\n        MatStepperModule,\n        NgxMaskModule.forRoot(),\n        //AngularResizeEventModule,\n        NgxFileDropModule,\n        MatProgressBarModule\n    ],\n    declarations: [\n        FormItemDirective,\n        FormItemComponent,\n        ...formItemComponents,\n        FormBuilderComponent,\n        StarRatingComponent,\n        NgxSurveyComponent,\n        RadioGroupComponent,\n        SelectionListComponent,\n        SelectComponent,\n        FormItemFileComponent,\n        FileListItemFileComponent,\n        FileListItemImageComponent,\n        FileListItemVideoComponent,\n        FileSizePipe,\n        DurationPipe,\n        TruncatePipe,\n        FormItemVoiceComponent\n    ],\n    exports: [\n        FormBuilderComponent,\n        NgxSurveyComponent\n    ],\n    providers: [\n        NgxSurveyService,\n        {\n            provide: STEPPER_GLOBAL_OPTIONS, useValue: { showError: true }\n        }\n    ]\n})\nexport class NgxSurveyModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5","i3.StarRatingComponent","moment","i6","i5.RadioGroupComponent","i6.SelectionListComponent","i7.SelectComponent","i7","i10","i4.FileSizePipe","i5.TruncatePipe","i1.NgxSurveyService","i6.FileListItemImageComponent","i7.FileListItemVideoComponent","i7.DurationPipe","i1.FormItemDirective","i6.FormItemComponent","i1","i3.NgxSurveyComponent","i8","i10.FormItemComponent"],"mappings":"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"}