novo-elements 8.3.0 → 8.4.0-next.1

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.
Files changed (205) hide show
  1. package/addons/ace-editor/AceEditor.d.ts +4 -2
  2. package/addons/code-editor/CodeEditor.d.ts +31 -0
  3. package/addons/code-editor/CodeEditor.module.d.ts +9 -0
  4. package/addons/code-editor/CodeEditor.scss +5 -0
  5. package/addons/code-editor/index.d.ts +2 -0
  6. package/addons/code-editor/novo-elements-addons-code-editor.d.ts +5 -0
  7. package/addons/code-editor/package.json +10 -0
  8. package/addons/index.d.ts +1 -0
  9. package/elements/aside/aside.component.scss +1 -1
  10. package/elements/calendar/Calendar.module.d.ts +2 -3
  11. package/elements/checkbox/CheckList.scss +1 -1
  12. package/elements/checkbox/Checkbox.scss +1 -1
  13. package/elements/common/overlay/Overlay.d.ts +1 -0
  14. package/elements/date-picker/DatePicker.module.d.ts +2 -2
  15. package/elements/date-picker/DatePickerInput.d.ts +8 -5
  16. package/elements/date-picker/MultiDateInput.d.ts +0 -1
  17. package/elements/date-time-picker/DateTimePicker.module.d.ts +2 -3
  18. package/elements/drag-drop/drag-drop-box.d.ts +45 -0
  19. package/elements/drag-drop/drag-drop.module.d.ts +7 -0
  20. package/elements/drag-drop/index.d.ts +2 -0
  21. package/elements/drag-drop/novo-elements-elements-drag-drop.d.ts +5 -0
  22. package/elements/drag-drop/package.json +10 -0
  23. package/elements/dropdown/Dropdown.d.ts +7 -1
  24. package/elements/field/formats/date-time-format.d.ts +2 -2
  25. package/elements/form/Control.d.ts +9 -6
  26. package/elements/form/ControlTemplates.d.ts +1 -1
  27. package/elements/form/Form.module.d.ts +6 -6
  28. package/elements/form/controls/code-editor/CodeEditorControl.d.ts +5 -0
  29. package/elements/form/controls/code-editor/index.d.ts +1 -0
  30. package/elements/form/controls/index.d.ts +2 -1
  31. package/elements/form/extras/FormExtras.module.d.ts +4 -4
  32. package/elements/form/extras/file/FileInput.d.ts +15 -16
  33. package/elements/form/extras/file/FileInput.scss +58 -30
  34. package/elements/index.d.ts +1 -0
  35. package/elements/query-builder/condition-builder/condition-builder.component.scss +1 -1
  36. package/elements/query-builder/condition-definitions/address-condition.definition.d.ts +1 -1
  37. package/elements/select-search/select-search.component.scss +1 -1
  38. package/elements/table/Table.module.d.ts +5 -6
  39. package/elements/time-picker/TimePicker.d.ts +2 -3
  40. package/elements/time-picker/TimePicker.module.d.ts +3 -4
  41. package/elements/time-picker/TimePickerInput.d.ts +0 -1
  42. package/esm2020/addons/ace-editor/AceEditor.mjs +8 -4
  43. package/esm2020/addons/ckeditor/CKEditor.mjs +8 -1
  44. package/esm2020/addons/code-editor/CodeEditor.mjs +129 -0
  45. package/esm2020/addons/code-editor/CodeEditor.module.mjs +19 -0
  46. package/esm2020/addons/code-editor/index.mjs +3 -0
  47. package/esm2020/addons/code-editor/novo-elements-addons-code-editor.mjs +5 -0
  48. package/esm2020/addons/index.mjs +2 -1
  49. package/esm2020/elements/breadcrumbs/breadcrumb-item/BreadcrumbItem.mjs +1 -1
  50. package/esm2020/elements/calendar/Calendar.module.mjs +5 -7
  51. package/esm2020/elements/calendar/calendar.component.mjs +3 -3
  52. package/esm2020/elements/calendar/month-select/month-select.component.mjs +3 -3
  53. package/esm2020/elements/calendar/month-view/month-view.component.mjs +3 -3
  54. package/esm2020/elements/calendar/year-select/year-select.component.mjs +3 -3
  55. package/esm2020/elements/common/overlay/Overlay.mjs +11 -5
  56. package/esm2020/elements/data-table/cell-headers/data-table-header-cell.component.mjs +1 -1
  57. package/esm2020/elements/data-table/data-table-clear-button.component.mjs +1 -1
  58. package/esm2020/elements/data-table/data-table.component.mjs +2 -2
  59. package/esm2020/elements/date-picker/DatePicker.module.mjs +6 -6
  60. package/esm2020/elements/date-picker/DatePickerInput.mjs +50 -29
  61. package/esm2020/elements/date-picker/DateRangeInput.mjs +10 -16
  62. package/esm2020/elements/date-picker/MultiDateInput.mjs +1 -17
  63. package/esm2020/elements/date-time-picker/DateTimePicker.module.mjs +4 -5
  64. package/esm2020/elements/drag-drop/drag-drop-box.mjs +224 -0
  65. package/esm2020/elements/drag-drop/drag-drop.module.mjs +16 -0
  66. package/esm2020/elements/drag-drop/index.mjs +3 -0
  67. package/esm2020/elements/drag-drop/novo-elements-elements-drag-drop.mjs +5 -0
  68. package/esm2020/elements/dropdown/Dropdown.mjs +29 -4
  69. package/esm2020/elements/field/formats/date-format.mjs +5 -5
  70. package/esm2020/elements/field/formats/date-range-format.mjs +5 -5
  71. package/esm2020/elements/field/formats/date-time-format.mjs +12 -12
  72. package/esm2020/elements/field/formats/time-format.mjs +6 -6
  73. package/esm2020/elements/form/Control.mjs +20 -8
  74. package/esm2020/elements/form/ControlTemplates.mjs +54 -27
  75. package/esm2020/elements/form/Form.module.mjs +12 -13
  76. package/esm2020/elements/form/NovoFormControl.mjs +1 -2
  77. package/esm2020/elements/form/controls/code-editor/CodeEditorControl.mjs +9 -0
  78. package/esm2020/elements/form/controls/code-editor/index.mjs +2 -0
  79. package/esm2020/elements/form/controls/index.mjs +3 -2
  80. package/esm2020/elements/form/controls/timezone/TimezoneControl.mjs +2 -2
  81. package/esm2020/elements/form/extras/FormExtras.module.mjs +8 -9
  82. package/esm2020/elements/form/extras/file/FileInput.mjs +38 -261
  83. package/esm2020/elements/index.mjs +2 -1
  84. package/esm2020/elements/query-builder/condition-definitions/address-condition.definition.mjs +2 -2
  85. package/esm2020/elements/query-builder/condition-group/condition-group.component.mjs +1 -1
  86. package/esm2020/elements/simple-table/cell-header.mjs +2 -2
  87. package/esm2020/elements/simple-table/cell.mjs +1 -1
  88. package/esm2020/elements/tabbed-group-picker/TabbedGroupPicker.mjs +1 -1
  89. package/esm2020/elements/table/Table.mjs +1 -1
  90. package/esm2020/elements/table/Table.module.mjs +1 -6
  91. package/esm2020/elements/table/extras/dropdown-cell/DropdownCell.mjs +1 -1
  92. package/esm2020/elements/time-picker/TimePicker.mjs +5 -6
  93. package/esm2020/elements/time-picker/TimePicker.module.mjs +4 -5
  94. package/esm2020/elements/time-picker/TimePickerInput.mjs +3 -65
  95. package/esm2020/index.mjs +1 -1
  96. package/esm2020/novo-elements.module.mjs +9 -3
  97. package/esm2020/novo-elements.providers.mjs +2 -2
  98. package/esm2020/services/date-format/DateFormat.mjs +153 -47
  99. package/esm2020/services/global/global.service.mjs +7 -1
  100. package/esm2020/utils/date/Date.mjs +1 -1
  101. package/esm2020/utils/date/index.mjs +3 -2
  102. package/esm2020/utils/date/timezone-support.mjs +87 -0
  103. package/fesm2015/novo-elements-addons-ace-editor.mjs +7 -3
  104. package/fesm2015/novo-elements-addons-ace-editor.mjs.map +1 -1
  105. package/fesm2015/novo-elements-addons-ckeditor.mjs +7 -0
  106. package/fesm2015/novo-elements-addons-ckeditor.mjs.map +1 -1
  107. package/fesm2015/novo-elements-addons-code-editor.mjs +150 -0
  108. package/fesm2015/novo-elements-addons-code-editor.mjs.map +1 -0
  109. package/fesm2015/novo-elements-addons.mjs +155 -5
  110. package/fesm2015/novo-elements-addons.mjs.map +1 -1
  111. package/fesm2015/novo-elements-elements-breadcrumbs.mjs +1 -1
  112. package/fesm2015/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  113. package/fesm2015/novo-elements-elements-calendar.mjs +12 -13
  114. package/fesm2015/novo-elements-elements-calendar.mjs.map +1 -1
  115. package/fesm2015/novo-elements-elements-common.mjs +10 -2
  116. package/fesm2015/novo-elements-elements-common.mjs.map +1 -1
  117. package/fesm2015/novo-elements-elements-data-table.mjs +3 -3
  118. package/fesm2015/novo-elements-elements-data-table.mjs.map +1 -1
  119. package/fesm2015/novo-elements-elements-date-picker.mjs +64 -62
  120. package/fesm2015/novo-elements-elements-date-picker.mjs.map +1 -1
  121. package/fesm2015/novo-elements-elements-date-time-picker.mjs +3 -4
  122. package/fesm2015/novo-elements-elements-date-time-picker.mjs.map +1 -1
  123. package/fesm2015/novo-elements-elements-drag-drop.mjs +245 -0
  124. package/fesm2015/novo-elements-elements-drag-drop.mjs.map +1 -0
  125. package/fesm2015/novo-elements-elements-dropdown.mjs +28 -3
  126. package/fesm2015/novo-elements-elements-dropdown.mjs.map +1 -1
  127. package/fesm2015/novo-elements-elements-field.mjs +19 -19
  128. package/fesm2015/novo-elements-elements-field.mjs.map +1 -1
  129. package/fesm2015/novo-elements-elements-form.mjs +124 -300
  130. package/fesm2015/novo-elements-elements-form.mjs.map +1 -1
  131. package/fesm2015/novo-elements-elements-query-builder.mjs +1 -1
  132. package/fesm2015/novo-elements-elements-query-builder.mjs.map +1 -1
  133. package/fesm2015/novo-elements-elements-simple-table.mjs +2 -2
  134. package/fesm2015/novo-elements-elements-simple-table.mjs.map +1 -1
  135. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  136. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  137. package/fesm2015/novo-elements-elements-table.mjs +2 -6
  138. package/fesm2015/novo-elements-elements-table.mjs.map +1 -1
  139. package/fesm2015/novo-elements-elements-time-picker.mjs +7 -71
  140. package/fesm2015/novo-elements-elements-time-picker.mjs.map +1 -1
  141. package/fesm2015/novo-elements-elements.mjs +1 -0
  142. package/fesm2015/novo-elements-elements.mjs.map +1 -1
  143. package/fesm2015/novo-elements-services.mjs +158 -46
  144. package/fesm2015/novo-elements-services.mjs.map +1 -1
  145. package/fesm2015/novo-elements-utils.mjs +88 -1
  146. package/fesm2015/novo-elements-utils.mjs.map +1 -1
  147. package/fesm2015/novo-elements.mjs +8 -2
  148. package/fesm2015/novo-elements.mjs.map +1 -1
  149. package/fesm2020/novo-elements-addons-ace-editor.mjs +7 -3
  150. package/fesm2020/novo-elements-addons-ace-editor.mjs.map +1 -1
  151. package/fesm2020/novo-elements-addons-ckeditor.mjs +7 -0
  152. package/fesm2020/novo-elements-addons-ckeditor.mjs.map +1 -1
  153. package/fesm2020/novo-elements-addons-code-editor.mjs +150 -0
  154. package/fesm2020/novo-elements-addons-code-editor.mjs.map +1 -0
  155. package/fesm2020/novo-elements-addons.mjs +155 -5
  156. package/fesm2020/novo-elements-addons.mjs.map +1 -1
  157. package/fesm2020/novo-elements-elements-breadcrumbs.mjs +1 -1
  158. package/fesm2020/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  159. package/fesm2020/novo-elements-elements-calendar.mjs +12 -13
  160. package/fesm2020/novo-elements-elements-calendar.mjs.map +1 -1
  161. package/fesm2020/novo-elements-elements-common.mjs +8 -2
  162. package/fesm2020/novo-elements-elements-common.mjs.map +1 -1
  163. package/fesm2020/novo-elements-elements-data-table.mjs +3 -3
  164. package/fesm2020/novo-elements-elements-data-table.mjs.map +1 -1
  165. package/fesm2020/novo-elements-elements-date-picker.mjs +62 -62
  166. package/fesm2020/novo-elements-elements-date-picker.mjs.map +1 -1
  167. package/fesm2020/novo-elements-elements-date-time-picker.mjs +3 -4
  168. package/fesm2020/novo-elements-elements-date-time-picker.mjs.map +1 -1
  169. package/fesm2020/novo-elements-elements-drag-drop.mjs +244 -0
  170. package/fesm2020/novo-elements-elements-drag-drop.mjs.map +1 -0
  171. package/fesm2020/novo-elements-elements-dropdown.mjs +28 -3
  172. package/fesm2020/novo-elements-elements-dropdown.mjs.map +1 -1
  173. package/fesm2020/novo-elements-elements-field.mjs +19 -19
  174. package/fesm2020/novo-elements-elements-field.mjs.map +1 -1
  175. package/fesm2020/novo-elements-elements-form.mjs +125 -302
  176. package/fesm2020/novo-elements-elements-form.mjs.map +1 -1
  177. package/fesm2020/novo-elements-elements-query-builder.mjs +1 -1
  178. package/fesm2020/novo-elements-elements-query-builder.mjs.map +1 -1
  179. package/fesm2020/novo-elements-elements-simple-table.mjs +2 -2
  180. package/fesm2020/novo-elements-elements-simple-table.mjs.map +1 -1
  181. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  182. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  183. package/fesm2020/novo-elements-elements-table.mjs +2 -6
  184. package/fesm2020/novo-elements-elements-table.mjs.map +1 -1
  185. package/fesm2020/novo-elements-elements-time-picker.mjs +7 -71
  186. package/fesm2020/novo-elements-elements-time-picker.mjs.map +1 -1
  187. package/fesm2020/novo-elements-elements.mjs +1 -0
  188. package/fesm2020/novo-elements-elements.mjs.map +1 -1
  189. package/fesm2020/novo-elements-services.mjs +158 -46
  190. package/fesm2020/novo-elements-services.mjs.map +1 -1
  191. package/fesm2020/novo-elements-utils.mjs +88 -1
  192. package/fesm2020/novo-elements-utils.mjs.map +1 -1
  193. package/fesm2020/novo-elements.mjs +8 -2
  194. package/fesm2020/novo-elements.mjs.map +1 -1
  195. package/novo-elements.module.d.ts +1 -1
  196. package/novo-elements.scss +1 -1
  197. package/package.json +23 -4
  198. package/services/date-format/DateFormat.d.ts +62 -3
  199. package/services/global/global.service.d.ts +3 -0
  200. package/styles/content/root.scss +1 -1
  201. package/styles/themes/light-test.scss +1 -1
  202. package/styles/themes/light.scss +1 -1
  203. package/styles/variables.scss +1 -1
  204. package/utils/date/index.d.ts +2 -1
  205. package/utils/date/timezone-support.d.ts +5 -0
@@ -54,7 +54,6 @@ export class NovoMultiDateInputElement {
54
54
  set value(value) {
55
55
  if (this.value !== value) {
56
56
  this._value = value;
57
- this._setFormValue(value);
58
57
  this.onChangeCallback(this._value);
59
58
  }
60
59
  }
@@ -67,16 +66,6 @@ export class NovoMultiDateInputElement {
67
66
  }
68
67
  ngOnInit() {
69
68
  this.userDefinedFormat = this.format ? !this.format.match(/^(DD\/MM\/YYYY|MM\/DD\/YYYY)$/g) : false;
70
- // if (!this.userDefinedFormat && this.textMaskEnabled && !this.allowInvalidDate) {
71
- // this.maskOptions = this.maskOptions || {
72
- // mask: this.dateFormatService.getDateMask(),
73
- // pipe: createAutoCorrectedDatePipe(this.format || this.labels.dateFormatString().toLowerCase()),
74
- // keepCharPositions: false,
75
- // guide: true,
76
- // };
77
- // } else {
78
- // this.maskOptions = { mask: false };
79
- // }
80
69
  }
81
70
  formatter(value) {
82
71
  const [dateTimeValue, formatted] = this.dateFormatService.parseString(value, false, 'date');
@@ -128,11 +117,6 @@ export class NovoMultiDateInputElement {
128
117
  registerOnTouched(fn) {
129
118
  this.onTouchedCallback = fn;
130
119
  }
131
- _setFormValue(value) {
132
- if (this.value) {
133
- // this.formattedStartDate = this.formatDateValue(this.value.startDate);
134
- }
135
- }
136
120
  /**
137
121
  * This method closes the panel, and if a value is specified, also sets the associated
138
122
  * control to that value. It will also mark the control as dirty if this interaction
@@ -254,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
254
238
  type: HostBinding,
255
239
  args: ['class.disabled']
256
240
  }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlEYXRlSW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9kYXRlLXBpY2tlci9NdWx0aURhdGVJbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxLQUFLO0FBQ0wsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxNQUFNO0FBQ04sT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBTyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBRW5ELHNEQUFzRDtBQUN0RCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztJQUN4RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFvQ0YsTUFBTSxPQUFPLHlCQUF5QjtJQTBEcEMsWUFDUyxPQUFtQixFQUNuQixNQUF3QixFQUN2QixHQUFzQixFQUN2QixpQkFBb0M7UUFIcEMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBN0R0Qyx1QkFBa0IsR0FBVyxFQUFFLENBQUM7UUFDaEMscUJBQWdCLEdBQVcsRUFB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TUFBTTtzQkFETCxLQUFLO2dCQUdOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUdOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sU0FBUztzQkFEUixNQUFNO2dCQUdQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsNEJBQTRCO2dCQUc3QixNQUFNO3NCQUFmLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFNTSxLQUFLO3NCQUFqQixLQUFLO2dCQWNGLFFBQVE7c0JBRlgsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOR1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuLy8gQXBwXG5pbXBvcnQgeyBOb3ZvT3ZlcmxheVRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdFNlcnZpY2UsIE5vdm9MYWJlbFNlcnZpY2UgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3NlcnZpY2VzJztcbmltcG9ydCB7IEhlbHBlcnMsIEtleSB9IGZyb20gJ25vdm8tZWxlbWVudHMvdXRpbHMnO1xuXG4vLyBWYWx1ZSBhY2Nlc3NvciBmb3IgdGhlIGNvbXBvbmVudCAoc3VwcG9ydHMgbmdNb2RlbClcbmNvbnN0IE1VTFRJX0RBVEVfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3ZvTXVsdGlEYXRlSW5wdXRFbGVtZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdub3ZvLW11bHRpLWRhdGUtaW5wdXQnLFxuICBwcm92aWRlcnM6IFtNVUxUSV9EQVRFX1ZBTFVFX0FDQ0VTU09SXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bm92by1jaGlwLWxpc3Q+XG4gICAgICA8bm92by1jaGlwICpuZ0Zvcj1cImxldCBkYXRlIG9mIHZhbHVlIHwgZGVmYXVsdDogW11cIiAocmVtb3ZlZCk9XCJyZW1vdmUoJGV2ZW50LCBkYXRlKVwiPlxuICAgICAgICB7eyBkYXRlIHwgZGF0ZTogZm9ybWF0IH19XG4gICAgICAgIDxub3ZvLWljb24gbm92b0NoaXBSZW1vdmU+Y2xvc2U8L25vdm8taWNvbj5cbiAgICAgIDwvbm92by1jaGlwPlxuICAgIDwvbm92by1jaGlwLWxpc3Q+XG4gICAgPCEtLSA8ZGl2ICpuZ0lmPVwidmFsdWUubGVuZ3RoID4gY2hpcHNDb3VudFwiPlxuICAgICAgPHVsIGNsYXNzPVwic3VtbWFyeVwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHR5cGUgb2Ygbm90U2hvd25cIj4rIHt7IHR5cGUuY291bnQgfX0ge3sgbGFiZWxzLm1vcmUgfX0ge3sgdHlwZS50eXBlIH19PC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlucHV0LWNvbnRhaW5lclwiIChjbGljayk9XCJfaGFuZGxlRm9jdXMoJGV2ZW50KVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlclwiICpuZ0lmPVwiIXZhbHVlLmxlbmd0aFwiIGRhdGEtYXV0b21hdGlvbi1pZD1cIm11bHRpLWRhdGUtaW5wdXRcIj57eyBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bm92by1pY29uIGNsYXNzPVwicGFuZWwtdG9nZ2xlXCIgW2NsYXNzLnNlbGVjdGVkXT1cInBhbmVsT3BlblwiIChjbGljayk9XCJvcGVuUGFuZWwoKVwiPmNhbGVuZGFyPC9ub3ZvLWljb24+XG4gICAgPGxhYmVsIGNsYXNzPVwiY2xlYXItYWxsXCIgKm5nSWY9XCJ2YWx1ZS5sZW5ndGhcIiAoY2xpY2spPVwiY2xlYXJWYWx1ZSgpXCI+e3sgbGFiZWxzLmNsZWFyQWxsIH19IDxpIGNsYXNzPVwiYmhpLXRpbWVzXCI+PC9pPjwvbGFiZWw+XG4gICAgPG5vdm8tb3ZlcmxheS10ZW1wbGF0ZSBbcGFyZW50XT1cImVsZW1lbnRcIiBwb3NpdGlvbj1cImFib3ZlLWJlbG93XCI+XG4gICAgICA8bm92by1kYXRlLXBpY2tlclxuICAgICAgICBbc3RhcnRdPVwic3RhcnRcIlxuICAgICAgICBbZW5kXT1cImVuZFwiXG4gICAgICAgIGlubGluZT1cInRydWVcIlxuICAgICAgICBtb2RlPVwibXVsdGlwbGVcIlxuICAgICAgICAob25TZWxlY3QpPVwic2V0VmFsdWVBbmRDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIFt3ZWVrU3RhcnRdPVwid2Vla1N0YXJ0XCJcbiAgICAgID48L25vdm8tZGF0ZS1waWNrZXI+XG4gICAgPC9ub3ZvLW92ZXJsYXktdGVtcGxhdGU+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL011bHRpRGF0ZUlucHV0LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTm92b011bHRpRGF0ZUlucHV0RWxlbWVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwdWJsaWMgZm9ybWF0dGVkU3RhcnREYXRlOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGZvcm1hdHRlZEVuZERhdGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHVzZXJEZWZpbmVkRm9ybWF0OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZztcbiAgQElucHV0KClcbiAgc3RhcnQ6IERhdGU7XG4gIEBJbnB1dCgpXG4gIGVuZDogRGF0ZTtcbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KClcbiAgZm9ybWF0OiBzdHJpbmcgPSAnc2hvcnREYXRlJztcbiAgQElucHV0KClcbiAgYWxsb3dJbnZhbGlkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICB3ZWVrU3RhcnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpXG4gIGNoaXBzQ291bnQ6IG51bWJlciA9IDU7XG4gIEBPdXRwdXQoKVxuICBibHVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgQE91dHB1dCgpXG4gIGZvY3VzRXZlbnQ6IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgLyoqIEVsZW1lbnQgZm9yIHRoZSBwYW5lbCBjb250YWluaW5nIHRoZSBhdXRvY29tcGxldGUgb3B0aW9ucy4gKi9cbiAgQFZpZXdDaGlsZChOb3ZvT3ZlcmxheVRlbXBsYXRlQ29tcG9uZW50KVxuICBvdmVybGF5OiBOb3ZvT3ZlcmxheVRlbXBsYXRlQ29tcG9uZW50O1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IERhdGVbXSA9IFtdO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIG5vdFNob3duOiBhbnkgPSB7fTtcblxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogRGF0ZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fc2V0Rm9ybVZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgU3RhdGVcbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSAhIXZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIGxhYmVsczogTm92b0xhYmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIGRhdGVGb3JtYXRTZXJ2aWNlOiBEYXRlRm9ybWF0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMubGFiZWxzLmRhdGVGb3JtYXRTdHJpbmcoKS50b1VwcGVyQ2FzZSgpIHx8IHRoaXMubGFiZWxzLmRhdGVGb3JtYXRQbGFjZWhvbGRlcjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXNlckRlZmluZWRGb3JtYXQgPSB0aGlzLmZvcm1hdCA/ICF0aGlzLmZvcm1hdC5tYXRjaCgvXihERFxcL01NXFwvWVlZWXxNTVxcL0REXFwvWVlZWSkkL2cpIDogZmFsc2U7XG4gICAgLy8gaWYgKCF0aGlzLnVzZXJEZWZpbmVkRm9ybWF0ICYmIHRoaXMudGV4dE1hc2tFbmFibGVkICYmICF0aGlzLmFsbG93SW52YWxpZERhdGUpIHtcbiAgICAvLyAgIHRoaXMubWFza09wdGlvbnMgPSB0aGlzLm1hc2tPcHRpb25zIHx8IHtcbiAgICAvLyAgICAgbWFzazogdGhpcy5kYXRlRm9ybWF0U2VydmljZS5nZXREYXRlTWFzaygpLFxuICAgIC8vICAgICBwaXBlOiBjcmVhdGVBdXRvQ29ycmVjdGVkRGF0ZVBpcGUodGhpcy5mb3JtYXQgfHwgdGhpcy5sYWJlbHMuZGF0ZUZvcm1hdFN0cmluZygpLnRvTG93ZXJDYXNlKCkpLFxuICAgIC8vICAgICBrZWVwQ2hhclBvc2l0aW9uczogZmFsc2UsXG4gICAgLy8gICAgIGd1aWRlOiB0cnVlLFxuICAgIC8vICAgfTtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgdGhpcy5tYXNrT3B0aW9ucyA9IHsgbWFzazogZmFsc2UgfTtcbiAgICAvLyB9XG4gIH1cblxuICBmb3JtYXR0ZXIodmFsdWUpIHtcbiAgICBjb25zdCBbZGF0ZVRpbWVWYWx1ZSwgZm9ybWF0dGVkXSA9IHRoaXMuZGF0ZUZvcm1hdFNlcnZpY2UucGFyc2VTdHJpbmcodmFsdWUsIGZhbHNlLCAnZGF0ZScpO1xuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH1cblxuICAvKiogQkVHSU46IENvbnZlbmllbnQgUGFuZWwgTWV0aG9kcy4gKi9cbiAgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5wYW5lbE9wZW4gPyB0aGlzLm92ZXJsYXkuY2xvc2VQYW5lbCgpIDogdGhpcy5vdmVybGF5Lm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuICBjbG9zZVBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheSAmJiB0aGlzLm92ZXJsYXkuY2xvc2VQYW5lbCgpO1xuICB9XG4gIGdldCBwYW5lbE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheSAmJiB0aGlzLm92ZXJsYXkucGFuZWxPcGVuO1xuICB9XG4gIC8qKiBFTkQ6IENvbnZlbmllbnQgUGFuZWwgTWV0aG9kcy4gKi9cblxuICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICgoZXZlbnQua2V5ID09PSBLZXkuRXNjYXBlIHx8IGV2ZW50LmtleSA9PT0gS2V5LkVudGVyIHx8IGV2ZW50LmtleSA9PT0gS2V5LlRhYikgJiYgdGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZUJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmJsdXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIF9oYW5kbGVGb2N1cyhldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub3BlblBhbmVsKCk7XG4gICAgdGhpcy5mb2N1c0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcmVtb3ZlKGV2ZW50OiBhbnksIGRhdGU6IERhdGUpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gbmV3IFNldCh0aGlzLnZhbHVlKTtcbiAgICBpZiAoY3VycmVudC5oYXMoZGF0ZSkpIHtcbiAgICAgIGN1cnJlbnQuZGVsZXRlKGRhdGUpO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gWy4uLmN1cnJlbnRdO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjayA9IChfOiBhbnkpID0+IHtcbiAgICAvLyBwbGFjZWhvbGRlclxuICB9O1xuXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgLy8gcGxhY2Vob2xkZXJcbiAgfTtcblxuICBwcml2YXRlIF9zZXRGb3JtVmFsdWUodmFsdWU6IERhdGVbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAvLyB0aGlzLmZvcm1hdHRlZFN0YXJ0RGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZVZhbHVlKHRoaXMudmFsdWUuc3RhcnREYXRlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgY2xvc2VzIHRoZSBwYW5lbCwgYW5kIGlmIGEgdmFsdWUgaXMgc3BlY2lmaWVkLCBhbHNvIHNldHMgdGhlIGFzc29jaWF0ZWRcbiAgICogY29udHJvbCB0byB0aGF0IHZhbHVlLiBJdCB3aWxsIGFsc28gbWFyayB0aGUgY29udHJvbCBhcyBkaXJ0eSBpZiB0aGlzIGludGVyYWN0aW9uXG4gICAqIHN0ZW1tZWQgZnJvbSB0aGUgdXNlci5cbiAgICovXG4gIHB1YmxpYyBzZXRWYWx1ZUFuZENsb3NlKGV2ZW50OiBEYXRlW10gPSBbXSk6IHZvaWQge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy52YWx1ZSA9IGV2ZW50O1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgLy8gdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYW55IHByZXZpb3VzIHNlbGVjdGVkIG9wdGlvbiBhbmQgZW1pdCBhIHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnQgZm9yIHRoaXMgb3B0aW9uXG4gICAqL1xuICBwdWJsaWMgY2xlYXJWYWx1ZSgpIHtcbiAgICB0aGlzLnZhbHVlID0gW107XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzVmFsdWUoKSB7XG4gICAgcmV0dXJuICFIZWxwZXJzLmlzRW1wdHkodGhpcy52YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlEYXRlSW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9kYXRlLXBpY2tlci9NdWx0aURhdGVJbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxLQUFLO0FBQ0wsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxNQUFNO0FBQ04sT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBTyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7O0FBRW5ELHNEQUFzRDtBQUN0RCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztJQUN4RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFvQ0YsTUFBTSxPQUFPLHlCQUF5QjtJQTBEcEMsWUFDUyxPQUFtQixFQUNuQixNQUF3QixFQUN2QixHQUFzQixFQUN2QixpQkFBb0M7UUFIcEMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBN0R0Qyx1QkFBa0IsR0FBVyxFQUFFLENBQUM7UUFDaEMscUJBQWdCLEdBQVcsRUFB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c0JBQWpCLEtBQUs7Z0JBYUYsUUFBUTtzQkFGWCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5HXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyBBcHBcbmltcG9ydCB7IE5vdm9PdmVybGF5VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlRm9ybWF0U2VydmljZSwgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvc2VydmljZXMnO1xuaW1wb3J0IHsgSGVscGVycywgS2V5IH0gZnJvbSAnbm92by1lbGVtZW50cy91dGlscyc7XG5cbi8vIFZhbHVlIGFjY2Vzc29yIGZvciB0aGUgY29tcG9uZW50IChzdXBwb3J0cyBuZ01vZGVsKVxuY29uc3QgTVVMVElfREFURV9WQUxVRV9BQ0NFU1NPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5vdm9NdWx0aURhdGVJbnB1dEVsZW1lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vdm8tbXVsdGktZGF0ZS1pbnB1dCcsXG4gIHByb3ZpZGVyczogW01VTFRJX0RBVEVfVkFMVUVfQUNDRVNTT1JdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxub3ZvLWNoaXAtbGlzdD5cbiAgICAgIDxub3ZvLWNoaXAgKm5nRm9yPVwibGV0IGRhdGUgb2YgdmFsdWUgfCBkZWZhdWx0OiBbXVwiIChyZW1vdmVkKT1cInJlbW92ZSgkZXZlbnQsIGRhdGUpXCI+XG4gICAgICAgIHt7IGRhdGUgfCBkYXRlOiBmb3JtYXQgfX1cbiAgICAgICAgPG5vdm8taWNvbiBub3ZvQ2hpcFJlbW92ZT5jbG9zZTwvbm92by1pY29uPlxuICAgICAgPC9ub3ZvLWNoaXA+XG4gICAgPC9ub3ZvLWNoaXAtbGlzdD5cbiAgICA8IS0tIDxkaXYgKm5nSWY9XCJ2YWx1ZS5sZW5ndGggPiBjaGlwc0NvdW50XCI+XG4gICAgICA8dWwgY2xhc3M9XCJzdW1tYXJ5XCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdHlwZSBvZiBub3RTaG93blwiPisge3sgdHlwZS5jb3VudCB9fSB7eyBsYWJlbHMubW9yZSB9fSB7eyB0eXBlLnR5cGUgfX08L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImNoaXAtaW5wdXQtY29udGFpbmVyXCIgKGNsaWNrKT1cIl9oYW5kbGVGb2N1cygkZXZlbnQpXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInBsYWNlaG9sZGVyXCIgKm5nSWY9XCIhdmFsdWUubGVuZ3RoXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwibXVsdGktZGF0ZS1pbnB1dFwiPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxub3ZvLWljb24gY2xhc3M9XCJwYW5lbC10b2dnbGVcIiBbY2xhc3Muc2VsZWN0ZWRdPVwicGFuZWxPcGVuXCIgKGNsaWNrKT1cIm9wZW5QYW5lbCgpXCI+Y2FsZW5kYXI8L25vdm8taWNvbj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjbGVhci1hbGxcIiAqbmdJZj1cInZhbHVlLmxlbmd0aFwiIChjbGljayk9XCJjbGVhclZhbHVlKClcIj57eyBsYWJlbHMuY2xlYXJBbGwgfX0gPGkgY2xhc3M9XCJiaGktdGltZXNcIj48L2k+PC9sYWJlbD5cbiAgICA8bm92by1vdmVybGF5LXRlbXBsYXRlIFtwYXJlbnRdPVwiZWxlbWVudFwiIHBvc2l0aW9uPVwiYWJvdmUtYmVsb3dcIj5cbiAgICAgIDxub3ZvLWRhdGUtcGlja2VyXG4gICAgICAgIFtzdGFydF09XCJzdGFydFwiXG4gICAgICAgIFtlbmRdPVwiZW5kXCJcbiAgICAgICAgaW5saW5lPVwidHJ1ZVwiXG4gICAgICAgIG1vZGU9XCJtdWx0aXBsZVwiXG4gICAgICAgIChvblNlbGVjdCk9XCJzZXRWYWx1ZUFuZENsb3NlKCRldmVudClcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgW3dlZWtTdGFydF09XCJ3ZWVrU3RhcnRcIlxuICAgICAgPjwvbm92by1kYXRlLXBpY2tlcj5cbiAgICA8L25vdm8tb3ZlcmxheS10ZW1wbGF0ZT5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vTXVsdGlEYXRlSW5wdXQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvTXVsdGlEYXRlSW5wdXRFbGVtZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHB1YmxpYyBmb3JtYXR0ZWRTdGFydERhdGU6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZm9ybWF0dGVkRW5kRGF0ZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgdXNlckRlZmluZWRGb3JtYXQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBzdGFydDogRGF0ZTtcbiAgQElucHV0KClcbiAgZW5kOiBEYXRlO1xuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBmb3JtYXQ6IHN0cmluZyA9ICdzaG9ydERhdGUnO1xuICBASW5wdXQoKVxuICBhbGxvd0ludmFsaWREYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHdlZWtTdGFydDogbnVtYmVyID0gMDtcbiAgQElucHV0KClcbiAgY2hpcHNDb3VudDogbnVtYmVyID0gNTtcbiAgQE91dHB1dCgpXG4gIGJsdXJFdmVudDogRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICBAT3V0cHV0KClcbiAgZm9jdXNFdmVudDogRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gIC8qKiBFbGVtZW50IGZvciB0aGUgcGFuZWwgY29udGFpbmluZyB0aGUgYXV0b2NvbXBsZXRlIG9wdGlvbnMuICovXG4gIEBWaWV3Q2hpbGQoTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudClcbiAgb3ZlcmxheTogTm92b092ZXJsYXlUZW1wbGF0ZUNvbXBvbmVudDtcblxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBEYXRlW10gPSBbXTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBub3RTaG93bjogYW55ID0ge307XG5cbiAgQElucHV0KCkgZ2V0IHZhbHVlKCk6IERhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgU3RhdGVcbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSAhIXZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIGxhYmVsczogTm92b0xhYmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIGRhdGVGb3JtYXRTZXJ2aWNlOiBEYXRlRm9ybWF0U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMubGFiZWxzLmRhdGVGb3JtYXRTdHJpbmcoKS50b1VwcGVyQ2FzZSgpIHx8IHRoaXMubGFiZWxzLmRhdGVGb3JtYXRQbGFjZWhvbGRlcjtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXNlckRlZmluZWRGb3JtYXQgPSB0aGlzLmZvcm1hdCA/ICF0aGlzLmZvcm1hdC5tYXRjaCgvXihERFxcL01NXFwvWVlZWXxNTVxcL0REXFwvWVlZWSkkL2cpIDogZmFsc2U7XG4gIH1cblxuICBmb3JtYXR0ZXIodmFsdWUpIHtcbiAgICBjb25zdCBbZGF0ZVRpbWVWYWx1ZSwgZm9ybWF0dGVkXSA9IHRoaXMuZGF0ZUZvcm1hdFNlcnZpY2UucGFyc2VTdHJpbmcodmFsdWUsIGZhbHNlLCAnZGF0ZScpO1xuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH1cblxuICAvKiogQkVHSU46IENvbnZlbmllbnQgUGFuZWwgTWV0aG9kcy4gKi9cbiAgb3BlblBhbmVsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5wYW5lbE9wZW4gPyB0aGlzLm92ZXJsYXkuY2xvc2VQYW5lbCgpIDogdGhpcy5vdmVybGF5Lm9wZW5QYW5lbCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5ICYmIHRoaXMub3ZlcmxheS5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICBnZXQgcGFuZWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXkgJiYgdGhpcy5vdmVybGF5LnBhbmVsT3BlbjtcbiAgfVxuICAvKiogRU5EOiBDb252ZW5pZW50IFBhbmVsIE1ldGhvZHMuICovXG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoKGV2ZW50LmtleSA9PT0gS2V5LkVzY2FwZSB8fCBldmVudC5rZXkgPT09IEtleS5FbnRlciB8fCBldmVudC5rZXkgPT09IEtleS5UYWIpICYmIHRoaXMucGFuZWxPcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlUGFuZWwoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5ibHVyRXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBfaGFuZGxlRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5QYW5lbCgpO1xuICAgIHRoaXMuZm9jdXNFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHJlbW92ZShldmVudDogYW55LCBkYXRlOiBEYXRlKSB7XG4gICAgY29uc3QgY3VycmVudCA9IG5ldyBTZXQodGhpcy52YWx1ZSk7XG4gICAgaWYgKGN1cnJlbnQuaGFzKGRhdGUpKSB7XG4gICAgICBjdXJyZW50LmRlbGV0ZShkYXRlKTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IFsuLi5jdXJyZW50XTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2sgPSAoXzogYW55KSA9PiB7XG4gICAgLy8gcGxhY2Vob2xkZXJcbiAgfTtcblxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrID0gKCkgPT4ge1xuICAgIC8vIHBsYWNlaG9sZGVyXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGNsb3NlcyB0aGUgcGFuZWwsIGFuZCBpZiBhIHZhbHVlIGlzIHNwZWNpZmllZCwgYWxzbyBzZXRzIHRoZSBhc3NvY2lhdGVkXG4gICAqIGNvbnRyb2wgdG8gdGhhdCB2YWx1ZS4gSXQgd2lsbCBhbHNvIG1hcmsgdGhlIGNvbnRyb2wgYXMgZGlydHkgaWYgdGhpcyBpbnRlcmFjdGlvblxuICAgKiBzdGVtbWVkIGZyb20gdGhlIHVzZXIuXG4gICAqL1xuICBwdWJsaWMgc2V0VmFsdWVBbmRDbG9zZShldmVudDogRGF0ZVtdID0gW10pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBldmVudDtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIC8vIHRoaXMuY2xvc2VQYW5lbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFueSBwcmV2aW91cyBzZWxlY3RlZCBvcHRpb24gYW5kIGVtaXQgYSBzZWxlY3Rpb24gY2hhbmdlIGV2ZW50IGZvciB0aGlzIG9wdGlvblxuICAgKi9cbiAgcHVibGljIGNsZWFyVmFsdWUoKSB7XG4gICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1ZhbHVlKCkge1xuICAgIHJldHVybiAhSGVscGVycy5pc0VtcHR5KHRoaXMudmFsdWUpO1xuICB9XG59XG4iXX0=
@@ -4,7 +4,6 @@ import { NgModule } from '@angular/core';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  // Vendor
6
6
  import { IMaskDirectiveModule } from 'angular-imask';
7
- import { TextMaskModule } from 'angular2-text-mask';
8
7
  // APP
9
8
  import { NovoOverlayModule } from 'novo-elements/elements/common';
10
9
  import { NovoDatePickerModule } from 'novo-elements/elements/date-picker';
@@ -15,14 +14,14 @@ import * as i0 from "@angular/core";
15
14
  export class NovoDateTimePickerModule {
16
15
  }
17
16
  NovoDateTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
- NovoDateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateTimePickerModule, declarations: [NovoDateTimePickerElement, NovoDateTimePickerInputElement], imports: [CommonModule, FormsModule, NovoDatePickerModule, NovoTimePickerModule, IMaskDirectiveModule, TextMaskModule, NovoOverlayModule], exports: [NovoDateTimePickerElement, NovoDateTimePickerInputElement] });
19
- NovoDateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateTimePickerModule, imports: [[CommonModule, FormsModule, NovoDatePickerModule, NovoTimePickerModule, IMaskDirectiveModule, TextMaskModule, NovoOverlayModule]] });
17
+ NovoDateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateTimePickerModule, declarations: [NovoDateTimePickerElement, NovoDateTimePickerInputElement], imports: [CommonModule, FormsModule, NovoDatePickerModule, NovoTimePickerModule, IMaskDirectiveModule, NovoOverlayModule], exports: [NovoDateTimePickerElement, NovoDateTimePickerInputElement] });
18
+ NovoDateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateTimePickerModule, imports: [[CommonModule, FormsModule, NovoDatePickerModule, NovoTimePickerModule, IMaskDirectiveModule, NovoOverlayModule]] });
20
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDateTimePickerModule, decorators: [{
21
20
  type: NgModule,
22
21
  args: [{
23
- imports: [CommonModule, FormsModule, NovoDatePickerModule, NovoTimePickerModule, IMaskDirectiveModule, TextMaskModule, NovoOverlayModule],
22
+ imports: [CommonModule, FormsModule, NovoDatePickerModule, NovoTimePickerModule, IMaskDirectiveModule, NovoOverlayModule],
24
23
  declarations: [NovoDateTimePickerElement, NovoDateTimePickerInputElement],
25
24
  exports: [NovoDateTimePickerElement, NovoDateTimePickerInputElement],
26
25
  }]
27
26
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWVQaWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvZGF0ZS10aW1lLXBpY2tlci9EYXRlVGltZVBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxTQUFTO0FBQ1QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxNQUFNO0FBQ04sT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBT3ZFLE1BQU0sT0FBTyx3QkFBd0I7O3NIQUF4Qix3QkFBd0I7dUhBQXhCLHdCQUF3QixpQkFIcEIseUJBQXlCLEVBQUUsOEJBQThCLGFBRDlELFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixhQUU5SCx5QkFBeUIsRUFBRSw4QkFBOEI7dUhBRXhELHdCQUF3QixZQUoxQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDOzRGQUk5SCx3QkFBd0I7a0JBTHBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3pJLFlBQVksRUFBRSxDQUFDLHlCQUF5QixFQUFFLDhCQUE4QixDQUFDO29CQUN6RSxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSw4QkFBOEIsQ0FBQztpQkFDckUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBORzJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG4vLyBWZW5kb3JcbmltcG9ydCB7IElNYXNrRGlyZWN0aXZlTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQgeyBUZXh0TWFza01vZHVsZSB9IGZyb20gJ2FuZ3VsYXIyLXRleHQtbWFzayc7XG4vLyBBUFBcbmltcG9ydCB7IE5vdm9PdmVybGF5TW9kdWxlIH0gZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy9jb21tb24nO1xuaW1wb3J0IHsgTm92b0RhdGVQaWNrZXJNb2R1bGUgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2RhdGUtcGlja2VyJztcbmltcG9ydCB7IE5vdm9UaW1lUGlja2VyTW9kdWxlIH0gZnJvbSAnbm92by1lbGVtZW50cy9lbGVtZW50cy90aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBOb3ZvRGF0ZVRpbWVQaWNrZXJFbGVtZW50IH0gZnJvbSAnLi9EYXRlVGltZVBpY2tlcic7XG5pbXBvcnQgeyBOb3ZvRGF0ZVRpbWVQaWNrZXJJbnB1dEVsZW1lbnQgfSBmcm9tICcuL0RhdGVUaW1lUGlja2VySW5wdXQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgTm92b0RhdGVQaWNrZXJNb2R1bGUsIE5vdm9UaW1lUGlja2VyTW9kdWxlLCBJTWFza0RpcmVjdGl2ZU1vZHVsZSwgVGV4dE1hc2tNb2R1bGUsIE5vdm9PdmVybGF5TW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbTm92b0RhdGVUaW1lUGlja2VyRWxlbWVudCwgTm92b0RhdGVUaW1lUGlja2VySW5wdXRFbGVtZW50XSxcbiAgZXhwb3J0czogW05vdm9EYXRlVGltZVBpY2tlckVsZW1lbnQsIE5vdm9EYXRlVGltZVBpY2tlcklucHV0RWxlbWVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdm9EYXRlVGltZVBpY2tlck1vZHVsZSB7fVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWVQaWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvZWxlbWVudHMvZGF0ZS10aW1lLXBpY2tlci9EYXRlVGltZVBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxTQUFTO0FBQ1QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE1BQU07QUFDTixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPdkUsTUFBTSxPQUFPLHdCQUF3Qjs7c0hBQXhCLHdCQUF3Qjt1SEFBeEIsd0JBQXdCLGlCQUhwQix5QkFBeUIsRUFBRSw4QkFBOEIsYUFEOUQsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsYUFFOUcseUJBQXlCLEVBQUUsOEJBQThCO3VIQUV4RCx3QkFBd0IsWUFKMUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDOzRGQUk5Ryx3QkFBd0I7a0JBTHBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQztvQkFDekgsWUFBWSxFQUFFLENBQUMseUJBQXlCLEVBQUUsOEJBQThCLENBQUM7b0JBQ3pFLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixFQUFFLDhCQUE4QixDQUFDO2lCQUNyRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5HMlxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbi8vIFZlbmRvclxuaW1wb3J0IHsgSU1hc2tEaXJlY3RpdmVNb2R1bGUgfSBmcm9tICdhbmd1bGFyLWltYXNrJztcbi8vIEFQUFxuaW1wb3J0IHsgTm92b092ZXJsYXlNb2R1bGUgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBOb3ZvRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ25vdm8tZWxlbWVudHMvZWxlbWVudHMvZGF0ZS1waWNrZXInO1xuaW1wb3J0IHsgTm92b1RpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICdub3ZvLWVsZW1lbnRzL2VsZW1lbnRzL3RpbWUtcGlja2VyJztcbmltcG9ydCB7IE5vdm9EYXRlVGltZVBpY2tlckVsZW1lbnQgfSBmcm9tICcuL0RhdGVUaW1lUGlja2VyJztcbmltcG9ydCB7IE5vdm9EYXRlVGltZVBpY2tlcklucHV0RWxlbWVudCB9IGZyb20gJy4vRGF0ZVRpbWVQaWNrZXJJbnB1dCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBOb3ZvRGF0ZVBpY2tlck1vZHVsZSwgTm92b1RpbWVQaWNrZXJNb2R1bGUsIElNYXNrRGlyZWN0aXZlTW9kdWxlLCBOb3ZvT3ZlcmxheU1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW05vdm9EYXRlVGltZVBpY2tlckVsZW1lbnQsIE5vdm9EYXRlVGltZVBpY2tlcklucHV0RWxlbWVudF0sXG4gIGV4cG9ydHM6IFtOb3ZvRGF0ZVRpbWVQaWNrZXJFbGVtZW50LCBOb3ZvRGF0ZVRpbWVQaWNrZXJJbnB1dEVsZW1lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBOb3ZvRGF0ZVRpbWVQaWNrZXJNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,224 @@
1
+ import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2 } from '@angular/core';
2
+ import { ReplaySubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class NovoDragBoxParent {
5
+ constructor(elementRef, renderer) {
6
+ this.elementRef = elementRef;
7
+ this.renderer = renderer;
8
+ this.$destroy = new ReplaySubject(1);
9
+ this.novoDragDropFinish = new EventEmitter();
10
+ this.mutationObserver = new MutationObserver(this.mutationDetected.bind(this));
11
+ }
12
+ get itemsReordered() {
13
+ return this.trackedItems.map(item => item.item);
14
+ }
15
+ get element() {
16
+ return this.elementRef.nativeElement;
17
+ }
18
+ ngAfterViewInit() {
19
+ this.registerChildren();
20
+ this.mutationObserver.observe(this.element, { childList: true });
21
+ }
22
+ ngOnDestroy() {
23
+ this.$destroy.next();
24
+ this.$destroy.complete();
25
+ }
26
+ registerChildren() {
27
+ if (this.items && this.items.length !== this.element.children.length) {
28
+ throw new Error(`Could not match item list to children list - drag box contains ${this.items.length} items, but has ${this.element.children.length} elements`);
29
+ }
30
+ this.trackedItems = [];
31
+ for (let i = 0; i < this.element.children.length; i++) {
32
+ this.registerChild(this.element.children[i], i);
33
+ }
34
+ }
35
+ registerChild(element, index) {
36
+ const listeners = [
37
+ this.renderer.listen(element, 'dragstart', this.onDragStart.bind(this)),
38
+ this.renderer.listen(element, 'drop', this.onDragFinish.bind(this)),
39
+ this.renderer.listen(element, 'dragend', this.onDragStop.bind(this))
40
+ ];
41
+ element.draggable = true;
42
+ this.$destroy.subscribe(() => listeners.forEach(cb => cb()));
43
+ this.trackedItems.push({
44
+ item: this.items[index],
45
+ element
46
+ });
47
+ }
48
+ mutationDetected(mutations) {
49
+ if (this.pickedUp) {
50
+ return;
51
+ }
52
+ const addedNodes = new Set();
53
+ const removedNodes = new Set();
54
+ for (let mutation of mutations) {
55
+ mutation.addedNodes.forEach((a) => {
56
+ if (!removedNodes.delete(a)) {
57
+ addedNodes.add(a);
58
+ }
59
+ });
60
+ mutation.removedNodes.forEach((a) => {
61
+ if (!addedNodes.delete(a)) {
62
+ removedNodes.add(a);
63
+ }
64
+ });
65
+ }
66
+ addedNodes.forEach(node => {
67
+ const idx = Array.prototype.indexOf.call(this.element.children, node);
68
+ this.registerChild(node, idx);
69
+ });
70
+ if (removedNodes.size > 0) {
71
+ this.trackedItems = this.trackedItems.filter(item => !removedNodes.has(item.element));
72
+ }
73
+ }
74
+ /** Per-item listeners */
75
+ onDragStart(event) {
76
+ if (this.shouldBlockDragStart(event)) {
77
+ event.preventDefault();
78
+ return;
79
+ }
80
+ const dataTransfer = event.dataTransfer;
81
+ // Present a native 'move item' effect
82
+ dataTransfer.effectAllowed = 'move';
83
+ this.pickedUp = event.target;
84
+ event.stopPropagation();
85
+ this.savedOrder = [...this.trackedItems];
86
+ }
87
+ // Equivalent of "finally" - this runs whether or not the drag finished on a valid ending location
88
+ onDragStop(event) {
89
+ this.pickedUp = null;
90
+ this.savedOrder = null;
91
+ event.stopPropagation();
92
+ }
93
+ onDragFinish(event) {
94
+ event.preventDefault();
95
+ event.stopPropagation();
96
+ if (!this.element.contains(event.currentTarget)) {
97
+ // this is for a different drag region - ignore
98
+ return;
99
+ }
100
+ const draggedItem = this.trackedItems.find(item => item.element === this.pickedUp)?.item;
101
+ this.trackedItems = Array.prototype.map.call(this.element.children, child => {
102
+ const item = this.trackedItems.find(item => item.element === child);
103
+ if (!item) {
104
+ throw new Error('DragDrop: Error - could not reassociate an item post-drag');
105
+ }
106
+ return item;
107
+ });
108
+ this.novoDragDropFinish.emit({
109
+ draggedItem,
110
+ allItems: this.itemsReordered,
111
+ event
112
+ });
113
+ }
114
+ /** - end per-item listeners */
115
+ onDragOver(event) {
116
+ if (!this.pickedUp) {
117
+ return;
118
+ }
119
+ let target = event.target;
120
+ if (!this.element.contains(target)) {
121
+ target = null;
122
+ }
123
+ // In some cases (maybe browser-specific) we may have this event reported from a sub-element of a drag destination.
124
+ // We need to go upwards in the tree to find the actual target
125
+ if (target && !target.draggable) {
126
+ target = this.findDraggableParentOfElement(target);
127
+ }
128
+ // Check if this drag event is within this drag box
129
+ if (target && target.parentElement === this.element) {
130
+ event.stopPropagation();
131
+ event.preventDefault();
132
+ if (event.dataTransfer) {
133
+ event.dataTransfer.dropEffect = 'move';
134
+ }
135
+ this.applyTempSort(this.pickedUp, target);
136
+ }
137
+ else {
138
+ // if not within this drag box, then move this item back to its original position and show a diabled drag effect
139
+ if (event.dataTransfer) {
140
+ event.dataTransfer.dropEffect = 'none';
141
+ }
142
+ this.resetSorting();
143
+ }
144
+ }
145
+ findDraggableParentOfElement(target) {
146
+ const parentElement = target.parentElement;
147
+ if (!parentElement) {
148
+ return null;
149
+ }
150
+ else if (parentElement.draggable) {
151
+ return parentElement;
152
+ }
153
+ else {
154
+ return this.findDraggableParentOfElement(parentElement);
155
+ }
156
+ }
157
+ applyTempSort(showXElement, inPlaceOfY) {
158
+ if (showXElement === inPlaceOfY) {
159
+ // same element - ignoring
160
+ return;
161
+ }
162
+ // Apply the "preview" effect from dragging one item to another
163
+ const aIndex = Array.prototype.indexOf.call(this.elementRef.nativeElement.children, showXElement);
164
+ const bIndex = Array.prototype.indexOf.call(this.elementRef.nativeElement.children, inPlaceOfY);
165
+ const diff = bIndex - aIndex;
166
+ let insertPosition;
167
+ if (diff > 0) {
168
+ insertPosition = 'afterend';
169
+ }
170
+ else if (diff < 0) {
171
+ insertPosition = 'beforebegin';
172
+ }
173
+ else {
174
+ throw new Error('DragDrop: Two elements are in the same position');
175
+ }
176
+ inPlaceOfY.insertAdjacentElement(insertPosition, showXElement);
177
+ }
178
+ resetSorting() {
179
+ // return to the order of elements from the last time we called onDragPickup
180
+ if (!this.savedOrder) {
181
+ throw new Error('DragDrop: Cannot reset sorting with no saved order');
182
+ }
183
+ const boxElem = this.elementRef.nativeElement;
184
+ for (let i = 0; i < boxElem.children.length; i++) {
185
+ const item = boxElem.children[i];
186
+ if (this.savedOrder[i].element !== item && i > 0) {
187
+ this.savedOrder[i - 1].element.insertAdjacentElement('afterend', this.savedOrder[i].element);
188
+ }
189
+ }
190
+ }
191
+ // If the user has provided classes indicating they only want a certain region to be draggable, ignore
192
+ // this drag event if it is outside of there.
193
+ shouldBlockDragStart(event) {
194
+ const dragTarget = event.target;
195
+ // TODO: Allow for multiple drag targets, and drag exclusion targets
196
+ const userDragTarget = dragTarget.querySelector('.novo-drag-target');
197
+ if (userDragTarget) {
198
+ return !this.isElementWithinEventBounds(userDragTarget, event);
199
+ }
200
+ }
201
+ isElementWithinEventBounds(element, event) {
202
+ const rect = element.getBoundingClientRect();
203
+ const isInside = event.clientX > rect.left && event.clientX < rect.right &&
204
+ event.clientY < rect.bottom && event.clientY > rect.top;
205
+ return isInside;
206
+ }
207
+ }
208
+ NovoDragBoxParent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDragBoxParent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
209
+ NovoDragBoxParent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: NovoDragBoxParent, selector: "[novoDragDrop]", inputs: { items: ["novoDragDrop", "items"] }, outputs: { novoDragDropFinish: "novoDragDropFinish" }, host: { listeners: { "window:dragover": "onDragOver($event)" } }, ngImport: i0 });
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDragBoxParent, decorators: [{
211
+ type: Directive,
212
+ args: [{
213
+ selector: '[novoDragDrop]'
214
+ }]
215
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { items: [{
216
+ type: Input,
217
+ args: ['novoDragDrop']
218
+ }], novoDragDropFinish: [{
219
+ type: Output
220
+ }], onDragOver: [{
221
+ type: HostListener,
222
+ args: ['window:dragover', ['$event']]
223
+ }] } });
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL2RyYWctZHJvcC9kcmFnLWRyb3AtYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBZ0JyQyxNQUFNLE9BQU8saUJBQWlCO0lBbUIxQixZQUFvQixVQUFzQixFQUFVLFFBQW1CO1FBQW5ELGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBZHZFLGFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztRQUk1Qix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQVExRSxxQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVDLENBQUM7SUFONUUsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBTUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVB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QkFBZ0I7aUJBQzdCO3lIQVEwQixLQUFLO3NCQUEzQixLQUFLO3VCQUFDLGNBQWM7Z0JBRVgsa0JBQWtCO3NCQUEzQixNQUFNO2dCQStIUCxVQUFVO3NCQURULFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vdm9EcmFnRmluaXNoRXZlbnQ8VD4ge1xuICAgIGRyYWdnZWRJdGVtOiBUO1xuICAgIGFsbEl0ZW1zOiBUW107XG4gICAgZXZlbnQ6IERyYWdFdmVudDtcbn1cblxuaW50ZXJmYWNlIE5vdm9EcmFnSXRlbTxUPiB7XG4gICAgaXRlbTogVDtcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbm92b0RyYWdEcm9wXSdcbn0pXG5leHBvcnQgY2xhc3MgTm92b0RyYWdCb3hQYXJlbnQ8VD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcGlja2VkVXA/OiBIVE1MRWxlbWVudDtcbiAgICBzYXZlZE9yZGVyPzogTm92b0RyYWdJdGVtPFQ+W107XG5cbiAgICAkZGVzdHJveSA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuXG4gICAgQElucHV0KCdub3ZvRHJhZ0Ryb3AnKSBpdGVtczogVFtdO1xuXG4gICAgQE91dHB1dCgpIG5vdm9EcmFnRHJvcEZpbmlzaCA9IG5ldyBFdmVudEVtaXR0ZXI8Tm92b0RyYWdGaW5pc2hFdmVudDxUPj4oKTtcblxuICAgIHByaXZhdGUgdHJhY2tlZEl0ZW1zOiBOb3ZvRHJhZ0l0ZW08VD5bXTtcblxuICAgIGdldCBpdGVtc1Jlb3JkZXJlZCgpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFja2VkSXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5pdGVtKTtcbiAgICB9XG5cbiAgICBtdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5tdXRhdGlvbkRldGVjdGVkLmJpbmQodGhpcykpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gICAgZ2V0IGVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICAgIFxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlckNoaWxkcmVuKCk7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuJGRlc3Ryb3kubmV4dCgpO1xuICAgICAgICB0aGlzLiRkZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWdpc3RlckNoaWxkcmVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCAhPT0gdGhpcy5lbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgbWF0Y2ggaXRlbSBsaXN0IHRvIGNoaWxkcmVuIGxpc3QgLSBkcmFnIGJveCBjb250YWlucyAke3RoaXMuaXRlbXMubGVuZ3RofSBpdGVtcywgYnV0IGhhcyAke3RoaXMuZWxlbWVudC5jaGlsZHJlbi5sZW5ndGh9IGVsZW1lbnRzYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cmFja2VkSXRlbXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJDaGlsZCh0aGlzLmVsZW1lbnQuY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQsIGkpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJDaGlsZChlbGVtZW50OiBIVE1MRWxlbWVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSBbXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50LCAnZHJhZ3N0YXJ0JywgdGhpcy5vbkRyYWdTdGFydC5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGVsZW1lbnQsICdkcm9wJywgdGhpcy5vbkRyYWdGaW5pc2guYmluZCh0aGlzKSksXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50LCAnZHJhZ2VuZCcsIHRoaXMub25EcmFnU3RvcC5iaW5kKHRoaXMpKVxuICAgICAgICBdO1xuICAgICAgICBlbGVtZW50LmRyYWdnYWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuJGRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IGxpc3RlbmVycy5mb3JFYWNoKGNiID0+IGNiKCkpKTtcbiAgICAgICAgdGhpcy50cmFja2VkSXRlbXMucHVzaCh7XG4gICAgICAgICAgICBpdGVtOiB0aGlzLml0ZW1zW2luZGV4XSxcbiAgICAgICAgICAgIGVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbXV0YXRpb25EZXRlY3RlZChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pIHtcbiAgICAgICAgaWYgKHRoaXMucGlja2VkVXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZGRlZE5vZGVzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZE5vZGVzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbiAgICAgICAgZm9yIChsZXQgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgICAgICBtdXRhdGlvbi5hZGRlZE5vZGVzLmZvckVhY2goKGE6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZW1vdmVkTm9kZXMuZGVsZXRlKGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZGVkTm9kZXMuYWRkKGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbXV0YXRpb24ucmVtb3ZlZE5vZGVzLmZvckVhY2goKGE6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhZGRlZE5vZGVzLmRlbGV0ZShhKSkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVkTm9kZXMuYWRkKGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGFkZGVkTm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwodGhpcy5lbGVtZW50LmNoaWxkcmVuLCBub2RlKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJDaGlsZChub2RlLCBpZHgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlbW92ZWROb2Rlcy5zaXplID4gMCkge1xuICAgICAgICAgICAgdGhpcy50cmFja2VkSXRlbXMgPSB0aGlzLnRyYWNrZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgaXRlbSA9PiAhcmVtb3ZlZE5vZGVzLmhhcyhpdGVtLmVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBQZXItaXRlbSBsaXN0ZW5lcnMgKi9cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmxvY2tEcmFnU3RhcnQoZXZlbnQpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlciA9IGV2ZW50LmRhdGFUcmFuc2ZlcjtcbiAgICAgICAgLy8gUHJlc2VudCBhIG5hdGl2ZSAnbW92ZSBpdGVtJyBlZmZlY3RcbiAgICAgICAgZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7XG4gICAgICAgIHRoaXMucGlja2VkVXAgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNhdmVkT3JkZXIgPSBbLi4udGhpcy50cmFja2VkSXRlbXNdO1xuICAgIH1cblxuICAgIC8vIEVxdWl2YWxlbnQgb2YgXCJmaW5hbGx5XCIgLSB0aGlzIHJ1bnMgd2hldGhlciBvciBub3QgdGhlIGRyYWcgZmluaXNoZWQgb24gYSB2YWxpZCBlbmRpbmcgbG9jYXRpb25cbiAgICBvbkRyYWdTdG9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waWNrZWRVcCA9IG51bGw7XG4gICAgICAgIHRoaXMuc2F2ZWRPcmRlciA9IG51bGw7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9uRHJhZ0ZpbmlzaChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudC5jb250YWlucyhldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBmb3IgYSBkaWZmZXJlbnQgZHJhZyByZWdpb24gLSBpZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbSA9IHRoaXMudHJhY2tlZEl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmVsZW1lbnQgPT09IHRoaXMucGlja2VkVXApPy5pdGVtO1xuICAgICAgICB0aGlzLnRyYWNrZWRJdGVtcyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh0aGlzLmVsZW1lbnQuY2hpbGRyZW4sIGNoaWxkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnRyYWNrZWRJdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5lbGVtZW50ID09PSBjaGlsZCk7XG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RyYWdEcm9wOiBFcnJvciAtIGNvdWxkIG5vdCByZWFzc29jaWF0ZSBhbiBpdGVtIHBvc3QtZHJhZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5vdm9EcmFnRHJvcEZpbmlzaC5lbWl0KHtcbiAgICAgICAgICAgIGRyYWdnZWRJdGVtLFxuICAgICAgICAgICAgYWxsSXRlbXM6IHRoaXMuaXRlbXNSZW9yZGVyZWQsXG4gICAgICAgICAgICBldmVudFxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgfVxuICAgIFxuICAgIC8qKiAtIGVuZCBwZXItaXRlbSBsaXN0ZW5lcnMgKi9cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gICAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5waWNrZWRVcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRhcmdldCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW4gc29tZSBjYXNlcyAobWF5YmUgYnJvd3Nlci1zcGVjaWZpYykgd2UgbWF5IGhhdmUgdGhpcyBldmVudCByZXBvcnRlZCBmcm9tIGEgc3ViLWVsZW1lbnQgb2YgYSBkcmFnIGRlc3RpbmF0aW9uLlxuICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIHVwd2FyZHMgaW4gdGhlIHRyZWUgdG8gZmluZCB0aGUgYWN0dWFsIHRhcmdldFxuICAgICAgICBpZiAodGFyZ2V0ICYmICF0YXJnZXQuZHJhZ2dhYmxlKSB7XG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLmZpbmREcmFnZ2FibGVQYXJlbnRPZkVsZW1lbnQodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIGRyYWcgZXZlbnQgaXMgd2l0aGluIHRoaXMgZHJhZyBib3hcbiAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQucGFyZW50RWxlbWVudCA9PT0gdGhpcy5lbGVtZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFwcGx5VGVtcFNvcnQodGhpcy5waWNrZWRVcCwgdGFyZ2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIG5vdCB3aXRoaW4gdGhpcyBkcmFnIGJveCwgdGhlbiBtb3ZlIHRoaXMgaXRlbSBiYWNrIHRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvbiBhbmQgc2hvdyBhIGRpYWJsZWQgZHJhZyBlZmZlY3RcbiAgICAgICAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVzZXRTb3J0aW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmREcmFnZ2FibGVQYXJlbnRPZkVsZW1lbnQodGFyZ2V0OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSB0YXJnZXQucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKCFwYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJlbnRFbGVtZW50LmRyYWdnYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kRHJhZ2dhYmxlUGFyZW50T2ZFbGVtZW50KHBhcmVudEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVRlbXBTb3J0KHNob3dYRWxlbWVudDogSFRNTEVsZW1lbnQsIGluUGxhY2VPZlk6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGlmIChzaG93WEVsZW1lbnQgPT09IGluUGxhY2VPZlkpIHtcbiAgICAgICAgICAgIC8vIHNhbWUgZWxlbWVudCAtIGlnbm9yaW5nXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQXBwbHkgdGhlIFwicHJldmlld1wiIGVmZmVjdCBmcm9tIGRyYWdnaW5nIG9uZSBpdGVtIHRvIGFub3RoZXJcbiAgICAgICAgY29uc3QgYUluZGV4ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbiwgc2hvd1hFbGVtZW50KTtcbiAgICAgICAgY29uc3QgYkluZGV4ID0gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbiwgaW5QbGFjZU9mWSk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBiSW5kZXggLSBhSW5kZXg7XG4gICAgICAgIGxldCBpbnNlcnRQb3NpdGlvbjogSW5zZXJ0UG9zaXRpb247XG4gICAgICAgIGlmIChkaWZmID4gMCkge1xuICAgICAgICAgICAgaW5zZXJ0UG9zaXRpb24gPSAnYWZ0ZXJlbmQnO1xuICAgICAgICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7XG4gICAgICAgICAgICBpbnNlcnRQb3NpdGlvbiA9ICdiZWZvcmViZWdpbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RyYWdEcm9wOiBUd28gZWxlbWVudHMgYXJlIGluIHRoZSBzYW1lIHBvc2l0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5QbGFjZU9mWS5pbnNlcnRBZGphY2VudEVsZW1lbnQoaW5zZXJ0UG9zaXRpb24sIHNob3dYRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNvcnRpbmcoKTogdm9pZCB7XG4gICAgICAgIC8vIHJldHVybiB0byB0aGUgb3JkZXIgb2YgZWxlbWVudHMgZnJvbSB0aGUgbGFzdCB0aW1lIHdlIGNhbGxlZCBvbkRyYWdQaWNrdXBcbiAgICAgICAgaWYgKCF0aGlzLnNhdmVkT3JkZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRHJhZ0Ryb3A6IENhbm5vdCByZXNldCBzb3J0aW5nIHdpdGggbm8gc2F2ZWQgb3JkZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBib3hFbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm94RWxlbS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGJveEVsZW0uY2hpbGRyZW5baV07XG4gICAgICAgICAgICBpZiAodGhpcy5zYXZlZE9yZGVyW2ldLmVsZW1lbnQgIT09IGl0ZW0gJiYgaSA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVkT3JkZXJbaSAtIDFdLmVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIHRoaXMuc2F2ZWRPcmRlcltpXS5lbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSB1c2VyIGhhcyBwcm92aWRlZCBjbGFzc2VzIGluZGljYXRpbmcgdGhleSBvbmx5IHdhbnQgYSBjZXJ0YWluIHJlZ2lvbiB0byBiZSBkcmFnZ2FibGUsIGlnbm9yZVxuICAgIC8vIHRoaXMgZHJhZyBldmVudCBpZiBpdCBpcyBvdXRzaWRlIG9mIHRoZXJlLlxuICAgIHByaXZhdGUgc2hvdWxkQmxvY2tEcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkcmFnVGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAvLyBUT0RPOiBBbGxvdyBmb3IgbXVsdGlwbGUgZHJhZyB0YXJnZXRzLCBhbmQgZHJhZyBleGNsdXNpb24gdGFyZ2V0c1xuICAgICAgICBjb25zdCB1c2VyRHJhZ1RhcmdldCA9IGRyYWdUYXJnZXQucXVlcnlTZWxlY3RvcignLm5vdm8tZHJhZy10YXJnZXQnKTtcbiAgICAgICAgaWYgKHVzZXJEcmFnVGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaXNFbGVtZW50V2l0aGluRXZlbnRCb3VuZHModXNlckRyYWdUYXJnZXQsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0VsZW1lbnRXaXRoaW5FdmVudEJvdW5kcyhlbGVtZW50OiBFbGVtZW50LCBldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBpc0luc2lkZSA9IGV2ZW50LmNsaWVudFggPiByZWN0LmxlZnQgJiYgZXZlbnQuY2xpZW50WCA8IHJlY3QucmlnaHQgJiZcbiAgICAgICAgICAgIGV2ZW50LmNsaWVudFkgPCByZWN0LmJvdHRvbSAmJiBldmVudC5jbGllbnRZID4gcmVjdC50b3A7XG4gICAgICAgIHJldHVybiBpc0luc2lkZTtcbiAgICB9XG59Il19
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { NovoDragBoxParent } from './drag-drop-box';
3
+ import * as i0 from "@angular/core";
4
+ export class NovoDragDropModule {
5
+ }
6
+ NovoDragDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ NovoDragDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDragDropModule, declarations: [NovoDragBoxParent], exports: [NovoDragBoxParent] });
8
+ NovoDragDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDragDropModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDragDropModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [NovoDragBoxParent],
13
+ exports: [NovoDragBoxParent]
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL2VsZW1lbnRzL2RyYWctZHJvcC9kcmFnLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBT3BELE1BQU0sT0FBTyxrQkFBa0I7O2dIQUFsQixrQkFBa0I7aUhBQWxCLGtCQUFrQixpQkFIWixpQkFBaUIsYUFDdEIsaUJBQWlCO2lIQUVsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vdm9EcmFnQm94UGFyZW50IH0gZnJvbSAnLi9kcmFnLWRyb3AtYm94JztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05vdm9EcmFnQm94UGFyZW50XSxcbiAgICBleHBvcnRzOiBbTm92b0RyYWdCb3hQYXJlbnRdXG59KVxuZXhwb3J0IGNsYXNzIE5vdm9EcmFnRHJvcE1vZHVsZSB7fSJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './drag-drop-box';
2
+ export * from './drag-drop.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9kcmFnLWRyb3AvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kcmFnLWRyb3AtYm94JztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1kcm9wLm1vZHVsZSc7XG5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm92by1lbGVtZW50cy1lbGVtZW50cy1kcmFnLWRyb3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9lbGVtZW50cy9kcmFnLWRyb3Avbm92by1lbGVtZW50cy1lbGVtZW50cy1kcmFnLWRyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=