@formql/core
Version:
FormQL - A framework for building dynamic forms
1 lines • 62.1 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms"),require("@angular/common"),require("angular2-uuid"),require("rxjs"),require("rxjs/operators"),require("angular2-text-mask"),require("text-mask-addons")):"function"==typeof define&&define.amd?define("@formql/core",["exports","@angular/core","@angular/forms","@angular/common","angular2-uuid","rxjs","rxjs/operators","angular2-text-mask","text-mask-addons"],t):t(((e=e||self).formql=e.formql||{},e.formql.core={}),e.ng.core,e.ng.forms,e.ng.common,e["angular2-uuid"],e.rxjs,e.rxjs.operators,e.angular2TextMask,e.textMaskAddons)}(this,function(e,t,n,o,r,i,a,s,p){"use strict";var d,c,l=function(){return(l=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};function u(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function f(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(s){r={error:s}}finally{try{o&&!o.done&&(n=i["return"])&&n.call(i)}finally{if(r)throw r.error}}return a}function v(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(m(arguments[t]));return e}(d=e.ContainerType||(e.ContainerType={}))[d.Section=1]="Section",d[d.Component=2]="Component",d[d.Page=3]="Page",(c=e.FormQLMode||(e.FormQLMode={}))[c.View=0]="View",c[c.Edit=1]="Edit";var g,h,y=function(){function e(){this.submit=new t.EventEmitter}return e.prototype.onSubmitTriggered=function(){this.submit.emit(null)},e.componentName="PlainLayoutComponent",u([t.Input(),f("design:type",Object)],e.prototype,"form",void 0),u([t.Input(),f("design:type",n.FormGroup)],e.prototype,"reactiveForm",void 0),u([t.Input(),f("design:type",Number)],e.prototype,"mode",void 0),u([t.Output(),f("design:type",Object)],e.prototype,"submit",void 0),e=u([t.Component({selector:"formql-plain-layout",template:'<ng-container *ngIf="form && form.pages && form.pages.length > 0">\n <form [formGroup]="reactiveForm" (ngSubmit)="onSubmitTriggered()">\n <div formql-page-wrapper *ngIf="form.pages"\n [(page)]="form.pages[0]"\n [reactivePage]="reactiveForm.controls[form.pages[0].pageId]"\n [formGroupName]="form.pages[0].pageId"\n [mode]="mode"></div>\n </form>\n </ng-container>'})],e)}(),b=function(){function e(){}return e.prototype.synchroniseSectionModel=function(e,t){var n=e.sections.find(function(e){return e.sectionId===t.sourceWrapperId}),o=null;if("new"===t.sourceObjectId){if(o=this.newComponent(),t.sourceObjectId=o.componentId,!(n=e.sections.find(function(e){return e.sectionId===t.targetWrapperId})))return e;n.components.push(o)}else o=n.components.find(function(e){return e.componentId===t.sourceObjectId});if(o){if(o.position.type!==t.positionType&&(o.position.type=t.positionType),o.position.id!==t.targetPositionId&&(o.position.id=t.targetPositionId),t.sourceWrapperId!==t.targetWrapperId){var r=this.transferComponent(e,n,t);r.template.reRender=!0,r=this.reorderComponents(r,o,t)}else n=this.reorderComponents(n,o,t);return n.template.reRender=!0,e}},e.prototype.synchronisePageModel=function(e,t){var n=null;return"new"===t.sourceObjectId?(n=this.newSection(),e.sections.push(n)):n=e.sections.find(function(e){return e.sectionId===t.sourceObjectId}),null!=n&&(n.position.id!==t.targetPositionId&&(n.position.id=t.targetPositionId),e.template.reRender=!0,e=this.reorderSections(e,n,t)),e},e.prototype.reorderComponents=function(e,t,n){var o=e.components.filter(function(e){return e.position.id===t.position.id}),r=o.find(function(e){return e.componentId===n.targetIndexId});r&&(t.position.index=r.position.index,r.position.index=r.position.index+.5),o=o.sort(function(e,t){return e.position.index-t.position.index});for(var i=0;i<o.length;i++)o[i].position.index=i;return e},e.prototype.reorderSections=function(e,t,n){var o=e.sections.filter(function(e){return e.position.id===t.position.id}),r=o.find(function(e){return e.sectionId===n.targetIndexId});r&&(t.position.index=r.position.index,r.position.index=r.position.index+.5),o=o.sort(function(e,t){return e.position.index-t.position.index});for(var i=0;i<o.length;i++)o[i].position.index=i;return e},e.prototype.transferComponent=function(e,t,n){var o=e.sections.find(function(e){return e.sectionId===n.targetWrapperId});if(!o)return null;var r=t.components.find(function(e){return e.componentId===n.sourceObjectId});if(!r)return null;var i=t.components.findIndex(function(e){return e.componentId===n.sourceObjectId});return o.components.push(r),t.components.splice(i,1),o},e.prototype.newSection=function(){return{sectionId:r.UUID.UUID(),sectionName:"New section",components:[],template:{header:{gridTemplateColumns:"1fr",gridTemplateRows:"1fr",gridTemplateAreas:'"ID1_1"'},body:{gridTemplateColumns:"1fr",gridTemplateRows:"1fr",gridTemplateAreas:'"ID1_1"'}},position:{id:"-1",index:0}}},e.prototype.newComponent=function(){return{componentId:r.UUID.UUID(),label:"New Component",componentName:"FormQLLabelComponent",position:{id:"-1",index:0}}},e=u([t.Injectable()],e)}();(g=e.GridPositionType||(e.GridPositionType={}))[g.Header=1]="Header",g[g.Body=2]="Body",g[g.Footer=3]="Footer",(h=e.InternalEventType||(e.InternalEventType={}))[h.EditingComponent=1]="EditingComponent",h[h.EditingSection=2]="EditingSection",h[h.EditingPage=3]="EditingPage",h[h.EditingForm=4]="EditingForm",h[h.RemoveComponent=5]="RemoveComponent",h[h.RemoveSection=6]="RemoveSection",h[h.RemovePage=7]="RemovePage",h[h.DndFormChanged=8]="DndFormChanged";var C,x=function(){function e(e){this.componentFactoryResolver=e,this.componentRegister={}}return e.prototype.resolveComponent=function(e){if(!this.componentRegister)return null;var t=this.componentRegister[e];return t?this.componentFactoryResolver.resolveComponentFactory(t):(console.log("Component "+e+" not found."),null)},e.prototype.addComponents=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];Array.isArray(t)&&t.forEach(function(t){return e.componentRegister[t.componentName]=t})},e.prototype.addComponent=function(e){this.componentRegister[e.componentName]=e},e.prototype.getComponentArray=function(){var e=this;return Array.from(Object.keys(this.componentRegister),function(t){return e.componentRegister[t]})},e=u([t.Injectable(),f("design:paramtypes",[t.ComponentFactoryResolver])],e)}(),S=function(){function e(){}var o;return o=e,e.evaluateCondition=function(e,t){var n={value:!1,error:null};if(e&&""!==e.trim()&&"false"!==e){if("true"===e)return n.value=!0,n;if(!t)return n;!0!==(n=l({},this.evaluate(e,t))).value&&(n.value=!1)}return n},e.evaluateValue=function(e,t){var n={value:null,error:null};return t?(n=l({},this.evaluate(e,t)),Number.isNaN(n.value)||n.value===Infinity?n.value=null:n.value=this.deepCopy(n.value),n):n},e.evaluate=function(e,t){for(var n={value:null,error:null},o=Object.keys(t),r=[],i=0;i<o.length;i++)r.push(t[o[i]]);r.push(e),o.push("path");var a="\n 'use strict'\n let window = undefined;\n let document = undefined;\n let alert = undefined;\n let a = undefined;\n return "+e+";\n ";o.push(a);try{var s=new(Function.bind.apply(Function,v([void 0],o)));n.value=s.apply(void 0,v(r))}catch(p){n.error=p}return n},e.setValue=function(e,t,n){if(t===undefined&&(t=null),e){n||(n={});var o=e;if(-1!==e.indexOf(".")){for(var r=e.split("."),i=n,a=0;a<=r.length-1;a++)i[o=r[a]]||(i[o]={}),a!==r.length-1&&(i=i[o]);i[o]=t}else n[o]=t}return n},e.getValue=function(e,t,n){if(e&&t&&(!t||0!==Object.keys(t).length||t.constructor!==Object))try{var r=new Function("data","return data."+e+";");return o.resolveType(r(t),n)}catch(i){return null}},e.setValidators=function(e,t,n){var o=e.resolveComponent(t.componentName);if(!o)return n;var r=o.componentType;if(r&&(!r.validators||r.validators&&0===r.validators.length))return n;var i=[],a=t.rules;if(null!=a){var s=r.validators;Object.keys(a).forEach(function(e){var t=a[e];if(t.value&&"readonly"!==t.key&&"hidden"!==t.key&&"value"!==t.key){var o=s.find(function(e){return e.key===t.key});o&&o.validator&&i.push(o.validator)}else t.value&&"readonly"===t.key&&n.enabled&&n.disable()}),n.disabled&&(!a||a&&!a.readonly||a&&a.readonly&&!a.readonly.value)&&n.enable()}return i.length>0&&n.setValidators(i),n},e.createReactiveFormStructure=function(e,t,r){var i=this;void 0===t&&(t=!0),void 0===r&&(r=null);var a={},s={},p=new n.FormGroup({});return e.pages.forEach(function(e){var d={};null!=e.sections&&e.sections.forEach(function(e){var p={};null!=e.components&&e.components.forEach(function(e){s[e.componentId]=e;var d=new n.FormControl;if(a[e.componentId]=d,p[e.componentId]=d,t){r||(r={}),r=o.instantiateData(r,e.schema);try{var c=i.getValue(e.schema,r,e.type);c&&(a[e.componentId].setValue(c),e.value=c)}catch(l){throw l}}}),d[e.sectionId]=new n.FormGroup(p)}),p[e.pageId]=new n.FormGroup(d)}),{pageGroup:p,formControls:a,components:s,data:r}},e.instantiateData=function(e,t){if(t&&-1!==t.indexOf("."))for(var n=t.split("."),o=e,r="",i=0;i<=n.length-2;i++)o[r=n[i]]||(o[r]={}),i!==n.length-2&&(o=o[r]);return e},e.deepCopy=function(e,t){void 0===t&&(t=null);var n=e;if(e&&"object"==typeof e){n="[object Array]"===Object.prototype.toString.call(e)?[]:{};var o=function(o){(!t||t&&!t.find(function(e){return e===o}))&&(n[o]=r.deepCopy(e[o]))},r=this;for(var i in e)o(i)}return n},e.propertyCopy=function(e,t,n){if(void 0===n&&(n=null),e&&"object"==typeof e){var o=function(o){!n||n&&!n.find(function(e){return e===o})?e[o]&&"object"==typeof e[o]?(t[o]||(t[o]={}),t[o]=r.propertyCopy(e[o],t[o])):t[o]=e[o]:console.log("propertyCopy function doesn't support primitives")},r=this;for(var i in e)o(i)}return t},e.formatForGraphQl=function(e){var t=this,n=this.deepCopy(e);n.__typename&&delete n.__typename;var o="";return Object.keys(n).forEach(function(e){null==n[e]?o+=e+": null,":"object"==typeof n[e]?o+=t.formatForGraphQl(n[e]):"number"==typeof n[e]||"boolean"==typeof n[e]?o+=e+":"+n[e]+",":o+=e+':"'+n[e]+","}),o="{"+o.slice(0,-1)+"}"},e.formatError=function(e){if(e)return e.error&&e.error.message&&(e.message=e.error.message),e},e.resolveType=function(e,t){if(null===e||e===undefined||""===e)return null;if(Number.isNaN(e))return 0;switch(t){case"number":return"string"==typeof e&&(e=e.replace(/[^\d\.]/g,"")),Number(e);default:return e}},e.maskToArray=function(e){var t=[];e&&e.trim().substring(1).slice(0,-1).replace("\\\\","\\").split(",").forEach(function(e){t.push(e.trim().replace(/\"/g,"").replace(/\'/g,""))});return t},e.updateTemplates=function(e){return e.pages.forEach(function(e){e.template.reRender=!1,e.template=o.deepCopy(e.template),e.sections.forEach(function(e){e.template.reRender=!1,e.template=o.deepCopy(e.template)})}),e},e.resetValidators=function(e,t,n){return e&&Object.keys(e).length>0&&Object.keys(e).forEach(function(r){var i=e[r];if(i){var a=t[i.componentId];a&&(a=o.setValidators(n,i,a))}}),t},e.validateForm=function(e){var t=this;Object.keys(e.controls).forEach(function(o){var r=e.get(o);r instanceof n.FormControl?r.markAsTouched({onlySelf:!0}):r instanceof n.FormGroup&&t.validateForm(r)})},e.ɵprov=t["ɵɵdefineInjectable"]({factory:function(){return new e},token:e,providedIn:"root"}),e=o=u([t.Injectable({providedIn:"root"})],e)}(),I=function(){function e(){this.evalFunctions=["GET","SUM"]}return e.prototype.doEval=function(e,t){var n=Object.keys(t).map(function(e){return"let "+e+" = conditionFunctions."+e+"; "}).join("");if(""!==e.trim()){if(-1!==this.evalFunctions.indexOf(e.trim()))throw Error("Funcitons need a parameter (e.g. GET('contact.firstName') )");var o=[],r=[];r.push(e),r.push(t),o.push("condition"),o.push("conditionFunctions");var i="\n 'use strict'\n "+n+"\n let window = undefined;\n let document = undefined;\n let alert = undefined;\n let a = undefined;\n return "+e+";\n ";o.push(i);try{return(new(Function.bind.apply(Function,v([void 0],o)))).apply(void 0,v(r))}catch(a){throw console.log(a),a}}},e.prototype.resetDependancies=function(e,t,n){var o=this,r={GET:function(t){e.components=o.setDependents(e.components,t,n.componentId)},SUM:function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];t.forEach(function(t){return e.components=o.setDependents(e.components,t,n.componentId)})}};return this.doEval(t,r)},e.prototype.evaluate=function(e,t){var n=this,o={GET:function(t){var o=n.getSchemaValue(e,t);return o!==undefined&&null!==o?o:""},SUM:function(){for(var t=[],o=0;o<arguments.length;o++)t[o]=arguments[o];var r=0;return t.forEach(function(t){var o=n.getSchemaValue(e,t);o&&!isNaN(o)&&(r+=o)}),r}};return this.doEval(t,o)},e.prototype.evaluateCondition=function(e,t){var n={value:!1,error:null};if(t&&""!==t.trim()&&"false"!==t){if("true"===t)return n.value=!0,n;if(!e)return n;try{n.value=this.evaluate(e,t)}catch(o){n.error=o}!0!==n.value&&(n.value=!1)}return n},e.prototype.evaluateValue=function(e,t){var n={value:null,error:null};if(!e)return n;try{n.value=this.evaluate(e,t)}catch(o){return n.error=o,n}return Number.isNaN(n.value)||n.value===Infinity?n.value=null:n.value=S.deepCopy(n.value),n},e.prototype.getSchemaValue=function(e,t){return new Function("data","schema","return data."+t)(e,t)},e.prototype.setDependents=function(e,t,n){return Object.keys(e).forEach(function(o){var r=e[o];r.schema===t&&(r.dependents?-1===r.dependents.indexOf(n)&&r.dependents.push(n):r.dependents=[n])}),e},e}(),w=function(){function e(e,t,n){this.componentResolverService=t,this.formBuilder=n,this.ruleLogic=new I,this.injectedService=e}var o,r;return e.prototype.getFormAndData=function(e,t){var n=this;return t?this.injectedService.getForm(e).pipe(a.map(function(e){return e}),a.concatMap(function(e){return n.injectedService.getData(e.dataSource,t).pipe(a.map(function(t){return n.initialiseFormState(e,t)}))})):this.injectedService.getForm(e).pipe(a.map(function(e){return n.initialiseFormState(e,null)}))},e.prototype.saveForm=function(e,t){var n=S.deepCopy(t);return n.pages.forEach(function(e){e.sections.forEach(function(e){e.components.forEach(function(e){Object.keys(e).filter(function(t){return null===e[t]}).forEach(function(t){return delete e[t]}),delete e.value,e.rules&&(0===Object.keys(e.rules).length&&e.rules.constructor===Object?delete e.rules:Object.keys(e.rules).forEach(function(t){delete e.rules[t].value}))})})}),this.injectedService.saveForm(e,n).pipe(a.map(function(e){return e}))},e.prototype.saveData=function(e,t,n){return this.injectedService.saveData(e,t,n).pipe(a.map(function(e){return e}))},e.prototype.updateComponent=function(e,t,n){var o=this;void 0===n&&(n=!1);var r=S.resolveType(e.value,e.type);return t.data=S.setValue(e.schema,r,t.data),n&&this.resetComponentDependents(t),e.dependents&&e.dependents.forEach(function(e){t.components[e]=o.resolveComponentRules(t.components[e],t)}),Object.keys(t.components).forEach(function(n){var o=t.components[n];if(o.schema===e.schema)try{o.value=S.getValue(o.schema,t.data,o.type)}catch(r){throw r}}),t},e.prototype.initialiseFormState=function(e,t){var n=S.createReactiveFormStructure(e,!0,t),o={components:n.components,data:l({},n.data),form:e,formControls:n.formControls,reactiveForm:this.formBuilder.group(n.pageGroup)};return this.resolveConditions(o)},e.prototype.resetComponentDependents=function(e){var t=this;e.components&&(Object.keys(e.components).forEach(function(t){return delete e.components[t].dependents}),Object.keys(e.components).forEach(function(n){var o=e.components[n];o.rules&&Object.keys(o.rules).forEach(function(n){var r=o.rules[n];t.ruleLogic.resetDependancies(e,r.condition,o)})}),Object.keys(e.components).forEach(function(n){return e.components[n]=t.resolveComponentRules(e.components[n],e)}))},e.prototype.getData=function(e,t){return this.injectedService.getData(e,t).pipe(a.map(function(e){return e||{}}))},e.prototype.getForms=function(){return this.injectedService.getForms().pipe(a.map(function(e){return e}))},e.prototype.getForm=function(e){return this.injectedService.getForm(e).pipe(a.map(function(e){return e}))},e.prototype.resolveComponentRules=function(e,t){var n=this;if(e.rules){var o=!1;Object.keys(e.rules).forEach(function(r){var i=e.rules[r];if(i.condition){o=!0;var a=n.ruleLogic.evaluate(t.data,i.condition);if("value"===r){var s=S.resolveType(a,e.type);e.value!==s&&(e.value=s,t=n.updateComponent(e,t))}i.value=a}else delete e.rules[r]}),o&&(t.formControls[e.componentId]=S.setValidators(this.componentResolverService,e,t.formControls[e.componentId]))}return e},e.prototype.resolveConditions=function(e){var t=this;if(e.components){var n=e.components;Object.keys(n).forEach(function(o){return n[o]=t.resolveComponentRules(n[o],e)})}return e},e.ɵprov=t["ɵɵdefineInjectable"]({factory:function(){return new e(t["ɵɵinject"]("FormQLService"),t["ɵɵinject"](x),t["ɵɵinject"](n.FormBuilder))},token:e,providedIn:"root"}),e=u([t.Injectable({providedIn:"root"}),(o=0,r=t.Inject("FormQLService"),function(e,t){r(e,t,o)}),f("design:paramtypes",[Object,x,n.FormBuilder])],e)}(),E=function(){function o(e,t,n){this.formService=e,this.componentResolverService=t,this.formBuilder=n,this.data$=new i.Subject,this.formState$=new i.Subject,this.serviceDestroyed=new i.Subject}return o.prototype.ngOnDestroy=function(){this.data$.complete(),this.data$.unsubscribe()},o.prototype.getData=function(){return this.data$.asObservable()},o.prototype.getFormState=function(){return this.formState$.asObservable()},o.prototype.updateComponent=function(e){this.formState=this.formService.updateComponent(e,this.formState,!1),this.data$.next(l({},this.formState.data)),this.formState$.next(l({},this.formState))},o.prototype.setComponent=function(e){this.formState=this.formService.updateComponent(e,this.formState,!0),this.data$.next(l({},this.formState.data)),this.formState$.next(l({},this.formState))},o.prototype.getAll=function(e,t,n){var o=this;this.formService.getFormAndData(e,t).pipe(a.takeUntil(this.serviceDestroyed)).subscribe(function(e){o.formState=l({},e),o.formState.ids=t,o.formState.mode=n,o.data$.next(l({},e.data)),o.formState$.next(o.formState)},function(e){o.formState$.next({form:{error:S.formatError({title:"Error loading form or data",error:e})}})})},o.prototype.saveForm=function(){this.formService.saveForm(this.formState.form.formName,this.formState.form)},o.prototype.saveData=function(){return this.formService.saveData(this.formState.form.dataSource,this.formState.ids,this.formState.data)},o.prototype.validateForm=function(){S.validateForm(this.formState.reactiveForm)},o.prototype.isFormValid=function(){return this.formState.reactiveForm.valid},o.prototype.unsubscribeAll=function(){this.serviceDestroyed.next(),this.serviceDestroyed.complete()},o.prototype.reSetForm=function(t,n){switch(t){case e.InternalEventType.EditingForm:this.populateReactiveForm();break;case e.InternalEventType.DndFormChanged:var o=n.pageId,r=this.formState.form.pages.findIndex(function(e){return e.pageId===o});r>=0&&(this.formState.form.pages[r]=n),this.populateReactiveForm();break;case e.InternalEventType.RemoveComponent:var i=n.componentId;this.formState.form.pages.forEach(function(e){e.sections.forEach(function(e){var t=e.components.findIndex(function(e){return e.componentId===i});t>=0&&(e.components.splice(t,1),e.sectionId)})}),this.populateReactiveForm();break;case e.InternalEventType.RemoveSection:var a=n.sectionId;this.formState.form.pages.forEach(function(e){var t=e.sections.findIndex(function(e){return e.sectionId===a});t>=0&&(e.sections.splice(t,1),e.pageId)}),this.populateReactiveForm()}this.formState$.next(l({},this.formState))},o.prototype.populateReactiveForm=function(){var e=this;if(null!=this.formState.form.pages&&this.formState.form.pages.length>0){var t=S.createReactiveFormStructure(this.formState.form,!0,this.formState.data);this.formState.formControls=t.formControls,this.formState.form.pages.forEach(function(n){e.formState.reactiveForm.setControl(n.pageId,t.pageGroup[n.pageId])}),this.formState.form=S.updateTemplates(this.formState.form),null!=t.components&&Object.keys(t.components).length>0&&(this.formState.formControls=S.resetValidators(t.components,this.formState.formControls,this.componentResolverService)),this.formState=this.formService.resolveConditions(this.formState)}},o.ɵprov=t["ɵɵdefineInjectable"]({factory:function(){return new o(t["ɵɵinject"](w),t["ɵɵinject"](x),t["ɵɵinject"](n.FormBuilder))},token:o,providedIn:"root"}),o=u([t.Injectable({providedIn:"root"}),f("design:paramtypes",[w,x,n.FormBuilder])],o)}(),q=function(){function o(t,n){this.dndService=t,this.storeService=n,this.FormQLMode=e.FormQLMode,this.ContainerType=e.ContainerType,this.ComponentPositionType=e.GridPositionType}return o.prototype.ngOnInit=function(){this.sections=this.createSections(this.page)},o.prototype.synchroniseModel=function(t,n){var o={sourceObjectId:t.sourceObjectId,sourceWrapperId:t.sourceWrapperId,targetPositionId:n,targetWrapperId:this.page.pageId,targetIndexId:t.targetIndexId};this.page=this.dndService.synchronisePageModel(this.page,o),this.sections=this.createSections(this.page),this.storeService.reSetForm(e.InternalEventType.DndFormChanged,this.page)},o.prototype.createSections=function(e){var t={};return e&&e.sections&&e.sections.forEach(function(e){t&&t[e.position.id]?t[e.position.id].push(e):t[e.position.id]=[e]}),t},o.prototype.trackByFn=function(e,t){return t.id},o.prototype.resetSections=function(){this.sections&&(this.sections=this.createSections(this.page))},u([t.Input(),f("design:type",Object)],o.prototype,"page",void 0),u([t.Input(),f("design:type",n.FormGroup)],o.prototype,"reactivePage",void 0),u([t.Input(),f("design:type",Number)],o.prototype,"mode",void 0),o=u([t.Component({selector:"[formql-page-wrapper]",template:'\n <div class="fql-page-body">\n <ng-template formqlGdConfig\n [formqlGdConfigOf]="page.template.body" let-bodyitem let-i="index"\n (resetItems)="resetSections()">\n <div\n [ngClass]="{\'fql-page-container\': mode === FormQLMode.Edit}"\n [ngStyle]="bodyitem.style">\n <div formqlDndDrop\n [type]="ContainerType.Section"\n [mode]="mode"\n [ngClass]="{\'fql-page-container\': (mode === FormQLMode.Edit)}"\n (synchronise)="synchroniseModel($event, bodyitem.id)">\n <ng-container *ngFor="let section of sections[bodyitem.id]; trackBy: trackByFn">\n <ng-container *ngTemplateOutlet="templateRef; context: {section: section}">\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </div>\n <ng-template #templateRef let-section="section">\n <div [formGroup]="reactivePage">\n <div formql-section-wrapper\n [page]="page"\n [section]="section"\n [formGroupName]="section.sectionId"\n [reactiveSection]="reactivePage.controls[section.sectionId]"\n [mode]="mode">\n </div>\n </div>\n </ng-template>',providers:[b],styles:['.fql-bundle-field-input{width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-checkbox-input{cursor:pointer;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-label-required:after{content:" *";color:red}.fql-bundle-field-radio{cursor:pointer}.fql-error-message{text-align:center;padding:20px}.fql-dnd-container-separator{box-shadow:0 -2px 0 #00f}.fql-dnd-container-drop-area{outline:dashed 3px}.fql-page-body{display:-ms-grid;display:grid;width:100%;min-height:30px}.fql-page-container{display:table;height:100%;width:100%;min-height:15px}.fql-page-container:hover{outline:solid 2px}']}),f("design:paramtypes",[b,E])],o)}(),F=function(){function e(){this.event=new t.EventEmitter}return e.prototype.send=function(e,t){var n={event:t,eventType:e};this.event.emit(n)},e.ɵprov=t["ɵɵdefineInjectable"]({factory:function(){return new e},token:e,providedIn:"root"}),u([t.Output(),f("design:type",t.EventEmitter)],e.prototype,"event",void 0),e=u([t.Directive(),t.Injectable({providedIn:"root"})],e)}(),O=function(){function o(t,n,o,r,i){this.internalEventHandlerService=t,this.componentResolverService=n,this.viewContainerRef=o,this.dndService=r,this.storeService=i,this.FormQLMode=e.FormQLMode,this.ContainerType=e.ContainerType,this.ComponentPositionType=e.GridPositionType}return o.prototype.ngOnInit=function(){if(this.components=this.createComponents(this.section),this.mode===e.FormQLMode.Edit){var t=this.viewContainerRef.createComponent(this.componentResolverService.resolveComponent("TooltipComponent"));t.instance.wrapper=this.wrapper,t.instance.type=e.ContainerType.Section,t.instance.object=this.section,this.tooltip.insert(t.hostView)}},o.prototype.editField=function(){this.mode===e.FormQLMode.Edit&&this.internalEventHandlerService.send(e.InternalEventType.EditingSection,this.section)},o.prototype.synchroniseModel=function(t,n,o){var r={sourceObjectId:t.sourceObjectId,sourceWrapperId:t.sourceWrapperId,targetPositionId:n,targetWrapperId:this.section.sectionId,targetIndexId:t.targetIndexId,positionType:o};this.page=this.dndService.synchroniseSectionModel(this.page,r),this.storeService.reSetForm(e.InternalEventType.DndFormChanged,this.page)},o.prototype.trackByFn=function(e,t){return t.id},o.prototype.createComponents=function(e){var t={};return e&&e.components&&e.components.sort(function(e,t){return e.position.index-t.position.index}),e.components.forEach(function(e){t&&t[e.position.type+"_"+e.position.id]?t[e.position.type+"_"+e.position.id].push(e):t[e.position.type+"_"+e.position.id]=[e]}),t},u([t.ViewChild("wrapper",{read:t.ViewContainerRef,"static":!0}),f("design:type",t.ViewContainerRef)],o.prototype,"wrapper",void 0),u([t.ViewChild("tooltip",{read:t.ViewContainerRef,"static":!0}),f("design:type",t.ViewContainerRef)],o.prototype,"tooltip",void 0),u([t.Input(),f("design:type",Object)],o.prototype,"section",void 0),u([t.Input(),f("design:type",n.FormGroup)],o.prototype,"reactiveSection",void 0),u([t.Input(),f("design:type",Object)],o.prototype,"page",void 0),u([t.Input(),f("design:type",Number)],o.prototype,"mode",void 0),o=u([t.Component({selector:"[formql-section-wrapper]",template:'\n <div #wrapper formqlDnd\n [sourceObjectId]="section.sectionId"\n [attr.sectionId]="section.sectionId"\n [sourceWrapperId]="page.pageId"\n [type]="ContainerType.Section"\n [mode]="mode"\n [ngClass]="[(mode === FormQLMode.Edit) ? \'fql-section-wrapper-edit\' : \'fql-section-wrapper\']">\n <div class="fql-section-tooltip">\n <ng-container #tooltip></ng-container>\n </div>\n <div *ngIf="section.template && !section.template.header.hidden" class="fql-section-header">\n <ng-template formqlGdConfig\n [formqlGdConfigOf]="section.template.header" let-headeritem let-i="index">\n <ng-container *ngTemplateOutlet="templateRef;\n context: {\n templateitem: headeritem,\n positionType: ComponentPositionType.Header\n }">\n </ng-container>\n </ng-template>\n </div>\n <div *ngIf="section.template && !section.template.body.hidden" class="fql-section-body">\n <ng-template formqlGdConfig\n [formqlGdConfigOf]="section.template.body" let-bodyitem let-i="index">\n <ng-container *ngTemplateOutlet="templateRef;\n context: {\n templateitem: bodyitem,\n positionType: ComponentPositionType.Body\n }">\n </ng-container>\n </ng-template>\n </div>\n </div>\n <ng-template #templateRef let-templateitem="templateitem" let-positionType="positionType">\n <div [ngStyle]="templateitem.style">\n <div formqlDndDrop\n *ngIf="(mode === FormQLMode.Edit)"\n [type]="ContainerType.Component"\n class="fql-section-container"\n (synchronise)="synchroniseModel($event, templateitem.id, positionType)">\n <ng-container *ngFor="let component of components[positionType + \'_\' + templateitem.id]; trackBy: trackByFn">\n <div formql-component-container\n [ngClass]="{\'fql-component-container-hidden\': component.rules?.hidden?.value}"\n [component]="component"\n [sectionId]="section.sectionId"\n [value]="component.value"\n [reactiveSection]="reactiveSection"\n [mode]="mode"></div>\n </ng-container>\n </div>\n <div *ngIf="mode !== FormQLMode.Edit">\n <ng-container *ngFor="let component of components[positionType + \'_\' + templateitem.id]; trackBy: trackByFn">\n <div formql-component-container *ngIf="!component.rules?.hidden?.value"\n [component]="component"\n [sectionId]="section.sectionId"\n [value]="component.value"\n [reactiveSection]="reactiveSection"\n [mode]="mode"></div>\n </ng-container>\n </div>\n </div>\n </ng-template>\n ',styles:['.fql-bundle-field-input{width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-checkbox-input{cursor:pointer;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-label-required:after{content:" *";color:red}.fql-bundle-field-radio{cursor:pointer}.fql-error-message{text-align:center;padding:20px}.fql-dnd-container-separator{box-shadow:0 -2px 0 #00f}.fql-dnd-container-drop-area{outline:dashed 3px}.fql-section-wrapper,.fql-section-wrapper-edit{display:-ms-grid;display:grid;padding:1px;-ms-grid-columns:100%;grid-template-columns:100%;-ms-grid-rows:auto auto;grid-template-rows:auto auto;position:relative}.fql-section-wrapper-edit:hover .fql-section-tooltip{opacity:1}.fql-section-tooltip{opacity:0;display:block;position:absolute;right:0;z-index:1;transition:opacity .3s}.fql-section-header{display:-ms-grid;display:grid;min-height:30px;-ms-grid-row:1;-ms-grid-column:1}.fql-section-body{display:-ms-grid;display:grid;min-height:30px;-ms-grid-row:2;-ms-grid-column:1}.fql-section-container{display:table;height:100%;width:100%;min-height:15px}.fql-section-container:hover{outline:solid 1px}.fql-component-container-hidden{background-color:#ffecf2}']}),f("design:paramtypes",[F,x,t.ViewContainerRef,b,E])],o)}(),j=function(){function o(t,n,o,r){this.componentResolverService=t,this.viewContainerRef=n,this.eventHandlerService=o,this.storeService=r,this.FormQLMode=e.FormQLMode,this.ContainerType=e.ContainerType}return Object.defineProperty(o.prototype,"value",{set:function(e){this.reactiveSection&&this.component&&this.reactiveSection.controls[this.component.componentId].value!==e&&this.reactiveSection.controls[this.component.componentId].setValue(e)},enumerable:!0,configurable:!0}),o.prototype.ngOnInit=function(){var t=this,n=this.viewContainerRef.createComponent(this.componentResolverService.resolveComponent(this.component.componentName));if(n.instance.field=this.component,n.instance.formControl=this.reactiveSection.controls[this.component.componentId],this.content.insert(n.hostView),this.formSubscription$=this.reactiveSection.controls[this.component.componentId].valueChanges.subscribe(function(e){t.component.value!==e&&(t.component.value=e,t.storeService.updateComponent(t.component))}),this.mode===e.FormQLMode.Edit){var o=this.viewContainerRef.createComponent(this.componentResolverService.resolveComponent("TooltipComponent"));o.instance.wrapper=this.wrapper,o.instance.type=e.ContainerType.Component,o.instance.object=this.component,this.tooltip.insert(o.hostView)}},o.prototype.editField=function(){this.mode===e.FormQLMode.Edit&&this.eventHandlerService.send(e.InternalEventType.EditingComponent,this.component)},o.prototype.ngOnDestroy=function(){this.formSubscription$.unsubscribe()},u([t.ViewChild("content",{read:t.ViewContainerRef,"static":!0}),f("design:type",t.ViewContainerRef)],o.prototype,"content",void 0),u([t.ViewChild("wrapper",{read:t.ViewContainerRef,"static":!0}),f("design:type",t.ViewContainerRef)],o.prototype,"wrapper",void 0),u([t.ViewChild("tooltip",{read:t.ViewContainerRef,"static":!0}),f("design:type",t.ViewContainerRef)],o.prototype,"tooltip",void 0),u([t.Input(),f("design:type",Object)],o.prototype,"component",void 0),u([t.Input(),f("design:type",n.FormGroup)],o.prototype,"reactiveSection",void 0),u([t.Input(),f("design:type",String)],o.prototype,"sectionId",void 0),u([t.Input(),f("design:type",Object),f("design:paramtypes",[Object])],o.prototype,"value",null),u([t.Input(),f("design:type",Number)],o.prototype,"mode",void 0),o=u([t.Component({selector:"[formql-component-container]",template:'\n <div #wrapper formqlDnd\n [sourceObjectId]="component.componentId"\n [attr.componentId]="component.componentId"\n [sourceWrapperId]="sectionId"\n [type]="ContainerType.Component"\n [mode]="mode"\n [ngClass]="{\'fql-component-container-wrapper\': (mode === FormQLMode.Edit) }">\n <div class="fql-component-tooltip">\n <ng-container #tooltip></ng-container>\n </div>\n <div class="fql-component-container" [ngStyle]="component.style">\n <ng-container #content></ng-container>\n </div>\n </div>',changeDetection:t.ChangeDetectionStrategy.OnPush,styles:['.fql-bundle-field-input{width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-checkbox-input{cursor:pointer;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-label-required:after{content:" *";color:red}.fql-bundle-field-radio{cursor:pointer}.fql-error-message{text-align:center;padding:20px}.fql-dnd-container-separator{box-shadow:0 -2px 0 #00f}.fql-dnd-container-drop-area{outline:dashed 3px}.fql-component-container{padding:10px}.fql-component-container-wrapper{position:relative;border:1px solid transparent;transition:border .3s ease-in-out}.fql-component-container-wrapper:hover .fql-component-tooltip{opacity:1;transition:opacity .3s ease-in-out}.fql-component-container-wrapper:hover{border:1px solid;transition:box-shadow .3s ease-in-out,border .3s ease-in-out}.fql-component-tooltip{opacity:0;display:block;position:absolute;left:50%;z-index:1;transition:opacity .3s ease-in-out}']}),f("design:paramtypes",[x,t.ViewContainerRef,F,E])],o)}(),R=function(){function e(e,n,o,r){this.view=e,this.el=n,this.renderer=o,this.template=r,this.resetItems=new t.EventEmitter}return Object.defineProperty(e.prototype,"formqlGdConfigOf",{set:function(e){var t=this;this.view.clear(),this.setParentAttributes(e);var n=this.getGridStyleList(e);n&&(this.resetItems.emit(!0),n.forEach(function(e,n){t.view.createEmbeddedView(t.template,{$implicit:e,index:n})}))},enumerable:!0,configurable:!0}),e.prototype.getGridStyleList=function(e){if(e){var t=[],n=e.gridTemplateAreas.split('" "'),o={};e.gridTemplateColumns&&(o["grid-template-columns"]=e.gridTemplateColumns,o["-ms-grid-columns"]=o["grid-template-columns"]),e.gridTemplateRows&&(o["grid-template-rows"]=e.gridTemplateRows,o["-ms-grid-rows"]=o["grid-template-rows"]);for(var r=[],i=0;i<n.length;i++)for(var a=n[i].split(" "),s=function(e){var n=a[e].replace(/\"/g,""),o=t.find(function(e){return e.id===n});o?o.style["-ms-grid-row"]-1===i?o.style["-ms-grid-column-span"]++:o.style["-ms-grid-row-span"]++:(r.push(n),t.push({id:n,style:{"grid-area":n,"-ms-grid-row":i+1,"-ms-grid-row-span":1,"-ms-grid-column":e+1,"-ms-grid-column-span":1}}))},p=0;p<a.length;p++)s(p);return t}return null},e.prototype.setParentAttributes=function(e){var t=this.el.nativeElement.parentElement;t||(t=this.el.nativeElement.parentNode);var n="";if(e.gridTemplateAreas&&(n+="grid-template-areas:"+e.gridTemplateAreas+";"),e.gridTemplateColumns&&(n+="grid-template-columns:"+e.gridTemplateColumns+";",n+="-ms-grid-columns:"+e.gridTemplateColumns+";"),e.gridTemplateRows&&(n+="grid-template-rows:"+e.gridTemplateRows+";",n+="-ms-grid-rows:"+e.gridTemplateRows+";"),e.style)for(var o=Object.keys(e.style),r=0;r<o.length;r++)n+=o[r]+":"+e.style[o[r]]+";";n&&this.renderer.setAttribute(t,"style",n)},u([t.Output(),f("design:type",t.EventEmitter)],e.prototype,"resetItems",void 0),u([t.Input(),f("design:type",Object),f("design:paramtypes",[Object])],e.prototype,"formqlGdConfigOf",null),e=u([t.Directive({selector:"[formqlGdConfig][formqlGdConfigOf]"}),f("design:paramtypes",[t.ViewContainerRef,t.ElementRef,t.Renderer2,t.TemplateRef])],e)}(),T=function(){function n(e,n){this.view=e,this.renderer=n,this.synchronise=new t.EventEmitter}return n.prototype.onDragStart=function(t){if(this.mode!==e.FormQLMode.View&&("true"===this.view.element.nativeElement.getAttribute("draggable")&&t&&t.dataTransfer&&this.sourceObjectId)){t.dataTransfer.effectAllowed="move";var n=this.sourceObjectId+"#"+this.sourceWrapperId;t.dataTransfer.setData("Text",n);try{t.dataTransfer.setData(this.type.toString(),"")}catch(o){t.dataTransfer.types.item[1]=this.type.toString()}}},n.prototype.onDragEnd=function(t){this.mode!==e.FormQLMode.View&&this.renderer.setAttribute(this.view.element.nativeElement,"draggable","false")},u([t.Input(),f("design:type",String)],n.prototype,"sourceObjectId",void 0),u([t.Input(),f("design:type",String)],n.prototype,"sourceWrapperId",void 0),u([t.Input(),f("design:type",Number)],n.prototype,"type",void 0),u([t.Input(),f("design:type",Number)],n.prototype,"mode",void 0),u([t.Output(),f("design:type",t.EventEmitter)],n.prototype,"synchronise",void 0),u([t.HostListener("dragstart",["$event"]),f("design:type",Function),f("design:paramtypes",[Object]),f("design:returntype",void 0)],n.prototype,"onDragStart",null),u([t.HostListener("dragend",["$event"]),f("design:type",Function),f("design:paramtypes",[Object]),f("design:returntype",void 0)],n.prototype,"onDragEnd",null),n=u([t.Directive({selector:"[formqlDnd]"}),f("design:paramtypes",[t.ViewContainerRef,t.Renderer2])],n)}(),k=function(){function o(n){this.storeService=n,this.mode=e.FormQLMode.View,this.formLoaded=new t.EventEmitter,this.formSaveStart=new t.EventEmitter,this.formSaveEnd=new t.EventEmitter,this.formError=new t.EventEmitter,this.data$=this.storeService.getData(),this.formState$=this.storeService.getFormState(),this.componentDestroyed=new i.Subject}return o.prototype.ngOnInit=function(){var e=this;this.data$.pipe(a.takeUntil(this.componentDestroyed)).subscribe(function(t){return e.data=t}),this.formState$.pipe(a.takeUntil(this.componentDestroyed)).subscribe(function(t){t&&(e.formState=l({},t),t.form&&(e.form=t.form))}),this.storeService.getAll(this.formName,this.ids,this.mode)},o.prototype.resetForm=function(t){this.storeService.reSetForm(e.InternalEventType.EditingForm,t)},o.prototype.refreshComponent=function(e){this.storeService.setComponent(e)},o.prototype.saveForm=function(){this.storeService.saveForm()},o.prototype.ngOnDestroy=function(){this.componentDestroyed.next(),this.componentDestroyed.complete()},o.componentName="FormQLComponent",u([t.Input(),f("design:type",String)],o.prototype,"formName",void 0),u([t.Input(),f("design:type",Array)],o.prototype,"ids",void 0),u([t.Input(),f("design:type",Number)],o.prototype,"mode",void 0),u([t.Input(),f("design:type",n.FormGroup)],o.prototype,"reactiveForm",void 0),u([t.Input(),f("design:type",Object)],o.prototype,"customMetadata",void 0),u([t.Output(),f("design:type",t.EventEmitter)],o.prototype,"formLoaded",void 0),u([t.Output(),f("design:type",t.EventEmitter)],o.prototype,"formSaveStart",void 0),u([t.Output(),f("design:type",t.EventEmitter)],o.prototype,"formSaveEnd",void 0),u([t.Output(),f("design:type",t.EventEmitter)],o.prototype,"formError",void 0),u([t.ViewChild("target",{read:t.ViewContainerRef,"static":!0}),f("design:type",t.ViewContainerRef)],o.prototype,"target",void 0),o=u([t.Component({selector:"formql",template:'<div *ngIf="error" class="fql-error-message">\n <h4>{{error?.title}}</h4>\n <span>{{error?.message}}</span>\n </div>\n <formql-layout-loader\n [formState]="formState"\n (formSaveStart)="formSaveStart.emit(true)"\n (formSaveEnd)="formSaveEnd.emit(true)"\n (formError)="formError.emit(true)">\n </formql-layout-loader>',styles:['.fql-bundle-field-input{width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-checkbox-input{cursor:pointer;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-label-required:after{content:" *";color:red}.fql-bundle-field-radio{cursor:pointer}.fql-error-message{text-align:center;padding:20px}.fql-dnd-container-separator{box-shadow:0 -2px 0 #00f}.fql-dnd-container-drop-area{outline:dashed 3px}']}),f("design:paramtypes",[E])],o)}(),D=function(){function e(){this.action=new t.EventEmitter}return e.prototype.send=function(e){this.action.emit(e)},e.ɵprov=t["ɵɵdefineInjectable"]({factory:function(){return new e},token:e,providedIn:"root"}),u([t.Output(),f("design:type",t.EventEmitter)],e.prototype,"action",void 0),e=u([t.Injectable({providedIn:"root"})],e)}();(C=e.FormActionType||(e.FormActionType={})).Validate="validate",C.ValidateAndSave="validateAndSave",C.Save="save",C.Custom="custom";var V=function(){function o(e){this.actionHandlerService=e,this._propagateChange=function(e){}}var r;return r=o,Object.defineProperty(o.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._propagateChange(this._value)},enumerable:!0,configurable:!0}),o.prototype.writeValue=function(e){e&&(this._value=e)},o.prototype.registerOnChange=function(e){this._propagateChange=e},o.prototype.registerOnTouched=function(e){},o.prototype.onClick=function(){this.field.action&&this.actionHandlerService.send(this.field.action)},o.componentName="FormQLButtonComponent",o.formQLComponent=!0,o.validators=[],o.actions=[{key:e.FormActionType.Save},{key:e.FormActionType.Validate},{key:e.FormActionType.ValidateAndSave},{key:e.FormActionType.Custom}],u([t.Input(),f("design:type",Object)],o.prototype,"field",void 0),u([t.Input(),f("design:type",n.FormControl)],o.prototype,"formControl",void 0),o=r=u([t.Component({selector:"formql-button",template:'<button style="cursor: pointer" (click)="onClick()"\n [type]="field.type"\n [disabled]="formControl.disabled ||\n (field.type === \'submit\' &&\n this.formControl.parent.parent.parent.invalid) ? true : null">{{field.label}}</button>',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:t.forwardRef(function(){return r}),multi:!0},{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return r}),multi:!0}]}),f("design:paramtypes",[D])],o)}(),A=function(){function e(){this._propagateChange=function(e){}}var o;return o=e,Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._propagateChange(this._value)},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){e&&(this._value=e)},e.prototype.registerOnChange=function(e){this._propagateChange=e},e.prototype.registerOnTouched=function(e){},e.componentName="FormQLLabelComponent",e.formQLComponent=!0,e.validators=[],u([t.Input(),f("design:type",Object)],e.prototype,"field",void 0),u([t.Input(),f("design:type",n.FormControl)],e.prototype,"formControl",void 0),e=o=u([t.Component({selector:"formql-label",template:'<div *ngIf="field">\n <label>{{field.label}}</label>\n </div>',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:t.forwardRef(function(){return o}),multi:!0},{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return o}),multi:!0}]}),f("design:paramtypes",[])],e)}(),L=function(){function e(){}var o;return o=e,e.prototype.ngOnInit=function(){if(this.field&&this.field.textMask&&this.field.type)switch(this.field.type){case"number":this.mask=p.createNumberMask(JSON.parse(this.field.textMask));break;case"date":this.mask=p.createAutoCorrectedDatePipe(this.field.textMask);break;case"text":this.mask=S.maskToArray(this.field.textMask)}},Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){e&&(this._value=e)},e.prototype.registerOnChange=function(e){},e.prototype.registerOnTouched=function(e){},e.componentName="FormQLInputComponent",e.formQLComponent=!0,e.validators=[{name:"Required",validator:n.Validators.required,key:"required"}],u([t.Input(),f("design:type",Object)],e.prototype,"field",void 0),u([t.Input(),f("design:type",n.FormControl)],e.prototype,"formControl",void 0),e=o=u([t.Component({selector:"formql-input",template:'<div *ngIf="formControl!=null">\n <label [attr.for]="field.componentId"\n [ngClass]="{\'fql-bundle-label-required\': field.rules?.required?.value}">{{field.label}}</label>\n <div>\n <input *ngIf="!mask" [id]="field.componentId" [type]="field.type"\n [formControl]="formControl" class="fql-bundle-field-input" [tabIndex]="field.tabIndex"\n [attr.disabled]="formControl.disabled ? \'\' : null">\n <input *ngIf="mask" [textMask]="{ mask: mask, guide: false}" [id]="field.componentId" type="text"\n [formControl]="formControl"\n class="fql-bundle-field-input" [tabIndex]="field.tabIndex"\n [attr.disabled]="formControl.disabled ? \'\' : null">\n </div>\n </div>',providers:[{provide:n.NG_VALUE_ACCESSOR,useExisting:t.forwardRef(function(){return o}),multi:!0},{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return o}),multi:!0}],styles:['.fql-bundle-field-input{width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-checkbox-input{cursor:pointer;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-label-required:after{content:" *";color:red}.fql-bundle-field-radio{cursor:pointer}.fql-error-message{text-align:center;padding:20px}.fql-dnd-container-separator{box-shadow:0 -2px 0 #00f}.fql-dnd-container-drop-area{outline:dashed 3px}']})],e)}(),_=function(){function n(e,n){this.view=e,this.renderer=n,this.synchronise=new t.EventEmitter,this.dropAreaClass="fql-dnd-container-drop-area",this.dropSeparatorBorderClass="fql-dnd-container-separator"}return n.prototype.onDrop=function(t){if(this.mode!==e.FormQLMode.View&&t&&(t.dataTransfer.types[1]===this.type.toString()||t.dataTransfer.types.item&&t.dataTransfer.types.item[1]&&t.dataTransfer.types.item[1]===this.type.toString())){t.stopPropagation(),t.preventDefault();var n=t.dataTransfer.getData("Text").split("#"),o=null,r=this.getPositionElement(t.srcElement);r&&(o=this.getPositionAttribute(r)),this.synchronise.emit({sourceObjectId:n[0],sourceWrapperId:n[1],targetIndexId:o})}},n.prototype.onDragOver=function(t){if(this.mode!==e.FormQLMode.View&&t&&(t.dataTransfer.types[1]===this.type.toString()||t.dataTransfer.types.item&&t.dataTransfer.types.item[1]&&t.dataTransfer.types.item[1]===this.type.toString())){t.stopPropagation(),t.preventDefault(),t.dataTransfer.dropEffect="move";var n=this.view.element.nativeElement,o=n.getAttribute("class")?n.getAttribute("class").trim():"";if(-1===o.indexOf(this.dropAreaClass)){var r=o+" "+this.dropAreaClass;this.renderer.setAttribute(n,"class",r)}var i=this.getPositionElement(t.srcElement);if(i){var a=i.getAttribute("class")?i.getAttribute("class").trim():"";if(-1===a.indexOf(this.dropSeparatorBorderClass)){var s=a+" "+this.dropSeparatorBorderClass;this.renderer.setAttribute(i,"class",s)}}}},n.prototype.onDragLeave=function(t){if(this.mode!==e.FormQLMode.View&&t){var n=this.view.element.nativeElement,o=n.getAttribute("class")?n.getAttribute("class"):"";-1!==o.indexOf(this.dropAreaClass)&&this.renderer.setAttribute(n,"class",o.replace(this.dropAreaClass,""));var r=this.getPositionElement(t.srcElement);if(r){var i=r.getAttribute("class")?r.getAttribute("class"):"";-1!==i.indexOf(this.dropSeparatorBorderClass)&&this.renderer.setAttribute(r,"class",i.replace(this.dropSeparatorBorderClass,""))}}},n.prototype.getPositionElement=function(t){var n="fql-component-container-wrapper";this.type===e.ContainerType.Section&&(n="fql-section-wrapper-edit");for(var o=t,r=0;o.className&&-1===o.className.indexOf(n)&&r<10;)o=o.parentElement,r++;return o.className&&-1!==o.className.indexOf(n)?o:null},n.prototype.getPositionAttribute=function(t){var n="componentId";return this.type===e.ContainerType.Section&&(n="sectionId"),t.getAttribute(n)},u([t.Input(),f("design:type",Number)],n.prototype,"type",void 0),u([t.Input(),f("design:type",Number)],n.prototype,"positionType",void 0),u([t.Input(),f("design:type