udata 8.0.2.dev29304__py2.py3-none-any.whl → 9.1.0__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.

Files changed (86) hide show
  1. udata/__init__.py +1 -1
  2. udata/api/__init__.py +2 -0
  3. udata/api/commands.py +0 -2
  4. udata/api_fields.py +41 -3
  5. udata/commands/db.py +88 -48
  6. udata/core/dataservices/factories.py +33 -0
  7. udata/core/dataservices/models.py +42 -4
  8. udata/core/dataservices/rdf.py +106 -0
  9. udata/core/dataset/csv.py +8 -1
  10. udata/core/dataset/models.py +1 -2
  11. udata/core/dataset/rdf.py +37 -128
  12. udata/core/discussions/models.py +20 -0
  13. udata/core/organization/csv.py +5 -3
  14. udata/core/reports/__init__.py +0 -0
  15. udata/core/reports/api.py +44 -0
  16. udata/core/reports/constants.py +30 -0
  17. udata/core/reports/models.py +58 -0
  18. udata/core/reuse/csv.py +3 -0
  19. udata/core/site/api.py +33 -2
  20. udata/core/site/rdf.py +6 -1
  21. udata/core/spam/models.py +6 -0
  22. udata/core/topic/models.py +3 -2
  23. udata/core/topic/parsers.py +3 -2
  24. udata/core/user/apiv2.py +28 -0
  25. udata/db/__init__.py +0 -0
  26. udata/db/tasks.py +6 -0
  27. udata/features/notifications/__init__.py +0 -1
  28. udata/forms/fields.py +2 -2
  29. udata/harvest/api.py +19 -1
  30. udata/harvest/backends/base.py +118 -10
  31. udata/harvest/backends/dcat.py +28 -7
  32. udata/harvest/models.py +6 -0
  33. udata/harvest/tests/dcat/bnodes.xml +13 -2
  34. udata/harvest/tests/test_dcat_backend.py +21 -0
  35. udata/migrations/2024-06-11-fix-reuse-datasets-references.py +35 -0
  36. udata/models/__init__.py +1 -0
  37. udata/rdf.py +113 -2
  38. udata/routing.py +1 -1
  39. udata/settings.py +3 -1
  40. udata/static/admin.js +17 -17
  41. udata/static/admin.js.map +1 -1
  42. udata/static/chunks/{18.ad41fb75ac4226e1f3ce.js → 18.1922fd0b2b7fad122991.js} +3 -3
  43. udata/static/chunks/18.1922fd0b2b7fad122991.js.map +1 -0
  44. udata/static/chunks/{7.11ac4de064ae59691d49.js → 7.e2106342e94ee09393b1.js} +2 -2
  45. udata/static/chunks/7.e2106342e94ee09393b1.js.map +1 -0
  46. udata/static/common.js +1 -1
  47. udata/static/common.js.map +1 -1
  48. udata/storage/s3.py +3 -3
  49. udata/tasks.py +1 -0
  50. udata/tests/api/test_dataservices_api.py +26 -2
  51. udata/tests/api/test_datasets_api.py +1 -1
  52. udata/tests/api/test_reports_api.py +87 -0
  53. udata/tests/apiv2/test_me_api.py +40 -0
  54. udata/tests/dataset/test_dataset_rdf.py +19 -1
  55. udata/tests/frontend/test_auth.py +1 -4
  56. udata/tests/organization/test_csv_adapter.py +0 -1
  57. udata/tests/plugin.py +2 -0
  58. udata/tests/site/test_site_api.py +0 -1
  59. udata/tests/site/test_site_rdf.py +66 -0
  60. udata/tests/test_discussions.py +24 -34
  61. udata/tests/test_model.py +3 -2
  62. udata/tests/test_utils.py +1 -1
  63. udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
  64. udata/translations/ar/LC_MESSAGES/udata.po +128 -64
  65. udata/translations/de/LC_MESSAGES/udata.mo +0 -0
  66. udata/translations/de/LC_MESSAGES/udata.po +128 -64
  67. udata/translations/es/LC_MESSAGES/udata.mo +0 -0
  68. udata/translations/es/LC_MESSAGES/udata.po +128 -64
  69. udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
  70. udata/translations/fr/LC_MESSAGES/udata.po +128 -64
  71. udata/translations/it/LC_MESSAGES/udata.mo +0 -0
  72. udata/translations/it/LC_MESSAGES/udata.po +128 -64
  73. udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
  74. udata/translations/pt/LC_MESSAGES/udata.po +128 -64
  75. udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
  76. udata/translations/sr/LC_MESSAGES/udata.po +128 -64
  77. udata/translations/udata.pot +129 -65
  78. udata/uris.py +14 -13
  79. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/METADATA +26 -7
  80. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/RECORD +84 -72
  81. udata/static/chunks/18.ad41fb75ac4226e1f3ce.js.map +0 -1
  82. udata/static/chunks/7.11ac4de064ae59691d49.js.map +0 -1
  83. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/LICENSE +0 -0
  84. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/WHEEL +0 -0
  85. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/entry_points.txt +0 -0
  86. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/top_level.txt +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///chunks/7.11ac4de064ae59691d49.js","webpack:///./js/views/harvester-edit.vue","webpack:///./js/components/form/base-field.js?d201******","webpack:///./js/components/containers/box.vue?d551*****","webpack:///./js/components/alert.vue?21f3*****","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/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/datatable/widget.vue?f92e***","webpack:///./js/components/form/date-picker.vue","webpack:///./js/components/form/select-input.vue?1a51******","webpack:///./js/components/calendar.vue","webpack:///./js/components/form/checkbox.vue","webpack:///./js/components/form/hidden-input.vue?6d3c******","webpack:///./js/components/form/markdown-editor.vue","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:///./js/components/datatable/cells ^\\.\\/.*\\.vue$?4219***","webpack:///cell.vue?d035***","webpack:///avatar.vue?c37c***","webpack:///date.vue?3854***","webpack:///datetime.vue?c33b***","webpack:///deletable-text.vue?a8ff***","webpack:///label.vue?5957***","webpack:///metric.vue?0a99***","webpack:///playpause.vue?0e88***","webpack:///progress-bars.vue?555e***","webpack:///since.vue?a8fe***","webpack:///text.vue?d4f3***","webpack:///thumbnail.vue?2dae***","webpack:///timeago.vue?d68a***","webpack:///visibility.vue?fdc6***","webpack:///row.vue?57c3***","webpack:///table.vue?0b94***","webpack:///widget.vue?5690***","webpack:///pagination.vue?e63e***","webpack:///./js/components/datatable/cell.vue?853d***","webpack:///./js/components/datatable/cells/avatar.vue?ced5***","webpack:///./js/components/datatable/cells/thumbnail.vue?7768***","webpack:///./js/components/datatable/table.vue?8e25***","webpack:///./js/components/datatable/widget.vue?2a5a***","webpack:///./js/components/datatable/cells/label.vue?49f4***","webpack:///./js/components/datatable/cells/avatar.vue?5717***","webpack:///./js/components/datatable/cells/date.vue?0f55***","webpack:///./js/components/datatable/cells/datetime.vue?5736***","webpack:///./js/components/datatable/cells/deletable-text.vue?b6eb***","webpack:///./js/components/datatable/cells/label.vue?ed75***","webpack:///./js/components/datatable/cells/metric.vue?095a***","webpack:///./js/components/datatable/cells/playpause.vue?449a***","webpack:///./js/components/datatable/cells/progress-bars.vue?d395***","webpack:///./js/components/datatable/cells/since.vue?9373***","webpack:///./js/components/datatable/cells/text.vue?3881***","webpack:///./js/components/datatable/cells/thumbnail.vue?e422***","webpack:///./js/components/datatable/cells/timeago.vue?a3ca***","webpack:///./js/components/datatable/cells/visibility.vue?dd4e***","webpack:///./js/components/datatable/row.vue?a4b9***","webpack:///./js/components/datatable/table.vue?417e***","webpack:///./js/components/datatable/widget.vue?b0a6***","webpack:///./js/components/pagination.vue?9466***","webpack:///./js/components/datatable/cell.vue?6f66***","webpack:///./js/components/datatable/cells/avatar.vue?6f3c***","webpack:///./js/components/datatable/cells/date.vue?84fc**","webpack:///./js/components/datatable/cells/datetime.vue?d4ab**","webpack:///./js/components/datatable/cells/deletable-text.vue?6dfc**","webpack:///./js/components/datatable/cells/label.vue?70c4***","webpack:///./js/components/datatable/cells/metric.vue?59c1**","webpack:///./js/components/datatable/cells/playpause.vue?7bf6**","webpack:///./js/components/datatable/cells/progress-bars.vue?b6bb**","webpack:///./js/components/datatable/cells/since.vue?53ce**","webpack:///./js/components/datatable/cells/text.vue?5a9c**","webpack:///./js/components/datatable/cells/thumbnail.vue?caac***","webpack:///./js/components/datatable/cells/timeago.vue?e069**","webpack:///./js/components/datatable/cells/visibility.vue?e65a**","webpack:///./js/components/datatable/row.vue?b962**","webpack:///./js/components/datatable/table.vue?4ecd***","webpack:///./js/components/pagination.vue?6b4a**","webpack:///./js/components/datatable/cell.vue?e440***","webpack:///./js/components/datatable/cells/avatar.vue?c988***","webpack:///./js/components/datatable/cells/thumbnail.vue?b10d***","webpack:///./js/components/datatable/table.vue?13af***","webpack:///./js/components/datatable/widget.vue?982b***","webpack:///./js/components/datatable/cells/label.vue?0f1c***","webpack:///./js/models/harvest/source.js?8bf0","webpack:///./js/models/harvest/job.js?25ff","webpack:///form-layout.vue","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:///./js/models/harvest/backends.js","webpack:///./js/models/harvest/item.js","webpack:///./js/components/harvest/job.vue","webpack:///config-form.vue","webpack:///feature-field.vue","webpack:///filter-field.vue","webpack:///form.vue?8bdc","webpack:///item.vue","webpack:///job.vue","webpack:///preview.vue","webpack:///./js/components/harvest/config-form.vue?6588","webpack:///./js/components/harvest/feature-field.vue?5e13","webpack:///./js/components/harvest/filter-field.vue?e98a","webpack:///./js/components/harvest/item.vue?2ebc","webpack:///./js/components/harvest/config-form.vue?3d58","webpack:///./js/components/harvest/feature-field.vue?9d3d","webpack:///./js/components/harvest/filter-field.vue?1af3","webpack:///./js/components/harvest/form.vue?1bb5","webpack:///./js/components/harvest/item.vue?75fa","webpack:///./js/components/harvest/job.vue?b102","webpack:///./js/components/harvest/preview.vue?be19","webpack:///./js/components/harvest/config-form.vue","webpack:///./js/components/harvest/feature-field.vue","webpack:///./js/components/harvest/filter-field.vue","webpack:///./js/components/harvest/form.vue","webpack:///./js/components/harvest/item.vue","webpack:///./js/components/harvest/preview.vue","webpack:///./js/components/harvest/config-form.vue?2db6","webpack:///./js/components/harvest/feature-field.vue?1f5f","webpack:///./js/components/harvest/filter-field.vue?fa1f","webpack:///./js/components/harvest/item.vue?1192","webpack:///harvester-edit.vue","webpack:///./js/views/harvester-edit.vue?eea8"],"names":["webpackJsonp","885","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","988","990","992","TRANSITION_DURATION","AUTOCLOSE_DELAY","closing","alert","closable","classes","alert-dismissable","in","details","replace","close","_this","setTimeout","ready","_this2","autoclose","993","title","icon","boxclass","bodyclass","footerclass","loading","footer","994","_alert","_alert2","Alert","995","push","version","sources","names","mappings","file","sourcesContent","sourceRoot","996","997","998","999","1000","1001","content","sourceMap","locals","1002","1034","_from","_from2","arr","Array","isArray","i","arr2","length","1035","from","1036","1037","1038","1039","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","1098","webpackContext","req","webpackContextResolve","./avatar.vue","./date.vue","./datetime.vue","./deletable-text.vue","./label.vue","./metric.vue","./playpause.vue","./progress-bars.vue","./since.vue","./text.vue","./thumbnail.vue","./timeago.vue","./visibility.vue","keys","1101","isFunction","1102","classList","1103","1104","1105","1106","label_func","color","label_type","1107","1108","1109","progress_class","1110","1111","1112","_placeholders","_placeholders2","getFor","generic","1113","1114","VISIBILITIES","deleted","archived","private","public","status","1115","_cell","_cell2","created","load_cell","item_click","1116","_row","_row2","Row","p","track","serverside","trackBy","datatable:item:click","header_click","sort_for","classes_for","align","sort_classes_for","sorted","reversed","thwidth","1117","_box","_box2","_table","_table2","_pagination","_pagination2","Box","Datatable","PaginationWidget","search_query","has_footer_children","footer_container","children","show_footer","pages","boxclasses","tint","empty","downloads","search","query","1118","nb","page","1135","1136","1137","1138","1139","1140","1143","1144","1145","1146","1147","1148","1149","1150","1151","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1187","HarvestSource","VALIDATION_STATUS_I18N","VALIDATION_STATUS_CLASSES","_getPrototypeOf","_getPrototypeOf2","_classCallCheck2","_classCallCheck3","_createClass2","_createClass3","_possibleConstructorReturn2","_possibleConstructorReturn3","_inherits2","_inherits3","accepted","refused","_Model","__proto__","ident","slug","$api","on_fetched","update","payload","Model","1199","HarvestJob","STATUS_I18N","STATUS_CLASSES","initializing","initialized","processing","done-errors","failed","1200","_notificationZone","_notificationZone2","save","Function","cancel","NotificationZone","1204","1209","1212","1216","1300","harvest_backends","HarvestBackends","_List","fetch","1302","HarvestItem","started","skipped","1322","1330","_featureField","_featureField2","_filterField","_filterField2","FeatureField","FilterField","featuresDescription","filtersDescription","filter:delete","config","splice","backend","hasFeatures","features","hasFilters","addFilter","$set","reduce","vm","1331","feature","cache","get","1332","TYPES","choices","t","hasData","isDefined","c","onDelete","1333","_assign","_assign2","_source","_source2","_backends","_backends2","_verticalForm","_verticalForm2","_configForm","_configForm2","VForm","ConfigForm","backends","backendValue","backendValues","postFields","form:change","$on","postForm","configForm","1334","_item","_modal","_modal2","_card","_card2","Modal","DatasetCard","dataset:clicked","dataset","location","statusClass","statusI18n","1335","_job","_widget","_widget2","job","withSlot","ellipsis","PageList","job.items","1336","_job2","_job3","_job4","JobWidget","fromConfig","preview","harvest","preview_harvest_source_config","onPreviewFetch","$root","handleApiError","preview_harvest_source","1346","1347","1348","1349","1354","1355","1356","1357","1358","1359","1360","1372","1373","1374","1375","1376","1377","1387","1388","1389","1390","1467","_formLayout","_formLayout2","_form","_form2","_item2","_preview","_preview2","MASK","mask","previewSource","FormLayout","HarvestForm","on_success","$go","oid","harvest:job:item:selected","$modal","harvest:source:form:changed","route","$scrollTo","$route","$once","updHandler","deactivate","1564"],"mappings":"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","file":"chunks/7.11ac4de064ae59691d49.js","sourcesContent":["webpackJsonp([7,31],{\n\n/***/ 885:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1467)\n\t__vue_template__ = __webpack_require__(1564)\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__(19);\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__(57);\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__(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/***/ 986:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\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/***/ 987:\n[971, 88, 44],\n\n/***/ 988:\n[972, 75],\n\n/***/ 990:\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = { \"default\": __webpack_require__(1035), __esModule: true };\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\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/***/ 993:\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/***/ 994:\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__(986);\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/***/ 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, \".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/***/ 996:\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/***/ 997:\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/***/ 998:\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/***/ 999:\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/***/ 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__(994)\n\t__vue_template__ = __webpack_require__(999)\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__(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!./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__(996);\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__(990);\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, 58, 100],\n\n/***/ 1037:\n[973, 44],\n\n/***/ 1038:\n[977, 199, 51, 87, 988, 987, 315, 1036, 316, 1037],\n\n/***/ 1039:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1181)\n\t__vue_script__ = __webpack_require__(1117)\n\t__vue_template__ = __webpack_require__(1158)\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/***/ 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__(15);\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__(15);\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('!['+chunk+']('+sanitizedLink+' \"'+e.__localize('enter image title here')+'\")');\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__(19);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _moment = __webpack_require__(15);\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/***/ 1098:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar map = {\n\t\t\"./avatar.vue\": 1161,\n\t\t\"./date.vue\": 1162,\n\t\t\"./datetime.vue\": 1163,\n\t\t\"./deletable-text.vue\": 1164,\n\t\t\"./label.vue\": 1165,\n\t\t\"./metric.vue\": 1166,\n\t\t\"./playpause.vue\": 1167,\n\t\t\"./progress-bars.vue\": 1168,\n\t\t\"./since.vue\": 1169,\n\t\t\"./text.vue\": 1170,\n\t\t\"./thumbnail.vue\": 1171,\n\t\t\"./timeago.vue\": 1172,\n\t\t\"./visibility.vue\": 1173\n\t};\n\tfunction webpackContext(req) {\n\t\treturn __webpack_require__(webpackContextResolve(req));\n\t};\n\tfunction webpackContextResolve(req) {\n\t\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n\t};\n\twebpackContext.keys = function webpackContextKeys() {\n\t\treturn Object.keys(map);\n\t};\n\twebpackContext.resolve = webpackContextResolve;\n\tmodule.exports = webpackContext;\n\twebpackContext.id = 1098;\n\n\n/***/ },\n\n/***/ 1101:\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 _vue = __webpack_require__(57);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _utils = __webpack_require__(314);\n\t\n\tvar _utils2 = _interopRequireDefault(_utils);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'datatable-cell',\n\t default: '',\n\t props: {\n\t field: Object,\n\t item: Object\n\t },\n\t computed: {\n\t value: function value() {\n\t if (!this.field || !this.item) {\n\t return this.$options.default;\n\t }\n\t\n\t if (!this.field.key) {\n\t result = this.item;\n\t } else if (_utils2.default.isFunction(this.field.key)) {\n\t result = this.field.key(this.item);\n\t } else {\n\t var parts = this.field.key.split('.'),\n\t result = this.item;\n\t\n\t for (var i = 0; i < parts.length; i++) {\n\t var key = parts[i];\n\t if (!result || !result.hasOwnProperty(key)) {\n\t result = null;\n\t break;\n\t }\n\t result = result[key];\n\t }\n\t }\n\t\n\t return result || this.$options.default;\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1102:\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 attached: function attached() {\n\t this.$el.closest('td').classList.add('avatar-cell');\n\t }\n\t};\n\n/***/ },\n\n/***/ 1103:\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: 'datatable-cell-date'\n\t};\n\n/***/ },\n\n/***/ 1104:\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: 'datatable-cell-datetime'\n\t};\n\n/***/ },\n\n/***/ 1105:\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: 'datatable-cell-deletable-text'\n\t};\n\n/***/ },\n\n/***/ 1106:\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: 'datatable-cell-label',\n\t filters: {\n\t format: function format(value) {\n\t return this.field.hasOwnProperty('label_func') ? this.field.label_func(value) : value;\n\t },\n\t color: function color(value) {\n\t return this.field.hasOwnProperty('label_type') ? this.field.label_type(value) : 'default';\n\t }\n\t },\n\t computed: {\n\t labels: function labels() {\n\t return this.value instanceof Array ? this.value : [this.value];\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1107:\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: 'datatable-cell-metric',\n\t default: 0\n\t};\n\n/***/ },\n\n/***/ 1108:\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: 'datatable-cell-playpause',\n\t default: false\n\t};\n\n/***/ },\n\n/***/ 1109:\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: 'datatable-cell-progress-bars',\n\t computed: {\n\t progress_class: function progress_class() {\n\t if (this.value < 1 / 3) {\n\t return 'danger';\n\t } else if (this.value < 2 / 3) {\n\t return 'warning';\n\t } else if (this.value < 0.9) {\n\t return 'primary';\n\t } else {\n\t return 'success';\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1110:\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: 'datatable-cell-since'\n\t};\n\n/***/ },\n\n/***/ 1111:\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: 'datatable-cell-text'\n\t};\n\n/***/ },\n\n/***/ 1112:\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 _placeholders = __webpack_require__(101);\n\t\n\tvar _placeholders2 = _interopRequireDefault(_placeholders);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t attached: function attached() {\n\t this.$el.closest('td').classList.add('thumbnail-cell');\n\t },\n\t\n\t computed: {\n\t src: function src() {\n\t if (this.value) {\n\t return this.value;\n\t } else if (this.field.placeholder) {\n\t return _placeholders2.default.getFor(this.field.placeholder);\n\t } else {\n\t return _placeholders2.default.generic;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1113:\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: 'datatable-cell-timeago'\n\t};\n\n/***/ },\n\n/***/ 1114:\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 _i18n = __webpack_require__(133);\n\t\n\tvar VISIBILITIES = {\n\t deleted: {\n\t label: (0, _i18n._)('Deleted'),\n\t type: 'danger'\n\t },\n\t archived: {\n\t label: (0, _i18n._)('Archived'),\n\t type: 'warning'\n\t },\n\t private: {\n\t label: (0, _i18n._)('Private'),\n\t type: 'info'\n\t },\n\t public: {\n\t label: (0, _i18n._)('Public'),\n\t type: 'success'\n\t }\n\t};\n\t\n\texports.default = {\n\t name: 'datatable-cell-visibility',\n\t computed: {\n\t status: function status() {\n\t if (!this.item) return;\n\t if (this.item.deleted) {\n\t return VISIBILITIES.deleted;\n\t } else if (this.item.archived) {\n\t return VISIBILITIES.archived;\n\t } else if (this.item.private) {\n\t return VISIBILITIES.private;\n\t } else {\n\t return VISIBILITIES.public;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1115:\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 _getIterator2 = __webpack_require__(200);\n\t\n\tvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\t\n\tvar _vue = __webpack_require__(57);\n\t\n\tvar _vue2 = _interopRequireDefault(_vue);\n\t\n\tvar _cell = __webpack_require__(1160);\n\t\n\tvar _cell2 = _interopRequireDefault(_cell);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'datatable-row',\n\t props: {\n\t item: Object,\n\t fields: Array,\n\t selected: {\n\t type: Boolean,\n\t default: false\n\t }\n\t },\n\t created: function created() {\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)(this.fields), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t var field = _step.value;\n\t\n\t this.load_cell(field.type || 'text');\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\n\t methods: {\n\t item_click: function item_click(item) {\n\t this.$dispatch('datatable:item:click', item);\n\t },\n\t load_cell: function load_cell(name) {\n\t if (!this.$options.components.hasOwnProperty(name)) {\n\t var options = __webpack_require__(1098)(\"./\" + name + '.vue');\n\t if (!options.hasOwnProperty('mixins')) {\n\t options.mixins = [];\n\t }\n\t if (!(_cell2.default in options.mixins)) {\n\t options.mixins.push(_cell2.default);\n\t }\n\t this.$options.components[name] = _vue2.default.extend(options);\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1116:\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 _row = __webpack_require__(1174);\n\t\n\tvar _row2 = _interopRequireDefault(_row);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'datatable',\n\t components: { Row: _row2.default },\n\t props: {\n\t p: Object,\n\t fields: Array,\n\t track: {\n\t type: null,\n\t default: 'id'\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t selected: null\n\t };\n\t },\n\t\n\t computed: {\n\t remote: function remote() {\n\t return this.p && this.p.serverside;\n\t },\n\t trackBy: function trackBy() {\n\t return this.track || '';\n\t }\n\t },\n\t events: {\n\t 'datatable:item:click': function datatableItemClick(item) {\n\t this.selected = item;\n\t return true;\n\t }\n\t },\n\t methods: {\n\t header_click: function header_click(field) {\n\t if (field.sort) {\n\t this.p.sort(this.sort_for(field));\n\t }\n\t },\n\t sort_for: function sort_for(field) {\n\t return this.remote ? field.sort : field.key;\n\t },\n\t classes_for: function classes_for(field) {\n\t var classes = { pointer: Boolean(field.sort) };\n\t var align = field.align || 'left';\n\t\n\t classes['text-' + align] = true;\n\t\n\t return classes;\n\t },\n\t sort_classes_for: function sort_classes_for(field) {\n\t var classes = {};\n\t\n\t if (this.p.sorted != this.sort_for(field)) {\n\t classes['fa-sort'] = true;\n\t } else if (!this.p.reversed) {\n\t classes['fa-sort-asc'] = true;\n\t } else if (this.p.reversed) {\n\t classes['fa-sort-desc'] = true;\n\t }\n\t\n\t return classes;\n\t }\n\t },\n\t filters: {\n\t thwidth: function thwidth(value) {\n\t switch (value) {\n\t case undefined:\n\t return '';\n\t case 0:\n\t return 0;\n\t default:\n\t return value + 5;\n\t }\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1117:\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 _box = __webpack_require__(985);\n\t\n\tvar _box2 = _interopRequireDefault(_box);\n\t\n\tvar _table = __webpack_require__(1175);\n\t\n\tvar _table2 = _interopRequireDefault(_table);\n\t\n\tvar _pagination = __webpack_require__(1176);\n\t\n\tvar _pagination2 = _interopRequireDefault(_pagination);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'datatable-widget',\n\t components: { Box: _box2.default, Datatable: _table2.default, PaginationWidget: _pagination2.default },\n\t data: function data() {\n\t return {\n\t search_query: null,\n\t selected: null\n\t };\n\t },\n\t\n\t computed: {\n\t has_footer_children: function has_footer_children() {\n\t return this.$els.footer_container && this.$els.footer_container.children.length;\n\t },\n\t show_footer: function show_footer() {\n\t return this.p && this.p.pages > 1 || this.has_footer_children;\n\t },\n\t boxclasses: function boxclasses() {\n\t return ['datatable-widget', this.tint ? 'box-' + this.tint : 'box-solid', this.boxclass].join(' ');\n\t }\n\t },\n\t props: {\n\t p: Object,\n\t title: String,\n\t icon: String,\n\t fields: Array,\n\t boxclass: String,\n\t tint: String,\n\t empty: String,\n\t loading: {\n\t type: Boolean,\n\t default: undefined\n\t },\n\t track: {\n\t type: null,\n\t default: 'id'\n\t },\n\t downloads: {\n\t type: Array,\n\t default: function _default() {\n\t return [];\n\t }\n\t }\n\t },\n\t methods: {\n\t search: function search() {\n\t this.p.search(this.search_query);\n\t }\n\t },\n\t watch: {\n\t search_query: function search_query(query) {\n\t this.p.search(query);\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1118:\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 nb = 2;\n\t\n\texports.default = {\n\t name: 'pagination-widget',\n\t props: {\n\t p: Object\n\t },\n\t computed: {\n\t start: function start() {\n\t if (!this.p) {\n\t return -1;\n\t }\n\t return this.p.page <= nb ? 1 : this.p.page - nb;\n\t },\n\t end: function end() {\n\t if (!this.p) {\n\t return -1;\n\t }\n\t return this.p.page + nb > this.p.pages ? this.p.pages : this.p.page + nb;\n\t },\n\t range: function range() {\n\t var _this = this;\n\t\n\t if (isNaN(this.start) || isNaN(this.end) || this.start >= this.end) return [];\n\t return Array.apply(0, Array(this.end + 1 - this.start)).map(function (element, index) {\n\t return index + _this.start;\n\t });\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1135:\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, \".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cell.vue\"],\"names\":[],\"mappings\":\"AAAA,uBAAuB,mBAAmB,gBAAgB,uBAAuB,WAAW,CAAC\",\"file\":\"cell.vue\",\"sourcesContent\":[\".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1136:\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, \".datatable td.avatar-cell{padding:3px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cells/avatar.vue\"],\"names\":[],\"mappings\":\"AAAA,0BAA0B,WAAW,CAAC\",\"file\":\"avatar.vue\",\"sourcesContent\":[\".datatable td.avatar-cell{padding:3px}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1137:\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, \".datatable td.thumbnail-cell{padding:3px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cells/thumbnail.vue\"],\"names\":[],\"mappings\":\"AAAA,6BAA6B,WAAW,CAAC\",\"file\":\"thumbnail.vue\",\"sourcesContent\":[\".datatable td.thumbnail-cell{padding:3px}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1138:\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, \".datatable th{white-space:nowrap}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/table.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,kBAAkB,CAAC\",\"file\":\"table.vue\",\"sourcesContent\":[\".datatable th{white-space:nowrap}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1139:\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, \".datatable-widget .datatable-header>.row{width:100%}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/widget.vue\"],\"names\":[],\"mappings\":\"AAAA,yCAAyC,UAAU,CAAC\",\"file\":\"widget.vue\",\"sourcesContent\":[\".datatable-widget .datatable-header>.row{width:100%}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1140:\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, \".label{margin:1px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cells/label.vue\"],\"names\":[],\"mappings\":\"AACA,OACI,UAAY,CACf\",\"file\":\"label.vue\",\"sourcesContent\":[\"\\n.label {\\n margin: 1px;\\n}\\n\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1143:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <img :src=\\\"value | avatar_url field.width\\\" :width=field.width :height=field.width /> \";\n\n/***/ },\n\n/***/ 1144:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <time :datetime=\\\"value | dt YYYY-MM-DD\\\">{{value | dt L}}</time> \";\n\n/***/ },\n\n/***/ 1145:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <time :datetime=value>{{value | dt L LT}}</time> \";\n\n/***/ },\n\n/***/ 1146:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <del v-if=item.deleted :title=\\\"_('This item has been deleted')\\\" :datetime=item.deleted>{{value}}</del> <span v-else>{{value}}</span> \";\n\n/***/ },\n\n/***/ 1147:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <span v-for=\\\"label in labels\\\" class=\\\"label label-{{label | color}}\\\"> {{label | format}} </span> \";\n\n/***/ },\n\n/***/ 1148:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <span class=badge :class=\\\"{\\n 'bg-green': value > 0,\\n 'bg-red': value == 0\\n }\\\">{{value}}</span> \";\n\n/***/ },\n\n/***/ 1149:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <i class=\\\"fa fa-fw fa-{{value ? 'play' : 'stop'}} text-{{value ? 'green' : 'red'}}\\\"></i> \";\n\n/***/ },\n\n/***/ 1150:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"progress progress-sm\\\"> <span class=\\\"progress-bar progress-bar-{{ progress_class }}\\\" :style=\\\"{width: value * 100 + '%'}\\\" :title=\\\"_('Score:') + ' ' + value * 100\\\"> </span> </div> \";\n\n/***/ },\n\n/***/ 1151:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <time :datetime=value>{{value | since}}</time> \";\n\n/***/ },\n\n/***/ 1152:\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<span>{{value}}</span>\";\n\n/***/ },\n\n/***/ 1153:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <img :src=src :width=field.width :height=field.width /> \";\n\n/***/ },\n\n/***/ 1154:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <time :datetime=value class=timeago>{{value | timeago}}</time> \";\n\n/***/ },\n\n/***/ 1155:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <span class=\\\"label label-{{ status.type }}\\\">{{ status.label }}</span> \";\n\n/***/ },\n\n/***/ 1156:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <tr class=pointer :class=\\\"{ 'active': selected }\\\" @click=item_click(item)> <td v-for=\\\"field in fields\\\" track-by=key :class=\\\"{\\n 'text-center': field.align === 'center',\\n 'text-left': field.align === 'left',\\n 'text-right': field.align === 'right',\\n 'ellipsis': field.ellipsis\\n }\\\"> <component :is=\\\"field.type || 'text'\\\" :item=item :field=field> </component> </td> </tr> \";\n\n/***/ },\n\n/***/ 1157:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <table class=\\\"table table-hover datatable\\\"> <thead> <tr> <th v-for=\\\"field in fields\\\" :class=classes_for(field) @click=header_click(field) :width=\\\"field.width | thwidth\\\"> {{field.label}} <span class=\\\"fa fa-fw\\\" v-if=field.sort :class=sort_classes_for(field)></span> </th> </tr> </thead> <tbody> <tr v-for=\\\"item in p.data\\\" :track-by=trackBy is=row :item=item :fields=fields :selected=\\\"item === selected\\\"> </tr> </tbody> </table> \";\n\n/***/ },\n\n/***/ 1158:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div> <box :title=title :icon=icon :boxclass=boxclasses bodyclass=\\\"table-responsive no-padding\\\" footerclass=\\\"text-center clearfix\\\" :loading=\\\"loading !== undefined ? loading : p.loading\\\" :footer=show_footer> <aside slot=tools> <div class=btn-group v-show=downloads.length> <button type=button class=\\\"btn btn-box-tool dropdown-toggle\\\" data-toggle=dropdown aria-expanded=false> <span class=\\\"fa fa-download\\\"></span> </button> <ul class=dropdown-menu role=menu> <li v-for=\\\"download in downloads\\\"> <a :href=download.url>{{download.label}}</a> </li> </ul> </div> <div class=box-search v-if=p.has_search> <div class=input-group> <input type=text class=\\\"form-control input-sm pull-right\\\" style=\\\"width: 150px\\\" :placeholder=\\\"_('Search')\\\" v-model=search_query debounce=500 @keyup.enter=search> <div class=input-group-btn> <button class=\\\"btn btn-sm btn-flat\\\" @click=search> <i class=\\\"fa fa-search\\\"></i> </button> </div> </div> </div> </aside> <header class=datatable-header> <slot name=header></slot> </header> <datatable v-if=p.has_data :p=p :fields=fields :track=track> </datatable> <div class=\\\"text-center lead\\\" v-if=!p.has_data> {{ empty || _('No data')}} </div> <footer slot=footer> <div :class=\\\"{ 'pull-right': p.pages > 1 }\\\" v-el:footer_container> <slot name=footer></slot> </div> <pagination-widget :p=p></pagination-widget> </footer> </box> </div> \";\n\n/***/ },\n\n/***/ 1159:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <ul class=\\\"pagination pagination-sm no-margin\\\" v-show=\\\"p && p.pages > 1\\\"> <li :class=\\\"{ 'disabled': !p || p.page == 1 }\\\"> <a :title=\\\"_('First page')\\\" class=pointer @click=p.go_to_page(1)> &laquo; </a> </li> <li :class=\\\"{ 'disabled': !p || p.page == 1 }\\\"> <a :title=\\\"_('Previous page')\\\" class=pointer @click=p.previousPage()> &lsaquo; </a> </li> <li v-for=\\\"current in range\\\" :class=\\\"{ 'active': current == p.page }\\\"> <a @click=p.go_to_page(current) class=pointer>{{ current }}</a> </li> <li :class=\\\"{ 'disabled': !p || p.page == p.pages }\\\"> <a :title=\\\"_('Next page')\\\" class=pointer @click=p.nextPage()> &rsaquo; </a> </li> <li :class=\\\"{ 'disabled': !p || p.page == p.pages }\\\"> <a :title=\\\"_('Last page')\\\" class=pointer @click=p.go_to_page(p.pages)> &raquo; </a> </li> </ul> \";\n\n/***/ },\n\n/***/ 1160:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1177)\n\t__vue_script__ = __webpack_require__(1101)\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/***/ 1161:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1178)\n\t__vue_script__ = __webpack_require__(1102)\n\t__vue_template__ = __webpack_require__(1143)\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/***/ 1162:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1103)\n\t__vue_template__ = __webpack_require__(1144)\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/***/ 1163:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1104)\n\t__vue_template__ = __webpack_require__(1145)\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/***/ 1164:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1105)\n\t__vue_template__ = __webpack_require__(1146)\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/***/ 1165:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1182)\n\t__vue_script__ = __webpack_require__(1106)\n\t__vue_template__ = __webpack_require__(1147)\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/***/ 1166:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1107)\n\t__vue_template__ = __webpack_require__(1148)\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/***/ 1167:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1108)\n\t__vue_template__ = __webpack_require__(1149)\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/***/ 1168:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1109)\n\t__vue_template__ = __webpack_require__(1150)\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/***/ 1169:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1110)\n\t__vue_template__ = __webpack_require__(1151)\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/***/ 1170:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1111)\n\t__vue_template__ = __webpack_require__(1152)\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/***/ 1171:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1179)\n\t__vue_script__ = __webpack_require__(1112)\n\t__vue_template__ = __webpack_require__(1153)\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/***/ 1172:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1113)\n\t__vue_template__ = __webpack_require__(1154)\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/***/ 1173:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1114)\n\t__vue_template__ = __webpack_require__(1155)\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/***/ 1174:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1115)\n\t__vue_template__ = __webpack_require__(1156)\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/***/ 1175:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1180)\n\t__vue_script__ = __webpack_require__(1116)\n\t__vue_template__ = __webpack_require__(1157)\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/***/ 1176:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1118)\n\t__vue_template__ = __webpack_require__(1159)\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/***/ 1177:\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__(1135);\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!./cell.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!./cell.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/***/ 1178:\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__(1136);\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!./avatar.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!./avatar.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/***/ 1179:\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__(1137);\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!./thumbnail.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!./thumbnail.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/***/ 1180:\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__(1138);\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!./table.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!./table.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/***/ 1181:\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__(1139);\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!./widget.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!./widget.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/***/ 1182:\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__(1140);\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/vue-loader/lib/selector.js?type=style&index=0!./label.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/vue-loader/lib/selector.js?type=style&index=0!./label.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/***/ 1187:\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.HarvestSource = exports.VALIDATION_STATUS_I18N = exports.VALIDATION_STATUS_CLASSES = undefined;\n\t\n\tvar _getPrototypeOf = __webpack_require__(21);\n\t\n\tvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\t\n\tvar _classCallCheck2 = __webpack_require__(20);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _createClass2 = __webpack_require__(46);\n\t\n\tvar _createClass3 = _interopRequireDefault(_createClass2);\n\t\n\tvar _possibleConstructorReturn2 = __webpack_require__(27);\n\t\n\tvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\t\n\tvar _inherits2 = __webpack_require__(26);\n\t\n\tvar _inherits3 = _interopRequireDefault(_inherits2);\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tvar _i18n = __webpack_require__(133);\n\t\n\tvar _logger = __webpack_require__(19);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar VALIDATION_STATUS_CLASSES = exports.VALIDATION_STATUS_CLASSES = {\n\t 'pending': 'default',\n\t 'accepted': 'success',\n\t 'refused': 'danger'\n\t};\n\t\n\tvar VALIDATION_STATUS_I18N = exports.VALIDATION_STATUS_I18N = {\n\t 'pending': (0, _i18n._)('Pending'),\n\t 'accepted': (0, _i18n._)('Accepted'),\n\t 'refused': (0, _i18n._)('Refused')\n\t};\n\t\n\tvar HarvestSource = exports.HarvestSource = function (_Model) {\n\t (0, _inherits3.default)(HarvestSource, _Model);\n\t\n\t function HarvestSource() {\n\t (0, _classCallCheck3.default)(this, HarvestSource);\n\t return (0, _possibleConstructorReturn3.default)(this, (HarvestSource.__proto__ || (0, _getPrototypeOf2.default)(HarvestSource)).apply(this, arguments));\n\t }\n\t\n\t (0, _createClass3.default)(HarvestSource, [{\n\t key: 'fetch',\n\t value: function fetch(ident) {\n\t ident = ident || this.id || this.slug;\n\t this.loading = true;\n\t if (ident) {\n\t this.$api('harvest.get_harvest_source', { ident: ident }, this.on_fetched);\n\t } else {\n\t _logger2.default.error('Unable to fetch HarvestSource: no identifier specified');\n\t }\n\t return this;\n\t }\n\t }, {\n\t key: 'save',\n\t value: function save(on_error) {\n\t if (this.id) {\n\t return this.update(this, on_error);\n\t }\n\t this.loading = true;\n\t this.$api('harvest.create_harvest_source', { payload: this }, this.on_fetched, this.on_error(on_error));\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(data, on_error) {\n\t this.loading = true;\n\t this.$api('harvest.update_harvest_source', {\n\t ident: this.id,\n\t payload: data\n\t }, this.on_fetched, this.on_error(on_error));\n\t }\n\t }]);\n\t return HarvestSource;\n\t}(_base.Model);\n\t\n\texports.default = HarvestSource;\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\texports.HarvestJob = exports.STATUS_I18N = exports.STATUS_CLASSES = undefined;\n\t\n\tvar _getPrototypeOf = __webpack_require__(21);\n\t\n\tvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\t\n\tvar _classCallCheck2 = __webpack_require__(20);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _createClass2 = __webpack_require__(46);\n\t\n\tvar _createClass3 = _interopRequireDefault(_createClass2);\n\t\n\tvar _possibleConstructorReturn2 = __webpack_require__(27);\n\t\n\tvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\t\n\tvar _inherits2 = __webpack_require__(26);\n\t\n\tvar _inherits3 = _interopRequireDefault(_inherits2);\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tvar _logger = __webpack_require__(19);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _i18n = __webpack_require__(133);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar STATUS_CLASSES = exports.STATUS_CLASSES = {\n\t 'pending': 'default',\n\t 'initializing': 'primary',\n\t 'initialized': 'info',\n\t 'processing': 'info',\n\t 'done': 'success',\n\t 'done-errors': 'warning',\n\t 'failed': 'danger',\n\t 'deleted': 'danger'\n\t};\n\t\n\tvar STATUS_I18N = exports.STATUS_I18N = {\n\t 'pending': (0, _i18n._)('Pending'),\n\t 'initializing': (0, _i18n._)('Initializing'),\n\t 'initialized': (0, _i18n._)('Initialized'),\n\t 'processing': (0, _i18n._)('Processing'),\n\t 'done': (0, _i18n._)('Done'),\n\t 'done-errors': (0, _i18n._)('Done with errors'),\n\t 'failed': (0, _i18n._)('Failed'),\n\t 'deleted': (0, _i18n._)('Deleted')\n\t};\n\t\n\tvar HarvestJob = exports.HarvestJob = function (_Model) {\n\t (0, _inherits3.default)(HarvestJob, _Model);\n\t\n\t function HarvestJob() {\n\t (0, _classCallCheck3.default)(this, HarvestJob);\n\t return (0, _possibleConstructorReturn3.default)(this, (HarvestJob.__proto__ || (0, _getPrototypeOf2.default)(HarvestJob)).apply(this, arguments));\n\t }\n\t\n\t (0, _createClass3.default)(HarvestJob, [{\n\t key: 'fetch',\n\t value: function fetch() {\n\t if (this.id) {\n\t this.loading = true;\n\t this.$api('harvest.get_harvest_job', { ident: this.id }, this.on_fetched);\n\t } else {\n\t _logger2.default.error('Unable to fetch Job');\n\t }\n\t return this;\n\t }\n\t }]);\n\t return HarvestJob;\n\t}(_base.Model);\n\t\n\texports.default = HarvestJob;\n\n/***/ },\n\n/***/ 1200:\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 _alert = __webpack_require__(986);\n\t\n\tvar _alert2 = _interopRequireDefault(_alert);\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/***/ 1204:\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/***/ 1209:\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/***/ 1212:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1216)\n\t__vue_script__ = __webpack_require__(1200)\n\t__vue_template__ = __webpack_require__(1209)\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/***/ 1216:\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__(1204);\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/***/ 1300:\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.harvest_backends = exports.HarvestBackends = undefined;\n\t\n\tvar _getPrototypeOf = __webpack_require__(21);\n\t\n\tvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\t\n\tvar _classCallCheck2 = __webpack_require__(20);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _possibleConstructorReturn2 = __webpack_require__(27);\n\t\n\tvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\t\n\tvar _inherits2 = __webpack_require__(26);\n\t\n\tvar _inherits3 = _interopRequireDefault(_inherits2);\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar HarvestBackends = exports.HarvestBackends = function (_List) {\n\t (0, _inherits3.default)(HarvestBackends, _List);\n\t\n\t function HarvestBackends(options) {\n\t (0, _classCallCheck3.default)(this, HarvestBackends);\n\t\n\t var _this = (0, _possibleConstructorReturn3.default)(this, (HarvestBackends.__proto__ || (0, _getPrototypeOf2.default)(HarvestBackends)).call(this, options));\n\t\n\t _this.$options.ns = 'harvest';\n\t _this.$options.fetch = 'harvest_backends';\n\t return _this;\n\t }\n\t\n\t return HarvestBackends;\n\t}(_base.List);\n\t\n\tvar harvest_backends = exports.harvest_backends = new HarvestBackends().fetch();\n\texports.default = harvest_backends;\n\n/***/ },\n\n/***/ 1302:\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.STATUS_I18N = exports.STATUS_CLASSES = undefined;\n\t\n\tvar _getPrototypeOf = __webpack_require__(21);\n\t\n\tvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\t\n\tvar _classCallCheck2 = __webpack_require__(20);\n\t\n\tvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\t\n\tvar _possibleConstructorReturn2 = __webpack_require__(27);\n\t\n\tvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\t\n\tvar _inherits2 = __webpack_require__(26);\n\t\n\tvar _inherits3 = _interopRequireDefault(_inherits2);\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tvar _logger = __webpack_require__(19);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _i18n = __webpack_require__(133);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar STATUS_CLASSES = exports.STATUS_CLASSES = {\n\t 'pending': 'default',\n\t 'started': 'info',\n\t 'done': 'success',\n\t 'failed': 'danger',\n\t 'skipped': 'warning',\n\t 'archived': 'warning'\n\t};\n\t\n\tvar STATUS_I18N = exports.STATUS_I18N = {\n\t 'pending': (0, _i18n._)('Pending'),\n\t 'started': (0, _i18n._)('Started'),\n\t 'done': (0, _i18n._)('Done'),\n\t 'failed': (0, _i18n._)('Failed'),\n\t 'skipped': (0, _i18n._)('Skipped'),\n\t 'archived': (0, _i18n._)('Archived')\n\t};\n\t\n\tvar HarvestItem = function (_Model) {\n\t (0, _inherits3.default)(HarvestItem, _Model);\n\t\n\t function HarvestItem() {\n\t (0, _classCallCheck3.default)(this, HarvestItem);\n\t return (0, _possibleConstructorReturn3.default)(this, (HarvestItem.__proto__ || (0, _getPrototypeOf2.default)(HarvestItem)).apply(this, arguments));\n\t }\n\t\n\t return HarvestItem;\n\t}(_base.Model);\n\t\n\texports.default = HarvestItem;\n\t;\n\n/***/ },\n\n/***/ 1322:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1335)\n\t__vue_template__ = __webpack_require__(1359)\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/***/ 1330:\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 _featureField = __webpack_require__(1373);\n\t\n\tvar _featureField2 = _interopRequireDefault(_featureField);\n\t\n\tvar _filterField = __webpack_require__(1374);\n\t\n\tvar _filterField2 = _interopRequireDefault(_filterField);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'config-form',\n\t components: { FeatureField: _featureField2.default, FilterField: _filterField2.default },\n\t data: function data() {\n\t return {\n\t featuresDescription: this._('A set of boolean parameters to toggle'),\n\t filtersDescription: this._('A set of filters to apply')\n\t };\n\t },\n\t\n\t events: {\n\t 'filter:delete': function filterDelete(index) {\n\t var _this = this;\n\t\n\t this.config.filters.splice(index, 1);\n\t this.$nextTick(function () {\n\t _this.$dispatch('form:change', _this);\n\t });\n\t },\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 'field:value-change': function fieldValueChange(value) {\n\t this.$dispatch('form:change', this);\n\t }\n\t },\n\t props: {\n\t config: {\n\t type: Object,\n\t default: function _default() {}\n\t },\n\t backend: Object\n\t },\n\t computed: {\n\t hasFeatures: function hasFeatures() {\n\t return this.backend && this.backend.features.length;\n\t },\n\t hasFilters: function hasFilters() {\n\t return this.backend && this.backend.filters.length;\n\t }\n\t },\n\t methods: {\n\t addFilter: function addFilter() {\n\t if (!this.config.filters) {\n\t this.$set('config.filters', []);\n\t }\n\t this.config.filters.push({ key: undefined, value: undefined });\n\t this.$dispatch('form:change', this);\n\t },\n\t serialize: function serialize() {\n\t var config = {};\n\t if (this.hasFeatures) {\n\t config.features = this.$refs.features.reduce(function (obj, vm) {\n\t obj[vm.key] = vm.value;\n\t return obj;\n\t }, {});\n\t }\n\t if (this.hasFilters) {\n\t config.filters = this.$refs.filters.map(function (vm) {\n\t return {\n\t key: vm.key, value: vm.value, type: vm.type\n\t };\n\t });\n\t }\n\t return config;\n\t },\n\t validate: function validate() {\n\t return true;\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1331:\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 props: {\n\t config: Object,\n\t feature: Object\n\t },\n\t computed: {\n\t checked: function checked() {\n\t return this.key in this.features ? this.features[this.key] : this.feature.default;\n\t },\n\t features: function features() {\n\t return this.config.features || {};\n\t },\n\t id: function id() {\n\t return 'config-feature-' + this.key;\n\t },\n\t key: function key() {\n\t return this.feature.key;\n\t },\n\t\n\t value: {\n\t cache: false,\n\t get: function get() {\n\t return this.$els.checkbox.checked;\n\t }\n\t }\n\t },\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/***/ 1332:\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 _i18n = __webpack_require__(133);\n\t\n\tvar TYPES = [{ value: 'include', label: (0, _i18n._)('Include') }, { value: 'exclude', label: (0, _i18n._)('Exclude') }];\n\t\n\texports.default = {\n\t data: function data() {\n\t return { TYPES: TYPES };\n\t },\n\t\n\t props: {\n\t choices: Array,\n\t type: {\n\t type: String,\n\t validator: function validator(value) {\n\t return TYPES.map(function (t) {\n\t return t.value;\n\t }).includes(value);\n\t },\n\t default: 'include'\n\t },\n\t key: [String, null],\n\t value: undefined,\n\t index: Number\n\t },\n\t computed: {\n\t hasData: function hasData() {\n\t return this.key || this.value;\n\t },\n\t isDefined: function isDefined() {\n\t return this.key && this.value;\n\t },\n\t placeholder: function placeholder() {\n\t var _this = this;\n\t\n\t if (!this.key || !this.choices) return;\n\t return this.choices.find(function (c) {\n\t return c.key == _this.key;\n\t }).description;\n\t }\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 onDelete: function onDelete() {\n\t this.$dispatch('filter:delete', this.index);\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1333:\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 _assign = __webpack_require__(136);\n\t\n\tvar _assign2 = _interopRequireDefault(_assign);\n\t\n\tvar _source = __webpack_require__(1187);\n\t\n\tvar _source2 = _interopRequireDefault(_source);\n\t\n\tvar _backends = __webpack_require__(1300);\n\t\n\tvar _backends2 = _interopRequireDefault(_backends);\n\t\n\tvar _verticalForm = __webpack_require__(1094);\n\t\n\tvar _verticalForm2 = _interopRequireDefault(_verticalForm);\n\t\n\tvar _configForm = __webpack_require__(1372);\n\t\n\tvar _configForm2 = _interopRequireDefault(_configForm);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'HarvestSourceForm',\n\t components: { VForm: _verticalForm2.default, ConfigForm: _configForm2.default },\n\t props: {\n\t source: {\n\t type: _source2.default,\n\t default: function _default() {\n\t return new _source2.default();\n\t }\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t backends: _backends2.default.items,\n\t backendValue: this.source.backend,\n\t fields: [{\n\t id: 'name',\n\t label: this._('Name')\n\t }, {\n\t id: 'description',\n\t label: this._('Description')\n\t }, {\n\t id: 'url',\n\t label: this._('URL'),\n\t widget: 'url-field'\n\t }, {\n\t id: 'backend',\n\t label: this._('Backend'),\n\t widget: 'select-input',\n\t values: this.backendValues\n\t }],\n\t postFields: [{\n\t id: 'active',\n\t label: this._('Active')\n\t }, {\n\t id: 'autoarchive',\n\t label: this._('Automatic archiving')\n\t }],\n\t filters: []\n\t };\n\t },\n\t\n\t events: {\n\t 'field:change': function fieldChange(field, value) {\n\t if (field.field.id === 'backend') {\n\t this.backendValue = value;\n\t }\n\t return true;\n\t },\n\t 'form:change': function formChange(form) {\n\t if (form.validate()) {\n\t this.$dispatch('harvest:source:form:changed', this.serialize());\n\t }\n\t return true;\n\t }\n\t },\n\t computed: {\n\t backend: function backend() {\n\t var _this = this;\n\t\n\t if (!this.backendValue) return;\n\t return this.backends.find(function (item) {\n\t return item.id === _this.backendValue;\n\t });\n\t },\n\t backendValues: function backendValues() {\n\t return this.backends.map(function (item) {\n\t return { value: item.id, text: item.label };\n\t });\n\t }\n\t },\n\t created: function created() {\n\t var _this2 = this;\n\t\n\t _backends2.default.$on('updated', function () {\n\t _this2.backends = _backends2.default.items;\n\t });\n\t },\n\t\n\t methods: {\n\t serialize: function serialize() {\n\t var data = (0, _assign2.default)({}, this.$refs.postForm.serialize(), this.$refs.form.serialize());\n\t data.config = this.$refs.configForm.serialize();\n\t return data;\n\t },\n\t validate: function validate() {\n\t return this.$refs.form.validate();\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1334:\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 _item = __webpack_require__(1302);\n\t\n\tvar _modal = __webpack_require__(318);\n\t\n\tvar _modal2 = _interopRequireDefault(_modal);\n\t\n\tvar _card = __webpack_require__(323);\n\t\n\tvar _card2 = _interopRequireDefault(_card);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t components: { Modal: _modal2.default, DatasetCard: _card2.default },\n\t props: {\n\t item: Object\n\t },\n\t events: {\n\t 'dataset:clicked': function datasetClicked(dataset) {\n\t document.location = dataset.page;\n\t }\n\t },\n\t filters: {\n\t statusClass: function statusClass(value) {\n\t return _item.STATUS_CLASSES[value];\n\t },\n\t statusI18n: function statusI18n(value) {\n\t return _item.STATUS_I18N[value];\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1335:\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 _job = __webpack_require__(1199);\n\t\n\tvar _item = __webpack_require__(1302);\n\t\n\tvar _base = __webpack_require__(39);\n\t\n\tvar _widget = __webpack_require__(1039);\n\t\n\tvar _widget2 = _interopRequireDefault(_widget);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'JobDetails',\n\t props: {\n\t job: _job.HarvestJob,\n\t loading: {\n\t type: Boolean,\n\t default: undefined\n\t },\n\t empty: String,\n\t withSlot: { type: Boolean, default: false }\n\t },\n\t components: { Datatable: _widget2.default },\n\t data: function data() {\n\t return {\n\t fields: [{\n\t label: this._('Remote ID'),\n\t key: 'remote_id',\n\t sort: 'remote_id',\n\t ellipsis: true\n\t }, {\n\t label: this._('Status'),\n\t key: 'status',\n\t sort: 'status',\n\t type: 'label',\n\t width: 100,\n\t label_type: function label_type(status) {\n\t return _item.STATUS_CLASSES[status];\n\t },\n\t label_func: function label_func(status) {\n\t return _item.STATUS_I18N[status];\n\t }\n\t }],\n\t p: new _base.PageList({ data: this.job.items })\n\t };\n\t },\n\t\n\t computed: {\n\t title: function title() {\n\t return this.job.id ? 'Job ' + this.job.id : 'Job';\n\t }\n\t },\n\t events: {\n\t 'datatable:item:click': function datatableItemClick(item) {\n\t this.$dispatch('harvest:job:item:selected', item);\n\t }\n\t },\n\t filters: {\n\t statusClass: function statusClass(value) {\n\t return _job.STATUS_CLASSES[value] || '';\n\t },\n\t statusI18n: function statusI18n(value) {\n\t return _job.STATUS_I18N[value];\n\t },\n\t count: function count(value, status) {\n\t if (!value) return '-';\n\t return value.filter(function (item) {\n\t return item.status === status;\n\t }).length;\n\t }\n\t },\n\t watch: {\n\t 'job.items': function jobItems(items) {\n\t this.p = new _base.PageList({ data: items });\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1336:\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 _api = __webpack_require__(99);\n\t\n\tvar _api2 = _interopRequireDefault(_api);\n\t\n\tvar _backends = __webpack_require__(1300);\n\t\n\tvar _backends2 = _interopRequireDefault(_backends);\n\t\n\tvar _job = __webpack_require__(1199);\n\t\n\tvar _job2 = _interopRequireDefault(_job);\n\t\n\tvar _source = __webpack_require__(1187);\n\t\n\tvar _source2 = _interopRequireDefault(_source);\n\t\n\tvar _job3 = __webpack_require__(1322);\n\t\n\tvar _job4 = _interopRequireDefault(_job3);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = {\n\t name: 'HarvestPreviewView',\n\t components: { JobWidget: _job4.default },\n\t props: {\n\t source: {\n\t type: Object,\n\t default: function _default() {\n\t return new _source2.default();\n\t }\n\t },\n\t fromConfig: {\n\t type: Boolean,\n\t default: false\n\t }\n\t },\n\t data: function data() {\n\t return {\n\t job: new _job2.default(),\n\t loading: false\n\t };\n\t },\n\t\n\t computed: {\n\t empty: function empty() {\n\t return this.job.created ? this._('No item found') : ' ';\n\t }\n\t },\n\t methods: {\n\t preview: function preview() {\n\t this.loading = true;\n\t if (this.fromConfig) {\n\t _api2.default.harvest.preview_harvest_source_config({ payload: this.source }, this.onPreviewFetch, this.$root.handleApiError);\n\t } else {\n\t _api2.default.harvest.preview_harvest_source({ ident: this.source.id }, this.onPreviewFetch, this.$root.handleApiError);\n\t }\n\t },\n\t onPreviewFetch: function onPreviewFetch(response) {\n\t this.job.on_fetched(response);\n\t this.loading = false;\n\t }\n\t }\n\t};\n\n/***/ },\n\n/***/ 1346:\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, \".config-form .config-label{display:block}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/config-form.vue\"],\"names\":[],\"mappings\":\"AAAA,2BAA2B,aAAa,CAAC\",\"file\":\"config-form.vue\",\"sourcesContent\":[\".config-form .config-label{display:block}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1347:\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, \".harvester-feature-checkbox .form-help{float:none}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/feature-field.vue\"],\"names\":[],\"mappings\":\"AAAA,uCAAuC,UAAU,CAAC\",\"file\":\"feature-field.vue\",\"sourcesContent\":[\".harvester-feature-checkbox .form-help{float:none}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1348:\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, \".filter-group{display:flex;margin-bottom:5px}.filter-group .form-control{border-right:none}.filter-group .filter-group__key,.filter-group .filter-group__type{flex:0 1 auto;width:auto}.filter-group .filter-group__value{flex:1 0 auto;width:auto}.filter-group .input-group-btn{flex:0 0;width:auto}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/filter-field.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,aAAa,iBAAiB,CAAC,4BAA4B,iBAAiB,CAAC,AAA2D,mEAAiC,cAAc,UAAU,CAAC,mCAAmC,cAAc,UAAU,CAAC,+BAA+B,SAAS,UAAU,CAAC\",\"file\":\"filter-field.vue\",\"sourcesContent\":[\".filter-group{display:flex;margin-bottom:5px}.filter-group .form-control{border-right:none}.filter-group .filter-group__type{flex:0 1 auto;width:auto}.filter-group .filter-group__key{flex:0 1 auto;width:auto}.filter-group .filter-group__value{flex:1 0 auto;width:auto}.filter-group .input-group-btn{flex:0 0;width:auto}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1349:\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, \".job-item-modal .modal-footer{text-align:center!important}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/item.vue\"],\"names\":[],\"mappings\":\"AAAA,8BAA8B,2BAA4B,CAAC\",\"file\":\"item.vue\",\"sourcesContent\":[\".job-item-modal .modal-footer{text-align:center !important}\"],\"sourceRoot\":\"webpack://\"}]);\n\t\n\t// exports\n\n\n/***/ },\n\n/***/ 1354:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <form class=config-form role=form v-el:form> <div v-if=hasFeatures class=\\\"vertical-field form-group\\\"> <span class=form-help v-popover=featuresDescription popover-trigger=hover popover-placement=left> </span> <label class=config-label>{{ _('Features') }}</label> <feature-field v-ref:features v-for=\\\"feature in backend.features\\\" :key=feature.key :config=config :feature=feature> </feature-field> </div> <div v-if=hasFilters class=\\\"vertical-field form-group\\\"> <span class=form-help v-popover=filtersDescription popover-trigger=hover popover-placement=left> </span> <label class=config-label>{{ _('Filters') }}</label> <filter-field v-for=\\\"(idx,filter) in config.filters\\\" :choices=backend.filters :key=filter.key :value=filter.value :index=idx :type=filter.type v-ref:filters> </filter-field> <label :for=field.id class=help-block :key=error v-for=\\\"error in errors\\\">{{error}}</label> <button class=\\\"btn btn-success\\\" @click.prevent=addFilter> <span class=\\\"fa fa-fw fa-plus\\\"></span> {{ _('Add a filter') }} </button> </div> </form> \";\n\n/***/ },\n\n/***/ 1355:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"checkbox harvester-feature-checkbox\\\"> <label :for=id> <input v-el:checkbox type=checkbox :id=id :name=key :checked=checked @input=onChange /> {{ feature.label }} </label> <span v-if=feature.description class=form-help v-popover=feature.description popover-trigger=hover popover-placement=top> </span> </div> \";\n\n/***/ },\n\n/***/ 1356:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div class=\\\"input-group filter-group\\\"> <select class=\\\"form-control filter-group__type\\\" v-model=type @change=onChange> <option v-for=\\\"t in TYPES\\\" :value=t.value :key=t.value>{{ t.label }}</option> </select> <select class=\\\"form-control filter-group__key\\\" v-model=key @change=onChange> <option v-for=\\\"c in choices\\\" :value=c.key :key=c.key>{{ c.label }}</option> </select> <input type=text class=\\\"form-control filter-group__value\\\" v-model=value :placeholder=placeholder @change=onChange> <span class=input-group-btn> <button class=\\\"btn btn-danger\\\" type=button @click.prevent=onDelete> <span class=\\\"fa fa-remove\\\"> </span></button> </span> </div> \";\n\n/***/ },\n\n/***/ 1357:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div> <v-form v-ref:form :fields=fields :model=source></v-form> <config-form v-ref:config-form :config=\\\"source.config || {}\\\" :backend=backend></config-form> <v-form v-ref:post-form :fields=postFields :model=source></v-form> </div> \";\n\n/***/ },\n\n/***/ 1358:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <modal class=job-item-modal v-ref:modal :class=\\\"{\\n 'modal-success': item.status === 'done',\\n 'modal-danger': item.status === 'failed',\\n 'modal-warning': item.status === 'skipped'\\n }\\\"> <div class=modal-body> <dl class=clearfix> <dt>{{ _('Remote ID') }}</dt> <dd>{{ item.remote_id }}</dd> <dt>{{ _('Started at') }}</dt> <dd>{{ item.started | dt }}</dd> <dt>{{ _('Ended at') }}</dt> <dd>{{ item.ended | dt }}</dd> <dt>{{ _('Status') }}</dt> <dd><span class=\\\"label label-{{ item.status | statusClass }}\\\">{{ item.status | statusI18n }}</span></dd> <dt v-if=item.dataset>{{ _('Dataset') }}</dt> <dd v-if=item.dataset> <dataset-card class=col-xs-12 clickable v-if=item.dataset.id :datasetid=item.dataset.id> </dataset-card> <dataset-card class=col-xs-12 clickable v-if=!item.dataset.id :dataset=item.dataset> </dataset-card> </dd> <dt v-if=item.errors.length>{{ _('Errors') }}</dt> <dd v-if=item.errors.length> <div v-for=\\\"error in item.errors\\\"> {{{error.message | markdown}}} <pre>{{error.details}}</pre> </div> </dd> </dl> </div> <footer class=modal-footer> <button type=button class=\\\"btn btn-outline btn-flat pointer\\\" @click=$refs.modal.close> {{ _('Close') }} </button> </footer> </modal> \";\n\n/***/ },\n\n/***/ 1359:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div> <datatable icon=cog :title=title bodyclass=\\\"table-responsive no-padding\\\" :p=p :track=false :loading=\\\"loading !== undefined ? loading : job.loading\\\" :fields=fields track=remote_id :empty=empty :tint=\\\"job.status | statusClass\\\"> <div class=row slot=header> <div class=col-xs-12 :class=\\\"{'col-lg-6': job.created}\\\" v-show=withSlot> <slot></slot> </div> <dl class=\\\"dl-horizontal col-xs-12\\\" :class=\\\"{'col-lg-6': withSlot}\\\" v-show=job.created> <dt>{{ _('Created at') }}</dt> <dd>{{ job.created | dt }}</dd> <dt>{{ _('Ended at') }}</dt> <dd>{{ job.ended | dt }}</dd> <dt>{{ _('Status') }}</dt> <dd><span class=\\\"label label-{{ job.status | statusClass }}\\\">{{ job.status | statusI18n }}</span></dd> <dt v-if=\\\"job.errors && job.errors.length\\\">{{ _('Errors') }}</dt> <dd v-if=\\\"job.errors && job.errors.length\\\"> <div v-for=\\\"error in job.errors\\\"> <p><strong>{{{error.message | markdown}}}</strong></p> <div v-if=error.details> <code><pre>{{error.details}}</pre></code> </div> </div> </dd> <dt v-if=\\\"job.items && job.items.length\\\">{{ _('Items') }}</dt> <dd v-if=\\\"job.items && job.items.length\\\"> <span class=text-warning v-tooltip tooltip-placement=top :title=\\\"_('Number of skipped items')\\\">{{job.items | count 'skipped'}}</span> / <span class=text-warning v-tooltip tooltip-placement=top :title=\\\"_('Number of archived items')\\\">{{job.items | count 'archived'}}</span> / <span class=text-danger v-tooltip tooltip-placement=top :title=\\\"_('Number of failed items')\\\">{{job.items | count 'failed'}}</span> / <span class=text-green v-tooltip tooltip-placement=top :title=\\\"_('Number of succeed items')\\\">{{job.items | count 'done'}}</span> / <strong>{{job.items.length}}</strong> </dd> </dl> </div> </datatable> </div> \";\n\n/***/ },\n\n/***/ 1360:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div> <job-widget :job=job :loading=loading :empty=empty with-slot> <div class=text-center> <button class=\\\"btn btn-primary btn-flat\\\" @click=preview> <span class=\\\"fa fa-cog\\\"></span> {{ _('Preview') }} </button> </div> </job-widget> </div> \";\n\n/***/ },\n\n/***/ 1372:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1387)\n\t__vue_script__ = __webpack_require__(1330)\n\t__vue_template__ = __webpack_require__(1354)\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/***/ 1373:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1388)\n\t__vue_script__ = __webpack_require__(1331)\n\t__vue_template__ = __webpack_require__(1355)\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/***/ 1374:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1389)\n\t__vue_script__ = __webpack_require__(1332)\n\t__vue_template__ = __webpack_require__(1356)\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/***/ 1375:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1333)\n\t__vue_template__ = __webpack_require__(1357)\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/***/ 1376:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__webpack_require__(1390)\n\t__vue_script__ = __webpack_require__(1334)\n\t__vue_template__ = __webpack_require__(1358)\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/***/ 1377:\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __vue_script__, __vue_template__\n\t__vue_script__ = __webpack_require__(1336)\n\t__vue_template__ = __webpack_require__(1360)\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/***/ 1387:\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__(1346);\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!./config-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!./config-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/***/ 1388:\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__(1347);\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!./feature-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!./feature-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/***/ 1389:\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__(1348);\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!./filter-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!./filter-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/***/ 1390:\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__(1349);\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!./item.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!./item.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/***/ 1467:\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 _assign = __webpack_require__(136);\n\t\n\tvar _assign2 = _interopRequireDefault(_assign);\n\t\n\tvar _box = __webpack_require__(985);\n\t\n\tvar _box2 = _interopRequireDefault(_box);\n\t\n\tvar _formLayout = __webpack_require__(1212);\n\t\n\tvar _formLayout2 = _interopRequireDefault(_formLayout);\n\t\n\tvar _form = __webpack_require__(1375);\n\t\n\tvar _form2 = _interopRequireDefault(_form);\n\t\n\tvar _source = __webpack_require__(1187);\n\t\n\tvar _source2 = _interopRequireDefault(_source);\n\t\n\tvar _item = __webpack_require__(1376);\n\t\n\tvar _item2 = _interopRequireDefault(_item);\n\t\n\tvar _preview = __webpack_require__(1377);\n\t\n\tvar _preview2 = _interopRequireDefault(_preview);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar MASK = ['id', 'name', 'url', 'description', 'owner', 'last_job{status,ended}', 'organization', 'backend', 'validation{state}', 'config', 'active', 'autoarchive'];\n\t\n\texports.default = {\n\t name: 'harvester-edit',\n\t data: function data() {\n\t return {\n\t source: new _source2.default({ mask: MASK }),\n\t previewSource: undefined\n\t };\n\t },\n\t\n\t components: { Box: _box2.default, FormLayout: _formLayout2.default, HarvestForm: _form2.default, Preview: _preview2.default },\n\t computed: {\n\t title: function title() {\n\t if (this.source.name) {\n\t return this._('Edit harvest source \"{name}\"', {\n\t name: this.source.name\n\t });\n\t }\n\t }\n\t },\n\t ready: function ready() {\n\t var _this = this;\n\t\n\t this.source.$on('updated', function () {\n\t _this.$nextTick(function () {\n\t _this.previewSource = (0, _assign2.default)(new _source2.default(), _this.$refs.form.serialize());\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.source.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._('The harvester has been updated.')\n\t });\n\t this.$go({ name: 'harvester', params: { oid: this.source.id } });\n\t },\n\t cancel: function cancel() {\n\t this.$go({ name: 'harvester', params: { oid: this.source.id } });\n\t }\n\t },\n\t events: {\n\t 'harvest:job:item:selected': function harvestJobItemSelected(item) {\n\t this.$root.$modal(_item2.default, { item: item });\n\t return true;\n\t },\n\t 'harvest:source:form:changed': function harvestSourceFormChanged(data) {\n\t this.previewSource = (0, _assign2.default)(new _source2.default(), data);\n\t }\n\t },\n\t route: {\n\t data: function data() {\n\t var _this2 = this;\n\t\n\t this.$scrollTo(this.$el);\n\t this.source.fetch(this.$route.params.oid);\n\t this.source.$once('updated', function () {\n\t _this2.updHandler = _this2.source.$once('updated', _this2.on_success);\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/***/ 1564:\n/***/ function(module, exports) {\n\n\tmodule.exports = \" <div> <form-layout icon=tasks :title=title :save=save :cancel=cancel footer=true :model=source> <harvest-form v-ref:form :source=source></harvest-form> <div v-if=previewSource class=row slot=extras> <preview class=col-xs-12 :source=previewSource from-config></preview> </div> </form-layout> </div> \";\n\n/***/ }\n\n});\n\n\n/** WEBPACK FOOTER **\n ** chunks/7.11ac4de064ae59691d49.js\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./harvester-edit.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./harvester-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/harvester-edit.vue\n ** module id = 885\n ** module chunks = 7\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 **/","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 = 986\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 = 990\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 = 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 **/","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 = 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=\\\"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 = 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 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 = 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 **/","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 = 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 8 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!./widget.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./widget.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./widget.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/datatable/widget.vue\n ** module id = 1039\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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('!['+chunk+']('+sanitizedLink+' \"'+e.__localize('enter image title here')+'\")');\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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 9 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 **/","var map = {\n\t\"./avatar.vue\": 1161,\n\t\"./date.vue\": 1162,\n\t\"./datetime.vue\": 1163,\n\t\"./deletable-text.vue\": 1164,\n\t\"./label.vue\": 1165,\n\t\"./metric.vue\": 1166,\n\t\"./playpause.vue\": 1167,\n\t\"./progress-bars.vue\": 1168,\n\t\"./since.vue\": 1169,\n\t\"./text.vue\": 1170,\n\t\"./thumbnail.vue\": 1171,\n\t\"./timeago.vue\": 1172,\n\t\"./visibility.vue\": 1173\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1098;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/datatable/cells ^\\.\\/.*\\.vue$\n ** module id = 1098\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","<style lang=\"less\">\n.datatable {\n td.ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow:ellipsis;\n max-width: 0;\n }\n}\n</style>\n\n<script>\nimport Vue from 'vue';\nimport utils from 'utils';\n\nexport default {\n name: 'datatable-cell',\n default: '',\n props: {\n field: Object,\n item: Object\n },\n computed: {\n value() {\n if (!this.field || !this.item) {\n return this.$options.default;\n }\n\n if (!this.field.key) {\n result = this.item;\n } else if (utils.isFunction(this.field.key)) {\n result = this.field.key(this.item);\n } else {\n var parts = this.field.key.split('.'),\n result = this.item;\n\n for (var i=0; i < parts.length; i++) {\n var key = parts[i];\n if (!result || !result.hasOwnProperty(key)) {\n result = null;\n break;\n }\n result = result[key];\n }\n }\n\n return result || this.$options.default;\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** cell.vue?32e64b86\n **/","<style lang=\"less\">\n.datatable {\n td.avatar-cell {\n padding: 3px;\n }\n}\n</style>\n\n<template>\n<img :src=\"value | avatar_url field.width\" :width=\"field.width\" :height=\"field.width\" />\n</template>\n\n<script>\nexport default {\n attached() {\n // Dirty hack to fix class on field/td iteration\n this.$el.closest('td').classList.add('avatar-cell');\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** avatar.vue?818a893c\n **/","<template>\n<time :datetime=\"value | dt YYYY-MM-DD\">{{value | dt L}}</time>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-date',\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** date.vue?9d8e4828\n **/","<template>\n<time :datetime=\"value\">{{value | dt L LT}}</time>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-datetime'\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** datetime.vue?1e69cd76\n **/","<template>\n<del v-if=\"item.deleted\"\n :title=\"_('This item has been deleted')\"\n :datetime=\"item.deleted\">{{value}}</del>\n<span v-else>{{value}}</span>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-deletable-text'\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** deletable-text.vue?ec2b6806\n **/","<style>\n.label {\n margin: 1px;\n}\n</style>\n\n<template>\n<span v-for=\"label in labels\" class=\"label label-{{label | color}}\">\n {{label | format}}\n</span>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-label',\n filters: {\n format(value) {\n return this.field.hasOwnProperty('label_func')\n ? this.field.label_func(value)\n : value;\n },\n color(value) {\n return this.field.hasOwnProperty('label_type')\n ? this.field.label_type(value)\n : 'default'\n },\n },\n computed: {\n labels() {\n return this.value instanceof Array\n ? this.value\n : [this.value]\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** label.vue?6899e28a\n **/","<template>\n<span class=\"badge\" :class=\"{\n 'bg-green': value > 0,\n 'bg-red': value == 0\n }\">{{value}}</span>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-metric',\n default: 0\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** metric.vue?58e89197\n **/","<template>\n<i class=\"fa fa-fw fa-{{value ? 'play' : 'stop'}} text-{{value ? 'green' : 'red'}}\"></i>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-playpause',\n default: false,\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** playpause.vue?209d0d4e\n **/","<template>\n<div class=\"progress progress-sm\">\n <span class=\"progress-bar progress-bar-{{ progress_class }}\"\n :style=\"{width: value * 100 + '%'}\"\n :title=\"_('Score:') + ' ' + value * 100\">\n </span>\n</div>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-progress-bars',\n computed: {\n progress_class: function() {\n if (this.value < 1/3) {\n return 'danger';\n }\n else if (this.value < 2/3) {\n return 'warning';\n }\n else if (this.value < 0.9) {\n return 'primary';\n }\n else {\n return 'success';\n }\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** progress-bars.vue?0f737b62\n **/","<template>\n<time :datetime=\"value\">{{value | since}}</time>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-since'\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** since.vue?d24bbd4c\n **/","<template><span>{{value}}</span></template>\n\n<script>\nexport default {\n name: 'datatable-cell-text'\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** text.vue?2f46872d\n **/","<style lang=\"less\">\n.datatable {\n td.thumbnail-cell {\n padding: 3px;\n }\n}\n</style>\n\n<template>\n<img :src=\"src\" :width=\"field.width\" :height=\"field.width\" />\n</template>\n\n<script>\nimport placeholders from 'helpers/placeholders';\n\nexport default {\n attached() {\n // Dirty hack to fix class on field/td iteration\n this.$el.closest('td').classList.add('thumbnail-cell');\n },\n computed: {\n src() {\n if (this.value) {\n return this.value;\n } else if (this.field.placeholder) {\n return placeholders.getFor(this.field.placeholder);\n } else {\n return placeholders.generic;\n }\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** thumbnail.vue?7713adc5\n **/","<template>\n<time :datetime=\"value\" class=\"timeago\">{{value | timeago}}</time>\n</template>\n\n<script>\nexport default {\n name: 'datatable-cell-timeago'\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** timeago.vue?0a023231\n **/","<template>\n<span class=\"label label-{{ status.type }}\">{{ status.label }}</span>\n</template>\n\n<script>\nimport {_} from 'i18n';\n\nconst VISIBILITIES = {\n deleted: {\n label: _('Deleted'),\n type: 'danger'\n },\n archived: {\n label: _('Archived'),\n type: 'warning'\n },\n private: {\n label: _('Private'),\n type: 'info'\n },\n public: {\n label: _('Public'),\n type: 'success'\n }\n};\n\nexport default {\n name: 'datatable-cell-visibility',\n computed: {\n status: function() {\n if (!this.item) return;\n if (this.item.deleted) {\n return VISIBILITIES.deleted;\n } else if (this.item.archived) {\n return VISIBILITIES.archived;\n } else if (this.item.private) {\n return VISIBILITIES.private;\n } else {\n return VISIBILITIES.public;\n }\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** visibility.vue?14018cf8\n **/","<template>\n<tr class=\"pointer\"\n :class=\"{ 'active': selected }\"\n @click=\"item_click(item)\">\n <td v-for=\"field in fields\" track-by=\"key\"\n :class=\"{\n 'text-center': field.align === 'center',\n 'text-left': field.align === 'left',\n 'text-right': field.align === 'right',\n 'ellipsis': field.ellipsis\n }\">\n <component :is=\"field.type || 'text'\" :item=\"item\" :field=\"field\">\n </component>\n </td>\n</tr>\n</template>\n\n<script>\nimport Vue from 'vue';\nimport Cell from './cell.vue';\n\nexport default {\n name: 'datatable-row',\n props: {\n item: Object,\n fields: Array,\n selected: {\n type: Boolean,\n default: false\n }\n },\n created() {\n // Loads cells from fields definitions\n for (let field of this.fields) {\n this.load_cell(field.type || 'text');\n }\n },\n methods: {\n item_click(item) {\n this.$dispatch('datatable:item:click', item);\n },\n /**\n * Asynchronously load view (Webpack Lazy loading compatible)\n * @param {string} name the filename (basename) of the view to load.\n * @param {Function} callback An optional callback executed\n * in the application scope when\n * the view is loaded\n */\n load_cell(name) {\n if (!this.$options.components.hasOwnProperty(name)) {\n // Import syntax required for dynamic components loading\n // (webpack 1.x only support ES5 syntax)\n // See:\n // - https://webpack.github.io/docs/context.html#dynamic-requires\n // - https://webpack.github.io/docs/code-splitting.html#es6-modules\n const options = require('./cells/' + name + '.vue');\n if (!options.hasOwnProperty('mixins')) {\n options.mixins = [];\n }\n if (!(Cell in options.mixins)) {\n options.mixins.push(Cell);\n }\n this.$options.components[name] = Vue.extend(options);\n }\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** row.vue?b18e84da\n **/","<style lang=\"less\">\n.datatable {\n th {\n white-space: nowrap;\n }\n}\n</style>\n\n<template>\n<table class=\"table table-hover datatable\">\n <thead>\n <tr>\n <th v-for=\"field in fields\"\n :class=\"classes_for(field)\"\n @click=\"header_click(field)\"\n :width=\"field.width | thwidth\">\n {{field.label}}\n <span class=\"fa fa-fw\" v-if=\"field.sort\"\n :class=\"sort_classes_for(field)\"></span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"item in p.data\" :track-by=\"trackBy\" is=\"row\"\n :item=\"item\" :fields=\"fields\" :selected=\"item === selected\">\n </tr>\n </tbody>\n</table>\n</template>\n\n<script>\nimport Row from './row.vue';\n\nexport default {\n name: 'datatable',\n components: {Row},\n props: {\n p: Object,\n fields: Array,\n track: {\n type: null,\n default: 'id'\n }\n },\n data() {\n return {\n selected: null\n };\n },\n computed: {\n remote() {\n return this.p && this.p.serverside;\n },\n trackBy() {\n return this.track || '';\n }\n },\n events: {\n 'datatable:item:click': function(item) {\n this.selected = item;\n return true;\n }\n },\n methods: {\n header_click(field) {\n if (field.sort) {\n this.p.sort(this.sort_for(field));\n }\n },\n sort_for(field) {\n return this.remote ? field.sort : field.key;\n },\n classes_for(field) {\n const classes = {pointer: Boolean(field.sort)};\n const align = field.align || 'left';\n\n classes[`text-${align}`] = true;\n\n return classes;\n },\n sort_classes_for(field) {\n const classes = {};\n\n if (this.p.sorted != this.sort_for(field)) {\n classes['fa-sort'] = true;\n } else if (!this.p.reversed) {\n classes['fa-sort-asc'] = true;\n } else if (this.p.reversed) {\n classes['fa-sort-desc'] = true;\n }\n\n return classes;\n }\n },\n filters: {\n thwidth(value) {\n switch(value) {\n case undefined:\n return '';\n case 0:\n return 0;\n default:\n return value + 5;\n }\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** table.vue?5ab4c5a5\n **/","<style lang=\"less\">\n.datatable-widget {\n .datatable-header > .row {\n width: 100%;\n }\n}\n</style>\n\n<template>\n<div>\n<box :title=\"title\" :icon=\"icon\"\n :boxclass=\"boxclasses\"\n bodyclass=\"table-responsive no-padding\"\n footerclass=\"text-center clearfix\"\n :loading=\"loading !== undefined ? loading : p.loading\"\n :footer=\"show_footer\">\n <aside slot=\"tools\">\n <div class=\"btn-group\" v-show=\"downloads.length\">\n <button type=\"button\" class=\"btn btn-box-tool dropdown-toggle\"\n data-toggle=\"dropdown\" aria-expanded=\"false\">\n <span class=\"fa fa-download\"></span>\n </button>\n <ul class=\"dropdown-menu\" role=\"menu\">\n <li v-for=\"download in downloads\">\n <a :href=\"download.url\">{{download.label}}</a>\n </li>\n </ul>\n </div>\n <div class=\"box-search\" v-if=\"p.has_search\">\n <div class=\"input-group\">\n <input type=\"text\" class=\"form-control input-sm pull-right\"\n style=\"width: 150px;\" :placeholder=\"_('Search')\"\n v-model=\"search_query\" debounce=\"500\" @keyup.enter=\"search\">\n <div class=\"input-group-btn\">\n <button class=\"btn btn-sm btn-flat\" @click=\"search\">\n <i class=\"fa fa-search\"></i>\n </button>\n </div>\n </div>\n </div>\n </aside>\n <header class=\"datatable-header\">\n <slot name=\"header\"></slot>\n </header>\n <datatable v-if=\"p.has_data\" :p=\"p\" :fields=\"fields\" :track=\"track\">\n </datatable>\n <div class=\"text-center lead\" v-if=\"!p.has_data\">\n {{ empty || _('No data')}}\n </div>\n <footer slot=\"footer\">\n <div :class=\"{ 'pull-right': p.pages > 1 }\" v-el:footer_container>\n <slot name=\"footer\"></slot>\n </div>\n <pagination-widget :p=\"p\"></pagination-widget>\n </footer>\n</box>\n</div>\n</template>\n\n<script>\nimport Box from 'components/containers/box.vue';\nimport Datatable from 'components/datatable/table.vue';\nimport PaginationWidget from 'components/pagination.vue';\n\nexport default {\n name: 'datatable-widget',\n components: {Box, Datatable, PaginationWidget},\n data() {\n return {\n search_query: null,\n selected: null,\n };\n },\n computed: {\n has_footer_children() {\n return this.$els.footer_container\n && this.$els.footer_container.children.length;\n },\n show_footer() {\n return (this.p && this.p.pages > 1) || this.has_footer_children;\n },\n boxclasses() {\n return [\n 'datatable-widget',\n this.tint ? 'box-' + this.tint : 'box-solid',\n this.boxclass\n ].join(' ');\n }\n },\n props: {\n p: Object,\n title: String,\n icon: String,\n fields: Array,\n boxclass: String,\n tint: String,\n empty: String,\n loading: {\n type: Boolean,\n default: undefined\n },\n track: {\n type: null,\n default: 'id'\n },\n downloads: {\n type: Array,\n default: () => [],\n }\n },\n methods: {\n search() {\n this.p.search(this.search_query);\n }\n },\n watch: {\n search_query(query) {\n this.p.search(query);\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** widget.vue?0d49f56c\n **/","<template>\n <ul class=\"pagination pagination-sm no-margin\" v-show=\"p && p.pages > 1\">\n <li :class=\"{ 'disabled': !p || p.page == 1 }\">\n <a :title=\"_('First page')\" class=\"pointer\"\n @click=\"p.go_to_page(1)\">\n &laquo;\n </a>\n </li>\n <li :class=\"{ 'disabled': !p || p.page == 1 }\">\n <a :title=\"_('Previous page')\" class=\"pointer\"\n @click=\"p.previousPage()\">\n &lsaquo;\n </a>\n </li>\n <li v-for=\"current in range\" :class=\"{ 'active': current == p.page }\">\n <a @click=\"p.go_to_page(current)\" class=\"pointer\">{{ current }}</a>\n </li>\n <li :class=\"{ 'disabled': !p || p.page == p.pages }\">\n <a :title=\"_('Next page')\" class=\"pointer\"\n @click=\"p.nextPage()\">\n &rsaquo;\n </a>\n </li>\n <li :class=\"{ 'disabled': !p || p.page == p.pages }\">\n <a :title=\"_('Last page')\" class=\"pointer\"\n @click=\"p.go_to_page(p.pages)\">\n &raquo;\n </a>\n </li>\n </ul>\n</template>\n\n<script>\nconst nb = 2;\n\nexport default {\n name: 'pagination-widget',\n props: {\n p: Object\n },\n computed: {\n start() {\n if (!this.p) {\n return -1;\n }\n return this.p.page <= nb ? 1 : this.p.page - nb;\n },\n end() {\n if (!this.p) {\n return -1;\n }\n return this.p.page + nb > this.p.pages ? this.p.pages : this.p.page + nb;\n },\n range() {\n if (isNaN(this.start) || isNaN(this.end) || this.start >= this.end) return [];\n return Array\n .apply(0, Array(this.end + 1 - this.start))\n .map((element, index) => {\n return index + this.start;\n });\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** pagination.vue?0a6a8678\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cell.vue\"],\"names\":[],\"mappings\":\"AAAA,uBAAuB,mBAAmB,gBAAgB,uBAAuB,WAAW,CAAC\",\"file\":\"cell.vue\",\"sourcesContent\":[\".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}\"],\"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/datatable/cell.vue\n ** module id = 1135\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".datatable td.avatar-cell{padding:3px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cells/avatar.vue\"],\"names\":[],\"mappings\":\"AAAA,0BAA0B,WAAW,CAAC\",\"file\":\"avatar.vue\",\"sourcesContent\":[\".datatable td.avatar-cell{padding:3px}\"],\"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/datatable/cells/avatar.vue\n ** module id = 1136\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".datatable td.thumbnail-cell{padding:3px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cells/thumbnail.vue\"],\"names\":[],\"mappings\":\"AAAA,6BAA6B,WAAW,CAAC\",\"file\":\"thumbnail.vue\",\"sourcesContent\":[\".datatable td.thumbnail-cell{padding:3px}\"],\"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/datatable/cells/thumbnail.vue\n ** module id = 1137\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".datatable th{white-space:nowrap}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/table.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,kBAAkB,CAAC\",\"file\":\"table.vue\",\"sourcesContent\":[\".datatable th{white-space:nowrap}\"],\"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/datatable/table.vue\n ** module id = 1138\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".datatable-widget .datatable-header>.row{width:100%}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/widget.vue\"],\"names\":[],\"mappings\":\"AAAA,yCAAyC,UAAU,CAAC\",\"file\":\"widget.vue\",\"sourcesContent\":[\".datatable-widget .datatable-header>.row{width:100%}\"],\"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/datatable/widget.vue\n ** module id = 1139\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".label{margin:1px}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/datatable/cells/label.vue\"],\"names\":[],\"mappings\":\"AACA,OACI,UAAY,CACf\",\"file\":\"label.vue\",\"sourcesContent\":[\"\\n.label {\\n margin: 1px;\\n}\\n\"],\"sourceRoot\":\"webpack://\"}]);\n\n// exports\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/css-loader?sourceMap!./~/vue-loader/lib/style-rewriter.js!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/datatable/cells/label.vue\n ** module id = 1140\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <img :src=\\\"value | avatar_url field.width\\\" :width=field.width :height=field.width /> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/avatar.vue\n ** module id = 1143\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <time :datetime=\\\"value | dt YYYY-MM-DD\\\">{{value | dt L}}</time> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/date.vue\n ** module id = 1144\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <time :datetime=value>{{value | dt L LT}}</time> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/datetime.vue\n ** module id = 1145\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <del v-if=item.deleted :title=\\\"_('This item has been deleted')\\\" :datetime=item.deleted>{{value}}</del> <span v-else>{{value}}</span> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/deletable-text.vue\n ** module id = 1146\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <span v-for=\\\"label in labels\\\" class=\\\"label label-{{label | color}}\\\"> {{label | format}} </span> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/label.vue\n ** module id = 1147\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <span class=badge :class=\\\"{\\n 'bg-green': value > 0,\\n 'bg-red': value == 0\\n }\\\">{{value}}</span> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/metric.vue\n ** module id = 1148\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <i class=\\\"fa fa-fw fa-{{value ? 'play' : 'stop'}} text-{{value ? 'green' : 'red'}}\\\"></i> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/playpause.vue\n ** module id = 1149\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <div class=\\\"progress progress-sm\\\"> <span class=\\\"progress-bar progress-bar-{{ progress_class }}\\\" :style=\\\"{width: value * 100 + '%'}\\\" :title=\\\"_('Score:') + ' ' + value * 100\\\"> </span> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/progress-bars.vue\n ** module id = 1150\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <time :datetime=value>{{value | since}}</time> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/since.vue\n ** module id = 1151\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \"<span>{{value}}</span>\";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/text.vue\n ** module id = 1152\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <img :src=src :width=field.width :height=field.width /> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/thumbnail.vue\n ** module id = 1153\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <time :datetime=value class=timeago>{{value | timeago}}</time> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/timeago.vue\n ** module id = 1154\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <span class=\\\"label label-{{ status.type }}\\\">{{ status.label }}</span> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/cells/visibility.vue\n ** module id = 1155\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <tr class=pointer :class=\\\"{ 'active': selected }\\\" @click=item_click(item)> <td v-for=\\\"field in fields\\\" track-by=key :class=\\\"{\\n 'text-center': field.align === 'center',\\n 'text-left': field.align === 'left',\\n 'text-right': field.align === 'right',\\n 'ellipsis': field.ellipsis\\n }\\\"> <component :is=\\\"field.type || 'text'\\\" :item=item :field=field> </component> </td> </tr> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/row.vue\n ** module id = 1156\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <table class=\\\"table table-hover datatable\\\"> <thead> <tr> <th v-for=\\\"field in fields\\\" :class=classes_for(field) @click=header_click(field) :width=\\\"field.width | thwidth\\\"> {{field.label}} <span class=\\\"fa fa-fw\\\" v-if=field.sort :class=sort_classes_for(field)></span> </th> </tr> </thead> <tbody> <tr v-for=\\\"item in p.data\\\" :track-by=trackBy is=row :item=item :fields=fields :selected=\\\"item === selected\\\"> </tr> </tbody> </table> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/table.vue\n ** module id = 1157\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <div> <box :title=title :icon=icon :boxclass=boxclasses bodyclass=\\\"table-responsive no-padding\\\" footerclass=\\\"text-center clearfix\\\" :loading=\\\"loading !== undefined ? loading : p.loading\\\" :footer=show_footer> <aside slot=tools> <div class=btn-group v-show=downloads.length> <button type=button class=\\\"btn btn-box-tool dropdown-toggle\\\" data-toggle=dropdown aria-expanded=false> <span class=\\\"fa fa-download\\\"></span> </button> <ul class=dropdown-menu role=menu> <li v-for=\\\"download in downloads\\\"> <a :href=download.url>{{download.label}}</a> </li> </ul> </div> <div class=box-search v-if=p.has_search> <div class=input-group> <input type=text class=\\\"form-control input-sm pull-right\\\" style=\\\"width: 150px\\\" :placeholder=\\\"_('Search')\\\" v-model=search_query debounce=500 @keyup.enter=search> <div class=input-group-btn> <button class=\\\"btn btn-sm btn-flat\\\" @click=search> <i class=\\\"fa fa-search\\\"></i> </button> </div> </div> </div> </aside> <header class=datatable-header> <slot name=header></slot> </header> <datatable v-if=p.has_data :p=p :fields=fields :track=track> </datatable> <div class=\\\"text-center lead\\\" v-if=!p.has_data> {{ empty || _('No data')}} </div> <footer slot=footer> <div :class=\\\"{ 'pull-right': p.pages > 1 }\\\" v-el:footer_container> <slot name=footer></slot> </div> <pagination-widget :p=p></pagination-widget> </footer> </box> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/datatable/widget.vue\n ** module id = 1158\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","module.exports = \" <ul class=\\\"pagination pagination-sm no-margin\\\" v-show=\\\"p && p.pages > 1\\\"> <li :class=\\\"{ 'disabled': !p || p.page == 1 }\\\"> <a :title=\\\"_('First page')\\\" class=pointer @click=p.go_to_page(1)> &laquo; </a> </li> <li :class=\\\"{ 'disabled': !p || p.page == 1 }\\\"> <a :title=\\\"_('Previous page')\\\" class=pointer @click=p.previousPage()> &lsaquo; </a> </li> <li v-for=\\\"current in range\\\" :class=\\\"{ 'active': current == p.page }\\\"> <a @click=p.go_to_page(current) class=pointer>{{ current }}</a> </li> <li :class=\\\"{ 'disabled': !p || p.page == p.pages }\\\"> <a :title=\\\"_('Next page')\\\" class=pointer @click=p.nextPage()> &rsaquo; </a> </li> <li :class=\\\"{ 'disabled': !p || p.page == p.pages }\\\"> <a :title=\\\"_('Last page')\\\" class=pointer @click=p.go_to_page(p.pages)> &raquo; </a> </li> </ul> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/pagination.vue\n ** module id = 1159\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./cell.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./cell.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/datatable/cell.vue\n ** module id = 1160\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./avatar.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./avatar.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./avatar.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/datatable/cells/avatar.vue\n ** module id = 1161\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./date.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./date.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/datatable/cells/date.vue\n ** module id = 1162\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./datetime.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./datetime.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/datatable/cells/datetime.vue\n ** module id = 1163\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./deletable-text.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./deletable-text.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/datatable/cells/deletable-text.vue\n ** module id = 1164\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\nrequire(\"!!vue-style?sourceMap!css?sourceMap!../../../../node_modules/vue-loader/lib/style-rewriter.js!../../../../node_modules/vue-loader/lib/selector.js?type=style&index=0!./label.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./label.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./label.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/datatable/cells/label.vue\n ** module id = 1165\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./metric.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./metric.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/datatable/cells/metric.vue\n ** module id = 1166\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./playpause.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./playpause.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/datatable/cells/playpause.vue\n ** module id = 1167\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./progress-bars.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./progress-bars.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/datatable/cells/progress-bars.vue\n ** module id = 1168\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./since.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./since.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/datatable/cells/since.vue\n ** module id = 1169\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./text.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./text.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/datatable/cells/text.vue\n ** module id = 1170\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./thumbnail.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./thumbnail.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./thumbnail.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/datatable/cells/thumbnail.vue\n ** module id = 1171\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./timeago.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./timeago.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/datatable/cells/timeago.vue\n ** module id = 1172\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./visibility.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./visibility.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/datatable/cells/visibility.vue\n ** module id = 1173\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./row.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./row.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/datatable/row.vue\n ** module id = 1174\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./table.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./table.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./table.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/datatable/table.vue\n ** module id = 1175\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./pagination.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./pagination.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/pagination.vue\n ** module id = 1176\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./cell.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!./cell.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!./cell.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/datatable/cell.vue\n ** module id = 1177\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./avatar.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!./avatar.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!./avatar.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/datatable/cells/avatar.vue\n ** module id = 1178\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./thumbnail.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!./thumbnail.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!./thumbnail.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/datatable/cells/thumbnail.vue\n ** module id = 1179\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./table.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!./table.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!./table.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/datatable/table.vue\n ** module id = 1180\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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!./widget.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!./widget.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!./widget.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/datatable/widget.vue\n ** module id = 1181\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\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/vue-loader/lib/selector.js?type=style&index=0!./label.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/vue-loader/lib/selector.js?type=style&index=0!./label.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/vue-loader/lib/selector.js?type=style&index=0!./label.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!./~/vue-loader/lib/selector.js?type=style&index=0!./js/components/datatable/cells/label.vue\n ** module id = 1182\n ** module chunks = 4 5 6 7 8 9 10 15 18 20 21 22\n **/","import {Model} from 'models/base';\nimport {_} from 'i18n';\nimport log from 'logger';\n\nexport const VALIDATION_STATUS_CLASSES = {\n 'pending': 'default',\n 'accepted': 'success',\n 'refused': 'danger',\n};\n\nexport const VALIDATION_STATUS_I18N = {\n 'pending': _('Pending'),\n 'accepted': _('Accepted'),\n 'refused': _('Refused'),\n};\n\n\nexport class HarvestSource extends Model {\n fetch(ident) {\n ident = ident || this.id || this.slug;\n this.loading = true;\n if (ident) {\n this.$api('harvest.get_harvest_source',\n {ident: ident},\n this.on_fetched\n );\n } else {\n log.error('Unable to fetch HarvestSource: no identifier specified');\n }\n return this;\n }\n\n /**\n * Create or update the given harvest source.\n */\n save(on_error) {\n if (this.id) {\n return this.update(this, on_error);\n }\n this.loading = true;\n this.$api('harvest.create_harvest_source', {payload: this}, this.on_fetched, this.on_error(on_error));\n }\n\n update(data, on_error) {\n this.loading = true;\n this.$api('harvest.update_harvest_source', {\n ident: this.id,\n payload: data\n }, this.on_fetched, this.on_error(on_error));\n }\n}\n\nexport default HarvestSource;\n\n\n\n/** WEBPACK FOOTER **\n ** ./js/models/harvest/source.js\n **/","import {Model} from 'models/base';\nimport log from 'logger';\nimport {_} from 'i18n';\n\n\nexport const STATUS_CLASSES = {\n 'pending': 'default',\n 'initializing': 'primary',\n 'initialized': 'info',\n 'processing': 'info',\n 'done': 'success',\n 'done-errors': 'warning',\n 'failed': 'danger',\n 'deleted': 'danger',\n};\n\nexport const STATUS_I18N = {\n 'pending': _('Pending'),\n 'initializing': _('Initializing'),\n 'initialized': _('Initialized'),\n 'processing': _('Processing'),\n 'done': _('Done'),\n 'done-errors': _('Done with errors'),\n 'failed': _('Failed'),\n 'deleted': _('Deleted'),\n};\n\nexport class HarvestJob extends Model {\n fetch() {\n if (this.id) {\n this.loading = true;\n this.$api('harvest.get_harvest_job', {ident: this.id}, this.on_fetched);\n } else {\n log.error('Unable to fetch Job');\n }\n return this;\n }\n}\n\nexport default HarvestJob;\n\n\n\n/** WEBPACK FOOTER **\n ** ./js/models/harvest/job.js\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 Alert from 'components/alert.vue';\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\n/** WEBPACK FOOTER **\n ** form-layout.vue?dbf5bf1a\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 = 1204\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 = 1209\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 = 1212\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 = 1216\n ** module chunks = 7 23 24 25 26 27 28 29\n **/","import {List} from 'models/base';\n\nexport class HarvestBackends extends List {\n constructor(options) {\n super(options);\n this.$options.ns = 'harvest';\n this.$options.fetch = 'harvest_backends';\n }\n}\n\nexport const harvest_backends = new HarvestBackends().fetch();\nexport default harvest_backends;\n\n\n\n/** WEBPACK FOOTER **\n ** ./js/models/harvest/backends.js\n **/","import {Model} from 'models/base';\nimport log from 'logger';\nimport {_} from 'i18n';\n\n\nexport const STATUS_CLASSES = {\n 'pending': 'default',\n 'started': 'info',\n 'done': 'success',\n 'failed': 'danger',\n 'skipped': 'warning',\n 'archived': 'warning'\n};\n\nexport const STATUS_I18N = {\n 'pending': _('Pending'),\n 'started': _('Started'),\n 'done': _('Done'),\n 'failed': _('Failed'),\n 'skipped': _('Skipped'),\n 'archived': _('Archived')\n};\n\nexport default class HarvestItem extends Model {};\n\n\n\n/** WEBPACK FOOTER **\n ** ./js/models/harvest/item.js\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./job.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./job.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/harvest/job.vue\n ** module id = 1322\n ** module chunks = 7 18\n **/","<template>\n<form class=\"config-form\" role=\"form\" v-el:form>\n <!-- Features -->\n <div v-if=\"hasFeatures\" class=\"vertical-field form-group\">\n <span class=\"form-help\"\n v-popover=\"featuresDescription\" popover-trigger=\"hover\" popover-placement=\"left\">\n </span>\n <label class=\"config-label\">{{ _('Features') }}</label>\n <feature-field v-ref:features\n v-for=\"feature in backend.features\" :key=\"feature.key\"\n :config=\"config\" :feature=\"feature\">\n </feature-field>\n </div>\n <!-- Filters -->\n <div v-if=\"hasFilters\" class=\"vertical-field form-group\">\n <span class=\"form-help\"\n v-popover=\"filtersDescription\" popover-trigger=\"hover\" popover-placement=\"left\">\n </span>\n <label class=\"config-label\">{{ _('Filters') }}</label>\n <filter-field v-for=\"(idx,filter) in config.filters\"\n :choices=\"backend.filters\" :key=\"filter.key\" :value=\"filter.value\"\n :index=\"idx\" :type=\"filter.type\"\n v-ref:filters\n >\n </filter-field>\n <label :for=\"field.id\" class=\"help-block\" :key=\"error\"\n v-for=\"error in errors\">{{error}}</label>\n <button class=\"btn btn-success\" @click.prevent=\"addFilter\">\n <span class=\"fa fa-fw fa-plus\"></span>\n {{ _('Add a filter') }}\n </button>\n </div>\n</form>\n</template>\n\n<script>\nimport FeatureField from './feature-field.vue';\nimport FilterField from './filter-field.vue';\n\nexport default {\n name: 'config-form',\n components: {FeatureField, FilterField},\n data() {\n return {\n featuresDescription: this._('A set of boolean parameters to toggle'),\n filtersDescription: this._('A set of filters to apply'),\n };\n },\n events: {\n 'filter:delete': function(index) {\n this.config.filters.splice(index, 1);\n this.$nextTick(() => {\n this.$dispatch('form:change', this)\n })\n },\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 // Custom fields are not wrapped into a FormField\n 'field:value-change': function(value) {\n this.$dispatch('form:change', this);\n }\n },\n props: {\n config: {\n type: Object,\n default: () => {},\n },\n backend: Object,\n },\n computed: {\n hasFeatures() {\n return this.backend && this.backend.features.length;\n },\n hasFilters() {\n return this.backend && this.backend.filters.length;\n }\n },\n methods: {\n addFilter() {\n if (!this.config.filters) {\n this.$set('config.filters', []);\n }\n this.config.filters.push({key: undefined, value: undefined});\n this.$dispatch('form:change', this)\n },\n serialize() {\n const config = {};\n if (this.hasFeatures) {\n config.features = this.$refs.features.reduce((obj, vm) => {\n obj[vm.key] = vm.value;\n return obj;\n }, {});\n }\n if (this.hasFilters) {\n config.filters = this.$refs.filters.map(vm => ({\n key: vm.key, value: vm.value, type: vm.type\n }));\n }\n return config;\n },\n validate() {\n return true; // Always valid\n }\n }\n}\n</script>\n\n<style lang=\"less\">\n.config-form {\n .config-label {\n display: block;\n }\n}\n</style>\n\n\n\n/** WEBPACK FOOTER **\n ** config-form.vue?2ff8f39d\n **/","<template>\n<div class=\"checkbox harvester-feature-checkbox\">\n <label :for=\"id\">\n <input v-el:checkbox type=\"checkbox\"\n :id=\"id\" :name=\"key\" :checked=\"checked\"\n @input=\"onChange\"\n />\n {{ feature.label }}\n </label>\n <span v-if=\"feature.description\" class=\"form-help\"\n v-popover=\"feature.description\" popover-trigger=\"hover\" popover-placement=\"top\">\n </span>\n</div>\n</template>\n\n<script>\nexport default {\n props: {\n config: Object,\n feature: Object,\n },\n computed: {\n checked() {\n return this.key in this.features ? this.features[this.key] : this.feature.default;\n },\n features() {\n return this.config.features || {};\n },\n id() {\n return `config-feature-${this.key}`;\n },\n key() {\n return this.feature.key;\n },\n value: {\n cache: false,\n get() {\n return this.$els.checkbox.checked;\n }\n }\n },\n methods: {\n onChange(evt) {\n this.$dispatch('field:value-change', evt.target.checked);\n }\n }\n}\n</script>\n\n<style lang=\"less\">\n.harvester-feature-checkbox {\n .form-help {\n float: none;\n }\n}\n</style>\n\n\n\n/** WEBPACK FOOTER **\n ** feature-field.vue?6d589d2a\n **/","<template>\n<div class=\"input-group filter-group\">\n <select class=\"form-control filter-group__type\" v-model=\"type\" @change=\"onChange\">\n <option v-for=\"t in TYPES\" :value=\"t.value\" :key=\"t.value\">{{ t.label }}</option>\n </select>\n <select class=\"form-control filter-group__key\" v-model=\"key\" @change=\"onChange\">\n <option v-for=\"c in choices\" :value=\"c.key\" :key=\"c.key\">{{ c.label }}</option>\n </select>\n <input type=\"text\" class=\"form-control filter-group__value\" v-model=\"value\"\n :placeholder=\"placeholder\" @change=\"onChange\"></input>\n <span class=\"input-group-btn\">\n <button class=\"btn btn-danger\" type=\"button\" @click.prevent=\"onDelete\">\n <span class=\"fa fa-remove\">\n </button>\n </span>\n</div>\n</template>\n\n<script>\nimport {_} from 'i18n';\n\nconst TYPES = [\n {value: 'include', label: _('Include')},\n {value: 'exclude', label: _('Exclude')},\n];\n\nexport default {\n data() {\n return {TYPES};\n },\n props: {\n choices: Array,\n type: {\n type: String,\n validator: value => TYPES.map(t => t.value).includes(value),\n default: 'include',\n },\n key: [String, null],\n value: undefined,\n index: Number,\n },\n computed: {\n hasData() {\n return this.key || this.value;\n },\n isDefined() {\n return this.key && this.value;\n },\n placeholder() {\n if (!this.key || !this.choices) return;\n return this.choices.find(c => c.key == this.key).description;\n }\n },\n methods: {\n onChange(evt) {\n this.$dispatch('field:value-change', evt.target.value);\n },\n onDelete() {\n this.$dispatch('filter:delete', this.index);\n }\n }\n}\n</script>\n\n<style lang=\"less\">\n.filter-group {\n display: flex;\n margin-bottom: 5px;\n\n .form-control {\n border-right: none;\n }\n\n .filter-group__type {\n flex: 0 1 auto;\n width: auto;\n }\n\n .filter-group__key {\n flex: 0 1 auto;\n width: auto;\n }\n\n .filter-group__value {\n flex: 1 0 auto;\n width: auto;\n }\n\n .input-group-btn {\n flex: 0 0;\n width: auto;\n }\n}\n</style>\n\n\n\n/** WEBPACK FOOTER **\n ** filter-field.vue?b2319426\n **/","<template>\n<div>\n <v-form v-ref:form :fields=\"fields\" :model=\"source\"></v-form>\n <config-form v-ref:config-form :config=\"source.config || {}\" :backend=\"backend\"></config-form>\n <v-form v-ref:post-form :fields=\"postFields\" :model=\"source\"></v-form>\n</div>\n</template>\n\n<script>\nimport HarvestSource from 'models/harvest/source';\nimport backends from 'models/harvest/backends';\nimport VForm from 'components/form/vertical-form.vue';\nimport ConfigForm from './config-form.vue';\n\nexport default {\n name: 'HarvestSourceForm',\n components: {VForm, ConfigForm},\n props: {\n source: {\n type: HarvestSource,\n default() {\n return new HarvestSource();\n }\n }\n },\n data() {\n return {\n backends: backends.items,\n backendValue: this.source.backend,\n fields: [{\n id: 'name',\n label: this._('Name')\n }, {\n id: 'description',\n label: this._('Description')\n }, {\n id: 'url',\n label: this._('URL'),\n widget: 'url-field',\n }, {\n id: 'backend',\n label: this._('Backend'),\n widget: 'select-input',\n values: this.backendValues\n }],\n postFields: [{\n id: 'active',\n label: this._('Active')\n }, {\n id: 'autoarchive',\n label: this._('Automatic archiving')\n }],\n filters: [],\n };\n },\n events: {\n 'field:change': function(field, value) {\n if (field.field.id === 'backend') {\n this.backendValue = value;\n }\n return true; // Let the event continue its bubbling\n },\n 'form:change': function(form) {\n if (form.validate()) {\n this.$dispatch('harvest:source:form:changed', this.serialize());\n }\n return true; // Let the event continue its bubbling\n }\n },\n computed: {\n /**\n * The currently selected backend\n */\n backend() {\n if (!this.backendValue) return;\n return this.backends.find(item => item.id === this.backendValue);\n },\n /**\n * Values for the backend select box\n */\n backendValues() {\n return this.backends.map(item => ({value: item.id, text: item.label}));\n },\n },\n created() {\n // Prevent empty backends select box\n backends.$on('updated', () => {this.backends = backends.items;});\n },\n methods: {\n serialize() {\n const data = Object.assign({},\n this.$refs.postForm.serialize(),\n this.$refs.form.serialize(),\n );\n data.config = this.$refs.configForm.serialize();\n return data;\n },\n validate() {\n return this.$refs.form.validate();\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** form.vue?4e5eca59\n **/","<style lang=\"less\">\n.job-item-modal {\n .modal-footer {\n text-align: center !important;\n }\n}\n</style>\n\n<template>\n<modal class=\"job-item-modal\" v-ref:modal\n :class=\"{\n 'modal-success': item.status === 'done',\n 'modal-danger': item.status === 'failed',\n 'modal-warning': item.status === 'skipped'\n }\">\n <div class=\"modal-body\">\n <dl class=\"clearfix\">\n <dt>{{ _('Remote ID') }}</dt>\n <dd>{{ item.remote_id }}</dd>\n <dt>{{ _('Started at') }}</dt>\n <dd>{{ item.started | dt }}</dd>\n <dt>{{ _('Ended at') }}</dt>\n <dd>{{ item.ended | dt }}</dd>\n <dt>{{ _('Status') }}</dt>\n <dd><span class=\"label label-{{ item.status | statusClass }}\">{{ item.status | statusI18n }}</span></dd>\n <dt v-if=\"item.dataset\">{{ _('Dataset') }}</dt>\n <dd v-if=\"item.dataset\">\n <dataset-card class=\"col-xs-12\" clickable\n v-if=\"item.dataset.id\"\n :datasetid=\"item.dataset.id\">\n </dataset-card>\n <dataset-card class=\"col-xs-12\" clickable\n v-if=\"!item.dataset.id\"\n :dataset=\"item.dataset\">\n </dataset-card>\n </dd>\n <dt v-if=\"item.errors.length\">{{ _('Errors') }}</dt>\n <dd v-if=\"item.errors.length\">\n <div v-for=\"error in item.errors\">\n {{{error.message | markdown}}}\n <pre>{{error.details}}</pre>\n </div>\n </dd>\n </dl>\n </div>\n <footer class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-outline btn-flat pointer\"\n @click=\"$refs.modal.close\">\n {{ _('Close') }}\n </button>\n </footer>\n</modal>\n</template>\n\n<script>\nimport {STATUS_CLASSES, STATUS_I18N} from 'models/harvest/item';\n\nimport Modal from 'components/modal.vue';\nimport DatasetCard from 'components/dataset/card.vue';\n\nexport default {\n components: {Modal, DatasetCard},\n props: {\n item: Object,\n },\n events: {\n 'dataset:clicked': function(dataset) {\n document.location = dataset.page;\n }\n },\n filters: {\n statusClass(value) {\n return STATUS_CLASSES[value];\n },\n statusI18n(value) {\n return STATUS_I18N[value];\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** item.vue?7c2ed8d4\n **/","<template>\n<div>\n<datatable icon=\"cog\"\n :title=\"title\"\n bodyclass=\"table-responsive no-padding\"\n :p=\"p\" :track=\"false\"\n :loading=\"loading !== undefined ? loading : job.loading\"\n :fields=\"fields\"\n track=\"remote_id\"\n :empty=\"empty\"\n :tint=\"job.status | statusClass\">\n <div class=\"row\" slot=\"header\">\n <div class=\"col-xs-12\" :class=\"{'col-lg-6': job.created}\" v-show=\"withSlot\">\n <slot></slot>\n </div>\n <dl class=\"dl-horizontal col-xs-12\" :class=\"{'col-lg-6': withSlot}\" v-show=\"job.created\">\n <dt>{{ _('Created at') }}</dt>\n <dd>{{ job.created | dt }}</dd>\n <dt>{{ _('Ended at') }}</dt>\n <dd>{{ job.ended | dt }}</dd>\n <dt>{{ _('Status') }}</dt>\n <dd><span class=\"label label-{{ job.status | statusClass }}\">{{ job.status | statusI18n }}</span></dd>\n <dt v-if=\"job.errors && job.errors.length\">{{ _('Errors') }}</dt>\n <dd v-if=\"job.errors && job.errors.length\">\n <div v-for=\"error in job.errors\">\n <p><strong>{{{error.message | markdown}}}</strong></p>\n <div v-if=\"error.details\">\n <code><pre>{{error.details}}</pre></code>\n </div>\n </div>\n </dd>\n <dt v-if=\"job.items && job.items.length\">{{ _('Items') }}</dt>\n <dd v-if=\"job.items && job.items.length\">\n <span class=\"text-warning\" v-tooltip tooltip-placement=\"top\"\n :title=\"_('Number of skipped items')\"\n >{{job.items | count 'skipped'}}</span>\n /\n <span class=\"text-warning\" v-tooltip tooltip-placement=\"top\"\n :title=\"_('Number of archived items')\"\n >{{job.items | count 'archived'}}</span>\n /\n <span class=\"text-danger\" v-tooltip tooltip-placement=\"top\"\n :title=\"_('Number of failed items')\"\n >{{job.items | count 'failed'}}</span>\n /\n <span class=\"text-green\" v-tooltip tooltip-placement=\"top\"\n :title=\"_('Number of succeed items')\"\n >{{job.items | count 'done'}}</span>\n /\n <strong>{{job.items.length}}</strong>\n </dd>\n </dl>\n </div>\n</datatable>\n</div>\n</template>\n\n<script>\nimport {\n STATUS_CLASSES as JOB_STATUS_CLASSES,\n STATUS_I18N as JOB_STATUS_I18N,\n HarvestJob\n} from 'models/harvest/job';\nimport {STATUS_CLASSES, STATUS_I18N} from 'models/harvest/item';\nimport {PageList} from 'models/base';\nimport Datatable from 'components/datatable/widget.vue';\n\nexport default {\n name: 'JobDetails',\n props: {\n job: HarvestJob,\n loading: {\n type: Boolean,\n default: undefined\n },\n empty: String,\n withSlot: {type: Boolean, default: false}\n },\n components: {Datatable},\n data() {\n return {\n fields: [{\n label: this._('Remote ID'),\n key: 'remote_id',\n sort: 'remote_id',\n ellipsis: true\n }, {\n label: this._('Status'),\n key: 'status',\n sort: 'status',\n type: 'label',\n width: 100,\n label_type: (status) => STATUS_CLASSES[status],\n label_func: (status) => STATUS_I18N[status],\n }],\n p: new PageList({data: this.job.items}),\n };\n },\n computed: {\n title() {\n return this.job.id ? `Job ${this.job.id}` : 'Job';\n },\n },\n events: {\n 'datatable:item:click': function(item) {\n this.$dispatch('harvest:job:item:selected', item);\n }\n },\n filters: {\n statusClass(value) {\n return JOB_STATUS_CLASSES[value] || '';\n },\n statusI18n(value) {\n return JOB_STATUS_I18N[value];\n },\n count(value, status) {\n if (!value) return '-';\n return value.filter(function(item) {\n return item.status === status;\n }).length;\n }\n },\n watch: {\n 'job.items': function(items) {\n this.p = new PageList({data: items});\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** job.vue?5918ad96\n **/","<template>\n<div>\n<job-widget :job=\"job\" :loading=\"loading\" :empty=\"empty\" with-slot>\n <div class=\"text-center\">\n <button class=\"btn btn-primary btn-flat\" @click=\"preview\">\n <span class=\"fa fa-cog\"></span>\n {{ _('Preview') }}\n </button>\n </div>\n</job-widget>\n</div>\n</template>\n\n<script>\nimport API from 'api';\nimport backends from 'models/harvest/backends';\nimport HarvestJob from 'models/harvest/job';\nimport HarvestSource from 'models/harvest/source';\nimport JobWidget from 'components/harvest/job.vue';\n\nexport default {\n name: 'HarvestPreviewView',\n components: {JobWidget},\n props: {\n source: {\n type: Object,\n default() {\n return new HarvestSource();\n }\n },\n fromConfig: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n job: new HarvestJob(),\n loading: false\n };\n },\n computed: {\n empty() {\n return this.job.created ? this._('No item found') : ' ';\n }\n },\n methods: {\n preview() {\n this.loading = true;\n if (this.fromConfig) {\n API.harvest.preview_harvest_source_config(\n {payload: this.source},\n this.onPreviewFetch,\n this.$root.handleApiError\n );\n } else {\n API.harvest.preview_harvest_source(\n {ident: this.source.id},\n this.onPreviewFetch,\n this.$root.handleApiError\n );\n }\n },\n onPreviewFetch(response) {\n this.job.on_fetched(response);\n this.loading = false;\n }\n }\n};\n</script>\n\n\n\n/** WEBPACK FOOTER **\n ** preview.vue?da964562\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".config-form .config-label{display:block}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/config-form.vue\"],\"names\":[],\"mappings\":\"AAAA,2BAA2B,aAAa,CAAC\",\"file\":\"config-form.vue\",\"sourcesContent\":[\".config-form .config-label{display:block}\"],\"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/harvest/config-form.vue\n ** module id = 1346\n ** module chunks = 7 17\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".harvester-feature-checkbox .form-help{float:none}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/feature-field.vue\"],\"names\":[],\"mappings\":\"AAAA,uCAAuC,UAAU,CAAC\",\"file\":\"feature-field.vue\",\"sourcesContent\":[\".harvester-feature-checkbox .form-help{float:none}\"],\"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/harvest/feature-field.vue\n ** module id = 1347\n ** module chunks = 7 17\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".filter-group{display:flex;margin-bottom:5px}.filter-group .form-control{border-right:none}.filter-group .filter-group__key,.filter-group .filter-group__type{flex:0 1 auto;width:auto}.filter-group .filter-group__value{flex:1 0 auto;width:auto}.filter-group .input-group-btn{flex:0 0;width:auto}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/filter-field.vue\"],\"names\":[],\"mappings\":\"AAAA,cAAc,aAAa,iBAAiB,CAAC,4BAA4B,iBAAiB,CAAC,AAA2D,mEAAiC,cAAc,UAAU,CAAC,mCAAmC,cAAc,UAAU,CAAC,+BAA+B,SAAS,UAAU,CAAC\",\"file\":\"filter-field.vue\",\"sourcesContent\":[\".filter-group{display:flex;margin-bottom:5px}.filter-group .form-control{border-right:none}.filter-group .filter-group__type{flex:0 1 auto;width:auto}.filter-group .filter-group__key{flex:0 1 auto;width:auto}.filter-group .filter-group__value{flex:1 0 auto;width:auto}.filter-group .input-group-btn{flex:0 0;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/harvest/filter-field.vue\n ** module id = 1348\n ** module chunks = 7 17\n **/","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".job-item-modal .modal-footer{text-align:center!important}\", \"\", {\"version\":3,\"sources\":[\"/./js/components/harvest/item.vue\"],\"names\":[],\"mappings\":\"AAAA,8BAA8B,2BAA4B,CAAC\",\"file\":\"item.vue\",\"sourcesContent\":[\".job-item-modal .modal-footer{text-align:center !important}\"],\"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/harvest/item.vue\n ** module id = 1349\n ** module chunks = 7 18\n **/","module.exports = \" <form class=config-form role=form v-el:form> <div v-if=hasFeatures class=\\\"vertical-field form-group\\\"> <span class=form-help v-popover=featuresDescription popover-trigger=hover popover-placement=left> </span> <label class=config-label>{{ _('Features') }}</label> <feature-field v-ref:features v-for=\\\"feature in backend.features\\\" :key=feature.key :config=config :feature=feature> </feature-field> </div> <div v-if=hasFilters class=\\\"vertical-field form-group\\\"> <span class=form-help v-popover=filtersDescription popover-trigger=hover popover-placement=left> </span> <label class=config-label>{{ _('Filters') }}</label> <filter-field v-for=\\\"(idx,filter) in config.filters\\\" :choices=backend.filters :key=filter.key :value=filter.value :index=idx :type=filter.type v-ref:filters> </filter-field> <label :for=field.id class=help-block :key=error v-for=\\\"error in errors\\\">{{error}}</label> <button class=\\\"btn btn-success\\\" @click.prevent=addFilter> <span class=\\\"fa fa-fw fa-plus\\\"></span> {{ _('Add a filter') }} </button> </div> </form> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/harvest/config-form.vue\n ** module id = 1354\n ** module chunks = 7 17\n **/","module.exports = \" <div class=\\\"checkbox harvester-feature-checkbox\\\"> <label :for=id> <input v-el:checkbox type=checkbox :id=id :name=key :checked=checked @input=onChange /> {{ feature.label }} </label> <span v-if=feature.description class=form-help v-popover=feature.description popover-trigger=hover popover-placement=top> </span> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/harvest/feature-field.vue\n ** module id = 1355\n ** module chunks = 7 17\n **/","module.exports = \" <div class=\\\"input-group filter-group\\\"> <select class=\\\"form-control filter-group__type\\\" v-model=type @change=onChange> <option v-for=\\\"t in TYPES\\\" :value=t.value :key=t.value>{{ t.label }}</option> </select> <select class=\\\"form-control filter-group__key\\\" v-model=key @change=onChange> <option v-for=\\\"c in choices\\\" :value=c.key :key=c.key>{{ c.label }}</option> </select> <input type=text class=\\\"form-control filter-group__value\\\" v-model=value :placeholder=placeholder @change=onChange> <span class=input-group-btn> <button class=\\\"btn btn-danger\\\" type=button @click.prevent=onDelete> <span class=\\\"fa fa-remove\\\"> </span></button> </span> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/harvest/filter-field.vue\n ** module id = 1356\n ** module chunks = 7 17\n **/","module.exports = \" <div> <v-form v-ref:form :fields=fields :model=source></v-form> <config-form v-ref:config-form :config=\\\"source.config || {}\\\" :backend=backend></config-form> <v-form v-ref:post-form :fields=postFields :model=source></v-form> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/harvest/form.vue\n ** module id = 1357\n ** module chunks = 7 17\n **/","module.exports = \" <modal class=job-item-modal v-ref:modal :class=\\\"{\\n 'modal-success': item.status === 'done',\\n 'modal-danger': item.status === 'failed',\\n 'modal-warning': item.status === 'skipped'\\n }\\\"> <div class=modal-body> <dl class=clearfix> <dt>{{ _('Remote ID') }}</dt> <dd>{{ item.remote_id }}</dd> <dt>{{ _('Started at') }}</dt> <dd>{{ item.started | dt }}</dd> <dt>{{ _('Ended at') }}</dt> <dd>{{ item.ended | dt }}</dd> <dt>{{ _('Status') }}</dt> <dd><span class=\\\"label label-{{ item.status | statusClass }}\\\">{{ item.status | statusI18n }}</span></dd> <dt v-if=item.dataset>{{ _('Dataset') }}</dt> <dd v-if=item.dataset> <dataset-card class=col-xs-12 clickable v-if=item.dataset.id :datasetid=item.dataset.id> </dataset-card> <dataset-card class=col-xs-12 clickable v-if=!item.dataset.id :dataset=item.dataset> </dataset-card> </dd> <dt v-if=item.errors.length>{{ _('Errors') }}</dt> <dd v-if=item.errors.length> <div v-for=\\\"error in item.errors\\\"> {{{error.message | markdown}}} <pre>{{error.details}}</pre> </div> </dd> </dl> </div> <footer class=modal-footer> <button type=button class=\\\"btn btn-outline btn-flat pointer\\\" @click=$refs.modal.close> {{ _('Close') }} </button> </footer> </modal> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/harvest/item.vue\n ** module id = 1358\n ** module chunks = 7 18\n **/","module.exports = \" <div> <datatable icon=cog :title=title bodyclass=\\\"table-responsive no-padding\\\" :p=p :track=false :loading=\\\"loading !== undefined ? loading : job.loading\\\" :fields=fields track=remote_id :empty=empty :tint=\\\"job.status | statusClass\\\"> <div class=row slot=header> <div class=col-xs-12 :class=\\\"{'col-lg-6': job.created}\\\" v-show=withSlot> <slot></slot> </div> <dl class=\\\"dl-horizontal col-xs-12\\\" :class=\\\"{'col-lg-6': withSlot}\\\" v-show=job.created> <dt>{{ _('Created at') }}</dt> <dd>{{ job.created | dt }}</dd> <dt>{{ _('Ended at') }}</dt> <dd>{{ job.ended | dt }}</dd> <dt>{{ _('Status') }}</dt> <dd><span class=\\\"label label-{{ job.status | statusClass }}\\\">{{ job.status | statusI18n }}</span></dd> <dt v-if=\\\"job.errors && job.errors.length\\\">{{ _('Errors') }}</dt> <dd v-if=\\\"job.errors && job.errors.length\\\"> <div v-for=\\\"error in job.errors\\\"> <p><strong>{{{error.message | markdown}}}</strong></p> <div v-if=error.details> <code><pre>{{error.details}}</pre></code> </div> </div> </dd> <dt v-if=\\\"job.items && job.items.length\\\">{{ _('Items') }}</dt> <dd v-if=\\\"job.items && job.items.length\\\"> <span class=text-warning v-tooltip tooltip-placement=top :title=\\\"_('Number of skipped items')\\\">{{job.items | count 'skipped'}}</span> / <span class=text-warning v-tooltip tooltip-placement=top :title=\\\"_('Number of archived items')\\\">{{job.items | count 'archived'}}</span> / <span class=text-danger v-tooltip tooltip-placement=top :title=\\\"_('Number of failed items')\\\">{{job.items | count 'failed'}}</span> / <span class=text-green v-tooltip tooltip-placement=top :title=\\\"_('Number of succeed items')\\\">{{job.items | count 'done'}}</span> / <strong>{{job.items.length}}</strong> </dd> </dl> </div> </datatable> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/harvest/job.vue\n ** module id = 1359\n ** module chunks = 7 18\n **/","module.exports = \" <div> <job-widget :job=job :loading=loading :empty=empty with-slot> <div class=text-center> <button class=\\\"btn btn-primary btn-flat\\\" @click=preview> <span class=\\\"fa fa-cog\\\"></span> {{ _('Preview') }} </button> </div> </job-widget> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/components/harvest/preview.vue\n ** module id = 1360\n ** module chunks = 7 18\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!./config-form.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./config-form.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./config-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/harvest/config-form.vue\n ** module id = 1372\n ** module chunks = 7 17\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!./feature-field.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./feature-field.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./feature-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/harvest/feature-field.vue\n ** module id = 1373\n ** module chunks = 7 17\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!./filter-field.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./filter-field.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./filter-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/harvest/filter-field.vue\n ** module id = 1374\n ** module chunks = 7 17\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/harvest/form.vue\n ** module id = 1375\n ** module chunks = 7 17\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!./item.vue\")\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./item.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./item.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/harvest/item.vue\n ** module id = 1376\n ** module chunks = 7 18\n **/","var __vue_script__, __vue_template__\n__vue_script__ = require(\"!!babel-loader!../../../node_modules/vue-loader/lib/selector.js?type=script&index=0!./preview.vue\")\n__vue_template__ = require(\"!!vue-html-loader!../../../node_modules/vue-loader/lib/selector.js?type=template&index=0!./preview.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/harvest/preview.vue\n ** module id = 1377\n ** module chunks = 7 18\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!./config-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!./config-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!./config-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/harvest/config-form.vue\n ** module id = 1387\n ** module chunks = 7 17\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!./feature-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!./feature-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!./feature-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/harvest/feature-field.vue\n ** module id = 1388\n ** module chunks = 7 17\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!./filter-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!./filter-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!./filter-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/harvest/filter-field.vue\n ** module id = 1389\n ** module chunks = 7 17\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!./item.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!./item.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!./item.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/harvest/item.vue\n ** module id = 1390\n ** module chunks = 7 18\n **/","<template>\n<div>\n<form-layout icon=\"tasks\" :title=\"title\" :save=\"save\" :cancel=\"cancel\" footer=\"true\" :model=\"source\">\n <harvest-form v-ref:form :source=\"source\"></harvest-form>\n <div v-if=\"previewSource\" class=\"row\" slot=\"extras\">\n <preview class=\"col-xs-12\" :source=\"previewSource\" from-config></preview>\n </div>\n</form-layout>\n</div>\n</template>\n\n<script>\nimport Box from 'components/containers/box.vue';\nimport FormLayout from 'components/form-layout.vue';\nimport HarvestForm from 'components/harvest/form.vue';\nimport HarvestSource from 'models/harvest/source';\nimport ItemModal from 'components/harvest/item.vue';\nimport Preview from 'components/harvest/preview.vue';\n\nconst MASK = [\n 'id',\n 'name',\n 'url',\n 'description',\n 'owner',\n 'last_job{status,ended}',\n 'organization',\n 'backend',\n 'validation{state}',\n 'config',\n 'active',\n 'autoarchive',\n];\n\nexport default {\n name: 'harvester-edit',\n data() {\n return {\n source: new HarvestSource({mask: MASK}),\n previewSource: undefined,\n };\n },\n components: {Box, FormLayout, HarvestForm, Preview},\n computed: {\n title() {\n if (this.source.name) {\n return this._('Edit harvest source \"{name}\"', {\n name: this.source.name\n });\n }\n }\n },\n ready() {\n this.source.$on('updated', () => {\n this.$nextTick(() => {\n this.previewSource = Object.assign(new HarvestSource(), this.$refs.form.serialize());\n });\n });\n },\n methods: {\n save() {\n const form = this.$refs.form;\n if (form.validate()) {\n this.source.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._('The harvester has been updated.')\n });\n this.$go({name: 'harvester', params: {oid: this.source.id}});\n },\n cancel() {\n this.$go({name: 'harvester', params: {oid: this.source.id}});\n }\n },\n events: {\n 'harvest:job:item:selected': function(item) {\n this.$root.$modal(ItemModal, {item: item});\n return true;\n },\n 'harvest:source:form:changed': function(data) {\n this.previewSource = Object.assign(new HarvestSource(), data);\n }\n },\n route: {\n data() {\n this.$scrollTo(this.$el);\n this.source.fetch(this.$route.params.oid);\n this.source.$once('updated', () => {\n this.updHandler = this.source.$once('updated', this.on_success);\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 ** harvester-edit.vue?7701eca7\n **/","module.exports = \" <div> <form-layout icon=tasks :title=title :save=save :cancel=cancel footer=true :model=source> <harvest-form v-ref:form :source=source></harvest-form> <div v-if=previewSource class=row slot=extras> <preview class=col-xs-12 :source=previewSource from-config></preview> </div> </form-layout> </div> \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/vue-html-loader!./~/vue-loader/lib/selector.js?type=template&index=0!./js/views/harvester-edit.vue\n ** module id = 1564\n ** module chunks = 7\n **/"],"sourceRoot":""}