-{"version":3,"sources":["webpack://angular-material-form-builder/webpack/universalModuleDefinition","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.directive.js","webpack://angular-material-form-builder/./src/lib/index.module.js","webpack://angular-material-form-builder/./src/lib/main/main.controller.js","webpack://angular-material-form-builder/./src/lib/utils/utils.service.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.tpl.html","webpack://angular-material-form-builder/webpack/bootstrap","webpack://angular-material-form-builder/webpack/startup","webpack://angular-material-form-builder/webpack/runtime/define property getters","webpack://angular-material-form-builder/webpack/runtime/hasOwnProperty shorthand","webpack://angular-material-form-builder/webpack/runtime/make namespace object"],"names":["root","factory","exports","module","define","amd","self","AgreementItemCtrl","Utils","$element","this","Element","item","extend","config","maxSelections","options","value","selected","AgreementItem","constructor","restrict","scope","controller","controllerAs","bindToController","AgreementViewCtrl","$scope","Scope","formItem","init","selectedOptions","_getSelectedOptions","disableOptions","isValid","_updateView","_updateValidity","isPreview","_enableWatchers","toggleSelectedOption","filter","option","length","required","form","$setValidity","$watch","newVal","undefined","AgreementView","$timeout","template","AgreementViewTemplate","link","element","attrs","ctrl","CheckboxesItemCtrl","deleteOption","index","splice","addOption","push","setTimeout","find","focus","CheckboxesItem","CheckboxesItemTemplate","CheckboxesViewCtrl","CheckboxesView","CheckboxesViewTemplate","DEFAULT_TITLE","upload","agreement","input","chooseFromList","label","multipleChoices","matrix","checkboxes","textarea","FormItemCtrl","$attrs","Attrs","templates","type","props","title","helpText","deleteClicked","onDelete","_getItemTemplate","FormItem","$compile","onUp","onDown","FormItemTemplate","el","FormItemsContainerCtrl","items","delete","up","prevItem","down","nextItem","FormItemsContainer","FormItemsContainerTemplate","FormViewCtrl","FormView","FormViewTemplate","InputItemCtrl","InputItem","InputItemTemplate","InputViewCtrl","InputView","InputViewTemplate","elem","LabelItemCtrl","LabelItem","LabelItemTemplate","LabelViewCtrl","LabelView","LabelViewTemplate","MatrixItemCtrl","$document","RowContainer","angular","querySelector","ColumnContainer","rows","columns","deleteRow","addRow","bind","deleteColumn","addColumn","MatrixItem","MatrixItemTemplate","MatrixViewCtrl","valid","some","row","$watchGroup","MatrixView","MatrixViewTemplate","RadioButtonItemCtrl","RadioButtonItem","RadioButtonTemplate","RadioButtonViewCtrl","RadioButtonView","RadioButtonViewTemplate","SelectItemCtrl","SelectItem","SelectTemplate","SelectViewCtrl","SelectView","SelectViewTemplate","TextareaItemCtrl","TextareaItem","TextareaItemTemplate","TextareaViewCtrl","TextareaView","TextareaViewTemplate","UploadItemCtrl","UploadItem","UploadItemTemplate","UploadViewCtrl","isMultiple","showAllowed","size","uploadFileButtonLabel","_updateMultiple","multipleUpload","attr","removeAttr","_updateAccept","showAccept","setAttribute","accept","removeAttribute","removeItem","UploadView","UploadViewTemplate","button","css","on","trigger","click","e","$apply","files","Array","from","target","maxSizeMB","file","text","sizeErrMessage","map","name","service","MainController","directive","addItem","dest","src","Object","keys","reduce","result","key","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag"],"mappings":"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","file":"angular-material-form-builder.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-material-form-builder\"] = factory();\n\telse\n\t\troot[\"angular-material-form-builder\"] = factory();\n})(self, function() {\nreturn ","/**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\nfunction AgreementItemCtrl(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {\n maxSelections: null,\n },\n options: [\n {\n value: '',\n selected: false,\n },\n ],\n })\n}\n\nexport { AgreementItemCtrl }\n","import { AgreementItemCtrl } from './agreement-item.controller'\n// import AgreementItemTemplate from './agreement-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass AgreementItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.scope = {\n item: '=',\n }\n this.controller = AgreementItemCtrl\n this.controllerAs = 'Agreement'\n this.bindToController = true\n }\n}\n\nexport { AgreementItem }\n","class AgreementViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, Utils) {\n this.Scope = $scope\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem || {}, {\n config: {},\n options: [\n {\n value: '',\n selected: false,\n },\n ],\n })\n\n this.selectedOptions = this._getSelectedOptions()\n this.disableOptions = false\n\n this.isValid = true\n this._updateView()\n this._updateValidity()\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n\n toggleSelectedOption() {\n this.selectedOptions = this._getSelectedOptions()\n this._updateView()\n this._updateValidity()\n }\n\n _getSelectedOptions() {\n return this.formItem.options.filter((option) => {\n return option.selected\n })\n }\n\n _updateView() {\n if (!this.formItem.config.maxSelections) {\n this.disableOptions = false\n } else if (\n this.selectedOptions.length === this.formItem.config.maxSelections\n ) {\n this.disableOptions = true\n } else {\n this.disableOptions = false\n }\n }\n\n _updateValidity() {\n if (this.formItem.config.required) {\n this.isValid = this.selectedOptions.length > 0\n } else {\n this.isValid = true\n }\n\n this.form.$setValidity('minSelections', this.isValid)\n }\n\n _enableWatchers() {\n this.Scope.$watch('AgreementView.formItem.config.required', (newVal) => {\n if (newVal !== undefined) {\n this._updateView()\n this._updateValidity()\n }\n })\n }\n}\n\nexport { AgreementViewCtrl }\n","import { AgreementViewCtrl } from './agreement-view.controller'\nimport AgreementViewTemplate from './agreement-view.tpl.html'\n\nclass AgreementView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.template = AgreementViewTemplate\n this.restrict = 'E'\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = AgreementViewCtrl\n this.controllerAs = 'AgreementView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {AgreementViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { AgreementView }\n","class CheckboxesItemCtrl {\n /**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {\n maxSelections: null,\n },\n options: [\n {\n value: '',\n selected: false,\n },\n ],\n })\n }\n\n deleteOption(index) {\n this.item.options.splice(index, 1)\n }\n\n addOption() {\n this.item.options.push({\n value: '',\n selected: false,\n })\n // Focus new element\n setTimeout(() => {\n const options = this.Element.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { CheckboxesItemCtrl }\n","import CheckboxesItemTemplate from './checkboxes-item.tpl.html'\nimport { CheckboxesItemCtrl } from './checkboxes-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nfunction CheckboxesItem() {\n const directive = {\n restrict: 'E',\n template: CheckboxesItemTemplate,\n scope: {\n item: '=',\n },\n controller: CheckboxesItemCtrl,\n controllerAs: 'Checkboxes',\n bindToController: true,\n }\n\n return directive\n}\n\nexport { CheckboxesItem }\n","class CheckboxesViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, Utils) {\n this.Scope = $scope\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem || {}, {\n config: {},\n options: [],\n })\n\n this.selectedOptions = this._getSelectedOptions()\n this.disableOptions = false\n\n this.isValid = true\n this._updateView()\n this._updateValidity()\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n\n toggleSelectedOption() {\n this.selectedOptions = this._getSelectedOptions()\n this._updateView()\n this._updateValidity()\n }\n\n _getSelectedOptions() {\n return this.formItem.options.filter((option) => {\n return option.selected\n })\n }\n\n _updateView() {\n if (!this.formItem.config.maxSelections) {\n this.disableOptions = false\n } else if (\n this.selectedOptions.length === this.formItem.config.maxSelections\n ) {\n this.disableOptions = true\n } else {\n this.disableOptions = false\n }\n }\n\n _updateValidity() {\n if (this.formItem.config.required) {\n this.isValid = this.selectedOptions.length > 0\n } else {\n this.isValid = true\n }\n\n this.form.$setValidity('minSelections', this.isValid)\n }\n\n _enableWatchers() {\n this.Scope.$watch('CheckboxesView.formItem.config.required', (newVal) => {\n if (newVal !== undefined) {\n this._updateView()\n this._updateValidity()\n }\n })\n }\n}\n\nexport { CheckboxesViewCtrl }\n","import CheckboxesViewTemplate from './checkboxes-view.tpl.html'\nimport { CheckboxesViewCtrl } from './checkboxes-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass CheckboxesView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = CheckboxesViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = CheckboxesViewCtrl\n this.controllerAs = 'CheckboxesView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {CheckboxesViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { CheckboxesView }\n","const DEFAULT_TITLE = {\n upload: 'Attachment',\n agreement: 'Agreement',\n input: 'Field',\n chooseFromList: 'Select',\n label: 'Label',\n multipleChoices: 'Choice',\n matrix: 'Matrix',\n checkboxes: 'Options',\n textarea: 'Text',\n}\n\nclass FormItemCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {ng.IAttributes} $attrs\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, $attrs, Utils) {\n this.Attrs = $attrs\n this.Utils = Utils\n this.templates = {\n upload: '<upload-item item=\"FormItem.item\"></upload-item>',\n agreement: '<agreement-item item=\"FormItem.item\"></agreement-item>',\n input: '<input-item item=\"FormItem.item\"></input-item>',\n chooseFromList:\n '<bet-form-choose-from-list item=\"FormItem.item\"></bet-form-choose-from-list>',\n label: '<label-item item=\"FormItem.item\"></label-item>',\n multipleChoices:\n '<radio-button-item item=\"FormItem.item\"></radio-button-item>',\n matrix: '<matrix-item item=\"FormItem.item\"></matrix-item>',\n checkboxes: '<checkboxes-item item=\"FormItem.item\"></checkboxes-item>',\n textarea: '<textarea-item item=\"FormItem.item\"></textarea-item>',\n }\n this.item = {}\n this.scope = $scope\n }\n\n init() {\n this.item = this.Utils.extend(this.item || {}, {\n type: this.Attrs.type,\n props: {\n title: DEFAULT_TITLE[this.Attrs.type],\n helpText: '',\n },\n config: {\n required: false,\n },\n })\n }\n\n deleteClicked() {\n this.onDelete({ item: this.item, index: this.index() })\n }\n\n /**\n *\n * @param {string} type\n */\n _getItemTemplate(type) {\n const prefix =\n '' +\n '<div class=\"form-item-container\">' +\n '<div class=\"form-item-actions\">' +\n '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDelete\" ng-click=\"FormItem.deleteClicked()\"> ' +\n '<md-icon class=\"material-icons small\">delete</md-icon>' +\n '</md-button>' +\n '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onUp\" ng-click=\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\"> ' +\n '<md-icon class=\"material-icons small\">arrow_drop_up</md-icon>' +\n '</md-button>' +\n '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDown\" ng-click=\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\"> ' +\n '<md-icon class=\"material-icons small\">arrow_drop_down</md-icon>' +\n '</md-button>' +\n '</div>' +\n '<md-input-container>' +\n '<label>Field Title</label>' +\n '<input ng-model=\"FormItem.item.props.title\"/>' +\n '</md-input-container>' +\n '<md-input-container>' +\n '<label>Help Text</label>' +\n '<input ng-model=\"FormItem.item.props.helpText\" />' +\n '</md-input-container>'\n\n const suffix =\n '' +\n '<md-input-container>' +\n '<md-checkbox ng-model=\"FormItem.item.config.required\">Required field</md-checkbox>' +\n '</md-input-container>' +\n '</div>'\n\n return prefix + this.templates[type] + suffix\n }\n}\n\nexport { FormItemCtrl }\n","import FormItemTemplate from './form-item.tpl.html'\nimport { FormItemCtrl } from './form-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItem {\n /**\n * @ngInject\n * @param {ng.ICompileService} $compile\n */\n constructor($compile) {\n this.$compile = $compile\n this.restrict = 'E'\n this.scope = {\n item: '=',\n onDelete: '&',\n onUp: '&',\n onDown: '&',\n index: '&',\n }\n this.controller = FormItemCtrl\n this.controllerAs = 'FormItem'\n this.bindToController = true\n this.template = FormItemTemplate\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {FormItemCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n const template = ctrl._getItemTemplate(attrs.type)\n const el = this.$compile(template)(scope)\n // element.append(el)\n // if done like above adds twice\n // element.append(this.$compile(template)(scope))\n ctrl.init()\n return el\n }\n}\nexport { FormItem }\n","class FormItemsContainerCtrl {\n /**\n * @ngInject\n */\n constructor() {\n /**\n * @type {import('../../main/main.controller').FormConfig}\n */\n this.form = {\n items: [],\n }\n }\n\n /**\n *\n * @param {import('../../main/main.controller').Item} item\n * @param {number} index\n */\n delete(item, index) {\n this.form.items.splice(index, 1)\n }\n\n /**\n *\n * @param {import('../../main/main.controller').Item} item\n * @param {number} index\n */\n up(item, index) {\n if (index !== 0) {\n const prevItem = this.form.items[index - 1]\n this.form.items[index] = prevItem\n this.form.items[index - 1] = item\n }\n }\n\n /**\n *\n * @param {import('../../main/main.controller').Item} item\n * @param {number} index\n */\n down(item, index) {\n if (index !== this.form.items.length - 1) {\n const nextItem = this.form.items[index + 1]\n this.form.items[index] = nextItem\n this.form.items[index + 1] = item\n }\n }\n}\n\nexport { FormItemsContainerCtrl }\n","import { FormItemsContainerCtrl } from './form-items-container.controller'\nimport FormItemsContainerTemplate from './form-items-container.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItemsContainer {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.scope = {\n form: '=',\n }\n this.template = FormItemsContainerTemplate\n this.controller = FormItemsContainerCtrl\n this.controllerAs = 'container'\n this.bindToController = true\n }\n}\n\nexport { FormItemsContainer }\n","class FormViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScù} $scope\n */\n constructor($scope) {\n this.Scope = $scope\n }\n\n init() {}\n}\n\nexport { FormViewCtrl }\n","import { FormViewCtrl } from './form-view.controller'\nimport FormViewTemplate from './form-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormView {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = FormViewTemplate\n this.scope = {\n form: '=',\n }\n this.controller = FormViewCtrl\n this.controllerAs = 'FormView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {FormViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n ctrl.init()\n }\n}\n\nexport { FormView }\n","class InputItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n\n this.item = Utils.extend(this.item || {}, {\n config: {\n type: 'text',\n },\n })\n }\n}\n\nexport { InputItemCtrl }\n","import { InputItemCtrl } from './input-item.controller'\nimport InputItemTemplate from './input-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = InputItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = InputItemCtrl\n this.controllerAs = 'Input'\n this.bindToController = true\n }\n}\n\nexport { InputItem }\n","class InputViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.Utils.extend(this.formItem, {\n config: {},\n })\n }\n}\n\nexport { InputViewCtrl }\n","import { InputViewCtrl } from './input-view.controller'\nimport InputViewTemplate from './input-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = InputViewTemplate\n this.scope = {\n formItem: '=',\n form: '=',\n }\n this.controller = InputViewCtrl\n this.controllerAs = 'InputView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {FormItemCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { InputView }\n","class LabelItemCtrl {\n /**\n * @ngInject\n * @param {JQLite} $element\n */\n constructor($element) {\n this.Element = $element\n }\n}\n\nexport { LabelItemCtrl }\n","import { LabelItemCtrl } from './label-item.controller'\nimport LabelItemTemplate from './label-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelItem {\n constructor() {\n this.restrict = 'E'\n this.template = LabelItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = LabelItemCtrl\n this.controllerAs = 'Label'\n this.bindToController = true\n }\n}\n\nexport { LabelItem }\n","class LabelViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n }\n\n init() {\n this.Utils.extend(this.formItem, {})\n }\n}\n\nexport { LabelViewCtrl }\n","import { LabelViewCtrl } from './label-view.controller'\nimport LabelViewTemplate from './label-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = LabelViewTemplate\n this.scope = {\n formItem: '=',\n form: '=',\n }\n this.controller = LabelViewCtrl\n this.controllerAs = 'LabelView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {LabelViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { LabelView }\n","class MatrixItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {ng.IDocumentService} $document\n */\n constructor(Utils, $document) {\n this.RowContainer = angular.element(\n $document[0].querySelector('.rowContainer')\n )\n this.ColumnContainer = angular.element(\n $document[0].querySelector('.columnContainer')\n )\n\n this.item = Utils.extend(this.item || {}, {\n config: {\n rows: [\n {\n value: '',\n },\n ],\n columns: [\n {\n value: '',\n },\n ],\n },\n })\n }\n\n /**\n *\n * @param {number} index\n */\n deleteRow(index) {\n this.item.config.rows.splice(index, 1)\n }\n\n addRow() {\n this.item.config.rows.push({\n value: '',\n })\n\n setTimeout(\n function () {\n const options = this.RowContainer.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }.bind(this),\n 0\n )\n }\n\n /**\n *\n * @param {number} index\n */\n deleteColumn(index) {\n this.item.config.columns.splice(index, 1)\n }\n\n addColumn() {\n this.item.config.columns.push({\n value: '',\n })\n\n setTimeout(() => {\n const options = this.ColumnContainer.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { MatrixItemCtrl }\n","import { MatrixItemCtrl } from './matrix-item.controller'\nimport MatrixItemTemplate from './matrix-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass MatrixItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = MatrixItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = MatrixItemCtrl\n this.controllerAs = 'Matrix'\n this.bindToController = true\n }\n}\nexport { MatrixItem }\n","class MatrixViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, Utils) {\n this.Scope = $scope\n this.Utils = Utils\n this.isValid = true\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {\n rows: [],\n columns: [],\n },\n })\n\n this._updateValidity()\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n\n _updateValidity() {\n let valid = true\n if (this.formItem.config.required) {\n valid = !this.formItem.config.rows.some(\n (row) => typeof row['selected'] === 'undefined'\n )\n // for (let i = 0; i < this.formItem.config.rows.length; i++) {\n // if (typeof this.formItem.config.rows[i]['selected'] === 'undefined') {\n // valid = false\n // break\n // }\n // }\n }\n\n this.isValid = valid\n this.form.$setValidity('required', this.isValid)\n }\n\n _enableWatchers() {\n this.Scope.$watchGroup(\n [\n 'MatrixView.formItem.config.required',\n 'MatrixView.formItem.config.rows.length',\n ],\n (newVal) => {\n if (newVal !== undefined) {\n this._updateValidity()\n }\n }\n )\n }\n}\nexport { MatrixViewCtrl }\n","import MatrixViewTemplate from './matrix-view.tpl.html'\nimport { MatrixViewCtrl } from './matrix-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass MatrixView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = MatrixViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = MatrixViewCtrl\n this.controllerAs = 'MatrixView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {MatrixViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { MatrixView }\n","class RadioButtonItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {},\n options: [\n {\n value: '',\n },\n ],\n })\n }\n\n deleteOption(index) {\n this.item.options.splice(index, 1)\n }\n\n addOption() {\n this.item.options.push({\n value: '',\n })\n\n setTimeout(() => {\n const options = this.Element.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { RadioButtonItemCtrl }\n","import { RadioButtonItemCtrl } from './radio-button-item.controller'\nimport RadioButtonTemplate from './radio-button-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass RadioButtonItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = RadioButtonTemplate\n this.scope = {\n item: '=',\n }\n this.controller = RadioButtonItemCtrl\n this.controllerAs = 'RadioButton'\n this.bindToController = true\n }\n}\n\nexport { RadioButtonItem }\n","class RadioButtonViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {},\n options: [],\n })\n }\n}\n\nexport { RadioButtonViewCtrl }\n","import { RadioButtonViewCtrl } from './radio-button-view.controller'\nimport RadioButtonViewTemplate from './radio-button-view.tpl.html'\n\nclass RadioButtonView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = RadioButtonViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = RadioButtonViewCtrl\n this.controllerAs = 'RadioButtonView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {RadioButtonViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { RadioButtonView }\n","class SelectItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {},\n options: [\n {\n value: '',\n },\n ],\n })\n }\n\n /**\n *\n * @param {number} index\n */\n deleteOption(index) {\n this.item.options.splice(index, 1)\n }\n\n addOption() {\n this.item.options.push({\n value: '',\n })\n\n setTimeout(() => {\n const options = this.Element.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { SelectItemCtrl }\n","import SelectTemplate from './select-item.tpl.html'\nimport { SelectItemCtrl } from './select-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = SelectTemplate\n this.scope = {\n item: '=',\n }\n this.controller = SelectItemCtrl\n this.controllerAs = 'Select'\n this.bindToController = true\n }\n}\n\nexport { SelectItem }\n","class SelectViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {},\n options: [],\n })\n }\n}\n\nexport { SelectViewCtrl }\n","import SelectViewTemplate from './select-view.tpl.html'\nimport { SelectViewCtrl } from './select-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n\n this.restrict = 'E'\n this.template = SelectViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = SelectViewCtrl\n this.controllerAs = 'SelectView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {SelectViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { SelectView }\n","class TextareaItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n\n this.item = Utils.extend(this.item || {}, {\n config: {},\n })\n }\n}\n\nexport { TextareaItemCtrl }\n","import { TextareaItemCtrl } from './textarea-item.controller'\nimport TextareaItemTemplate from './textarea-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass TextareaItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = TextareaItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = TextareaItemCtrl\n this.controllerAs = 'Textarea'\n this.bindToController = true\n }\n}\n\nexport { TextareaItem }\n","class TextareaViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {},\n })\n }\n}\n\nexport { TextareaViewCtrl }\n","import { TextareaViewCtrl } from './textarea-view.controller'\nimport TextareaViewTemplate from './textarea-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass TextareaView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.scope = {\n formItem: '=',\n form: '=',\n }\n this.restrict = 'E'\n this.template = TextareaViewTemplate\n this.controller = TextareaViewCtrl\n this.controllerAs = 'TextareaView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {TextareaViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { TextareaView }\n","class UploadItemCtrl {\n /**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {},\n options: [],\n })\n }\n}\n\nexport { UploadItemCtrl }\n","import UploadItemTemplate from './upload-item.tpl.html'\nimport { UploadItemCtrl } from './upload-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass UploadItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = UploadItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = UploadItemCtrl\n this.controllerAs = 'Upload'\n this.bindToController = true\n }\n}\n\nexport { UploadItem }\n","class UploadViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor($scope, Utils, $element) {\n this.Scope = $scope\n this.Element = $element\n this.Utils = Utils\n this.formItem = {}\n }\n init() {\n this.isMultiple = false\n this.showAllowed = false\n this.formItem = this.Utils.extend(this.formItem || {}, {\n config: {\n size: 10,\n uploadFileButtonLabel: 'Add files',\n },\n options: [],\n })\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n _updateMultiple() {\n this.isMultiple = !!this.formItem.config.multipleUpload\n const input = angular.element(\n this.Element[0].querySelector('input[type=file]')\n )\n if (input) {\n this.formItem.options = []\n if (this.isMultiple) {\n input.attr('multiple', 'multiple')\n } else {\n input.removeAttr('multiple')\n }\n }\n }\n\n _updateAccept() {\n this.showAllowed = !!this.formItem.config.showAccept\n const input = angular.element(\n this.Element[0].querySelector('input[type=file]')\n )\n if (input) {\n if (this.showAllowed) {\n input[0].setAttribute('accept', this.formItem.config.accept)\n } else {\n input[0].removeAttribute('accept')\n delete this.formItem.config.accept\n }\n }\n }\n\n _enableWatchers() {\n this.Scope.$watch('UploadView.formItem.config.multipleUpload', (newVal) => {\n if (newVal !== undefined) {\n this._updateMultiple()\n }\n })\n\n this.Scope.$watch('UploadView.formItem.config.showAccept', (newVal) => {\n if (newVal !== undefined) {\n this._updateAccept()\n }\n })\n\n this.Scope.$watch('UploadView.formItem.config.accept', (newVal) => {\n if (newVal !== undefined) {\n this._updateAccept()\n }\n })\n }\n\n removeItem(index) {\n this.formItem.options.splice(index, 1)\n }\n}\nexport { UploadViewCtrl }\n","import { UploadViewCtrl } from './upload-view.controller'\nimport UploadViewTemplate from './upload-view.tpl.html'\n\nconst MB = 1024 * 1024\n\nclass UploadView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.template = UploadViewTemplate\n this.restrict = 'E'\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = UploadViewCtrl\n this.controllerAs = 'UploadView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {UploadViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n\n const button = angular.element(element[0].querySelector('.upload-button'))\n const input = angular.element(element[0].querySelector('input[type=file]'))\n const label = angular.element(element[0].querySelector('label'))\n\n if (label.length) {\n label.css('display', 'none')\n }\n\n button.on('click', () => {\n label.css('display', 'none')\n typeof input.trigger === 'function'\n ? input.trigger('click')\n : input[0].click()\n })\n\n input.on('change', (e) => {\n scope.$apply(function () {\n /**\n * @type {File[]}\n */\n const files = Array.from(e.target.files)\n // Max allowed size in MB\n const maxSizeMB = ctrl.formItem.config.size * MB\n const exceedsSize = files.some((file) => file.size >= maxSizeMB)\n if (exceedsSize) {\n label.css('display', 'block')\n label.text(ctrl.formItem.config.sizeErrMessage)\n ctrl.formItem.options = []\n } else {\n ctrl.formItem.options = files.map((file) => {\n const { name, size, type } = file\n return { name, size, type, file }\n })\n }\n })\n })\n }\n}\n\nexport { UploadView }\n","import './index.scss'\nimport { UploadItem } from './directives/upload-item/upload-item.directive'\nimport { UploadView } from './directives/upload-item/upload-view.directive'\nimport { AgreementItem } from './directives/agreement-item/agreement-item.directive'\nimport { AgreementView } from './directives/agreement-item/agreement-view.directive'\nimport { MainController } from './main/main.controller'\nimport { Utils } from './utils/utils.service'\nimport { CheckboxesItem } from './directives/checkboxes-item/checkboxes-item.directive'\nimport { CheckboxesView } from './directives/checkboxes-item/checkboxes-view.directive'\nimport { FormItem } from './directives/form-item/form-item.directive'\nimport { FormItemsContainer } from './directives/form-items-container/form-items-container.directive'\nimport { FormView } from './directives/form-view/form-view.directive'\nimport { InputItem } from './directives/input-item/input-item.directive'\nimport { InputView } from './directives/input-item/input-view.directive'\nimport { LabelItem } from './directives/label-item/label-item.directive'\nimport { LabelView } from './directives/label-item/label-view.directive'\nimport { MatrixItem } from './directives/matrix-item/matrix-item.directive'\nimport { MatrixView } from './directives/matrix-item/matrix-view.directive'\nimport { RadioButtonItem } from './directives/radio-button-item/radio-button-item.directive'\nimport { RadioButtonView } from './directives/radio-button-item/radio-button-view.directive'\nimport { SelectView } from './directives/select-item/select-view.directive'\nimport { SelectItem } from './directives/select-item/select-item.directive'\nimport { TextareaItem } from './directives/textarea-item/textarea-item.directive'\nimport { TextareaView } from './directives/textarea-item/textarea-view.directive'\n\nexport default angular\n .module('angularMaterialFormBuilder', [\n 'ngMaterial',\n 'angular-sortable-view',\n 'ngMessages',\n ])\n .service('Utils', Utils)\n .controller('MainController', MainController)\n .directive('uploadItem', UploadItem)\n .directive('uploadView', UploadView)\n .directive('agreementItem', AgreementItem)\n .directive('agreementView', AgreementView)\n .directive('checkboxesItem', CheckboxesItem)\n .directive('checkboxesView', CheckboxesView)\n .directive('formItem', FormItem)\n .directive('formItemsContainer', FormItemsContainer)\n .directive('formView', FormView)\n .directive('inputItem', InputItem)\n .directive('inputView', InputView)\n .directive('labelItem', LabelItem)\n .directive('labelView', LabelView)\n .directive('matrixItem', MatrixItem)\n .directive('matrixView', MatrixView)\n .directive('radioButtonItem', RadioButtonItem)\n .directive('radioButtonView', RadioButtonView)\n .directive('selectItem', SelectItem)\n .directive('selectView', SelectView)\n .directive('textareaItem', TextareaItem)\n .directive('textareaView', TextareaView)\n","/**\n * @typedef {{type:string}} Item\n * @typedef {{items: Item[]}} FormConfig\n */\n\nclass MainController {\n /**\n * @ngInject\n */\n constructor() {\n /**\n * @type {FormConfig}\n */\n this.form = {\n items: [],\n }\n }\n\n /**\n * Add new Item\n * @param {string} type\n */\n addItem(type) {\n this.form.items.push({\n type,\n })\n }\n\n /**\n * Remove item at index\n * @param {Item} item\n * @param {number} index\n */\n delete(item, index) {\n this.form.items.splice(index, 1)\n }\n\n /**\n * insert before (bounded)\n * Pops out latest element (wanted?)\n * @param {Item} item\n * @param {number} index\n */\n up(item, index) {\n if (index !== 0) {\n const prevItem = this.form.items[index - 1]\n this.form.items[index] = prevItem\n this.form.items[index - 1] = item\n }\n }\n\n /**\n * insert after (bounded)\n * Pops out latest element (wanted?)\n * @param {Item} item\n * @param {number} index\n */\n down(item, index) {\n if (index !== this.form.items.length - 1) {\n const nextItem = this.form.items[index + 1]\n this.form.items[index] = nextItem\n this.form.items[index + 1] = item\n }\n }\n}\n\nexport { MainController }\n","class Utils {\n /**\n * Recursively extend object properties\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object}\n */\n extend(dest, src) {\n return Object.keys(src).reduce(\n (result, key) => {\n if (typeof result[key] === 'undefined') {\n result[key] = src[key]\n } else if (typeof src[key] === 'object') {\n result[key] = this.extend(result[key], src[key])\n }\n return result\n },\n typeof dest === 'undefined' ? {} : dest\n )\n }\n}\n\nexport { Utils }\n","export default \"<md-input-container>\\n <div\\n layout=\\\"{{AgreementView.formItem.config.direction == 'horizontal' ? 'row' : 'columb'}}\\\"\\n >\\n <md-checkbox\\n ng-model=\\\"AgreementView.formItem.options[0].selected\\\"\\n ng-change=\\\"AgreementView.toggleSelectedOption(option)\\\"\\n ng-disabled=\\\"AgreementView.disableOptions && !option.selected\\\"\\n aria-label=\\\"...\\\"\\n >{{AgreementView.formItem.options[0].value}}</md-checkbox\\n >\\n </div>\\n\\n <div ng-messages=\\\"AgreementView.form.$error\\\">\\n <div ng-message=\\\"minSelections\\\">\\n Must select {{AgreementView.formItem.maxSelections || 1}} items\\n </div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Checkboxes.item.options\\\"\\n>\\n <md-input-container class=\\\"md-block\\\">\\n <label>Max Selections</label>\\n <input type=\\\"number\\\" ng-model=\\\"Checkboxes.item.config.maxSelections\\\" />\\n </md-input-container>\\n\\n <md-switch\\n ng-model=\\\"Checkboxes.item.config.direction\\\"\\n ng-true-value=\\\"'horizontal'\\\"\\n ng-false-value=\\\"'vertical'\\\"\\n >\\n Layout direction ({{Checkboxes.item.config.direction == 'horizontal' ?\\n 'Horizontal' : 'Vertical'}})\\n </md-switch>\\n\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in Checkboxes.item.options track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Option {{$index + 1}}</label>\\n <input ng-model=\\\"option.value\\\" />\\n </md-input-container>\\n\\n <md-button class=\\\"md-button\\\" ng-click=\\\"Checkboxes.deleteOption($index)\\\">\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n </md-button>\\n </div>\\n <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n <md-button\\n class=\\\"md-primary add-option-button\\\"\\n ng-click=\\\"Checkboxes.addOption()\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">add</md-icon>\\n </md-button>\\n </div>\\n</div>\\n\";","export default \"<md-input-container>\\n <div\\n layout=\\\"{{CheckboxesView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n >\\n <md-checkbox\\n ng-repeat=\\\"option in CheckboxesView.formItem.options track by $index\\\"\\n ng-model=\\\"option.selected\\\"\\n ng-change=\\\"CheckboxesView.toggleSelectedOption(option)\\\"\\n ng-disabled=\\\"CheckboxesView.disableOptions && !option.selected\\\"\\n aria-label=\\\"...\\\"\\n >{{option.value}}</md-checkbox\\n >\\n </div>\\n\\n <div ng-messages=\\\"CheckboxesView.form.$error\\\">\\n <div ng-message=\\\"minSelections\\\">\\n Must select {{CheckboxesView.formItem.maxSelections || 1}} items\\n </div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div class=\\\"form-item-container md-inline-form\\\">\\n <div class=\\\"form-item-actions\\\">\\n <md-button\\n class=\\\"md-button\\\"\\n ng-if=\\\"FormItem.Attrs.onDelete\\\"\\n ng-click=\\\"FormItem.deleteClicked()\\\"\\n >\\n <md-icon class=\\\"material-icons small\\\">delete</md-icon>\\n </md-button>\\n <md-button\\n class=\\\"md-button\\\"\\n ng-if=\\\"FormItem.Attrs.onUp\\\"\\n ng-click=\\\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\\\"\\n >\\n <md-icon class=\\\"material-icons small\\\">arrow_drop_up</md-icon>\\n </md-button>\\n <md-button\\n class=\\\"md-button\\\"\\n ng-if=\\\"FormItem.Attrs.onDown\\\"\\n ng-click=\\\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\\\"\\n >\\n <md-icon class=\\\"material-icons small\\\">arrow_drop_down</md-icon>\\n </md-button>\\n </div>\\n\\n <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n <label>Field Title</label>\\n <input ng-model=\\\"FormItem.item.props.title\\\" />\\n </md-input-container>\\n\\n <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n <label>Help Text</label>\\n <input ng-model=\\\"FormItem.item.props.helpText\\\" />\\n </md-input-container>\\n\\n <md-input-container\\n ng-if=\\\"FormItem.item.type === 'agreement'\\\"\\n class=\\\"md-block\\\"\\n >\\n <label>Option Text</label>\\n <input ng-model=\\\"FormItem.item.options[0].value\\\" />\\n </md-input-container>\\n\\n <div ng-switch=\\\"FormItem.item.type\\\">\\n <upload-item ng-switch-when=\\\"upload\\\" item=\\\"FormItem.item\\\"></upload-item>\\n <agreement-item\\n ng-switch-when=\\\"agreement\\\"\\n item=\\\"FormItem.item\\\"\\n ></agreement-item>\\n <label-item ng-switch-when=\\\"label\\\" item=\\\"FormItem.item\\\"></label-item>\\n <input-item ng-switch-when=\\\"input\\\" item=\\\"FormItem.item\\\"></input-item>\\n <radio-button-item\\n ng-switch-when=\\\"multipleChoices\\\"\\n item=\\\"FormItem.item\\\"\\n ></radio-button-item>\\n <matrix-item ng-switch-when=\\\"matrix\\\" item=\\\"FormItem.item\\\"></matrix-item>\\n <checkboxes-item\\n ng-switch-when=\\\"checkboxes\\\"\\n item=\\\"FormItem.item\\\"\\n ></checkboxes-item>\\n <textarea-item\\n ng-switch-when=\\\"textarea\\\"\\n item=\\\"FormItem.item\\\"\\n ></textarea-item>\\n <select-item\\n ng-switch-when=\\\"chooseFromList\\\"\\n item=\\\"FormItem.item\\\"\\n ></select-item>\\n <p ng-switch-default>UNKNOWN TYPE</p>\\n </div>\\n\\n <md-input-container\\n ng-if=\\\"FormItem.item.type != 'label' && FormItem.item.type != 'upload'\\\"\\n class=\\\"md-block\\\"\\n >\\n <md-checkbox ng-model=\\\"FormItem.item.config.required\\\"\\n >Required field</md-checkbox\\n >\\n </md-input-container>\\n</div>\\n\";","export default \"<div>\\n <form-item\\n ng-repeat=\\\"item in container.form.items track by $index\\\"\\n type=\\\"{{item.type}}\\\"\\n item=\\\"item\\\"\\n index=\\\"$index\\\"\\n on-delete=\\\"container.delete(item, index)\\\"\\n on-up=\\\"container.up(item, index)\\\"\\n on-down=\\\"container.down(item, index)\\\"\\n >\\n </form-item>\\n</div>\\n\";","export default \"<div class=\\\"md-inline-form\\\">\\n <div\\n class=\\\"formItem\\\"\\n ng-repeat=\\\"formItem in FormView.form.items track by $index\\\"\\n ng-switch=\\\"formItem.type\\\"\\n layout=\\\"column\\\"\\n >\\n <ng-form name=\\\"formItemForm\\\">\\n <div>\\n <div class=\\\"formItem-title\\\">{{formItem.props.title}}</div>\\n <div class=\\\"formItem-help-text\\\">{{formItem.props.helpText}}</div>\\n\\n <upload-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"upload\\\"\\n ></upload-view>\\n <agreement-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"agreement\\\"\\n ></agreement-view>\\n <checkboxes-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"checkboxes\\\"\\n ></checkboxes-view>\\n <radio-button-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"multipleChoices\\\"\\n ></radio-button-view>\\n <input-view\\n form-item=\\\"formItem\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"input\\\"\\n ></input-view>\\n <textarea-view\\n form-item=\\\"formItem\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"textarea\\\"\\n ></textarea-view>\\n <matrix-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"matrix\\\"\\n ></matrix-view>\\n <select-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"chooseFromList\\\"\\n ></select-view>\\n <label-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"label\\\"\\n ></label-view>\\n </div>\\n </ng-form>\\n </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <label>Placeholder</label>\\n <input type=\\\"text\\\" ng-model=\\\"Input.item.config.placeholder\\\" />\\n</md-input-container>\\n<md-input-container class=\\\"md-block\\\">\\n <label>Type</label>\\n <md-select ng-model=\\\"Input.item.config.type\\\">\\n <md-option value=\\\"text\\\">Text</md-option>\\n <md-option value=\\\"number\\\">Number</md-option>\\n <md-option value=\\\"email\\\">Email</md-option>\\n </md-select>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <input\\n ng-model=\\\"InputView.formItem.value\\\"\\n type=\\\"{{InputView.formItem.config.type}}\\\"\\n placeholder=\\\"{{InputView.formItem.config.placeholder}}\\\"\\n ng-required=\\\"InputView.formItem.config.required\\\"\\n />\\n <div ng-messages=\\\"InputView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <label>Text</label>\\n <textarea ng-model=\\\"Label.item.value\\\" md-maxlength=\\\"150\\\" rows=\\\"5\\\"></textarea>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <md-content flex layout-padding layout=\\\"row\\\" layout-align=\\\"center center\\\">\\n <pre>\\n <span class=\\\"formItem-content\\\">{{LabelView.formItem.value}}</span>\\n </pre>\\n </md-content>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container columnContainer\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Matrix.item.config.columns\\\"\\n>\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"column in Matrix.item.config.columns track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"input-container\\\">\\n <label>Column {{$index + 1}}</label>\\n <input ng-model=\\\"column.value\\\" />\\n </md-input-container>\\n\\n <md-button\\n class=\\\"md-button\\\"\\n md-no-ink\\n aria-label=\\\"delete column item\\\"\\n ng-click=\\\"Matrix.deleteColumn($index)\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n </md-button>\\n </div>\\n <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n <md-button\\n class=\\\"md-primary add-option-button\\\"\\n md-no-ink\\n aria-label=\\\"add option item\\\"\\n ng-click=\\\"Matrix.addColumn()\\\"\\n >Add Column</md-button\\n >\\n </div>\\n</div>\\n\\n<div\\n class=\\\"sortable-container rowContainer\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Matrix.item.config.rows\\\"\\n>\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"row in Matrix.item.config.rows track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder row item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"input-container\\\">\\n <label>Row {{$index + 1}}</label>\\n <input ng-model=\\\"row.value\\\" />\\n </md-input-container>\\n\\n <md-button\\n class=\\\"md-button\\\"\\n md-no-ink\\n aria-label=\\\"delete row item\\\"\\n ng-click=\\\"Matrix.deleteRow($index)\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n </md-button>\\n </div>\\n <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n <md-button\\n class=\\\"md-primary add-option-button\\\"\\n md-no-ink\\n aria-label=\\\"add row item\\\"\\n ng-click=\\\"Matrix.addRow()\\\"\\n >Add row</md-button\\n >\\n </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"matrix-container md-block\\\" layout=\\\"column\\\">\\n <div class=\\\"matrix\\\">\\n <div class=\\\"matrix-row\\\" flex layout=\\\"row\\\">\\n <span class=\\\"matrix-cell\\\" flex=\\\"20\\\"></span>\\n <span\\n class=\\\"matrix-cell matrix-cell-header\\\"\\n flex\\n ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n >{{column.value}}</span\\n >\\n </div>\\n <div\\n class=\\\"matrix-row\\\"\\n ng-repeat=\\\"row in MatrixView.formItem.config.rows track by $index\\\"\\n layout=\\\"row\\\"\\n >\\n <span class=\\\"matrix-cell\\\" flex=\\\"20\\\" layout=\\\"column\\\" layout-align=\\\"center\\\"\\n >{{row.value}}</span\\n >\\n <md-radio-group\\n ng-model=\\\"row.selected\\\"\\n ng-change=\\\"MatrixView._updateValidity()\\\"\\n flex\\n layout=\\\"row\\\"\\n >\\n <span\\n class=\\\"matrix-cell radio-button-cell\\\"\\n flex\\n ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n >\\n <md-radio-button\\n value=\\\"{{column.value}}\\\"\\n aria-label=\\\"...\\\"\\n ></md-radio-button>\\n </span>\\n </md-radio-group>\\n </div>\\n </div>\\n\\n <div ng-messages=\\\"MatrixView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"RadioButton.item.options\\\"\\n>\\n <md-switch\\n ng-model=\\\"RadioButton.item.config.direction\\\"\\n ng-true-value=\\\"'horizontal'\\\"\\n ng-false-value=\\\"'vertical'\\\"\\n >\\n Layout direction ({{RadioButton.item.config.direction == 'horizontal' ?\\n 'Horizontal' : 'Vertical'}})\\n </md-switch>\\n\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in RadioButton.item.options track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Option {{$index + 1}}</label>\\n <input ng-model=\\\"option.value\\\" />\\n </md-input-container>\\n\\n <md-button\\n class=\\\"md-button md-warn\\\"\\n ng-click=\\\"RadioButton.deleteOption($index)\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n </md-button>\\n </div>\\n\\n <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"RadioButton.addOption()\\\"\\n >Add Option</md-button\\n >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <md-radio-group\\n name=\\\"formItemInput\\\"\\n ng-required=\\\"RadioButtonView.formItem.config.required\\\"\\n ng-model=\\\"RadioButtonView.formItem.value\\\"\\n layout=\\\"{{RadioButtonView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n required\\n >\\n <md-radio-button\\n ng-repeat=\\\"option in RadioButtonView.formItem.options track by $index\\\"\\n value=\\\"{{option.value}}\\\"\\n aria-label=\\\"...\\\"\\n >\\n {{option.value}}\\n </md-radio-button>\\n </md-radio-group>\\n\\n <div ng-messages=\\\"RadioButtonView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Select.item.options\\\"\\n>\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in Select.item.options track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Option {{$index + 1}}</label>\\n <input ng-model=\\\"option.value\\\" />\\n </md-input-container>\\n\\n <md-button class=\\\"md-button md-warn\\\" ng-click=\\\"Select.deleteOption($index)\\\">\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n </md-button>\\n </div>\\n\\n <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"Select.addOption()\\\"\\n >Add Option</md-button\\n >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <md-select\\n name=\\\"formItemInput\\\"\\n ng-required=\\\"SelectView.formItem.config.required\\\"\\n ng-model=\\\"SelectView.formItem.value\\\"\\n >\\n <md-option\\n ng-repeat=\\\"option in SelectView.formItem.options track by $index\\\"\\n ng-value=\\\"option.value\\\"\\n >{{ option.value }}</md-option\\n >\\n </md-select>\\n <div ng-messages=\\\"SelectView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <label>Placeholder</label>\\n <input type=\\\"text\\\" ng-model=\\\"Textarea.item.config.placeholder\\\" />\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <textarea\\n ng-model=\\\"TextareaView.formItem.value\\\"\\n placeholder=\\\"{{TextareaView.formItem.config.placeholder}}\\\"\\n ng-required=\\\"TextareaView.formItem.config.required\\\"\\n ></textarea>\\n <div ng-messages=\\\"TextareaView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Upload.item.options\\\"\\n>\\n <md-input-container class=\\\"md-block\\\">\\n <label>Upload Button label</label>\\n <input ng-model=\\\"Upload.item.config.uploadFileButtonLabel\\\" />\\n </md-input-container>\\n\\n <md-switch\\n ng-model=\\\"Upload.item.config.multipleUpload\\\"\\n ng-true-value=\\\"true\\\"\\n ng-false-value=\\\"false\\\"\\n >\\n Multiple\\n </md-switch>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <span>Max File size: {{Upload.item.config.size}} Mb</span>\\n <input\\n type=\\\"number\\\"\\n id=\\\"size\\\"\\n name=\\\"size\\\"\\n min=\\\"0.1\\\"\\n max=\\\"999\\\"\\n step=\\\"0.1\\\"\\n aria-label=\\\"size\\\"\\n ng-model=\\\"Upload.item.config.size\\\"\\n />\\n </md-input-container>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Max file size error message</label>\\n <textarea\\n ng-model=\\\"Upload.item.config.sizeErrMessage\\\"\\n md-maxlength=\\\"150\\\"\\n rows=\\\"2\\\"\\n ></textarea>\\n </md-input-container>\\n\\n <md-switch\\n ng-model=\\\"Upload.item.config.showAccept\\\"\\n ng-true-value=\\\"true\\\"\\n ng-false-value=\\\"false\\\"\\n >\\n Configure allowed file types\\n </md-switch>\\n\\n <md-input-container class=\\\"md-block\\\" ng-if=\\\"Upload.item.config.showAccept\\\">\\n <label>Allowed Types</label>\\n <textarea\\n ng-model=\\\"Upload.item.config.accept\\\"\\n md-maxlength=\\\"150\\\"\\n rows=\\\"2\\\"\\n ></textarea>\\n </md-input-container>\\n</div>\\n\";","export default \"<div layout=\\\"row\\\" class=\\\"option-item upload-item\\\">\\n <md-input-container class=\\\"md-block\\\" style=\\\"margin: 0\\\">\\n <input type=\\\"file\\\" class=\\\"ng-hide\\\" aria-label=\\\"file\\\" />\\n <md-input-container flex class=\\\"md-block\\\">\\n <input\\n type=\\\"text\\\"\\n ng-model=\\\"fileName\\\"\\n class=\\\"ng-hide\\\"\\n disabled\\n aria-label=\\\"fileName\\\"\\n />\\n </md-input-container>\\n </md-input-container>\\n\\n <md-button class=\\\"md-raised md-accent upload-button\\\"\\n ><md-icon class=\\\"material-icons\\\">attach_file</md-icon\\n ><span\\n >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\\n ></md-button\\n >\\n</div>\\n\\n<div>\\n <label></label>\\n <div\\n style=\\\"display: grid; grid-template-columns: 8em auto; align-items: center\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in UploadView.formItem.options track by $index\\\"\\n >\\n <md-button ng-click=\\\"UploadView.removeItem($index)\\\" class=\\\"md-icon-button\\\">\\n <md-icon class=\\\"material-icons\\\">close</md-icon>\\n </md-button>\\n <span>{{option.name}}</span>\\n </div>\\n</div>\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./src/lib/index.module.js\");\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"angular-material-form-builder.min.js","mappings":"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","sources":["webpack://angular-material-form-builder/webpack/universalModuleDefinition","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.directive.js","webpack://angular-material-form-builder/./src/lib/main/main.controller.js","webpack://angular-material-form-builder/./src/lib/utils/utils.service.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.tpl.html","webpack://angular-material-form-builder/webpack/bootstrap","webpack://angular-material-form-builder/webpack/runtime/define property getters","webpack://angular-material-form-builder/webpack/runtime/hasOwnProperty shorthand","webpack://angular-material-form-builder/webpack/runtime/make namespace object","webpack://angular-material-form-builder/./src/lib/index.module.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-material-form-builder\"] = factory();\n\telse\n\t\troot[\"angular-material-form-builder\"] = factory();\n})(self, function() {\nreturn ","/**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\nfunction AgreementItemCtrl(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {\n maxSelections: null,\n },\n options: [\n {\n value: '',\n selected: false,\n },\n ],\n })\n}\n\nexport { AgreementItemCtrl }\n","import { AgreementItemCtrl } from './agreement-item.controller'\n// import AgreementItemTemplate from './agreement-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass AgreementItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.scope = {\n item: '=',\n }\n this.controller = AgreementItemCtrl\n this.controllerAs = 'Agreement'\n this.bindToController = true\n }\n}\n\nexport { AgreementItem }\n","class AgreementViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, Utils) {\n this.Scope = $scope\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem || {}, {\n config: {},\n options: [\n {\n value: '',\n selected: false,\n },\n ],\n })\n\n this.selectedOptions = this._getSelectedOptions()\n this.disableOptions = false\n\n this.isValid = true\n this._updateView()\n this._updateValidity()\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n\n toggleSelectedOption() {\n this.selectedOptions = this._getSelectedOptions()\n this._updateView()\n this._updateValidity()\n }\n\n _getSelectedOptions() {\n return this.formItem.options.filter((option) => {\n return option.selected\n })\n }\n\n _updateView() {\n if (!this.formItem.config.maxSelections) {\n this.disableOptions = false\n } else if (\n this.selectedOptions.length === this.formItem.config.maxSelections\n ) {\n this.disableOptions = true\n } else {\n this.disableOptions = false\n }\n }\n\n _updateValidity() {\n if (this.formItem.config.required) {\n this.isValid = this.selectedOptions.length > 0\n } else {\n this.isValid = true\n }\n\n this.form.$setValidity('minSelections', this.isValid)\n }\n\n _enableWatchers() {\n this.Scope.$watch('AgreementView.formItem.config.required', (newVal) => {\n if (newVal !== undefined) {\n this._updateView()\n this._updateValidity()\n }\n })\n }\n}\n\nexport { AgreementViewCtrl }\n","import { AgreementViewCtrl } from './agreement-view.controller'\nimport AgreementViewTemplate from './agreement-view.tpl.html'\n\nclass AgreementView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.template = AgreementViewTemplate\n this.restrict = 'E'\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = AgreementViewCtrl\n this.controllerAs = 'AgreementView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {AgreementViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { AgreementView }\n","class CheckboxesItemCtrl {\n /**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {\n maxSelections: null,\n },\n options: [\n {\n value: '',\n selected: false,\n },\n ],\n })\n }\n\n deleteOption(index) {\n this.item.options.splice(index, 1)\n }\n\n addOption() {\n this.item.options.push({\n value: '',\n selected: false,\n })\n // Focus new element\n setTimeout(() => {\n const options = this.Element.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { CheckboxesItemCtrl }\n","import CheckboxesItemTemplate from './checkboxes-item.tpl.html'\nimport { CheckboxesItemCtrl } from './checkboxes-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nfunction CheckboxesItem() {\n const directive = {\n restrict: 'E',\n template: CheckboxesItemTemplate,\n scope: {\n item: '=',\n },\n controller: CheckboxesItemCtrl,\n controllerAs: 'Checkboxes',\n bindToController: true,\n }\n\n return directive\n}\n\nexport { CheckboxesItem }\n","class CheckboxesViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, Utils) {\n this.Scope = $scope\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem || {}, {\n config: {},\n options: [],\n })\n\n this.selectedOptions = this._getSelectedOptions()\n this.disableOptions = false\n\n this.isValid = true\n this._updateView()\n this._updateValidity()\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n\n toggleSelectedOption() {\n this.selectedOptions = this._getSelectedOptions()\n this._updateView()\n this._updateValidity()\n }\n\n _getSelectedOptions() {\n return this.formItem.options.filter((option) => {\n return option.selected\n })\n }\n\n _updateView() {\n if (!this.formItem.config.maxSelections) {\n this.disableOptions = false\n } else if (\n this.selectedOptions.length === this.formItem.config.maxSelections\n ) {\n this.disableOptions = true\n } else {\n this.disableOptions = false\n }\n }\n\n _updateValidity() {\n if (this.formItem.config.required) {\n this.isValid = this.selectedOptions.length > 0\n } else {\n this.isValid = true\n }\n\n this.form.$setValidity('minSelections', this.isValid)\n }\n\n _enableWatchers() {\n this.Scope.$watch('CheckboxesView.formItem.config.required', (newVal) => {\n if (newVal !== undefined) {\n this._updateView()\n this._updateValidity()\n }\n })\n }\n}\n\nexport { CheckboxesViewCtrl }\n","import CheckboxesViewTemplate from './checkboxes-view.tpl.html'\nimport { CheckboxesViewCtrl } from './checkboxes-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass CheckboxesView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = CheckboxesViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = CheckboxesViewCtrl\n this.controllerAs = 'CheckboxesView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {CheckboxesViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { CheckboxesView }\n","const DEFAULT_TITLE = {\n upload: 'Attachment',\n agreement: 'Agreement',\n input: 'Field',\n chooseFromList: 'Select',\n label: 'Label',\n multipleChoices: 'Choice',\n matrix: 'Matrix',\n checkboxes: 'Options',\n textarea: 'Text',\n}\n\nclass FormItemCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {ng.IAttributes} $attrs\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, $attrs, Utils) {\n this.Attrs = $attrs\n this.Utils = Utils\n this.templates = {\n upload: '<upload-item item=\"FormItem.item\"></upload-item>',\n agreement: '<agreement-item item=\"FormItem.item\"></agreement-item>',\n input: '<input-item item=\"FormItem.item\"></input-item>',\n chooseFromList:\n '<bet-form-choose-from-list item=\"FormItem.item\"></bet-form-choose-from-list>',\n label: '<label-item item=\"FormItem.item\"></label-item>',\n multipleChoices:\n '<radio-button-item item=\"FormItem.item\"></radio-button-item>',\n matrix: '<matrix-item item=\"FormItem.item\"></matrix-item>',\n checkboxes: '<checkboxes-item item=\"FormItem.item\"></checkboxes-item>',\n textarea: '<textarea-item item=\"FormItem.item\"></textarea-item>',\n }\n this.item = {}\n this.scope = $scope\n }\n\n init() {\n this.item = this.Utils.extend(this.item || {}, {\n type: this.Attrs.type,\n props: {\n title: DEFAULT_TITLE[this.Attrs.type],\n helpText: '',\n },\n config: {\n required: false,\n },\n })\n }\n\n deleteClicked() {\n this.onDelete({ item: this.item, index: this.index() })\n }\n\n /**\n *\n * @param {string} type\n */\n _getItemTemplate(type) {\n const prefix =\n '' +\n '<div class=\"form-item-container\">' +\n '<div class=\"form-item-actions\">' +\n '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDelete\" ng-click=\"FormItem.deleteClicked()\"> ' +\n '<md-icon class=\"material-icons small\">delete</md-icon>' +\n '</md-button>' +\n '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onUp\" ng-click=\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\"> ' +\n '<md-icon class=\"material-icons small\">arrow_drop_up</md-icon>' +\n '</md-button>' +\n '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDown\" ng-click=\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\"> ' +\n '<md-icon class=\"material-icons small\">arrow_drop_down</md-icon>' +\n '</md-button>' +\n '</div>' +\n '<md-input-container>' +\n '<label>Field Title</label>' +\n '<input ng-model=\"FormItem.item.props.title\"/>' +\n '</md-input-container>' +\n '<md-input-container>' +\n '<label>Help Text</label>' +\n '<input ng-model=\"FormItem.item.props.helpText\" />' +\n '</md-input-container>'\n\n const suffix =\n '' +\n '<md-input-container>' +\n '<md-checkbox ng-model=\"FormItem.item.config.required\">Required field</md-checkbox>' +\n '</md-input-container>' +\n '</div>'\n\n return prefix + this.templates[type] + suffix\n }\n}\n\nexport { FormItemCtrl }\n","import FormItemTemplate from './form-item.tpl.html'\nimport { FormItemCtrl } from './form-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItem {\n /**\n * @ngInject\n * @param {ng.ICompileService} $compile\n */\n constructor($compile) {\n this.$compile = $compile\n this.restrict = 'E'\n this.scope = {\n item: '=',\n onDelete: '&',\n onUp: '&',\n onDown: '&',\n index: '&',\n }\n this.controller = FormItemCtrl\n this.controllerAs = 'FormItem'\n this.bindToController = true\n this.template = FormItemTemplate\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {FormItemCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n const template = ctrl._getItemTemplate(attrs.type)\n const el = this.$compile(template)(scope)\n // element.append(el)\n // if done like above adds twice\n // element.append(this.$compile(template)(scope))\n ctrl.init()\n return el\n }\n}\nexport { FormItem }\n","class FormItemsContainerCtrl {\n /**\n * @ngInject\n */\n constructor() {\n /**\n * @type {import('../../main/main.controller').FormConfig}\n */\n this.form = {\n items: [],\n }\n }\n\n /**\n *\n * @param {import('../../main/main.controller').Item} item\n * @param {number} index\n */\n delete(item, index) {\n this.form.items.splice(index, 1)\n }\n\n /**\n *\n * @param {import('../../main/main.controller').Item} item\n * @param {number} index\n */\n up(item, index) {\n if (index !== 0) {\n const prevItem = this.form.items[index - 1]\n this.form.items[index] = prevItem\n this.form.items[index - 1] = item\n }\n }\n\n /**\n *\n * @param {import('../../main/main.controller').Item} item\n * @param {number} index\n */\n down(item, index) {\n if (index !== this.form.items.length - 1) {\n const nextItem = this.form.items[index + 1]\n this.form.items[index] = nextItem\n this.form.items[index + 1] = item\n }\n }\n}\n\nexport { FormItemsContainerCtrl }\n","import { FormItemsContainerCtrl } from './form-items-container.controller'\nimport FormItemsContainerTemplate from './form-items-container.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItemsContainer {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.scope = {\n form: '=',\n }\n this.template = FormItemsContainerTemplate\n this.controller = FormItemsContainerCtrl\n this.controllerAs = 'container'\n this.bindToController = true\n }\n}\n\nexport { FormItemsContainer }\n","class FormViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScù} $scope\n */\n constructor($scope) {\n this.Scope = $scope\n }\n\n init() {}\n}\n\nexport { FormViewCtrl }\n","import { FormViewCtrl } from './form-view.controller'\nimport FormViewTemplate from './form-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormView {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = FormViewTemplate\n this.scope = {\n form: '=',\n }\n this.controller = FormViewCtrl\n this.controllerAs = 'FormView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {FormViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n ctrl.init()\n }\n}\n\nexport { FormView }\n","class InputItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n\n this.item = Utils.extend(this.item || {}, {\n config: {\n type: 'text',\n },\n })\n }\n}\n\nexport { InputItemCtrl }\n","import { InputItemCtrl } from './input-item.controller'\nimport InputItemTemplate from './input-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = InputItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = InputItemCtrl\n this.controllerAs = 'Input'\n this.bindToController = true\n }\n}\n\nexport { InputItem }\n","class InputViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.Utils.extend(this.formItem, {\n config: {},\n })\n }\n}\n\nexport { InputViewCtrl }\n","import { InputViewCtrl } from './input-view.controller'\nimport InputViewTemplate from './input-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = InputViewTemplate\n this.scope = {\n formItem: '=',\n form: '=',\n }\n this.controller = InputViewCtrl\n this.controllerAs = 'InputView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {FormItemCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { InputView }\n","class LabelItemCtrl {\n /**\n * @ngInject\n * @param {JQLite} $element\n */\n constructor($element) {\n this.Element = $element\n }\n}\n\nexport { LabelItemCtrl }\n","import { LabelItemCtrl } from './label-item.controller'\nimport LabelItemTemplate from './label-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelItem {\n constructor() {\n this.restrict = 'E'\n this.template = LabelItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = LabelItemCtrl\n this.controllerAs = 'Label'\n this.bindToController = true\n }\n}\n\nexport { LabelItem }\n","class LabelViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {ng.ISCEService} $sce\n */\n constructor(Utils, $sce) {\n this.Utils = Utils\n this.$sce = $sce\n }\n\n init() {\n this.Utils.extend(this.formItem, {})\n }\n\n get sanitizedTitle() {\n return this.$sce.trustAsHtml(this.formItem.value)\n }\n}\n\nexport { LabelViewCtrl }\n","import { LabelViewCtrl } from './label-view.controller'\nimport LabelViewTemplate from './label-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = LabelViewTemplate\n this.scope = {\n formItem: '=',\n form: '=',\n }\n this.controller = LabelViewCtrl\n this.controllerAs = 'LabelView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {LabelViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { LabelView }\n","class MatrixItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {ng.IDocumentService} $document\n */\n constructor(Utils, $document) {\n this.RowContainer = angular.element(\n $document[0].querySelector('.rowContainer')\n )\n this.ColumnContainer = angular.element(\n $document[0].querySelector('.columnContainer')\n )\n\n this.item = Utils.extend(this.item || {}, {\n config: {\n rows: [\n {\n value: '',\n },\n ],\n columns: [\n {\n value: '',\n },\n ],\n },\n })\n }\n\n /**\n *\n * @param {number} index\n */\n deleteRow(index) {\n this.item.config.rows.splice(index, 1)\n }\n\n addRow() {\n this.item.config.rows.push({\n value: '',\n })\n\n setTimeout(\n function () {\n const options = this.RowContainer.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }.bind(this),\n 0\n )\n }\n\n /**\n *\n * @param {number} index\n */\n deleteColumn(index) {\n this.item.config.columns.splice(index, 1)\n }\n\n addColumn() {\n this.item.config.columns.push({\n value: '',\n })\n\n setTimeout(() => {\n const options = this.ColumnContainer.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { MatrixItemCtrl }\n","import { MatrixItemCtrl } from './matrix-item.controller'\nimport MatrixItemTemplate from './matrix-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass MatrixItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = MatrixItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = MatrixItemCtrl\n this.controllerAs = 'Matrix'\n this.bindToController = true\n }\n}\nexport { MatrixItem }\n","class MatrixViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor($scope, Utils) {\n this.Scope = $scope\n this.Utils = Utils\n this.isValid = true\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {\n rows: [],\n columns: [],\n },\n })\n\n this._updateValidity()\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n\n _updateValidity() {\n let valid = true\n if (this.formItem.config.required) {\n valid = !this.formItem.config.rows.some(\n (row) => typeof row['selected'] === 'undefined'\n )\n // for (let i = 0; i < this.formItem.config.rows.length; i++) {\n // if (typeof this.formItem.config.rows[i]['selected'] === 'undefined') {\n // valid = false\n // break\n // }\n // }\n }\n\n this.isValid = valid\n this.form.$setValidity('required', this.isValid)\n }\n\n _enableWatchers() {\n this.Scope.$watchGroup(\n [\n 'MatrixView.formItem.config.required',\n 'MatrixView.formItem.config.rows.length',\n ],\n (newVal) => {\n if (newVal !== undefined) {\n this._updateValidity()\n }\n }\n )\n }\n}\nexport { MatrixViewCtrl }\n","import MatrixViewTemplate from './matrix-view.tpl.html'\nimport { MatrixViewCtrl } from './matrix-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass MatrixView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = MatrixViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = MatrixViewCtrl\n this.controllerAs = 'MatrixView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {MatrixViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { MatrixView }\n","class RadioButtonItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {},\n options: [\n {\n value: '',\n },\n ],\n })\n }\n\n deleteOption(index) {\n this.item.options.splice(index, 1)\n }\n\n addOption() {\n this.item.options.push({\n value: '',\n })\n\n setTimeout(() => {\n const options = this.Element.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { RadioButtonItemCtrl }\n","import { RadioButtonItemCtrl } from './radio-button-item.controller'\nimport RadioButtonTemplate from './radio-button-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass RadioButtonItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = RadioButtonTemplate\n this.scope = {\n item: '=',\n }\n this.controller = RadioButtonItemCtrl\n this.controllerAs = 'RadioButton'\n this.bindToController = true\n }\n}\n\nexport { RadioButtonItem }\n","class RadioButtonViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {},\n options: [],\n })\n }\n}\n\nexport { RadioButtonViewCtrl }\n","import { RadioButtonViewCtrl } from './radio-button-view.controller'\nimport RadioButtonViewTemplate from './radio-button-view.tpl.html'\n\nclass RadioButtonView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.restrict = 'E'\n this.template = RadioButtonViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = RadioButtonViewCtrl\n this.controllerAs = 'RadioButtonView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {RadioButtonViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { RadioButtonView }\n","class SelectItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {},\n options: [\n {\n value: '',\n },\n ],\n })\n }\n\n /**\n *\n * @param {number} index\n */\n deleteOption(index) {\n this.item.options.splice(index, 1)\n }\n\n addOption() {\n this.item.options.push({\n value: '',\n })\n\n setTimeout(() => {\n const options = this.Element.find('input')\n const addedOption = options[options.length - 1]\n addedOption.focus()\n }, 0)\n }\n}\n\nexport { SelectItemCtrl }\n","import SelectTemplate from './select-item.tpl.html'\nimport { SelectItemCtrl } from './select-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = SelectTemplate\n this.scope = {\n item: '=',\n }\n this.controller = SelectItemCtrl\n this.controllerAs = 'Select'\n this.bindToController = true\n }\n}\n\nexport { SelectItem }\n","class SelectViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {},\n options: [],\n })\n }\n}\n\nexport { SelectViewCtrl }\n","import SelectViewTemplate from './select-view.tpl.html'\nimport { SelectViewCtrl } from './select-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n\n this.restrict = 'E'\n this.template = SelectViewTemplate\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = SelectViewCtrl\n this.controllerAs = 'SelectView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {SelectViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { SelectView }\n","class TextareaItemCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n\n this.item = Utils.extend(this.item || {}, {\n config: {},\n })\n }\n}\n\nexport { TextareaItemCtrl }\n","import { TextareaItemCtrl } from './textarea-item.controller'\nimport TextareaItemTemplate from './textarea-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass TextareaItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = TextareaItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = TextareaItemCtrl\n this.controllerAs = 'Textarea'\n this.bindToController = true\n }\n}\n\nexport { TextareaItem }\n","class TextareaViewCtrl {\n /**\n * @ngInject\n * @param {import('../../utils/utils.service').Utils} Utils\n */\n constructor(Utils) {\n this.Utils = Utils\n this.formItem = {}\n }\n\n init() {\n this.formItem = this.Utils.extend(this.formItem, {\n config: {},\n })\n }\n}\n\nexport { TextareaViewCtrl }\n","import { TextareaViewCtrl } from './textarea-view.controller'\nimport TextareaViewTemplate from './textarea-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass TextareaView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.scope = {\n formItem: '=',\n form: '=',\n }\n this.restrict = 'E'\n this.template = TextareaViewTemplate\n this.controller = TextareaViewCtrl\n this.controllerAs = 'TextareaView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {TextareaViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, elem, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n }\n}\n\nexport { TextareaView }\n","class UploadItemCtrl {\n /**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor(Utils, $element) {\n this.Element = $element\n this.item = Utils.extend(this.item || {}, {\n config: {},\n options: [],\n })\n }\n}\n\nexport { UploadItemCtrl }\n","import UploadItemTemplate from './upload-item.tpl.html'\nimport { UploadItemCtrl } from './upload-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass UploadItem {\n /**\n * @ngInject\n */\n constructor() {\n this.restrict = 'E'\n this.template = UploadItemTemplate\n this.scope = {\n item: '=',\n }\n this.controller = UploadItemCtrl\n this.controllerAs = 'Upload'\n this.bindToController = true\n }\n}\n\nexport { UploadItem }\n","class UploadViewCtrl {\n /**\n * @ngInject\n * @param {ng.IScope} $scope\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\n constructor($scope, Utils, $element) {\n this.Scope = $scope\n this.Element = $element\n this.Utils = Utils\n this.formItem = {}\n }\n init() {\n this.isMultiple = false\n this.showAllowed = false\n this.formItem = this.Utils.extend(this.formItem || {}, {\n config: {\n size: 10,\n uploadFileButtonLabel: 'Add files',\n },\n options: [],\n })\n if (this.isPreview()) {\n this._enableWatchers()\n }\n }\n _updateMultiple() {\n this.isMultiple = !!this.formItem.config.multipleUpload\n const input = angular.element(\n this.Element[0].querySelector('input[type=file]')\n )\n if (input) {\n this.formItem.options = []\n if (this.isMultiple) {\n input.attr('multiple', 'multiple')\n } else {\n input.removeAttr('multiple')\n }\n }\n }\n\n _updateAccept() {\n this.showAllowed = !!this.formItem.config.showAccept\n const input = angular.element(\n this.Element[0].querySelector('input[type=file]')\n )\n if (input) {\n if (this.showAllowed) {\n input[0].setAttribute('accept', this.formItem.config.accept)\n } else {\n input[0].removeAttribute('accept')\n delete this.formItem.config.accept\n }\n }\n }\n\n _enableWatchers() {\n this.Scope.$watch('UploadView.formItem.config.multipleUpload', (newVal) => {\n if (newVal !== undefined) {\n this._updateMultiple()\n }\n })\n\n this.Scope.$watch('UploadView.formItem.config.showAccept', (newVal) => {\n if (newVal !== undefined) {\n this._updateAccept()\n }\n })\n\n this.Scope.$watch('UploadView.formItem.config.accept', (newVal) => {\n if (newVal !== undefined) {\n this._updateAccept()\n }\n })\n }\n\n removeItem(index) {\n this.formItem.options.splice(index, 1)\n }\n}\nexport { UploadViewCtrl }\n","import { UploadViewCtrl } from './upload-view.controller'\nimport UploadViewTemplate from './upload-view.tpl.html'\n\nconst MB = 1024 * 1024\n\nclass UploadView {\n /**\n * @ngInject\n * @param {ng.ITimeoutService} $timeout\n */\n constructor($timeout) {\n this.$timeout = $timeout\n this.template = UploadViewTemplate\n this.restrict = 'E'\n this.scope = {\n formItem: '=',\n isPreview: '&',\n form: '=',\n }\n this.controller = UploadViewCtrl\n this.controllerAs = 'UploadView'\n this.bindToController = true\n }\n\n /**\n * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n * @param {ng.IScope} scope - scope\n * @param {JQLite} element - element\n * @param {ng.IAttributes} attrs - attributes\n * @param {UploadViewCtrl} ctrl - this instance controller\n * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n */\n link(scope, element, attrs, ctrl) {\n //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n this.$timeout(function () {\n ctrl.init()\n }, 50)\n\n const button = angular.element(element[0].querySelector('.upload-button'))\n const input = angular.element(element[0].querySelector('input[type=file]'))\n const label = angular.element(element[0].querySelector('label'))\n\n if (label.length) {\n label.css('display', 'none')\n }\n\n button.on('click', () => {\n label.css('display', 'none')\n typeof input.trigger === 'function'\n ? input.trigger('click')\n : input[0].click()\n })\n\n input.on('change', (e) => {\n scope.$apply(function () {\n /**\n * @type {File[]}\n */\n const files = Array.from(e.target.files)\n // Max allowed size in MB\n const maxSizeMB = ctrl.formItem.config.size * MB\n const exceedsSize = files.some((file) => file.size >= maxSizeMB)\n if (exceedsSize) {\n label.css('display', 'block')\n label.text(ctrl.formItem.config.sizeErrMessage)\n ctrl.formItem.options = []\n } else {\n ctrl.formItem.options = files.map((file) => {\n const { name, size, type } = file\n return { name, size, type, file }\n })\n }\n })\n })\n }\n}\n\nexport { UploadView }\n","/**\n * @typedef {{type:string}} Item\n * @typedef {{items: Item[]}} FormConfig\n */\n\nclass MainController {\n /**\n * @ngInject\n */\n constructor() {\n /**\n * @type {FormConfig}\n */\n this.form = {\n items: [],\n }\n }\n\n /**\n * Add new Item\n * @param {string} type\n */\n addItem(type) {\n this.form.items.push({\n type,\n })\n }\n\n /**\n * Remove item at index\n * @param {Item} item\n * @param {number} index\n */\n delete(item, index) {\n this.form.items.splice(index, 1)\n }\n\n /**\n * insert before (bounded)\n * Pops out latest element (wanted?)\n * @param {Item} item\n * @param {number} index\n */\n up(item, index) {\n if (index !== 0) {\n const prevItem = this.form.items[index - 1]\n this.form.items[index] = prevItem\n this.form.items[index - 1] = item\n }\n }\n\n /**\n * insert after (bounded)\n * Pops out latest element (wanted?)\n * @param {Item} item\n * @param {number} index\n */\n down(item, index) {\n if (index !== this.form.items.length - 1) {\n const nextItem = this.form.items[index + 1]\n this.form.items[index] = nextItem\n this.form.items[index + 1] = item\n }\n }\n}\n\nexport { MainController }\n","class Utils {\n /**\n * Recursively extend object properties\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object}\n */\n extend(dest, src) {\n return Object.keys(src).reduce(\n (result, key) => {\n if (typeof result[key] === 'undefined') {\n result[key] = src[key]\n } else if (typeof src[key] === 'object') {\n result[key] = this.extend(result[key], src[key])\n }\n return result\n },\n typeof dest === 'undefined' ? {} : dest\n )\n }\n}\n\nexport { Utils }\n","export default \"<md-input-container>\\n <div\\n layout=\\\"{{AgreementView.formItem.config.direction == 'horizontal' ? 'row' : 'columb'}}\\\"\\n >\\n <md-checkbox\\n ng-model=\\\"AgreementView.formItem.options[0].selected\\\"\\n ng-change=\\\"AgreementView.toggleSelectedOption(option)\\\"\\n ng-disabled=\\\"AgreementView.disableOptions && !option.selected\\\"\\n aria-label=\\\"...\\\"\\n >{{AgreementView.formItem.options[0].value}}</md-checkbox\\n >\\n </div>\\n\\n <div ng-messages=\\\"AgreementView.form.$error\\\">\\n <div ng-message=\\\"minSelections\\\">\\n Must select {{AgreementView.formItem.maxSelections || 1}} items\\n </div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Checkboxes.item.options\\\"\\n>\\n <md-input-container class=\\\"md-block\\\">\\n <label>Max Selections</label>\\n <input type=\\\"number\\\" ng-model=\\\"Checkboxes.item.config.maxSelections\\\" />\\n </md-input-container>\\n\\n <md-switch\\n ng-model=\\\"Checkboxes.item.config.direction\\\"\\n ng-true-value=\\\"'horizontal'\\\"\\n ng-false-value=\\\"'vertical'\\\"\\n >\\n Layout direction ({{Checkboxes.item.config.direction == 'horizontal' ?\\n 'Horizontal' : 'Vertical'}})\\n </md-switch>\\n\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in Checkboxes.item.options track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Option {{$index + 1}}</label>\\n <input ng-model=\\\"option.value\\\" />\\n </md-input-container>\\n\\n <md-button class=\\\"md-button\\\" ng-click=\\\"Checkboxes.deleteOption($index)\\\">\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n </md-button>\\n </div>\\n <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n <md-button\\n class=\\\"md-primary add-option-button\\\"\\n ng-click=\\\"Checkboxes.addOption()\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">add</md-icon>\\n </md-button>\\n </div>\\n</div>\\n\";","export default \"<md-input-container>\\n <div\\n layout=\\\"{{CheckboxesView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n >\\n <md-checkbox\\n ng-repeat=\\\"option in CheckboxesView.formItem.options track by $index\\\"\\n ng-model=\\\"option.selected\\\"\\n ng-change=\\\"CheckboxesView.toggleSelectedOption(option)\\\"\\n ng-disabled=\\\"CheckboxesView.disableOptions && !option.selected\\\"\\n aria-label=\\\"...\\\"\\n >{{option.value}}</md-checkbox\\n >\\n </div>\\n\\n <div ng-messages=\\\"CheckboxesView.form.$error\\\">\\n <div ng-message=\\\"minSelections\\\">\\n Must select {{CheckboxesView.formItem.maxSelections || 1}} items\\n </div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div class=\\\"form-item-container md-inline-form\\\">\\n <div class=\\\"form-item-actions\\\">\\n <md-button\\n class=\\\"md-button\\\"\\n ng-if=\\\"FormItem.Attrs.onDelete\\\"\\n ng-click=\\\"FormItem.deleteClicked()\\\"\\n >\\n <md-icon class=\\\"material-icons small\\\">delete</md-icon>\\n </md-button>\\n <md-button\\n class=\\\"md-button\\\"\\n ng-if=\\\"FormItem.Attrs.onUp\\\"\\n ng-click=\\\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\\\"\\n >\\n <md-icon class=\\\"material-icons small\\\">arrow_drop_up</md-icon>\\n </md-button>\\n <md-button\\n class=\\\"md-button\\\"\\n ng-if=\\\"FormItem.Attrs.onDown\\\"\\n ng-click=\\\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\\\"\\n >\\n <md-icon class=\\\"material-icons small\\\">arrow_drop_down</md-icon>\\n </md-button>\\n </div>\\n\\n <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n <label>Field Title</label>\\n <input ng-model=\\\"FormItem.item.props.title\\\" />\\n </md-input-container>\\n\\n <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n <label>Help Text</label>\\n <input ng-model=\\\"FormItem.item.props.helpText\\\" />\\n </md-input-container>\\n\\n <md-input-container\\n ng-if=\\\"FormItem.item.type === 'agreement'\\\"\\n class=\\\"md-block\\\"\\n >\\n <label>Option Text</label>\\n <input ng-model=\\\"FormItem.item.options[0].value\\\" />\\n </md-input-container>\\n\\n <div ng-switch=\\\"FormItem.item.type\\\">\\n <upload-item ng-switch-when=\\\"upload\\\" item=\\\"FormItem.item\\\"></upload-item>\\n <agreement-item\\n ng-switch-when=\\\"agreement\\\"\\n item=\\\"FormItem.item\\\"\\n ></agreement-item>\\n <label-item ng-switch-when=\\\"label\\\" item=\\\"FormItem.item\\\"></label-item>\\n <input-item ng-switch-when=\\\"input\\\" item=\\\"FormItem.item\\\"></input-item>\\n <radio-button-item\\n ng-switch-when=\\\"multipleChoices\\\"\\n item=\\\"FormItem.item\\\"\\n ></radio-button-item>\\n <matrix-item ng-switch-when=\\\"matrix\\\" item=\\\"FormItem.item\\\"></matrix-item>\\n <checkboxes-item\\n ng-switch-when=\\\"checkboxes\\\"\\n item=\\\"FormItem.item\\\"\\n ></checkboxes-item>\\n <textarea-item\\n ng-switch-when=\\\"textarea\\\"\\n item=\\\"FormItem.item\\\"\\n ></textarea-item>\\n <select-item\\n ng-switch-when=\\\"chooseFromList\\\"\\n item=\\\"FormItem.item\\\"\\n ></select-item>\\n <p ng-switch-default>UNKNOWN TYPE</p>\\n </div>\\n\\n <md-input-container\\n ng-if=\\\"FormItem.item.type != 'label' && FormItem.item.type != 'upload'\\\"\\n class=\\\"md-block\\\"\\n >\\n <md-checkbox ng-model=\\\"FormItem.item.config.required\\\"\\n >Required field</md-checkbox\\n >\\n </md-input-container>\\n</div>\\n\";","export default \"<div>\\n <form-item\\n ng-repeat=\\\"item in container.form.items track by $index\\\"\\n type=\\\"{{item.type}}\\\"\\n item=\\\"item\\\"\\n index=\\\"$index\\\"\\n on-delete=\\\"container.delete(item, index)\\\"\\n on-up=\\\"container.up(item, index)\\\"\\n on-down=\\\"container.down(item, index)\\\"\\n >\\n </form-item>\\n</div>\\n\";","export default \"<div class=\\\"md-inline-form\\\">\\n <div\\n class=\\\"formItem\\\"\\n ng-repeat=\\\"formItem in FormView.form.items track by $index\\\"\\n ng-switch=\\\"formItem.type\\\"\\n layout=\\\"column\\\"\\n >\\n <ng-form name=\\\"formItemForm\\\">\\n <div>\\n <div class=\\\"formItem-title\\\" ng-show=\\\"formItem.type !== 'label'\\\">{{formItem.props.title}}</div>\\n <div class=\\\"formItem-help-text\\\">{{formItem.props.helpText}}</div>\\n\\n <upload-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"upload\\\"\\n ></upload-view>\\n <agreement-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"agreement\\\"\\n ></agreement-view>\\n <checkboxes-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"checkboxes\\\"\\n ></checkboxes-view>\\n <radio-button-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"multipleChoices\\\"\\n ></radio-button-view>\\n <input-view\\n form-item=\\\"formItem\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"input\\\"\\n ></input-view>\\n <textarea-view\\n form-item=\\\"formItem\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"textarea\\\"\\n ></textarea-view>\\n <matrix-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"matrix\\\"\\n ></matrix-view>\\n <select-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"chooseFromList\\\"\\n ></select-view>\\n <label-view\\n form-item=\\\"formItem\\\"\\n is-preview=\\\"true\\\"\\n form=\\\"formItemForm\\\"\\n ng-switch-when=\\\"label\\\"\\n ></label-view>\\n </div>\\n </ng-form>\\n </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <label>Placeholder</label>\\n <input type=\\\"text\\\" ng-model=\\\"Input.item.config.placeholder\\\" />\\n</md-input-container>\\n<md-input-container class=\\\"md-block\\\">\\n <label>Type</label>\\n <md-select ng-model=\\\"Input.item.config.type\\\">\\n <md-option value=\\\"text\\\">Text</md-option>\\n <md-option value=\\\"number\\\">Number</md-option>\\n <md-option value=\\\"email\\\">Email</md-option>\\n </md-select>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <input\\n ng-model=\\\"InputView.formItem.value\\\"\\n type=\\\"{{InputView.formItem.config.type}}\\\"\\n placeholder=\\\"{{InputView.formItem.config.placeholder}}\\\"\\n ng-required=\\\"InputView.formItem.config.required\\\"\\n />\\n <div ng-messages=\\\"InputView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <label>Text</label>\\n <textarea ng-model=\\\"Label.item.value\\\" md-maxlength=\\\"150\\\" rows=\\\"5\\\"></textarea>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <md-content flex layout-padding layout=\\\"row\\\" layout-align=\\\"center center\\\">\\n <pre>\\n \\n <span class=\\\"formItem-content\\\" ng-bind-html=\\\"LabelView.sanitizedTitle\\\"></span>\\n </pre>\\n </md-content>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container columnContainer\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Matrix.item.config.columns\\\"\\n>\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"column in Matrix.item.config.columns track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"input-container\\\">\\n <label>Column {{$index + 1}}</label>\\n <input ng-model=\\\"column.value\\\" />\\n </md-input-container>\\n\\n <md-button\\n class=\\\"md-button\\\"\\n md-no-ink\\n aria-label=\\\"delete column item\\\"\\n ng-click=\\\"Matrix.deleteColumn($index)\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n </md-button>\\n </div>\\n <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n <md-button\\n class=\\\"md-primary add-option-button\\\"\\n md-no-ink\\n aria-label=\\\"add option item\\\"\\n ng-click=\\\"Matrix.addColumn()\\\"\\n >Add Column</md-button\\n >\\n </div>\\n</div>\\n\\n<div\\n class=\\\"sortable-container rowContainer\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Matrix.item.config.rows\\\"\\n>\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"row in Matrix.item.config.rows track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder row item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"input-container\\\">\\n <label>Row {{$index + 1}}</label>\\n <input ng-model=\\\"row.value\\\" />\\n </md-input-container>\\n\\n <md-button\\n class=\\\"md-button\\\"\\n md-no-ink\\n aria-label=\\\"delete row item\\\"\\n ng-click=\\\"Matrix.deleteRow($index)\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n </md-button>\\n </div>\\n <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n <md-button\\n class=\\\"md-primary add-option-button\\\"\\n md-no-ink\\n aria-label=\\\"add row item\\\"\\n ng-click=\\\"Matrix.addRow()\\\"\\n >Add row</md-button\\n >\\n </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"matrix-container md-block\\\" layout=\\\"column\\\">\\n <div class=\\\"matrix\\\">\\n <div class=\\\"matrix-row\\\" flex layout=\\\"row\\\">\\n <span class=\\\"matrix-cell\\\" flex=\\\"20\\\"></span>\\n <span\\n class=\\\"matrix-cell matrix-cell-header\\\"\\n flex\\n ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n >{{column.value}}</span\\n >\\n </div>\\n <div\\n class=\\\"matrix-row\\\"\\n ng-repeat=\\\"row in MatrixView.formItem.config.rows track by $index\\\"\\n layout=\\\"row\\\"\\n >\\n <span class=\\\"matrix-cell\\\" flex=\\\"20\\\" layout=\\\"column\\\" layout-align=\\\"center\\\"\\n >{{row.value}}</span\\n >\\n <md-radio-group\\n ng-model=\\\"row.selected\\\"\\n ng-change=\\\"MatrixView._updateValidity()\\\"\\n flex\\n layout=\\\"row\\\"\\n >\\n <span\\n class=\\\"matrix-cell radio-button-cell\\\"\\n flex\\n ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n >\\n <md-radio-button\\n value=\\\"{{column.value}}\\\"\\n aria-label=\\\"...\\\"\\n ></md-radio-button>\\n </span>\\n </md-radio-group>\\n </div>\\n </div>\\n\\n <div ng-messages=\\\"MatrixView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"RadioButton.item.options\\\"\\n>\\n <md-switch\\n ng-model=\\\"RadioButton.item.config.direction\\\"\\n ng-true-value=\\\"'horizontal'\\\"\\n ng-false-value=\\\"'vertical'\\\"\\n >\\n Layout direction ({{RadioButton.item.config.direction == 'horizontal' ?\\n 'Horizontal' : 'Vertical'}})\\n </md-switch>\\n\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in RadioButton.item.options track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Option {{$index + 1}}</label>\\n <input ng-model=\\\"option.value\\\" />\\n </md-input-container>\\n\\n <md-button\\n class=\\\"md-button md-warn\\\"\\n ng-click=\\\"RadioButton.deleteOption($index)\\\"\\n >\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n </md-button>\\n </div>\\n\\n <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"RadioButton.addOption()\\\"\\n >Add Option</md-button\\n >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <md-radio-group\\n name=\\\"formItemInput\\\"\\n ng-required=\\\"RadioButtonView.formItem.config.required\\\"\\n ng-model=\\\"RadioButtonView.formItem.value\\\"\\n layout=\\\"{{RadioButtonView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n required\\n >\\n <md-radio-button\\n ng-repeat=\\\"option in RadioButtonView.formItem.options track by $index\\\"\\n value=\\\"{{option.value}}\\\"\\n aria-label=\\\"...\\\"\\n >\\n {{option.value}}\\n </md-radio-button>\\n </md-radio-group>\\n\\n <div ng-messages=\\\"RadioButtonView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Select.item.options\\\"\\n>\\n <div\\n class=\\\"option-item\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in Select.item.options track by $index\\\"\\n sv-element\\n >\\n <md-button\\n class=\\\"md-button handle\\\"\\n md-no-ink\\n aria-label=\\\"reorder option item\\\"\\n sv-handle\\n >\\n <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n </md-button>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Option {{$index + 1}}</label>\\n <input ng-model=\\\"option.value\\\" />\\n </md-input-container>\\n\\n <md-button class=\\\"md-button md-warn\\\" ng-click=\\\"Select.deleteOption($index)\\\">\\n <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n </md-button>\\n </div>\\n\\n <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"Select.addOption()\\\"\\n >Add Option</md-button\\n >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <md-select\\n name=\\\"formItemInput\\\"\\n ng-required=\\\"SelectView.formItem.config.required\\\"\\n ng-model=\\\"SelectView.formItem.value\\\"\\n >\\n <md-option\\n ng-repeat=\\\"option in SelectView.formItem.options track by $index\\\"\\n ng-value=\\\"option.value\\\"\\n >{{ option.value }}</md-option\\n >\\n </md-select>\\n <div ng-messages=\\\"SelectView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <label>Placeholder</label>\\n <input type=\\\"text\\\" ng-model=\\\"Textarea.item.config.placeholder\\\" />\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n <textarea\\n ng-model=\\\"TextareaView.formItem.value\\\"\\n placeholder=\\\"{{TextareaView.formItem.config.placeholder}}\\\"\\n ng-required=\\\"TextareaView.formItem.config.required\\\"\\n ></textarea>\\n <div ng-messages=\\\"TextareaView.form.$error\\\">\\n <div ng-message=\\\"required\\\">This field is required</div>\\n </div>\\n</md-input-container>\\n\";","export default \"<div\\n class=\\\"sortable-container\\\"\\n layout=\\\"column\\\"\\n sv-root\\n sv-part=\\\"Upload.item.options\\\"\\n>\\n <md-input-container class=\\\"md-block\\\">\\n <label>Upload Button label</label>\\n <input ng-model=\\\"Upload.item.config.uploadFileButtonLabel\\\" />\\n </md-input-container>\\n\\n <md-switch\\n ng-model=\\\"Upload.item.config.multipleUpload\\\"\\n ng-true-value=\\\"true\\\"\\n ng-false-value=\\\"false\\\"\\n >\\n Multiple\\n </md-switch>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <span>Max File size: {{Upload.item.config.size}} Mb</span>\\n <input\\n type=\\\"number\\\"\\n id=\\\"size\\\"\\n name=\\\"size\\\"\\n min=\\\"0.1\\\"\\n max=\\\"999\\\"\\n step=\\\"0.1\\\"\\n aria-label=\\\"size\\\"\\n ng-model=\\\"Upload.item.config.size\\\"\\n />\\n </md-input-container>\\n\\n <md-input-container class=\\\"md-block\\\">\\n <label>Max file size error message</label>\\n <textarea\\n ng-model=\\\"Upload.item.config.sizeErrMessage\\\"\\n md-maxlength=\\\"150\\\"\\n rows=\\\"2\\\"\\n ></textarea>\\n </md-input-container>\\n\\n <md-switch\\n ng-model=\\\"Upload.item.config.showAccept\\\"\\n ng-true-value=\\\"true\\\"\\n ng-false-value=\\\"false\\\"\\n >\\n Configure allowed file types\\n </md-switch>\\n\\n <md-input-container class=\\\"md-block\\\" ng-if=\\\"Upload.item.config.showAccept\\\">\\n <label>Allowed Types</label>\\n <textarea\\n ng-model=\\\"Upload.item.config.accept\\\"\\n md-maxlength=\\\"150\\\"\\n rows=\\\"2\\\"\\n ></textarea>\\n </md-input-container>\\n</div>\\n\";","export default \"<div layout=\\\"row\\\" class=\\\"option-item upload-item\\\">\\n <md-input-container class=\\\"md-block\\\" style=\\\"margin: 0\\\">\\n <input type=\\\"file\\\" class=\\\"ng-hide\\\" aria-label=\\\"file\\\" />\\n <md-input-container flex class=\\\"md-block\\\">\\n <input\\n type=\\\"text\\\"\\n ng-model=\\\"fileName\\\"\\n class=\\\"ng-hide\\\"\\n disabled\\n aria-label=\\\"fileName\\\"\\n />\\n </md-input-container>\\n </md-input-container>\\n\\n <md-button class=\\\"md-raised md-accent upload-button\\\"\\n ><md-icon class=\\\"material-icons\\\">attach_file</md-icon\\n ><span\\n >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\\n ></md-button\\n >\\n</div>\\n\\n<div>\\n <label></label>\\n <div\\n style=\\\"display: grid; grid-template-columns: 8em auto; align-items: center\\\"\\n layout=\\\"row\\\"\\n ng-repeat=\\\"option in UploadView.formItem.options track by $index\\\"\\n >\\n <md-button ng-click=\\\"UploadView.removeItem($index)\\\" class=\\\"md-icon-button\\\">\\n <md-icon class=\\\"material-icons\\\">close</md-icon>\\n </md-button>\\n <span>{{option.name}}</span>\\n </div>\\n</div>\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import './index.scss'\nimport { UploadItem } from './directives/upload-item/upload-item.directive'\nimport { UploadView } from './directives/upload-item/upload-view.directive'\nimport { AgreementItem } from './directives/agreement-item/agreement-item.directive'\nimport { AgreementView } from './directives/agreement-item/agreement-view.directive'\nimport { MainController } from './main/main.controller'\nimport { Utils } from './utils/utils.service'\nimport { CheckboxesItem } from './directives/checkboxes-item/checkboxes-item.directive'\nimport { CheckboxesView } from './directives/checkboxes-item/checkboxes-view.directive'\nimport { FormItem } from './directives/form-item/form-item.directive'\nimport { FormItemsContainer } from './directives/form-items-container/form-items-container.directive'\nimport { FormView } from './directives/form-view/form-view.directive'\nimport { InputItem } from './directives/input-item/input-item.directive'\nimport { InputView } from './directives/input-item/input-view.directive'\nimport { LabelItem } from './directives/label-item/label-item.directive'\nimport { LabelView } from './directives/label-item/label-view.directive'\nimport { MatrixItem } from './directives/matrix-item/matrix-item.directive'\nimport { MatrixView } from './directives/matrix-item/matrix-view.directive'\nimport { RadioButtonItem } from './directives/radio-button-item/radio-button-item.directive'\nimport { RadioButtonView } from './directives/radio-button-item/radio-button-view.directive'\nimport { SelectView } from './directives/select-item/select-view.directive'\nimport { SelectItem } from './directives/select-item/select-item.directive'\nimport { TextareaItem } from './directives/textarea-item/textarea-item.directive'\nimport { TextareaView } from './directives/textarea-item/textarea-view.directive'\n\nexport default angular\n .module('angularMaterialFormBuilder', [\n 'ngMaterial',\n 'angular-sortable-view',\n 'ngMessages',\n ])\n .service('Utils', Utils)\n .controller('MainController', MainController)\n .directive('uploadItem', UploadItem)\n .directive('uploadView', UploadView)\n .directive('agreementItem', AgreementItem)\n .directive('agreementView', AgreementView)\n .directive('checkboxesItem', CheckboxesItem)\n .directive('checkboxesView', CheckboxesView)\n .directive('formItem', FormItem)\n .directive('formItemsContainer', FormItemsContainer)\n .directive('formView', FormView)\n .directive('inputItem', InputItem)\n .directive('inputView', InputView)\n .directive('labelItem', LabelItem)\n .directive('labelView', LabelView)\n .directive('matrixItem', MatrixItem)\n .directive('matrixView', MatrixView)\n .directive('radioButtonItem', RadioButtonItem)\n .directive('radioButtonView', RadioButtonView)\n .directive('selectItem', SelectItem)\n .directive('selectView', SelectView)\n .directive('textareaItem', TextareaItem)\n .directive('textareaView', TextareaView)\n"],"names":["root","factory","exports","module","define","amd","self","AgreementItemCtrl","Utils","$element","this","Element","item","extend","config","maxSelections","options","value","selected","AgreementItem","constructor","restrict","scope","controller","controllerAs","bindToController","AgreementViewCtrl","$scope","Scope","formItem","init","selectedOptions","_getSelectedOptions","disableOptions","isValid","_updateView","_updateValidity","isPreview","_enableWatchers","toggleSelectedOption","filter","option","length","required","form","$setValidity","$watch","newVal","undefined","AgreementView","$timeout","template","AgreementViewTemplate","link","element","attrs","ctrl","CheckboxesItemCtrl","deleteOption","index","splice","addOption","push","setTimeout","find","focus","CheckboxesItem","CheckboxesItemTemplate","CheckboxesViewCtrl","CheckboxesView","CheckboxesViewTemplate","DEFAULT_TITLE","upload","agreement","input","chooseFromList","label","multipleChoices","matrix","checkboxes","textarea","FormItemCtrl","$attrs","Attrs","templates","type","props","title","helpText","deleteClicked","onDelete","_getItemTemplate","FormItem","$compile","onUp","onDown","FormItemTemplate","el","FormItemsContainerCtrl","items","delete","up","prevItem","down","nextItem","FormItemsContainer","FormItemsContainerTemplate","FormViewCtrl","FormView","FormViewTemplate","InputItemCtrl","InputItem","InputItemTemplate","InputViewCtrl","InputView","InputViewTemplate","elem","LabelItemCtrl","LabelItem","LabelItemTemplate","LabelViewCtrl","$sce","sanitizedTitle","trustAsHtml","LabelView","LabelViewTemplate","MatrixItemCtrl","$document","RowContainer","angular","querySelector","ColumnContainer","rows","columns","deleteRow","addRow","bind","deleteColumn","addColumn","MatrixItem","MatrixItemTemplate","MatrixViewCtrl","valid","some","row","$watchGroup","MatrixView","MatrixViewTemplate","RadioButtonItemCtrl","RadioButtonItem","RadioButtonTemplate","RadioButtonViewCtrl","RadioButtonView","RadioButtonViewTemplate","SelectItemCtrl","SelectItem","SelectTemplate","SelectViewCtrl","SelectView","SelectViewTemplate","TextareaItemCtrl","TextareaItem","TextareaItemTemplate","TextareaViewCtrl","TextareaView","TextareaViewTemplate","UploadItemCtrl","UploadItem","UploadItemTemplate","UploadViewCtrl","isMultiple","showAllowed","size","uploadFileButtonLabel","_updateMultiple","multipleUpload","attr","removeAttr","_updateAccept","showAccept","setAttribute","accept","removeAttribute","removeItem","UploadView","UploadViewTemplate","button","css","on","trigger","click","e","$apply","files","Array","from","target","maxSizeMB","file","text","sizeErrMessage","map","name","MainController","addItem","dest","src","Object","keys","reduce","result","key","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","service","directive"],"sourceRoot":""}
\ No newline at end of file