@formio-tmt/angular
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.4.
1 lines • 91.4 kB
Source Map (JSON)
{"version":3,"file":"formio-tmt-angular.mjs","sources":["../../../projects/angular-formio/src/formio.config.ts","../../../projects/angular-formio/src/formio.common.ts","../../../projects/angular-formio/src/formio.service.ts","../../../projects/angular-formio/src/formio-promise.service.ts","../../../projects/angular-formio/src/formio.utils.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.ts","../../../projects/angular-formio/src/types/alerts-position.ts","../../../projects/angular-formio/src/custom-component/custom-tags.service.ts","../../../projects/angular-formio/src/FormioBaseComponent.ts","../../../projects/angular-formio/src/components/loader/formio.loader.component.ts","../../../projects/angular-formio/src/components/loader/formio.loader.component.html","../../../projects/angular-formio/src/components/alerts/parse-html-content.pipe.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.component.ts","../../../projects/angular-formio/src/components/alerts/formio.alerts.component.html","../../../projects/angular-formio/src/components/formio/formio.component.ts","../../../projects/angular-formio/src/components/formio/formio.component.html","../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.ts","../../../projects/angular-formio/src/components/formbuilder/formbuilder.component.html","../../../projects/angular-formio/src/formio.module.ts","../../../projects/angular-formio/src/core.ts","../../../projects/angular-formio/src/custom-component/create-custom-component.ts","../../../projects/angular-formio/src/custom-component/register-custom-component.ts","../../../projects/angular-formio/src/formio-tmt-angular.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class FormioAppConfig {\r\n appUrl = '';\r\n apiUrl = '';\r\n icons?: string;\r\n formOnly?: boolean;\r\n}\r\n","import { ExtendedComponentSchema, ValidateOptions } from '@formio-tmt/js';\r\nimport { AlertsPosition } from './types/alerts-position';\r\nexport { ConditionalOptions, ValidateOptions } from '@formio-tmt/js';\r\n\r\nexport interface ComponentOptions<T = any, V extends ValidateOptions = ValidateOptions> extends ExtendedComponentSchema<T> {\r\n validate?: V;\r\n}\r\n\r\nexport interface FormioRefreshValue {\r\n property?: string;\r\n value?: object;\r\n form?: object;\r\n submission?: object;\r\n}\r\n\r\nexport interface AccessSetting {\r\n type: string;\r\n roles: string[];\r\n}\r\n\r\nexport interface FormioForm {\r\n title?: string;\r\n display?: string;\r\n name?: string;\r\n path?: string;\r\n type?: string;\r\n project?: string;\r\n template?: string;\r\n components?: ExtendedComponentSchema[];\r\n tags?: string[];\r\n access?: AccessSetting[];\r\n submissionAccess?: AccessSetting[];\r\n}\r\n\r\nexport interface ComponentInstance {\r\n component: ExtendedComponentSchema;\r\n id: string;\r\n type: string;\r\n asString?(value: any): string;\r\n getView(value: any): string;\r\n}\r\n\r\nexport interface AlertsOptions {\r\n submitMessage: string;\r\n}\r\n\r\nexport interface ErrorsOptions {\r\n message: string;\r\n}\r\n\r\nexport class FormioError {\r\n constructor(\r\n public message: string,\r\n public component: ExtendedComponentSchema,\r\n public silent?: boolean,\r\n ) {}\r\n}\r\n\r\nexport type FormioSubmissionCallback = (\r\n error: FormioError,\r\n submission: object\r\n) => void;\r\nexport type FormioBeforeSubmit = (\r\n submission: object,\r\n callback: FormioSubmissionCallback\r\n) => void;\r\n\r\nexport interface FormioHookOptions {\r\n beforeSubmit: FormioBeforeSubmit;\r\n}\r\n\r\nexport interface FormioOptions {\r\n errors?: ErrorsOptions;\r\n alerts?: AlertsOptions;\r\n alertsPosition?: AlertsPosition;\r\n disableAlerts?: boolean;\r\n i18n?: object;\r\n fileService?: object;\r\n hooks?: FormioHookOptions;\r\n sanitizeConfig?: any;\r\n}\r\n","import { Observable, Observer } from 'rxjs';\r\nimport { FormioForm } from './formio.common';\r\nimport { Formio } from '@formio-tmt/js';\r\n\r\nexport class FormioService {\r\n public formio: any;\r\n constructor(public url: string, public options?: object) {\r\n this.formio = new Formio(this.url, this.options);\r\n }\r\n requestWrapper(fn: any) {\r\n let record: any;\r\n let called = false;\r\n return Observable.create((observer: Observer<any>) => {\r\n try {\r\n if (!called) {\r\n called = true;\r\n fn()\r\n .then((_record: any) => {\r\n record = _record;\r\n observer.next(record);\r\n observer.complete();\r\n })\r\n .catch((err: any) => observer.error(err));\r\n } else if (record) {\r\n observer.next(record);\r\n observer.complete();\r\n }\r\n } catch (err) {\r\n observer.error(err);\r\n }\r\n });\r\n }\r\n saveForm(form: FormioForm, options?: any): Observable<FormioForm> {\r\n return this.requestWrapper(() => this.formio.saveForm(form, options));\r\n }\r\n loadForm(query?: any, options?: any): Observable<FormioForm> {\r\n return this.requestWrapper(() => this.formio.loadForm(query, options));\r\n }\r\n loadForms(query: any, options?: any): Observable<FormioForm> {\r\n return this.requestWrapper(() => this.formio.loadForms(query, options));\r\n }\r\n loadSubmission(query?: any, options?: any): Observable<{}> {\r\n return this.requestWrapper(() => this.formio.loadSubmission(query, options));\r\n }\r\n userPermissions(user: any, form: any, submission: any): Observable<{}> {\r\n return this.requestWrapper(() => this.formio.userPermissions(user, form, submission));\r\n }\r\n deleteSubmission(data?: any, options?: any): Observable<{}> {\r\n return this.requestWrapper(() => this.formio.deleteSubmission(data, options));\r\n }\r\n saveSubmission(submission: {}, options?: any): Observable<{}> {\r\n return this.requestWrapper(() => this.formio.saveSubmission(submission, options));\r\n }\r\n loadSubmissions(query?: any, options?: any): Observable<{}> {\r\n return this.requestWrapper(() => this.formio.loadSubmissions(query, options));\r\n }\r\n}\r\n","import { from } from 'rxjs';\r\nimport { FormioService } from './formio.service';\r\nimport { FormioForm } from './formio.common';\r\n\r\nexport class FormioPromiseService {\r\n private formioService: FormioService;\r\n\r\n constructor(public url: string, public options?: object) {\r\n this.formioService = new FormioService(url, options);\r\n }\r\n\r\n saveForm(form: FormioForm, options?: any): Promise<any> {\r\n return this.formioService.saveForm(form, options).toPromise();\r\n }\r\n loadForm(query?: any, options?: any): Promise<any> {\r\n return this.formioService.loadForm(query, options).toPromise();\r\n }\r\n loadSubmission(query?: any, options?: any): Promise<any> {\r\n return this.formioService.loadSubmission(query, options).toPromise();\r\n }\r\n userPermissions(user: any, form: any, submission: any): Promise<any> {\r\n return this.formioService.userPermissions(user, form, submission).toPromise();\r\n }\r\n deleteSubmission(data?: any, options?: any): Promise<any> {\r\n return this.formioService.deleteSubmission(data, options).toPromise();\r\n }\r\n loadForms(query: any, options?: any): Promise<any> {\r\n return this.formioService.loadForms(query, options).toPromise();\r\n }\r\n saveSubmission(submission: {}, options?: any): Promise<any> {\r\n return this.formioService.saveSubmission(submission, options).toPromise();\r\n }\r\n loadSubmissions(query?: any, options?: any): Promise<any> {\r\n return this.formioService.loadSubmissions(query, options).toPromise();\r\n }\r\n}\r\n","import { RouterModule } from '@angular/router';\r\nimport { find, trim, each, intersection } from 'lodash';\r\n\r\nexport function extendRouter(Class: any, config: any, ClassRoutes: any) {\r\n each(Class.decorators, decorator => {\r\n each(decorator.args, arg => {\r\n if (arg.declarations) {\r\n each(config, component => arg.declarations.push(component));\r\n }\r\n if (arg.imports) {\r\n each(arg.imports, (_import, index) => {\r\n if (\r\n (_import.ngModule && (_import.ngModule.name === 'RouterModule')) ||\r\n (_import.name === 'RouterModule')\r\n ) {\r\n arg.imports[index] = RouterModule.forChild(ClassRoutes(config));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n return Class;\r\n}\r\n","export interface FormioAlert {\r\n type: string;\r\n message: string;\r\n component?: any;\r\n}\r\n\r\nexport class FormioAlerts {\r\n public alerts: FormioAlert[] = [];\r\n\r\n setAlert(alert: FormioAlert) {\r\n this.alerts = [alert];\r\n }\r\n\r\n addAlert(alert: FormioAlert) {\r\n this.alerts.push(alert);\r\n }\r\n\r\n setAlerts(alerts: FormioAlert[]) {\r\n this.alerts = alerts;\r\n }\r\n}\r\n","export enum AlertsPosition {\r\n none,\r\n top,\r\n bottom,\r\n both\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class CustomTagsService {\r\n tags: string[] = [];\r\n\r\n addCustomTag(tag: string) {\r\n this.tags.push(tag);\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, NgZone, OnChanges, OnDestroy, OnInit, Optional, Output, ViewChild } from '@angular/core';\r\nimport { FormioService } from './formio.service';\r\nimport { FormioAlerts } from './components/alerts/formio.alerts';\r\nimport { FormioAppConfig } from './formio.config';\r\nimport { FormioError, FormioForm, FormioOptions, FormioRefreshValue } from './formio.common';\r\nimport { assign, get, isEmpty } from 'lodash';\r\nimport { CustomTagsService } from './custom-component/custom-tags.service';\r\nimport { Utils } from '@formio-tmt/js';\r\nimport { AlertsPosition } from './types/alerts-position';\r\nconst { Evaluator, fastCloneDeep } = Utils;\r\n\r\n@Component({\r\n template: ''\r\n})\r\nexport class FormioBaseComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() form?: FormioForm;\r\n @Input() submission?: any = {};\r\n @Input() src?: string;\r\n @Input() url?: string;\r\n @Input() service?: FormioService;\r\n @Input() options?: FormioOptions;\r\n @Input() noeval ? = Evaluator.noeval;\r\n @Input() formioOptions?: any;\r\n @Input() renderOptions?: any;\r\n @Input() readOnly ? = false;\r\n @Input() viewOnly ? = false;\r\n @Input() hideLoading ? = false;\r\n @Input() hideComponents?: string[];\r\n @Input() refresh?: EventEmitter<FormioRefreshValue>;\r\n @Input() error?: EventEmitter<any>;\r\n @Input() success?: EventEmitter<object>;\r\n @Input() submitDone?: EventEmitter<object>;\r\n @Input() language?: EventEmitter<string>;\r\n @Input() hooks?: any = {};\r\n @Input() renderer?: any;\r\n @Input() watchSubmissionErrors ? = false;\r\n @Input() dataTableActions? : any = []\r\n @Output() render = new EventEmitter<object>();\r\n @Output() customEvent = new EventEmitter<object>();\r\n @Output() fileUploadingStatus = new EventEmitter<string>();\r\n @Output() submit = new EventEmitter<object>();\r\n @Output() prevPage = new EventEmitter<object>();\r\n @Output() nextPage = new EventEmitter<object>();\r\n @Output() beforeSubmit = new EventEmitter<object>();\r\n @Output() rowAdd = new EventEmitter<any>();\r\n @Output() rowAdded = new EventEmitter<any>();\r\n @Output() rowEdit = new EventEmitter<any>();\r\n @Output() rowEdited = new EventEmitter<any>();\r\n @Output() rowDelete = new EventEmitter<any>();\r\n @Output() rowClick = new EventEmitter<any>();\r\n @Output() rowSelectChange = new EventEmitter<any>();\r\n @Output() change = new EventEmitter<object>();\r\n @Output() invalid = new EventEmitter<boolean>();\r\n @Output() errorChange = new EventEmitter<any>();\r\n @Output() formLoad = new EventEmitter<any>();\r\n @Output() submissionLoad = new EventEmitter<any>();\r\n @Output() ready = new EventEmitter<FormioBaseComponent>();\r\n @ViewChild('formio', { static: true }) formioElement?: ElementRef<any>;\r\n\r\n public AlertsPosition = AlertsPosition;\r\n public formio: any;\r\n public initialized = false;\r\n public alerts = new FormioAlerts();\r\n public formioReady: Promise<any>;\r\n\r\n private formioReadyResolve: any;\r\n private submitting = false;\r\n private submissionSuccess = false;\r\n public isLoading: boolean;\r\n public noAlerts: boolean;\r\n public label: string;\r\n\r\n constructor(\r\n public ngZone: NgZone,\r\n @Optional() public config: FormioAppConfig,\r\n @Optional() public customTags?: CustomTagsService,\r\n ) {\r\n this.isLoading = true;\r\n this.formioReady = new Promise((ready) => {\r\n this.formioReadyResolve = ready;\r\n });\r\n }\r\n\r\n getRenderer() {\r\n return this.renderer;\r\n }\r\n\r\n getRendererOptions() {\r\n const extraTags = this.customTags ? this.customTags.tags : [];\r\n return assign({}, {\r\n icons: get(this.config, 'icons', 'fontawesome'),\r\n noAlerts: get(this.options, 'noAlerts', true),\r\n readOnly: this.readOnly,\r\n viewAsHtml: this.viewOnly,\r\n ...(this.viewOnly && { renderMode: \"html\" }),\r\n i18n: get(this.options, 'i18n', null),\r\n fileService: get(this.options, 'fileService', null),\r\n hooks: this.hooks,\r\n sanitizeConfig: {\r\n addTags: extraTags\r\n },\r\n dataTableActions: this.dataTableActions\r\n }, this.renderOptions || {});\r\n }\r\n\r\n createRenderer() {\r\n const Renderer = this.getRenderer();\r\n const form = (new Renderer(\r\n this.formioElement ? this.formioElement.nativeElement : null,\r\n this.form,\r\n this.getRendererOptions()\r\n ));\r\n return form.instance;\r\n }\r\n\r\n setForm(form: FormioForm) {\r\n this.form = form;\r\n if (this.formio) {\r\n this.formio.destroy();\r\n }\r\n\r\n if (this.form.title) {\r\n this.label = this.form.title;\r\n } else if (this.form.components && this.form.components[0]) {\r\n this.label = this.form.components[0].label;\r\n }\r\n\r\n // Clear out the element to render the new form.\r\n if (this.formioElement && this.formioElement.nativeElement) {\r\n this.formioElement.nativeElement.innerHTML = '';\r\n }\r\n this.formio = this.createRenderer();\r\n this.formio.setSubmission(this.submission, {\r\n fromSubmission: false\r\n });\r\n if (this.renderOptions && this.renderOptions.validateOnInit) {\r\n this.formio.setValue(this.submission, {validateOnInit: true});\r\n }\r\n if (this.url) {\r\n this.formio.setUrl(this.url, this.formioOptions || {});\r\n }\r\n if (this.src) {\r\n this.formio.setUrl(this.src, this.formioOptions || {});\r\n }\r\n this.formio.nosubmit = true;\r\n this.formio.on('prevPage', (data: any) => this.ngZone.run(() => this.onPrevPage(data)));\r\n this.formio.on('nextPage', (data: any) => this.ngZone.run(() => this.onNextPage(data)));\r\n this.formio.on('change', (value: any, flags: any, isModified: boolean) => this.ngZone.run(() => this.onChange(value, flags, isModified)));\r\n this.formio.on('rowAdd', (component: any) => this.ngZone.run(() => this.rowAdd.emit(component)));\r\n this.formio.on('rowAdded', (data: any, component: any) => this.ngZone.run(() => this.rowAdded.emit({component, row: data})));\r\n this.formio.on('rowEdit', (data: any, rowIndex: number, index: number, component: any) => this.ngZone.run(() => this.rowEdit.emit({component, row: data, rowIndex, index})));\r\n this.formio.on('rowEdited', (data: any, rowIndex: number, component: any) => this.ngZone.run(() => this.rowEdited.emit({component, row: data, rowIndex})));\r\n this.formio.on('rowDelete', (data: any, rowIndex: number, index: number, component: any) => this.ngZone.run(() => this.rowDelete.emit({component, row: data, rowIndex, index})));\r\n this.formio.on('rowClick', (row: any, rowIndex: number, index: number,component: any) => this.ngZone.run(() => this.rowClick.emit({component, row, rowIndex, index})));\r\n this.formio.on('rowSelectChange', (selectedRows: any[], component: any) => this.ngZone.run(() => this.rowSelectChange.emit({selectedRows, component})));\r\n this.formio.on('customEvent', (event: any) =>\r\n this.ngZone.run(() => this.customEvent.emit(event))\r\n );\r\n\r\n ['fileUploadingStart', 'fileUploadingEnd'].forEach((eventName, index) => {\r\n const status = !!index ? 'end' : 'start';\r\n this.formio.on(eventName, () =>\r\n this.ngZone.run(() => this.fileUploadingStatus.emit(status))\r\n );\r\n });\r\n\r\n this.formio.on('submit', (submission: any, saved: boolean) =>\r\n this.ngZone.run(() => this.submitForm(submission, saved))\r\n );\r\n this.formio.on('error', (err: any) => this.ngZone.run(() => {\r\n this.submissionSuccess = false;\r\n return this.onError(err);\r\n }));\r\n this.formio.on('render', () => this.ngZone.run(() => this.render.emit()));\r\n this.formio.on('formLoad', (loadedForm: any) =>\r\n this.ngZone.run(() => this.formLoad.emit(loadedForm))\r\n );\r\n\r\n return this.formio.ready.then(() => {\r\n this.ngZone.run(() => {\r\n this.isLoading = false;\r\n this.ready.emit(this);\r\n this.formioReadyResolve(this.formio);\r\n if (this.formio.submissionReady) {\r\n this.formio.submissionReady.then((submission) => {\r\n this.submissionLoad.emit(submission);\r\n });\r\n }\r\n });\r\n return this.formio;\r\n });\r\n }\r\n\r\n initialize() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n const extraTags = this.customTags ? this.customTags.tags : [];\r\n const defaultOptions: FormioOptions = {\r\n errors: {\r\n message: 'Please fix the following errors before submitting.'\r\n },\r\n alerts: {\r\n submitMessage: 'Submission Complete.'\r\n },\r\n disableAlerts: false,\r\n hooks: {\r\n beforeSubmit: null\r\n },\r\n sanitizeConfig: {\r\n addTags: extraTags\r\n },\r\n alertsPosition: AlertsPosition.top,\r\n };\r\n this.options = Object.assign(defaultOptions, this.options);\r\n if (this.options.disableAlerts) {\r\n this.options.alertsPosition = AlertsPosition.none;\r\n }\r\n this.initialized = true;\r\n }\r\n\r\n ngOnInit() {\r\n Evaluator.noeval = this.noeval;\r\n this.initialize();\r\n\r\n if (this.language) {\r\n if (typeof this.language === 'string') {\r\n this.formio.language = this.language;\r\n } else {\r\n this.language.subscribe((lang: string) => {\r\n this.formio.language = lang;\r\n });\r\n }\r\n }\r\n\r\n if (this.refresh) {\r\n this.refresh.subscribe((refresh: FormioRefreshValue) =>\r\n this.onRefresh(refresh)\r\n );\r\n }\r\n\r\n if (this.error) {\r\n this.error.subscribe((err: any) => this.onError(err));\r\n }\r\n\r\n if (this.success) {\r\n this.success.subscribe((message: string) => {\r\n this.alerts.setAlert({\r\n type: 'success',\r\n message: message || get(this.options, 'alerts.submitMessage')\r\n });\r\n });\r\n }\r\n\r\n if (this.submitDone) {\r\n this.submitDone.subscribe((submission: object) => {\r\n this.formio.emit('submitDone', submission);\r\n });\r\n }\r\n\r\n if (this.src) {\r\n if (!this.service) {\r\n this.service = new FormioService(this.src);\r\n }\r\n this.isLoading = true;\r\n this.service.loadForm({ params: { live: 1 } }).subscribe(\r\n (form: FormioForm) => {\r\n if (form && form.components) {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.setForm(form);\r\n });\r\n }\r\n\r\n // if a submission is also provided.\r\n if (\r\n isEmpty(this.submission) &&\r\n this.service &&\r\n this.service.formio.submissionId\r\n ) {\r\n this.service.loadSubmission().subscribe(\r\n (submission: any) => {\r\n if (this.readOnly) {\r\n this.formio.options.readOnly = true;\r\n }\r\n this.submission = this.formio.submission = submission;\r\n },\r\n err => this.onError(err)\r\n );\r\n }\r\n },\r\n err => this.onError(err)\r\n );\r\n }\r\n if (this.url && !this.service) {\r\n this.service = new FormioService(this.url);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.formio) {\r\n this.formio.destroy();\r\n }\r\n }\r\n\r\n onRefresh(refresh: FormioRefreshValue) {\r\n this.formioReady.then(() => {\r\n if (refresh.form) {\r\n this.formio.setForm(refresh.form).then(() => {\r\n if (refresh.submission) {\r\n this.formio.setSubmission(refresh.submission);\r\n }\r\n });\r\n } else if (refresh.submission) {\r\n this.formio.setSubmission(refresh.submission);\r\n } else {\r\n switch (refresh.property) {\r\n case 'submission':\r\n this.formio.submission = refresh.value;\r\n break;\r\n case 'form':\r\n this.formio.form = refresh.value;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: any) {\r\n Evaluator.noeval = this.noeval;\r\n this.initialize();\r\n\r\n if (changes.form && changes.form.currentValue) {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.setForm(changes.form.currentValue);\r\n });\r\n }\r\n\r\n this.formioReady.then(() => {\r\n if (changes.submission && changes.submission.currentValue) {\r\n this.formio.setSubmission(changes.submission.currentValue, {\r\n fromSubmission: !changes.submission.firstChange\r\n });\r\n }\r\n\r\n if (changes.hideComponents && changes.hideComponents.currentValue) {\r\n const hiddenComponents = changes.hideComponents.currentValue;\r\n this.formio.options.hide = hiddenComponents;\r\n this.formio.everyComponent((component) => {\r\n component.options.hide = hiddenComponents;\r\n if (hiddenComponents.includes(component.component.key)) {\r\n component.visible = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n onPrevPage(data: any) {\r\n this.alerts.setAlerts([]);\r\n this.prevPage.emit(data);\r\n }\r\n\r\n onNextPage(data: any) {\r\n this.alerts.setAlerts([]);\r\n this.nextPage.emit(data);\r\n }\r\n\r\n onSubmit(submission: any, saved: boolean, noemit?: boolean) {\r\n this.submitting = false;\r\n this.submissionSuccess = true;\r\n\r\n this.formio.setValue(fastCloneDeep(submission), {\r\n noValidate: true,\r\n noCheck: true\r\n });\r\n\r\n if (saved) {\r\n this.formio.emit('submitDone', submission);\r\n }\r\n if (!noemit) {\r\n this.submit.emit(submission);\r\n }\r\n if (!this.success) {\r\n this.alerts.setAlert({\r\n type: 'success',\r\n message: get(this.options, 'alerts.submitMessage')\r\n });\r\n }\r\n }\r\n\r\n onError(err: any) {\r\n this.alerts.setAlerts([]);\r\n this.submitting = false;\r\n this.isLoading = false;\r\n\r\n if (!err) {\r\n return;\r\n }\r\n\r\n // Make sure it is an array.\r\n const errors = Array.isArray(err) ? err : [err];\r\n\r\n // Emit these errors again.\r\n this.errorChange.emit(errors);\r\n\r\n if (err.silent) {\r\n return;\r\n }\r\n\r\n if (this.formio && errors.length) {\r\n this.formio.emit('submitError', errors);\r\n }\r\n\r\n // Iterate through each one and set the alerts array.\r\n errors.forEach((error: any) => {\r\n const {\r\n message,\r\n paths,\r\n } = error\r\n ? error.details\r\n ? {\r\n message: error.details.map((detail) => detail.message),\r\n paths: error.details.map((detail) => detail.path),\r\n }\r\n : {\r\n message: error.message || error.toString(),\r\n paths: error.path ? [error.path] : [],\r\n }\r\n : {\r\n message: '',\r\n paths: [],\r\n };\r\n\r\n let shouldErrorDisplay = true;\r\n\r\n if (this.formio) {\r\n paths.forEach((path, index) => {\r\n const component = this.formio.getComponent(path);\r\n if (component) {\r\n const components = Array.isArray(component) ? component : [component];\r\n const messageText = Array.isArray(message) ? message[index] : message;\r\n components.forEach((comp) => comp.setCustomValidity(messageText, true));\r\n this.alerts.addAlert({\r\n type: 'danger',\r\n message: message[index],\r\n component,\r\n });\r\n shouldErrorDisplay = false;\r\n }\r\n });\r\n\r\n if ((window as any).VPAT_ENABLED) {\r\n if (typeof error ==='string' && this.formio.components) {\r\n this.formio.components.forEach((comp) => {\r\n if (comp && comp.type !== 'button') {\r\n comp.setCustomValidity(message, true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!this.noAlerts) {\r\n this.formio.showErrors();\r\n }\r\n }\r\n\r\n if (shouldErrorDisplay) {\r\n this.alerts.addAlert({\r\n type: 'danger',\r\n message,\r\n component: error.component,\r\n });\r\n }\r\n });\r\n }\r\n\r\n focusOnComponet(key: any) {\r\n if (this.formio) {\r\n this.formio.focusOnComponent(key);\r\n }\r\n }\r\n\r\n submitExecute(submission: object, saved = false) {\r\n if (this.service && !this.url && !saved) {\r\n this.service\r\n .saveSubmission(submission)\r\n .subscribe(\r\n (sub: {}) => this.onSubmit(sub, true),\r\n err => this.onError(err)\r\n );\r\n } else {\r\n this.onSubmit(submission, false);\r\n }\r\n }\r\n\r\n submitForm(submission: any, saved = false) {\r\n // Keep double submits from occurring...\r\n if (this.submitting) {\r\n return;\r\n }\r\n this.formio.setMetadata(submission);\r\n this.submissionSuccess = false;\r\n this.submitting = true;\r\n this.beforeSubmit.emit(submission);\r\n\r\n // if they provide a beforeSubmit hook, then allow them to alter the submission asynchronously\r\n // or even provide a custom Error method.\r\n const beforeSubmit = get(this.options, 'hooks.beforeSubmit');\r\n if (beforeSubmit) {\r\n beforeSubmit(submission, (err: FormioError, sub: object) => {\r\n if (err) {\r\n this.onError(err);\r\n return;\r\n }\r\n this.submitExecute(sub, saved);\r\n });\r\n } else {\r\n this.submitExecute(submission, saved);\r\n }\r\n }\r\n\r\n onChange(value: any, flags: any, isModified: boolean) {\r\n if (this.watchSubmissionErrors && !this.submissionSuccess) {\r\n const errors = get(this, 'formio.errors', []);\r\n const alerts = get(this, 'alerts.alerts', []);\r\n const submitted = get(this, 'formio.submitted', false);\r\n if (submitted && (errors.length || alerts.length)) {\r\n this.onError(errors);\r\n }\r\n }\r\n return this.change.emit({...value, flags, isModified});\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'formio-loader',\r\n styleUrls: ['./formio.loader.component.scss'],\r\n templateUrl: './formio.loader.component.html'\r\n})\r\nexport class FormioLoaderComponent {\r\n @Input() isLoading: boolean;\r\n}\r\n","<div class=\"formio-loader-wrapper\" *ngIf=\"isLoading\">\r\n <div class=\"formio-loader\"></div>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'parseHtmlContent', pure: false })\r\nexport class ParseHtmlContentPipe implements PipeTransform {\r\n\r\n /*\r\n Some messages that are come from formiojs have hex codes. So the main aim of this pipe is transform this messages to html.\r\n And then render in template.\r\n */\r\n transform(content) {\r\n const parsedContent = new DOMParser().parseFromString(content, 'text/html').body.childNodes[0];\r\n\r\n return parsedContent?.textContent;\r\n }\r\n}\r\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\r\nimport { FormioAlerts } from './formio.alerts';\r\n\r\n@Component({\r\n selector: 'formio-alerts',\r\n templateUrl: './formio.alerts.component.html'\r\n})\r\nexport class FormioAlertsComponent implements OnInit {\r\n @Input() alerts: FormioAlerts;\r\n @Output() focusComponent = new EventEmitter<object>();\r\n ngOnInit() {\r\n if (!this.alerts) {\r\n this.alerts = new FormioAlerts();\r\n }\r\n }\r\n getComponent (event, alert) {\r\n this.focusComponent.emit(alert.component.key);\r\n }\r\n}\r\n","<div *ngFor=\"let alert of alerts.alerts\" class=\"alert alert-{{ alert.type }}\" role=\"alert\" (click)=\"getComponent($event, alert)\">\r\n {{alert.message | parseHtmlContent}}\r\n</div>\r\n","import { Component, OnInit, Optional, ViewEncapsulation, Input, NgZone, OnChanges } from '@angular/core';\r\nimport { FormioAppConfig } from '../../formio.config';\r\nimport { Formio, Form } from '@formio-tmt/js';\r\nimport { FormioBaseComponent } from '../../FormioBaseComponent';\r\nimport { CustomTagsService } from '../../custom-component/custom-tags.service';\r\n\r\n/* tslint:disable */\r\n@Component({\r\n selector: 'formio',\r\n templateUrl: './formio.component.html',\r\n styleUrls: ['../../../../../node_modules/@formio-tmt/js/dist/formio.form.min.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\n/* tslint:enable */\r\nexport class FormioComponent extends FormioBaseComponent implements OnInit, OnChanges {\r\n constructor(\r\n public ngZone: NgZone,\r\n @Optional() public config: FormioAppConfig,\r\n @Optional() public customTags?: CustomTagsService,\r\n ) {\r\n super(ngZone, config, customTags);\r\n if (this.config) {\r\n Formio.setBaseUrl(this.config.apiUrl);\r\n Formio.setProjectUrl(this.config.appUrl);\r\n } else {\r\n console.warn('You must provide an AppConfig within your application!');\r\n }\r\n }\r\n\r\n getRenderer() {\r\n return this.renderer || Form;\r\n }\r\n}\r\n","<div role=\"form\" [attr.aria-label]=\"label\">\r\n <div *ngIf=\"isLoading && !hideLoading\" style=\"position:relative;height:200px\">\r\n <formio-loader [isLoading]=\"isLoading\"></formio-loader>\r\n </div>\r\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.top || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\r\n <div #formio></div>\r\n <formio-alerts *ngIf=\"this.options.alertsPosition === AlertsPosition.bottom || this.options.alertsPosition === AlertsPosition.both\" (focusComponent)=\"focusOnComponet($event)\" [alerts]=\"alerts\"></formio-alerts>\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n OnChanges,\r\n OnDestroy,\r\n ViewEncapsulation,\r\n Optional,\r\n ElementRef,\r\n ViewChild,\r\n EventEmitter,\r\n Output,\r\n NgZone\r\n} from '@angular/core';\r\nimport { FormioAppConfig } from '../../formio.config';\r\nimport {\r\n FormioForm,\r\n FormioOptions\r\n} from '../../formio.common';\r\nimport { Formio, FormBuilder, Utils } from '@formio-tmt/js';\r\nimport { assign } from 'lodash';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { CustomTagsService } from '../../custom-component/custom-tags.service';\r\n\r\n/* tslint:disable */\r\n@Component({\r\n selector: 'form-builder',\r\n templateUrl: './formbuilder.component.html',\r\n styleUrls: ['../../../../../node_modules/@formio-tmt/js/dist/formio.builder.min.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n/* tslint:enable */\r\nexport class FormBuilderComponent implements OnInit, OnChanges, OnDestroy {\r\n public ready: Promise<object>;\r\n public readyResolve: any;\r\n public formio: any;\r\n public builder: FormBuilder;\r\n public componentAdding = false;\r\n private refreshSubscription: Subscription;\r\n @Input() form?: FormioForm;\r\n @Input() options?: FormioOptions;\r\n @Input() formbuilder?: any;\r\n @Input() noeval ? = false;\r\n @Input() refresh?: Observable<void>;\r\n @Input() rebuild?: Observable<object>;\r\n @Output() change: EventEmitter<object>;\r\n @ViewChild('builder', { static: true }) builderElement?: ElementRef<any>;\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n @Optional() private config: FormioAppConfig,\r\n @Optional() private customTags?: CustomTagsService\r\n ) {\r\n if (this.config) {\r\n Formio.setBaseUrl(this.config.apiUrl);\r\n Formio.setProjectUrl(this.config.appUrl);\r\n } else {\r\n console.warn('You must provide an AppConfig within your application!');\r\n }\r\n\r\n this.change = new EventEmitter();\r\n this.ready = new Promise((resolve: any) => {\r\n this.readyResolve = resolve;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n Utils.Evaluator.noeval = this.noeval;\r\n\r\n if (this.refresh) {\r\n this.refreshSubscription = this.refresh.subscribe(() => {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.buildForm(this.form);\r\n });\r\n });\r\n }\r\n\r\n if (this.rebuild) {\r\n this.rebuild.subscribe((options) => {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.rebuildForm(this.form, options);\r\n });\r\n });\r\n }\r\n }\r\n\r\n setInstance(instance: any) {\r\n this.formio = instance;\r\n instance.off('addComponent');\r\n instance.off('saveComponent');\r\n instance.off('updateComponent');\r\n instance.off('removeComponent');\r\n instance.on('addComponent', (component, parent, path, index, isNew) => {\r\n this.ngZone.run(() => {\r\n if (isNew) {\r\n this.componentAdding = true;\r\n } else {\r\n this.change.emit({\r\n type: 'addComponent',\r\n builder: instance,\r\n form: instance.schema,\r\n component: component,\r\n parent: parent,\r\n path: path,\r\n index: index\r\n });\r\n this.componentAdding = false;\r\n }\r\n });\r\n });\r\n instance.on('saveComponent', (component, original, parent, path, index, isNew) => {\r\n this.ngZone.run(() => {\r\n this.change.emit({\r\n type: this.componentAdding ? 'addComponent' : 'saveComponent',\r\n builder: instance,\r\n form: instance.schema,\r\n component: component,\r\n originalComponent: original,\r\n parent: parent,\r\n path: path,\r\n index: index,\r\n isNew: isNew || false\r\n });\r\n this.componentAdding = false;\r\n });\r\n });\r\n instance.on('updateComponent', (component) => {\r\n this.ngZone.run(() => {\r\n this.change.emit({\r\n type: 'updateComponent',\r\n builder: instance,\r\n form: instance.schema,\r\n component: component\r\n });\r\n });\r\n });\r\n instance.on('removeComponent', (component, parent, path, index) => {\r\n this.ngZone.run(() => {\r\n this.change.emit({\r\n type: 'deleteComponent',\r\n builder: instance,\r\n form: instance.schema,\r\n component: component,\r\n parent: parent,\r\n path: path,\r\n index: index\r\n });\r\n });\r\n });\r\n this.ngZone.run(() => {\r\n this.readyResolve(instance);\r\n });\r\n return instance;\r\n }\r\n\r\n setDisplay(display: String, prevDisplay?: string) {\r\n if (display && display !== prevDisplay) {\r\n (this.builder as any).setDisplay(display);\r\n }\r\n }\r\n\r\n buildForm(form: any, prevForm?: any) {\r\n if (!form || !this.builderElement || !this.builderElement.nativeElement) {\r\n return;\r\n }\r\n\r\n if (this.builder) {\r\n this.setDisplay(form.display, prevForm?.display);\r\n this.setInstance(this.builder.instance);\r\n this.builder.form = form;\r\n this.builder.instance.form = form;\r\n return this.builder.instance;\r\n }\r\n\r\n return this.rebuildForm(form);\r\n }\r\n\r\n rebuildForm(form: any, options?: object) {\r\n const Builder = this.formbuilder || FormBuilder;\r\n const extraTags = this.customTags ? this.customTags.tags : [];\r\n this.builder = new Builder(\r\n this.builderElement.nativeElement,\r\n form,\r\n assign({\r\n icons: 'fontawesome',\r\n sanitizeConfig: {\r\n addTags: extraTags\r\n }\r\n }, options || this.options || {})\r\n );\r\n return this.builder.ready.then(instance => this.setInstance(instance));\r\n }\r\n\r\n ngOnChanges(changes: any) {\r\n Utils.Evaluator.noeval = this.noeval;\r\n\r\n if (changes.form && changes.form.currentValue) {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.buildForm(changes.form.currentValue || {components: []}, changes.form.previousValue);\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.refreshSubscription) {\r\n this.refreshSubscription.unsubscribe();\r\n }\r\n\r\n if (this.formio) {\r\n this.formio.destroy();\r\n }\r\n }\r\n}\r\n","<div #builder></div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormioComponent } from './components/formio/formio.component';\r\nimport { FormBuilderComponent } from './components/formbuilder/formbuilder.component';\r\nimport { FormioAlerts } from './components/alerts/formio.alerts';\r\nimport { ParseHtmlContentPipe } from './components/alerts/parse-html-content.pipe';\r\nimport { FormioAlertsComponent } from './components/alerts/formio.alerts.component';\r\nimport { FormioLoaderComponent } from './components/loader/formio.loader.component';\r\nimport { CustomTagsService } from './custom-component/custom-tags.service';\r\nimport { FormioBaseComponent } from './FormioBaseComponent';\r\n\r\n@NgModule({\r\n declarations: [\r\n FormioComponent,\r\n FormioBaseComponent,\r\n FormBuilderComponent,\r\n FormioLoaderComponent,\r\n FormioAlertsComponent,\r\n ParseHtmlContentPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n FormioComponent,\r\n FormBuilderComponent,\r\n FormioLoaderComponent,\r\n FormioAlertsComponent\r\n ],\r\n providers: [\r\n FormioAlerts,\r\n CustomTagsService\r\n ]\r\n})\r\nexport class FormioModule {}\r\n","if (window && typeof (window as any).global === 'undefined') {\r\n (window as any).global = window;\r\n}\r\nexport * from './formio.config';\r\nexport * from './formio.common';\r\nexport * from './formio.service';\r\nexport * from './formio-promise.service';\r\nexport * from './formio.utils';\r\nexport * from './FormioBaseComponent';\r\nexport * from './components/formio/formio.component';\r\nexport * from './components/formbuilder/formbuilder.component';\r\nexport * from './components/loader/formio.loader.component';\r\nexport * from './components/alerts/formio.alerts';\r\nexport * from './components/alerts/formio.alerts.component';\r\nexport { FormioModule } from './formio.module';\r\nexport {\r\n Formio,\r\n Utils as FormioUtils,\r\n Templates,\r\n Components,\r\n ComponentSchema,\r\n ExtendedComponentSchema,\r\n ElementInfo\r\n} from '@formio-tmt/js';\r\n","// @ts-nocheck\r\nimport { BuilderInfo, Components, ExtendedComponentSchema, Utils as FormioUtils } from '@formio-tmt/js';\r\nimport { FormioCustomComponentInfo, FormioCustomElement, FormioEvent } from '../elements.common';\r\nimport { clone, isNil, isArray } from 'lodash';\r\n\r\nconst BaseInputComponent = Components.components.input;\r\nconst TextfieldComponent = Components.components.textfield;\r\n\r\nexport function createCustomFormioComponent(customComponentOptions: FormioCustomComponentInfo) {\r\n return class CustomComponent extends BaseInputComponent {\r\n static editForm = customComponentOptions.editForm || TextfieldComponent.editForm;\r\n id = FormioUtils.getRandomComponentId();\r\n type = customComponentOptions.type;\r\n _customAngularElement: FormioCustomElement;\r\n\r\n static schema() {\r\n return BaseInputComponent.schema({\r\n ...customComponentOptions.schema,\r\n type: customComponentOptions.type,\r\n });\r\n }\r\n\r\n get defaultSchema() {\r\n return CustomComponent.schema();\r\n }\r\n\r\n get emptyValue() {\r\n return customComponentOptions.emptyValue || null;\r\n }\r\n\r\n static get builderInfo(): BuilderInfo {\r\n return {\r\n title: customComponentOptions.title,\r\n group: customComponentOptions.group,\r\n icon: customComponentOptions.icon,\r\n weight: customComponentOptions.weight,\r\n documentation: customComponentOptions.documentation,\r\n schema: CustomComponent.schema(),\r\n };\r\n }\r\n\r\n constructor(public component: ExtendedComponentSchema, options: any, data: any) {\r\n super(component, {\r\n ...options,\r\n sanitizeConfig: {\r\n addTags: [customComponentOptions.selector],\r\n },\r\n }, data);\r\n\r\n if (customComponentOptions.extraValidators) {\r\n this.validators = this.validators.concat(customComponentOptions.extraValidators);\r\n }\r\n }\r\n\r\n elementInfo() {\r\n const info = super.elementInfo();\r\n info.type = customComponentOptions.selector;\r\n info.changeEvent = customComponentOptions.changeEvent || 'valueChange';\r\n info.attr = {\r\n ...info.attr,\r\n class: info.attr.class.replace('form-control', 'form-control-custom-field') // remove the form-control class as the custom angular component may look different\r\n };\r\n return info;\r\n }\r\n\r\n get inputInfo() {\r\n const info = {\r\n id: this.key,\r\n ...this.elementInfo()\r\n }\r\n return info;\r\n }\r\n\r\n renderElement(value: any, index: number) {\r\n const info = this.inputInfo;\r\n return this.renderTemplate(customComponentOptions.template || 'input', {\r\n input: info,\r\n value,\r\n index\r\n });\r\n }\r\n\r\n attach(element: HTMLElement) {\r\n let superAttach = super.attach(element);\r\n\r\n this._customAngularElement = element.querySelector(customComponentOptions.selector);\r\n\r\n // Bind the custom options and the validations to the Angular component's inputs (flattened)\r\n if (this._customAngularElement) {\r\n // To make sure we have working input in IE...\r\n // IE doesn't render it properly if it's not visible on the screen\r\n // due to the whole structure applied via innerHTML to the parent\r\n // so we need to use appendChild\r\n if (!this._customAngularElement.getAttribute('ng-version')) {\r\n this._customAngularElement.removeAttribute('ref');\r\n\r\n const newCustomElement = document.createElement(customComponentOptions.selector) as FormioCustomElement;\r\n\r\n newCustomElement.setAttribute('ref', 'input');\r\n Object.keys(this.inputInfo.attr).forEach((attr: string) => {\r\n newCustomElement.setAttribute(attr, this.inputInfo.attr[attr]);\r\n });\r\n\r\n this._customAngularElement.appendChild(newCustomElement);\r\n this._customAngularElement = newCustomElement;\r\n\r\n superAttach = super.attach(element);\r\n }\r\n\r\n // Bind customOptions\r\n for (const key in this.component.customOptions) {\r\n if (this.component.customOptions.hasOwnProperty(key)) {\r\n this._customAngularElement[key] = this.component.customOptions[key];\r\n }\r\n }\r\n // Bind validate options\r\n for (const key in this.component.validate) {\r\n if (this.component.validate.hasOwnProperty(key)) {\r\n this._customAngularElement[key] = this.component.validate[key];\r\n }\r\n }\r\n // Bind options explicitly set\r\n const fieldOptions = customComponentOptions.fieldOptions;\r\n if (isArray(fieldOptions) && fieldOptions.length > 0) {\r\n for (const key in fieldOptions) {\r\n if (fieldOptions.hasOwnProperty(key)) {\r\n this._customAngularElement[fieldOptions[key]] = this.component[fieldOptions[key]];\r\n }\r\n }\r\n }\r\n\r\n // Attach event listener for emit event\r\n this._customAngularElement.addEventListener('formioEvent', (event: CustomEvent<FormioEvent>) => {\r\n this.emit(event.detail.eventName, {\r\n ...event.detail.data,\r\n component: this.component\r\n });\r\n });\r\n\r\n // Ensure we bind the value (if it isn't a multiple-value component with no wrapper)\r\n if (!this._customAngularElement.value && !this.component.disableMultiValueWrapper) {\r\n this.restoreValue();\r\n }\r\n\r\n }\r\n return superAttach;\r\n }\r\n\r\n // Add extra option to support multiple value (e.g. datagrid) with single angular component (disableMultiValueWrapper)\r\n useWrapper() {\r\n return this.component.hasOwnProperty('multiple') && this.component.multiple && !this.component.disableMultiValueWrapper;\r\n }\r\n\r\n get defaultValue() {\r\n let defaultValue = this.emptyValue;\r\n\r\n // handle falsy default value\r\n if (!isNil(this.component.defaultValue)) {\r\n defaultValue = this.component.defaultValue;\r\n }\r\n\r\n if (this.component.customDefaultValue && !this.options.preview) {\r\n defaultValue = this.evaluate(\r\n this.component.customDefaultValue,\r\n { value: '' },\r\n 'value'\r\n );\r\n }\r\n\r\n return clone(defaultValue);\r\n }\r\n };\r\n}\r\n","import { Injector, Type } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { Components } from '@formio-tmt/js';\r\nimport { FormioCustomComponentInfo } from '../elements.common';\r\nimport { createCustomFormioComponent } from './create-custom-component';\r\nimport { CustomTagsService } from './custom-tags.service';\r\n\r\nexport function registerCustomTag(tag: string, injector: Injector): void {\r\n injector.get(CustomTagsService).addCustomTag(tag);\r\n}\r\n\r\nexport function registerCustomTags(tags: string[], injector: Injector): void {\r\n tags.forEach(tag => registerCustomTag(tag, injector));\r\n}\r\n\r\nexport function registerCustomFormioComponent(\r\n options: FormioCustomComponentInfo,\r\n angularComponent: Type<any>,\r\n injector: Injector,\r\n): void {\r\n registerCustomTag(options.selector, injector);\r\n\r\n const complexCustomComponent = createCustomElement(angularComponent, { injector });\r\n customElements.define(options.selector, complexCustomComponent);\r\n\r\n Components.setComponent(options.type, createCustomFormioComponent(options));\r\n}\r\n\r\nexport function registerCustomFormioComponentWithClass(\r\n options: FormioCustomComponentInfo,\r\n angularComponent: Type<any>,\r\n formioClass: any,\r\n injector: Injector,\r\n): void {\r\n registerCustomTag(options.selector, injector);\r\n\r\n const complexCustomComponent = createCustomElement(angularComponent, { injector });\r\n customElements.define(options.selector, complexCustomComponent);\r\n\r\n Components.setComponent(options.type, formioClass);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FormioAppConfig","i2.CustomTagsService","i2.ParseHtmlContentPipe","i3","i4.FormioLoaderComponent","i5.FormioAlertsComponent","FormioUtils"],"mappings":";;;;;;;;;;;AAEA,MACa,eAAe,CAAA;IAC1B,MAAM,GAAG,EAAE,CAAC;IACZ,MAAM,GAAG,EAAE,CAAC;AACZ,IAAA,KAAK,CAAU;AACf,IAAA,QAAQ,CAAW;uGAJR,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCgDE,WAAW,CAAA;AAEb,IAAA,OAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,MAAA,CAAA;AAHT,IAAA,WAAA,CACS,OAAe,EACf,SAAkC,EAClC,MAAgB,EAAA;QAFhB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QACf,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;KACrB;AACL;;MCpDY,aAAa,CAAA;AAEL,IAAA,GAAA,CAAA;AAAoB,IAAA,OAAA,CAAA;AADhC,IAAA,MAAM,CAAM;IACnB,WAAmB,CAAA,GAAW,EAAS,OAAgB,EAAA;QAApC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;QAAS,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;AACrD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAClD;AACD,IAAA,cAAc,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,MAAW,CAAC;QAChB,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAuB,KAAI;YACnD,IAAI;gBACF,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,GAAG,IAAI,CAAC;AACd,oBAAA,EAAE,EAAE;AACD,yBAAA,IAAI,CAAC,CAAC,OAAY,KAAI;wBACrB,MAAM,GAAG,OAAO,CAAC;AACjB,wBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,qBAAC,CAAC;AACD,yBAAA,KAAK,CAAC,CAAC,GAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,iBAAA;AAAM,qBAAA,IAAI,MAAM,EAAE;AACjB,oBAAA,QA