udata 9.1.4__py2.py3-none-any.whl → 9.1.4.dev30973__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of udata might be problematic. Click here for more details.
- tasks/__init__.py +2 -2
- udata/__init__.py +1 -1
- udata/api/__init__.py +3 -2
- udata/api/commands.py +1 -0
- udata/api/fields.py +1 -22
- udata/api_fields.py +37 -140
- udata/app.py +1 -1
- udata/auth/__init__.py +12 -8
- udata/commands/db.py +3 -3
- udata/commands/dcat.py +1 -1
- udata/commands/fixtures.py +40 -60
- udata/commands/purge.py +1 -2
- udata/commands/tests/test_fixtures.py +11 -44
- udata/core/activity/api.py +1 -14
- udata/core/activity/tasks.py +1 -1
- udata/core/badges/models.py +2 -6
- udata/core/contact_point/api.py +3 -1
- udata/core/dataservices/api.py +1 -37
- udata/core/dataservices/models.py +0 -38
- udata/core/dataservices/tasks.py +1 -1
- udata/core/dataset/events.py +1 -4
- udata/core/dataset/forms.py +2 -0
- udata/core/dataset/models.py +10 -12
- udata/core/dataset/rdf.py +1 -1
- udata/core/discussions/api.py +1 -1
- udata/core/discussions/models.py +2 -2
- udata/core/discussions/tasks.py +1 -1
- udata/core/metrics/models.py +1 -4
- udata/core/organization/api.py +7 -11
- udata/core/organization/api_fields.py +4 -10
- udata/core/organization/apiv2.py +1 -1
- udata/core/organization/csv.py +0 -1
- udata/core/organization/rdf.py +1 -4
- udata/core/owned.py +2 -4
- udata/core/post/api.py +2 -2
- udata/core/reuse/api.py +25 -32
- udata/core/reuse/api_fields.py +101 -2
- udata/core/reuse/apiv2.py +4 -4
- udata/core/reuse/forms.py +45 -0
- udata/core/reuse/models.py +16 -98
- udata/core/site/api.py +29 -3
- udata/core/spatial/commands.py +3 -3
- udata/core/spatial/factories.py +1 -1
- udata/core/spatial/forms.py +1 -1
- udata/core/spatial/models.py +2 -2
- udata/core/spatial/tests/test_models.py +1 -1
- udata/core/spatial/translations.py +1 -3
- udata/core/topic/api.py +2 -2
- udata/core/topic/apiv2.py +2 -1
- udata/core/user/api.py +8 -28
- udata/core/user/metrics.py +1 -1
- udata/cors.py +4 -4
- udata/features/transfer/api.py +2 -1
- udata/harvest/actions.py +1 -1
- udata/harvest/backends/__init__.py +1 -1
- udata/harvest/tasks.py +1 -0
- udata/harvest/tests/factories.py +2 -0
- udata/harvest/tests/test_base_backend.py +1 -0
- udata/harvest/tests/test_dcat_backend.py +17 -16
- udata/migrations/2020-07-24-remove-s-from-scope-oauth.py +1 -1
- udata/migrations/2021-07-05-remove-unused-badges.py +1 -0
- udata/migrations/2023-02-08-rename-internal-dates.py +2 -0
- udata/migrations/2024-06-11-fix-reuse-datasets-references.py +1 -0
- udata/mongo/datetime_fields.py +4 -11
- udata/mongo/document.py +0 -2
- udata/mongo/taglist_field.py +0 -26
- udata/search/commands.py +1 -1
- udata/search/query.py +1 -1
- udata/settings.py +0 -1
- udata/static/admin.js +36 -36
- udata/static/admin.js.map +1 -1
- udata/static/chunks/{12.576e63b7a990f8eab784.js → 12.5b900cac4417e10ef3a0.js} +2 -2
- udata/static/chunks/12.5b900cac4417e10ef3a0.js.map +1 -0
- udata/static/chunks/{28.1ef31a46255dc2bf56d1.js → 28.1759a7f57d526e6db574.js} +2 -2
- udata/static/chunks/28.1759a7f57d526e6db574.js.map +1 -0
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/api/test_base_api.py +1 -1
- udata/tests/api/test_contact_points.py +4 -4
- udata/tests/api/test_dataservices_api.py +0 -59
- udata/tests/api/test_datasets_api.py +10 -10
- udata/tests/api/test_organizations_api.py +39 -39
- udata/tests/api/test_reuses_api.py +0 -49
- udata/tests/api/test_tags_api.py +4 -4
- udata/tests/api/test_transfer_api.py +1 -1
- udata/tests/api/test_user_api.py +0 -11
- udata/tests/apiv2/test_datasets.py +4 -4
- udata/tests/dataset/test_dataset_events.py +0 -28
- udata/tests/dataset/test_dataset_model.py +3 -3
- udata/tests/frontend/__init__.py +2 -0
- udata/tests/frontend/test_auth.py +1 -0
- udata/tests/organization/test_csv_adapter.py +2 -0
- udata/tests/organization/test_notifications.py +3 -3
- udata/tests/organization/test_organization_rdf.py +6 -31
- udata/tests/reuse/test_reuse_model.py +1 -0
- udata/tests/site/test_site_rdf.py +3 -1
- udata/tests/test_cors.py +3 -0
- udata/tests/test_owned.py +4 -4
- udata/tests/test_routing.py +1 -1
- udata/tests/test_tags.py +1 -1
- udata/tests/test_transfer.py +2 -1
- udata/tests/workers/test_jobs_commands.py +1 -1
- udata/utils.py +0 -12
- {udata-9.1.4.dist-info → udata-9.1.4.dev30973.dist-info}/METADATA +4 -16
- {udata-9.1.4.dist-info → udata-9.1.4.dev30973.dist-info}/RECORD +109 -109
- udata/static/chunks/12.576e63b7a990f8eab784.js.map +0 -1
- udata/static/chunks/28.1ef31a46255dc2bf56d1.js.map +0 -1
- udata/tests/api/test_activities_api.py +0 -69
- {udata-9.1.4.dist-info → udata-9.1.4.dev30973.dist-info}/LICENSE +0 -0
- {udata-9.1.4.dist-info → udata-9.1.4.dev30973.dist-info}/WHEEL +0 -0
- {udata-9.1.4.dist-info → udata-9.1.4.dev30973.dist-info}/entry_points.txt +0 -0
- {udata-9.1.4.dist-info → udata-9.1.4.dev30973.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///chunks/28.1759a7f57d526e6db574.js","webpack:///./js/views/reuse-edit.vue","webpack:///./js/components/form/base-field.js?d201*******************","webpack:///./js/components/containers/box.vue?d551*************************","webpack:///./~/babel-runtime/core-js/array/from.js?efc2*********************","webpack:///alert.vue?1c68*************************","webpack:///box.vue?d8a3*************************","webpack:///notification-zone.vue?c57f*************************","webpack:///./js/components/containers/box.vue?03f9**************************","webpack:///./js/components/notification-zone.vue?f3a6**************************","webpack:///./js/components/alert.vue?52bc**************************","webpack:///./js/components/containers/box.vue?0bc1**************************","webpack:///./js/components/notification-zone.vue?8959**************************","webpack:///./js/components/alert.vue?21f3*************************","webpack:///./js/components/notification-zone.vue?9c39*************************","webpack:///./js/components/containers/box.vue?c725**************************","webpack:///./js/components/notification-zone.vue?b8a2**************************","webpack:///./~/babel-runtime/helpers/toConsumableArray.js?1825*******************","webpack:///./~/core-js/library/fn/array/from.js?669d*********************","webpack:///./js/components/form/date-picker.vue?2ff1*******************","webpack:///./js/components/form/select-input.vue?1a51*******************","webpack:///./js/components/calendar.vue?b4b3*******************","webpack:///./js/components/form/checkbox.vue?79f6*******************","webpack:///./js/components/form/hidden-input.vue?6d3c*******************","webpack:///./js/components/form/markdown-editor.vue?572c*******************","webpack:///./js/components/form/number-input.vue?2cd5*******************","webpack:///./js/components/form/select-input-group.vue?d959*******************","webpack:///./js/components/form/text-input.vue?279a*******************","webpack:///calendar.vue?d6ac*******************","webpack:///checkbox.vue?f2a2*******************","webpack:///date-picker.vue?fccb*******************","webpack:///hidden-input.vue?0922*******************","webpack:///markdown-editor.vue?0452*******************","webpack:///number-input.vue?3c96*******************","webpack:///select-input-group.vue?40d9*******************","webpack:///select-input.vue?503b*******************","webpack:///text-input.vue?7c1b*******************","webpack:///./~/bootstrap-markdown/js/bootstrap-markdown.js?f021*******************","webpack:///./js/components/calendar.vue?bc04********************","webpack:///./js/components/form/checkbox.vue?45df********************","webpack:///./js/components/form/date-picker.vue?0ea9********************","webpack:///./js/components/form/markdown-editor.vue?cf40********************","webpack:///./js/components/calendar.vue?460f********************","webpack:///./js/components/form/checkbox.vue?4b49********************","webpack:///./js/components/form/date-picker.vue?872d********************","webpack:///./js/components/form/hidden-input.vue?f09c********************","webpack:///./js/components/form/markdown-editor.vue?fdce********************","webpack:///./js/components/form/number-input.vue?5698********************","webpack:///./js/components/form/select-input-group.vue?a8eb********************","webpack:///./js/components/form/select-input.vue?75a5********************","webpack:///./js/components/form/text-input.vue?cfa0********************","webpack:///./js/components/calendar.vue?16e8********************","webpack:///./js/components/form/checkbox.vue?d1f2********************","webpack:///./js/components/form/date-picker.vue?e485********************","webpack:///./js/components/form/markdown-editor.vue?e621********************","webpack:///./js/components/form/base-form.js?7e0b***************","webpack:///./~/jquery-validation/dist/jquery.validate.js?dd6f***************","webpack:///./js/components/form/vertical-field.vue?345a***********","webpack:///vertical-field.vue?ce1c***********","webpack:///vertical-form.vue?8bbc***********","webpack:///./js/components/form/vertical-field.vue?faaf************","webpack:///./js/components/form/vertical-form.vue?1138************","webpack:///./js/components/form/vertical-field.vue?0b08************","webpack:///./js/components/form/vertical-form.vue?c14c************","webpack:///./js/components/form/vertical-form.vue?fb1f***********","webpack:///./js/components/form/vertical-field.vue?e986************","webpack:///./js/components/form/vertical-form.vue?d3d1************","webpack:///form-layout.vue?09ae*****","webpack:///./js/components/form-layout.vue?056e******","webpack:///./js/components/form-layout.vue?edef******","webpack:///./js/components/form-layout.vue?5b81*****","webpack:///./js/components/form-layout.vue?ba77******","webpack:///form.vue?0cd7*","webpack:///./js/components/reuse/form.vue?e177*","webpack:///./js/components/reuse/form.vue?18da","webpack:///reuse-edit.vue","webpack:///./js/views/reuse-edit.vue?cb07"],"names":["webpackJsonp","896","module","exports","__webpack_require__","__vue_script__","__vue_template__","__esModule","default","options","template","984","_interopRequireDefault","obj","Object","defineProperty","value","BaseField","FieldComponentMixin","undefined","_logger","_logger2","_utils","_utils2","_vue","_vue2","props","field","type","model","description","property","required","Boolean","placeholder","String","readonly","methods","onChange","evt","this","$dispatch","target","name","data","errors","success","isField","components","text-input","number-input","hidden-input","select-input","select-input-group","markdown-editor","date-picker","checkbox","events","field:value-change","schema","computed","hasOwnProperty","properties","id","log","warn","indexOf","is_bool","is_hidden","u","getattr","label","$parent","widget","format","enum","Vue","util","resolveAsset","$options","resolve","reject","e","__WEBPACK_AMD_REQUIRE_ARRAY__","apply","bind","watch","985","986","987","989","991","TRANSITION_DURATION","AUTOCLOSE_DELAY","closing","alert","closable","classes","alert-dismissable","in","details","replace","close","_this","setTimeout","ready","_this2","autoclose","992","title","icon","boxclass","bodyclass","footerclass","loading","footer","993","_alert","_alert2","Alert","994","push","version","sources","names","mappings","file","sourcesContent","sourceRoot","995","996","997","998","999","1000","1001","content","sourceMap","locals","1002","1034","_from","_from2","arr","Array","isArray","i","arr2","length","1035","from","1036","1037","1038","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","optionalMoment","_moment2","_moment","VIEWS","MONTH_FORMAT","selected","coerce","min","max","view","current","today","days","weekdays","weekdaysMin","first","localeData","firstDayOfWeek","months","monthsShort","monthDisplay","rangeDisplay","year","start","clone","subtract","end","add","yearsRange","years","nextValue","previousValue","nextDisabled","isAfter","slice","pop","previousDisabled","isBefore","monthDays","date","startOf","endOf","row","diff","next","previous","zoomOut","pickDay","day","pickMonth","month","pickYear","isOld","isNew","isDisabled","isBeforeMin","isAfterMax","isMonthDisabled","idx","isYearDisabled","dayClasses","old","new","isSame","active","focus","button","$el","querySelector","clear","1050","_baseField","mixins","checked","1051","_calendar","_calendar2","DEFAULT_FORMAT","ISO_FORMAT","serializable","Calendar","picking","dateFormat","calendar:date:selected","calendar:date:cleared","onFocus","$nextTick","$refs","calendar","onOutside","1052","1053","_jquery","_jquery2","_config","_config2","_i18n","_markdown","_markdown2","EXCERPT_TOKEN","fn","markdown","messages","lang","Bold","_","Italic","Heading","URL/Link","Image","List","Preview","strong text","emphasized text","heading text","enter link description here","Insert Hyperlink","enter image description here","Insert Image Hyperlink","enter image title here","list text here","language","autofocus","savable","resize","iconlibrary","onPreview","getContent","additionalButtons","callback","getSelection","cursor","replaceSelection","setSelection","1054","1055","_base","groups","values","items","labels","map","text","filters","extract","group","filter","item","license","includes","1056","1057","1058","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","jQuery","factory","$","Markdown","element","opts","each","opt","$ns","$element","$editable","el","attrKeys","attrValues","extend","defaults","$oldContent","$isPreview","$isFullscreen","$editor","$textarea","$handler","$callback","$nextTab","showEditor","prototype","constructor","__alterButtons","alter","handler","isAll","that","k","v","halt","find","__buildButtons","buttonsArray","container","ns","y","btnGroups","z","buttons","btnGroupContainer","class","buttonContainer","buttonIconContainer","buttonHandler","buttonIcon","__getIcon","btnText","btnClass","tabIndex","hotkey","hotkeyCaption","hotkeys","__localize","addClass","match","removeClass","attr","tabindex","data-provider","data-handler","data-hotkey","toggle","prependTo","append","__setListener","hasRows","maxRows","val","split","rowsVal","css","on","proxy","keyup","change","select","eventSupported","keydown","keypress","__handle","currentTarget","handlerName","callbackIndex","callbackHandler","preventDefault","string","src","setFullscreen","mode","onFullscreen","hidePreview","showPreview","textarea","instance","editable","editor","click","editorHeader","allBtnGroups","concat","buttonGroup","matchingGroups","grep","allButtonGroup","allIdx","reorderButtonGroups","btnGroup","sort","a","b","fullscreen","enable","icons","fullscreenOn","is","before","rawContent","toMarkdown","html","currentContent","trim","prop","toLowerCase","attributes","nodeName","nodeValue","replaceWith","editorFooter","createFooter","saveHandler","onSave","width","isNumeric","height","Math","outerHeight","Date","getTime","disableButtons","$button","trigger","initialstate","show","fullscreenOff","hideButtons","hiddenButtons","disabledButtons","onShow","parseContent","parser","toHTML","marked","callbackContent","afterContainer","replacementContainer","enableButtons","insertBefore","parent","outerWidth","hide","remove","isDirty","setContent","findSelection","chunk","startChunkPosition","selection","oldSelection","l","selectionEnd","selectionStart","substr","getNextTab","nextTab","tab","shift","setNextTab","__parseButtonNameParam","removeAttr","showButtons","eventName","isSupported","setAttribute","blocked","keyCode","stopPropagation","onSelect","hideable","document","attachedMarkdown","blur","isHideable","hasClass","oldElement","onBlur","option","$this","glyph","fa","fa-3","pointer","prevChar","link","prompt","urlRegex","RegExp","test","sanitizedLink","list","join","isPreview","Constructor","noConflict","initMarkdown","blurNonFocused","$activeElement","activeElement","focused","closest","call","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","empty_schema","_slicedToArray2","_slicedToArray3","_entries","_entries2","_toConsumableArray2","_toConsumableArray3","_getIterator2","_getIterator3","_api","_api2","_jqueryValidation","_jqueryValidation2","interpolation","defaultVariables","O","1","ISO","validator","remote","email","url","dateISO","number","digits","creditcard","equalTo","maxlength","minlength","rangelength","range","addMethod","param","getElementById","optional","TEXT_INPUTS","TEXT_TAGS","fields","defs","fill","field:change","s","__schema__","forEach","currentSchema","path","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","done","API","$ref","err","return","$form","form","$els","attached","validate","ignore","errorClass","highlight","unhighlight","showErrors","errorPlacement","$broadcast","beforeDestroy","valid","serialize","elements","querySelectorAll","out","tagName","multiple","setattr","isObject","falsy","on_error","response","isString","error","headers","JSON","parse","fill_errors","message","flattenObject","_ref","_ref2","errs","$field","findField","errorMap","errorList","defaultShowErrors","$component","findComponent","1077","debug","window","console","settings","onsubmit","event","submitButton","cancelSubmit","handle","hidden","result","submitHandler","formSubmitted","appendTo","currentForm","pendingRequest","focusInvalid","rules","command","argument","staticRules","existingRules","filtered","isContentEditable","normalizeRule","index","method","normalizeRules","classRules","attributeRules","dataRules","str","expr","pseudos","blank","filled","unchecked","init","source","params","arguments","args","makeArray","unshift","n","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignoreTitle","onfocusin","lastActive","hideThese","errorsFor","onfocusout","checkable","submitted","onkeyup","excludedKeys","which","elementValue","inArray","invalid","onclick","parentNode","findByName","setDefaults","step","autoCreateRanges","delegate","eventType","labelContainer","errorContext","containers","valueCache","pending","reset","key","invalidHandler","checkForm","triggerHandler","prepareForm","currentElements","check","rs","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","successList","resetForm","hideErrors","removeData","resetElements","objectLength","count","not","addWrapper","size","findLastActive","rulesCache","selector","resetInternals","toShow","validity","badInput","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","abortRequest","parameters","formatAndAdd","TypeError","customDataMessage","charAt","toUpperCase","substring","customMessage","m","findDefined","defaultMessage","theregex","toToggle","wrapper","showLabel","validElements","invalidElements","place","errorID","elementID","idOrName","describedBy","escapeHtml","wrap","insertAfter","parents","escapeCssMeta","describer","getLength","depend","dependTypes","boolean","function","elementAjaxPort","startRequest","stopRequest","port","ajaxAbort","destroy","off","classRuleSettings","addClassRules","className","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","parts","transformed","called","toString","decimals","errorMessage","supportedTypes","re","notSupported","decimalPlaces","num","toInt","round","pow","Error","optionDataString","originalMessage","ajax","dataType","context","pendingRequests","ajaxPrefilter","xhr","ajaxSettings","abort","1087","1088","1089","_baseForm","_baseForm2","_verticalField","_verticalField2","Field","1090","1091","1092","1093","1094","1095","1096","1199","_notificationZone","_notificationZone2","_box","_box2","Model","save","Function","cancel","Box","NotificationZone","1203","1208","1211","1215","1340","_reuse","_reuse2","_reuse_types","_reuse_types2","_reuse_topics","_reuse_topics2","_verticalForm","_verticalForm2","VerticalForm","reuse","1364","1381","1479","_form","_form2","_formLayout","_formLayout2","FormLayout","ReuseForm","update","on_success","$go","oid","route","$route","$scrollTo","fetch","$once","updHandler","deactivate","1576"],"mappings":"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","file":"chunks/28.1759a7f57d526e6db574.js","sourcesContent":["webpackJsonp([28,31],{\n\n/***/ 896:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1479)\n\t__vue_template__ = __webpack_require__(1576)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 984:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.BaseField = exports.FieldComponentMixin = undefined;\n\t\n\tvar _logger = __webpack_require__(20);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _utils = __webpack_require__(314);\n\t\n\tvar _utils2 = _interopRequireDefault(_utils);\n\t\n\tvar _vue = __webpack_require__(73);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar FieldComponentMixin = exports.FieldComponentMixin = {\n\t props: {\n\t field: {\n\t type: Object,\n\t default: function _default() {\n\t return {};\n\t }\n\t },\n\t model: Object,\n\t value: null,\n\t description: null,\n\t property: Object,\n\t required: Boolean,\n\t placeholder: String,\n\t readonly: Boolean\n\t },\n\t methods: {\n\t onChange: function onChange(evt) {\n\t this.$dispatch('field:value-change', evt.target.value);\n\t }\n\t }\n\t};\n\t\n\tvar BaseField = exports.BaseField = {\n\t name: 'base-field',\n\t data: function data() {\n\t return {\n\t errors: [],\n\t success: undefined,\n\t isField: true\n\t };\n\t },\n\t\n\t components: {\n\t 'text-input': __webpack_require__(1048),\n\t 'number-input': __webpack_require__(1046),\n\t 'hidden-input': __webpack_require__(1044),\n\t 'select-input': __webpack_require__(1041),\n\t 'select-input-group': __webpack_require__(1047),\n\t 'markdown-editor': __webpack_require__(1045),\n\t 'date-picker': __webpack_require__(1040),\n\t 'checkbox': __webpack_require__(1043)\n\t },\n\t events: {\n\t 'field:value-change': function fieldValueChange(value) {\n\t this.$dispatch('field:change', this, value);\n\t return true;\n\t }\n\t },\n\t props: {\n\t field: {\n\t type: Object,\n\t default: function _default() {\n\t return {};\n\t },\n\t\n\t required: true\n\t },\n\t model: {\n\t type: Object,\n\t default: function _default() {\n\t return {};\n\t },\n\t\n\t required: true\n\t },\n\t schema: {\n\t type: Object,\n\t default: function _default() {\n\t return {};\n\t },\n\t\n\t required: true\n\t }\n\t },\n\t computed: {\n\t description: function description() {\n\t var property = this.property;\n\t return property && property.hasOwnProperty('description') ? property.description : undefined;\n\t },\n\t property: function property() {\n\t if (!this.schema.properties.hasOwnProperty(this.field.id)) {\n\t _logger2.default.warn('Field \"' + this.field.id + '\" not found in schema');\n\t return {};\n\t }\n\t\n\t return this.schema.properties[this.field.id];\n\t },\n\t required: function required() {\n\t if (!this.field || !this.schema.hasOwnProperty('required')) {\n\t return false;\n\t }\n\t return this.schema.required.indexOf(this.field.id) >= 0;\n\t },\n\t is_bool: function is_bool() {\n\t return this.property && this.property.type === 'boolean';\n\t },\n\t is_hidden: function is_hidden() {\n\t return this.field && this.field.type === 'hidden';\n\t },\n\t value: function value() {\n\t var value = void 0;\n\t if (this.model && this.field) {\n\t value = _utils2.default.getattr(this.model, this.field.id);\n\t }\n\t if ((value === undefined || value === null) && this.property && this.property.hasOwnProperty('default')) {\n\t value = this.property.default;\n\t }\n\t return value;\n\t },\n\t placeholder: function placeholder() {\n\t return this.field.placeholder || this.field.label || '';\n\t },\n\t readonly: function readonly() {\n\t return this.$parent.readonly || this.field.readonly || false;\n\t },\n\t widget: function widget() {\n\t var widget = void 0;\n\t if (this.field.widget) {\n\t widget = this.field.widget;\n\t } else if (this.property.type === 'boolean') {\n\t widget = 'checkbox';\n\t } else if (this.property.type === 'integer') {\n\t widget = 'number-input';\n\t } else if (this.property.type === 'string') {\n\t if (this.property.format === 'markdown') {\n\t widget = 'markdown-editor';\n\t } else if (this.property.enum) {\n\t widget = 'select-input';\n\t }\n\t }\n\t widget = widget || 'text-input';\n\t\n\t if (!_vue2.default.util.resolveAsset(this.$options, 'components', widget)) {\n\t this.$options.components[widget] = function (resolve, reject) {\n\t __webpack_require__.e/* require */(33, function(__webpack_require__) { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(1099)(\"./\" + widget + '.vue')]; (resolve.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}.bind(this));\n\t };\n\t }\n\t return widget;\n\t }\n\t },\n\t watch: {\n\t value: function value(_value) {\n\t this.$dispatch('field:change', this, _value);\n\t }\n\t }\n\t};\n\t\n\texports.default = BaseField;\n\n/***/ },\n\n/***/ 985:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1001)\n\t__vue_script__ = __webpack_require__(992)\n\t__vue_template__ = __webpack_require__(997)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 986:\n[971, 88, 44],\n\n/***/ 987:\n[972, 75],\n\n/***/ 989:\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(1035), __esModule: true };\n\n/***/ },\n\n/***/ 991:\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar TRANSITION_DURATION = 300;\n\tvar AUTOCLOSE_DELAY = 5000;\n\t\n\texports.default = {\n\t name: 'alert-box',\n\t data: function data() {\n\t return {\n\t closing: false\n\t };\n\t },\n\t\n\t props: {\n\t alert: Object\n\t },\n\t computed: {\n\t closable: function closable() {\n\t return this.alert.closable === undefined ? true : this.alert.closable;\n\t },\n\t classes: function classes() {\n\t var classes = {\n\t 'alert-dismissable': this.closable,\n\t 'in': !this.closing\n\t };\n\t classes['alert-' + (this.alert.type || 'success')] = true;\n\t return classes;\n\t },\n\t details: function details() {\n\t if (this.alert && this.alert.details) {\n\t return this.alert.details.replace(/\\n/g, '<br/>');\n\t }\n\t }\n\t },\n\t methods: {\n\t close: function close() {\n\t var _this = this;\n\t\n\t this.closing = true;\n\t setTimeout(function () {\n\t _this.$dispatch('notify:close', _this.alert);\n\t }, TRANSITION_DURATION);\n\t }\n\t },\n\t ready: function ready() {\n\t var _this2 = this;\n\t\n\t if (this.alert.autoclose) {\n\t setTimeout(function () {\n\t _this2.$dispatch('notify:close', _this2.alert);\n\t }, AUTOCLOSE_DELAY);\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 992:\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = {\n\t name: 'box',\n\t props: {\n\t title: String,\n\t icon: null,\n\t boxclass: {\n\t type: String,\n\t default: ''\n\t },\n\t bodyclass: {\n\t type: String,\n\t default: ''\n\t },\n\t footerclass: {\n\t type: String,\n\t default: ''\n\t },\n\t loading: Boolean,\n\t footer: null\n\t }\n\t};\n\n/***/ },\n\n/***/ 993:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _alert = __webpack_require__(999);\n\t\n\tvar _alert2 = _interopRequireDefault(_alert);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'notification-zone',\n\t components: { Alert: _alert2.default }\n\t};\n\n/***/ },\n\n/***/ 994:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777!important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent!important}.box .box-tools .box-search .btn,.box .box-tools .box-search input[type=text]{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search .btn:focus,.box .box-tools .box-search input[type=text]:focus{background-color:#fff;color:#666}.box .box-tools .box-search .btn:focus+.input-group-btn .btn,.box .box-tools .box-search input[type=text]:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>:first-child{border-left:1px solid #eee}.box .box-tools .box-search>:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/containers/box.vue\"],\"names\":[],\"mappings\":\"AAAA,kBAAkB,WAAW,CAAC,4BAA4B,oBAAqB,CAAC,4BAA4B,YAAY,oBAAoB,CAAC,wCAAwC,gBAAgB,kCAAmC,CAAC,8EAAgF,gBAAgB,yBAAyB,wBAAwB,CAAC,0FAA4F,sBAAsB,UAAU,CAAC,sIAAwI,sBAAsB,uBAAuB,UAAU,CAAC,8BAA8B,0BAA0B,4BAA4B,CAAC,yCAA0C,0BAA0B,CAAC,wCAAyC,2BAA2B,CAAC,8BAA8B,eAAe,eAAe,CAAC,2BAA2B,sBAAsB,CAAC,UAAU,WAAW,CAAC\",\"file\":\"box.vue\",\"sourcesContent\":[\".box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777 !important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent !important}.box .box-tools .box-search input[type=\\\"text\\\"],.box .box-tools .box-search .btn{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search input[type=\\\"text\\\"]:focus,.box .box-tools .box-search .btn:focus{background-color:#fff;color:#666}.box .box-tools .box-search input[type=\\\"text\\\"]:focus+.input-group-btn .btn,.box .box-tools .box-search .btn:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>*:first-child{border-left:1px solid #eee}.box .box-tools .box-search>*:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 995:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/notification-zone.vue\"],\"names\":[],\"mappings\":\"AAAA,mBAAmB,oBAAoB,eAAe,WAAW,YAAY,YAAY,aAAa,CAAC,qCAAqC,eAAe,CAAC,2CAA2C,iBAAiB,CAAC\",\"file\":\"notification-zone.vue\",\"sourcesContent\":[\".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 996:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"alert fade\\\" :class=classes> <button type=button class=close aria-hidden=true @click=close>×</button> <h4> <span class=\\\"icon fa fa-{{alert.icon || 'check'}}\\\"></span> {{alert.title}} </h4> {{{ details }}} </div> \";\n\n/***/ },\n\n/***/ 997:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"box {{ boxclass }}\\\"> <header class=box-header v-show=\\\"title || icon\\\"> <i v-show=icon class=\\\"fa fa-{{icon}}\\\"></i> <h3 class=box-title>{{title}}</h3> <div class=box-tools> <slot name=tools></slot> </div> </header> <div class=\\\"box-body {{bodyclass}}\\\"> <slot></slot> </div> <div class=overlay v-show=loading> <span class=\\\"fa fa-refresh fa-spin\\\"></span> </div> <div class=\\\"box-footer clearfix {{footerclass}}\\\" v-show=footer> <slot name=footer></slot> </div> </div> \";\n\n/***/ },\n\n/***/ 998:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div v-show=\\\"$root.notifications && $root.notifications.length > 0\\\" class=notification-zone> <alert v-for=\\\"n in $root.notifications\\\" :alert=n></alert> </div> \";\n\n/***/ },\n\n/***/ 999:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(991)\n\t__vue_template__ = __webpack_require__(996)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1000:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1002)\n\t__vue_script__ = __webpack_require__(993)\n\t__vue_template__ = __webpack_require__(998)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1001:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(994);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./box.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./box.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1002:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(995);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./notification-zone.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./notification-zone.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1034:\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\tvar _from = __webpack_require__(989);\n\t\n\tvar _from2 = _interopRequireDefault(_from);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function (arr) {\n\t if (Array.isArray(arr)) {\n\t for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n\t arr2[i] = arr[i];\n\t }\n\t\n\t return arr2;\n\t } else {\n\t return (0, _from2.default)(arr);\n\t }\n\t};\n\n/***/ },\n\n/***/ 1035:\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(134);\n\t__webpack_require__(1038);\n\tmodule.exports = __webpack_require__(13).Array.from;\n\n\n/***/ },\n\n/***/ 1036:\n[969, 57, 100],\n\n/***/ 1037:\n[973, 44],\n\n/***/ 1038:\n[977, 199, 51, 87, 987, 986, 315, 1036, 316, 1037],\n\n/***/ 1040:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1074)\n\t__vue_script__ = __webpack_require__(1051)\n\t__vue_template__ = __webpack_require__(1065)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1041:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1056)\n\t__vue_template__ = __webpack_require__(1070)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1042:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1072)\n\t__vue_script__ = __webpack_require__(1049)\n\t__vue_template__ = __webpack_require__(1063)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1043:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1073)\n\t__vue_script__ = __webpack_require__(1050)\n\t__vue_template__ = __webpack_require__(1064)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1044:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1052)\n\t__vue_template__ = __webpack_require__(1066)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1045:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1075)\n\t__vue_script__ = __webpack_require__(1053)\n\t__vue_template__ = __webpack_require__(1067)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1046:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1054)\n\t__vue_template__ = __webpack_require__(1068)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1047:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1055)\n\t__vue_template__ = __webpack_require__(1069)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1048:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1057)\n\t__vue_template__ = __webpack_require__(1071)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1049:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _moment = __webpack_require__(17);\n\t\n\tvar _moment2 = _interopRequireDefault(_moment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar VIEWS = ['days', 'months', 'years'];\n\tvar MONTH_FORMAT = 'MMMM YYYY';\n\t\n\tfunction optionalMoment(value) {\n\t return value ? (0, _moment2.default)(value) : null;\n\t}\n\t\n\texports.default = {\n\t name: 'calendar',\n\t props: {\n\t selected: {\n\t type: _moment2.default,\n\t coerce: optionalMoment,\n\t default: null\n\t },\n\t min: {\n\t type: _moment2.default,\n\t coerce: optionalMoment,\n\t default: null\n\t },\n\t max: {\n\t type: _moment2.default,\n\t coerce: optionalMoment,\n\t default: null\n\t },\n\t view: {\n\t type: String,\n\t default: 'days'\n\t }\n\t },\n\t data: function data() {\n\t var current = this.selected || (0, _moment2.default)();\n\t return {\n\t current: current,\n\t today: (0, _moment2.default)()\n\t };\n\t },\n\t\n\t computed: {\n\t days: function days() {\n\t var days = [];\n\t var weekdays = _moment2.default.weekdaysMin();\n\t var first = _moment2.default.localeData().firstDayOfWeek();\n\t for (var i = 0; i < 7; i++) {\n\t days.push(weekdays[(i + first) % 7]);\n\t }\n\t return days;\n\t },\n\t months: function months() {\n\t return _moment2.default.monthsShort();\n\t },\n\t monthDisplay: function monthDisplay() {\n\t return this.current.format(MONTH_FORMAT);\n\t },\n\t rangeDisplay: function rangeDisplay() {\n\t if (this.view == 'days') {\n\t return this.current.format(MONTH_FORMAT);\n\t } else if (this.view == 'months') {\n\t return this.current.year();\n\t } else if (this.view == 'years') {\n\t var start = this.current.clone().subtract(5, 'years');\n\t var end = this.current.clone().add(6, 'years');\n\t return start.year() + '-' + end.year();\n\t }\n\t },\n\t yearsRange: function yearsRange() {\n\t var start = this.current.clone().subtract(5, 'years');\n\t var years = [];\n\t\n\t for (var i = 0; i < 12; i++) {\n\t years.push(start.clone().add(i, 'years').year());\n\t }\n\t return years;\n\t },\n\t nextValue: function nextValue() {\n\t var value = this.current.clone();\n\t if (this.view === 'days') {\n\t value.add(1, 'months');\n\t } else if (this.view === 'months') {\n\t value.add(1, 'years');\n\t } else if (this.view === 'years') {\n\t value.add(12, 'years');\n\t }\n\t return value;\n\t },\n\t previousValue: function previousValue() {\n\t var value = this.current.clone();\n\t if (this.view === 'days') {\n\t value.subtract(1, 'months');\n\t } else if (this.view === 'months') {\n\t value.subtract(1, 'year');\n\t } else if (this.view === 'years') {\n\t value.subtract(12, 'years');\n\t }\n\t return value;\n\t },\n\t nextDisabled: function nextDisabled() {\n\t if (!this.max) return;\n\t switch (this.view) {\n\t case 'days':\n\t return this.nextValue.isAfter(this.max, 'month');\n\t case 'months':\n\t return this.nextValue.isAfter(this.max, 'year');\n\t case 'years':\n\t return this.yearsRange.slice(-1).pop() >= this.max.year();\n\t }\n\t },\n\t previousDisabled: function previousDisabled() {\n\t if (!this.min) return;\n\t switch (this.view) {\n\t case 'days':\n\t return this.previousValue.isBefore(this.min, 'month');\n\t case 'months':\n\t return this.previousValue.isBefore(this.min, 'year');\n\t case 'years':\n\t return this.yearsRange[0] <= this.min.year();\n\t }\n\t }\n\t },\n\t methods: {\n\t monthDays: function monthDays(date) {\n\t var start = date.clone().startOf('month').startOf('week');\n\t var end = date.clone().endOf('month').endOf('week');\n\t var days = [];\n\t var row = void 0;\n\t\n\t for (var i = 0; i <= end.diff(start, 'days'); i++) {\n\t if (i % 7 === 0) {\n\t row = [];\n\t days.push(row);\n\t }\n\t row.push(start.clone().add(i, 'days'));\n\t }\n\t return days;\n\t },\n\t next: function next() {\n\t this.current = this.nextValue;\n\t },\n\t previous: function previous() {\n\t this.current = this.previousValue;\n\t },\n\t zoomOut: function zoomOut() {\n\t if (VIEWS.indexOf(this.view) + 1 < VIEWS.length) {\n\t this.view = VIEWS[VIEWS.indexOf(this.view) + 1];\n\t }\n\t },\n\t pickDay: function pickDay(day) {\n\t this.selected = day;\n\t this.$dispatch('calendar:date:selected', day);\n\t },\n\t pickMonth: function pickMonth(month) {\n\t this.current = this.current.month(month);\n\t this.view = 'days';\n\t this.$dispatch('calendar:month:selected', month);\n\t },\n\t pickYear: function pickYear(year) {\n\t this.current = this.current.year(year);\n\t this.view = 'months';\n\t this.$dispatch('calendar:year:selected', year);\n\t },\n\t isOld: function isOld(day) {\n\t return day.isBefore(this.current.startOf('month'));\n\t },\n\t isNew: function isNew(day) {\n\t return day.isAfter(this.current.endOf('month'));\n\t },\n\t isDisabled: function isDisabled(day) {\n\t var isBeforeMin = this.min && day.isBefore(this.min, 'day');\n\t var isAfterMax = this.max && day.isAfter(this.max, 'day');\n\t return isBeforeMin || isAfterMax;\n\t },\n\t isMonthDisabled: function isMonthDisabled(idx) {\n\t var month = this.current.clone().month(idx);\n\t var isBeforeMin = this.min && month.isBefore(this.min, 'month');\n\t var isAfterMax = this.max && month.isAfter(this.max, 'month');\n\t return isBeforeMin || isAfterMax;\n\t },\n\t isYearDisabled: function isYearDisabled(year) {\n\t var isBeforeMin = this.min && year < this.min.year();\n\t var isAfterMax = this.max && year > this.max.year();\n\t return isBeforeMin || isAfterMax;\n\t },\n\t dayClasses: function dayClasses(day) {\n\t return {\n\t old: this.isOld(day),\n\t new: this.isNew(day),\n\t today: day.isSame(this.today, 'day'),\n\t active: day.isSame(this.selected, 'day')\n\t };\n\t },\n\t focus: function focus() {\n\t var button = this.$el.querySelector('main button.active:not(:disabled)') || this.$el.querySelector('main button:not(:disabled)');\n\t if (button) button.focus();\n\t },\n\t clear: function clear() {\n\t this.selected = null;\n\t this.current = this.today.clone();\n\t this.view = 'days';\n\t this.$dispatch('calendar:date:cleared');\n\t }\n\t },\n\t watch: {\n\t selected: function selected(value) {\n\t if (!value) return;\n\t this.current = value.clone();\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1050:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\texports.default = {\n\t name: 'Checkbox',\n\t mixins: [_baseField.FieldComponentMixin],\n\t methods: {\n\t onChange: function onChange(evt) {\n\t this.$dispatch('field:value-change', evt.target.checked);\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1051:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _moment = __webpack_require__(17);\n\t\n\tvar _moment2 = _interopRequireDefault(_moment);\n\t\n\tvar _calendar = __webpack_require__(1042);\n\t\n\tvar _calendar2 = _interopRequireDefault(_calendar);\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DEFAULT_FORMAT = 'L';\n\tvar ISO_FORMAT = 'YYYY-MM-DDTHH:mm:ss';\n\t\n\texports.default = {\n\t name: 'date-picker',\n\t mixins: [_baseField.FieldComponentMixin],\n\t props: {\n\t serializable: {\n\t type: Boolean,\n\t default: true\n\t }\n\t },\n\t components: { Calendar: _calendar2.default },\n\t data: function data() {\n\t return {\n\t picking: false,\n\t ISO_FORMAT: ISO_FORMAT\n\t };\n\t },\n\t\n\t computed: {\n\t dateFormat: function dateFormat() {\n\t return this.field.format || DEFAULT_FORMAT;\n\t }\n\t },\n\t events: {\n\t 'calendar:date:selected': function calendarDateSelected(date) {\n\t this.value = date;\n\t this.picking = false;\n\t return true;\n\t },\n\t 'calendar:date:cleared': function calendarDateCleared() {\n\t this.value = null;\n\t this.picking = false;\n\t return true;\n\t }\n\t },\n\t methods: {\n\t onFocus: function onFocus() {\n\t if (!this.picking) this.$nextTick(this.$refs.calendar.focus);\n\t this.picking = true;\n\t },\n\t onChange: function onChange(e) {\n\t try {\n\t this.value = (0, _moment2.default)(e.target.value, this.dateFormat);\n\t } catch (e) {}\n\t },\n\t onOutside: function onOutside() {\n\t this.picking = false;\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1052:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\texports.default = {\n\t name: 'hidden-input',\n\t mixins: [_baseField.FieldComponentMixin]\n\t};\n\n/***/ },\n\n/***/ 1053:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _jquery = __webpack_require__(12);\n\t\n\tvar _jquery2 = _interopRequireDefault(_jquery);\n\t\n\tvar _config = __webpack_require__(22);\n\t\n\tvar _config2 = _interopRequireDefault(_config);\n\t\n\tvar _i18n = __webpack_require__(133);\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\tvar _markdown = __webpack_require__(321);\n\t\n\tvar _markdown2 = _interopRequireDefault(_markdown);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar EXCERPT_TOKEN = '<!--- excerpt -->';\n\t\n\t__webpack_require__(1058);\n\t\n\t_jquery2.default.fn.markdown.messages[_config2.default.lang] = {\n\t 'Bold': (0, _i18n._)('Bold'),\n\t 'Italic': (0, _i18n._)('Italic'),\n\t 'Heading': (0, _i18n._)('Heading'),\n\t 'URL/Link': (0, _i18n._)('URL/Link'),\n\t 'Image': (0, _i18n._)('Image'),\n\t 'List': (0, _i18n._)('List'),\n\t 'Preview': (0, _i18n._)('Preview'),\n\t 'strong text': (0, _i18n._)('strong text'),\n\t 'emphasized text': (0, _i18n._)('emphasized text'),\n\t 'heading text': (0, _i18n._)('heading text'),\n\t 'enter link description here': (0, _i18n._)('enter link description here'),\n\t 'Insert Hyperlink': (0, _i18n._)('Insert Hyperlink'),\n\t 'enter image description here': (0, _i18n._)('enter image description here'),\n\t 'Insert Image Hyperlink': (0, _i18n._)('Insert Image Hyperlink'),\n\t 'enter image title here': (0, _i18n._)('enter image title here'),\n\t 'list text here': (0, _i18n._)('list text here')\n\t};\n\t\n\texports.default = {\n\t name: 'markdown-editor',\n\t props: ['rows'],\n\t mixins: [_baseField.FieldComponentMixin],\n\t ready: function ready() {\n\t (0, _jquery2.default)(this.$el).markdown({\n\t language: _config2.default.lang,\n\t autofocus: false,\n\t savable: false,\n\t resize: 'both',\n\t iconlibrary: 'fa',\n\t onPreview: function onPreview(e) {\n\t return (0, _markdown2.default)(e.getContent());\n\t },\n\t additionalButtons: [[{\n\t name: 'extras',\n\t data: [{\n\t name: 'btnSummary',\n\t title: (0, _i18n._)('Summary'),\n\t icon: 'fa fa-scissors',\n\t callback: function callback(e) {\n\t var selected = e.getSelection(),\n\t cursor = selected.start;\n\t\n\t e.replaceSelection(EXCERPT_TOKEN);\n\t e.setSelection(cursor, cursor + EXCERPT_TOKEN.length);\n\t }\n\t }]\n\t }]]\n\t });\n\t }\n\t};\n\n/***/ },\n\n/***/ 1054:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\texports.default = {\n\t name: 'number-input',\n\t mixins: [_baseField.FieldComponentMixin]\n\t};\n\n/***/ },\n\n/***/ 1055:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\texports.default = {\n\t name: 'select-input-group',\n\t mixins: [_baseField.FieldComponentMixin],\n\t props: {\n\t groups: {\n\t type: Object,\n\t default: function _default() {\n\t return {};\n\t }\n\t }\n\t },\n\t computed: {\n\t options: function options() {\n\t if (!this.property && !this.field) return [];\n\t\n\t if (this.field.values) {\n\t if (this.field.values instanceof _base.List) {\n\t return this.field.values.items;\n\t }\n\t return this.field.values;\n\t } else if (this.property.enum && this.field.labels) {\n\t return this.property.enum.map(function (value) {\n\t return { value: value, text: this.field.labels[value] };\n\t });\n\t } else if (this.property.enum) {\n\t return this.property.enum.map(function (value) {\n\t return { value: value, text: value };\n\t });\n\t }\n\t\n\t return [];\n\t }\n\t },\n\t filters: {\n\t extract: function extract(items, group) {\n\t var _this = this;\n\t\n\t if (this.field.map) {\n\t items = items.map(this.field.map);\n\t return items.filter(function (item) {\n\t return _this.field.groups[group].map(function (license) {\n\t return license.value;\n\t }).includes(item.value);\n\t });\n\t }\n\t return items;\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1056:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\texports.default = {\n\t name: 'select-input',\n\t mixins: [_baseField.FieldComponentMixin],\n\t computed: {\n\t options: function options() {\n\t if (!this.property && !this.field) return [];\n\t\n\t if (this.field.values) {\n\t if (this.field.values instanceof _base.List) {\n\t return this.field.values.items;\n\t }\n\t return this.field.values;\n\t } else if (this.property.enum && this.field.labels) {\n\t return this.property.enum.map(function (value) {\n\t return { value: value, text: this.field.labels[value] };\n\t });\n\t } else if (this.property.enum) {\n\t return this.property.enum.map(function (value) {\n\t return { value: value, text: value };\n\t });\n\t }\n\t\n\t return [];\n\t }\n\t },\n\t filters: {\n\t extract: function extract(items) {\n\t if (this.field.map) {\n\t return items.map(this.field.map);\n\t }\n\t return items;\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1057:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\texports.default = {\n\t name: 'text-input',\n\t mixins: [_baseField.FieldComponentMixin]\n\t};\n\n/***/ },\n\n/***/ 1058:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(jQuery) {/* ===================================================\n\t * bootstrap-markdown.js v2.10.0\n\t * http://github.com/toopay/bootstrap-markdown\n\t * ===================================================\n\t * Copyright 2013-2016 Taufan Aditya\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t * ========================================================== */\n\t\n\t(function(factory){\n\t if (true) {\n\t //RequireJS\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(12)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof exports === 'object') {\n\t //Backbone.js\n\t factory(require('jquery'));\n\t } else {\n\t //Jquery plugin\n\t factory(jQuery);\n\t }\n\t}(function($){\n\t \"use strict\"; // jshint ;_;\n\t\n\t /* MARKDOWN CLASS DEFINITION\n\t * ========================== */\n\t\n\t var Markdown = function (element, options) {\n\t // @TODO : remove this BC on next major release\n\t // @see : https://github.com/toopay/bootstrap-markdown/issues/109\n\t var opts = ['autofocus', 'savable', 'hideable', 'width', \n\t 'height', 'resize', 'iconlibrary', 'language', \n\t 'footer', 'fullscreen', 'hiddenButtons', 'disabledButtons'];\n\t $.each(opts,function(_, opt){\n\t if (typeof $(element).data(opt) !== 'undefined') {\n\t options = typeof options == 'object' ? options : {}\n\t options[opt] = $(element).data(opt)\n\t }\n\t });\n\t // End BC\n\t\n\t // Class Properties\n\t this.$ns = 'bootstrap-markdown';\n\t this.$element = $(element);\n\t this.$editable = {el:null, type:null,attrKeys:[], attrValues:[], content:null};\n\t this.$options = $.extend(true, {}, $.fn.markdown.defaults, options, this.$element.data('options'));\n\t this.$oldContent = null;\n\t this.$isPreview = false;\n\t this.$isFullscreen = false;\n\t this.$editor = null;\n\t this.$textarea = null;\n\t this.$handler = [];\n\t this.$callback = [];\n\t this.$nextTab = [];\n\t\n\t this.showEditor();\n\t };\n\t\n\t Markdown.prototype = {\n\t\n\t constructor: Markdown\n\t\n\t , __alterButtons: function(name,alter) {\n\t var handler = this.$handler, isAll = (name == 'all'),that = this;\n\t\n\t $.each(handler,function(k,v) {\n\t var halt = true;\n\t if (isAll) {\n\t halt = false;\n\t } else {\n\t halt = v.indexOf(name) < 0;\n\t }\n\t\n\t if (halt === false) {\n\t alter(that.$editor.find('button[data-handler=\"'+v+'\"]'));\n\t }\n\t });\n\t }\n\t\n\t , __buildButtons: function(buttonsArray, container) {\n\t var i,\n\t ns = this.$ns,\n\t handler = this.$handler,\n\t callback = this.$callback;\n\t\n\t for (i=0;i<buttonsArray.length;i++) {\n\t // Build each group container\n\t var y, btnGroups = buttonsArray[i];\n\t for (y=0;y<btnGroups.length;y++) {\n\t // Build each button group\n\t var z,\n\t buttons = btnGroups[y].data,\n\t btnGroupContainer = $('<div/>', {\n\t 'class': 'btn-group'\n\t });\n\t\n\t for (z=0;z<buttons.length;z++) {\n\t var button = buttons[z],\n\t buttonContainer, buttonIconContainer,\n\t buttonHandler = ns+'-'+button.name,\n\t buttonIcon = this.__getIcon(button.icon),\n\t btnText = button.btnText ? button.btnText : '',\n\t btnClass = button.btnClass ? button.btnClass : 'btn',\n\t tabIndex = button.tabIndex ? button.tabIndex : '-1',\n\t hotkey = typeof button.hotkey !== 'undefined' ? button.hotkey : '',\n\t hotkeyCaption = typeof jQuery.hotkeys !== 'undefined' && hotkey !== '' ? ' ('+hotkey+')' : '';\n\t\n\t // Construct the button object\n\t buttonContainer = $('<button></button>');\n\t buttonContainer.text(' ' + this.__localize(btnText)).addClass('btn-default btn-sm').addClass(btnClass);\n\t if(btnClass.match(/btn\\-(primary|success|info|warning|danger|link)/)){\n\t buttonContainer.removeClass('btn-default');\n\t }\n\t buttonContainer.attr({\n\t 'type': 'button',\n\t 'title': this.__localize(button.title) + hotkeyCaption,\n\t 'tabindex': tabIndex,\n\t 'data-provider': ns,\n\t 'data-handler': buttonHandler,\n\t 'data-hotkey': hotkey\n\t });\n\t if (button.toggle === true){\n\t buttonContainer.attr('data-toggle', 'button');\n\t }\n\t buttonIconContainer = $('<span/>');\n\t buttonIconContainer.addClass(buttonIcon);\n\t buttonIconContainer.prependTo(buttonContainer);\n\t\n\t // Attach the button object\n\t btnGroupContainer.append(buttonContainer);\n\t\n\t // Register handler and callback\n\t handler.push(buttonHandler);\n\t callback.push(button.callback);\n\t }\n\t\n\t // Attach the button group into container dom\n\t container.append(btnGroupContainer);\n\t }\n\t }\n\t\n\t return container;\n\t }\n\t , __setListener: function() {\n\t // Set size and resizable Properties\n\t var hasRows = typeof this.$textarea.attr('rows') !== 'undefined',\n\t maxRows = this.$textarea.val().split(\"\\n\").length > 5 ? this.$textarea.val().split(\"\\n\").length : '5',\n\t rowsVal = hasRows ? this.$textarea.attr('rows') : maxRows;\n\t\n\t this.$textarea.attr('rows',rowsVal);\n\t if (this.$options.resize) {\n\t this.$textarea.css('resize',this.$options.resize);\n\t }\n\t\n\t this.$textarea.on({\n\t 'focus' : $.proxy(this.focus, this),\n\t 'keyup' : $.proxy(this.keyup, this),\n\t 'change' : $.proxy(this.change, this),\n\t 'select' : $.proxy(this.select, this)\n\t });\n\t\n\t if (this.eventSupported('keydown')) {\n\t this.$textarea.on('keydown', $.proxy(this.keydown, this));\n\t }\n\t\n\t if (this.eventSupported('keypress')) {\n\t this.$textarea.on('keypress', $.proxy(this.keypress, this))\n\t }\n\t\n\t // Re-attach markdown data\n\t this.$textarea.data('markdown',this);\n\t }\n\t\n\t , __handle: function(e) {\n\t var target = $(e.currentTarget),\n\t handler = this.$handler,\n\t callback = this.$callback,\n\t handlerName = target.attr('data-handler'),\n\t callbackIndex = handler.indexOf(handlerName),\n\t callbackHandler = callback[callbackIndex];\n\t\n\t // Trigger the focusin\n\t $(e.currentTarget).focus();\n\t\n\t callbackHandler(this);\n\t\n\t // Trigger onChange for each button handle\n\t this.change(this);\n\t\n\t // Unless it was the save handler,\n\t // focusin the textarea\n\t if (handlerName.indexOf('cmdSave') < 0) {\n\t this.$textarea.focus();\n\t }\n\t\n\t e.preventDefault();\n\t }\n\t\n\t , __localize: function(string) {\n\t var messages = $.fn.markdown.messages,\n\t language = this.$options.language;\n\t if (\n\t typeof messages !== 'undefined' &&\n\t typeof messages[language] !== 'undefined' &&\n\t typeof messages[language][string] !== 'undefined'\n\t ) {\n\t return messages[language][string];\n\t }\n\t return string;\n\t }\n\t\n\t , __getIcon: function(src) {\n\t return typeof src == 'object' ? src[this.$options.iconlibrary] : src;\n\t }\n\t\n\t , setFullscreen: function(mode) {\n\t var $editor = this.$editor,\n\t $textarea = this.$textarea;\n\t\n\t if (mode === true) {\n\t $editor.addClass('md-fullscreen-mode');\n\t $('body').addClass('md-nooverflow');\n\t this.$options.onFullscreen(this);\n\t } else {\n\t $editor.removeClass('md-fullscreen-mode');\n\t $('body').removeClass('md-nooverflow');\n\t\n\t if (this.$isPreview == true) this.hidePreview().showPreview()\n\t }\n\t\n\t this.$isFullscreen = mode;\n\t $textarea.focus();\n\t }\n\t\n\t , showEditor: function() {\n\t var instance = this,\n\t textarea,\n\t ns = this.$ns,\n\t container = this.$element,\n\t originalHeigth = container.css('height'),\n\t originalWidth = container.css('width'),\n\t editable = this.$editable,\n\t handler = this.$handler,\n\t callback = this.$callback,\n\t options = this.$options,\n\t editor = $( '<div/>', {\n\t 'class': 'md-editor',\n\t click: function() {\n\t instance.focus();\n\t }\n\t });\n\t\n\t // Prepare the editor\n\t if (this.$editor === null) {\n\t // Create the panel\n\t var editorHeader = $('<div/>', {\n\t 'class': 'md-header btn-toolbar'\n\t });\n\t\n\t // Merge the main & additional button groups together\n\t var allBtnGroups = [];\n\t if (options.buttons.length > 0) allBtnGroups = allBtnGroups.concat(options.buttons[0]);\n\t if (options.additionalButtons.length > 0) {\n\t // iterate the additional button groups\n\t $.each(options.additionalButtons[0], function(idx, buttonGroup){\n\t \n\t // see if the group name of the addional group matches an existing group\n\t var matchingGroups = $.grep(allBtnGroups, function(allButtonGroup, allIdx){\n\t return allButtonGroup.name === buttonGroup.name;\n\t });\n\t\n\t // if it matches add the addional buttons to that group, if not just add it to the all buttons group\n\t if(matchingGroups.length > 0) {\n\t matchingGroups[0].data = matchingGroups[0].data.concat(buttonGroup.data);\n\t } else { \n\t allBtnGroups.push(options.additionalButtons[0][idx]);\n\t }\n\t\n\t });\n\t } \n\t\n\t // Reduce and/or reorder the button groups\n\t if (options.reorderButtonGroups.length > 0) {\n\t allBtnGroups = allBtnGroups\n\t .filter(function(btnGroup) {\n\t return options.reorderButtonGroups.indexOf(btnGroup.name) > -1;\n\t })\n\t .sort(function(a, b) {\n\t if (options.reorderButtonGroups.indexOf(a.name) < options.reorderButtonGroups.indexOf(b.name)) return -1;\n\t if (options.reorderButtonGroups.indexOf(a.name) > options.reorderButtonGroups.indexOf(b.name)) return 1;\n\t return 0;\n\t });\n\t }\n\t\n\t // Build the buttons\n\t if (allBtnGroups.length > 0) {\n\t editorHeader = this.__buildButtons([allBtnGroups], editorHeader);\n\t }\n\t\n\t if (options.fullscreen.enable) {\n\t editorHeader.append('<div class=\"md-controls\"><a class=\"md-control md-control-fullscreen\" href=\"#\"><span class=\"'+this.__getIcon(options.fullscreen.icons.fullscreenOn)+'\"></span></a></div>').on('click', '.md-control-fullscreen', function(e) {\n\t e.preventDefault();\n\t instance.setFullscreen(true);\n\t });\n\t }\n\t\n\t editor.append(editorHeader);\n\t\n\t // Wrap the textarea\n\t if (container.is('textarea')) {\n\t container.before(editor);\n\t textarea = container;\n\t textarea.addClass('md-input');\n\t editor.append(textarea);\n\t } else {\n\t var rawContent = (typeof toMarkdown == 'function') ? toMarkdown(container.html()) : container.html(),\n\t currentContent = $.trim(rawContent);\n\t\n\t // This is some arbitrary content that could be edited\n\t textarea = $('<textarea/>', {\n\t 'class': 'md-input',\n\t 'val' : currentContent\n\t });\n\t\n\t editor.append(textarea);\n\t\n\t // Save the editable\n\t editable.el = container;\n\t editable.type = container.prop('tagName').toLowerCase();\n\t editable.content = container.html();\n\t\n\t $(container[0].attributes).each(function(){\n\t editable.attrKeys.push(this.nodeName);\n\t editable.attrValues.push(this.nodeValue);\n\t });\n\t\n\t // Set editor to blocked the original container\n\t container.replaceWith(editor);\n\t }\n\t\n\t var editorFooter = $('<div/>', {\n\t 'class': 'md-footer'\n\t }),\n\t createFooter = false,\n\t footer = '';\n\t // Create the footer if savable\n\t if (options.savable) {\n\t createFooter = true;\n\t var saveHandler = 'cmdSave';\n\t\n\t // Register handler and callback\n\t handler.push(saveHandler);\n\t callback.push(options.onSave);\n\t\n\t editorFooter.append('<button class=\"btn btn-success\" data-provider=\"'\n\t + ns\n\t + '\" data-handler=\"'\n\t + saveHandler\n\t + '\"><i class=\"icon icon-white icon-ok\"></i> '\n\t + this.__localize('Save')\n\t + '</button>');\n\t\n\t\n\t }\n\t\n\t footer = typeof options.footer === 'function' ? options.footer(this) : options.footer;\n\t\n\t if ($.trim(footer) !== '') {\n\t createFooter = true;\n\t editorFooter.append(footer);\n\t }\n\t\n\t if (createFooter) editor.append(editorFooter);\n\t\n\t // Set width\n\t if (options.width && options.width !== 'inherit') {\n\t if (jQuery.isNumeric(options.width)) {\n\t editor.css('display', 'table');\n\t textarea.css('width', options.width + 'px');\n\t } else {\n\t editor.addClass(options.width);\n\t }\n\t }\n\t\n\t // Set height\n\t if (options.height && options.height !== 'inherit') {\n\t if (jQuery.isNumeric(options.height)) {\n\t var height = options.height;\n\t if (editorHeader) height = Math.max(0, height - editorHeader.outerHeight());\n\t if (editorFooter) height = Math.max(0, height - editorFooter.outerHeight());\n\t textarea.css('height', height + 'px');\n\t } else {\n\t editor.addClass(options.height);\n\t }\n\t }\n\t\n\t // Reference\n\t this.$editor = editor;\n\t this.$textarea = textarea;\n\t this.$editable = editable;\n\t this.$oldContent = this.getContent();\n\t\n\t this.__setListener();\n\t\n\t // Set editor attributes, data short-hand API and listener\n\t this.$editor.attr('id',(new Date()).getTime());\n\t this.$editor.on('click', '[data-provider=\"bootstrap-markdown\"]', $.proxy(this.__handle, this));\n\t\n\t if (this.$element.is(':disabled') || this.$element.is('[readonly]')) {\n\t this.$editor.addClass('md-editor-disabled');\n\t this.disableButtons('all');\n\t }\n\t\n\t if (this.eventSupported('keydown') && typeof jQuery.hotkeys === 'object') {\n\t editorHeader.find('[data-provider=\"bootstrap-markdown\"]').each(function() {\n\t var $button = $(this),\n\t hotkey = $button.attr('data-hotkey');\n\t if (hotkey.toLowerCase() !== '') {\n\t textarea.bind('keydown', hotkey, function() {\n\t $button.trigger('click');\n\t return false;\n\t });\n\t }\n\t });\n\t }\n\t\n\t if (options.initialstate === 'preview') {\n\t this.showPreview();\n\t } else if (options.initialstate === 'fullscreen' && options.fullscreen.enable) {\n\t this.setFullscreen(true);\n\t }\n\t\n\t } else {\n\t this.$editor.show();\n\t }\n\t\n\t if (options.autofocus) {\n\t this.$textarea.focus();\n\t this.$editor.addClass('active');\n\t }\n\t\n\t if (options.fullscreen.enable && options.fullscreen !== false) {\n\t this.$editor.append('<div class=\"md-fullscreen-controls\">'\n\t + '<a href=\"#\" class=\"exit-fullscreen\" title=\"Exit fullscreen\"><span class=\"' + this.__getIcon(options.fullscreen.icons.fullscreenOff) + '\">'\n\t + '</span></a>'\n\t + '</div>');\n\t this.$editor.on('click', '.exit-fullscreen', function(e) {\n\t e.preventDefault();\n\t instance.setFullscreen(false);\n\t });\n\t }\n\t\n\t // hide hidden buttons from options\n\t this.hideButtons(options.hiddenButtons);\n\t\n\t // disable disabled buttons from options\n\t this.disableButtons(options.disabledButtons);\n\t\n\t // Trigger the onShow hook\n\t options.onShow(this);\n\t\n\t return this;\n\t }\n\t\n\t , parseContent: function(val) {\n\t var content;\n\t\n\t // parse with supported markdown parser\n\t var val = val || this.$textarea.val();\n\t\n\t if (this.$options.parser) {\n\t content = this.$options.parser(val);\n\t } else if (typeof markdown == 'object') {\n\t content = markdown.toHTML(val);\n\t } else if (typeof marked == 'function') {\n\t content = marked(val);\n\t } else {\n\t content = val;\n\t }\n\t\n\t return content;\n\t }\n\t\n\t , showPreview: function() {\n\t var options = this.$options,\n\t container = this.$textarea,\n\t afterContainer = container.next(),\n\t replacementContainer = $('<div/>',{'class':'md-preview','data-provider':'markdown-preview'}),\n\t content,\n\t callbackContent;\n\t\n\t if (this.$isPreview == true) {\n\t // Avoid sequenced element creation on missused scenario\n\t // @see https://github.com/toopay/bootstrap-markdown/issues/170\n\t return this;\n\t }\n\t \n\t // Give flag that tell the editor enter preview mode\n\t this.$isPreview = true;\n\t // Disable all buttons\n\t this.disableButtons('all').enableButtons('cmdPreview');\n\t\n\t // Try to get the content from callback\n\t callbackContent = options.onPreview(this);\n\t // Set the content based from the callback content if string otherwise parse value from textarea\n\t content = typeof callbackContent == 'string' ? callbackContent : this.parseContent();\n\t\n\t // Build preview element\n\t replacementContainer.html(content);\n\t\n\t if (afterContainer && afterContainer.attr('class') == 'md-footer') {\n\t // If there is footer element, insert the preview container before it\n\t replacementContainer.insertBefore(afterContainer);\n\t } else {\n\t // Otherwise, just append it after textarea\n\t container.parent().append(replacementContainer);\n\t }\n\t\n\t // Set the preview element dimensions\n\t replacementContainer.css({\n\t width: container.outerWidth() + 'px',\n\t height: container.outerHeight() + 'px'\n\t });\n\t\n\t if (this.$options.resize) {\n\t replacementContainer.css('resize',this.$options.resize);\n\t }\n\t\n\t // Hide the last-active textarea\n\t container.hide();\n\t\n\t // Attach the editor instances\n\t replacementContainer.data('markdown',this);\n\t\n\t if (this.$element.is(':disabled') || this.$element.is('[readonly]')) {\n\t this.$editor.addClass('md-editor-disabled');\n\t this.disableButtons('all');\n\t }\n\t\n\t return this;\n\t }\n\t\n\t , hidePreview: function() {\n\t // Give flag that tell the editor quit preview mode\n\t this.$isPreview = false;\n\t\n\t // Obtain the preview container\n\t var container = this.$editor.find('div[data-provider=\"markdown-preview\"]');\n\t\n\t // Remove the preview container\n\t container.remove();\n\t\n\t // Enable all buttons\n\t this.enableButtons('all');\n\t // Disable configured disabled buttons\n\t this.disableButtons(this.$options.disabledButtons);\n\t\n\t // Back to the editor\n\t this.$textarea.show();\n\t this.__setListener();\n\t\n\t return this;\n\t }\n\t\n\t , isDirty: function() {\n\t return this.$oldContent != this.getContent();\n\t }\n\t\n\t , getContent: function() {\n\t return this.$textarea.val();\n\t }\n\t\n\t , setContent: function(content) {\n\t this.$textarea.val(content);\n\t\n\t return this;\n\t }\n\t\n\t , findSelection: function(chunk) {\n\t var content = this.getContent(), startChunkPosition;\n\t\n\t if (startChunkPosition = content.indexOf(chunk), startChunkPosition >= 0 && chunk.length > 0) {\n\t var oldSelection = this.getSelection(), selection;\n\t\n\t this.setSelection(startChunkPosition,startChunkPosition+chunk.length);\n\t selection = this.getSelection();\n\t\n\t this.setSelection(oldSelection.start,oldSelection.end);\n\t\n\t return selection;\n\t } else {\n\t return null;\n\t }\n\t }\n\t\n\t , getSelection: function() {\n\t\n\t var e = this.$textarea[0];\n\t\n\t return (\n\t\n\t ('selectionStart' in e && function() {\n\t var l = e.selectionEnd - e.selectionStart;\n\t return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };\n\t }) ||\n\t\n\t /* browser not supported */\n\t function() {\n\t return null;\n\t }\n\t\n\t )();\n\t\n\t }\n\t\n\t , setSelection: function(start,end) {\n\t\n\t var e = this.$textarea[0];\n\t\n\t return (\n\t\n\t ('selectionStart' in e && function() {\n\t e.selectionStart = start;\n\t e.selectionEnd = end;\n\t return;\n\t }) ||\n\t\n\t /* browser not supported */\n\t function() {\n\t return null;\n\t }\n\t\n\t )();\n\t\n\t }\n\t\n\t , replaceSelection: function(text) {\n\t\n\t var e = this.$textarea[0];\n\t\n\t return (\n\t\n\t ('selectionStart' in e && function() {\n\t e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);\n\t // Set cursor to the last replacement end\n\t e.selectionStart = e.value.length;\n\t return this;\n\t }) ||\n\t\n\t /* browser not supported */\n\t function() {\n\t e.value += text;\n\t return jQuery(e);\n\t }\n\t\n\t )();\n\t }\n\t\n\t , getNextTab: function() {\n\t // Shift the nextTab\n\t if (this.$nextTab.length === 0) {\n\t return null;\n\t } else {\n\t var nextTab, tab = this.$nextTab.shift();\n\t\n\t if (typeof tab == 'function') {\n\t nextTab = tab();\n\t } else if (typeof tab == 'object' && tab.length > 0) {\n\t nextTab = tab;\n\t }\n\t\n\t return nextTab;\n\t }\n\t }\n\t\n\t , setNextTab: function(start,end) {\n\t // Push new selection into nextTab collections\n\t if (typeof start == 'string') {\n\t var that = this;\n\t this.$nextTab.push(function(){\n\t return that.findSelection(start);\n\t });\n\t } else if (typeof start == 'number' && typeof end == 'number') {\n\t var oldSelection = this.getSelection();\n\t\n\t this.setSelection(start,end);\n\t this.$nextTab.push(this.getSelection());\n\t\n\t this.setSelection(oldSelection.start,oldSelection.end);\n\t }\n\t\n\t return;\n\t }\n\t\n\t , __parseButtonNameParam: function (names) {\n\t return typeof names == 'string' ?\n\t names.split(' ') :\n\t names;\n\t\n\t }\n\t\n\t , enableButtons: function(name) {\n\t var buttons = this.__parseButtonNameParam(name),\n\t that = this;\n\t\n\t $.each(buttons, function(i, v) {\n\t that.__alterButtons(buttons[i], function (el) {\n\t el.removeAttr('disabled');\n\t });\n\t });\n\t\n\t return this;\n\t }\n\t\n\t , disableButtons: function(name) {\n\t var buttons = this.__parseButtonNameParam(name),\n\t that = this;\n\t\n\t $.each(buttons, function(i, v) {\n\t that.__alterButtons(buttons[i], function (el) {\n\t el.attr('disabled','disabled');\n\t });\n\t });\n\t\n\t return this;\n\t }\n\t\n\t , hideButtons: function(name) {\n\t var buttons = this.__parseButtonNameParam(name),\n\t that = this;\n\t\n\t $.each(buttons, function(i, v) {\n\t that.__alterButtons(buttons[i], function (el) {\n\t el.addClass('hidden');\n\t });\n\t });\n\t\n\t return this;\n\t }\n\t\n\t , showButtons: function(name) {\n\t var buttons = this.__parseButtonNameParam(name),\n\t that = this;\n\t\n\t $.each(buttons, function(i, v) {\n\t that.__alterButtons(buttons[i], function (el) {\n\t el.removeClass('hidden');\n\t });\n\t });\n\t\n\t return this;\n\t }\n\t\n\t , eventSupported: function(eventName) {\n\t var isSupported = eventName in this.$element;\n\t if (!isSupported) {\n\t this.$element.setAttribute(eventName, 'return;');\n\t isSupported = typeof this.$element[eventName] === 'function';\n\t }\n\t return isSupported;\n\t }\n\t\n\t , keyup: function (e) {\n\t var blocked = false;\n\t switch(e.keyCode) {\n\t case 40: // down arrow\n\t case 38: // up arrow\n\t case 16: // shift\n\t case 17: // ctrl\n\t case 18: // alt\n\t break;\n\t\n\t case 9: // tab\n\t var nextTab;\n\t if (nextTab = this.getNextTab(),nextTab !== null) {\n\t // Get the nextTab if exists\n\t var that = this;\n\t setTimeout(function(){\n\t that.setSelection(nextTab.start,nextTab.end);\n\t },500);\n\t\n\t blocked = true;\n\t } else {\n\t // The next tab memory contains nothing...\n\t // check the cursor position to determine tab action\n\t var cursor = this.getSelection();\n\t\n\t if (cursor.start == cursor.end && cursor.end == this.getContent().length) {\n\t // The cursor already reach the end of the content\n\t blocked = false;\n\t } else {\n\t // Put the cursor to the end\n\t this.setSelection(this.getContent().length,this.getContent().length);\n\t\n\t blocked = true;\n\t }\n\t }\n\t\n\t break;\n\t\n\t case 13: // enter\n\t blocked = false;\n\t break;\n\t case 27: // escape\n\t if (this.$isFullscreen) this.setFullscreen(false);\n\t blocked = false;\n\t break;\n\t\n\t default:\n\t blocked = false;\n\t }\n\t\n\t if (blocked) {\n\t e.stopPropagation();\n\t e.preventDefault();\n\t }\n\t\n\t this.$options.onChange(this);\n\t }\n\t\n\t , change: function(e) {\n\t this.$options.onChange(this);\n\t return this;\n\t }\n\t , select: function (e) {\n\t this.$options.onSelect(this);\n\t return this;\n\t }\n\t , focus: function (e) {\n\t var options = this.$options,\n\t isHideable = options.hideable,\n\t editor = this.$editor;\n\t\n\t editor.addClass('active');\n\t\n\t // Blur other markdown(s)\n\t $(document).find('.md-editor').each(function(){\n\t if ($(this).attr('id') !== editor.attr('id')) {\n\t var attachedMarkdown;\n\t\n\t if (attachedMarkdown = $(this).find('textarea').data('markdown'),\n\t attachedMarkdown === null) {\n\t attachedMarkdown = $(this).find('div[data-provider=\"markdown-preview\"]').data('markdown');\n\t }\n\t\n\t if (attachedMarkdown) {\n\t attachedMarkdown.blur();\n\t }\n\t }\n\t });\n\t\n\t // Trigger the onFocus hook\n\t options.onFocus(this);\n\t\n\t return this;\n\t }\n\t\n\t , blur: function (e) {\n\t var options = this.$options,\n\t isHideable = options.hideable,\n\t editor = this.$editor,\n\t editable = this.$editable;\n\t\n\t if (editor.hasClass('active') || this.$element.parent().length === 0) {\n\t editor.removeClass('active');\n\t\n\t if (isHideable) {\n\t // Check for editable elements\n\t if (editable.el !== null) {\n\t // Build the original element\n\t var oldElement = $('<'+editable.type+'/>'),\n\t content = this.getContent(),\n\t currentContent = this.parseContent(content);\n\t\n\t $(editable.attrKeys).each(function(k,v) {\n\t oldElement.attr(editable.attrKeys[k],editable.attrValues[k]);\n\t });\n\t\n\t // Get the editor content\n\t oldElement.html(currentContent);\n\t\n\t editor.replaceWith(oldElement);\n\t } else {\n\t editor.hide();\n\t }\n\t }\n\t\n\t // Trigger the onBlur hook\n\t options.onBlur(this);\n\t }\n\t\n\t return this;\n\t }\n\t\n\t };\n\t\n\t /* MARKDOWN PLUGIN DEFINITION\n\t * ========================== */\n\t\n\t var old = $.fn.markdown;\n\t\n\t $.fn.markdown = function (option) {\n\t return this.each(function () {\n\t var $this = $(this)\n\t , data = $this.data('markdown')\n\t , options = typeof option == 'object' && option;\n\t if (!data) $this.data('markdown', (data = new Markdown(this, options)))\n\t })\n\t };\n\t\n\t $.fn.markdown.messages = {};\n\t\n\t $.fn.markdown.defaults = {\n\t /* Editor Properties */\n\t autofocus: false,\n\t hideable: false,\n\t savable: false,\n\t width: 'inherit',\n\t height: 'inherit',\n\t resize: 'none',\n\t iconlibrary: 'glyph',\n\t language: 'en',\n\t initialstate: 'editor',\n\t parser: null,\n\t\n\t /* Buttons Properties */\n\t buttons: [\n\t [{\n\t name: 'groupFont',\n\t data: [{\n\t name: 'cmdBold',\n\t hotkey: 'Ctrl+B',\n\t title: 'Bold',\n\t icon: { glyph: 'glyphicon glyphicon-bold', fa: 'fa fa-bold', 'fa-3': 'icon-bold' },\n\t callback: function(e){\n\t // Give/remove ** surround the selection\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\t\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('strong text');\n\t } else {\n\t chunk = selected.text;\n\t }\n\t\n\t // transform selection and set the cursor into chunked text\n\t if (content.substr(selected.start-2,2) === '**'\n\t && content.substr(selected.end,2) === '**' ) {\n\t e.setSelection(selected.start-2,selected.end+2);\n\t e.replaceSelection(chunk);\n\t cursor = selected.start-2;\n\t } else {\n\t e.replaceSelection('**'+chunk+'**');\n\t cursor = selected.start+2;\n\t }\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t },{\n\t name: 'cmdItalic',\n\t title: 'Italic',\n\t hotkey: 'Ctrl+I',\n\t icon: { glyph: 'glyphicon glyphicon-italic', fa: 'fa fa-italic', 'fa-3': 'icon-italic' },\n\t callback: function(e){\n\t // Give/remove * surround the selection\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\t\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('emphasized text');\n\t } else {\n\t chunk = selected.text;\n\t }\n\t\n\t // transform selection and set the cursor into chunked text\n\t if (content.substr(selected.start-1,1) === '_'\n\t && content.substr(selected.end,1) === '_' ) {\n\t e.setSelection(selected.start-1,selected.end+1);\n\t e.replaceSelection(chunk);\n\t cursor = selected.start-1;\n\t } else {\n\t e.replaceSelection('_'+chunk+'_');\n\t cursor = selected.start+1;\n\t }\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t },{\n\t name: 'cmdHeading',\n\t title: 'Heading',\n\t hotkey: 'Ctrl+H',\n\t icon: { glyph: 'glyphicon glyphicon-header', fa: 'fa fa-header', 'fa-3': 'icon-font' },\n\t callback: function(e){\n\t // Append/remove ### surround the selection\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent(), pointer, prevChar;\n\t\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('heading text');\n\t } else {\n\t chunk = selected.text + '\\n';\n\t }\n\t\n\t // transform selection and set the cursor into chunked text\n\t if ((pointer = 4, content.substr(selected.start-pointer,pointer) === '### ')\n\t || (pointer = 3, content.substr(selected.start-pointer,pointer) === '###')) {\n\t e.setSelection(selected.start-pointer,selected.end);\n\t e.replaceSelection(chunk);\n\t cursor = selected.start-pointer;\n\t } else if (selected.start > 0 && (prevChar = content.substr(selected.start-1,1), !!prevChar && prevChar != '\\n')) {\n\t e.replaceSelection('\\n\\n### '+chunk);\n\t cursor = selected.start+6;\n\t } else {\n\t // Empty string before element\n\t e.replaceSelection('### '+chunk);\n\t cursor = selected.start+4;\n\t }\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t }]\n\t },{\n\t name: 'groupLink',\n\t data: [{\n\t name: 'cmdUrl',\n\t title: 'URL/Link',\n\t hotkey: 'Ctrl+L',\n\t icon: { glyph: 'glyphicon glyphicon-link', fa: 'fa fa-link', 'fa-3': 'icon-link' },\n\t callback: function(e){\n\t // Give [] surround the selection and prepend the link\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent(), link;\n\t\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('enter link description here');\n\t } else {\n\t chunk = selected.text;\n\t }\n\t\n\t link = prompt(e.__localize('Insert Hyperlink'),'http://');\n\t\n\t var urlRegex = new RegExp('^((http|https)://|(mailto:)|(//))[a-z0-9]', 'i');\n\t if (link !== null && link !== '' && link !== 'http://' && urlRegex.test(link)) {\n\t var sanitizedLink = $('<div>'+link+'</div>').text();\n\t\n\t // transform selection and set the cursor into chunked text\n\t e.replaceSelection('['+chunk+']('+sanitizedLink+')');\n\t cursor = selected.start+1;\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t }\n\t },{\n\t name: 'cmdImage',\n\t title: 'Image',\n\t hotkey: 'Ctrl+G',\n\t icon: { glyph: 'glyphicon glyphicon-picture', fa: 'fa fa-picture-o', 'fa-3': 'icon-picture' },\n\t callback: function(e){\n\t // Give ![] surround the selection and prepend the image link\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent(), link;\n\t\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('enter image description here');\n\t } else {\n\t chunk = selected.text;\n\t }\n\t\n\t link = prompt(e.__localize('Insert Image Hyperlink'),'http://');\n\t\n\t var urlRegex = new RegExp('^((http|https)://|(//))[a-z0-9]', 'i');\n\t if (link !== null && link !== '' && link !== 'http://' && urlRegex.test(link)) {\n\t var sanitizedLink = $('<div>'+link+'</div>').text();\n\t\n\t // transform selection and set the cursor into chunked text\n\t e.replaceSelection('+'\")');\n\t cursor = selected.start+2;\n\t\n\t // Set the next tab\n\t e.setNextTab(e.__localize('enter image title here'));\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t }\n\t }]\n\t },{\n\t name: 'groupMisc',\n\t data: [{\n\t name: 'cmdList',\n\t hotkey: 'Ctrl+U',\n\t title: 'Unordered List',\n\t icon: { glyph: 'glyphicon glyphicon-list', fa: 'fa fa-list', 'fa-3': 'icon-list-ul' },\n\t callback: function(e){\n\t // Prepend/Give - surround the selection\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\t\n\t // transform selection and set the cursor into chunked text\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('list text here');\n\t\n\t e.replaceSelection('- '+chunk);\n\t // Set the cursor\n\t cursor = selected.start+2;\n\t } else {\n\t if (selected.text.indexOf('\\n') < 0) {\n\t chunk = selected.text;\n\t\n\t e.replaceSelection('- '+chunk);\n\t\n\t // Set the cursor\n\t cursor = selected.start+2;\n\t } else {\n\t var list = [];\n\t\n\t list = selected.text.split('\\n');\n\t chunk = list[0];\n\t\n\t $.each(list,function(k,v) {\n\t list[k] = '- '+v;\n\t });\n\t\n\t e.replaceSelection('\\n\\n'+list.join('\\n'));\n\t\n\t // Set the cursor\n\t cursor = selected.start+4;\n\t }\n\t }\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t },\n\t {\n\t name: 'cmdListO',\n\t hotkey: 'Ctrl+O',\n\t title: 'Ordered List',\n\t icon: { glyph: 'glyphicon glyphicon-th-list', fa: 'fa fa-list-ol', 'fa-3': 'icon-list-ol' },\n\t callback: function(e) {\n\t\n\t // Prepend/Give - surround the selection\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\t\n\t // transform selection and set the cursor into chunked text\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('list text here');\n\t e.replaceSelection('1. '+chunk);\n\t // Set the cursor\n\t cursor = selected.start+3;\n\t } else {\n\t if (selected.text.indexOf('\\n') < 0) {\n\t chunk = selected.text;\n\t\n\t e.replaceSelection('1. '+chunk);\n\t\n\t // Set the cursor\n\t cursor = selected.start+3;\n\t } else {\n\t var list = [];\n\t\n\t list = selected.text.split('\\n');\n\t chunk = list[0];\n\t\n\t $.each(list,function(k,v) {\n\t list[k] = '1. '+v;\n\t });\n\t\n\t e.replaceSelection('\\n\\n'+list.join('\\n'));\n\t\n\t // Set the cursor\n\t cursor = selected.start+5;\n\t }\n\t }\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t },\n\t {\n\t name: 'cmdCode',\n\t hotkey: 'Ctrl+K',\n\t title: 'Code',\n\t icon: { glyph: 'glyphicon glyphicon-asterisk', fa: 'fa fa-code', 'fa-3': 'icon-code' },\n\t callback: function(e) {\n\t // Give/remove ** surround the selection\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\t\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('code text here');\n\t } else {\n\t chunk = selected.text;\n\t }\n\t\n\t // transform selection and set the cursor into chunked text\n\t if (content.substr(selected.start-4,4) === '```\\n'\n\t && content.substr(selected.end,4) === '\\n```') {\n\t e.setSelection(selected.start-4, selected.end+4);\n\t e.replaceSelection(chunk);\n\t cursor = selected.start-4;\n\t } else if (content.substr(selected.start-1,1) === '`'\n\t && content.substr(selected.end,1) === '`') {\n\t e.setSelection(selected.start-1,selected.end+1);\n\t e.replaceSelection(chunk);\n\t cursor = selected.start-1;\n\t } else if (content.indexOf('\\n') > -1) {\n\t e.replaceSelection('```\\n'+chunk+'\\n```');\n\t cursor = selected.start+4;\n\t } else {\n\t e.replaceSelection('`'+chunk+'`');\n\t cursor = selected.start+1;\n\t }\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t },\n\t {\n\t name: 'cmdQuote',\n\t hotkey: 'Ctrl+Q',\n\t title: 'Quote',\n\t icon: { glyph: 'glyphicon glyphicon-comment', fa: 'fa fa-quote-left', 'fa-3': 'icon-quote-left' },\n\t callback: function(e) {\n\t // Prepend/Give - surround the selection\n\t var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\t\n\t // transform selection and set the cursor into chunked text\n\t if (selected.length === 0) {\n\t // Give extra word\n\t chunk = e.__localize('quote here');\n\t\n\t e.replaceSelection('> '+chunk);\n\t\n\t // Set the cursor\n\t cursor = selected.start+2;\n\t } else {\n\t if (selected.text.indexOf('\\n') < 0) {\n\t chunk = selected.text;\n\t\n\t e.replaceSelection('> '+chunk);\n\t\n\t // Set the cursor\n\t cursor = selected.start+2;\n\t } else {\n\t var list = [];\n\t\n\t list = selected.text.split('\\n');\n\t chunk = list[0];\n\t\n\t $.each(list,function(k,v) {\n\t list[k] = '> '+v;\n\t });\n\t\n\t e.replaceSelection('\\n\\n'+list.join('\\n'));\n\t\n\t // Set the cursor\n\t cursor = selected.start+4;\n\t }\n\t }\n\t\n\t // Set the cursor\n\t e.setSelection(cursor,cursor+chunk.length);\n\t }\n\t }]\n\t },{\n\t name: 'groupUtil',\n\t data: [{\n\t name: 'cmdPreview',\n\t toggle: true,\n\t hotkey: 'Ctrl+P',\n\t title: 'Preview',\n\t btnText: 'Preview',\n\t btnClass: 'btn btn-primary btn-sm',\n\t icon: { glyph: 'glyphicon glyphicon-search', fa: 'fa fa-search', 'fa-3': 'icon-search' },\n\t callback: function(e){\n\t // Check the preview mode and toggle based on this flag\n\t var isPreview = e.$isPreview,content;\n\t\n\t if (isPreview === false) {\n\t // Give flag that tell the editor enter preview mode\n\t e.showPreview();\n\t } else {\n\t e.hidePreview();\n\t }\n\t }\n\t }]\n\t }]\n\t ],\n\t additionalButtons:[], // Place to hook more buttons by code\n\t reorderButtonGroups:[],\n\t hiddenButtons:[], // Default hidden buttons\n\t disabledButtons:[], // Default disabled buttons\n\t footer: '',\n\t fullscreen: {\n\t enable: true,\n\t icons: {\n\t fullscreenOn: {\n\t fa: 'fa fa-expand',\n\t glyph: 'glyphicon glyphicon-fullscreen',\n\t 'fa-3': 'icon-resize-full'\n\t },\n\t fullscreenOff: {\n\t fa: 'fa fa-compress',\n\t glyph: 'glyphicon glyphicon-fullscreen',\n\t 'fa-3': 'icon-resize-small'\n\t }\n\t }\n\t },\n\t\n\t /* Events hook */\n\t onShow: function (e) {},\n\t onPreview: function (e) {},\n\t onSave: function (e) {},\n\t onBlur: function (e) {},\n\t onFocus: function (e) {},\n\t onChange: function(e) {},\n\t onFullscreen: function(e) {},\n\t onSelect: function (e) {}\n\t };\n\t\n\t $.fn.markdown.Constructor = Markdown;\n\t\n\t\n\t /* MARKDOWN NO CONFLICT\n\t * ==================== */\n\t\n\t $.fn.markdown.noConflict = function () {\n\t $.fn.markdown = old;\n\t return this;\n\t };\n\t\n\t /* MARKDOWN GLOBAL FUNCTION & DATA-API\n\t * ==================================== */\n\t var initMarkdown = function(el) {\n\t var $this = el;\n\t\n\t if ($this.data('markdown')) {\n\t $this.data('markdown').showEditor();\n\t return;\n\t }\n\t\n\t $this.markdown()\n\t };\n\t\n\t var blurNonFocused = function(e) {\n\t var $activeElement = $(document.activeElement);\n\t\n\t // Blur event\n\t $(document).find('.md-editor').each(function(){\n\t var $this = $(this),\n\t focused = $activeElement.closest('.md-editor')[0] === this,\n\t attachedMarkdown = $this.find('textarea').data('markdown') ||\n\t $this.find('div[data-provider=\"markdown-preview\"]').data('markdown');\n\t\n\t if (attachedMarkdown && !focused) {\n\t attachedMarkdown.blur();\n\t }\n\t })\n\t };\n\t\n\t $(document)\n\t .on('click.markdown.data-api', '[data-provide=\"markdown-editable\"]', function (e) {\n\t initMarkdown($(this));\n\t e.preventDefault();\n\t })\n\t .on('click focusin', function (e) {\n\t blurNonFocused(e);\n\t })\n\t .ready(function(){\n\t $('textarea[data-provide=\"markdown\"]').each(function(){\n\t initMarkdown($(this));\n\t })\n\t });\n\t\n\t}));\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(12)))\n\n/***/ },\n\n/***/ 1059:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".calendar{color:#000;min-width:210px;border-radius:4px}.calendar>*{display:block}.calendar .fa-remove{color:red}.calendar nav{font-weight:700;display:flex}.calendar nav .switch{flex:2 0 50%}.calendar nav .next,.calendar nav .prev{flex:1}.calendar main{display:flex;flex-wrap:wrap}.calendar main header{font-weight:700}.calendar main header span{height:30px;padding-top:10px;line-height:20px}.calendar main.days>*{display:flex;flex:1 0 100%}.calendar main.days button,.calendar main.days span{flex:1 0 30px;text-align:center}.calendar main.months,.calendar main.years{flex-wrap:wrap}.calendar main.months button,.calendar main.years button{flex:1 0 25%;text-align:center;height:54px;line-height:54px}.calendar footer{font-weight:700;display:flex}.calendar button{height:30px;width:100%;background:none;border:none;border-radius:4px}.calendar button:hover{background:#eee}.calendar button.new,.calendar button.old{color:#777}.calendar button.day:hover,.calendar button:focus{background:#eee;cursor:pointer}.calendar button:disabled,.calendar button:disabled:hover{background:none;color:#777;cursor:not-allowed}.calendar button.today{color:#000;background-color:#ffdb99;border-color:#ffb733;position:relative}.calendar button.today.focus,.calendar button.today:focus{color:#000;background-color:#ffc966;border-color:#b37400}.calendar button.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.calendar button.today.active,.calendar button.today:active,.open>.dropdown-toggle.calendar button.today{color:#000;background-color:#ffc966;background-image:none;border-color:#f59e00}.calendar button.today.active.focus,.calendar button.today.active:focus,.calendar button.today.active:hover,.calendar button.today:active.focus,.calendar button.today:active:focus,.calendar button.today:active:hover,.open>.dropdown-toggle.calendar button.today.focus,.open>.dropdown-toggle.calendar button.today:focus,.open>.dropdown-toggle.calendar button.today:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.calendar button.today.disabled.focus,.calendar button.today.disabled:focus,.calendar button.today.disabled:hover,.calendar button.today[disabled].focus,.calendar button.today[disabled]:focus,.calendar button.today[disabled]:hover,fieldset[disabled] .calendar button.today.focus,fieldset[disabled] .calendar button.today:focus,fieldset[disabled] .calendar button.today:hover{background-color:#ffdb99;border-color:#ffb733}.calendar button.today .badge{color:#ffdb99;background-color:#000}.calendar button.today:focus{background:#ffc966}.calendar button.today:disabled,.calendar button.today:disabled:active{background:#ffdb99;color:#777}.calendar button.today:before{content:\\\"\\\";display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#000;border-top-color:#ffdb99;position:absolute;bottom:4px;right:4px}.calendar button.active{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.calendar button.active.focus,.calendar button.active:focus{color:#fff;background-color:#286090;border-color:#122b40}.calendar button.active:hover{color:#fff;background-color:#286090;border-color:#204d74}.calendar button.active.active,.calendar button.active:active,.open>.dropdown-toggle.calendar button.active{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.calendar button.active.active.focus,.calendar button.active.active:focus,.calendar button.active.active:hover,.calendar button.active:active.focus,.calendar button.active:active:focus,.calendar button.active:active:hover,.open>.dropdown-toggle.calendar button.active.focus,.open>.dropdown-toggle.calendar button.active:focus,.open>.dropdown-toggle.calendar button.active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.calendar button.active.disabled.focus,.calendar button.active.disabled:focus,.calendar button.active.disabled:hover,.calendar button.active[disabled].focus,.calendar button.active[disabled]:focus,.calendar button.active[disabled]:hover,fieldset[disabled] .calendar button.active.focus,fieldset[disabled] .calendar button.active:focus,fieldset[disabled] .calendar button.active:hover{background-color:#337ab7;border-color:#2e6da4}.calendar button.active .badge{color:#337ab7;background-color:#fff}.calendar button.active.today:before{border-bottom-color:#fff}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/calendar.vue\"],\"names\":[],\"mappings\":\"AAAA,UAAU,WAAY,gBAAgB,iBAAiB,CAAC,YAAY,aAAa,CAAC,qBAAqB,SAAS,CAAC,cAAc,gBAAiB,YAAY,CAAC,sBAAsB,YAAY,CAAC,wCAAwC,MAAM,CAAC,eAAe,aAAa,cAAc,CAAC,sBAAsB,eAAgB,CAAC,2BAA2B,YAAY,iBAAiB,gBAAgB,CAAC,sBAAsB,aAAa,aAAa,CAAC,oDAAoD,cAAc,iBAAiB,CAAC,2CAA2C,cAAc,CAAC,yDAAyD,aAAa,kBAAkB,YAAY,gBAAgB,CAAC,iBAAiB,gBAAiB,YAAY,CAAC,iBAAiB,YAAY,WAAW,gBAAgB,YAAY,iBAAiB,CAAC,uBAAuB,eAAe,CAAC,0CAA0C,UAAU,CAAC,kDAAkD,gBAAgB,cAAc,CAAC,0DAA0D,gBAAgB,WAAW,kBAAkB,CAAC,uBAAuB,WAAW,yBAAyB,qBAAqB,iBAAiB,CAAC,0DAA0D,WAAW,yBAAyB,oBAAoB,CAAC,6BAA6B,WAAW,yBAAyB,oBAAoB,CAAC,yGAAyG,WAAW,yBAAyB,sBAAsB,oBAAoB,CAAC,iXAAiX,WAAW,yBAAyB,oBAAoB,CAAC,uXAAuX,yBAAyB,oBAAoB,CAAC,8BAA8B,cAAc,qBAAqB,CAAC,6BAA6B,kBAAkB,CAAC,uEAAuE,mBAAmB,UAAU,CAAC,8BAA8B,WAAW,qBAAqB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,kBAAkB,WAAW,SAAS,CAAC,wBAAwB,WAAW,yBAAyB,qBAAqB,oCAAqC,CAAC,4DAA4D,WAAW,yBAAyB,oBAAoB,CAAC,8BAA8B,WAAW,yBAAyB,oBAAoB,CAAC,4GAA4G,WAAW,yBAAyB,sBAAsB,oBAAoB,CAAC,0XAA0X,WAAW,yBAAyB,oBAAoB,CAAC,gYAAgY,yBAAyB,oBAAoB,CAAC,+BAA+B,cAAc,qBAAqB,CAAC,qCAAqC,wBAAwB,CAAC\",\"file\":\"calendar.vue\",\"sourcesContent\":[\".calendar{color:black;min-width:210px;border-radius:4px}.calendar>*{display:block}.calendar .fa-remove{color:red}.calendar nav{font-weight:bold;display:flex}.calendar nav .switch{flex:2 0 50%}.calendar nav .prev,.calendar nav .next{flex:1}.calendar main{display:flex;flex-wrap:wrap}.calendar main header{font-weight:bold}.calendar main header span{height:30px;padding-top:10px;line-height:20px}.calendar main.days>*{display:flex;flex:1 0 100%}.calendar main.days span,.calendar main.days button{flex:1 0 30px;text-align:center}.calendar main.months,.calendar main.years{flex-wrap:wrap}.calendar main.months button,.calendar main.years button{flex:1 0 25%;text-align:center;height:54px;line-height:54px}.calendar footer{font-weight:bold;display:flex}.calendar button{height:30px;width:100%;background:none;border:none;border-radius:4px}.calendar button:hover{background:#eee}.calendar button.old,.calendar button.new{color:#777}.calendar button.day:hover,.calendar button:focus{background:#eee;cursor:pointer}.calendar button:disabled,.calendar button:disabled:hover{background:none;color:#777;cursor:not-allowed}.calendar button.today{color:#000;background-color:#ffdb99;border-color:#ffb733;position:relative}.calendar button.today:focus,.calendar button.today.focus{color:#000;background-color:#ffc966;border-color:#b37400}.calendar button.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.calendar button.today:active,.calendar button.today.active,.open>.dropdown-toggle.calendar button.today{color:#000;background-color:#ffc966;background-image:none;border-color:#f59e00}.calendar button.today:active:hover,.calendar button.today.active:hover,.open>.dropdown-toggle.calendar button.today:hover,.calendar button.today:active:focus,.calendar button.today.active:focus,.open>.dropdown-toggle.calendar button.today:focus,.calendar button.today:active.focus,.calendar button.today.active.focus,.open>.dropdown-toggle.calendar button.today.focus{color:#000;background-color:#ffbc42;border-color:#b37400}.calendar button.today.disabled:hover,.calendar button.today[disabled]:hover,fieldset[disabled] .calendar button.today:hover,.calendar button.today.disabled:focus,.calendar button.today[disabled]:focus,fieldset[disabled] .calendar button.today:focus,.calendar button.today.disabled.focus,.calendar button.today[disabled].focus,fieldset[disabled] .calendar button.today.focus{background-color:#ffdb99;border-color:#ffb733}.calendar button.today .badge{color:#ffdb99;background-color:#000}.calendar button.today:focus{background:#ffc966}.calendar button.today:disabled,.calendar button.today:disabled:active{background:#ffdb99;color:#777}.calendar button.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#000;border-top-color:#ffdb99;position:absolute;bottom:4px;right:4px}.calendar button.active{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.calendar button.active:focus,.calendar button.active.focus{color:#fff;background-color:#286090;border-color:#122b40}.calendar button.active:hover{color:#fff;background-color:#286090;border-color:#204d74}.calendar button.active:active,.calendar button.active.active,.open>.dropdown-toggle.calendar button.active{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.calendar button.active:active:hover,.calendar button.active.active:hover,.open>.dropdown-toggle.calendar button.active:hover,.calendar button.active:active:focus,.calendar button.active.active:focus,.open>.dropdown-toggle.calendar button.active:focus,.calendar button.active:active.focus,.calendar button.active.active.focus,.open>.dropdown-toggle.calendar button.active.focus{color:#fff;background-color:#204d74;border-color:#122b40}.calendar button.active.disabled:hover,.calendar button.active[disabled]:hover,fieldset[disabled] .calendar button.active:hover,.calendar button.active.disabled:focus,.calendar button.active[disabled]:focus,fieldset[disabled] .calendar button.active:focus,.calendar button.active.disabled.focus,.calendar button.active[disabled].focus,fieldset[disabled] .calendar button.active.focus{background-color:#337ab7;border-color:#2e6da4}.calendar button.active .badge{color:#337ab7;background-color:#fff}.calendar button.active.today:before{border-bottom-color:#fff}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1060:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".checkbox-form-field label{font-weight:700}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/checkbox.vue\"],\"names\":[],\"mappings\":\"AAAA,2BAA2B,eAAgB,CAAC\",\"file\":\"checkbox.vue\",\"sourcesContent\":[\".checkbox-form-field label{font-weight:bold}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1061:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".date-picker .dropdown-menu{min-width:100%;width:auto}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/date-picker.vue\"],\"names\":[],\"mappings\":\"AAAA,4BAA4B,eAAe,UAAU,CAAC\",\"file\":\"date-picker.vue\",\"sourcesContent\":[\".date-picker .dropdown-menu{min-width:100%;width:auto}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1062:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \"table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777}caption,th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.markdown img{max-width:100%;margin:auto;display:block}.markdown img+em{display:block;text-align:center;margin:.3em .1em}.markdown table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.markdown table>tbody>tr>td,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>td,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.markdown table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.markdown table>caption+thead>tr:first-child>td,.markdown table>caption+thead>tr:first-child>th,.markdown table>colgroup+thead>tr:first-child>td,.markdown table>colgroup+thead>tr:first-child>th,.markdown table>thead:first-child>tr:first-child>td,.markdown table>thead:first-child>tr:first-child>th{border-top:0}.markdown table>tbody+tbody{border-top:2px solid #ddd}.markdown table .table{background-color:#fff}.markdown table>tbody>tr>td,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>td,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>thead>tr>th{border:1px solid #ddd}.markdown table>thead>tr>td,.markdown table>thead>tr>th{border-bottom-width:2px}.markdown table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.markdown table>tbody>tr:hover{background-color:#f5f5f5}.md-editor>textarea{background:#fff;padding:6px 12px;border-bottom:none}.md-editor.active{border-color:#3c8dbc;box-shadow:none}.form-group.has-error .md-editor{border-color:#dd4b39}.form-group.has-success .md-editor{border-color:#00a65a}.md-editor .btn{border-radius:0}.md-editor .btn.btn-default{background-color:#fff}.md-editor .md-preview{color:#000;padding:6px 12px;max-width:100%}.md-editor .md-preview img{max-width:100%;margin:auto;display:block}.md-editor .md-preview img+em{display:block;text-align:center;margin:.3em .1em}.md-editor .md-preview table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>td,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.md-editor .md-preview table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.md-editor .md-preview table>caption+thead>tr:first-child>td,.md-editor .md-preview table>caption+thead>tr:first-child>th,.md-editor .md-preview table>colgroup+thead>tr:first-child>td,.md-editor .md-preview table>colgroup+thead>tr:first-child>th,.md-editor .md-preview table>thead:first-child>tr:first-child>td,.md-editor .md-preview table>thead:first-child>tr:first-child>th{border-top:0}.md-editor .md-preview table>tbody+tbody{border-top:2px solid #ddd}.md-editor .md-preview table .table{background-color:#fff}.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>td,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>thead>tr>th{border:1px solid #ddd}.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>thead>tr>th{border-bottom-width:2px}.md-editor .md-preview table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.md-editor .md-preview table>tbody>tr:hover{background-color:#f5f5f5}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/markdown-editor.vue\"],\"names\":[],\"mappings\":\"AAAA,MAAM,4BAA4B,CAAC,uBAAyB,gBAAgB,qBAAqB,UAAU,CAAC,4CAAgD,gBAAgB,mBAAmB,UAAU,CAAC,QAAQ,gBAAgB,mBAAmB,UAAW,CAAgB,WAAhB,eAAe,CAAoB,OAAO,WAAW,eAAe,kBAAkB,CAAC,kHAAkH,YAAY,uBAAuB,mBAAmB,yBAAyB,CAAC,mBAAmB,sBAAsB,4BAA4B,CAAC,oPAAoP,YAAY,CAAC,mBAAmB,yBAAyB,CAAC,cAAc,qBAAqB,CAAC,8KAA8K,WAAW,CAAC,AAAsC,wLAAwK,qBAAqB,CAAC,wDAAwD,uBAAuB,CAAC,yCAAyC,wBAAwB,CAAC,AAAqD,oVAAwT,wBAAwB,CAAC,4LAA4L,wBAAwB,CAAC,oUAAoU,wBAAwB,CAAC,iMAAiM,wBAAwB,CAAC,gSAAgS,wBAAwB,CAAC,kLAAkL,wBAAwB,CAAC,oUAAoU,wBAAwB,CAAC,iMAAiM,wBAAwB,CAAC,wTAAwT,wBAAwB,CAAC,4LAA4L,wBAAwB,CAAC,kBAAkB,gBAAgB,eAAe,CAAC,oCAAoC,kBAAkB,WAAW,mBAAmB,kBAAkB,4CAA4C,qBAAqB,CAAC,yBAAyB,eAAe,CAAC,8NAA8N,kBAAkB,CAAC,kCAAkC,QAAQ,CAAC,4VAA4V,aAAa,CAAC,sVAAsV,cAAc,CAAC,oOAAoO,eAAe,CAAC,CAAC,cAAc,eAAe,YAAY,aAAa,CAAC,iBAAiB,cAAc,kBAAkB,gBAAgB,CAAC,gBAAgB,WAAW,eAAe,mBAAmB,qBAAqB,CAAC,wKAAwK,YAAY,uBAAuB,mBAAmB,yBAAyB,CAAC,4BAA4B,sBAAsB,4BAA4B,CAAC,0SAA0S,YAAY,CAAC,4BAA4B,yBAAyB,CAAC,uBAAuB,qBAAqB,CAAC,wKAAwK,qBAAqB,CAAC,wDAAwD,uBAAuB,CAAC,0CAA0C,wBAAwB,CAAC,+BAA+B,wBAAwB,CAAC,oBAAoB,gBAAiB,iBAAiB,kBAAkB,CAAC,kBAAkB,qBAAqB,eAAe,CAAC,iCAAiC,oBAAoB,CAAC,mCAAmC,oBAAoB,CAAC,gBAAgB,eAAe,CAAC,4BAA4B,qBAAsB,CAAC,uBAAuB,WAAY,iBAAiB,cAAc,CAAC,2BAA2B,eAAe,YAAY,aAAa,CAAC,8BAA8B,cAAc,kBAAkB,gBAAgB,CAAC,6BAA6B,WAAW,eAAe,mBAAmB,qBAAqB,CAAC,sPAAsP,YAAY,uBAAuB,mBAAmB,yBAAyB,CAAC,yCAAyC,sBAAsB,4BAA4B,CAAC,wXAAwX,YAAY,CAAC,yCAAyC,yBAAyB,CAAC,oCAAoC,qBAAqB,CAAC,sPAAsP,qBAAqB,CAAC,kFAAkF,uBAAuB,CAAC,uDAAuD,wBAAwB,CAAC,4CAA4C,wBAAwB,CAAC\",\"file\":\"markdown-editor.vue\",\"sourcesContent\":[\"table{background-color:transparent}table col[class*=\\\"col-\\\"]{position:static;display:table-column;float:none}table td[class*=\\\"col-\\\"],table th[class*=\\\"col-\\\"]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.markdown img{max-width:100%;margin:auto;display:block}.markdown img+em{display:block;text-align:center;margin:.3em .1em}.markdown table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.markdown table>thead>tr>th,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>tbody>tr>td,.markdown table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.markdown table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.markdown table>caption+thead>tr:first-child>th,.markdown table>colgroup+thead>tr:first-child>th,.markdown table>thead:first-child>tr:first-child>th,.markdown table>caption+thead>tr:first-child>td,.markdown table>colgroup+thead>tr:first-child>td,.markdown table>thead:first-child>tr:first-child>td{border-top:0}.markdown table>tbody+tbody{border-top:2px solid #ddd}.markdown table .table{background-color:#fff}.markdown table>thead>tr>th,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>tbody>tr>td,.markdown table>tfoot>tr>td{border:1px solid #ddd}.markdown table>thead>tr>th,.markdown table>thead>tr>td{border-bottom-width:2px}.markdown table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.markdown table>tbody>tr:hover{background-color:#f5f5f5}.md-editor>textarea{background:white;padding:6px 12px;border-bottom:none}.md-editor.active{border-color:#3c8dbc;box-shadow:none}.form-group.has-error .md-editor{border-color:#dd4b39}.form-group.has-success .md-editor{border-color:#00a65a}.md-editor .btn{border-radius:0}.md-editor .btn.btn-default{background-color:white}.md-editor .md-preview{color:black;padding:6px 12px;max-width:100%}.md-editor .md-preview img{max-width:100%;margin:auto;display:block}.md-editor .md-preview img+em{display:block;text-align:center;margin:.3em .1em}.md-editor .md-preview table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.md-editor .md-preview table>thead>tr>th,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.md-editor .md-preview table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.md-editor .md-preview table>caption+thead>tr:first-child>th,.md-editor .md-preview table>colgroup+thead>tr:first-child>th,.md-editor .md-preview table>thead:first-child>tr:first-child>th,.md-editor .md-preview table>caption+thead>tr:first-child>td,.md-editor .md-preview table>colgroup+thead>tr:first-child>td,.md-editor .md-preview table>thead:first-child>tr:first-child>td{border-top:0}.md-editor .md-preview table>tbody+tbody{border-top:2px solid #ddd}.md-editor .md-preview table .table{background-color:#fff}.md-editor .md-preview table>thead>tr>th,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tfoot>tr>td{border:1px solid #ddd}.md-editor .md-preview table>thead>tr>th,.md-editor .md-preview table>thead>tr>td{border-bottom-width:2px}.md-editor .md-preview table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.md-editor .md-preview table>tbody>tr:hover{background-color:#f5f5f5}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1063:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=calendar :class=\\\"[ 'view' ]\\\"> <div class=calendar-{{view}}> <nav> <button class=prev @click.prevent=previous :disabled=previousDisabled> <span class=\\\"fa fa-chevron-left\\\"></span> </button> <button class=switch @click.prevent=zoomOut>{{ rangeDisplay }}</button> <button class=next @click.prevent=next :disabled=nextDisabled> <span class=\\\"fa fa-chevron-right\\\"></span> </button> </nav> <main v-if=\\\"view == 'days'\\\" class=days> <header> <span class=dow v-for=\\\"day in days\\\">{{ day }}</span> </header> <div v-for=\\\"week in monthDays(current)\\\"> <button v-for=\\\"day in week\\\" class=day :class=dayClasses(day) @click.prevent=pickDay(day) :disabled=isDisabled(day)> {{ day.date() }} </button> </div> </main> <main v-if=\\\"view == 'months'\\\" class=months> <button v-for=\\\"(idx, month) in months\\\" class=month @click.prevent=pickMonth(idx) :disabled=isMonthDisabled(idx)> {{ month }} </button> </main> <main v-if=\\\"view == 'years'\\\" class=years> <button v-for=\\\"year in yearsRange\\\" class=year @click.prevent=pickYear(year) :disabled=isYearDisabled(year)> {{ year }} </button> </main> <footer> <button @click.prevent=pickDay(today)>{{ _('Today') }}</button> <button @click.prevent=clear> <span class=\\\"fa fa-remove\\\"></span> {{ _('Clear') }} </button> </footer> </div> </div> \";\n\n/***/ },\n\n/***/ 1064:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"checkbox checkbox-form-field\\\"> <label :for=field.id :class=\\\"{ 'required': required }\\\"> <input type=checkbox :id=field.id :name=field.id :checked=value @input=onChange> {{ field.label }} </label> </div> \";\n\n/***/ },\n\n/***/ 1065:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"input-group dropdown date-picker\\\" :class=\\\"{ 'open': picking }\\\" v-outside=onOutside> <span class=input-group-addon><span class=\\\"fa fa-calendar\\\"></span></span> <input type=text class=form-control v-el:input @focus=onFocus @input=\\\"onChange | debounce 500\\\" :placeholder=placeholder :required=required :value=\\\"value|dt dateFormat ''\\\" :readonly=readonly> <div class=\\\"dropdown-menu dropdown-menu-right\\\"> <calendar v-ref:calendar :selected=value></calendar> </div> <input v-if=serializable v-el:hidden type=hidden :name=field.id :value=\\\"value|dt ISO_FORMAT ''\\\"> </div> \";\n\n/***/ },\n\n/***/ 1066:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <input type=hidden :id=field.id :name=field.id :value=value :required=required> \";\n\n/***/ },\n\n/***/ 1067:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <textarea class=form-control :rows=\\\"field.rows || rows || 6\\\" :id=field.id :name=field.id :placeholder=placeholder :required=required :readonly=readonly @input=onChange>{{value || ''}}</textarea> \";\n\n/***/ },\n\n/***/ 1068:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <input type=number class=form-control :id=field.id :name=field.id :placeholder=placeholder :required=required :readonly=readonly :value=value @input=onChange> \";\n\n/***/ },\n\n/***/ 1069:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <select class=form-control v-model=value :multiple=field.multiple :id=field.id :name=field.id :placeholder=placeholder :required=required :disabled=readonly @change=onChange> <optgroup v-for=\\\"(group, ids) in field.groups\\\" :label=group> <option v-for=\\\"option in options | extract group\\\" :value=option.value :selected=\\\"option.value == value\\\"> {{option.text || option.value}} </option> </optgroup> </select> \";\n\n/***/ },\n\n/***/ 1070:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <select class=form-control v-model=value :multiple=field.multiple :id=field.id :name=field.id :placeholder=placeholder :required=required :disabled=readonly @change=onChange> <option v-for=\\\"option in options | extract\\\" :value=option.value> {{option.text || option.value}} </option> </select> \";\n\n/***/ },\n\n/***/ 1071:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <input type=text class=form-control :id=field.id :name=field.id :placeholder=placeholder :required=required :readonly=readonly :value=value @input=onChange> \";\n\n/***/ },\n\n/***/ 1072:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(1059);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./calendar.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./calendar.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1073:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(1060);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./checkbox.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./checkbox.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1074:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(1061);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./date-picker.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./date-picker.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1075:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(1062);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./markdown-editor.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./markdown-editor.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1076:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _slicedToArray2 = __webpack_require__(135);\n\t\n\tvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\t\n\tvar _entries = __webpack_require__(201);\n\t\n\tvar _entries2 = _interopRequireDefault(_entries);\n\t\n\tvar _toConsumableArray2 = __webpack_require__(1034);\n\t\n\tvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\t\n\tvar _getIterator2 = __webpack_require__(200);\n\t\n\tvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\t\n\tvar _api = __webpack_require__(99);\n\t\n\tvar _api2 = _interopRequireDefault(_api);\n\t\n\tvar _i18n = __webpack_require__(133);\n\t\n\tvar _utils = __webpack_require__(314);\n\t\n\tvar _logger = __webpack_require__(20);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _moment = __webpack_require__(17);\n\t\n\tvar _moment2 = _interopRequireDefault(_moment);\n\t\n\tvar _jqueryValidation = __webpack_require__(1077);\n\t\n\tvar _jqueryValidation2 = _interopRequireDefault(_jqueryValidation);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar interpolation = { defaultVariables: { 'O': '{O}', '1': '{1}', 'ISO': '{ISO}' } };\n\t\n\t_jqueryValidation2.default.extend(_jqueryValidation2.default.validator.messages, {\n\t required: (0, _i18n._)('valid-required'),\n\t remote: (0, _i18n._)('valid-remote'),\n\t email: (0, _i18n._)('valid-email'),\n\t url: (0, _i18n._)('valid-url'),\n\t date: (0, _i18n._)('valid-date'),\n\t dateISO: (0, _i18n._)('valid-date-iso', { interpolation: interpolation }),\n\t number: (0, _i18n._)('valid-number'),\n\t digits: (0, _i18n._)('valid-digits'),\n\t creditcard: (0, _i18n._)('valid-creditcard'),\n\t equalTo: (0, _i18n._)('valid-equal-to'),\n\t maxlength: _jqueryValidation2.default.validator.format((0, _i18n._)('valid-maxlength', { interpolation: interpolation })),\n\t minlength: _jqueryValidation2.default.validator.format((0, _i18n._)('valid-minlength', { interpolation: interpolation })),\n\t rangelength: _jqueryValidation2.default.validator.format((0, _i18n._)('valid-range-length', { interpolation: interpolation })),\n\t range: _jqueryValidation2.default.validator.format((0, _i18n._)('valid-range', { interpolation: interpolation })),\n\t max: _jqueryValidation2.default.validator.format((0, _i18n._)('valid-max', { interpolation: interpolation })),\n\t min: _jqueryValidation2.default.validator.format((0, _i18n._)('valid-min', { interpolation: interpolation }))\n\t});\n\t\n\t_jqueryValidation2.default.validator.addMethod('dateGreaterThan', function (value, element, param) {\n\t var start = (0, _moment2.default)(document.getElementById(param).value);\n\t return this.optional(element) || (0, _moment2.default)(value).isAfter(start);\n\t}, _jqueryValidation2.default.validator.format((0, _i18n._)('Date should be after start date')));\n\t\n\tfunction empty_schema() {\n\t return { properties: {}, required: [] };\n\t}\n\t\n\tvar TEXT_INPUTS = ['color', 'date', 'datetime', 'datetime-local', 'email', 'hidden', 'month', 'number', 'range', 'search', 'tel', 'text', 'time', 'url', 'week'];\n\t\n\tvar TEXT_TAGS = ['select', 'textarea'];\n\t\n\texports.default = {\n\t name: 'base-form',\n\t props: {\n\t fields: Array,\n\t model: Object,\n\t defs: Object,\n\t readonly: {\n\t type: Boolean,\n\t default: false\n\t },\n\t fill: Boolean\n\t },\n\t events: {\n\t 'field:change': function fieldChange(field, value) {\n\t this.$dispatch('form:change', this, field, value);\n\t return true;\n\t }\n\t },\n\t computed: {\n\t schema: function schema() {\n\t if (!this.fields || !(this.model || this.defs)) {\n\t return empty_schema();\n\t }\n\t var s = empty_schema();\n\t var schema = this.defs || this.model && this.model.__schema__ || empty_schema();\n\t\n\t this.fields.forEach(function (field) {\n\t if (schema.hasOwnProperty('properties') && schema.properties.hasOwnProperty(field.id)) {\n\t s.properties[field.id] = schema.properties[field.id];\n\t if (schema.required && schema.required.indexOf(field.id) >= 0) {\n\t s.required.push(field.id);\n\t }\n\t return;\n\t }\n\t\n\t var properties = field.id.split('.');\n\t var currentSchema = schema;\n\t var required = true;\n\t var path = '';\n\t var prop = void 0;\n\t\n\t var _iteratorNormalCompletion = true;\n\t var _didIteratorError = false;\n\t var _iteratorError = undefined;\n\t\n\t try {\n\t for (var _iterator = (0, _getIterator3.default)(properties), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t prop = _step.value;\n\t\n\t path += path === '' ? prop : '.' + prop;\n\t\n\t if (currentSchema.hasOwnProperty('$ref')) {\n\t currentSchema = _api2.default.resolve(currentSchema.$ref);\n\t }\n\t\n\t if (!currentSchema.properties || !currentSchema.properties.hasOwnProperty(prop)) {\n\t _logger2.default.warn('Property \"' + prop + '\" not found in schema');\n\t return;\n\t }\n\t\n\t required = required && currentSchema.hasOwnProperty('required') && currentSchema.required.indexOf(prop) >= 0;\n\t\n\t if (required && s.required.indexOf(path) < 0) {\n\t s.required.push(path);\n\t }\n\t\n\t if (currentSchema.properties[prop].hasOwnProperty('$ref')) {\n\t currentSchema = _api2.default.resolve(currentSchema.properties[prop].$ref);\n\t }\n\t }\n\t } catch (err) {\n\t _didIteratorError = true;\n\t _iteratorError = err;\n\t } finally {\n\t try {\n\t if (!_iteratorNormalCompletion && _iterator.return) {\n\t _iterator.return();\n\t }\n\t } finally {\n\t if (_didIteratorError) {\n\t throw _iteratorError;\n\t }\n\t }\n\t }\n\t\n\t s.properties[field.id] = currentSchema.properties[prop];\n\t if (required && !field.id in s.required) {\n\t s.required.push(field.id);\n\t }\n\t });\n\t\n\t return s;\n\t },\n\t $form: function $form() {\n\t if (!this) return;\n\t return this.$refs.form || this.$els.form || this.$el;\n\t }\n\t },\n\t attached: function attached() {\n\t (0, _jqueryValidation2.default)(this.$form).validate({\n\t ignore: '',\n\t errorClass: 'help-block',\n\t highlight: this.highlight,\n\t unhighlight: this.unhighlight,\n\t success: this.success,\n\t showErrors: this.showErrors,\n\t errorPlacement: function errorPlacement() {}\n\t });\n\t this.$broadcast('form:ready');\n\t },\n\t beforeDestroy: function beforeDestroy() {\n\t if (this.$form) {\n\t this.$broadcast('form:beforeDestroy');\n\t (0, _jqueryValidation2.default)(this.$form).data('validator', null);\n\t this.$broadcast('form:destroy');\n\t }\n\t },\n\t\n\t methods: {\n\t validate: function validate() {\n\t return (0, _jqueryValidation2.default)(this.$form).valid();\n\t },\n\t serialize: function serialize() {\n\t if (!this.$form) return;\n\t var elements = this.$form.querySelectorAll('input,textarea,select');\n\t var out = {};\n\t\n\t Array.prototype.map.call(elements, function (el) {\n\t var value = void 0;\n\t if (el.tagName.toLowerCase() === 'select' && el.multiple) {\n\t value = [].concat((0, _toConsumableArray3.default)(el.options));\n\t value = value.filter(function (option) {\n\t return option.selected;\n\t });\n\t value = value.map(function (option) {\n\t return option.value;\n\t });\n\t } else if (TEXT_TAGS.includes(el.tagName.toLowerCase()) || TEXT_INPUTS.includes(el.type.toLowerCase())) {\n\t value = el.value || null;\n\t } else if (el.type === 'checkbox') {\n\t value = el.checked;\n\t } else {\n\t value = el.value;\n\t }\n\t return { name: el.name, value: value };\n\t }).forEach(function (item) {\n\t (0, _utils.setattr)(out, item.name, item.value);\n\t });\n\t\n\t for (var prop in out) {\n\t if ((0, _utils.isObject)(out[prop]) && this.schema.required.indexOf(prop) < 0) {\n\t var falsy = true;\n\t for (var attr in out[prop]) {\n\t if (out[prop].hasOwnProperty(attr)) {\n\t falsy &= !out[prop][attr];\n\t }\n\t }\n\t if (falsy) {\n\t delete out[prop];\n\t }\n\t }\n\t }\n\t\n\t return out;\n\t },\n\t on_error: function on_error(response) {\n\t var messages = [];\n\t\n\t if ((0, _utils.isString)(response)) {\n\t _logger2.default.error(response);\n\t return;\n\t }\n\t\n\t if (response.headers && 'X-Sentry-ID' in response.headers) {\n\t messages.push(this._('The error identifier is {id}', { id: response.headers['X-Sentry-ID'] }));\n\t }\n\t\n\t if ('data' in response) {\n\t var data = {};\n\t try {\n\t data = JSON.parse(response.data);\n\t } catch (e) {\n\t _logger2.default.warn('Parsing error:', e);\n\t }\n\t\n\t if ('errors' in data) {\n\t this.fill_errors(data.errors);\n\t return;\n\t } else if ('message' in data) {\n\t messages.push(data.message);\n\t }\n\t }\n\t\n\t if (!messages.length) {\n\t messages.push(this._('An unkown error occured'));\n\t }\n\t\n\t this.$dispatch('notify', {\n\t type: 'error',\n\t icon: 'exclamation-triangle',\n\t title: this._('An error occured'),\n\t details: messages.join('\\n')\n\t });\n\t },\n\t fill_errors: function fill_errors(errors) {\n\t var _this = this;\n\t\n\t (0, _entries2.default)((0, _utils.flattenObject)(errors)).forEach(function (_ref) {\n\t var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n\t field = _ref2[0],\n\t errs = _ref2[1];\n\t\n\t var el = _this.$form.querySelector('[name=\"' + field + '\"]');\n\t var $field = _this.findField(el);\n\t $field.errors = errs;\n\t $field.success = false;\n\t });\n\t },\n\t highlight: function highlight(element) {\n\t this.findField(element).success = false;\n\t },\n\t unhighlight: function unhighlight(element) {\n\t this.findField(element).errors = [];\n\t },\n\t showErrors: function showErrors(errorMap, errorList) {\n\t var _this2 = this;\n\t\n\t errorList.forEach(function (error) {\n\t _this2.findField(error.element).errors = [error.message];\n\t });\n\t (0, _jqueryValidation2.default)(this.$form).data('validator').defaultShowErrors();\n\t },\n\t success: function success(label, el) {\n\t this.findField(el).success = true;\n\t },\n\t findField: function findField(el) {\n\t var $component = (0, _utils.findComponent)(this, el);\n\t while (!$component.isField) {\n\t $component = $component.$parent;\n\t }\n\t return $component;\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1077:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n\t * jQuery Validation Plugin v1.20.0\n\t *\n\t * https://jqueryvalidation.org/\n\t *\n\t * Copyright (c) 2023 Jörn Zaefferer\n\t * Released under the MIT license\n\t */\n\t(function( factory ) {\n\t\tif ( true ) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(12)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (typeof module === \"object\" && module.exports) {\n\t\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t\t} else {\n\t\t\tfactory( jQuery );\n\t\t}\n\t}(function( $ ) {\n\t\n\t$.extend( $.fn, {\n\t\n\t\t// https://jqueryvalidation.org/validate/\n\t\tvalidate: function( options ) {\n\t\n\t\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\t\tif ( !this.length ) {\n\t\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Check if a validator for this form was already created\n\t\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\t\tif ( validator ) {\n\t\t\t\treturn validator;\n\t\t\t}\n\t\n\t\t\t// Add novalidate tag if HTML5.\n\t\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\t\n\t\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t\t$.data( this[ 0 ], \"validator\", validator );\n\t\n\t\t\tif ( validator.settings.onsubmit ) {\n\t\n\t\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\t\n\t\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t\t// submits later.\n\t\t\t\t\tvalidator.submitButton = event.currentTarget;\n\t\n\t\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\n\t\t\t\t// Validate the form on submit\n\t\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\t\tif ( validator.settings.debug ) {\n\t\n\t\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfunction handle() {\n\t\t\t\t\t\tvar hidden, result;\n\t\n\t\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\n\t\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\t\tif ( hidden ) {\n\t\n\t\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\t\treturn handle();\n\t\t\t\t\t}\n\t\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn handle();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\treturn validator;\n\t\t},\n\t\n\t\t// https://jqueryvalidation.org/valid/\n\t\tvalid: function() {\n\t\t\tvar valid, validator, errorList;\n\t\n\t\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\t\tvalid = this.validate().form();\n\t\t\t} else {\n\t\t\t\terrorList = [];\n\t\t\t\tvalid = true;\n\t\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\t\tif ( !valid ) {\n\t\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tvalidator.errorList = errorList;\n\t\t\t}\n\t\t\treturn valid;\n\t\t},\n\t\n\t\t// https://jqueryvalidation.org/rules/\n\t\trules: function( command, argument ) {\n\t\t\tvar element = this[ 0 ],\n\t\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\t\n\t\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\t\tif ( element == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tif ( !element.form && isContentEditable ) {\n\t\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\t\telement.name = this.attr( \"name\" );\n\t\t\t}\n\t\n\t\t\tif ( element.form == null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\tif ( command ) {\n\t\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\t\tstaticRules = settings.rules;\n\t\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\t\tswitch ( command ) {\n\t\t\t\tcase \"add\":\n\t\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\t\n\t\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\t\tdelete existingRules.messages;\n\t\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"remove\":\n\t\t\t\t\tif ( !argument ) {\n\t\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\t\treturn existingRules;\n\t\t\t\t\t}\n\t\t\t\t\tfiltered = {};\n\t\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t\t} );\n\t\t\t\t\treturn filtered;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tdata = $.validator.normalizeRules(\n\t\t\t$.extend(\n\t\t\t\t{},\n\t\t\t\t$.validator.classRules( element ),\n\t\t\t\t$.validator.attributeRules( element ),\n\t\t\t\t$.validator.dataRules( element ),\n\t\t\t\t$.validator.staticRules( element )\n\t\t\t), element );\n\t\n\t\t\t// Make sure required is at front\n\t\t\tif ( data.required ) {\n\t\t\t\tparam = data.required;\n\t\t\t\tdelete data.required;\n\t\t\t\tdata = $.extend( { required: param }, data );\n\t\t\t}\n\t\n\t\t\t// Make sure remote is at back\n\t\t\tif ( data.remote ) {\n\t\t\t\tparam = data.remote;\n\t\t\t\tdelete data.remote;\n\t\t\t\tdata = $.extend( data, { remote: param } );\n\t\t\t}\n\t\n\t\t\treturn data;\n\t\t}\n\t} );\n\t\n\t// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\n\tvar trim = function( str ) {\n\t\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\t\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n\t};\n\t\n\t// Custom selectors\n\t$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\t\n\t\t// https://jqueryvalidation.org/blank-selector/\n\t\tblank: function( a ) {\n\t\t\treturn !trim( \"\" + $( a ).val() );\n\t\t},\n\t\n\t\t// https://jqueryvalidation.org/filled-selector/\n\t\tfilled: function( a ) {\n\t\t\tvar val = $( a ).val();\n\t\t\treturn val !== null && !!trim( \"\" + val );\n\t\t},\n\t\n\t\t// https://jqueryvalidation.org/unchecked-selector/\n\t\tunchecked: function( a ) {\n\t\t\treturn !$( a ).prop( \"checked\" );\n\t\t}\n\t} );\n\t\n\t// Constructor for validator\n\t$.validator = function( options, form ) {\n\t\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\t\tthis.currentForm = form;\n\t\tthis.init();\n\t};\n\t\n\t// https://jqueryvalidation.org/jQuery.validator.format/\n\t$.validator.format = function( source, params ) {\n\t\tif ( arguments.length === 1 ) {\n\t\t\treturn function() {\n\t\t\t\tvar args = $.makeArray( arguments );\n\t\t\t\targs.unshift( source );\n\t\t\t\treturn $.validator.format.apply( this, args );\n\t\t\t};\n\t\t}\n\t\tif ( params === undefined ) {\n\t\t\treturn source;\n\t\t}\n\t\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t\t}\n\t\tif ( params.constructor !== Array ) {\n\t\t\tparams = [ params ];\n\t\t}\n\t\t$.each( params, function( i, n ) {\n\t\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\t\treturn n;\n\t\t\t} );\n\t\t} );\n\t\treturn source;\n\t};\n\t\n\t$.extend( $.validator, {\n\t\n\t\tdefaults: {\n\t\t\tmessages: {},\n\t\t\tgroups: {},\n\t\t\trules: {},\n\t\t\terrorClass: \"error\",\n\t\t\tpendingClass: \"pending\",\n\t\t\tvalidClass: \"valid\",\n\t\t\terrorElement: \"label\",\n\t\t\tfocusCleanup: false,\n\t\t\tfocusInvalid: true,\n\t\t\terrorContainer: $( [] ),\n\t\t\terrorLabelContainer: $( [] ),\n\t\t\tonsubmit: true,\n\t\t\tignore: \":hidden\",\n\t\t\tignoreTitle: false,\n\t\t\tonfocusin: function( element ) {\n\t\t\t\tthis.lastActive = element;\n\t\n\t\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t\t}\n\t\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonfocusout: function( element ) {\n\t\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\t\tthis.element( element );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonkeyup: function( element, event ) {\n\t\n\t\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t\t// Shift => 16\n\t\t\t\t// Ctrl => 17\n\t\t\t\t// Alt => 18\n\t\t\t\t// Caps lock => 20\n\t\t\t\t// End => 35\n\t\t\t\t// Home => 36\n\t\t\t\t// Left arrow => 37\n\t\t\t\t// Up arrow => 38\n\t\t\t\t// Right arrow => 39\n\t\t\t\t// Down arrow => 40\n\t\t\t\t// Insert => 45\n\t\t\t\t// Num lock => 144\n\t\t\t\t// AltGr key => 225\n\t\t\t\tvar excludedKeys = [\n\t\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t\t];\n\t\n\t\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\t\treturn;\n\t\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\t\tthis.element( element );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonclick: function( element ) {\n\t\n\t\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\t\tthis.element( element );\n\t\n\t\t\t\t// Or option elements, check parent select in that case\n\t\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\t\tthis.element( element.parentNode );\n\t\t\t\t}\n\t\t\t},\n\t\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t\t} else {\n\t\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t\t}\n\t\t\t},\n\t\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t\t} else {\n\t\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\t\tsetDefaults: function( settings ) {\n\t\t\t$.extend( $.validator.defaults, settings );\n\t\t},\n\t\n\t\tmessages: {\n\t\t\trequired: \"This field is required.\",\n\t\t\tremote: \"Please fix this field.\",\n\t\t\temail: \"Please enter a valid email address.\",\n\t\t\turl: \"Please enter a valid URL.\",\n\t\t\tdate: \"Please enter a valid date.\",\n\t\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\t\tnumber: \"Please enter a valid number.\",\n\t\t\tdigits: \"Please enter only digits.\",\n\t\t\tequalTo: \"Please enter the same value again.\",\n\t\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t\t},\n\t\n\t\tautoCreateRanges: false,\n\t\n\t\tprototype: {\n\t\n\t\t\tinit: function() {\n\t\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\t\tthis.submitted = {};\n\t\t\t\tthis.valueCache = {};\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\tthis.pending = {};\n\t\t\t\tthis.invalid = {};\n\t\t\t\tthis.reset();\n\t\n\t\t\t\tvar currentForm = this.currentForm,\n\t\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\t\trules;\n\t\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t\t}\n\t\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\trules = this.settings.rules;\n\t\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t\t} );\n\t\n\t\t\t\tfunction delegate( event ) {\n\t\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\t\n\t\t\t\t\t// Set form expando on contenteditable\n\t\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\t\tsettings = validator.settings;\n\t\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t$( this.currentForm )\n\t\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\t\n\t\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\t\n\t\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/Validator.form/\n\t\t\tform: function() {\n\t\t\t\tthis.checkForm();\n\t\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\t\tif ( !this.valid() ) {\n\t\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\t\t\t\treturn this.valid();\n\t\t\t},\n\t\n\t\t\tcheckForm: function() {\n\t\t\t\tthis.prepareForm();\n\t\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.check( elements[ i ] );\n\t\t\t\t}\n\t\t\t\treturn this.valid();\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/Validator.element/\n\t\t\telement: function( element ) {\n\t\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\t\tv = this,\n\t\t\t\t\tresult = true,\n\t\t\t\t\trs, group;\n\t\n\t\t\t\tif ( checkElement === undefined ) {\n\t\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t\t} else {\n\t\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\t\tthis.currentElements = $( checkElement );\n\t\n\t\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t\t// containing a value\n\t\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\n\t\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\t\tresult = result && rs;\n\t\t\t\t\tif ( rs ) {\n\t\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif ( !this.numberOfInvalids() ) {\n\t\n\t\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t\t}\n\t\t\t\t\tthis.showErrors();\n\t\n\t\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t\t}\n\t\n\t\t\t\treturn result;\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\t\tshowErrors: function( errors ) {\n\t\t\t\tif ( errors ) {\n\t\t\t\t\tvar validator = this;\n\t\n\t\t\t\t\t// Add items to error list and map\n\t\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\n\t\t\t\t\t// Remove items from success list\n\t\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t\t} else {\n\t\t\t\t\tthis.defaultShowErrors();\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\t\tresetForm: function() {\n\t\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t\t}\n\t\t\t\tthis.invalid = {};\n\t\t\t\tthis.submitted = {};\n\t\t\t\tthis.prepareForm();\n\t\t\t\tthis.hideErrors();\n\t\t\t\tvar elements = this.elements()\n\t\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t\t.removeAttr( \"aria-invalid\" );\n\t\n\t\t\t\tthis.resetElements( elements );\n\t\t\t},\n\t\n\t\t\tresetElements: function( elements ) {\n\t\t\t\tvar i;\n\t\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telements\n\t\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tnumberOfInvalids: function() {\n\t\t\t\treturn this.objectLength( this.invalid );\n\t\t\t},\n\t\n\t\t\tobjectLength: function( obj ) {\n\t\t\t\t/* jshint unused: false */\n\t\t\t\tvar count = 0,\n\t\t\t\t\ti;\n\t\t\t\tfor ( i in obj ) {\n\t\n\t\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t\t// message as invalid elements\n\t\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t\t},\n\t\n\t\t\thideErrors: function() {\n\t\t\t\tthis.hideThese( this.toHide );\n\t\t\t},\n\t\n\t\t\thideThese: function( errors ) {\n\t\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\t\tthis.addWrapper( errors ).hide();\n\t\t\t},\n\t\n\t\t\tvalid: function() {\n\t\t\t\treturn this.size() === 0;\n\t\t\t},\n\t\n\t\t\tsize: function() {\n\t\t\t\treturn this.errorList.length;\n\t\t\t},\n\t\n\t\t\tfocusInvalid: function() {\n\t\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t\t.trigger( \"focus\" )\n\t\n\t\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t\t} catch ( e ) {\n\t\n\t\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tfindLastActive: function() {\n\t\t\t\tvar lastActive = this.lastActive;\n\t\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t\t} ).length === 1 && lastActive;\n\t\t\t},\n\t\n\t\t\telements: function() {\n\t\t\t\tvar validator = this,\n\t\t\t\t\trulesCache = {};\n\t\n\t\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\t\treturn $( this.currentForm )\n\t\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t\t.not( this.settings.ignore )\n\t\t\t\t.filter( function() {\n\t\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\t\n\t\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Set form expando on contenteditable\n\t\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\t\tthis.name = name;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\n\t\t\t\t\trulesCache[ name ] = true;\n\t\t\t\t\treturn true;\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tclean: function( selector ) {\n\t\t\t\treturn $( selector )[ 0 ];\n\t\t\t},\n\t\n\t\t\terrors: function() {\n\t\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t\t},\n\t\n\t\t\tresetInternals: function() {\n\t\t\t\tthis.successList = [];\n\t\t\t\tthis.errorList = [];\n\t\t\t\tthis.errorMap = {};\n\t\t\t\tthis.toShow = $( [] );\n\t\t\t\tthis.toHide = $( [] );\n\t\t\t},\n\t\n\t\t\treset: function() {\n\t\t\t\tthis.resetInternals();\n\t\t\t\tthis.currentElements = $( [] );\n\t\t\t},\n\t\n\t\t\tprepareForm: function() {\n\t\t\t\tthis.reset();\n\t\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t\t},\n\t\n\t\t\tprepareElement: function( element ) {\n\t\t\t\tthis.reset();\n\t\t\t\tthis.toHide = this.errorsFor( element );\n\t\t\t},\n\t\n\t\t\telementValue: function( element ) {\n\t\t\t\tvar $element = $( element ),\n\t\t\t\t\ttype = element.type,\n\t\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\t\tval, idx;\n\t\n\t\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t\t}\n\t\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tval = $element.text();\n\t\t\t\t} else {\n\t\t\t\t\tval = $element.val();\n\t\t\t\t}\n\t\n\t\t\t\tif ( type === \"file\" ) {\n\t\n\t\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Legacy browsers\n\t\t\t\t\t// Unix-based path\n\t\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Windows-based path\n\t\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Just the file name\n\t\t\t\t\treturn val;\n\t\t\t\t}\n\t\n\t\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t\t}\n\t\t\t\treturn val;\n\t\t\t},\n\t\n\t\t\tcheck: function( element ) {\n\t\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\t\n\t\t\t\tvar rules = $( element ).rules(),\n\t\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\t\treturn i;\n\t\t\t\t\t} ).length,\n\t\t\t\t\tdependencyMismatch = false,\n\t\t\t\t\tval = this.elementValue( element ),\n\t\t\t\t\tresult, method, rule, normalizer;\n\t\n\t\t\t\t// Abort any pending Ajax request from a previous call to this method.\n\t\t\t\tthis.abortRequest( element );\n\t\n\t\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t\t}\n\t\n\t\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t\t// of using the real one.\n\t\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\t\tif ( normalizer ) {\n\t\t\t\t\tval = normalizer.call( element, val );\n\t\n\t\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\t\tdelete rules.normalizer;\n\t\t\t\t}\n\t\n\t\t\t\tfor ( method in rules ) {\n\t\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\t\n\t\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdependencyMismatch = false;\n\t\n\t\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( dependencyMismatch ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\t\tthis.successList.push( element );\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\n\t\t\t// Return the custom message for the given element and validation method\n\t\t\t// specified in the element's HTML5 data attribute\n\t\t\t// return the generic message if present and no method specific message is present\n\t\t\tcustomDataMessage: function( element, method ) {\n\t\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t\t},\n\t\n\t\t\t// Return the custom message for the given element name and validation method\n\t\t\tcustomMessage: function( name, method ) {\n\t\t\t\tvar m = this.settings.messages[ name ];\n\t\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t\t},\n\t\n\t\t\t// Return the first defined argument, allowing empty strings\n\t\t\tfindDefined: function() {\n\t\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t},\n\t\n\t\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t\t// of the following form:\n\t\t\t// rule = {\n\t\t\t// method: \"method name\",\n\t\t\t// parameters: \"the given method parameters\"\n\t\t\t// }\n\t\t\t//\n\t\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t\t// old code, and will be removed in the next major release.\n\t\t\tdefaultMessage: function( element, rule ) {\n\t\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\t\trule = { method: rule };\n\t\t\t\t}\n\t\n\t\t\t\tvar message = this.findDefined(\n\t\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\t\n\t\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t\t\t),\n\t\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t\t}\n\t\n\t\t\t\treturn message;\n\t\t\t},\n\t\n\t\t\tformatAndAdd: function( element, rule ) {\n\t\t\t\tvar message = this.defaultMessage( element, rule );\n\t\n\t\t\t\tthis.errorList.push( {\n\t\t\t\t\tmessage: message,\n\t\t\t\t\telement: element,\n\t\t\t\t\tmethod: rule.method\n\t\t\t\t} );\n\t\n\t\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\t\tthis.submitted[ element.name ] = message;\n\t\t\t},\n\t\n\t\t\taddWrapper: function( toToggle ) {\n\t\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t\t}\n\t\t\t\treturn toToggle;\n\t\t\t},\n\t\n\t\t\tdefaultShowErrors: function() {\n\t\t\t\tvar i, elements, error;\n\t\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\t\terror = this.errorList[ i ];\n\t\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t\t}\n\t\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t\t}\n\t\t\t\tif ( this.errorList.length ) {\n\t\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t\t}\n\t\t\t\tif ( this.settings.success ) {\n\t\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\t\tthis.hideErrors();\n\t\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t\t},\n\t\n\t\t\tvalidElements: function() {\n\t\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t\t},\n\t\n\t\t\tinvalidElements: function() {\n\t\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\t\treturn this.element;\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tshowLabel: function( element, message ) {\n\t\t\t\tvar place, group, errorID, v,\n\t\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\t\n\t\t\t\tif ( error.length ) {\n\t\n\t\t\t\t\t// Refresh error/success class\n\t\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\t\n\t\t\t\t\t// Replace message on existing label\n\t\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\n\t\t\t\t\t// Create error element\n\t\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t\t.addClass( this.settings.errorClass );\n\t\n\t\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\t\tplace = error;\n\t\t\t\t\tif ( this.settings.wrapper ) {\n\t\n\t\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t\t}\n\t\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Link error back to the element\n\t\t\t\t\tif ( error.is( \"label\" ) ) {\n\t\n\t\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\t\terror.attr( \"for\", elementID );\n\t\n\t\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\t\terrorID = error.attr( \"id\" );\n\t\n\t\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\t\n\t\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\t\n\t\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\t\terror.text( \"\" );\n\t\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.toShow = this.toShow.add( error );\n\t\t\t},\n\t\n\t\t\terrorsFor: function( element ) {\n\t\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\t\n\t\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\t\tif ( describer ) {\n\t\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t\t}\n\t\n\t\t\t\treturn this\n\t\t\t\t\t.errors()\n\t\t\t\t\t.filter( selector );\n\t\t\t},\n\t\n\t\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t\t// as a literal part of a name/id or any selector.\n\t\t\tescapeCssMeta: function( string ) {\n\t\t\t\tif ( string === undefined ) {\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\n\t\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t\t},\n\t\n\t\t\tidOrName: function( element ) {\n\t\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t\t},\n\t\n\t\t\tvalidationTargetFor: function( element ) {\n\t\n\t\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\telement = this.findByName( element.name );\n\t\t\t\t}\n\t\n\t\t\t\t// Always apply ignore filter\n\t\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t\t},\n\t\n\t\t\tcheckable: function( element ) {\n\t\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t\t},\n\t\n\t\t\tfindByName: function( name ) {\n\t\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t\t},\n\t\n\t\t\tgetLength: function( value, element ) {\n\t\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\t\tcase \"select\":\n\t\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\t\tcase \"input\":\n\t\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn value.length;\n\t\t\t},\n\t\n\t\t\tdepend: function( param, element ) {\n\t\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t\t},\n\t\n\t\t\tdependTypes: {\n\t\t\t\t\"boolean\": function( param ) {\n\t\t\t\t\treturn param;\n\t\t\t\t},\n\t\t\t\t\"string\": function( param, element ) {\n\t\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t\t},\n\t\t\t\t\"function\": function( param, element ) {\n\t\t\t\t\treturn param( element );\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\toptional: function( element ) {\n\t\t\t\tvar val = this.elementValue( element );\n\t\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t\t},\n\t\n\t\t\telementAjaxPort: function( element ) {\n\t\t\t\treturn \"validate\" + element.name;\n\t\t\t},\n\t\n\t\t\tstartRequest: function( element ) {\n\t\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\t\tthis.pendingRequest++;\n\t\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tstopRequest: function( element, valid ) {\n\t\t\t\tthis.pendingRequest--;\n\t\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\t\n\t\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t\t}\n\t\n\t\t\t\t\tthis.formSubmitted = false;\n\t\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\t\tthis.formSubmitted = false;\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tabortRequest: function( element ) {\n\t\t\t\tvar port;\n\t\n\t\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t\t$.ajaxAbort( port );\n\t\n\t\t\t\t\tthis.pendingRequest--;\n\t\n\t\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\t\t}\n\t\t\t},\n\t\n\t\t\tpreviousValue: function( element, method ) {\n\t\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\t\n\t\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\t\told: null,\n\t\t\t\t\tvalid: true,\n\t\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\t\tdestroy: function() {\n\t\t\t\tthis.resetForm();\n\t\n\t\t\t\t$( this.currentForm )\n\t\t\t\t\t.off( \".validate\" )\n\t\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t\t}\n\t\n\t\t},\n\t\n\t\tclassRuleSettings: {\n\t\t\trequired: { required: true },\n\t\t\temail: { email: true },\n\t\t\turl: { url: true },\n\t\t\tdate: { date: true },\n\t\t\tdateISO: { dateISO: true },\n\t\t\tnumber: { number: true },\n\t\t\tdigits: { digits: true },\n\t\t\tcreditcard: { creditcard: true }\n\t\t},\n\t\n\t\taddClassRules: function( className, rules ) {\n\t\t\tif ( className.constructor === String ) {\n\t\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t\t} else {\n\t\t\t\t$.extend( this.classRuleSettings, className );\n\t\t\t}\n\t\t},\n\t\n\t\tclassRules: function( element ) {\n\t\t\tvar rules = {},\n\t\t\t\tclasses = $( element ).attr( \"class\" );\n\t\n\t\t\tif ( classes ) {\n\t\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn rules;\n\t\t},\n\t\n\t\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\t\n\t\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t\t// allows type=\"date\" and others to be compared as strings\n\t\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\t\tvalue = Number( value );\n\t\n\t\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\t\tif ( isNaN( value ) ) {\n\t\t\t\t\tvalue = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( value || value === 0 ) {\n\t\t\t\trules[ method ] = value;\n\t\t\t} else if ( type === method && type !== \"range\" ) {\n\t\n\t\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t\t// does not test for the html5 'range' type\n\t\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t\t}\n\t\t},\n\t\n\t\tattributeRules: function( element ) {\n\t\t\tvar rules = {},\n\t\t\t\t$element = $( element ),\n\t\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\t\tmethod, value;\n\t\n\t\t\tfor ( method in $.validator.methods ) {\n\t\n\t\t\t\t// Support for <input required> in both html5 and older browsers\n\t\t\t\tif ( method === \"required\" ) {\n\t\t\t\t\tvalue = element.getAttribute( method );\n\t\n\t\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\t\tvalue = true;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\t\tvalue = !!value;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = $element.attr( method );\n\t\t\t\t}\n\t\n\t\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t\t}\n\t\n\t\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\n\t\t\treturn rules;\n\t\t},\n\t\n\t\tdataRules: function( element ) {\n\t\t\tvar rules = {},\n\t\t\t\t$element = $( element ),\n\t\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\t\tmethod, value;\n\t\n\t\t\tfor ( method in $.validator.methods ) {\n\t\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\t\n\t\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\t\n\t\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t\t}\n\t\t\treturn rules;\n\t\t},\n\t\n\t\tstaticRules: function( element ) {\n\t\t\tvar rules = {},\n\t\t\t\tvalidator = $.data( element.form, \"validator\" );\n\t\n\t\t\tif ( validator.settings.rules ) {\n\t\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t\t}\n\t\t\treturn rules;\n\t\t},\n\t\n\t\tnormalizeRules: function( rules, element ) {\n\t\n\t\t\t// Handle dependency check\n\t\t\t$.each( rules, function( prop, val ) {\n\t\n\t\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\t\tif ( val === false ) {\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( val.param || val.depends ) {\n\t\t\t\t\tvar keepRule = true;\n\t\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif ( keepRule ) {\n\t\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\t// Evaluate parameters\n\t\t\t$.each( rules, function( rule, parameter ) {\n\t\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t\t} );\n\t\n\t\t\t// Clean number parameters\n\t\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\t\tif ( rules[ this ] ) {\n\t\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\t\tvar parts;\n\t\t\t\tif ( rules[ this ] ) {\n\t\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\tif ( $.validator.autoCreateRanges ) {\n\t\n\t\t\t\t// Auto-create ranges\n\t\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\t\tdelete rules.min;\n\t\t\t\t\tdelete rules.max;\n\t\t\t\t}\n\t\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\t\tdelete rules.minlength;\n\t\t\t\t\tdelete rules.maxlength;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn rules;\n\t\t},\n\t\n\t\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\t\tnormalizeRule: function( data ) {\n\t\t\tif ( typeof data === \"string\" ) {\n\t\t\t\tvar transformed = {};\n\t\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\t\ttransformed[ this ] = true;\n\t\t\t\t} );\n\t\t\t\tdata = transformed;\n\t\t\t}\n\t\t\treturn data;\n\t\t},\n\t\n\t\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\t\taddMethod: function( name, method, message ) {\n\t\t\t$.validator.methods[ name ] = method;\n\t\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\t\tif ( method.length < 3 ) {\n\t\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t\t}\n\t\t},\n\t\n\t\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\t\tmethods: {\n\t\n\t\t\t// https://jqueryvalidation.org/required-method/\n\t\t\trequired: function( value, element, param ) {\n\t\n\t\t\t\t// Check if dependency is met\n\t\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t\t}\n\t\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\t\n\t\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\t\tvar val = $( element ).val();\n\t\t\t\t\treturn val && val.length > 0;\n\t\t\t\t}\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t\t}\n\t\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/email-method/\n\t\t\temail: function( value, element ) {\n\t\n\t\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t\t// Retrieved 2014-01-14\n\t\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t\t// Or use custom methods to implement your own email validation\n\t\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/url-method/\n\t\t\turl: function( value, element ) {\n\t\n\t\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t\t// modified to allow protocol-relative URLs\n\t\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/date-method/\n\t\t\tdate: ( function() {\n\t\t\t\tvar called = false;\n\t\n\t\t\t\treturn function( value, element ) {\n\t\t\t\t\tif ( !called ) {\n\t\t\t\t\t\tcalled = true;\n\t\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t\t};\n\t\t\t}() ),\n\t\n\t\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\t\tdateISO: function( value, element ) {\n\t\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/number-method/\n\t\t\tnumber: function( value, element ) {\n\t\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/digits-method/\n\t\t\tdigits: function( value, element ) {\n\t\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/minlength-method/\n\t\t\tminlength: function( value, element, param ) {\n\t\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\t\treturn this.optional( element ) || length >= param;\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\t\tmaxlength: function( value, element, param ) {\n\t\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\t\treturn this.optional( element ) || length <= param;\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\t\trangelength: function( value, element, param ) {\n\t\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/min-method/\n\t\t\tmin: function( value, element, param ) {\n\t\t\t\treturn this.optional( element ) || value >= param;\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/max-method/\n\t\t\tmax: function( value, element, param ) {\n\t\t\t\treturn this.optional( element ) || value <= param;\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/range-method/\n\t\t\trange: function( value, element, param ) {\n\t\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/step-method/\n\t\t\tstep: function( value, element, param ) {\n\t\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t\t},\n\t\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t\t},\n\t\t\t\t\tvalid = true,\n\t\t\t\t\tdecimals;\n\t\n\t\t\t\t// Works only for text, number and range input types\n\t\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\t\tif ( notSupported ) {\n\t\t\t\t\tthrow new Error( errorMessage );\n\t\t\t\t}\n\t\n\t\t\t\tdecimals = decimalPlaces( param );\n\t\n\t\t\t\t// Value can't have too many decimals\n\t\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\t\tvalid = false;\n\t\t\t\t}\n\t\n\t\t\t\treturn this.optional( element ) || valid;\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\t\tequalTo: function( value, element, param ) {\n\t\n\t\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\t\tvar target = $( param );\n\t\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t\t$( element ).valid();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn value === target.val();\n\t\t\t},\n\t\n\t\t\t// https://jqueryvalidation.org/remote-method/\n\t\t\tremote: function( value, element, param, method ) {\n\t\t\t\tif ( this.optional( element ) ) {\n\t\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t\t}\n\t\n\t\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\t\n\t\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\t\tvalidator, data, optionDataString;\n\t\n\t\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t\t}\n\t\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\t\n\t\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\t\treturn previous.valid;\n\t\t\t\t}\n\t\n\t\t\t\tprevious.old = optionDataString;\n\t\t\t\tvalidator = this;\n\t\t\t\tthis.startRequest( element );\n\t\t\t\tdata = {};\n\t\t\t\tdata[ element.name ] = value;\n\t\t\t\t$.ajax( $.extend( true, {\n\t\t\t\t\tmode: \"abort\",\n\t\t\t\t\tport: this.elementAjaxPort( element ),\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tdata: data,\n\t\t\t\t\tcontext: validator.currentForm,\n\t\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\t\terrors, message, submitted;\n\t\n\t\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t\t}\n\t\t\t\t}, param ) );\n\t\t\t\treturn \"pending\";\n\t\t\t}\n\t\t}\n\t\n\t} );\n\t\n\t// Ajax mode: abort\n\t// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n\t// $.ajaxAbort( port );\n\t// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\t\n\tvar pendingRequests = {},\n\t\tajax;\n\t\n\t// Use a prefilter if available (1.5+)\n\tif ( $.ajaxPrefilter ) {\n\t\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\t\tvar port = settings.port;\n\t\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t\t$.ajaxAbort( port );\n\t\t\t\tpendingRequests[ port ] = xhr;\n\t\t\t}\n\t\t} );\n\t} else {\n\t\n\t\t// Proxy ajax\n\t\tajax = $.ajax;\n\t\t$.ajax = function( settings ) {\n\t\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\t\tif ( mode === \"abort\" ) {\n\t\t\t\t$.ajaxAbort( port );\n\t\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\t\treturn pendingRequests[ port ];\n\t\t\t}\n\t\t\treturn ajax.apply( this, arguments );\n\t\t};\n\t}\n\t\n\t// Abort the previous request without sending a new one\n\t$.ajaxAbort = function( port ) {\n\t\tif ( pendingRequests[ port ] ) {\n\t\t\tpendingRequests[ port ].abort();\n\t\t\tdelete pendingRequests[ port ];\n\t\t}\n\t};\n\treturn $;\n\t}));\n\n/***/ },\n\n/***/ 1087:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1095)\n\t__vue_script__ = __webpack_require__(1088)\n\t__vue_template__ = __webpack_require__(1092)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1088:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _baseField = __webpack_require__(984);\n\t\n\texports.default = {\n\t name: 'vertical-form-field',\n\t mixins: [_baseField.BaseField]\n\t};\n\n/***/ },\n\n/***/ 1089:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _baseForm = __webpack_require__(1076);\n\t\n\tvar _baseForm2 = _interopRequireDefault(_baseForm);\n\t\n\tvar _verticalField = __webpack_require__(1087);\n\t\n\tvar _verticalField2 = _interopRequireDefault(_verticalField);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'vertical-form',\n\t mixins: [_baseForm2.default],\n\t components: { Field: _verticalField2.default }\n\t};\n\n/***/ },\n\n/***/ 1090:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".form-control{color:#555}.vertical-field .form-help{float:right;clear:both}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/vertical-field.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,UAAU,CAAC,2BAA2B,YAAY,UAAU,CAAC\",\"file\":\"vertical-field.vue\",\"sourcesContent\":[\".form-control{color:#555}.vertical-field .form-help{float:right;clear:both}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1091:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".form-control{color:#555}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/vertical-form.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,UAAU,CAAC\",\"file\":\"vertical-form.vue\",\"sourcesContent\":[\".form-control{color:#555}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1092:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=vertical-field :class=\\\"{\\n 'form-group': !is_bool && !is_hidden,\\n 'has-error': errors.length,\\n 'has-success': success,\\n }\\\"> <span v-if=!is_hidden v-show=description class=form-help v-popover=description popover-trigger=hover popover-placement=left> </span> <label :for=field.id :class=\\\"{ 'required': required }\\\" v-if=\\\"!is_hidden && !is_bool\\\"> {{ field.label }} </label> <component :is=widget :field=field :value=value :model=model :description=description :property=property :placeholder=placeholder :required=required :readonly=readonly> </component> <label :for=field.id class=help-block v-for=\\\"error in errors\\\" track-by=$index>{{error}}</label> </div> \";\n\n/***/ },\n\n/***/ 1093:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <form role=form v-el:form> <field v-for=\\\"field in fields\\\" :field=field :schema=schema :model=model> </field> </form> \";\n\n/***/ },\n\n/***/ 1094:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1096)\n\t__vue_script__ = __webpack_require__(1089)\n\t__vue_template__ = __webpack_require__(1093)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1095:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(1090);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-field.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-field.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1096:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(1091);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-form.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-form.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1199:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tvar _notificationZone = __webpack_require__(1000);\n\t\n\tvar _notificationZone2 = _interopRequireDefault(_notificationZone);\n\t\n\tvar _box = __webpack_require__(985);\n\t\n\tvar _box2 = _interopRequireDefault(_box);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t props: {\n\t title: String,\n\t icon: String,\n\t model: _base.Model,\n\t save: Function,\n\t cancel: Function\n\t },\n\t components: { Box: _box2.default, NotificationZone: _notificationZone2.default }\n\t};\n\n/***/ },\n\n/***/ 1203:\n/***/ function(module, exports, __webpack_require__) {\n\n\texports = module.exports = __webpack_require__(37)();\n\t// imports\n\t\n\t\n\t// module\n\texports.push([module.id, \".form-layout .form-actions{display:flex}.form-layout .form-actions .btn-toolbar{flex:1 0 50%;display:flex}.form-layout .form-actions .btn-toolbar>.btn{float:none}.form-layout .form-actions .left-actions{justify-content:flex-start}.form-layout .form-actions .right-actions{justify-content:flex-end}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form-layout.vue\"],\"names\":[],\"mappings\":\"AAAA,2BAA2B,YAAY,CAAC,wCAAwC,aAAa,YAAY,CAAC,6CAA6C,UAAU,CAAC,yCAAyC,0BAA0B,CAAC,0CAA0C,wBAAwB,CAAC\",\"file\":\"form-layout.vue\",\"sourcesContent\":[\".form-layout .form-actions{display:flex}.form-layout .form-actions .btn-toolbar{flex:1 0 50%;display:flex}.form-layout .form-actions .btn-toolbar>.btn{float:none}.form-layout .form-actions .left-actions{justify-content:flex-start}.form-layout .form-actions .right-actions{justify-content:flex-end}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1208:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"content-wrapper form-layout\\\"> <notification-zone></notification-zone> <section class=content> <box :title=title :icon=icon boxclass=box-solid :footer=true :loading=\\\"model ? model.loading : true\\\"> <slot></slot> <footer class=form-actions slot=footer> <div class=\\\"btn-toolbar left-actions\\\"> <button class=\\\"btn btn-warning\\\" v-if=cancel @click.prevent=cancel>{{ _('Cancel') }}</button> <slot name=left-actions></slot> </div> <div class=\\\"btn-toolbar right-actions\\\"> <button class=\\\"btn btn-primary\\\" v-if=save @click.prevent=save> {{ _('Save') }} </button> <slot name=right-actions></slot> </div> </footer> </box> <slot name=extras></slot> </section> </div> \";\n\n/***/ },\n\n/***/ 1211:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1215)\n\t__vue_script__ = __webpack_require__(1199)\n\t__vue_template__ = __webpack_require__(1208)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1215:\n/***/ function(module, exports, __webpack_require__) {\n\n\t// style-loader: Adds some css to the DOM by adding a <style> tag\n\t\n\t// load the styles\n\tvar content = __webpack_require__(1203);\n\tif(typeof content === 'string') content = [[module.id, content, '']];\n\t// add the styles to the DOM\n\tvar update = __webpack_require__(38)(content, {\"sourceMap\":true});\n\tif(content.locals) module.exports = content.locals;\n\t// Hot Module Replacement\n\tif(false) {\n\t\t// When the styles change, update the <style> tags\n\t\tif(!content.locals) {\n\t\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./form-layout.vue\", function() {\n\t\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./form-layout.vue\");\n\t\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\t\tupdate(newContent);\n\t\t\t});\n\t\t}\n\t\t// When the module is disposed, remove the <style> tags\n\t\tmodule.hot.dispose(function() { update(); });\n\t}\n\n/***/ },\n\n/***/ 1340:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reuse = __webpack_require__(326);\n\t\n\tvar _reuse2 = _interopRequireDefault(_reuse);\n\t\n\tvar _reuse_types = __webpack_require__(342);\n\t\n\tvar _reuse_types2 = _interopRequireDefault(_reuse_types);\n\t\n\tvar _reuse_topics = __webpack_require__(341);\n\t\n\tvar _reuse_topics2 = _interopRequireDefault(_reuse_topics);\n\t\n\tvar _verticalForm = __webpack_require__(1094);\n\t\n\tvar _verticalForm2 = _interopRequireDefault(_verticalForm);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t components: { VerticalForm: _verticalForm2.default },\n\t props: {\n\t reuse: {\n\t type: Object,\n\t default: function _default() {\n\t return new _reuse2.default();\n\t }\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t fields: [{\n\t id: 'title',\n\t label: this._('Title')\n\t }, {\n\t id: 'url',\n\t label: this._('URL'),\n\t widget: 'url-field'\n\t }, {\n\t id: 'type',\n\t label: this._('Type'),\n\t widget: 'select-input',\n\t values: _reuse_types2.default,\n\t map: function map(item) {\n\t return { value: item.id, text: item.label };\n\t }\n\t }, {\n\t id: 'topic',\n\t label: this._('Topic'),\n\t widget: 'select-input',\n\t values: _reuse_topics2.default,\n\t map: function map(item) {\n\t return { value: item.id, text: item.label };\n\t }\n\t }, {\n\t id: 'description',\n\t label: this._('Description')\n\t }, {\n\t id: 'tags',\n\t label: this._('Tags'),\n\t widget: 'tag-completer'\n\t }, {\n\t id: 'private',\n\t label: this._('Private')\n\t }]\n\t };\n\t },\n\t\n\t methods: {\n\t serialize: function serialize() {\n\t return this.$refs.form.serialize();\n\t },\n\t validate: function validate() {\n\t return this.$refs.form.validate();\n\t },\n\t on_error: function on_error(response) {\n\t return this.$refs.form.on_error(response);\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1364:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div> <vertical-form v-ref:form :fields=fields :model=reuse></vertical-form> </div> \";\n\n/***/ },\n\n/***/ 1381:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1340)\n\t__vue_template__ = __webpack_require__(1364)\n\tmodule.exports = __vue_script__ || {}\n\tif (module.exports.__esModule) module.exports = module.exports.default\n\tif (__vue_template__) {\n\t(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n\t}\n\n\n/***/ },\n\n/***/ 1479:\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _form = __webpack_require__(1381);\n\t\n\tvar _form2 = _interopRequireDefault(_form);\n\t\n\tvar _reuse = __webpack_require__(326);\n\t\n\tvar _reuse2 = _interopRequireDefault(_reuse);\n\t\n\tvar _formLayout = __webpack_require__(1211);\n\t\n\tvar _formLayout2 = _interopRequireDefault(_formLayout);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t components: { FormLayout: _formLayout2.default, ReuseForm: _form2.default },\n\t data: function data() {\n\t return {\n\t reuse: new _reuse2.default()\n\t };\n\t },\n\t\n\t computed: {\n\t title: function title() {\n\t if (this.reuse.id) {\n\t return this._('Edit reuse \"{title}\"', {\n\t title: this.reuse.title\n\t });\n\t }\n\t }\n\t },\n\t methods: {\n\t save: function save() {\n\t var form = this.$refs.form;\n\t if (form.validate()) {\n\t this.reuse.update(form.serialize(), form.on_error);\n\t }\n\t },\n\t on_success: function on_success() {\n\t this.$dispatch('notify', {\n\t autoclose: true,\n\t title: this._('Changes saved'),\n\t details: this._('Your reuse has been updated.')\n\t });\n\t this.$go({ name: 'reuse', params: { oid: this.reuse.id } });\n\t },\n\t cancel: function cancel() {\n\t this.$go({ name: 'reuse', params: { oid: this.reuse.id } });\n\t }\n\t },\n\t route: {\n\t data: function data() {\n\t var _this = this;\n\t\n\t if (this.$route.params.oid !== this.reuse.id) {\n\t this.$scrollTo(this.$el);\n\t this.reuse.fetch(this.$route.params.oid);\n\t this.reuse.$once('updated', function () {\n\t _this.updHandler = _this.reuse.$once('updated', _this.on_success);\n\t });\n\t }\n\t },\n\t deactivate: function deactivate() {\n\t if (this.updHandler) {\n\t this.updHandler.remove();\n\t this.updHandler = undefined;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1576:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div> <form-layout icon=recycle :title=title :save=save :cancel=cancel footer=true :model=reuse> <reuse-form v-ref:form :reuse=reuse></reuse-form> </form-layout> </div> \";\n\n/***/ }\n\n});\n\n\n/** WEBPACK FOOTER **\n ** chunks/28.1759a7f57d526e6db574.js\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./reuse-edit.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./reuse-edit.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/views/reuse-edit.vue\n ** module id = 896\n ** module chunks = 28\n **/","import log from 'logger';\nimport u from 'utils';\nimport Vue from 'vue';\n\n/**\n * Base inheritable properties reusable by nested components\n */\nexport const FieldComponentMixin = {\n props: {\n field: {\n type: Object,\n default() { return {};}\n },\n model: Object,\n value: null, // Means any type\n description: null,\n property: Object,\n required: Boolean,\n placeholder: String,\n readonly: Boolean\n },\n methods: {\n onChange(evt) {\n this.$dispatch('field:value-change', evt.target.value);\n }\n }\n};\n\n/**\n * Common form fields behaviors\n */\nexport const BaseField = {\n name: 'base-field',\n data() {\n return {\n errors: [],\n success: undefined,\n isField: true,\n };\n },\n components: {\n // Only register the common components\n 'text-input': require('components/form/text-input.vue'),\n 'number-input': require('components/form/number-input.vue'),\n 'hidden-input': require('components/form/hidden-input.vue'),\n 'select-input': require('components/form/select-input.vue'),\n 'select-input-group': require('components/form/select-input-group.vue'),\n 'markdown-editor': require('components/form/markdown-editor.vue'),\n 'date-picker': require('components/form/date-picker.vue'),\n 'checkbox': require('components/form/checkbox.vue')\n },\n events: {\n 'field:value-change': function(value) {\n this.$dispatch('field:change', this, value);\n return true; // Let the event continue its bubbling\n }\n },\n props: {\n field: {\n type: Object,\n default() { return {};},\n required: true\n },\n model: {\n type: Object,\n default() { return {};},\n required: true\n },\n schema: {\n type: Object,\n default() { return {};},\n required: true\n }\n },\n computed: {\n description() {\n const property = this.property;\n return property && property.hasOwnProperty('description')\n ? property.description\n : undefined;\n },\n property() {\n if (!this.schema.properties.hasOwnProperty(this.field.id)) {\n log.warn('Field \"' + this.field.id + '\" not found in schema');\n return {};\n }\n\n return this.schema.properties[this.field.id];\n },\n required() {\n if (!this.field || !this.schema.hasOwnProperty('required')) {\n return false;\n }\n return this.schema.required.indexOf(this.field.id) >= 0;\n },\n is_bool() {\n return this.property && this.property.type === 'boolean';\n },\n is_hidden() {\n return this.field && this.field.type === 'hidden';\n },\n value() {\n let value;\n if (this.model && this.field) {\n value = u.getattr(this.model, this.field.id);\n }\n if ((value === undefined || value === null) && this.property && this.property.hasOwnProperty('default')) {\n value = this.property.default;\n }\n return value;\n },\n placeholder() {\n return this.field.placeholder || this.field.label || '';\n },\n readonly() {\n // $parent is form\n return this.$parent.readonly || this.field.readonly || false;\n },\n widget() {\n let widget;\n if (this.field.widget) {\n widget = this.field.widget;\n } else if (this.property.type === 'boolean') {\n widget = 'checkbox';\n } else if (this.property.type === 'integer') {\n widget = 'number-input';\n } else if (this.property.type === 'string') {\n if (this.property.format === 'markdown') {\n widget = 'markdown-editor';\n } else if (this.property.enum) {\n widget = 'select-input';\n }\n }\n widget = widget || 'text-input';\n\n // Lazy load component if needed\n if (!Vue.util.resolveAsset(this.$options, 'components', widget)) {\n this.$options.components[widget] = function(resolve, reject) {\n require(['./' + widget + '.vue'], resolve);\n };\n }\n return widget;\n }\n },\n watch: {\n value(value) {\n this.$dispatch('field:change', this, value);\n }\n }\n};\n\nexport default BaseField;\n\n\n\n/** WEBPACK FOOTER **\n ** ./js/components/form/base-field.js\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./box.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./box.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./box.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/containers/box.vue\n ** module id = 985\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/babel-runtime/core-js/array/from.js\n ** module id = 989\n ** module chunks = 0 1 2 4 5 6 7 8 9 10 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","<template>\n <div class=\"alert fade\" :class=\"classes\">\n <button type=\"button\" class=\"close\" aria-hidden=\"true\" @click=\"close\">×</button>\n <h4>\n <span class=\"icon fa fa-{{alert.icon || 'check'}}\"></span>\n {{alert.title}}\n </h4>\n {{{ details }}}\n </div>\n</template>\n\n<script>\nconst TRANSITION_DURATION = 300;\nconst AUTOCLOSE_DELAY = 5000;\n\nexport default {\n name: 'alert-box',\n data() {\n return {\n closing: false\n };\n },\n props: {\n alert: Object\n },\n computed: {\n closable() {\n return this.alert.closable === undefined ? true : this.alert.closable;\n },\n classes() {\n const classes = {\n 'alert-dismissable': this.closable,\n 'in': !this.closing,\n };\n classes[`alert-${this.alert.type || 'success'}`] = true;\n return classes;\n },\n details() {\n if (this.alert && this.alert.details) {\n return this.alert.details.replace(/\\n/g, '<br/>');\n }\n }\n },\n methods: {\n close() {\n this.closing = true;\n setTimeout(() => {\n this.$dispatch('notify:close', this.alert);\n }, TRANSITION_DURATION)\n }\n },\n ready() {\n if (this.alert.autoclose) {\n setTimeout(() => {\n this.$dispatch('notify:close', this.alert)\n }, AUTOCLOSE_DELAY);\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** alert.vue?0da40a0a\n **/","<style lang=\"less\">\n.box {\n .box-tools {\n > * {\n float: right;\n }\n\n .text-muted {\n color: #777 !important;\n }\n\n .box-search {\n // float: right;\n width: 180px;\n display: inline-block;\n\n input:focus {\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n box-shadow: none;\n border-color: transparent!important;\n }\n\n input[type=\"text\"], .btn {\n box-shadow: none;\n background-color: #fbfbfb;\n border: 1px solid #fbfbfb;\n\n &:focus {\n background-color: #fff;\n color: #666;\n\n & + .input-group-btn .btn {\n background-color: #fff;\n border-left-color: #fff;\n color: #666;\n }\n }\n }\n\n > * {\n border-top: 1px solid #eee;\n border-bottom: 1px solid #eee;\n &:first-child {\n border-left: 1px solid #eee;\n }\n\n &:last-child {\n border-right: 1px solid #eee;\n }\n }\n }\n\n .btn-box-tool {\n font-size: 14px;\n padding: 6px 8px;\n }\n\n .btn-group {\n vertical-align: inherit;\n }\n }\n\n form {\n margin: 10px;\n }\n}\n\n</style>\n<template>\n <div class=\"box {{ boxclass }}\">\n <header class=\"box-header\" v-show=\"title || icon\">\n <i v-show=\"icon\" class=\"fa fa-{{icon}}\"></i>\n <h3 class=\"box-title\">{{title}}</h3>\n <div class=\"box-tools\">\n <slot name=\"tools\"></slot>\n </div>\n </header>\n <div class=\"box-body {{bodyclass}}\">\n <slot></slot>\n </div>\n <div class=\"overlay\" v-show=\"loading\">\n <span class=\"fa fa-refresh fa-spin\"></span>\n </div>\n <div class=\"box-footer clearfix {{footerclass}}\" v-show=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'box',\n props: {\n title: String,\n icon: null,\n boxclass: {\n type: String,\n default: ''\n },\n bodyclass: {\n type: String,\n default: ''\n },\n footerclass: {\n type: String,\n default: ''\n },\n loading: Boolean,\n footer: null\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** box.vue?9ab14ccc\n **/","<template>\n<div v-show=\"$root.notifications && $root.notifications.length > 0\" class=\"notification-zone\">\n <alert v-for=\"n in $root.notifications\" :alert=\"n\"></alert>\n</div>\n</template>\n\n<script>\nimport Alert from 'components/alert.vue';\n\nexport default {\n name: 'notification-zone',\n components: {Alert}\n};\n</script>\n\n<style lang=\"less\">\n.notification-zone {\n padding: 15px 15px 0;\n position: fixed;\n right: 15px;\n bottom: 15px;\n width: 350px;\n z-index: 10000;\n\n .alert {\n &:last-child {\n margin-bottom: 0;\n }\n\n &:not(:last-child) {\n margin-bottom: 5px;\n }\n }\n}\n</style>\n\n\n\n/** WEBPACK FOOTER **\n ** notification-zone.vue?6952e69c\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777!important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent!important}.box .box-tools .box-search .btn,.box .box-tools .box-search input[type=text]{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search .btn:focus,.box .box-tools .box-search input[type=text]:focus{background-color:#fff;color:#666}.box .box-tools .box-search .btn:focus+.input-group-btn .btn,.box .box-tools .box-search input[type=text]:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>:first-child{border-left:1px solid #eee}.box .box-tools .box-search>:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/containers/box.vue\"],\"names\":[],\"mappings\":\"AAAA,kBAAkB,WAAW,CAAC,4BAA4B,oBAAqB,CAAC,4BAA4B,YAAY,oBAAoB,CAAC,wCAAwC,gBAAgB,kCAAmC,CAAC,8EAAgF,gBAAgB,yBAAyB,wBAAwB,CAAC,0FAA4F,sBAAsB,UAAU,CAAC,sIAAwI,sBAAsB,uBAAuB,UAAU,CAAC,8BAA8B,0BAA0B,4BAA4B,CAAC,yCAA0C,0BAA0B,CAAC,wCAAyC,2BAA2B,CAAC,8BAA8B,eAAe,eAAe,CAAC,2BAA2B,sBAAsB,CAAC,UAAU,WAAW,CAAC\",\"file\":\"box.vue\",\"sourcesContent\":[\".box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777 !important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent !important}.box .box-tools .box-search input[type=\\\"text\\\"],.box .box-tools .box-search .btn{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search input[type=\\\"text\\\"]:focus,.box .box-tools .box-search .btn:focus{background-color:#fff;color:#666}.box .box-tools .box-search input[type=\\\"text\\\"]:focus+.input-group-btn .btn,.box .box-tools .box-search .btn:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>*:first-child{border-left:1px solid #eee}.box .box-tools .box-search>*:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/containers/box.vue\n ** module id = 994\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/notification-zone.vue\"],\"names\":[],\"mappings\":\"AAAA,mBAAmB,oBAAoB,eAAe,WAAW,YAAY,YAAY,aAAa,CAAC,qCAAqC,eAAe,CAAC,2CAA2C,iBAAiB,CAAC\",\"file\":\"notification-zone.vue\",\"sourcesContent\":[\".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/notification-zone.vue\n ** module id = 995\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","module.exports = \" <div class=\\\"alert fade\\\" :class=classes> <button type=button class=close aria-hidden=true @click=close>×</button> <h4> <span class=\\\"icon fa fa-{{alert.icon || 'check'}}\\\"></span> {{alert.title}} </h4> {{{ details }}} </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/alert.vue\n ** module id = 996\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","module.exports = \" <div class=\\\"box {{ boxclass }}\\\"> <header class=box-header v-show=\\\"title || icon\\\"> <i v-show=icon class=\\\"fa fa-{{icon}}\\\"></i> <h3 class=box-title>{{title}}</h3> <div class=box-tools> <slot name=tools></slot> </div> </header> <div class=\\\"box-body {{bodyclass}}\\\"> <slot></slot> </div> <div class=overlay v-show=loading> <span class=\\\"fa fa-refresh fa-spin\\\"></span> </div> <div class=\\\"box-footer clearfix {{footerclass}}\\\" v-show=footer> <slot name=footer></slot> </div> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/containers/box.vue\n ** module id = 997\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","module.exports = \" <div v-show=\\\"$root.notifications && $root.notifications.length > 0\\\" class=notification-zone> <alert v-for=\\\"n in $root.notifications\\\" :alert=n></alert> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/notification-zone.vue\n ** module id = 998\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./alert.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./alert.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/alert.vue\n ** module id = 999\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./notification-zone.vue\")\n__vue_script__ = require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./notification-zone.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./notification-zone.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/notification-zone.vue\n ** module id = 1000\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./box.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./box.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./box.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/containers/box.vue\n ** module id = 1001\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./notification-zone.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./notification-zone.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./notification-zone.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/notification-zone.vue\n ** module id = 1002\n ** module chunks = 0 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n **/","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/babel-runtime/helpers/toConsumableArray.js\n ** module id = 1034\n ** module chunks = 0 1 2 4 5 6 7 9 10 11 12 13 14 16 17 23 24 25 26 27 28 29 30 33\n **/","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/core-js/library/fn/array/from.js\n ** module id = 1035\n ** module chunks = 0 1 2 4 5 6 7 8 9 10 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./date-picker.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./date-picker.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./date-picker.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/date-picker.vue\n ** module id = 1040\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./select-input.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./select-input.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/select-input.vue\n ** module id = 1041\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./calendar.vue\")\n__vue_script__ = require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./calendar.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./calendar.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/calendar.vue\n ** module id = 1042\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./checkbox.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./checkbox.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./checkbox.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/checkbox.vue\n ** module id = 1043\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./hidden-input.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./hidden-input.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/hidden-input.vue\n ** module id = 1044\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./markdown-editor.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./markdown-editor.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./markdown-editor.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/markdown-editor.vue\n ** module id = 1045\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./number-input.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./number-input.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/number-input.vue\n ** module id = 1046\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./select-input-group.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./select-input-group.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/select-input-group.vue\n ** module id = 1047\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./text-input.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./text-input.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/text-input.vue\n ** module id = 1048\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","<template>\n<div class=\"calendar\" :class=\"[ 'view' ]\">\n <div class=\"calendar-{{view}}\">\n <nav>\n <button class=\"prev\" @click.prevent=\"previous\" :disabled=\"previousDisabled\">\n <span class=\"fa fa-chevron-left\"></span>\n </button>\n <button class=\"switch\" @click.prevent=\"zoomOut\">{{ rangeDisplay }}</button>\n <button class=\"next\" @click.prevent=\"next\" :disabled=\"nextDisabled\">\n <span class=\"fa fa-chevron-right\"></span>\n </button>\n </nav>\n <main v-if=\"view == 'days'\" class=\"days\">\n <header>\n <span class=\"dow\" v-for=\"day in days\">{{ day }}</span>\n </header>\n <div v-for=\"week in monthDays(current)\">\n <button v-for=\"day in week\" class=\"day\" :class=\"dayClasses(day)\"\n @click.prevent=\"pickDay(day)\" :disabled=\"isDisabled(day)\">\n {{ day.date() }}\n </button>\n </div>\n </main>\n <main v-if=\"view == 'months'\" class=\"months\">\n <button v-for=\"(idx, month) in months\" class=\"month\" @click.prevent=\"pickMonth(idx)\"\n :disabled=\"isMonthDisabled(idx)\">\n {{ month }}\n </button>\n </main>\n <main v-if=\"view == 'years'\" class=\"years\">\n <button v-for=\"year in yearsRange\" class=\"year\" @click.prevent=\"pickYear(year)\"\n :disabled=\"isYearDisabled(year)\">\n {{ year }}\n </button>\n </main>\n <footer>\n <button @click.prevent=\"pickDay(today)\">{{ _('Today') }}</button>\n <button @click.prevent=\"clear\">\n <span class=\"fa fa-remove\"></span>\n {{ _('Clear') }}\n </button>\n </footer>\n </div>\n</div>\n</template>\n\n<script>\nimport moment from 'moment';\n\nconst VIEWS = ['days', 'months', 'years'];\nconst MONTH_FORMAT = 'MMMM YYYY';\n\nfunction optionalMoment(value) {\n return value ? moment(value) : null\n}\n\nexport default {\n name: 'calendar',\n props: {\n selected: {\n type: moment,\n coerce: optionalMoment,\n default: null,\n },\n min: {\n type: moment,\n coerce: optionalMoment,\n default: null,\n },\n max: {\n type: moment,\n coerce: optionalMoment,\n default: null,\n },\n view: {\n type: String,\n default: 'days'\n }\n },\n data() {\n const current = this.selected || moment();\n return {\n current: current,\n today: moment()\n };\n },\n computed: {\n days() {\n const days = [];\n const weekdays = moment.weekdaysMin();\n const first = moment.localeData().firstDayOfWeek();\n for (let i = 0; i < 7; i++) {\n days.push(weekdays[(i + first) % 7]);\n }\n return days;\n },\n months() {\n return moment.monthsShort();\n },\n monthDisplay() {\n return this.current.format(MONTH_FORMAT);\n },\n rangeDisplay() {\n if (this.view == 'days') {\n return this.current.format(MONTH_FORMAT);\n } else if (this.view == 'months') {\n return this.current.year();\n } else if (this.view == 'years') {\n const start = this.current.clone().subtract(5, 'years');\n const end = this.current.clone().add(6, 'years');\n return `${start.year()}-${end.year()}`;\n }\n },\n yearsRange() {\n const start = this.current.clone().subtract(5, 'years');\n const years = [];\n\n for (let i=0; i < 12; i++) {\n years.push(start.clone().add(i, 'years').year());\n }\n return years;\n },\n nextValue() {\n const value = this.current.clone();\n if (this.view === 'days') {\n value.add(1, 'months');\n } else if (this.view === 'months') {\n value.add(1, 'years');\n } else if (this.view === 'years') {\n value.add(12, 'years');\n }\n return value;\n },\n previousValue() {\n const value = this.current.clone();\n if (this.view === 'days') {\n value.subtract(1, 'months');\n } else if (this.view === 'months') {\n value.subtract(1, 'year');\n } else if (this.view === 'years') {\n value.subtract(12, 'years');\n }\n return value;\n },\n nextDisabled() {\n if (!this.max) return;\n switch (this.view) {\n case 'days': return this.nextValue.isAfter(this.max, 'month');\n case 'months': return this.nextValue.isAfter(this.max, 'year');\n case 'years': return this.yearsRange.slice(-1).pop() >= this.max.year();\n }\n },\n previousDisabled() {\n if (!this.min) return;\n switch (this.view) {\n case 'days': return this.previousValue.isBefore(this.min, 'month');\n case 'months': return this.previousValue.isBefore(this.min, 'year');\n case 'years': return this.yearsRange[0] <= this.min.year();\n }\n }\n },\n methods: {\n monthDays(date) {\n const start = date.clone().startOf('month').startOf('week');\n const end = date.clone().endOf('month').endOf('week');\n const days = [];\n let row;\n\n for (let i=0; i <= end.diff(start, 'days'); i++) {\n if (i % 7 === 0) {\n row = [];\n days.push(row);\n }\n row.push(start.clone().add(i, 'days'));\n }\n return days;\n },\n next() {\n this.current = this.nextValue;\n },\n previous() {\n this.current = this.previousValue;\n },\n zoomOut() {\n if (VIEWS.indexOf(this.view) + 1 < VIEWS.length) {\n this.view = VIEWS[VIEWS.indexOf(this.view) + 1];\n }\n },\n pickDay(day) {\n this.selected = day;\n this.$dispatch('calendar:date:selected', day);\n },\n pickMonth(month) {\n this.current = this.current.month(month);\n this.view = 'days';\n this.$dispatch('calendar:month:selected', month);\n },\n pickYear(year) {\n this.current = this.current.year(year);\n this.view = 'months';\n this.$dispatch('calendar:year:selected', year);\n },\n\n isOld(day) {\n return day.isBefore(this.current.startOf('month'));\n },\n\n isNew(day) {\n return day.isAfter(this.current.endOf('month'));\n },\n\n isDisabled(day) {\n const isBeforeMin = this.min && day.isBefore(this.min, 'day');\n const isAfterMax = this.max && day.isAfter(this.max, 'day');\n return isBeforeMin || isAfterMax;\n },\n\n isMonthDisabled(idx) {\n const month = this.current.clone().month(idx);\n const isBeforeMin = this.min && month.isBefore(this.min, 'month');\n const isAfterMax = this.max && month.isAfter(this.max, 'month');\n return isBeforeMin || isAfterMax;\n },\n\n isYearDisabled(year) {\n const isBeforeMin = this.min && year < this.min.year();\n const isAfterMax = this.max && year > this.max.year();\n return isBeforeMin || isAfterMax;\n },\n\n dayClasses(day) {\n return {\n old: this.isOld(day),\n new: this.isNew(day),\n today: day.isSame(this.today, 'day'),\n active: day.isSame(this.selected, 'day')\n };\n },\n\n focus() {\n // Focus active or first button\n const button = this.$el.querySelector('main button.active:not(:disabled)')\n || this.$el.querySelector('main button:not(:disabled)');\n if (button) button.focus();\n },\n\n clear() {\n this.selected = null;\n this.current = this.today.clone();\n this.view = 'days';\n this.$dispatch('calendar:date:cleared');\n }\n },\n watch: {\n selected(value) {\n if (!value) return;\n this.current = value.clone();\n }\n }\n};\n</script>\n\n<style lang=\"less\">\n// Needs to chose between udata and admin variables\n// Choice might happen after the core/admin split\n@import '~bootstrap/less/variables';\n@import '~bootstrap/less/mixins';\n\n.calendar {\n @unit: 30px;\n color: black;\n\n min-width: 7 * @unit;\n\n > * {\n display: block;\n }\n\n .fa-remove {\n color: red;\n }\n\n border-radius: @border-radius-base;\n\n nav {\n font-weight: bold;\n display: flex;\n\n .switch {\n flex: 2 0 50%;\n }\n\n .prev, .next {\n flex: 1;\n }\n }\n\n main {\n display: flex;\n flex-wrap: wrap;\n\n\n header {\n font-weight: bold;\n span {\n height: @unit;\n padding-top: 10px;\n line-height: 20px;\n }\n }\n\n &.days {\n > * {\n display: flex;\n flex: 1 0 100%;\n }\n\n span, button {\n flex: 1 0 @unit;\n text-align: center;\n }\n }\n\n &.months, &.years {\n flex-wrap: wrap;\n button {\n flex: 1 0 25%;\n text-align: center;\n height: 54px;\n line-height: 54px;\n }\n }\n }\n\n footer {\n font-weight: bold;\n display: flex;\n }\n\n button {\n height: @unit;\n width: 100%;\n background: none;\n border: none;\n border-radius: @border-radius-base;\n\n &:hover {\n background: @gray-lighter;\n }\n\n &.old,\n &.new {\n color: @btn-link-disabled-color;\n }\n\n &.day:hover,\n &:focus {\n background: @gray-lighter;\n cursor: pointer;\n }\n\n &:disabled,\n &:disabled:hover {\n background: none;\n color: @btn-link-disabled-color;\n cursor: not-allowed;\n }\n\n &.today {\n @today-bg: lighten(orange, 30%);\n @today-color: #000;\n .button-variant(@today-color, @today-bg, darken(@today-bg, 20%));\n position: relative;\n\n &:focus {\n background: darken(@today-bg, 10%);\n }\n\n &:disabled,\n &:disabled:active {\n background: @today-bg;\n color: @btn-link-disabled-color;\n }\n\n &:before {\n content: '';\n display: inline-block;\n border: solid transparent;\n border-width: 0 0 7px 7px;\n border-bottom-color: @today-color;\n border-top-color: @today-bg;\n position: absolute;\n bottom: 4px;\n right: 4px;\n }\n }\n\n &.active {\n .button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\n &.today:before {\n border-bottom-color: @btn-primary-color;\n }\n }\n }\n}\n</style>\n\n\n\n/** WEBPACK FOOTER **\n ** calendar.vue?33e37ad1\n **/","<style lang=\"less\">\n.checkbox-form-field label {\n font-weight: bold;\n}\n</style>\n\n<template>\n<div class=\"checkbox checkbox-form-field\">\n <label :for=\"field.id\" :class=\"{ 'required': required }\">\n <input type=\"checkbox\"\n :id=\"field.id\"\n :name=\"field.id\"\n :checked=\"value\"\n @input=\"onChange\"\n ></input>\n {{ field.label }}\n </label>\n</div>\n</template>\n\n<script>\nimport {FieldComponentMixin} from 'components/form/base-field';\n\nexport default {\n name: 'Checkbox',\n mixins: [FieldComponentMixin],\n methods: {\n onChange(evt) {\n this.$dispatch('field:value-change', evt.target.checked);\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** checkbox.vue?ae00ad50\n **/","<style lang=\"less\">\n.date-picker {\n .dropdown-menu {\n min-width: 100%;\n width: auto;\n }\n}\n</style>\n\n<template>\n<div class=\"input-group dropdown date-picker\" :class=\"{ 'open': picking }\"\n v-outside=\"onOutside\">\n <span class=\"input-group-addon\"><span class=\"fa fa-calendar\"></span></span>\n <input type=\"text\" class=\"form-control\" v-el:input\n @focus=\"onFocus\" @input=\"onChange | debounce 500\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :value=\"value|dt dateFormat ''\"\n :readonly=\"readonly\"></input>\n <div class=\"dropdown-menu dropdown-menu-right\">\n <calendar v-ref:calendar :selected=\"value\"></calendar>\n </div>\n <input v-if=\"serializable\" v-el:hidden type=\"hidden\"\n :name=\"field.id\"\n :value=\"value|dt ISO_FORMAT ''\">\n </input>\n</div>\n</template>\n\n<script>\nimport moment from 'moment';\nimport Calendar from 'components/calendar.vue';\nimport {FieldComponentMixin} from 'components/form/base-field';\n\nconst DEFAULT_FORMAT = 'L';\nconst ISO_FORMAT = 'YYYY-MM-DDTHH:mm:ss';\n\nexport default {\n name: 'date-picker',\n mixins: [FieldComponentMixin],\n props: {\n serializable: {\n type: Boolean,\n default: true\n }\n },\n components: {Calendar},\n data() {\n return {\n picking: false,\n ISO_FORMAT,\n };\n },\n computed: {\n dateFormat() {\n return this.field.format || DEFAULT_FORMAT;\n }\n },\n events: {\n 'calendar:date:selected': function(date) {\n this.value = date\n this.picking = false;\n return true;\n },\n 'calendar:date:cleared': function() {\n this.value = null;\n this.picking = false;\n return true;\n }\n },\n methods: {\n onFocus() {\n if (!this.picking) this.$nextTick(this.$refs.calendar.focus);\n this.picking = true;\n },\n onChange(e) {\n try {\n this.value = moment(e.target.value, this.dateFormat);\n } catch(e) {\n // Don't do anything while typing (ie. incomplete date is unparseable)\n }\n },\n onOutside() {\n this.picking = false;\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** date-picker.vue?22d87736\n **/","<template>\n<input type=\"hidden\"\n :id=\"field.id\"\n :name=\"field.id\"\n :value=\"value\"\n :required=\"required\"></input>\n</template>\n\n<script>\nimport {FieldComponentMixin} from 'components/form/base-field';\n\nexport default {\n name: 'hidden-input',\n mixins: [FieldComponentMixin]\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** hidden-input.vue?0410c942\n **/","<!-- Markdown editor widget -->\n<style lang=\"less\">\n@import '~less/udata/markdown';\n\n@padding: 6px 12px;\n\n.md-editor {\n > textarea {\n background: white;\n padding: @padding;\n border-bottom: none;\n }\n\n &.active {\n border-color: #3c8dbc;\n -webkit-box-shadow: none;\n box-shadow: none;\n\n }\n\n .form-group.has-error & {\n border-color: #dd4b39;\n }\n\n .form-group.has-success & {\n border-color: #00a65a;\n }\n\n .btn {\n border-radius: 0;\n\n &.btn-default {\n background-color: white;\n }\n }\n\n .md-preview {\n color: black;\n padding: @padding;\n max-width: 100%;\n\n .markdown();\n }\n}\n</style>\n\n<template>\n<textarea class=\"form-control\" :rows=\"field.rows || rows || 6\"\n :id=\"field.id\"\n :name=\"field.id\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :readonly=\"readonly\"\n @input=\"onChange\">{{value || ''}}</textarea>\n</template>\n\n<script>\nimport $ from 'jquery';\nimport config from 'config';\nimport {_} from 'i18n';\nimport {FieldComponentMixin} from 'components/form/base-field';\nimport markdown from 'helpers/markdown';\n\nconst EXCERPT_TOKEN = '<!--- excerpt -->';\n\nrequire('bootstrap-markdown/js/bootstrap-markdown');\n\n$.fn.markdown.messages[config.lang] = {\n 'Bold': _('Bold'),\n 'Italic': _('Italic'),\n 'Heading': _('Heading'),\n 'URL/Link': _('URL/Link'),\n 'Image': _('Image'),\n 'List': _('List'),\n 'Preview': _('Preview'),\n 'strong text': _('strong text'),\n 'emphasized text': _('emphasized text'),\n 'heading text': _('heading text'),\n 'enter link description here': _('enter link description here'),\n 'Insert Hyperlink': _('Insert Hyperlink'),\n 'enter image description here': _('enter image description here'),\n 'Insert Image Hyperlink': _('Insert Image Hyperlink'),\n 'enter image title here': _('enter image title here'),\n 'list text here': _('list text here')\n};\n\nexport default {\n name: 'markdown-editor',\n props: ['rows'],\n mixins: [FieldComponentMixin],\n ready: function() {\n $(this.$el).markdown({\n language: config.lang,\n autofocus: false,\n savable: false,\n resize: 'both',\n iconlibrary: 'fa',\n onPreview: (e) => markdown(e.getContent()),\n additionalButtons: [\n [{\n name: 'extras',\n data: [{\n name: 'btnSummary',\n title: _('Summary'),\n icon: 'fa fa-scissors',\n callback: function(e){\n var selected = e.getSelection(),\n cursor = selected.start;\n\n e.replaceSelection(EXCERPT_TOKEN);\n e.setSelection(cursor, cursor + EXCERPT_TOKEN.length);\n }\n }]\n }]\n ]\n });\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** markdown-editor.vue?5db87f49\n **/","<template>\n<input type=\"number\" class=\"form-control\"\n :id=\"field.id\"\n :name=\"field.id\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :readonly=\"readonly\"\n :value=\"value\"\n @input=\"onChange\"></input>\n</template>\n\n<script>\nimport {FieldComponentMixin} from 'components/form/base-field';\n\nexport default {\n name: 'number-input',\n mixins: [FieldComponentMixin],\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** number-input.vue?a69a5016\n **/","<template>\n<select class=\"form-control\" v-model=\"value\"\n :multiple=\"field.multiple\"\n :id=\"field.id\"\n :name=\"field.id\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :disabled=\"readonly\"\n @change=\"onChange\">\n <optgroup v-for=\"(group, ids) in field.groups\" :label=\"group\">\n <option v-for=\"option in options | extract group\" :value=\"option.value\" :selected=\"option.value == value\">\n {{option.text || option.value}}\n </option>\n </optgroup>\n</select>\n</template>\n\n<script>\nimport {List} from 'models/base';\nimport {FieldComponentMixin} from 'components/form/base-field';\n\nexport default {\n name: 'select-input-group',\n mixins: [FieldComponentMixin],\n props: {\n groups: {\n type: Object,\n default() {\n return {}\n }\n }\n },\n computed: {\n options: function() {\n if (!this.property && !this.field) return [];\n\n if (this.field.values) {\n if (this.field.values instanceof List) {\n return this.field.values.items;\n }\n return this.field.values;\n } else if (this.property.enum && this.field.labels) {\n return this.property.enum.map(function(value) {\n return {value: value, text: this.field.labels[value]};\n });\n } else if (this.property.enum) {\n return this.property.enum.map(function(value) {\n return {value: value, text: value};\n });\n }\n\n return [];\n }\n },\n filters: {\n extract: function(items, group) {\n if (this.field.map) {\n items = items.map(this.field.map);\n return items.filter(item => this.field.groups[group].map(license => license.value).includes(item.value));\n }\n return items;\n }\n },\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** select-input-group.vue?7c0f61f9\n **/","<template>\n<select class=\"form-control\" v-model=\"value\"\n :multiple=\"field.multiple\"\n :id=\"field.id\"\n :name=\"field.id\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :disabled=\"readonly\"\n @change=\"onChange\">\n <option v-for=\"option in options | extract\" :value=\"option.value\">\n {{option.text || option.value}}\n </option>\n</select>\n</template>\n\n<script>\nimport {List} from 'models/base';\nimport {FieldComponentMixin} from 'components/form/base-field';\n\nexport default {\n name: 'select-input',\n mixins: [FieldComponentMixin],\n computed: {\n options: function() {\n if (!this.property && !this.field) return [];\n\n if (this.field.values) {\n if (this.field.values instanceof List) {\n return this.field.values.items;\n }\n return this.field.values;\n } else if (this.property.enum && this.field.labels) {\n return this.property.enum.map(function(value) {\n return {value: value, text: this.field.labels[value]};\n });\n } else if (this.property.enum) {\n return this.property.enum.map(function(value) {\n return {value: value, text: value};\n });\n }\n\n return [];\n }\n },\n filters: {\n extract: function(items) {\n if (this.field.map) {\n return items.map(this.field.map);\n }\n return items;\n }\n },\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** select-input.vue?ac6a6526\n **/","<template>\n<input type=\"text\" class=\"form-control\"\n :id=\"field.id\"\n :name=\"field.id\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :readonly=\"readonly\"\n :value=\"value\"\n @input=\"onChange\"></input>\n</template>\n\n<script>\nimport {FieldComponentMixin} from 'components/form/base-field';\n\nexport default {\n name: 'text-input',\n mixins: [FieldComponentMixin],\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** text-input.vue?2faba799\n **/","/* ===================================================\n * bootstrap-markdown.js v2.10.0\n * http://github.com/toopay/bootstrap-markdown\n * ===================================================\n * Copyright 2013-2016 Taufan Aditya\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n\n(function(factory){\n if (typeof define === \"function\" && define.amd) {\n //RequireJS\n define([\"jquery\"], factory);\n } else if (typeof exports === 'object') {\n //Backbone.js\n factory(require('jquery'));\n } else {\n //Jquery plugin\n factory(jQuery);\n }\n}(function($){\n \"use strict\"; // jshint ;_;\n\n /* MARKDOWN CLASS DEFINITION\n * ========================== */\n\n var Markdown = function (element, options) {\n // @TODO : remove this BC on next major release\n // @see : https://github.com/toopay/bootstrap-markdown/issues/109\n var opts = ['autofocus', 'savable', 'hideable', 'width', \n 'height', 'resize', 'iconlibrary', 'language', \n 'footer', 'fullscreen', 'hiddenButtons', 'disabledButtons'];\n $.each(opts,function(_, opt){\n if (typeof $(element).data(opt) !== 'undefined') {\n options = typeof options == 'object' ? options : {}\n options[opt] = $(element).data(opt)\n }\n });\n // End BC\n\n // Class Properties\n this.$ns = 'bootstrap-markdown';\n this.$element = $(element);\n this.$editable = {el:null, type:null,attrKeys:[], attrValues:[], content:null};\n this.$options = $.extend(true, {}, $.fn.markdown.defaults, options, this.$element.data('options'));\n this.$oldContent = null;\n this.$isPreview = false;\n this.$isFullscreen = false;\n this.$editor = null;\n this.$textarea = null;\n this.$handler = [];\n this.$callback = [];\n this.$nextTab = [];\n\n this.showEditor();\n };\n\n Markdown.prototype = {\n\n constructor: Markdown\n\n , __alterButtons: function(name,alter) {\n var handler = this.$handler, isAll = (name == 'all'),that = this;\n\n $.each(handler,function(k,v) {\n var halt = true;\n if (isAll) {\n halt = false;\n } else {\n halt = v.indexOf(name) < 0;\n }\n\n if (halt === false) {\n alter(that.$editor.find('button[data-handler=\"'+v+'\"]'));\n }\n });\n }\n\n , __buildButtons: function(buttonsArray, container) {\n var i,\n ns = this.$ns,\n handler = this.$handler,\n callback = this.$callback;\n\n for (i=0;i<buttonsArray.length;i++) {\n // Build each group container\n var y, btnGroups = buttonsArray[i];\n for (y=0;y<btnGroups.length;y++) {\n // Build each button group\n var z,\n buttons = btnGroups[y].data,\n btnGroupContainer = $('<div/>', {\n 'class': 'btn-group'\n });\n\n for (z=0;z<buttons.length;z++) {\n var button = buttons[z],\n buttonContainer, buttonIconContainer,\n buttonHandler = ns+'-'+button.name,\n buttonIcon = this.__getIcon(button.icon),\n btnText = button.btnText ? button.btnText : '',\n btnClass = button.btnClass ? button.btnClass : 'btn',\n tabIndex = button.tabIndex ? button.tabIndex : '-1',\n hotkey = typeof button.hotkey !== 'undefined' ? button.hotkey : '',\n hotkeyCaption = typeof jQuery.hotkeys !== 'undefined' && hotkey !== '' ? ' ('+hotkey+')' : '';\n\n // Construct the button object\n buttonContainer = $('<button></button>');\n buttonContainer.text(' ' + this.__localize(btnText)).addClass('btn-default btn-sm').addClass(btnClass);\n if(btnClass.match(/btn\\-(primary|success|info|warning|danger|link)/)){\n buttonContainer.removeClass('btn-default');\n }\n buttonContainer.attr({\n 'type': 'button',\n 'title': this.__localize(button.title) + hotkeyCaption,\n 'tabindex': tabIndex,\n 'data-provider': ns,\n 'data-handler': buttonHandler,\n 'data-hotkey': hotkey\n });\n if (button.toggle === true){\n buttonContainer.attr('data-toggle', 'button');\n }\n buttonIconContainer = $('<span/>');\n buttonIconContainer.addClass(buttonIcon);\n buttonIconContainer.prependTo(buttonContainer);\n\n // Attach the button object\n btnGroupContainer.append(buttonContainer);\n\n // Register handler and callback\n handler.push(buttonHandler);\n callback.push(button.callback);\n }\n\n // Attach the button group into container dom\n container.append(btnGroupContainer);\n }\n }\n\n return container;\n }\n , __setListener: function() {\n // Set size and resizable Properties\n var hasRows = typeof this.$textarea.attr('rows') !== 'undefined',\n maxRows = this.$textarea.val().split(\"\\n\").length > 5 ? this.$textarea.val().split(\"\\n\").length : '5',\n rowsVal = hasRows ? this.$textarea.attr('rows') : maxRows;\n\n this.$textarea.attr('rows',rowsVal);\n if (this.$options.resize) {\n this.$textarea.css('resize',this.$options.resize);\n }\n\n this.$textarea.on({\n 'focus' : $.proxy(this.focus, this),\n 'keyup' : $.proxy(this.keyup, this),\n 'change' : $.proxy(this.change, this),\n 'select' : $.proxy(this.select, this)\n });\n\n if (this.eventSupported('keydown')) {\n this.$textarea.on('keydown', $.proxy(this.keydown, this));\n }\n\n if (this.eventSupported('keypress')) {\n this.$textarea.on('keypress', $.proxy(this.keypress, this))\n }\n\n // Re-attach markdown data\n this.$textarea.data('markdown',this);\n }\n\n , __handle: function(e) {\n var target = $(e.currentTarget),\n handler = this.$handler,\n callback = this.$callback,\n handlerName = target.attr('data-handler'),\n callbackIndex = handler.indexOf(handlerName),\n callbackHandler = callback[callbackIndex];\n\n // Trigger the focusin\n $(e.currentTarget).focus();\n\n callbackHandler(this);\n\n // Trigger onChange for each button handle\n this.change(this);\n\n // Unless it was the save handler,\n // focusin the textarea\n if (handlerName.indexOf('cmdSave') < 0) {\n this.$textarea.focus();\n }\n\n e.preventDefault();\n }\n\n , __localize: function(string) {\n var messages = $.fn.markdown.messages,\n language = this.$options.language;\n if (\n typeof messages !== 'undefined' &&\n typeof messages[language] !== 'undefined' &&\n typeof messages[language][string] !== 'undefined'\n ) {\n return messages[language][string];\n }\n return string;\n }\n\n , __getIcon: function(src) {\n return typeof src == 'object' ? src[this.$options.iconlibrary] : src;\n }\n\n , setFullscreen: function(mode) {\n var $editor = this.$editor,\n $textarea = this.$textarea;\n\n if (mode === true) {\n $editor.addClass('md-fullscreen-mode');\n $('body').addClass('md-nooverflow');\n this.$options.onFullscreen(this);\n } else {\n $editor.removeClass('md-fullscreen-mode');\n $('body').removeClass('md-nooverflow');\n\n if (this.$isPreview == true) this.hidePreview().showPreview()\n }\n\n this.$isFullscreen = mode;\n $textarea.focus();\n }\n\n , showEditor: function() {\n var instance = this,\n textarea,\n ns = this.$ns,\n container = this.$element,\n originalHeigth = container.css('height'),\n originalWidth = container.css('width'),\n editable = this.$editable,\n handler = this.$handler,\n callback = this.$callback,\n options = this.$options,\n editor = $( '<div/>', {\n 'class': 'md-editor',\n click: function() {\n instance.focus();\n }\n });\n\n // Prepare the editor\n if (this.$editor === null) {\n // Create the panel\n var editorHeader = $('<div/>', {\n 'class': 'md-header btn-toolbar'\n });\n\n // Merge the main & additional button groups together\n var allBtnGroups = [];\n if (options.buttons.length > 0) allBtnGroups = allBtnGroups.concat(options.buttons[0]);\n if (options.additionalButtons.length > 0) {\n // iterate the additional button groups\n $.each(options.additionalButtons[0], function(idx, buttonGroup){\n \n // see if the group name of the addional group matches an existing group\n var matchingGroups = $.grep(allBtnGroups, function(allButtonGroup, allIdx){\n return allButtonGroup.name === buttonGroup.name;\n });\n\n // if it matches add the addional buttons to that group, if not just add it to the all buttons group\n if(matchingGroups.length > 0) {\n matchingGroups[0].data = matchingGroups[0].data.concat(buttonGroup.data);\n } else { \n allBtnGroups.push(options.additionalButtons[0][idx]);\n }\n\n });\n } \n\n // Reduce and/or reorder the button groups\n if (options.reorderButtonGroups.length > 0) {\n allBtnGroups = allBtnGroups\n .filter(function(btnGroup) {\n return options.reorderButtonGroups.indexOf(btnGroup.name) > -1;\n })\n .sort(function(a, b) {\n if (options.reorderButtonGroups.indexOf(a.name) < options.reorderButtonGroups.indexOf(b.name)) return -1;\n if (options.reorderButtonGroups.indexOf(a.name) > options.reorderButtonGroups.indexOf(b.name)) return 1;\n return 0;\n });\n }\n\n // Build the buttons\n if (allBtnGroups.length > 0) {\n editorHeader = this.__buildButtons([allBtnGroups], editorHeader);\n }\n\n if (options.fullscreen.enable) {\n editorHeader.append('<div class=\"md-controls\"><a class=\"md-control md-control-fullscreen\" href=\"#\"><span class=\"'+this.__getIcon(options.fullscreen.icons.fullscreenOn)+'\"></span></a></div>').on('click', '.md-control-fullscreen', function(e) {\n e.preventDefault();\n instance.setFullscreen(true);\n });\n }\n\n editor.append(editorHeader);\n\n // Wrap the textarea\n if (container.is('textarea')) {\n container.before(editor);\n textarea = container;\n textarea.addClass('md-input');\n editor.append(textarea);\n } else {\n var rawContent = (typeof toMarkdown == 'function') ? toMarkdown(container.html()) : container.html(),\n currentContent = $.trim(rawContent);\n\n // This is some arbitrary content that could be edited\n textarea = $('<textarea/>', {\n 'class': 'md-input',\n 'val' : currentContent\n });\n\n editor.append(textarea);\n\n // Save the editable\n editable.el = container;\n editable.type = container.prop('tagName').toLowerCase();\n editable.content = container.html();\n\n $(container[0].attributes).each(function(){\n editable.attrKeys.push(this.nodeName);\n editable.attrValues.push(this.nodeValue);\n });\n\n // Set editor to blocked the original container\n container.replaceWith(editor);\n }\n\n var editorFooter = $('<div/>', {\n 'class': 'md-footer'\n }),\n createFooter = false,\n footer = '';\n // Create the footer if savable\n if (options.savable) {\n createFooter = true;\n var saveHandler = 'cmdSave';\n\n // Register handler and callback\n handler.push(saveHandler);\n callback.push(options.onSave);\n\n editorFooter.append('<button class=\"btn btn-success\" data-provider=\"'\n + ns\n + '\" data-handler=\"'\n + saveHandler\n + '\"><i class=\"icon icon-white icon-ok\"></i> '\n + this.__localize('Save')\n + '</button>');\n\n\n }\n\n footer = typeof options.footer === 'function' ? options.footer(this) : options.footer;\n\n if ($.trim(footer) !== '') {\n createFooter = true;\n editorFooter.append(footer);\n }\n\n if (createFooter) editor.append(editorFooter);\n\n // Set width\n if (options.width && options.width !== 'inherit') {\n if (jQuery.isNumeric(options.width)) {\n editor.css('display', 'table');\n textarea.css('width', options.width + 'px');\n } else {\n editor.addClass(options.width);\n }\n }\n\n // Set height\n if (options.height && options.height !== 'inherit') {\n if (jQuery.isNumeric(options.height)) {\n var height = options.height;\n if (editorHeader) height = Math.max(0, height - editorHeader.outerHeight());\n if (editorFooter) height = Math.max(0, height - editorFooter.outerHeight());\n textarea.css('height', height + 'px');\n } else {\n editor.addClass(options.height);\n }\n }\n\n // Reference\n this.$editor = editor;\n this.$textarea = textarea;\n this.$editable = editable;\n this.$oldContent = this.getContent();\n\n this.__setListener();\n\n // Set editor attributes, data short-hand API and listener\n this.$editor.attr('id',(new Date()).getTime());\n this.$editor.on('click', '[data-provider=\"bootstrap-markdown\"]', $.proxy(this.__handle, this));\n\n if (this.$element.is(':disabled') || this.$element.is('[readonly]')) {\n this.$editor.addClass('md-editor-disabled');\n this.disableButtons('all');\n }\n\n if (this.eventSupported('keydown') && typeof jQuery.hotkeys === 'object') {\n editorHeader.find('[data-provider=\"bootstrap-markdown\"]').each(function() {\n var $button = $(this),\n hotkey = $button.attr('data-hotkey');\n if (hotkey.toLowerCase() !== '') {\n textarea.bind('keydown', hotkey, function() {\n $button.trigger('click');\n return false;\n });\n }\n });\n }\n\n if (options.initialstate === 'preview') {\n this.showPreview();\n } else if (options.initialstate === 'fullscreen' && options.fullscreen.enable) {\n this.setFullscreen(true);\n }\n\n } else {\n this.$editor.show();\n }\n\n if (options.autofocus) {\n this.$textarea.focus();\n this.$editor.addClass('active');\n }\n\n if (options.fullscreen.enable && options.fullscreen !== false) {\n this.$editor.append('<div class=\"md-fullscreen-controls\">'\n + '<a href=\"#\" class=\"exit-fullscreen\" title=\"Exit fullscreen\"><span class=\"' + this.__getIcon(options.fullscreen.icons.fullscreenOff) + '\">'\n + '</span></a>'\n + '</div>');\n this.$editor.on('click', '.exit-fullscreen', function(e) {\n e.preventDefault();\n instance.setFullscreen(false);\n });\n }\n\n // hide hidden buttons from options\n this.hideButtons(options.hiddenButtons);\n\n // disable disabled buttons from options\n this.disableButtons(options.disabledButtons);\n\n // Trigger the onShow hook\n options.onShow(this);\n\n return this;\n }\n\n , parseContent: function(val) {\n var content;\n\n // parse with supported markdown parser\n var val = val || this.$textarea.val();\n\n if (this.$options.parser) {\n content = this.$options.parser(val);\n } else if (typeof markdown == 'object') {\n content = markdown.toHTML(val);\n } else if (typeof marked == 'function') {\n content = marked(val);\n } else {\n content = val;\n }\n\n return content;\n }\n\n , showPreview: function() {\n var options = this.$options,\n container = this.$textarea,\n afterContainer = container.next(),\n replacementContainer = $('<div/>',{'class':'md-preview','data-provider':'markdown-preview'}),\n content,\n callbackContent;\n\n if (this.$isPreview == true) {\n // Avoid sequenced element creation on missused scenario\n // @see https://github.com/toopay/bootstrap-markdown/issues/170\n return this;\n }\n \n // Give flag that tell the editor enter preview mode\n this.$isPreview = true;\n // Disable all buttons\n this.disableButtons('all').enableButtons('cmdPreview');\n\n // Try to get the content from callback\n callbackContent = options.onPreview(this);\n // Set the content based from the callback content if string otherwise parse value from textarea\n content = typeof callbackContent == 'string' ? callbackContent : this.parseContent();\n\n // Build preview element\n replacementContainer.html(content);\n\n if (afterContainer && afterContainer.attr('class') == 'md-footer') {\n // If there is footer element, insert the preview container before it\n replacementContainer.insertBefore(afterContainer);\n } else {\n // Otherwise, just append it after textarea\n container.parent().append(replacementContainer);\n }\n\n // Set the preview element dimensions\n replacementContainer.css({\n width: container.outerWidth() + 'px',\n height: container.outerHeight() + 'px'\n });\n\n if (this.$options.resize) {\n replacementContainer.css('resize',this.$options.resize);\n }\n\n // Hide the last-active textarea\n container.hide();\n\n // Attach the editor instances\n replacementContainer.data('markdown',this);\n\n if (this.$element.is(':disabled') || this.$element.is('[readonly]')) {\n this.$editor.addClass('md-editor-disabled');\n this.disableButtons('all');\n }\n\n return this;\n }\n\n , hidePreview: function() {\n // Give flag that tell the editor quit preview mode\n this.$isPreview = false;\n\n // Obtain the preview container\n var container = this.$editor.find('div[data-provider=\"markdown-preview\"]');\n\n // Remove the preview container\n container.remove();\n\n // Enable all buttons\n this.enableButtons('all');\n // Disable configured disabled buttons\n this.disableButtons(this.$options.disabledButtons);\n\n // Back to the editor\n this.$textarea.show();\n this.__setListener();\n\n return this;\n }\n\n , isDirty: function() {\n return this.$oldContent != this.getContent();\n }\n\n , getContent: function() {\n return this.$textarea.val();\n }\n\n , setContent: function(content) {\n this.$textarea.val(content);\n\n return this;\n }\n\n , findSelection: function(chunk) {\n var content = this.getContent(), startChunkPosition;\n\n if (startChunkPosition = content.indexOf(chunk), startChunkPosition >= 0 && chunk.length > 0) {\n var oldSelection = this.getSelection(), selection;\n\n this.setSelection(startChunkPosition,startChunkPosition+chunk.length);\n selection = this.getSelection();\n\n this.setSelection(oldSelection.start,oldSelection.end);\n\n return selection;\n } else {\n return null;\n }\n }\n\n , getSelection: function() {\n\n var e = this.$textarea[0];\n\n return (\n\n ('selectionStart' in e && function() {\n var l = e.selectionEnd - e.selectionStart;\n return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };\n }) ||\n\n /* browser not supported */\n function() {\n return null;\n }\n\n )();\n\n }\n\n , setSelection: function(start,end) {\n\n var e = this.$textarea[0];\n\n return (\n\n ('selectionStart' in e && function() {\n e.selectionStart = start;\n e.selectionEnd = end;\n return;\n }) ||\n\n /* browser not supported */\n function() {\n return null;\n }\n\n )();\n\n }\n\n , replaceSelection: function(text) {\n\n var e = this.$textarea[0];\n\n return (\n\n ('selectionStart' in e && function() {\n e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);\n // Set cursor to the last replacement end\n e.selectionStart = e.value.length;\n return this;\n }) ||\n\n /* browser not supported */\n function() {\n e.value += text;\n return jQuery(e);\n }\n\n )();\n }\n\n , getNextTab: function() {\n // Shift the nextTab\n if (this.$nextTab.length === 0) {\n return null;\n } else {\n var nextTab, tab = this.$nextTab.shift();\n\n if (typeof tab == 'function') {\n nextTab = tab();\n } else if (typeof tab == 'object' && tab.length > 0) {\n nextTab = tab;\n }\n\n return nextTab;\n }\n }\n\n , setNextTab: function(start,end) {\n // Push new selection into nextTab collections\n if (typeof start == 'string') {\n var that = this;\n this.$nextTab.push(function(){\n return that.findSelection(start);\n });\n } else if (typeof start == 'number' && typeof end == 'number') {\n var oldSelection = this.getSelection();\n\n this.setSelection(start,end);\n this.$nextTab.push(this.getSelection());\n\n this.setSelection(oldSelection.start,oldSelection.end);\n }\n\n return;\n }\n\n , __parseButtonNameParam: function (names) {\n return typeof names == 'string' ?\n names.split(' ') :\n names;\n\n }\n\n , enableButtons: function(name) {\n var buttons = this.__parseButtonNameParam(name),\n that = this;\n\n $.each(buttons, function(i, v) {\n that.__alterButtons(buttons[i], function (el) {\n el.removeAttr('disabled');\n });\n });\n\n return this;\n }\n\n , disableButtons: function(name) {\n var buttons = this.__parseButtonNameParam(name),\n that = this;\n\n $.each(buttons, function(i, v) {\n that.__alterButtons(buttons[i], function (el) {\n el.attr('disabled','disabled');\n });\n });\n\n return this;\n }\n\n , hideButtons: function(name) {\n var buttons = this.__parseButtonNameParam(name),\n that = this;\n\n $.each(buttons, function(i, v) {\n that.__alterButtons(buttons[i], function (el) {\n el.addClass('hidden');\n });\n });\n\n return this;\n }\n\n , showButtons: function(name) {\n var buttons = this.__parseButtonNameParam(name),\n that = this;\n\n $.each(buttons, function(i, v) {\n that.__alterButtons(buttons[i], function (el) {\n el.removeClass('hidden');\n });\n });\n\n return this;\n }\n\n , eventSupported: function(eventName) {\n var isSupported = eventName in this.$element;\n if (!isSupported) {\n this.$element.setAttribute(eventName, 'return;');\n isSupported = typeof this.$element[eventName] === 'function';\n }\n return isSupported;\n }\n\n , keyup: function (e) {\n var blocked = false;\n switch(e.keyCode) {\n case 40: // down arrow\n case 38: // up arrow\n case 16: // shift\n case 17: // ctrl\n case 18: // alt\n break;\n\n case 9: // tab\n var nextTab;\n if (nextTab = this.getNextTab(),nextTab !== null) {\n // Get the nextTab if exists\n var that = this;\n setTimeout(function(){\n that.setSelection(nextTab.start,nextTab.end);\n },500);\n\n blocked = true;\n } else {\n // The next tab memory contains nothing...\n // check the cursor position to determine tab action\n var cursor = this.getSelection();\n\n if (cursor.start == cursor.end && cursor.end == this.getContent().length) {\n // The cursor already reach the end of the content\n blocked = false;\n } else {\n // Put the cursor to the end\n this.setSelection(this.getContent().length,this.getContent().length);\n\n blocked = true;\n }\n }\n\n break;\n\n case 13: // enter\n blocked = false;\n break;\n case 27: // escape\n if (this.$isFullscreen) this.setFullscreen(false);\n blocked = false;\n break;\n\n default:\n blocked = false;\n }\n\n if (blocked) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n this.$options.onChange(this);\n }\n\n , change: function(e) {\n this.$options.onChange(this);\n return this;\n }\n , select: function (e) {\n this.$options.onSelect(this);\n return this;\n }\n , focus: function (e) {\n var options = this.$options,\n isHideable = options.hideable,\n editor = this.$editor;\n\n editor.addClass('active');\n\n // Blur other markdown(s)\n $(document).find('.md-editor').each(function(){\n if ($(this).attr('id') !== editor.attr('id')) {\n var attachedMarkdown;\n\n if (attachedMarkdown = $(this).find('textarea').data('markdown'),\n attachedMarkdown === null) {\n attachedMarkdown = $(this).find('div[data-provider=\"markdown-preview\"]').data('markdown');\n }\n\n if (attachedMarkdown) {\n attachedMarkdown.blur();\n }\n }\n });\n\n // Trigger the onFocus hook\n options.onFocus(this);\n\n return this;\n }\n\n , blur: function (e) {\n var options = this.$options,\n isHideable = options.hideable,\n editor = this.$editor,\n editable = this.$editable;\n\n if (editor.hasClass('active') || this.$element.parent().length === 0) {\n editor.removeClass('active');\n\n if (isHideable) {\n // Check for editable elements\n if (editable.el !== null) {\n // Build the original element\n var oldElement = $('<'+editable.type+'/>'),\n content = this.getContent(),\n currentContent = this.parseContent(content);\n\n $(editable.attrKeys).each(function(k,v) {\n oldElement.attr(editable.attrKeys[k],editable.attrValues[k]);\n });\n\n // Get the editor content\n oldElement.html(currentContent);\n\n editor.replaceWith(oldElement);\n } else {\n editor.hide();\n }\n }\n\n // Trigger the onBlur hook\n options.onBlur(this);\n }\n\n return this;\n }\n\n };\n\n /* MARKDOWN PLUGIN DEFINITION\n * ========================== */\n\n var old = $.fn.markdown;\n\n $.fn.markdown = function (option) {\n return this.each(function () {\n var $this = $(this)\n , data = $this.data('markdown')\n , options = typeof option == 'object' && option;\n if (!data) $this.data('markdown', (data = new Markdown(this, options)))\n })\n };\n\n $.fn.markdown.messages = {};\n\n $.fn.markdown.defaults = {\n /* Editor Properties */\n autofocus: false,\n hideable: false,\n savable: false,\n width: 'inherit',\n height: 'inherit',\n resize: 'none',\n iconlibrary: 'glyph',\n language: 'en',\n initialstate: 'editor',\n parser: null,\n\n /* Buttons Properties */\n buttons: [\n [{\n name: 'groupFont',\n data: [{\n name: 'cmdBold',\n hotkey: 'Ctrl+B',\n title: 'Bold',\n icon: { glyph: 'glyphicon glyphicon-bold', fa: 'fa fa-bold', 'fa-3': 'icon-bold' },\n callback: function(e){\n // Give/remove ** surround the selection\n var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('strong text');\n } else {\n chunk = selected.text;\n }\n\n // transform selection and set the cursor into chunked text\n if (content.substr(selected.start-2,2) === '**'\n && content.substr(selected.end,2) === '**' ) {\n e.setSelection(selected.start-2,selected.end+2);\n e.replaceSelection(chunk);\n cursor = selected.start-2;\n } else {\n e.replaceSelection('**'+chunk+'**');\n cursor = selected.start+2;\n }\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n },{\n name: 'cmdItalic',\n title: 'Italic',\n hotkey: 'Ctrl+I',\n icon: { glyph: 'glyphicon glyphicon-italic', fa: 'fa fa-italic', 'fa-3': 'icon-italic' },\n callback: function(e){\n // Give/remove * surround the selection\n var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('emphasized text');\n } else {\n chunk = selected.text;\n }\n\n // transform selection and set the cursor into chunked text\n if (content.substr(selected.start-1,1) === '_'\n && content.substr(selected.end,1) === '_' ) {\n e.setSelection(selected.start-1,selected.end+1);\n e.replaceSelection(chunk);\n cursor = selected.start-1;\n } else {\n e.replaceSelection('_'+chunk+'_');\n cursor = selected.start+1;\n }\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n },{\n name: 'cmdHeading',\n title: 'Heading',\n hotkey: 'Ctrl+H',\n icon: { glyph: 'glyphicon glyphicon-header', fa: 'fa fa-header', 'fa-3': 'icon-font' },\n callback: function(e){\n // Append/remove ### surround the selection\n var chunk, cursor, selected = e.getSelection(), content = e.getContent(), pointer, prevChar;\n\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('heading text');\n } else {\n chunk = selected.text + '\\n';\n }\n\n // transform selection and set the cursor into chunked text\n if ((pointer = 4, content.substr(selected.start-pointer,pointer) === '### ')\n || (pointer = 3, content.substr(selected.start-pointer,pointer) === '###')) {\n e.setSelection(selected.start-pointer,selected.end);\n e.replaceSelection(chunk);\n cursor = selected.start-pointer;\n } else if (selected.start > 0 && (prevChar = content.substr(selected.start-1,1), !!prevChar && prevChar != '\\n')) {\n e.replaceSelection('\\n\\n### '+chunk);\n cursor = selected.start+6;\n } else {\n // Empty string before element\n e.replaceSelection('### '+chunk);\n cursor = selected.start+4;\n }\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n }]\n },{\n name: 'groupLink',\n data: [{\n name: 'cmdUrl',\n title: 'URL/Link',\n hotkey: 'Ctrl+L',\n icon: { glyph: 'glyphicon glyphicon-link', fa: 'fa fa-link', 'fa-3': 'icon-link' },\n callback: function(e){\n // Give [] surround the selection and prepend the link\n var chunk, cursor, selected = e.getSelection(), content = e.getContent(), link;\n\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('enter link description here');\n } else {\n chunk = selected.text;\n }\n\n link = prompt(e.__localize('Insert Hyperlink'),'http://');\n\n var urlRegex = new RegExp('^((http|https)://|(mailto:)|(//))[a-z0-9]', 'i');\n if (link !== null && link !== '' && link !== 'http://' && urlRegex.test(link)) {\n var sanitizedLink = $('<div>'+link+'</div>').text();\n\n // transform selection and set the cursor into chunked text\n e.replaceSelection('['+chunk+']('+sanitizedLink+')');\n cursor = selected.start+1;\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n }\n },{\n name: 'cmdImage',\n title: 'Image',\n hotkey: 'Ctrl+G',\n icon: { glyph: 'glyphicon glyphicon-picture', fa: 'fa fa-picture-o', 'fa-3': 'icon-picture' },\n callback: function(e){\n // Give ![] surround the selection and prepend the image link\n var chunk, cursor, selected = e.getSelection(), content = e.getContent(), link;\n\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('enter image description here');\n } else {\n chunk = selected.text;\n }\n\n link = prompt(e.__localize('Insert Image Hyperlink'),'http://');\n\n var urlRegex = new RegExp('^((http|https)://|(//))[a-z0-9]', 'i');\n if (link !== null && link !== '' && link !== 'http://' && urlRegex.test(link)) {\n var sanitizedLink = $('<div>'+link+'</div>').text();\n\n // transform selection and set the cursor into chunked text\n e.replaceSelection('+'\")');\n cursor = selected.start+2;\n\n // Set the next tab\n e.setNextTab(e.__localize('enter image title here'));\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n }\n }]\n },{\n name: 'groupMisc',\n data: [{\n name: 'cmdList',\n hotkey: 'Ctrl+U',\n title: 'Unordered List',\n icon: { glyph: 'glyphicon glyphicon-list', fa: 'fa fa-list', 'fa-3': 'icon-list-ul' },\n callback: function(e){\n // Prepend/Give - surround the selection\n var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\n // transform selection and set the cursor into chunked text\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('list text here');\n\n e.replaceSelection('- '+chunk);\n // Set the cursor\n cursor = selected.start+2;\n } else {\n if (selected.text.indexOf('\\n') < 0) {\n chunk = selected.text;\n\n e.replaceSelection('- '+chunk);\n\n // Set the cursor\n cursor = selected.start+2;\n } else {\n var list = [];\n\n list = selected.text.split('\\n');\n chunk = list[0];\n\n $.each(list,function(k,v) {\n list[k] = '- '+v;\n });\n\n e.replaceSelection('\\n\\n'+list.join('\\n'));\n\n // Set the cursor\n cursor = selected.start+4;\n }\n }\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n },\n {\n name: 'cmdListO',\n hotkey: 'Ctrl+O',\n title: 'Ordered List',\n icon: { glyph: 'glyphicon glyphicon-th-list', fa: 'fa fa-list-ol', 'fa-3': 'icon-list-ol' },\n callback: function(e) {\n\n // Prepend/Give - surround the selection\n var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\n // transform selection and set the cursor into chunked text\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('list text here');\n e.replaceSelection('1. '+chunk);\n // Set the cursor\n cursor = selected.start+3;\n } else {\n if (selected.text.indexOf('\\n') < 0) {\n chunk = selected.text;\n\n e.replaceSelection('1. '+chunk);\n\n // Set the cursor\n cursor = selected.start+3;\n } else {\n var list = [];\n\n list = selected.text.split('\\n');\n chunk = list[0];\n\n $.each(list,function(k,v) {\n list[k] = '1. '+v;\n });\n\n e.replaceSelection('\\n\\n'+list.join('\\n'));\n\n // Set the cursor\n cursor = selected.start+5;\n }\n }\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n },\n {\n name: 'cmdCode',\n hotkey: 'Ctrl+K',\n title: 'Code',\n icon: { glyph: 'glyphicon glyphicon-asterisk', fa: 'fa fa-code', 'fa-3': 'icon-code' },\n callback: function(e) {\n // Give/remove ** surround the selection\n var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('code text here');\n } else {\n chunk = selected.text;\n }\n\n // transform selection and set the cursor into chunked text\n if (content.substr(selected.start-4,4) === '```\\n'\n && content.substr(selected.end,4) === '\\n```') {\n e.setSelection(selected.start-4, selected.end+4);\n e.replaceSelection(chunk);\n cursor = selected.start-4;\n } else if (content.substr(selected.start-1,1) === '`'\n && content.substr(selected.end,1) === '`') {\n e.setSelection(selected.start-1,selected.end+1);\n e.replaceSelection(chunk);\n cursor = selected.start-1;\n } else if (content.indexOf('\\n') > -1) {\n e.replaceSelection('```\\n'+chunk+'\\n```');\n cursor = selected.start+4;\n } else {\n e.replaceSelection('`'+chunk+'`');\n cursor = selected.start+1;\n }\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n },\n {\n name: 'cmdQuote',\n hotkey: 'Ctrl+Q',\n title: 'Quote',\n icon: { glyph: 'glyphicon glyphicon-comment', fa: 'fa fa-quote-left', 'fa-3': 'icon-quote-left' },\n callback: function(e) {\n // Prepend/Give - surround the selection\n var chunk, cursor, selected = e.getSelection(), content = e.getContent();\n\n // transform selection and set the cursor into chunked text\n if (selected.length === 0) {\n // Give extra word\n chunk = e.__localize('quote here');\n\n e.replaceSelection('> '+chunk);\n\n // Set the cursor\n cursor = selected.start+2;\n } else {\n if (selected.text.indexOf('\\n') < 0) {\n chunk = selected.text;\n\n e.replaceSelection('> '+chunk);\n\n // Set the cursor\n cursor = selected.start+2;\n } else {\n var list = [];\n\n list = selected.text.split('\\n');\n chunk = list[0];\n\n $.each(list,function(k,v) {\n list[k] = '> '+v;\n });\n\n e.replaceSelection('\\n\\n'+list.join('\\n'));\n\n // Set the cursor\n cursor = selected.start+4;\n }\n }\n\n // Set the cursor\n e.setSelection(cursor,cursor+chunk.length);\n }\n }]\n },{\n name: 'groupUtil',\n data: [{\n name: 'cmdPreview',\n toggle: true,\n hotkey: 'Ctrl+P',\n title: 'Preview',\n btnText: 'Preview',\n btnClass: 'btn btn-primary btn-sm',\n icon: { glyph: 'glyphicon glyphicon-search', fa: 'fa fa-search', 'fa-3': 'icon-search' },\n callback: function(e){\n // Check the preview mode and toggle based on this flag\n var isPreview = e.$isPreview,content;\n\n if (isPreview === false) {\n // Give flag that tell the editor enter preview mode\n e.showPreview();\n } else {\n e.hidePreview();\n }\n }\n }]\n }]\n ],\n additionalButtons:[], // Place to hook more buttons by code\n reorderButtonGroups:[],\n hiddenButtons:[], // Default hidden buttons\n disabledButtons:[], // Default disabled buttons\n footer: '',\n fullscreen: {\n enable: true,\n icons: {\n fullscreenOn: {\n fa: 'fa fa-expand',\n glyph: 'glyphicon glyphicon-fullscreen',\n 'fa-3': 'icon-resize-full'\n },\n fullscreenOff: {\n fa: 'fa fa-compress',\n glyph: 'glyphicon glyphicon-fullscreen',\n 'fa-3': 'icon-resize-small'\n }\n }\n },\n\n /* Events hook */\n onShow: function (e) {},\n onPreview: function (e) {},\n onSave: function (e) {},\n onBlur: function (e) {},\n onFocus: function (e) {},\n onChange: function(e) {},\n onFullscreen: function(e) {},\n onSelect: function (e) {}\n };\n\n $.fn.markdown.Constructor = Markdown;\n\n\n /* MARKDOWN NO CONFLICT\n * ==================== */\n\n $.fn.markdown.noConflict = function () {\n $.fn.markdown = old;\n return this;\n };\n\n /* MARKDOWN GLOBAL FUNCTION & DATA-API\n * ==================================== */\n var initMarkdown = function(el) {\n var $this = el;\n\n if ($this.data('markdown')) {\n $this.data('markdown').showEditor();\n return;\n }\n\n $this.markdown()\n };\n\n var blurNonFocused = function(e) {\n var $activeElement = $(document.activeElement);\n\n // Blur event\n $(document).find('.md-editor').each(function(){\n var $this = $(this),\n focused = $activeElement.closest('.md-editor')[0] === this,\n attachedMarkdown = $this.find('textarea').data('markdown') ||\n $this.find('div[data-provider=\"markdown-preview\"]').data('markdown');\n\n if (attachedMarkdown && !focused) {\n attachedMarkdown.blur();\n }\n })\n };\n\n $(document)\n .on('click.markdown.data-api', '[data-provide=\"markdown-editable\"]', function (e) {\n initMarkdown($(this));\n e.preventDefault();\n })\n .on('click focusin', function (e) {\n blurNonFocused(e);\n })\n .ready(function(){\n $('textarea[data-provide=\"markdown\"]').each(function(){\n initMarkdown($(this));\n })\n });\n\n}));\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/bootstrap-markdown/js/bootstrap-markdown.js\n ** module id = 1058\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".calendar{color:#000;min-width:210px;border-radius:4px}.calendar>*{display:block}.calendar .fa-remove{color:red}.calendar nav{font-weight:700;display:flex}.calendar nav .switch{flex:2 0 50%}.calendar nav .next,.calendar nav .prev{flex:1}.calendar main{display:flex;flex-wrap:wrap}.calendar main header{font-weight:700}.calendar main header span{height:30px;padding-top:10px;line-height:20px}.calendar main.days>*{display:flex;flex:1 0 100%}.calendar main.days button,.calendar main.days span{flex:1 0 30px;text-align:center}.calendar main.months,.calendar main.years{flex-wrap:wrap}.calendar main.months button,.calendar main.years button{flex:1 0 25%;text-align:center;height:54px;line-height:54px}.calendar footer{font-weight:700;display:flex}.calendar button{height:30px;width:100%;background:none;border:none;border-radius:4px}.calendar button:hover{background:#eee}.calendar button.new,.calendar button.old{color:#777}.calendar button.day:hover,.calendar button:focus{background:#eee;cursor:pointer}.calendar button:disabled,.calendar button:disabled:hover{background:none;color:#777;cursor:not-allowed}.calendar button.today{color:#000;background-color:#ffdb99;border-color:#ffb733;position:relative}.calendar button.today.focus,.calendar button.today:focus{color:#000;background-color:#ffc966;border-color:#b37400}.calendar button.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.calendar button.today.active,.calendar button.today:active,.open>.dropdown-toggle.calendar button.today{color:#000;background-color:#ffc966;background-image:none;border-color:#f59e00}.calendar button.today.active.focus,.calendar button.today.active:focus,.calendar button.today.active:hover,.calendar button.today:active.focus,.calendar button.today:active:focus,.calendar button.today:active:hover,.open>.dropdown-toggle.calendar button.today.focus,.open>.dropdown-toggle.calendar button.today:focus,.open>.dropdown-toggle.calendar button.today:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.calendar button.today.disabled.focus,.calendar button.today.disabled:focus,.calendar button.today.disabled:hover,.calendar button.today[disabled].focus,.calendar button.today[disabled]:focus,.calendar button.today[disabled]:hover,fieldset[disabled] .calendar button.today.focus,fieldset[disabled] .calendar button.today:focus,fieldset[disabled] .calendar button.today:hover{background-color:#ffdb99;border-color:#ffb733}.calendar button.today .badge{color:#ffdb99;background-color:#000}.calendar button.today:focus{background:#ffc966}.calendar button.today:disabled,.calendar button.today:disabled:active{background:#ffdb99;color:#777}.calendar button.today:before{content:\\\"\\\";display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#000;border-top-color:#ffdb99;position:absolute;bottom:4px;right:4px}.calendar button.active{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.calendar button.active.focus,.calendar button.active:focus{color:#fff;background-color:#286090;border-color:#122b40}.calendar button.active:hover{color:#fff;background-color:#286090;border-color:#204d74}.calendar button.active.active,.calendar button.active:active,.open>.dropdown-toggle.calendar button.active{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.calendar button.active.active.focus,.calendar button.active.active:focus,.calendar button.active.active:hover,.calendar button.active:active.focus,.calendar button.active:active:focus,.calendar button.active:active:hover,.open>.dropdown-toggle.calendar button.active.focus,.open>.dropdown-toggle.calendar button.active:focus,.open>.dropdown-toggle.calendar button.active:hover{color:#fff;background-color:#204d74;border-color:#122b40}.calendar button.active.disabled.focus,.calendar button.active.disabled:focus,.calendar button.active.disabled:hover,.calendar button.active[disabled].focus,.calendar button.active[disabled]:focus,.calendar button.active[disabled]:hover,fieldset[disabled] .calendar button.active.focus,fieldset[disabled] .calendar button.active:focus,fieldset[disabled] .calendar button.active:hover{background-color:#337ab7;border-color:#2e6da4}.calendar button.active .badge{color:#337ab7;background-color:#fff}.calendar button.active.today:before{border-bottom-color:#fff}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/calendar.vue\"],\"names\":[],\"mappings\":\"AAAA,UAAU,WAAY,gBAAgB,iBAAiB,CAAC,YAAY,aAAa,CAAC,qBAAqB,SAAS,CAAC,cAAc,gBAAiB,YAAY,CAAC,sBAAsB,YAAY,CAAC,wCAAwC,MAAM,CAAC,eAAe,aAAa,cAAc,CAAC,sBAAsB,eAAgB,CAAC,2BAA2B,YAAY,iBAAiB,gBAAgB,CAAC,sBAAsB,aAAa,aAAa,CAAC,oDAAoD,cAAc,iBAAiB,CAAC,2CAA2C,cAAc,CAAC,yDAAyD,aAAa,kBAAkB,YAAY,gBAAgB,CAAC,iBAAiB,gBAAiB,YAAY,CAAC,iBAAiB,YAAY,WAAW,gBAAgB,YAAY,iBAAiB,CAAC,uBAAuB,eAAe,CAAC,0CAA0C,UAAU,CAAC,kDAAkD,gBAAgB,cAAc,CAAC,0DAA0D,gBAAgB,WAAW,kBAAkB,CAAC,uBAAuB,WAAW,yBAAyB,qBAAqB,iBAAiB,CAAC,0DAA0D,WAAW,yBAAyB,oBAAoB,CAAC,6BAA6B,WAAW,yBAAyB,oBAAoB,CAAC,yGAAyG,WAAW,yBAAyB,sBAAsB,oBAAoB,CAAC,iXAAiX,WAAW,yBAAyB,oBAAoB,CAAC,uXAAuX,yBAAyB,oBAAoB,CAAC,8BAA8B,cAAc,qBAAqB,CAAC,6BAA6B,kBAAkB,CAAC,uEAAuE,mBAAmB,UAAU,CAAC,8BAA8B,WAAW,qBAAqB,yBAAyB,yBAAyB,yBAAyB,yBAAyB,kBAAkB,WAAW,SAAS,CAAC,wBAAwB,WAAW,yBAAyB,qBAAqB,oCAAqC,CAAC,4DAA4D,WAAW,yBAAyB,oBAAoB,CAAC,8BAA8B,WAAW,yBAAyB,oBAAoB,CAAC,4GAA4G,WAAW,yBAAyB,sBAAsB,oBAAoB,CAAC,0XAA0X,WAAW,yBAAyB,oBAAoB,CAAC,gYAAgY,yBAAyB,oBAAoB,CAAC,+BAA+B,cAAc,qBAAqB,CAAC,qCAAqC,wBAAwB,CAAC\",\"file\":\"calendar.vue\",\"sourcesContent\":[\".calendar{color:black;min-width:210px;border-radius:4px}.calendar>*{display:block}.calendar .fa-remove{color:red}.calendar nav{font-weight:bold;display:flex}.calendar nav .switch{flex:2 0 50%}.calendar nav .prev,.calendar nav .next{flex:1}.calendar main{display:flex;flex-wrap:wrap}.calendar main header{font-weight:bold}.calendar main header span{height:30px;padding-top:10px;line-height:20px}.calendar main.days>*{display:flex;flex:1 0 100%}.calendar main.days span,.calendar main.days button{flex:1 0 30px;text-align:center}.calendar main.months,.calendar main.years{flex-wrap:wrap}.calendar main.months button,.calendar main.years button{flex:1 0 25%;text-align:center;height:54px;line-height:54px}.calendar footer{font-weight:bold;display:flex}.calendar button{height:30px;width:100%;background:none;border:none;border-radius:4px}.calendar button:hover{background:#eee}.calendar button.old,.calendar button.new{color:#777}.calendar button.day:hover,.calendar button:focus{background:#eee;cursor:pointer}.calendar button:disabled,.calendar button:disabled:hover{background:none;color:#777;cursor:not-allowed}.calendar button.today{color:#000;background-color:#ffdb99;border-color:#ffb733;position:relative}.calendar button.today:focus,.calendar button.today.focus{color:#000;background-color:#ffc966;border-color:#b37400}.calendar button.today:hover{color:#000;background-color:#ffc966;border-color:#f59e00}.calendar button.today:active,.calendar button.today.active,.open>.dropdown-toggle.calendar button.today{color:#000;background-color:#ffc966;background-image:none;border-color:#f59e00}.calendar button.today:active:hover,.calendar button.today.active:hover,.open>.dropdown-toggle.calendar button.today:hover,.calendar button.today:active:focus,.calendar button.today.active:focus,.open>.dropdown-toggle.calendar button.today:focus,.calendar button.today:active.focus,.calendar button.today.active.focus,.open>.dropdown-toggle.calendar button.today.focus{color:#000;background-color:#ffbc42;border-color:#b37400}.calendar button.today.disabled:hover,.calendar button.today[disabled]:hover,fieldset[disabled] .calendar button.today:hover,.calendar button.today.disabled:focus,.calendar button.today[disabled]:focus,fieldset[disabled] .calendar button.today:focus,.calendar button.today.disabled.focus,.calendar button.today[disabled].focus,fieldset[disabled] .calendar button.today.focus{background-color:#ffdb99;border-color:#ffb733}.calendar button.today .badge{color:#ffdb99;background-color:#000}.calendar button.today:focus{background:#ffc966}.calendar button.today:disabled,.calendar button.today:disabled:active{background:#ffdb99;color:#777}.calendar button.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#000;border-top-color:#ffdb99;position:absolute;bottom:4px;right:4px}.calendar button.active{color:#fff;background-color:#337ab7;border-color:#2e6da4;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.calendar button.active:focus,.calendar button.active.focus{color:#fff;background-color:#286090;border-color:#122b40}.calendar button.active:hover{color:#fff;background-color:#286090;border-color:#204d74}.calendar button.active:active,.calendar button.active.active,.open>.dropdown-toggle.calendar button.active{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.calendar button.active:active:hover,.calendar button.active.active:hover,.open>.dropdown-toggle.calendar button.active:hover,.calendar button.active:active:focus,.calendar button.active.active:focus,.open>.dropdown-toggle.calendar button.active:focus,.calendar button.active:active.focus,.calendar button.active.active.focus,.open>.dropdown-toggle.calendar button.active.focus{color:#fff;background-color:#204d74;border-color:#122b40}.calendar button.active.disabled:hover,.calendar button.active[disabled]:hover,fieldset[disabled] .calendar button.active:hover,.calendar button.active.disabled:focus,.calendar button.active[disabled]:focus,fieldset[disabled] .calendar button.active:focus,.calendar button.active.disabled.focus,.calendar button.active[disabled].focus,fieldset[disabled] .calendar button.active.focus{background-color:#337ab7;border-color:#2e6da4}.calendar button.active .badge{color:#337ab7;background-color:#fff}.calendar button.active.today:before{border-bottom-color:#fff}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/calendar.vue\n ** module id = 1059\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox-form-field label{font-weight:700}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/checkbox.vue\"],\"names\":[],\"mappings\":\"AAAA,2BAA2B,eAAgB,CAAC\",\"file\":\"checkbox.vue\",\"sourcesContent\":[\".checkbox-form-field label{font-weight:bold}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/checkbox.vue\n ** module id = 1060\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".date-picker .dropdown-menu{min-width:100%;width:auto}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/date-picker.vue\"],\"names\":[],\"mappings\":\"AAAA,4BAA4B,eAAe,UAAU,CAAC\",\"file\":\"date-picker.vue\",\"sourcesContent\":[\".date-picker .dropdown-menu{min-width:100%;width:auto}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/date-picker.vue\n ** module id = 1061\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \"table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777}caption,th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.markdown img{max-width:100%;margin:auto;display:block}.markdown img+em{display:block;text-align:center;margin:.3em .1em}.markdown table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.markdown table>tbody>tr>td,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>td,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.markdown table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.markdown table>caption+thead>tr:first-child>td,.markdown table>caption+thead>tr:first-child>th,.markdown table>colgroup+thead>tr:first-child>td,.markdown table>colgroup+thead>tr:first-child>th,.markdown table>thead:first-child>tr:first-child>td,.markdown table>thead:first-child>tr:first-child>th{border-top:0}.markdown table>tbody+tbody{border-top:2px solid #ddd}.markdown table .table{background-color:#fff}.markdown table>tbody>tr>td,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>td,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>thead>tr>th{border:1px solid #ddd}.markdown table>thead>tr>td,.markdown table>thead>tr>th{border-bottom-width:2px}.markdown table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.markdown table>tbody>tr:hover{background-color:#f5f5f5}.md-editor>textarea{background:#fff;padding:6px 12px;border-bottom:none}.md-editor.active{border-color:#3c8dbc;box-shadow:none}.form-group.has-error .md-editor{border-color:#dd4b39}.form-group.has-success .md-editor{border-color:#00a65a}.md-editor .btn{border-radius:0}.md-editor .btn.btn-default{background-color:#fff}.md-editor .md-preview{color:#000;padding:6px 12px;max-width:100%}.md-editor .md-preview img{max-width:100%;margin:auto;display:block}.md-editor .md-preview img+em{display:block;text-align:center;margin:.3em .1em}.md-editor .md-preview table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>td,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.md-editor .md-preview table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.md-editor .md-preview table>caption+thead>tr:first-child>td,.md-editor .md-preview table>caption+thead>tr:first-child>th,.md-editor .md-preview table>colgroup+thead>tr:first-child>td,.md-editor .md-preview table>colgroup+thead>tr:first-child>th,.md-editor .md-preview table>thead:first-child>tr:first-child>td,.md-editor .md-preview table>thead:first-child>tr:first-child>th{border-top:0}.md-editor .md-preview table>tbody+tbody{border-top:2px solid #ddd}.md-editor .md-preview table .table{background-color:#fff}.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>td,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>thead>tr>th{border:1px solid #ddd}.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>thead>tr>th{border-bottom-width:2px}.md-editor .md-preview table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.md-editor .md-preview table>tbody>tr:hover{background-color:#f5f5f5}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/markdown-editor.vue\"],\"names\":[],\"mappings\":\"AAAA,MAAM,4BAA4B,CAAC,uBAAyB,gBAAgB,qBAAqB,UAAU,CAAC,4CAAgD,gBAAgB,mBAAmB,UAAU,CAAC,QAAQ,gBAAgB,mBAAmB,UAAW,CAAgB,WAAhB,eAAe,CAAoB,OAAO,WAAW,eAAe,kBAAkB,CAAC,kHAAkH,YAAY,uBAAuB,mBAAmB,yBAAyB,CAAC,mBAAmB,sBAAsB,4BAA4B,CAAC,oPAAoP,YAAY,CAAC,mBAAmB,yBAAyB,CAAC,cAAc,qBAAqB,CAAC,8KAA8K,WAAW,CAAC,AAAsC,wLAAwK,qBAAqB,CAAC,wDAAwD,uBAAuB,CAAC,yCAAyC,wBAAwB,CAAC,AAAqD,oVAAwT,wBAAwB,CAAC,4LAA4L,wBAAwB,CAAC,oUAAoU,wBAAwB,CAAC,iMAAiM,wBAAwB,CAAC,gSAAgS,wBAAwB,CAAC,kLAAkL,wBAAwB,CAAC,oUAAoU,wBAAwB,CAAC,iMAAiM,wBAAwB,CAAC,wTAAwT,wBAAwB,CAAC,4LAA4L,wBAAwB,CAAC,kBAAkB,gBAAgB,eAAe,CAAC,oCAAoC,kBAAkB,WAAW,mBAAmB,kBAAkB,4CAA4C,qBAAqB,CAAC,yBAAyB,eAAe,CAAC,8NAA8N,kBAAkB,CAAC,kCAAkC,QAAQ,CAAC,4VAA4V,aAAa,CAAC,sVAAsV,cAAc,CAAC,oOAAoO,eAAe,CAAC,CAAC,cAAc,eAAe,YAAY,aAAa,CAAC,iBAAiB,cAAc,kBAAkB,gBAAgB,CAAC,gBAAgB,WAAW,eAAe,mBAAmB,qBAAqB,CAAC,wKAAwK,YAAY,uBAAuB,mBAAmB,yBAAyB,CAAC,4BAA4B,sBAAsB,4BAA4B,CAAC,0SAA0S,YAAY,CAAC,4BAA4B,yBAAyB,CAAC,uBAAuB,qBAAqB,CAAC,wKAAwK,qBAAqB,CAAC,wDAAwD,uBAAuB,CAAC,0CAA0C,wBAAwB,CAAC,+BAA+B,wBAAwB,CAAC,oBAAoB,gBAAiB,iBAAiB,kBAAkB,CAAC,kBAAkB,qBAAqB,eAAe,CAAC,iCAAiC,oBAAoB,CAAC,mCAAmC,oBAAoB,CAAC,gBAAgB,eAAe,CAAC,4BAA4B,qBAAsB,CAAC,uBAAuB,WAAY,iBAAiB,cAAc,CAAC,2BAA2B,eAAe,YAAY,aAAa,CAAC,8BAA8B,cAAc,kBAAkB,gBAAgB,CAAC,6BAA6B,WAAW,eAAe,mBAAmB,qBAAqB,CAAC,sPAAsP,YAAY,uBAAuB,mBAAmB,yBAAyB,CAAC,yCAAyC,sBAAsB,4BAA4B,CAAC,wXAAwX,YAAY,CAAC,yCAAyC,yBAAyB,CAAC,oCAAoC,qBAAqB,CAAC,sPAAsP,qBAAqB,CAAC,kFAAkF,uBAAuB,CAAC,uDAAuD,wBAAwB,CAAC,4CAA4C,wBAAwB,CAAC\",\"file\":\"markdown-editor.vue\",\"sourcesContent\":[\"table{background-color:transparent}table col[class*=\\\"col-\\\"]{position:static;display:table-column;float:none}table td[class*=\\\"col-\\\"],table th[class*=\\\"col-\\\"]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.markdown img{max-width:100%;margin:auto;display:block}.markdown img+em{display:block;text-align:center;margin:.3em .1em}.markdown table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.markdown table>thead>tr>th,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>tbody>tr>td,.markdown table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.markdown table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.markdown table>caption+thead>tr:first-child>th,.markdown table>colgroup+thead>tr:first-child>th,.markdown table>thead:first-child>tr:first-child>th,.markdown table>caption+thead>tr:first-child>td,.markdown table>colgroup+thead>tr:first-child>td,.markdown table>thead:first-child>tr:first-child>td{border-top:0}.markdown table>tbody+tbody{border-top:2px solid #ddd}.markdown table .table{background-color:#fff}.markdown table>thead>tr>th,.markdown table>tbody>tr>th,.markdown table>tfoot>tr>th,.markdown table>thead>tr>td,.markdown table>tbody>tr>td,.markdown table>tfoot>tr>td{border:1px solid #ddd}.markdown table>thead>tr>th,.markdown table>thead>tr>td{border-bottom-width:2px}.markdown table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.markdown table>tbody>tr:hover{background-color:#f5f5f5}.md-editor>textarea{background:white;padding:6px 12px;border-bottom:none}.md-editor.active{border-color:#3c8dbc;box-shadow:none}.form-group.has-error .md-editor{border-color:#dd4b39}.form-group.has-success .md-editor{border-color:#00a65a}.md-editor .btn{border-radius:0}.md-editor .btn.btn-default{background-color:white}.md-editor .md-preview{color:black;padding:6px 12px;max-width:100%}.md-editor .md-preview img{max-width:100%;margin:auto;display:block}.md-editor .md-preview img+em{display:block;text-align:center;margin:.3em .1em}.md-editor .md-preview table{width:100%;max-width:100%;margin-bottom:20px;border:1px solid #ddd}.md-editor .md-preview table>thead>tr>th,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.md-editor .md-preview table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.md-editor .md-preview table>caption+thead>tr:first-child>th,.md-editor .md-preview table>colgroup+thead>tr:first-child>th,.md-editor .md-preview table>thead:first-child>tr:first-child>th,.md-editor .md-preview table>caption+thead>tr:first-child>td,.md-editor .md-preview table>colgroup+thead>tr:first-child>td,.md-editor .md-preview table>thead:first-child>tr:first-child>td{border-top:0}.md-editor .md-preview table>tbody+tbody{border-top:2px solid #ddd}.md-editor .md-preview table .table{background-color:#fff}.md-editor .md-preview table>thead>tr>th,.md-editor .md-preview table>tbody>tr>th,.md-editor .md-preview table>tfoot>tr>th,.md-editor .md-preview table>thead>tr>td,.md-editor .md-preview table>tbody>tr>td,.md-editor .md-preview table>tfoot>tr>td{border:1px solid #ddd}.md-editor .md-preview table>thead>tr>th,.md-editor .md-preview table>thead>tr>td{border-bottom-width:2px}.md-editor .md-preview table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.md-editor .md-preview table>tbody>tr:hover{background-color:#f5f5f5}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/markdown-editor.vue\n ** module id = 1062\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <div class=calendar :class=\\\"[ 'view' ]\\\"> <div class=calendar-{{view}}> <nav> <button class=prev @click.prevent=previous :disabled=previousDisabled> <span class=\\\"fa fa-chevron-left\\\"></span> </button> <button class=switch @click.prevent=zoomOut>{{ rangeDisplay }}</button> <button class=next @click.prevent=next :disabled=nextDisabled> <span class=\\\"fa fa-chevron-right\\\"></span> </button> </nav> <main v-if=\\\"view == 'days'\\\" class=days> <header> <span class=dow v-for=\\\"day in days\\\">{{ day }}</span> </header> <div v-for=\\\"week in monthDays(current)\\\"> <button v-for=\\\"day in week\\\" class=day :class=dayClasses(day) @click.prevent=pickDay(day) :disabled=isDisabled(day)> {{ day.date() }} </button> </div> </main> <main v-if=\\\"view == 'months'\\\" class=months> <button v-for=\\\"(idx, month) in months\\\" class=month @click.prevent=pickMonth(idx) :disabled=isMonthDisabled(idx)> {{ month }} </button> </main> <main v-if=\\\"view == 'years'\\\" class=years> <button v-for=\\\"year in yearsRange\\\" class=year @click.prevent=pickYear(year) :disabled=isYearDisabled(year)> {{ year }} </button> </main> <footer> <button @click.prevent=pickDay(today)>{{ _('Today') }}</button> <button @click.prevent=clear> <span class=\\\"fa fa-remove\\\"></span> {{ _('Clear') }} </button> </footer> </div> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/calendar.vue\n ** module id = 1063\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <div class=\\\"checkbox checkbox-form-field\\\"> <label :for=field.id :class=\\\"{ 'required': required }\\\"> <input type=checkbox :id=field.id :name=field.id :checked=value @input=onChange> {{ field.label }} </label> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/checkbox.vue\n ** module id = 1064\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <div class=\\\"input-group dropdown date-picker\\\" :class=\\\"{ 'open': picking }\\\" v-outside=onOutside> <span class=input-group-addon><span class=\\\"fa fa-calendar\\\"></span></span> <input type=text class=form-control v-el:input @focus=onFocus @input=\\\"onChange | debounce 500\\\" :placeholder=placeholder :required=required :value=\\\"value|dt dateFormat ''\\\" :readonly=readonly> <div class=\\\"dropdown-menu dropdown-menu-right\\\"> <calendar v-ref:calendar :selected=value></calendar> </div> <input v-if=serializable v-el:hidden type=hidden :name=field.id :value=\\\"value|dt ISO_FORMAT ''\\\"> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/date-picker.vue\n ** module id = 1065\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <input type=hidden :id=field.id :name=field.id :value=value :required=required> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/hidden-input.vue\n ** module id = 1066\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <textarea class=form-control :rows=\\\"field.rows || rows || 6\\\" :id=field.id :name=field.id :placeholder=placeholder :required=required :readonly=readonly @input=onChange>{{value || ''}}</textarea> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/markdown-editor.vue\n ** module id = 1067\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <input type=number class=form-control :id=field.id :name=field.id :placeholder=placeholder :required=required :readonly=readonly :value=value @input=onChange> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/number-input.vue\n ** module id = 1068\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <select class=form-control v-model=value :multiple=field.multiple :id=field.id :name=field.id :placeholder=placeholder :required=required :disabled=readonly @change=onChange> <optgroup v-for=\\\"(group, ids) in field.groups\\\" :label=group> <option v-for=\\\"option in options | extract group\\\" :value=option.value :selected=\\\"option.value == value\\\"> {{option.text || option.value}} </option> </optgroup> </select> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/select-input-group.vue\n ** module id = 1069\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <select class=form-control v-model=value :multiple=field.multiple :id=field.id :name=field.id :placeholder=placeholder :required=required :disabled=readonly @change=onChange> <option v-for=\\\"option in options | extract\\\" :value=option.value> {{option.text || option.value}} </option> </select> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/select-input.vue\n ** module id = 1070\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","module.exports = \" <input type=text class=form-control :id=field.id :name=field.id :placeholder=placeholder :required=required :readonly=readonly :value=value @input=onChange> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/text-input.vue\n ** module id = 1071\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./calendar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./calendar.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./calendar.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/calendar.vue\n ** module id = 1072\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./checkbox.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./checkbox.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./checkbox.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/checkbox.vue\n ** module id = 1073\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./date-picker.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./date-picker.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./date-picker.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/date-picker.vue\n ** module id = 1074\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./markdown-editor.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./markdown-editor.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./markdown-editor.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/markdown-editor.vue\n ** module id = 1075\n ** module chunks = 0 1 2 4 5 6 7 8 11 12 13 14 16 17 19 23 24 25 26 27 28 29 30\n **/","import API from 'api';\nimport {_} from 'i18n';\nimport {setattr, isObject, isString, findComponent, flattenObject} from 'utils';\nimport log from 'logger';\nimport moment from 'moment';\nimport $ from 'jquery-validation'; // Ensure jquery & jquery.validate plugin are both loaded\n\n// Remove warning for non-interpolated variables\nconst interpolation = {defaultVariables: {'O': '{O}', '1': '{1}', 'ISO': '{ISO}'}};\n\n// jQuery validate\n$.extend($.validator.messages, {\n required: _('valid-required'),\n remote: _('valid-remote'),\n email: _('valid-email'),\n url: _('valid-url'),\n date: _('valid-date'),\n dateISO: _('valid-date-iso', {interpolation: interpolation}),\n number: _('valid-number'),\n digits: _('valid-digits'),\n creditcard: _('valid-creditcard'),\n equalTo: _('valid-equal-to'),\n maxlength: $.validator.format(_('valid-maxlength', {interpolation: interpolation})),\n minlength: $.validator.format(_('valid-minlength', {interpolation: interpolation})),\n rangelength: $.validator.format(_('valid-range-length', {interpolation: interpolation})),\n range: $.validator.format(_('valid-range', {interpolation: interpolation})),\n max: $.validator.format(_('valid-max', {interpolation: interpolation})),\n min: $.validator.format(_('valid-min', {interpolation: interpolation}))\n});\n\n\n/**\n * Rule for depend dates, should be greater that param.\n */\n$.validator.addMethod('dateGreaterThan', function(value, element, param) {\n const start = moment(document.getElementById(param).value);\n return this.optional(element) || moment(value).isAfter(start);\n}, $.validator.format(_('Date should be after start date')));\n\n\nfunction empty_schema() {\n return {properties: {}, required: []};\n}\n\n/**\n * Input type which are text or formated text\n *\n * See: https://www.w3.org/TR/html5/forms.html#attr-input-type\n */\nconst TEXT_INPUTS = [\n 'color',\n 'date',\n 'datetime',\n 'datetime-local',\n 'email',\n 'hidden',\n 'month',\n 'number',\n 'range',\n 'search',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n\n/**\n * Form tags that should be considered as text\n */\nconst TEXT_TAGS = ['select', 'textarea'];\n\nexport default {\n name: 'base-form',\n props: {\n fields: Array,\n model: Object,\n defs: Object,\n readonly: {\n type: Boolean,\n default: false\n },\n fill: Boolean\n },\n events: {\n 'field:change': function(field, value) {\n this.$dispatch('form:change', this, field, value);\n return true; // Let the event continue its bubbling\n }\n },\n computed: {\n schema() {\n if (!this.fields || !(this.model || this.defs)) {\n return empty_schema();\n }\n const s = empty_schema();\n const schema = this.defs || this.model && this.model.__schema__ || empty_schema();\n\n this.fields.forEach((field) => {\n if (schema.hasOwnProperty('properties') && schema.properties.hasOwnProperty(field.id)) {\n s.properties[field.id] = schema.properties[field.id];\n if (schema.required && schema.required.indexOf(field.id) >= 0) {\n s.required.push(field.id);\n }\n return;\n }\n\n const properties = field.id.split('.');\n let currentSchema = schema;\n let required = true;\n let path = '';\n let prop;\n\n for (prop of properties) {\n path += path === '' ? prop : ('.' + prop);\n\n // Handle root level $ref\n if (currentSchema.hasOwnProperty('$ref')) {\n currentSchema = API.resolve(currentSchema.$ref);\n }\n\n if (!currentSchema.properties || !currentSchema.properties.hasOwnProperty(prop)) {\n log.warn(`Property \"${prop}\" not found in schema`);\n return;\n }\n\n required = (\n required\n && currentSchema.hasOwnProperty('required')\n && currentSchema.required.indexOf(prop) >= 0\n );\n\n if (required && s.required.indexOf(path) < 0) {\n s.required.push(path);\n }\n\n // Handle property level $ref\n if (currentSchema.properties[prop].hasOwnProperty('$ref')) {\n currentSchema = API.resolve(currentSchema.properties[prop].$ref);\n }\n }\n\n s.properties[field.id] = currentSchema.properties[prop];\n if (required && !field.id in s.required) {\n s.required.push(field.id);\n }\n });\n\n return s;\n },\n $form() {\n if (!this) return; // Prevent console noise on a non significant error\n return this.$refs.form || this.$els.form || this.$el;\n }\n },\n attached() {\n $(this.$form).validate({\n ignore: '',\n errorClass: 'help-block',\n highlight: this.highlight,\n unhighlight: this.unhighlight,\n success: this.success,\n showErrors: this.showErrors,\n errorPlacement() {},\n });\n this.$broadcast('form:ready');\n },\n beforeDestroy() {\n if (this.$form) {\n this.$broadcast('form:beforeDestroy');\n $(this.$form).data('validator', null);\n this.$broadcast('form:destroy');\n }\n },\n methods: {\n /**\n * Trigger a form validation\n */\n validate() {\n return $(this.$form).valid();\n },\n /**\n * Serialize Form into an Object\n *\n * @return {Object}\n */\n serialize() {\n if (!this.$form) return;\n const elements = this.$form.querySelectorAll('input,textarea,select');\n const out = {};\n\n Array.prototype.map.call(elements, function(el) {\n let value;\n if (el.tagName.toLowerCase() === 'select' && el.multiple) {\n value = [...el.options];\n value = value.filter(option => option.selected);\n value = value.map(option => option.value);\n } else if (TEXT_TAGS.includes(el.tagName.toLowerCase()) || TEXT_INPUTS.includes(el.type.toLowerCase())) {\n value = el.value || null;\n } else if (el.type === 'checkbox') {\n value = el.checked;\n } else {\n value = el.value;\n }\n return {name: el.name, value: value};\n }).forEach(function(item) {\n setattr(out, item.name, item.value);\n });\n\n // Filter out empty optional objects\n // TODO: handle recursion\n for (const prop in out) {\n if (isObject(out[prop]) && this.schema.required.indexOf(prop) < 0) {\n let falsy = true;\n for (const attr in out[prop]) {\n if (out[prop].hasOwnProperty(attr)) {\n falsy &= !out[prop][attr];\n }\n }\n if (falsy) {\n delete out[prop];\n }\n }\n }\n\n return out;\n },\n on_error(response) {\n const messages = [];\n\n // Errors occuring before submission are simple strings\n if (isString(response)) {\n log.error(response); // Technical and non translatable, logged for better handling later\n // TODO: Optional Sentry handling\n return;\n }\n\n // Display the error identifier if present\n if (response.headers && 'X-Sentry-ID' in response.headers) {\n messages.push(\n this._('The error identifier is {id}', {id: response.headers['X-Sentry-ID']})\n );\n }\n\n if ('data' in response) {\n let data = {};\n try {\n data = JSON.parse(response.data);\n } catch (e) {\n log.warn('Parsing error:', e);\n // TODO: Optional Sentry handling\n }\n\n if ('errors' in data) {\n this.fill_errors(data.errors);\n return; // Form errors does not need to be notified\n } else if ('message' in data) {\n messages.push(data.message);\n }\n }\n\n if (!messages.length) {\n messages.push(this._('An unkown error occured'));\n }\n\n this.$dispatch('notify', {\n type: 'error',\n icon: 'exclamation-triangle',\n title: this._('An error occured'),\n details: messages.join('\\n'),\n });\n },\n fill_errors(errors) {\n Object.entries(flattenObject(errors)).forEach(([field, errs]) => {\n const el = this.$form.querySelector(`[name=\"${field}\"]`);\n const $field = this.findField(el);\n $field.errors = errs;\n $field.success = false;\n });\n },\n highlight(element) {\n this.findField(element).success = false;\n },\n unhighlight(element) {\n this.findField(element).errors = [];\n },\n /**\n * Inject jQuery.Validation errors into their fields\n *\n * See: https://jqueryvalidation.org/category/plugin/#showerrors\n */\n showErrors(errorMap, errorList) {\n errorList.forEach(error => {\n this.findField(error.element).errors = [error.message];\n });\n $(this.$form).data('validator').defaultShowErrors();\n },\n /**\n * Mark a field as `success`\n */\n success(label, el) {\n this.findField(el).success = true;\n },\n /**\n * Find the form field containing a given DOM field\n *\n * @param {Element} el The DOM element to match\n */\n findField(el) {\n let $component = findComponent(this, el);\n while (!$component.isField) {\n $component = $component.$parent;\n }\n return $component;\n }\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./js/components/form/base-form.js\n **/","/*!\n * jQuery Validation Plugin v1.20.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2023 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Abort any pending Ajax request from a previous call to this method.\n\t\t\tthis.abortRequest( element );\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass );\n\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\telementAjaxPort: function( element ) {\n\t\t\treturn \"validate\" + element.name;\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tabortRequest: function( element ) {\n\t\t\tvar port;\n\n\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t$.ajaxAbort( port );\n\n\t\t\t\tthis.pendingRequest--;\n\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: this.elementAjaxPort( element ),\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// $.ajaxAbort( port );\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\n\n// Abort the previous request without sending a new one\n$.ajaxAbort = function( port ) {\n\tif ( pendingRequests[ port ] ) {\n\t\tpendingRequests[ port ].abort();\n\t\tdelete pendingRequests[ port ];\n\t}\n};\nreturn $;\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/jquery-validation/dist/jquery.validate.js\n ** module id = 1077\n ** module chunks = 0 1 2 4 5 7 12 13 14 16 17 23 24 25 26 27 28 29 30 33\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-field.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./vertical-field.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./vertical-field.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/vertical-field.vue\n ** module id = 1087\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","<style lang=\"less\">\n.form-control {\n color: #555;\n}\n\n.vertical-field {\n .form-help {\n float: right;\n clear: both;\n }\n}\n</style>\n\n<template>\n <div class=\"vertical-field\" :class=\"{\n 'form-group': !is_bool && !is_hidden,\n 'has-error': errors.length,\n 'has-success': success,\n }\">\n <span v-if=\"!is_hidden\" v-show=\"description\" class=\"form-help\"\n v-popover=\"description\" popover-trigger=\"hover\" popover-placement=\"left\">\n </span>\n <label :for=\"field.id\" :class=\"{ 'required': required }\"\n v-if=\"!is_hidden && !is_bool\">\n {{ field.label }}\n </label>\n <component :is=\"widget\"\n :field=\"field\" :value=\"value\" :model=\"model\"\n :description=\"description\" :property=\"property\"\n :placeholder=\"placeholder\" :required=\"required\"\n :readonly=\"readonly\">\n </component>\n <label :for=\"field.id\" class=\"help-block\"\n v-for=\"error in errors\" track-by=\"$index\">{{error}}</label>\n </div>\n</template>\n\n<script>\nimport {BaseField} from 'components/form/base-field';\n\nexport default {\n name: 'vertical-form-field',\n mixins: [BaseField],\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** vertical-field.vue?2ceb8c47\n **/","<style lang=\"less\">\n.form-control {\n color: #555;\n}\n</style>\n\n<template>\n <form role=\"form\" v-el:form>\n <field v-for=\"field in fields\" :field=\"field\"\n :schema=\"schema\" :model=\"model\">\n </field>\n </form>\n</template>\n\n<script>\nimport BaseForm from 'components/form/base-form';\nimport Field from 'components/form/vertical-field.vue';\n\nexport default {\n name: 'vertical-form',\n mixins: [BaseForm],\n components: {Field}\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** vertical-form.vue?6a57c1e4\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".form-control{color:#555}.vertical-field .form-help{float:right;clear:both}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/vertical-field.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,UAAU,CAAC,2BAA2B,YAAY,UAAU,CAAC\",\"file\":\"vertical-field.vue\",\"sourcesContent\":[\".form-control{color:#555}.vertical-field .form-help{float:right;clear:both}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/vertical-field.vue\n ** module id = 1090\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".form-control{color:#555}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form/vertical-form.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,UAAU,CAAC\",\"file\":\"vertical-form.vue\",\"sourcesContent\":[\".form-control{color:#555}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/vertical-form.vue\n ** module id = 1091\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","module.exports = \" <div class=vertical-field :class=\\\"{\\n 'form-group': !is_bool && !is_hidden,\\n 'has-error': errors.length,\\n 'has-success': success,\\n }\\\"> <span v-if=!is_hidden v-show=description class=form-help v-popover=description popover-trigger=hover popover-placement=left> </span> <label :for=field.id :class=\\\"{ 'required': required }\\\" v-if=\\\"!is_hidden && !is_bool\\\"> {{ field.label }} </label> <component :is=widget :field=field :value=value :model=model :description=description :property=property :placeholder=placeholder :required=required :readonly=readonly> </component> <label :for=field.id class=help-block v-for=\\\"error in errors\\\" track-by=$index>{{error}}</label> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/vertical-field.vue\n ** module id = 1092\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","module.exports = \" <form role=form v-el:form> <field v-for=\\\"field in fields\\\" :field=field :schema=schema :model=model> </field> </form> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form/vertical-form.vue\n ** module id = 1093\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-form.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./vertical-form.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./vertical-form.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form/vertical-form.vue\n ** module id = 1094\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-field.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-field.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-field.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/vertical-field.vue\n ** module id = 1095\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-form.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js?sourceMap!../../../node_modules/vue-loader/lib/style-rewriter.js!../../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./vertical-form.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form/vertical-form.vue\n ** module id = 1096\n ** module chunks = 0 1 7 12 13 16 17 23 24 25 26 27 28 29 33\n **/","<template>\n<div class=\"content-wrapper form-layout\">\n <notification-zone></notification-zone>\n <section class=\"content\">\n <box :title=\"title\" :icon=\"icon\" boxclass=\"box-solid\" :footer=\"true\"\n :loading=\"model ? model.loading : true\">\n <slot></slot>\n <footer class=\"form-actions\" slot=\"footer\">\n <div class=\"btn-toolbar left-actions\">\n <button class=\"btn btn-warning\" v-if=\"cancel\"\n @click.prevent=\"cancel\">{{ _('Cancel') }}</button>\n <slot name=\"left-actions\"></slot>\n </div>\n <div class=\"btn-toolbar right-actions\">\n <button class=\"btn btn-primary\" v-if=\"save\" @click.prevent=\"save\">\n {{ _('Save') }}\n </button>\n <slot name=\"right-actions\"></slot>\n </div>\n </footer>\n </box>\n <slot name=\"extras\"></slot>\n </section>\n</div>\n</template>\n\n<script>\nimport {Model} from 'models/base';\nimport NotificationZone from 'components/notification-zone.vue';\nimport Box from 'components/containers/box.vue';\n\nexport default {\n props: {\n title: String,\n icon: String,\n model: Model,\n save: Function,\n cancel: Function\n },\n components: {Box, NotificationZone}\n};\n</script>\n\n<style lang=\"less\">\n.form-layout {\n .form-actions {\n display: flex;\n\n .btn-toolbar {\n flex: 1 0 50%;\n display: flex;\n > .btn {\n float: none;\n }\n }\n\n .left-actions {\n justify-content: flex-start;\n }\n\n .right-actions {\n justify-content: flex-end;\n }\n }\n}\n</style>\n\n\n\n/** WEBPACK FOOTER **\n ** form-layout.vue?822b9aa8\n **/","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".form-layout .form-actions{display:flex}.form-layout .form-actions .btn-toolbar{flex:1 0 50%;display:flex}.form-layout .form-actions .btn-toolbar>.btn{float:none}.form-layout .form-actions .left-actions{justify-content:flex-start}.form-layout .form-actions .right-actions{justify-content:flex-end}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/form-layout.vue\"],\"names\":[],\"mappings\":\"AAAA,2BAA2B,YAAY,CAAC,wCAAwC,aAAa,YAAY,CAAC,6CAA6C,UAAU,CAAC,yCAAyC,0BAA0B,CAAC,0CAA0C,wBAAwB,CAAC\",\"file\":\"form-layout.vue\",\"sourcesContent\":[\".form-layout .form-actions{display:flex}.form-layout .form-actions .btn-toolbar{flex:1 0 50%;display:flex}.form-layout .form-actions .btn-toolbar>.btn{float:none}.form-layout .form-actions .left-actions{justify-content:flex-start}.form-layout .form-actions .right-actions{justify-content:flex-end}\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form-layout.vue\n ** module id = 1203\n ** module chunks = 7 23 24 25 26 27 28 29\n **/","module.exports = \" <div class=\\\"content-wrapper form-layout\\\"> <notification-zone></notification-zone> <section class=content> <box :title=title :icon=icon boxclass=box-solid :footer=true :loading=\\\"model ? model.loading : true\\\"> <slot></slot> <footer class=form-actions slot=footer> <div class=\\\"btn-toolbar left-actions\\\"> <button class=\\\"btn btn-warning\\\" v-if=cancel @click.prevent=cancel>{{ _('Cancel') }}</button> <slot name=left-actions></slot> </div> <div class=\\\"btn-toolbar right-actions\\\"> <button class=\\\"btn btn-primary\\\" v-if=save @click.prevent=save> {{ _('Save') }} </button> <slot name=right-actions></slot> </div> </footer> </box> <slot name=extras></slot> </section> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/form-layout.vue\n ** module id = 1208\n ** module chunks = 7 23 24 25 26 27 28 29\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!less?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./form-layout.vue\")\n__vue_script__ = require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./form-layout.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./form-layout.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/form-layout.vue\n ** module id = 1211\n ** module chunks = 7 23 24 25 26 27 28 29\n **/","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./form-layout.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../../node_modules/vue-style-loader/addStyles.js\")(content, {\"sourceMap\":true});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./form-layout.vue\", function() {\n\t\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js?sourceMap!../../node_modules/vue-loader/lib/style-rewriter.js!../../node_modules/less-loader/index.js?sourceMap=source-map-less-inline!../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./form-layout.vue\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-style-loader?sourceMap!./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/less-loader?sourceMap=source-map-less-inline!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/form-layout.vue\n ** module id = 1215\n ** module chunks = 7 23 24 25 26 27 28 29\n **/","<template>\n<div>\n <vertical-form v-ref:form :fields=\"fields\" :model=\"reuse\"></vertical-form>\n</div>\n</template>\n\n<script>\nimport Reuse from 'models/reuse';\nimport reuse_types from 'models/reuse_types';\nimport reuse_topics from 'models/reuse_topics';\nimport VerticalForm from 'components/form/vertical-form.vue';\n\nexport default {\n components: {VerticalForm},\n props: {\n reuse: {\n type: Object,\n default: function() {\n return new Reuse();\n }\n },\n },\n data() {\n return {\n fields: [{\n id: 'title',\n label: this._('Title')\n }, {\n id: 'url',\n label: this._('URL'),\n widget: 'url-field',\n }, {\n id: 'type',\n label: this._('Type'),\n widget: 'select-input',\n values: reuse_types,\n map(item) {\n return {value: item.id, text: item.label};\n }\n }, {\n id: 'topic',\n label: this._('Topic'),\n widget: 'select-input',\n values: reuse_topics,\n map(item) {\n return {value: item.id, text: item.label};\n }\n }, {\n id: 'description',\n label: this._('Description'),\n }, {\n id: 'tags',\n label: this._('Tags'),\n widget: 'tag-completer'\n }, {\n id: 'private',\n label: this._('Private')\n }]\n };\n },\n methods: {\n serialize() {\n return this.$refs.form.serialize();\n },\n validate() {\n return this.$refs.form.validate();\n },\n on_error(response) {\n return this.$refs.form.on_error(response);\n },\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** form.vue?2f5db87c\n **/","module.exports = \" <div> <vertical-form v-ref:form :fields=fields :model=reuse></vertical-form> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/reuse/form.vue\n ** module id = 1364\n ** module chunks = 12 28\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./form.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./form.vue\")\nmodule.exports = __vue_script__ || {}\nif (module.exports.__esModule) module.exports = module.exports.default\nif (__vue_template__) {\n(typeof module.exports === \"function\" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/reuse/form.vue\n ** module id = 1381\n ** module chunks = 12 28\n **/","<template>\n<div>\n <form-layout icon=\"recycle\" :title=\"title\" :save=\"save\" :cancel=\"cancel\" footer=\"true\" :model=\"reuse\">\n <reuse-form v-ref:form :reuse=\"reuse\"></reuse-form>\n </form-layout>\n</div>\n</template>\n\n<script>\nimport ReuseForm from 'components/reuse/form.vue';\nimport Reuse from 'models/reuse';\nimport FormLayout from 'components/form-layout.vue';\n\nexport default {\n components: {FormLayout, ReuseForm},\n data() {\n return {\n reuse: new Reuse(),\n };\n },\n computed: {\n title() {\n if (this.reuse.id) {\n return this._('Edit reuse \"{title}\"', {\n title: this.reuse.title\n });\n }\n }\n },\n methods: {\n save() {\n const form = this.$refs.form;\n if (form.validate()) {\n this.reuse.update(form.serialize(), form.on_error);\n }\n },\n on_success() {\n this.$dispatch('notify', {\n autoclose: true,\n title: this._('Changes saved'),\n details: this._('Your reuse has been updated.')\n });\n this.$go({name: 'reuse', params: {oid: this.reuse.id}});\n },\n cancel() {\n this.$go({name: 'reuse', params: {oid: this.reuse.id}});\n }\n },\n route: {\n data() {\n if (this.$route.params.oid !== this.reuse.id) {\n this.$scrollTo(this.$el);\n this.reuse.fetch(this.$route.params.oid);\n this.reuse.$once('updated', () => {\n this.updHandler = this.reuse.$once('updated', this.on_success);\n });\n }\n },\n deactivate() {\n if (this.updHandler) {\n this.updHandler.remove();\n this.updHandler = undefined;\n }\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** reuse-edit.vue?0bd2d208\n **/","module.exports = \" <div> <form-layout icon=recycle :title=title :save=save :cancel=cancel footer=true :model=reuse> <reuse-form v-ref:form :reuse=reuse></reuse-form> </form-layout> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/views/reuse-edit.vue\n ** module id = 1576\n ** module chunks = 28\n **/"],"sourceRoot":""}
|