@acorex/components 6.5.28 → 6.5.30

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 (632) hide show
  1. package/README.md +3 -3
  2. package/acorex-components.d.ts +5 -0
  3. package/esm2020/acorex-components.mjs +5 -0
  4. package/esm2020/lib/accordion/accordion.component.mjs +44 -0
  5. package/esm2020/lib/accordion/accordion.module.mjs +20 -0
  6. package/esm2020/lib/base/base-page.class.mjs +94 -0
  7. package/esm2020/lib/base/components.class.mjs +17 -0
  8. package/esm2020/lib/base/element.class.mjs +294 -0
  9. package/esm2020/lib/base/events.class.mjs +11 -0
  10. package/esm2020/lib/button/button.component.mjs +71 -0
  11. package/esm2020/lib/button/button.module.mjs +21 -0
  12. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +413 -0
  13. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +22 -0
  14. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +54 -0
  15. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +18 -0
  16. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +213 -0
  17. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +68 -0
  18. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +132 -0
  19. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -0
  20. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +47 -0
  21. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +95 -0
  22. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +204 -0
  23. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -0
  24. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +77 -0
  25. package/esm2020/lib/checkbox/checkbox.component.mjs +98 -0
  26. package/esm2020/lib/checkbox/checkbox.module.mjs +20 -0
  27. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +422 -0
  28. package/esm2020/lib/color-picker/color-picker.component.mjs +82 -0
  29. package/esm2020/lib/color-picker/color-picker.module.mjs +24 -0
  30. package/esm2020/lib/context-menu/context-menu.component.mjs +65 -0
  31. package/esm2020/lib/context-menu/context-menu.directive.mjs +135 -0
  32. package/esm2020/lib/context-menu/context-menu.module.mjs +20 -0
  33. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +138 -0
  34. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +117 -0
  35. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +74 -0
  36. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +117 -0
  37. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +258 -0
  38. package/esm2020/lib/data-filter/filter.class.mjs +44 -0
  39. package/esm2020/lib/data-filter/filter.module.mjs +90 -0
  40. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +166 -0
  41. package/esm2020/lib/data-list/core/data-list.component.mjs +40 -0
  42. package/esm2020/lib/data-list/list/list.component.mjs +124 -0
  43. package/esm2020/lib/data-list/list/list.module.mjs +22 -0
  44. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +85 -0
  45. package/esm2020/lib/data-source/datasource.component.mjs +47 -0
  46. package/esm2020/lib/data-source/datasource.module.mjs +18 -0
  47. package/esm2020/lib/data-source/read-param.mjs +5 -0
  48. package/esm2020/lib/date-picker/date-picker.component.mjs +702 -0
  49. package/esm2020/lib/date-picker/date-picker.module.mjs +25 -0
  50. package/esm2020/lib/dialog/dialog.component.mjs +24 -0
  51. package/esm2020/lib/dialog/dialog.module.mjs +21 -0
  52. package/esm2020/lib/dialog/dialog.service.mjs +150 -0
  53. package/esm2020/lib/drawer/content.component.mjs +18 -0
  54. package/esm2020/lib/drawer/drawer-container.component.mjs +36 -0
  55. package/esm2020/lib/drawer/drawer.component.mjs +142 -0
  56. package/esm2020/lib/drawer/drawer.module.mjs +23 -0
  57. package/esm2020/lib/dropdown/dropdown.component.mjs +176 -0
  58. package/esm2020/lib/dropdown/dropdown.module.mjs +26 -0
  59. package/esm2020/lib/fieldset/fieldset.component.mjs +59 -0
  60. package/esm2020/lib/fieldset/fieldset.module.mjs +19 -0
  61. package/esm2020/lib/form-group/form-group.component.mjs +34 -0
  62. package/esm2020/lib/form-group/form-group.module.mjs +21 -0
  63. package/esm2020/lib/label/label.component.mjs +19 -0
  64. package/esm2020/lib/label/label.module.mjs +21 -0
  65. package/esm2020/lib/loading/loading-indicator.component.mjs +17 -0
  66. package/esm2020/lib/loading/loading-panel.component.mjs +44 -0
  67. package/esm2020/lib/loading/loading.module.mjs +21 -0
  68. package/esm2020/lib/loading/loading.service.mjs +45 -0
  69. package/esm2020/lib/menu/menu-item.component.mjs +47 -0
  70. package/esm2020/lib/menu/menu.component.mjs +86 -0
  71. package/esm2020/lib/menu/menu.module.mjs +22 -0
  72. package/esm2020/lib/menu/menu2.component.mjs +96 -0
  73. package/esm2020/lib/number-box/number-box.component.mjs +622 -0
  74. package/esm2020/lib/number-box/number-box.module.mjs +21 -0
  75. package/esm2020/lib/page/content.component.mjs +32 -0
  76. package/esm2020/lib/page/footer.component.mjs +19 -0
  77. package/esm2020/lib/page/page.component.mjs +53 -0
  78. package/esm2020/lib/page/page.module.mjs +22 -0
  79. package/esm2020/lib/panel-box/panel-box.component.mjs +88 -0
  80. package/esm2020/lib/panel-box/panel-box.module.mjs +19 -0
  81. package/esm2020/lib/password-box/password-box.component.mjs +31 -0
  82. package/esm2020/lib/password-box/password-box.module.mjs +23 -0
  83. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +48 -0
  84. package/esm2020/lib/popover/overlay.service.mjs +90 -0
  85. package/esm2020/lib/popover/popover.component.mjs +127 -0
  86. package/esm2020/lib/popover/popover.module.mjs +19 -0
  87. package/esm2020/lib/popup/popup.component.mjs +147 -0
  88. package/esm2020/lib/popup/popup.module.mjs +25 -0
  89. package/esm2020/lib/popup/popup.service.mjs +93 -0
  90. package/esm2020/lib/progress-bar/progress-bar.component.mjs +19 -0
  91. package/esm2020/lib/progress-bar/progress-bar.module.mjs +19 -0
  92. package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +61 -0
  93. package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +22 -0
  94. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +38 -0
  95. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +24 -0
  96. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +115 -0
  97. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +32 -0
  98. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +211 -0
  99. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +78 -0
  100. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +51 -0
  101. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +24 -0
  102. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +63 -0
  103. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +24 -0
  104. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +140 -0
  105. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +61 -0
  106. package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +72 -0
  107. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +71 -0
  108. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -0
  109. package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +69 -0
  110. package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -0
  111. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +29 -0
  112. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +25 -0
  113. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +32 -0
  114. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +24 -0
  115. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +32 -0
  116. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -0
  117. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +43 -0
  118. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +24 -0
  119. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +154 -0
  120. package/esm2020/lib/property-editor/property-editor.class.mjs +101 -0
  121. package/esm2020/lib/property-editor/property-editor.module.mjs +196 -0
  122. package/esm2020/lib/query-builder/query-builder-group.component.mjs +124 -0
  123. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +171 -0
  124. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +395 -0
  125. package/esm2020/lib/query-builder/query-builder.class.mjs +20 -0
  126. package/esm2020/lib/query-builder/query-builder.component.mjs +82 -0
  127. package/esm2020/lib/query-builder/query-builder.module.mjs +62 -0
  128. package/esm2020/lib/query-builder/query-builder.service.mjs +197 -0
  129. package/esm2020/lib/search-bar/search-bar.component.mjs +283 -0
  130. package/esm2020/lib/search-bar/search-bar.module.mjs +63 -0
  131. package/esm2020/lib/searchbox/searchbox.component.mjs +79 -0
  132. package/esm2020/lib/searchbox/searchbox.module.mjs +24 -0
  133. package/esm2020/lib/selectbox/selectbox.component.mjs +961 -0
  134. package/esm2020/lib/selectbox/selectbox.module.mjs +44 -0
  135. package/esm2020/lib/selectbox/selectbox2.component.mjs +574 -0
  136. package/esm2020/lib/selection-list/selection-list.component.mjs +108 -0
  137. package/esm2020/lib/selection-list/selection-list.module.mjs +21 -0
  138. package/esm2020/lib/switch/switch.component.mjs +51 -0
  139. package/esm2020/lib/switch/switch.module.mjs +20 -0
  140. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +71 -0
  141. package/esm2020/lib/tab-page/tab-page-host.component.mjs +116 -0
  142. package/esm2020/lib/tab-page/tab-page.module.mjs +21 -0
  143. package/esm2020/lib/tab-page/tab-page.service.mjs +156 -0
  144. package/esm2020/lib/tab-strip/tab-strip.component.mjs +36 -0
  145. package/esm2020/lib/tab-strip/tab-strip.module.mjs +19 -0
  146. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +24 -0
  147. package/esm2020/lib/tab-view/tab-view.component.mjs +105 -0
  148. package/esm2020/lib/tab-view/tab-view.module.mjs +21 -0
  149. package/esm2020/lib/tab-view/tab.component.mjs +30 -0
  150. package/esm2020/lib/textarea/textarea.component.mjs +26 -0
  151. package/esm2020/lib/textarea/textarea.module.mjs +21 -0
  152. package/esm2020/lib/textbox/textbox.component.mjs +39 -0
  153. package/esm2020/lib/textbox/textbox.module.mjs +24 -0
  154. package/esm2020/lib/time-picker/time-picker.component.mjs +943 -0
  155. package/esm2020/lib/time-picker/time-picker.module.mjs +22 -0
  156. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +74 -0
  157. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -0
  158. package/esm2020/lib/toast/toast.module.mjs +21 -0
  159. package/esm2020/lib/toast/toast.service.mjs +44 -0
  160. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +78 -0
  161. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +57 -0
  162. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +54 -0
  163. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +47 -0
  164. package/esm2020/lib/toolbar/toolbar-item.mjs +6 -0
  165. package/esm2020/lib/toolbar/toolbar.component.mjs +13 -0
  166. package/esm2020/lib/toolbar/toolbar.module.mjs +40 -0
  167. package/esm2020/lib/tooltip/tooltip.directive.mjs +100 -0
  168. package/esm2020/lib/tooltip/tooltip.module.mjs +19 -0
  169. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +646 -0
  170. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +35 -0
  171. package/esm2020/lib/tree-view/tree-view.component.mjs +775 -0
  172. package/esm2020/lib/tree-view/tree-view.module.mjs +22 -0
  173. package/esm2020/lib/upload-file/upload-file.component.mjs +208 -0
  174. package/esm2020/lib/upload-file/upload-file.events.mjs +2 -0
  175. package/esm2020/lib/upload-file/upload-file.module.mjs +24 -0
  176. package/esm2020/lib/validation/validation-form.component.mjs +65 -0
  177. package/esm2020/lib/validation/validation-rule.widget.mjs +111 -0
  178. package/esm2020/lib/validation/validation.class.mjs +2 -0
  179. package/esm2020/lib/validation/validation.component.mjs +89 -0
  180. package/esm2020/lib/validation/validation.module.mjs +34 -0
  181. package/esm2020/public-api.mjs +158 -0
  182. package/fesm2015/acorex-components.mjs +15988 -0
  183. package/fesm2015/acorex-components.mjs.map +1 -0
  184. package/fesm2020/acorex-components.mjs +15923 -0
  185. package/fesm2020/acorex-components.mjs.map +1 -0
  186. package/lib/accordion/accordion.component.d.ts +13 -0
  187. package/lib/accordion/accordion.module.d.ts +9 -0
  188. package/lib/base/base-page.class.d.ts +46 -0
  189. package/lib/base/components.class.d.ts +10 -0
  190. package/lib/base/element.class.d.ts +106 -0
  191. package/lib/base/events.class.d.ts +18 -0
  192. package/lib/button/button.component.d.ts +21 -0
  193. package/lib/button/button.module.d.ts +8 -0
  194. package/lib/calendar/calendar-box/calendar-box.component.d.ts +81 -0
  195. package/lib/calendar/calendar-box/calendar-box.module.d.ts +11 -0
  196. package/lib/calendar/scheduler/scheduler-views.property.d.ts +19 -0
  197. package/{src/lib/calendar/scheduler/scheduler.class.ts → lib/calendar/scheduler/scheduler.class.d.ts} +36 -50
  198. package/lib/calendar/scheduler/scheduler.component.d.ts +39 -0
  199. package/lib/calendar/scheduler/scheduler.module.d.ts +21 -0
  200. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +25 -0
  201. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +14 -0
  202. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +16 -0
  203. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +26 -0
  204. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +37 -0
  205. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +28 -0
  206. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +24 -0
  207. package/lib/checkbox/checkbox.component.d.ts +30 -0
  208. package/lib/checkbox/checkbox.module.d.ts +9 -0
  209. package/lib/color-picker/color-box/color-box.component.d.ts +25 -0
  210. package/lib/color-picker/color-picker.component.d.ts +30 -0
  211. package/lib/color-picker/color-picker.module.d.ts +13 -0
  212. package/lib/context-menu/context-menu.component.d.ts +22 -0
  213. package/lib/context-menu/context-menu.directive.d.ts +38 -0
  214. package/lib/context-menu/context-menu.module.d.ts +9 -0
  215. package/lib/data-filter/columns/filter-column-date.component.d.ts +22 -0
  216. package/lib/data-filter/columns/filter-column-number.component.d.ts +15 -0
  217. package/lib/data-filter/columns/filter-column-selection.component.d.ts +18 -0
  218. package/lib/data-filter/columns/filter-column-string.component.d.ts +15 -0
  219. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +45 -0
  220. package/lib/data-filter/filter.class.d.ts +40 -0
  221. package/lib/data-filter/filter.module.d.ts +24 -0
  222. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +25 -0
  223. package/lib/data-list/core/data-list.component.d.ts +15 -0
  224. package/lib/data-list/list/list.component.d.ts +40 -0
  225. package/lib/data-list/list/list.module.d.ts +11 -0
  226. package/lib/data-list/list/toolbar-list-view.component.d.ts +17 -0
  227. package/lib/data-source/datasource.component.d.ts +16 -0
  228. package/lib/data-source/datasource.module.d.ts +7 -0
  229. package/{src/lib/data-source/read-param.ts → lib/data-source/read-param.d.ts} +40 -50
  230. package/lib/date-picker/date-picker.component.d.ts +81 -0
  231. package/lib/date-picker/date-picker.module.d.ts +14 -0
  232. package/lib/dialog/dialog.component.d.ts +14 -0
  233. package/lib/dialog/dialog.module.d.ts +10 -0
  234. package/lib/dialog/dialog.service.d.ts +36 -0
  235. package/lib/drawer/content.component.d.ts +7 -0
  236. package/lib/drawer/drawer-container.component.d.ts +10 -0
  237. package/lib/drawer/drawer.component.d.ts +34 -0
  238. package/lib/drawer/drawer.module.d.ts +10 -0
  239. package/lib/dropdown/dropdown.component.d.ts +38 -0
  240. package/lib/dropdown/dropdown.module.d.ts +13 -0
  241. package/lib/fieldset/fieldset.component.d.ts +11 -0
  242. package/lib/fieldset/fieldset.module.d.ts +8 -0
  243. package/lib/form-group/form-group.component.d.ts +14 -0
  244. package/lib/form-group/form-group.module.d.ts +8 -0
  245. package/lib/label/label.component.d.ts +9 -0
  246. package/lib/label/label.module.d.ts +8 -0
  247. package/lib/loading/loading-indicator.component.d.ts +9 -0
  248. package/lib/loading/loading-panel.component.d.ts +13 -0
  249. package/lib/loading/loading.module.d.ts +10 -0
  250. package/lib/loading/loading.service.d.ts +13 -0
  251. package/lib/menu/menu-item.component.d.ts +18 -0
  252. package/lib/menu/menu.component.d.ts +35 -0
  253. package/lib/menu/menu.module.d.ts +11 -0
  254. package/lib/menu/menu2.component.d.ts +21 -0
  255. package/lib/number-box/number-box.component.d.ts +52 -0
  256. package/lib/number-box/number-box.module.d.ts +10 -0
  257. package/lib/page/content.component.d.ts +8 -0
  258. package/lib/page/footer.component.d.ts +5 -0
  259. package/lib/page/page.component.d.ts +16 -0
  260. package/lib/page/page.module.d.ts +11 -0
  261. package/lib/panel-box/panel-box.component.d.ts +19 -0
  262. package/lib/panel-box/panel-box.module.d.ts +8 -0
  263. package/lib/password-box/password-box.component.d.ts +12 -0
  264. package/lib/password-box/password-box.module.d.ts +10 -0
  265. package/lib/popover/custom-cdk-overlay.service.d.ts +19 -0
  266. package/lib/popover/overlay.service.d.ts +31 -0
  267. package/lib/popover/popover.component.d.ts +34 -0
  268. package/lib/popover/popover.module.d.ts +8 -0
  269. package/lib/popup/popup.component.d.ts +40 -0
  270. package/lib/popup/popup.module.d.ts +13 -0
  271. package/lib/popup/popup.service.d.ts +22 -0
  272. package/lib/progress-bar/progress-bar.component.d.ts +7 -0
  273. package/lib/progress-bar/progress-bar.module.d.ts +8 -0
  274. package/lib/property-editor/editors/check-editor/check-editor.d.ts +19 -0
  275. package/lib/property-editor/editors/check-editor/check.module.d.ts +11 -0
  276. package/lib/property-editor/editors/color-editor/color.editor.d.ts +13 -0
  277. package/lib/property-editor/editors/color-editor/color.module.d.ts +12 -0
  278. package/lib/property-editor/editors/column-editor/column.editor.d.ts +34 -0
  279. package/lib/property-editor/editors/column-editor/column.module.d.ts +20 -0
  280. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +44 -0
  281. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +19 -0
  282. package/lib/property-editor/editors/date-editor/date.editor.d.ts +28 -0
  283. package/lib/property-editor/editors/date-editor/date.module.d.ts +12 -0
  284. package/lib/property-editor/editors/number-editor/number.editor.d.ts +20 -0
  285. package/lib/property-editor/editors/number-editor/number.module.d.ts +12 -0
  286. package/lib/property-editor/editors/range-editor/range.editor.d.ts +29 -0
  287. package/lib/property-editor/editors/range-editor/range.module.d.ts +18 -0
  288. package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +29 -0
  289. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +28 -0
  290. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +14 -0
  291. package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +25 -0
  292. package/lib/property-editor/editors/selection-editor/selection.module.d.ts +11 -0
  293. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +11 -0
  294. package/lib/property-editor/editors/switch-editor/number.module.d.ts +13 -0
  295. package/lib/property-editor/editors/text-editor/text.editor.d.ts +18 -0
  296. package/lib/property-editor/editors/text-editor/text.module.d.ts +12 -0
  297. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +17 -0
  298. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +12 -0
  299. package/lib/property-editor/editors/time-editor/time.editor.d.ts +17 -0
  300. package/lib/property-editor/editors/time-editor/time.module.d.ts +12 -0
  301. package/lib/property-editor/property-editor-renderer.directive.d.ts +30 -0
  302. package/lib/property-editor/property-editor.class.d.ts +92 -0
  303. package/lib/property-editor/property-editor.module.d.ts +21 -0
  304. package/lib/query-builder/query-builder-group.component.d.ts +33 -0
  305. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +35 -0
  306. package/lib/query-builder/query-builder-rule.component.d.ts +45 -0
  307. package/lib/query-builder/query-builder.class.d.ts +45 -0
  308. package/lib/query-builder/query-builder.component.d.ts +27 -0
  309. package/lib/query-builder/query-builder.module.d.ts +23 -0
  310. package/lib/query-builder/query-builder.service.d.ts +18 -0
  311. package/lib/search-bar/search-bar.component.d.ts +61 -0
  312. package/lib/search-bar/search-bar.module.d.ts +18 -0
  313. package/lib/searchbox/searchbox.component.d.ts +22 -0
  314. package/lib/searchbox/searchbox.module.d.ts +13 -0
  315. package/lib/selectbox/selectbox.component.d.ts +118 -0
  316. package/lib/selectbox/selectbox.module.d.ts +15 -0
  317. package/lib/selectbox/selectbox2.component.d.ts +103 -0
  318. package/lib/selection-list/selection-list.component.d.ts +32 -0
  319. package/lib/selection-list/selection-list.module.d.ts +10 -0
  320. package/lib/switch/switch.component.d.ts +20 -0
  321. package/lib/switch/switch.module.d.ts +9 -0
  322. package/lib/tab-page/tab-page-Renderer.component.d.ts +16 -0
  323. package/lib/tab-page/tab-page-host.component.d.ts +25 -0
  324. package/lib/tab-page/tab-page.module.d.ts +10 -0
  325. package/lib/tab-page/tab-page.service.d.ts +30 -0
  326. package/lib/tab-strip/tab-strip.component.d.ts +28 -0
  327. package/lib/tab-strip/tab-strip.module.d.ts +8 -0
  328. package/lib/tab-view/dynamic-tabs.directive.d.ts +16 -0
  329. package/lib/tab-view/tab-view.component.d.ts +26 -0
  330. package/lib/tab-view/tab-view.module.d.ts +10 -0
  331. package/lib/tab-view/tab.component.d.ts +12 -0
  332. package/lib/textarea/textarea.component.d.ts +12 -0
  333. package/lib/textarea/textarea.module.d.ts +8 -0
  334. package/lib/textbox/textbox.component.d.ts +16 -0
  335. package/lib/textbox/textbox.module.d.ts +11 -0
  336. package/lib/time-picker/time-picker.component.d.ts +52 -0
  337. package/lib/time-picker/time-picker.module.d.ts +11 -0
  338. package/lib/toast/toast-message/toast-message.component.d.ts +18 -0
  339. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +8 -0
  340. package/lib/toast/toast.module.d.ts +9 -0
  341. package/lib/toast/toast.service.d.ts +18 -0
  342. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +12 -0
  343. package/lib/toolbar/menu/toolbar-menu.component.d.ts +24 -0
  344. package/lib/toolbar/search/toolbar-search.component.d.ts +16 -0
  345. package/lib/toolbar/title/toolbar-title.component.d.ts +9 -0
  346. package/lib/toolbar/toolbar-item.d.ts +3 -0
  347. package/lib/toolbar/toolbar.component.d.ts +8 -0
  348. package/lib/toolbar/toolbar.module.d.ts +14 -0
  349. package/lib/tooltip/tooltip.directive.d.ts +21 -0
  350. package/lib/tooltip/tooltip.module.d.ts +8 -0
  351. package/lib/tree-side-menu/tree-side-menu.component.d.ts +111 -0
  352. package/lib/tree-side-menu/tree-side-menu.module.d.ts +11 -0
  353. package/lib/tree-view/tree-view.component.d.ts +121 -0
  354. package/lib/tree-view/tree-view.module.d.ts +11 -0
  355. package/lib/upload-file/upload-file.component.d.ts +42 -0
  356. package/lib/upload-file/upload-file.events.d.ts +10 -0
  357. package/lib/upload-file/upload-file.module.d.ts +13 -0
  358. package/lib/validation/validation-form.component.d.ts +19 -0
  359. package/lib/validation/validation-rule.widget.d.ts +23 -0
  360. package/lib/validation/validation.class.d.ts +16 -0
  361. package/lib/validation/validation.component.d.ts +25 -0
  362. package/lib/validation/validation.module.d.ts +11 -0
  363. package/package.json +33 -13
  364. package/{src/public-api.ts → public-api.d.ts} +155 -214
  365. package/karma.conf.js +0 -32
  366. package/ng-package.json +0 -10
  367. package/src/lib/accordion/accordion.component.ts +0 -43
  368. package/src/lib/accordion/accordion.module.ts +0 -11
  369. package/src/lib/accordion/api.ts +0 -2
  370. package/src/lib/base/base-page.class.ts +0 -116
  371. package/src/lib/base/components.class.ts +0 -9
  372. package/src/lib/base/element.class.ts +0 -344
  373. package/src/lib/base/events.class.ts +0 -32
  374. package/src/lib/button/button.component.html +0 -17
  375. package/src/lib/button/button.component.ts +0 -72
  376. package/src/lib/button/button.module.ts +0 -14
  377. package/src/lib/calendar/calendar-box/calendar-box.component.html +0 -68
  378. package/src/lib/calendar/calendar-box/calendar-box.component.ts +0 -461
  379. package/src/lib/calendar/calendar-box/calendar-box.module.ts +0 -16
  380. package/src/lib/calendar/scheduler/scheduler-views.property.ts +0 -38
  381. package/src/lib/calendar/scheduler/scheduler.component.html +0 -9
  382. package/src/lib/calendar/scheduler/scheduler.component.scss +0 -181
  383. package/src/lib/calendar/scheduler/scheduler.component.ts +0 -249
  384. package/src/lib/calendar/scheduler/scheduler.module.ts +0 -45
  385. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts +0 -133
  386. package/src/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts +0 -33
  387. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.html +0 -43
  388. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.scss +0 -66
  389. package/src/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts +0 -50
  390. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.html +0 -45
  391. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.scss +0 -19
  392. package/src/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts +0 -103
  393. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.html +0 -39
  394. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.scss +0 -55
  395. package/src/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts +0 -233
  396. package/src/lib/calendar/scheduler/views/scheduler-view.component.ts +0 -124
  397. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.html +0 -50
  398. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.scss +0 -4
  399. package/src/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts +0 -92
  400. package/src/lib/checkbox/checkbox.component.html +0 -22
  401. package/src/lib/checkbox/checkbox.component.ts +0 -107
  402. package/src/lib/checkbox/checkbox.module.ts +0 -11
  403. package/src/lib/color-picker/color-box/color-box.component.html +0 -37
  404. package/src/lib/color-picker/color-box/color-box.component.scss +0 -60
  405. package/src/lib/color-picker/color-box/color-box.component.ts +0 -438
  406. package/src/lib/color-picker/color-picker.component.html +0 -31
  407. package/src/lib/color-picker/color-picker.component.ts +0 -87
  408. package/src/lib/color-picker/color-picker.module.ts +0 -16
  409. package/src/lib/context-menu/context-menu.component.html +0 -42
  410. package/src/lib/context-menu/context-menu.component.ts +0 -78
  411. package/src/lib/context-menu/context-menu.directive.ts +0 -159
  412. package/src/lib/context-menu/context-menu.module.ts +0 -15
  413. package/src/lib/data-filter/columns/filter-column-date.component.ts +0 -123
  414. package/src/lib/data-filter/columns/filter-column-number.component.ts +0 -100
  415. package/src/lib/data-filter/columns/filter-column-selection.component.ts +0 -69
  416. package/src/lib/data-filter/columns/filter-column-string.component.ts +0 -100
  417. package/src/lib/data-filter/filter-panel/filter-panel.component.html +0 -120
  418. package/src/lib/data-filter/filter-panel/filter-panel.component.scss +0 -143
  419. package/src/lib/data-filter/filter-panel/filter-panel.component.ts +0 -266
  420. package/src/lib/data-filter/filter.class.ts +0 -73
  421. package/src/lib/data-filter/filter.module.ts +0 -52
  422. package/src/lib/data-filter/toolbar/filter-toolbar.component.html +0 -5
  423. package/src/lib/data-filter/toolbar/filter-toolbar.component.scss +0 -17
  424. package/src/lib/data-filter/toolbar/filter-toolbar.component.ts +0 -179
  425. package/src/lib/data-list/core/data-list.component.ts +0 -62
  426. package/src/lib/data-list/list/list.component.html +0 -32
  427. package/src/lib/data-list/list/list.component.scss +0 -64
  428. package/src/lib/data-list/list/list.component.ts +0 -149
  429. package/src/lib/data-list/list/list.module.ts +0 -14
  430. package/src/lib/data-list/list/toolbar-list-view.component.ts +0 -63
  431. package/src/lib/data-source/datasource.component.ts +0 -50
  432. package/src/lib/data-source/datasource.module.ts +0 -11
  433. package/src/lib/date-picker/date-picker.component.html +0 -30
  434. package/src/lib/date-picker/date-picker.component.scss +0 -5
  435. package/src/lib/date-picker/date-picker.component.ts +0 -720
  436. package/src/lib/date-picker/date-picker.module.ts +0 -17
  437. package/src/lib/dialog/dialog.component.html +0 -5
  438. package/src/lib/dialog/dialog.component.scss +0 -32
  439. package/src/lib/dialog/dialog.component.ts +0 -32
  440. package/src/lib/dialog/dialog.module.ts +0 -13
  441. package/src/lib/dialog/dialog.service.ts +0 -178
  442. package/src/lib/drawer/content.component.ts +0 -18
  443. package/src/lib/drawer/drawer-container.component.ts +0 -37
  444. package/src/lib/drawer/drawer.component.ts +0 -151
  445. package/src/lib/drawer/drawer.module.ts +0 -16
  446. package/src/lib/dropdown/dropdown.component.html +0 -26
  447. package/src/lib/dropdown/dropdown.component.scss +0 -8
  448. package/src/lib/dropdown/dropdown.component.ts +0 -197
  449. package/src/lib/dropdown/dropdown.module.ts +0 -19
  450. package/src/lib/fieldset/fieldset.component.html +0 -6
  451. package/src/lib/fieldset/fieldset.component.ts +0 -49
  452. package/src/lib/fieldset/fieldset.module.ts +0 -11
  453. package/src/lib/form-group/form-group.component.html +0 -15
  454. package/src/lib/form-group/form-group.component.ts +0 -39
  455. package/src/lib/form-group/form-group.module.ts +0 -14
  456. package/src/lib/label/label.component.html +0 -5
  457. package/src/lib/label/label.component.ts +0 -18
  458. package/src/lib/label/label.module.ts +0 -14
  459. package/src/lib/loading/loading-indicator.component.html +0 -27
  460. package/src/lib/loading/loading-indicator.component.ts +0 -16
  461. package/src/lib/loading/loading-panel.component.ts +0 -37
  462. package/src/lib/loading/loading.module.ts +0 -13
  463. package/src/lib/loading/loading.service.ts +0 -44
  464. package/src/lib/menu/menu-item.component.ts +0 -41
  465. package/src/lib/menu/menu.component.html +0 -74
  466. package/src/lib/menu/menu.component.ts +0 -111
  467. package/src/lib/menu/menu.module.ts +0 -13
  468. package/src/lib/menu/menu2.component.scss +0 -59
  469. package/src/lib/menu/menu2.component.ts +0 -98
  470. package/src/lib/number-box/number-box.component.html +0 -32
  471. package/src/lib/number-box/number-box.component.ts +0 -641
  472. package/src/lib/number-box/number-box.module.ts +0 -13
  473. package/src/lib/page/content.component.ts +0 -18
  474. package/src/lib/page/footer.component.ts +0 -13
  475. package/src/lib/page/page.component.ts +0 -43
  476. package/src/lib/page/page.module.ts +0 -14
  477. package/src/lib/panel-box/panel-box.component.html +0 -19
  478. package/src/lib/panel-box/panel-box.component.scss +0 -25
  479. package/src/lib/panel-box/panel-box.component.ts +0 -87
  480. package/src/lib/panel-box/panel-box.module.ts +0 -10
  481. package/src/lib/password-box/password-box.component.html +0 -22
  482. package/src/lib/password-box/password-box.component.ts +0 -30
  483. package/src/lib/password-box/password-box.module.ts +0 -16
  484. package/src/lib/popover/custom-cdk-overlay.service.ts +0 -82
  485. package/src/lib/popover/overlay.service.ts +0 -102
  486. package/src/lib/popover/popover.component.html +0 -5
  487. package/src/lib/popover/popover.component.scss +0 -9
  488. package/src/lib/popover/popover.component.ts +0 -130
  489. package/src/lib/popover/popover.module.ts +0 -11
  490. package/src/lib/popup/popup.component.html +0 -33
  491. package/src/lib/popup/popup.component.scss +0 -167
  492. package/src/lib/popup/popup.component.ts +0 -184
  493. package/src/lib/popup/popup.module.ts +0 -16
  494. package/src/lib/popup/popup.service.ts +0 -103
  495. package/src/lib/progress-bar/progress-bar.component.html +0 -5
  496. package/src/lib/progress-bar/progress-bar.component.ts +0 -10
  497. package/src/lib/progress-bar/progress-bar.module.ts +0 -11
  498. package/src/lib/property-editor/editors/check-editor/check-editor.ts +0 -44
  499. package/src/lib/property-editor/editors/check-editor/check.module.ts +0 -14
  500. package/src/lib/property-editor/editors/color-editor/color.editor.ts +0 -30
  501. package/src/lib/property-editor/editors/color-editor/color.module.ts +0 -20
  502. package/src/lib/property-editor/editors/column-editor/column.editor.html +0 -75
  503. package/src/lib/property-editor/editors/column-editor/column.editor.scss +0 -193
  504. package/src/lib/property-editor/editors/column-editor/column.editor.ts +0 -124
  505. package/src/lib/property-editor/editors/column-editor/column.module.ts +0 -28
  506. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.html +0 -80
  507. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.scss +0 -71
  508. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts +0 -232
  509. package/src/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts +0 -52
  510. package/src/lib/property-editor/editors/date-editor/date.editor.ts +0 -49
  511. package/src/lib/property-editor/editors/date-editor/date.module.ts +0 -20
  512. package/src/lib/property-editor/editors/number-editor/number.editor.ts +0 -46
  513. package/src/lib/property-editor/editors/number-editor/number.module.ts +0 -20
  514. package/src/lib/property-editor/editors/range-editor/range.editor.html +0 -67
  515. package/src/lib/property-editor/editors/range-editor/range.editor.scss +0 -68
  516. package/src/lib/property-editor/editors/range-editor/range.editor.ts +0 -153
  517. package/src/lib/property-editor/editors/range-editor/range.module.ts +0 -37
  518. package/src/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.html +0 -8
  519. package/src/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.ts +0 -70
  520. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.html +0 -8
  521. package/src/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts +0 -77
  522. package/src/lib/property-editor/editors/selectbox-editor/selectbox.module.ts +0 -18
  523. package/src/lib/property-editor/editors/selection-editor/selection-editor.ts +0 -52
  524. package/src/lib/property-editor/editors/selection-editor/selection.module.ts +0 -14
  525. package/src/lib/property-editor/editors/switch-editor/number.editor.ts +0 -26
  526. package/src/lib/property-editor/editors/switch-editor/number.module.ts +0 -21
  527. package/src/lib/property-editor/editors/text-editor/text.editor.html +0 -5
  528. package/src/lib/property-editor/editors/text-editor/text.editor.ts +0 -31
  529. package/src/lib/property-editor/editors/text-editor/text.module.ts +0 -20
  530. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.html +0 -9
  531. package/src/lib/property-editor/editors/textarea-editor/textarea.editor.ts +0 -37
  532. package/src/lib/property-editor/editors/textarea-editor/textarea.module.ts +0 -20
  533. package/src/lib/property-editor/editors/time-editor/time.editor.ts +0 -38
  534. package/src/lib/property-editor/editors/time-editor/time.module.ts +0 -20
  535. package/src/lib/property-editor/property-editor-renderer.directive.ts +0 -165
  536. package/src/lib/property-editor/property-editor.class.ts +0 -178
  537. package/src/lib/property-editor/property-editor.module.ts +0 -115
  538. package/src/lib/query-builder/query-builder-group.component.html +0 -68
  539. package/src/lib/query-builder/query-builder-group.component.ts +0 -122
  540. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.html +0 -82
  541. package/src/lib/query-builder/query-builder-popup/query-builder-popup.component.ts +0 -178
  542. package/src/lib/query-builder/query-builder-rule.component.html +0 -135
  543. package/src/lib/query-builder/query-builder-rule.component.ts +0 -390
  544. package/src/lib/query-builder/query-builder.class.ts +0 -53
  545. package/src/lib/query-builder/query-builder.component.html +0 -3
  546. package/src/lib/query-builder/query-builder.component.scss +0 -286
  547. package/src/lib/query-builder/query-builder.component.ts +0 -220
  548. package/src/lib/query-builder/query-builder.module.ts +0 -44
  549. package/src/lib/query-builder/query-builder.service.ts +0 -188
  550. package/src/lib/search-bar/search-bar.component.html +0 -30
  551. package/src/lib/search-bar/search-bar.component.scss +0 -114
  552. package/src/lib/search-bar/search-bar.component.ts +0 -287
  553. package/src/lib/search-bar/search-bar.module.ts +0 -33
  554. package/src/lib/searchbox/searchbox.component.html +0 -25
  555. package/src/lib/searchbox/searchbox.component.ts +0 -85
  556. package/src/lib/searchbox/searchbox.module.ts +0 -17
  557. package/src/lib/selectbox/selectbox.component.html +0 -100
  558. package/src/lib/selectbox/selectbox.component.ts +0 -984
  559. package/src/lib/selectbox/selectbox.module.ts +0 -31
  560. package/src/lib/selectbox/selectbox2.component.html +0 -78
  561. package/src/lib/selectbox/selectbox2.component.ts +0 -603
  562. package/src/lib/selection-list/selection-list.component.html +0 -21
  563. package/src/lib/selection-list/selection-list.component.ts +0 -115
  564. package/src/lib/selection-list/selection-list.module.ts +0 -13
  565. package/src/lib/switch/switch.component.html +0 -4
  566. package/src/lib/switch/switch.component.scss +0 -65
  567. package/src/lib/switch/switch.component.ts +0 -57
  568. package/src/lib/switch/switch.module.ts +0 -14
  569. package/src/lib/tab-page/tab-page-Renderer.component.ts +0 -70
  570. package/src/lib/tab-page/tab-page-host.component.ts +0 -110
  571. package/src/lib/tab-page/tab-page.module.ts +0 -13
  572. package/src/lib/tab-page/tab-page.service.ts +0 -176
  573. package/src/lib/tab-strip/tab-strip.component.html +0 -6
  574. package/src/lib/tab-strip/tab-strip.component.ts +0 -47
  575. package/src/lib/tab-strip/tab-strip.module.ts +0 -11
  576. package/src/lib/tab-view/dynamic-tabs.directive.ts +0 -17
  577. package/src/lib/tab-view/tab-view.component.html +0 -33
  578. package/src/lib/tab-view/tab-view.component.scss +0 -0
  579. package/src/lib/tab-view/tab-view.component.ts +0 -129
  580. package/src/lib/tab-view/tab-view.module.ts +0 -12
  581. package/src/lib/tab-view/tab.component.html +0 -8
  582. package/src/lib/tab-view/tab.component.ts +0 -15
  583. package/src/lib/textarea/textarea.component.html +0 -13
  584. package/src/lib/textarea/textarea.component.ts +0 -24
  585. package/src/lib/textarea/textarea.module.ts +0 -14
  586. package/src/lib/textbox/textbox.component.html +0 -22
  587. package/src/lib/textbox/textbox.component.ts +0 -38
  588. package/src/lib/textbox/textbox.module.ts +0 -16
  589. package/src/lib/time-picker/time-picker.component.html +0 -21
  590. package/src/lib/time-picker/time-picker.component.ts +0 -1003
  591. package/src/lib/time-picker/time-picker.module.ts +0 -15
  592. package/src/lib/toast/toast-message/toast-message.component.html +0 -17
  593. package/src/lib/toast/toast-message/toast-message.component.scss +0 -75
  594. package/src/lib/toast/toast-message/toast-message.component.ts +0 -64
  595. package/src/lib/toast/toast-wrapper/toast-wrapper.component.scss +0 -15
  596. package/src/lib/toast/toast-wrapper/toast-wrapper.component.ts +0 -13
  597. package/src/lib/toast/toast.module.ts +0 -12
  598. package/src/lib/toast/toast.service.ts +0 -64
  599. package/src/lib/toolbar/group-button/toolbar-group-button.component.ts +0 -54
  600. package/src/lib/toolbar/menu/toolbar-menu.component.html +0 -4
  601. package/src/lib/toolbar/menu/toolbar-menu.component.ts +0 -81
  602. package/src/lib/toolbar/search/toolbar-search.component.html +0 -4
  603. package/src/lib/toolbar/search/toolbar-search.component.scss +0 -24
  604. package/src/lib/toolbar/search/toolbar-search.component.ts +0 -61
  605. package/src/lib/toolbar/title/toolbar-title.component.ts +0 -35
  606. package/src/lib/toolbar/toolbar-item.ts +0 -4
  607. package/src/lib/toolbar/toolbar.component.html +0 -4
  608. package/src/lib/toolbar/toolbar.component.scss +0 -9
  609. package/src/lib/toolbar/toolbar.component.ts +0 -16
  610. package/src/lib/toolbar/toolbar.module.ts +0 -25
  611. package/src/lib/tooltip/tooltip.directive.ts +0 -101
  612. package/src/lib/tooltip/tooltip.module.ts +0 -11
  613. package/src/lib/tree-side-menu/tree-side-menu.component.html +0 -43
  614. package/src/lib/tree-side-menu/tree-side-menu.component.ts +0 -698
  615. package/src/lib/tree-side-menu/tree-side-menu.module.ts +0 -19
  616. package/src/lib/tree-view/tree-view.component.html +0 -46
  617. package/src/lib/tree-view/tree-view.component.ts +0 -835
  618. package/src/lib/tree-view/tree-view.module.ts +0 -16
  619. package/src/lib/upload-file/upload-file.component.html +0 -16
  620. package/src/lib/upload-file/upload-file.component.ts +0 -230
  621. package/src/lib/upload-file/upload-file.events.ts +0 -11
  622. package/src/lib/upload-file/upload-file.module.ts +0 -16
  623. package/src/lib/validation/validation-form.component.ts +0 -78
  624. package/src/lib/validation/validation-rule.widget.ts +0 -112
  625. package/src/lib/validation/validation.class.ts +0 -22
  626. package/src/lib/validation/validation.component.ts +0 -92
  627. package/src/lib/validation/validation.module.ts +0 -28
  628. package/src/test.ts +0 -28
  629. package/tsconfig.lib.json +0 -25
  630. package/tsconfig.lib.prod.json +0 -6
  631. package/tsconfig.spec.json +0 -17
  632. package/tslint.json +0 -17
@@ -0,0 +1,71 @@
1
+ import { Component, Input, ViewEncapsulation, ElementRef, ViewChild, HostListener } from '@angular/core';
2
+ import { AXBaseButtonComponent } from '../base/element.class';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class AXButtonComponent extends AXBaseButtonComponent {
6
+ constructor(el) {
7
+ super();
8
+ this.el = el;
9
+ this.type = 'primary';
10
+ this.submitBehavior = false;
11
+ this.cancelBehavior = false;
12
+ this.block = false;
13
+ this.loading = false;
14
+ this.selected = false;
15
+ }
16
+ ngAfterViewInit() {
17
+ if (this.submitBehavior) {
18
+ setTimeout(() => {
19
+ this.focusButton();
20
+ }, 10);
21
+ }
22
+ }
23
+ handleClick(e) {
24
+ if (this.disabled === true) {
25
+ this.click.emit({
26
+ component: this,
27
+ htmlElement: this.el.nativeElement,
28
+ htmlEvent: e,
29
+ });
30
+ e.stopPropagation();
31
+ }
32
+ }
33
+ onKeydownHandler(e) {
34
+ if (this.cancelBehavior) {
35
+ this.handleClick(null);
36
+ e.stopPropagation();
37
+ e.preventDefault();
38
+ return false;
39
+ }
40
+ }
41
+ focusButton() {
42
+ this.container.nativeElement.focus();
43
+ }
44
+ }
45
+ AXButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXButtonComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
46
+ AXButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXButtonComponent, selector: "ax-button", inputs: { type: "type", icon: "icon", submitBehavior: "submitBehavior", cancelBehavior: "cancelBehavior", block: "block", loading: "loading", selected: "selected" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<button #container class=\"ax button form-control {{type}} {{size}} {{cssClass}}\" [class.ax-button-icon]=\"refContent.innerText.length==0 && refContent.children.length == 0\" [class.selected]=\"selected\" [class.icon]=\"icon\"\n [class.icon]=\"loading\" [class.disabled]=\"disabled || loading\" (click)=\"handleClick($event)\" [disabled]=\"disabled\"\n [ngStyle]=\"{'width.%': block ? 100 : 'auto'}\" [attr.tabindex]=\"tabIndex\">\n <div class=\"button-inner-content\">\n <ng-container *ngIf=\"icon && !loading\">\n <i class=\"{{icon}} icon\"></i>\n <ng-container *ngIf=\"refContent.innerText.length==0 && refContent.children.length == 0\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"loading\">\n <i class=\"far fa-circle-notch fa-spin icon\"></i>\n <ng-container *ngIf=\"refContent.innerText.length==0 && refContent.children.length == 0\"></ng-container>\n </ng-container>\n <div class=\"ax-wrapper\" #refContent>\n <ng-content></ng-content>\n </div>\n </div>\n</button>", directives: [{ type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXButtonComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'ax-button', encapsulation: ViewEncapsulation.None, template: "<button #container class=\"ax button form-control {{type}} {{size}} {{cssClass}}\" [class.ax-button-icon]=\"refContent.innerText.length==0 && refContent.children.length == 0\" [class.selected]=\"selected\" [class.icon]=\"icon\"\n [class.icon]=\"loading\" [class.disabled]=\"disabled || loading\" (click)=\"handleClick($event)\" [disabled]=\"disabled\"\n [ngStyle]=\"{'width.%': block ? 100 : 'auto'}\" [attr.tabindex]=\"tabIndex\">\n <div class=\"button-inner-content\">\n <ng-container *ngIf=\"icon && !loading\">\n <i class=\"{{icon}} icon\"></i>\n <ng-container *ngIf=\"refContent.innerText.length==0 && refContent.children.length == 0\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"loading\">\n <i class=\"far fa-circle-notch fa-spin icon\"></i>\n <ng-container *ngIf=\"refContent.innerText.length==0 && refContent.children.length == 0\"></ng-container>\n </ng-container>\n <div class=\"ax-wrapper\" #refContent>\n <ng-content></ng-content>\n </div>\n </div>\n</button>" }]
50
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { container: [{
51
+ type: ViewChild,
52
+ args: ['container', { static: true }]
53
+ }], type: [{
54
+ type: Input
55
+ }], icon: [{
56
+ type: Input
57
+ }], submitBehavior: [{
58
+ type: Input
59
+ }], cancelBehavior: [{
60
+ type: Input
61
+ }], block: [{
62
+ type: Input
63
+ }], loading: [{
64
+ type: Input
65
+ }], selected: [{
66
+ type: Input
67
+ }], onKeydownHandler: [{
68
+ type: HostListener,
69
+ args: ['document:keydown.escape', ['$event']]
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQU85RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBRTFELFlBQW9CLEVBQWM7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFEVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBT2xDLFNBQUksR0FBVyxTQUFTLENBQUM7UUFNekIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFHaEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFHaEMsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUd2QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBR3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7SUF2QjFCLENBQUM7SUF5QkQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDUjtJQUNILENBQUM7SUFJRCxXQUFXLENBQUMsQ0FBYTtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNkLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWE7Z0JBQ2xDLFNBQVMsRUFBRSxDQUFDO2FBQ2IsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUdELGdCQUFnQixDQUFDLENBQWdCO1FBQy9CLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQzs7K0dBOURVLGlCQUFpQjttR0FBakIsaUJBQWlCLG9iQ1I5Qix5a0NBZ0JTOzRGRFJJLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxXQUFXLGlCQUNOLGlCQUFpQixDQUFDLElBQUk7aUdBU0ssU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd4QyxJQUFJO3NCQURILEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBeUJOLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1idXR0b24nLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBWEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUJ1dHRvbkNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHR5cGU6IHN0cmluZyA9ICdwcmltYXJ5JztcblxuICBASW5wdXQoKVxuICBpY29uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc3VibWl0QmVoYXZpb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjYW5jZWxCZWhhdmlvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGJsb2NrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1Ym1pdEJlaGF2aW9yKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c0J1dHRvbigpO1xuICAgICAgfSwgMTApO1xuICAgIH1cbiAgfVxuXG5cblxuICBoYW5kbGVDbGljayhlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY2xpY2suZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudCxcbiAgICAgICAgaHRtbEV2ZW50OiBlLFxuICAgICAgfSk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25LZXlkb3duSGFuZGxlcihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuY2FuY2VsQmVoYXZpb3IpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2sobnVsbCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzQnV0dG9uKCkge1xuICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIiwiPGJ1dHRvbiAjY29udGFpbmVyIGNsYXNzPVwiYXggYnV0dG9uIGZvcm0tY29udHJvbCB7e3R5cGV9fSB7e3NpemV9fSB7e2Nzc0NsYXNzfX1cIiBbY2xhc3MuYXgtYnV0dG9uLWljb25dPVwicmVmQ29udGVudC5pbm5lclRleHQubGVuZ3RoPT0wICYmIHJlZkNvbnRlbnQuY2hpbGRyZW4ubGVuZ3RoID09IDBcIiBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIiBbY2xhc3MuaWNvbl09XCJpY29uXCJcbiAgICBbY2xhc3MuaWNvbl09XCJsb2FkaW5nXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IGxvYWRpbmdcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW25nU3R5bGVdPVwieyd3aWR0aC4lJzogYmxvY2sgPyAxMDAgOiAnYXV0byd9XCIgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWlubmVyLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImljb24gJiYgIWxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwie3tpY29ufX0gaWNvblwiPjwvaT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWZDb250ZW50LmlubmVyVGV4dC5sZW5ndGg9PTAgJiYgcmVmQ29udGVudC5jaGlsZHJlbi5sZW5ndGggPT0gMFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluIGljb25cIj48L2k+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVmQ29udGVudC5pbm5lclRleHQubGVuZ3RoPT0wICYmIHJlZkNvbnRlbnQuY2hpbGRyZW4ubGVuZ3RoID09IDBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC13cmFwcGVyXCIgI3JlZkNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9idXR0b24+Il19
@@ -0,0 +1,21 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { AXButtonComponent } from './button.component';
4
+ import * as i0 from "@angular/core";
5
+ const COMPONENT = [AXButtonComponent];
6
+ const MODULES = [CommonModule];
7
+ export class AXButtonModule {
8
+ }
9
+ AXButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ AXButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXButtonModule, declarations: [AXButtonComponent], imports: [CommonModule], exports: [AXButtonComponent] });
11
+ AXButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXButtonModule, providers: [], imports: [[...MODULES]] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXButtonModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [...COMPONENT],
16
+ imports: [...MODULES],
17
+ exports: [...COMPONENT],
18
+ providers: [],
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uL2J1dHRvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXZELE1BQU0sU0FBUyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0QyxNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBUS9CLE1BQU0sT0FBTyxjQUFjOzs0R0FBZCxjQUFjOzZHQUFkLGNBQWMsaUJBVFIsaUJBQWlCLGFBQ25CLFlBQVksYUFEVixpQkFBaUI7NkdBU3ZCLGNBQWMsYUFGWixFQUFFLFlBRkosQ0FBQyxHQUFHLE9BQU8sQ0FBQzs0RkFJWixjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztvQkFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRSxFQUFFO2lCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQVhCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnO1xuXG5jb25zdCBDT01QT05FTlQgPSBbQVhCdXR0b25Db21wb25lbnRdO1xuY29uc3QgTU9EVUxFUyA9IFtDb21tb25Nb2R1bGVdO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogWy4uLkNPTVBPTkVOVF0sXG4gICAgaW1wb3J0czogWy4uLk1PRFVMRVNdLFxuICAgIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxuICAgIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYQnV0dG9uTW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,413 @@
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, ElementRef } from '@angular/core';
2
+ import { AXDateTime, AXDateTimeRange, AXTranslator } from '@acorex/core';
3
+ import { AXConfig } from '@acorex/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../button/button.component";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@acorex/core";
8
+ export class AXCalendarBoxComponent {
9
+ constructor(cdr, ref) {
10
+ this.cdr = cdr;
11
+ this.ref = ref;
12
+ this.weekdays = [];
13
+ this.d = {
14
+ jalali: {
15
+ locale: AXConfig.get('dateTime.jalali.locale') || 'fa',
16
+ dir: 'rtl',
17
+ number: 1
18
+ },
19
+ gregorian: {
20
+ locale: AXConfig.get('dateTime.gregorian.locale') || 'en',
21
+ dir: 'ltr',
22
+ number: 0
23
+ }
24
+ };
25
+ this.size = 'md';
26
+ this.selectableHoliday = true;
27
+ this.dayStyle = [];
28
+ this.dayMinMaxResoan = '';
29
+ this.showTodayButton = false;
30
+ this.matrix = [];
31
+ this.rotated = false;
32
+ this._view = 'day';
33
+ this._depth = 'day';
34
+ this.holidays = [];
35
+ this.weekends = [];
36
+ this.onValueChanged = new EventEmitter();
37
+ this.onClick = new EventEmitter();
38
+ this.valueChange = new EventEmitter();
39
+ // set defaults
40
+ this.getHoliday = AXConfig.get('dateTime.holidays');
41
+ this.getWeekend = AXConfig.get('dateTime.weekends');
42
+ }
43
+ get view() {
44
+ return this._view;
45
+ }
46
+ set view(v) {
47
+ this._view = v;
48
+ this.navigate(0);
49
+ }
50
+ get depth() {
51
+ return this._depth;
52
+ }
53
+ set depth(v) {
54
+ this._depth = v;
55
+ this.view = v;
56
+ }
57
+ get value() {
58
+ return this._value?.date;
59
+ }
60
+ set value(v) {
61
+ let vv;
62
+ if (v) {
63
+ vv = AXDateTime.convert(v);
64
+ }
65
+ let unValidDate = false;
66
+ if (this.max || this.min) {
67
+ unValidDate = this.isInMInMaxRange(vv);
68
+ }
69
+ if (!unValidDate) {
70
+ if (vv && !vv.equal(this._value)) {
71
+ this._value = vv;
72
+ this._value.type = this.type;
73
+ this.setFocus(this._value.clone());
74
+ this.valueChange.emit(vv.date);
75
+ this.onValueChanged.emit({
76
+ component: this,
77
+ value: this._value?.date,
78
+ htmlElement: this.ref.nativeElement
79
+ });
80
+ }
81
+ if (v == undefined) {
82
+ this._value = null;
83
+ this.focusedValue = this.today;
84
+ this.viewRange = this.today.month.range;
85
+ this.navigate(0);
86
+ }
87
+ this.onClick.emit({
88
+ component: this,
89
+ value: this._value?.date,
90
+ htmlElement: this.ref.nativeElement
91
+ });
92
+ }
93
+ }
94
+ get today() {
95
+ return new AXDateTime(new Date(), this.type);
96
+ }
97
+ findDay(date) {
98
+ if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {
99
+ return true;
100
+ }
101
+ else {
102
+ return false;
103
+ }
104
+ }
105
+ getStyle(date) {
106
+ if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {
107
+ return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).style;
108
+ }
109
+ else {
110
+ return '';
111
+ }
112
+ }
113
+ getTitle(date) {
114
+ if (this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0])) {
115
+ return this.dayStyle.find((c) => c.date.split('T')[0] == date.toISOString().split('T')[0]).text;
116
+ }
117
+ else {
118
+ if ((this.min && this.max && date.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1) ||
119
+ date.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1) {
120
+ return this.dayMinMaxResoan;
121
+ }
122
+ else {
123
+ return '';
124
+ }
125
+ }
126
+ }
127
+ ngOnInit() {
128
+ this.focusedValue = new AXDateTime(new Date(), this.type);
129
+ //
130
+ this.initLayout();
131
+ //
132
+ this.viewRange = this.today.month.range;
133
+ if (this.value) {
134
+ this.setFocus(new AXDateTime(this.value, this.type));
135
+ }
136
+ else {
137
+ this.setFocus(this.today);
138
+ }
139
+ this.view = 'day';
140
+ }
141
+ getViewCompaire(view) {
142
+ switch (view) {
143
+ case 'day':
144
+ return 'YMD';
145
+ case 'month':
146
+ return 'YM';
147
+ case 'year':
148
+ return 'Y';
149
+ }
150
+ }
151
+ ngAfterViewInit() {
152
+ this.navigate(0);
153
+ }
154
+ initLayout() {
155
+ if (!this.type) {
156
+ this.type = AXConfig.get('dateTime.type') || 'gregorian';
157
+ }
158
+ if (!this.locale) {
159
+ this.locale = this.d[this.type]?.locale || this.locale;
160
+ }
161
+ if (!this.dir) {
162
+ this.dir = this.d[this.type]?.dir || 'ltr';
163
+ }
164
+ this.numRotate = this.d[this.type]?.number || 0;
165
+ const path = 'dateTime.weekdaysShort';
166
+ this.weekdays = [
167
+ AXTranslator.get(`${path}.sun`, this.locale),
168
+ AXTranslator.get(`${path}.mon`, this.locale),
169
+ AXTranslator.get(`${path}.tue`, this.locale),
170
+ AXTranslator.get(`${path}.wed`, this.locale),
171
+ AXTranslator.get(`${path}.thu`, this.locale),
172
+ AXTranslator.get(`${path}.fri`, this.locale),
173
+ AXTranslator.get(`${path}.sat`, this.locale)
174
+ ];
175
+ }
176
+ getTodayName() {
177
+ return AXTranslator.get('dateTime.today', this.locale);
178
+ }
179
+ prev() {
180
+ this.navigate(-1);
181
+ }
182
+ next() {
183
+ this.navigate(1);
184
+ }
185
+ rotate(array, n) {
186
+ const len = array.length;
187
+ return !(n % len) ? array : n > 0 ? array.map((e, i, a) => a[(i + n) % len]) : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);
188
+ }
189
+ navigate(value) {
190
+ let start;
191
+ let end;
192
+ if (this.view === 'day') {
193
+ let fd;
194
+ if (value instanceof AXDateTime) {
195
+ fd = value.startOf('month');
196
+ }
197
+ else {
198
+ fd = this.viewRange.startTime.add('day', 15).add('month', value).startOf('month');
199
+ }
200
+ start = fd.firstDayOfWeek;
201
+ end = fd.endOf('month').endDayOfWeek;
202
+ start = start.add('day', -this.numRotate);
203
+ end = end.add('day', 7).add('day', -this.numRotate);
204
+ // TODO: apply start of week
205
+ if (!this.rotated && this.weekdays.length > 0) {
206
+ if (this.type === 'jalali') {
207
+ this.weekdays = this.rotate(this.weekdays, -this.numRotate);
208
+ }
209
+ else {
210
+ this.weekdays = this.rotate(this.weekdays, this.numRotate);
211
+ }
212
+ this.rotated = true;
213
+ }
214
+ }
215
+ else if (this.view === 'month') {
216
+ let fd;
217
+ if (value instanceof AXDateTime) {
218
+ fd = value.startOf('year');
219
+ }
220
+ else {
221
+ fd = this.viewRange.startTime.add('day', 15).add('year', value).startOf('year');
222
+ }
223
+ start = fd;
224
+ end = fd.endOf('year');
225
+ }
226
+ else if (this.view === 'year') {
227
+ let fd;
228
+ if (value instanceof AXDateTime) {
229
+ fd = value.startOf('year');
230
+ }
231
+ else {
232
+ fd = this.viewRange.startTime
233
+ .add('day', 15)
234
+ .add('year', value * 10)
235
+ .startOf('year');
236
+ }
237
+ start = fd.add('year', -4);
238
+ end = start.add('year', 8).endOf('year');
239
+ }
240
+ this.viewRange = new AXDateTimeRange(start, end);
241
+ //
242
+ if (this.getHoliday && typeof this.getHoliday === 'function') {
243
+ this.holidays = this.getHoliday(start.date, end.date, this.type);
244
+ }
245
+ if (this.getWeekend && typeof this.getWeekend === 'function') {
246
+ this.weekends = this.getWeekend(start.date, end.date, this.type);
247
+ }
248
+ //
249
+ if (this.view === 'day') {
250
+ this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);
251
+ if (this.matrix.length > 0 && this.matrix[0].find((c) => c.nextMonth === false) === undefined) {
252
+ this.matrix.splice(0, 1);
253
+ }
254
+ if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {
255
+ this.matrix.splice(this.matrix.length - 1, 1);
256
+ }
257
+ }
258
+ else if (this.view === 'month') {
259
+ this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('month', this.type)), 3);
260
+ }
261
+ else if (this.view === 'year') {
262
+ this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('year', this.type)), 3);
263
+ }
264
+ this.cdr.detectChanges();
265
+ }
266
+ applyStyle(dates) {
267
+ const items = [];
268
+ dates.forEach((d, i, j) => {
269
+ const item = {};
270
+ item.date = d;
271
+ item.selected = d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;
272
+ item.focused = d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;
273
+ item.today = this.today && d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;
274
+ if (this.view === 'day') {
275
+ // item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;
276
+ item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;
277
+ item.unselect = this.isInMInMaxRange(d);
278
+ this.holidays.forEach((h) => {
279
+ const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);
280
+ if (comp === 0) {
281
+ item.holiday = true;
282
+ if (this.selectableHoliday === false) {
283
+ item.unselect = true;
284
+ }
285
+ }
286
+ });
287
+ const indexDay = i - Math.floor(i / 7) * 7;
288
+ this.weekends.forEach((cc) => {
289
+ if (Number(cc) === indexDay) {
290
+ item.holiday = true;
291
+ if (this.selectableHoliday === false) {
292
+ item.unselect = true;
293
+ }
294
+ }
295
+ });
296
+ }
297
+ items.push(item);
298
+ });
299
+ return items;
300
+ }
301
+ changeView() {
302
+ if (this.view === 'day') {
303
+ this.view = 'month';
304
+ }
305
+ else if (this.view === 'month') {
306
+ this.view = 'year';
307
+ }
308
+ }
309
+ matrixify(arr, cols) {
310
+ const rows = Math.ceil(arr.length / cols);
311
+ const matrix = [];
312
+ if (rows * cols === arr.length) {
313
+ for (let i = 0; i < arr.length; i += cols) {
314
+ matrix.push(arr.slice(i, cols + i));
315
+ }
316
+ }
317
+ return matrix;
318
+ }
319
+ setDayClick(event, item) {
320
+ if (item.unselect !== true) {
321
+ this.value = item.date.date;
322
+ }
323
+ event.stopPropagation();
324
+ }
325
+ isInMInMaxRange(d) {
326
+ let r = false;
327
+ if (d !== undefined) {
328
+ if (this.min && !this.max) {
329
+ r = d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1;
330
+ }
331
+ if (this.max && !this.min) {
332
+ r = d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;
333
+ }
334
+ if (this.min && this.max) {
335
+ r =
336
+ d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||
337
+ d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;
338
+ }
339
+ }
340
+ return r;
341
+ }
342
+ setMonthClick(event, date) {
343
+ if (this.depth === 'month') {
344
+ this.value = date.date;
345
+ }
346
+ else {
347
+ this.view = 'day';
348
+ this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year).set('month', date.monthOfYear));
349
+ }
350
+ event.stopPropagation();
351
+ }
352
+ setYearClick(event, date) {
353
+ if (this.depth === 'year') {
354
+ this.value = date.date;
355
+ }
356
+ else {
357
+ this.view = 'month';
358
+ this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year));
359
+ }
360
+ event.stopPropagation();
361
+ }
362
+ setFocus(date) {
363
+ this.focusedValue = date;
364
+ this.navigate(this.focusedValue);
365
+ }
366
+ setToday() {
367
+ this.value = this.today.date;
368
+ this.view = 'day';
369
+ }
370
+ trackByFn(index, item) {
371
+ return item.date.date.getTime();
372
+ }
373
+ }
374
+ AXCalendarBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXCalendarBoxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
375
+ AXCalendarBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXCalendarBoxComponent, selector: "ax-calendar-box", inputs: { size: "size", type: "type", locale: "locale", dir: "dir", min: "min", max: "max", selectableHoliday: "selectableHoliday", dayStyle: "dayStyle", dayMinMaxResoan: "dayMinMaxResoan", showTodayButton: "showTodayButton", view: "view", depth: "depth", value: "value" }, outputs: { onValueChanged: "onValueChanged", onClick: "onClick", valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"ax-calendar-container {{size}}\" [ngClass]=\"type\">\n <div class=\"ax-calendar-header\">\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"next()\">\n {{'common.next' | trans}}\n </ax-button>\n </div>\n <div class=\"ax-nav-button\" [ngSwitch]=\"view\">\n <ax-button type=\"light blank\" (click)=\"changeView()\">\n <ng-container *ngSwitchCase=\"'day'\">\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n {{viewRange.startTime | dt:\"YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\n </ng-container>\n </ax-button>\n </div>\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"prev()\">\n {{'common.prev' | trans}}\n </ax-button>\n </div>\n </div>\n <div class=\"ax-calendar-body\">\n <ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'day'\">\n <div class=\"ax-month-items\">\n <ng-container *ngFor='let w of weekdays'>\n <div class=\"ax-month-item\">{{w}}</div>\n </ng-container>\n </div>\n <div class=\"ax-day-items\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-day-item ax-state-event\" *ngFor=\"let d of r;trackBy:trackByFn\" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\n (click)=\"setDayClick($event,d)\">\n {{d.date.dayInMonth}}</div>\n </ng-container>\n\n </div>\n </ng-container>\n <div class=\"ax-month-container\" *ngSwitchCase=\"'month'\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\n <strong>\n {{d.date| dt:\"MMM\"}}\n </strong>\n </div>\n </ng-container>\n </div>\n <div class=\"ax-year-container\" *ngSwitchCase=\"'year'\">\n <ng-container class=\"calendar-row\" *ngFor=\"let r of matrix\">\n <div class=\"ax-year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\n <strong>{{d.date | dt:\"YYYY\"}}</strong>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n </div>\n <div class=\"ax-calendar-footer\">\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" type=\"dark\">\n {{getTodayName()}}\n </ax-button>\n </div>\n</div>", components: [{ type: i1.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "trans": i3.AXTranslatorPipe, "dt": i3.AXDateTimePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXCalendarBoxComponent, decorators: [{
377
+ type: Component,
378
+ args: [{ selector: 'ax-calendar-box', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-calendar-container {{size}}\" [ngClass]=\"type\">\n <div class=\"ax-calendar-header\">\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"next()\">\n {{'common.next' | trans}}\n </ax-button>\n </div>\n <div class=\"ax-nav-button\" [ngSwitch]=\"view\">\n <ax-button type=\"light blank\" (click)=\"changeView()\">\n <ng-container *ngSwitchCase=\"'day'\">\n {{viewRange.startTime.add('day',10) | dt:\"MMM YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n {{viewRange.startTime | dt:\"YYYY\"}}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{viewRange.startTime | dt:\"YYYY\"}} - {{viewRange.endTime | dt:\"YYYY\"}}\n </ng-container>\n </ax-button>\n </div>\n <div class=\"ax-controll-button\">\n <ax-button type=\"light blank\" (click)=\"prev()\">\n {{'common.prev' | trans}}\n </ax-button>\n </div>\n </div>\n <div class=\"ax-calendar-body\">\n <ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'day'\">\n <div class=\"ax-month-items\">\n <ng-container *ngFor='let w of weekdays'>\n <div class=\"ax-month-item\">{{w}}</div>\n </ng-container>\n </div>\n <div class=\"ax-day-items\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-day-item ax-state-event\" *ngFor=\"let d of r;trackBy:trackByFn\" [title]=\"getTitle(d.date)\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today,'next-month':d.nextMonth , 'holiday':d.holiday , 'unselect':d.unselect}\" [ngStyle]=\"(findDay(d.date)) ? getStyle(d.date):''\"\n (click)=\"setDayClick($event,d)\">\n {{d.date.dayInMonth}}</div>\n </ng-container>\n\n </div>\n </ng-container>\n <div class=\"ax-month-container\" *ngSwitchCase=\"'month'\">\n <ng-container *ngFor=\"let r of matrix\">\n <div class=\"ax-month-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setMonthClick($event,d.date)\">\n <strong>\n {{d.date| dt:\"MMM\"}}\n </strong>\n </div>\n </ng-container>\n </div>\n <div class=\"ax-year-container\" *ngSwitchCase=\"'year'\">\n <ng-container class=\"calendar-row\" *ngFor=\"let r of matrix\">\n <div class=\"ax-year-item\" *ngFor=\"let d of r;trackBy:trackByFn\" [ngClass]=\"{'selected': d.selected,'focused':d.focused,'today':d.today}\" (click)=\"setYearClick($event,d.date)\">\n <strong>{{d.date | dt:\"YYYY\"}}</strong>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n </div>\n <div class=\"ax-calendar-footer\">\n <ax-button (click)=\"setToday()\" *ngIf=\"showTodayButton\" type=\"dark\">\n {{getTodayName()}}\n </ax-button>\n </div>\n</div>" }]
379
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { size: [{
380
+ type: Input
381
+ }], type: [{
382
+ type: Input
383
+ }], locale: [{
384
+ type: Input
385
+ }], dir: [{
386
+ type: Input
387
+ }], min: [{
388
+ type: Input
389
+ }], max: [{
390
+ type: Input
391
+ }], selectableHoliday: [{
392
+ type: Input
393
+ }], dayStyle: [{
394
+ type: Input
395
+ }], dayMinMaxResoan: [{
396
+ type: Input
397
+ }], showTodayButton: [{
398
+ type: Input,
399
+ args: ['showTodayButton']
400
+ }], view: [{
401
+ type: Input
402
+ }], depth: [{
403
+ type: Input
404
+ }], onValueChanged: [{
405
+ type: Output
406
+ }], onClick: [{
407
+ type: Output
408
+ }], valueChange: [{
409
+ type: Output
410
+ }], value: [{
411
+ type: Input
412
+ }] } });
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItYm94L2NhbGVuZGFyLWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWJveC9jYWxlbmRhci1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWtCLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd6RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQXlCeEMsTUFBTSxPQUFPLHNCQUFzQjtJQXFJakMsWUFBb0IsR0FBc0IsRUFBVSxHQUFlO1FBQS9DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQXBJbkUsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUVoQixNQUFDLEdBQUc7WUFDVixNQUFNLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxJQUFJO2dCQUN0RCxHQUFHLEVBQUUsS0FBSztnQkFDVixNQUFNLEVBQUUsQ0FBQzthQUNWO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLElBQUksSUFBSTtnQkFDekQsR0FBRyxFQUFFLEtBQUs7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QUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFdBQVcsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksR0FBRyx3QkFBd0IsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElB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aUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO2lJQXFCL0MsSUFBSTtzQkFESCxLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBUUMsZUFBZTtzQkFEckIsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBT2IsSUFBSTtzQkFEZCxLQUFLO2dCQVlLLEtBQUs7c0JBRGYsS0FBSztnQkFjTixjQUFjO3NCQURiLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFLSSxLQUFLO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZSwgQVhEYXRlVGltZVJhbmdlLCBBWENhbGVuZGFyVHlwZSwgQVhUcmFuc2xhdG9yIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7IEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYRWxlbWVudFNpemUgfSBmcm9tICcuLi8uLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyVmlld1R5cGUgPSAneWVhcicgfCAnbW9udGgnIHwgJ2RheSc7XG5cbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJIb2xpZGF5cyA9IEFYQ2FsZW5kYXJIb2xpZGF5W107XG5leHBvcnQgdHlwZSBBWENhbGVuZGFySG9saWRheXNGdW5jID0gKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUsIHR5cGU6IEFYQ2FsZW5kYXJUeXBlKSA9PiBBWENhbGVuZGFySG9saWRheVtdO1xuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFySG9saWRheSB7XG4gIGRhdGU6IERhdGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWENhbGVuZGFyV2Vla2VuZHMgPSBBWENhbGVuZGFyV2Vla2VuZFtdO1xuZXhwb3J0IHR5cGUgQVhDYWxlbmRhcldlZWtlbmRzRnVuYyA9IChzdGFydDogRGF0ZSwgZW5kOiBEYXRlLCB0eXBlOiBBWENhbGVuZGFyVHlwZSkgPT4gQVhDYWxlbmRhcldlZWtlbmRbXTtcblxuZXhwb3J0IGludGVyZmFjZSBBWENhbGVuZGFyV2Vla2VuZCB7XG4gIGluZGV4RGF5OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNhbGVuZGFyLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyQm94Q29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCB7XG4gIHdlZWtkYXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgZCA9IHtcbiAgICBqYWxhbGk6IHtcbiAgICAgIGxvY2FsZTogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5qYWxhbGkubG9jYWxlJykgfHwgJ2ZhJyxcbiAgICAgIGRpcjogJ3J0bCcsXG4gICAgICBudW1iZXI6IDFcbiAgICB9LFxuICAgIGdyZWdvcmlhbjoge1xuICAgICAgbG9jYWxlOiBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLmdyZWdvcmlhbi5sb2NhbGUnKSB8fCAnZW4nLFxuICAgICAgZGlyOiAnbHRyJyxcbiAgICAgIG51bWJlcjogMFxuICAgIH1cbiAgfTtcblxuICBudW1Sb3RhdGU6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBzaXplOiBBWEVsZW1lbnRTaXplID0gJ21kJztcblxuICBASW5wdXQoKVxuICB0eXBlOiBBWENhbGVuZGFyVHlwZTtcblxuICBASW5wdXQoKVxuICBsb2NhbGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkaXI6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBtaW46IERhdGU7XG5cbiAgQElucHV0KClcbiAgbWF4OiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGFibGVIb2xpZGF5OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBkYXlTdHlsZSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGRheU1pbk1heFJlc29hbiA9ICcnO1xuXG4gIHByaXZhdGUgZ2V0SG9saWRheTogQVhDYWxlbmRhckhvbGlkYXlzIHwgQVhDYWxlbmRhckhvbGlkYXlzRnVuYztcblxuICBwcml2YXRlIGdldFdlZWtlbmQ6IEFYQ2FsZW5kYXJXZWVrZW5kcyB8IEFYQ2FsZW5kYXJXZWVrZW5kc0Z1bmM7XG5cbiAgQElucHV0KCdzaG93VG9kYXlCdXR0b24nKVxuICBwdWJsaWMgc2hvd1RvZGF5QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgbWF0cml4OiBhbnlbXSA9IFtdO1xuICByb3RhdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZpZXc6IEFYQ2FsZW5kYXJWaWV3VHlwZSA9ICdkYXknO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZpZXcoKTogQVhDYWxlbmRhclZpZXdUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldztcbiAgfVxuICBwdWJsaWMgc2V0IHZpZXcodjogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fdmlldyA9IHY7XG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlcHRoOiBBWENhbGVuZGFyVmlld1R5cGUgPSAnZGF5JztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRlcHRoKCk6IEFYQ2FsZW5kYXJWaWV3VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlcHRoO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVwdGgodjogQVhDYWxlbmRhclZpZXdUeXBlKSB7XG4gICAgdGhpcy5fZGVwdGggPSB2O1xuICAgIHRoaXMudmlldyA9IHY7XG4gIH1cblxuICB2aWV3UmFuZ2U6IEFYRGF0ZVRpbWVSYW5nZTtcbiAgcHJpdmF0ZSBob2xpZGF5czogQVhDYWxlbmRhckhvbGlkYXlbXSA9IFtdO1xuICBwcml2YXRlIHdlZWtlbmRzOiBBWENhbGVuZGFyV2Vla2VuZFtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIG9uVmFsdWVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUV2ZW50PERhdGU+PigpO1xuXG4gIEBPdXRwdXQoKVxuICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBBWERhdGVUaW1lO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZT8uZGF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHY6IERhdGUpIHtcbiAgICBsZXQgdnY6IEFYRGF0ZVRpbWU7XG4gICAgaWYgKHYpIHtcbiAgICAgIHZ2ID0gQVhEYXRlVGltZS5jb252ZXJ0KHYpO1xuICAgIH1cbiAgICBsZXQgdW5WYWxpZERhdGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5tYXggfHwgdGhpcy5taW4pIHtcbiAgICAgIHVuVmFsaWREYXRlID0gdGhpcy5pc0luTUluTWF4UmFuZ2UodnYpO1xuICAgIH1cbiAgICBpZiAoIXVuVmFsaWREYXRlKSB7XG4gICAgICBpZiAodnYgJiYgIXZ2LmVxdWFsKHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZ2O1xuICAgICAgICB0aGlzLl92YWx1ZS50eXBlID0gdGhpcy50eXBlO1xuICAgICAgICB0aGlzLnNldEZvY3VzKHRoaXMuX3ZhbHVlLmNsb25lKCkpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodnYuZGF0ZSk7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZT8uZGF0ZSxcbiAgICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh2ID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9jdXNlZFZhbHVlID0gdGhpcy50b2RheTtcbiAgICAgICAgdGhpcy52aWV3UmFuZ2UgPSB0aGlzLnRvZGF5Lm1vbnRoLnJhbmdlO1xuICAgICAgICB0aGlzLm5hdmlnYXRlKDApO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZT8uZGF0ZSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzZWRWYWx1ZTogQVhEYXRlVGltZTtcbiAgZ2V0IHRvZGF5KCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSgpLCB0aGlzLnR5cGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xuICAgIC8vIHNldCBkZWZhdWx0c1xuICAgIHRoaXMuZ2V0SG9saWRheSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuaG9saWRheXMnKTtcbiAgICB0aGlzLmdldFdlZWtlbmQgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLndlZWtlbmRzJyk7XG4gIH1cbiAgZmluZERheShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBnZXRTdHlsZShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXlTdHlsZS5maW5kKChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSkuc3R5bGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBnZXRUaXRsZShkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGF5U3R5bGUuZmluZCgoYykgPT4gYy5kYXRlLnNwbGl0KCdUJylbMF0gPT0gZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXlTdHlsZS5maW5kKChjKSA9PiBjLmRhdGUuc3BsaXQoJ1QnKVswXSA9PSBkYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXSkudGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5taW4gJiYgdGhpcy5tYXggJiYgZGF0ZS5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1pbiwgdGhpcy50eXBlKSwgJ1lNRCcsIHRoaXMudHlwZSkgPT09IC0xKSB8fFxuICAgICAgICBkYXRlLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWF4LCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKSA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRheU1pbk1heFJlc29hbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvY3VzZWRWYWx1ZSA9IG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKCksIHRoaXMudHlwZSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRMYXlvdXQoKTtcbiAgICAvL1xuICAgIHRoaXMudmlld1JhbmdlID0gdGhpcy50b2RheS5tb250aC5yYW5nZTtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5zZXRGb2N1cyhuZXcgQVhEYXRlVGltZSh0aGlzLnZhbHVlLCB0aGlzLnR5cGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRGb2N1cyh0aGlzLnRvZGF5KTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIGdldFZpZXdDb21wYWlyZSh2aWV3OiBBWENhbGVuZGFyVmlld1R5cGUpIHtcbiAgICBzd2l0Y2ggKHZpZXcpIHtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHJldHVybiAnWU1EJztcbiAgICAgIGNhc2UgJ21vbnRoJzpcbiAgICAgICAgcmV0dXJuICdZTSc7XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuICdZJztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdExheW91dCgpIHtcbiAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgdGhpcy50eXBlID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykgfHwgJ2dyZWdvcmlhbic7XG4gICAgfVxuICAgIGlmICghdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5kW3RoaXMudHlwZV0/LmxvY2FsZSB8fCB0aGlzLmxvY2FsZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpcikge1xuICAgICAgdGhpcy5kaXIgPSB0aGlzLmRbdGhpcy50eXBlXT8uZGlyIHx8ICdsdHInO1xuICAgIH1cbiAgICB0aGlzLm51bVJvdGF0ZSA9IHRoaXMuZFt0aGlzLnR5cGVdPy5udW1iZXIgfHwgMDtcbiAgICBjb25zdCBwYXRoID0gJ2RhdGVUaW1lLndlZWtkYXlzU2hvcnQnO1xuICAgIHRoaXMud2Vla2RheXMgPSBbXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnN1bmAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0ubW9uYCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS50dWVgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LndlZGAsIHRoaXMubG9jYWxlKSxcbiAgICAgIEFYVHJhbnNsYXRvci5nZXQoYCR7cGF0aH0udGh1YCwgdGhpcy5sb2NhbGUpLFxuICAgICAgQVhUcmFuc2xhdG9yLmdldChgJHtwYXRofS5mcmlgLCB0aGlzLmxvY2FsZSksXG4gICAgICBBWFRyYW5zbGF0b3IuZ2V0KGAke3BhdGh9LnNhdGAsIHRoaXMubG9jYWxlKVxuICAgIF07XG4gIH1cblxuICBnZXRUb2RheU5hbWUoKSB7XG4gICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQoJ2RhdGVUaW1lLnRvZGF5JywgdGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICB0aGlzLm5hdmlnYXRlKC0xKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZSgxKTtcbiAgfVxuXG4gIHJvdGF0ZShhcnJheSwgbikge1xuICAgIGNvbnN0IGxlbiA9IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gIShuICUgbGVuKSA/IGFycmF5IDogbiA+IDAgPyBhcnJheS5tYXAoKGUsIGksIGEpID0+IGFbKGkgKyBuKSAlIGxlbl0pIDogYXJyYXkubWFwKChlLCBpLCBhKSA9PiBhWyhsZW4gLSAoKGxlbiAtIGkgLSBuKSAlIGxlbikpICUgbGVuXSk7XG4gIH1cblxuICBuYXZpZ2F0ZSh2YWx1ZTogbnVtYmVyIHwgQVhEYXRlVGltZSkge1xuICAgIGxldCBzdGFydDogQVhEYXRlVGltZTtcbiAgICBsZXQgZW5kOiBBWERhdGVUaW1lO1xuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZignbW9udGgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZkID0gdGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywgMTUpLmFkZCgnbW9udGgnLCB2YWx1ZSkuc3RhcnRPZignbW9udGgnKTtcbiAgICAgIH1cblxuICAgICAgc3RhcnQgPSBmZC5maXJzdERheU9mV2VlaztcbiAgICAgIGVuZCA9IGZkLmVuZE9mKCdtb250aCcpLmVuZERheU9mV2VlaztcblxuICAgICAgc3RhcnQgPSBzdGFydC5hZGQoJ2RheScsIC10aGlzLm51bVJvdGF0ZSk7XG4gICAgICBlbmQgPSBlbmQuYWRkKCdkYXknLCA3KS5hZGQoJ2RheScsIC10aGlzLm51bVJvdGF0ZSk7XG5cbiAgICAgIC8vIFRPRE86IGFwcGx5IHN0YXJ0IG9mIHdlZWtcbiAgICAgIGlmICghdGhpcy5yb3RhdGVkICYmIHRoaXMud2Vla2RheXMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnamFsYWxpJykge1xuICAgICAgICAgIHRoaXMud2Vla2RheXMgPSB0aGlzLnJvdGF0ZSh0aGlzLndlZWtkYXlzLCAtdGhpcy5udW1Sb3RhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMud2Vla2RheXMgPSB0aGlzLnJvdGF0ZSh0aGlzLndlZWtkYXlzLCB0aGlzLm51bVJvdGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJvdGF0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICBsZXQgZmQ6IEFYRGF0ZVRpbWU7XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XG4gICAgICAgIGZkID0gdmFsdWUuc3RhcnRPZigneWVhcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmQgPSB0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWUuYWRkKCdkYXknLCAxNSkuYWRkKCd5ZWFyJywgdmFsdWUpLnN0YXJ0T2YoJ3llYXInKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gZmQ7XG4gICAgICBlbmQgPSBmZC5lbmRPZigneWVhcicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAneWVhcicpIHtcbiAgICAgIGxldCBmZDogQVhEYXRlVGltZTtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgZmQgPSB2YWx1ZS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmZCA9IHRoaXMudmlld1JhbmdlLnN0YXJ0VGltZVxuICAgICAgICAgIC5hZGQoJ2RheScsIDE1KVxuICAgICAgICAgIC5hZGQoJ3llYXInLCB2YWx1ZSAqIDEwKVxuICAgICAgICAgIC5zdGFydE9mKCd5ZWFyJyk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IGZkLmFkZCgneWVhcicsIC00KTtcbiAgICAgIGVuZCA9IHN0YXJ0LmFkZCgneWVhcicsIDgpLmVuZE9mKCd5ZWFyJyk7XG4gICAgfVxuICAgIHRoaXMudmlld1JhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShzdGFydCwgZW5kKTtcbiAgICAvL1xuICAgIGlmICh0aGlzLmdldEhvbGlkYXkgJiYgdHlwZW9mIHRoaXMuZ2V0SG9saWRheSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5ob2xpZGF5cyA9IHRoaXMuZ2V0SG9saWRheShzdGFydC5kYXRlLCBlbmQuZGF0ZSwgdGhpcy50eXBlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nZXRXZWVrZW5kICYmIHR5cGVvZiB0aGlzLmdldFdlZWtlbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMud2Vla2VuZHMgPSB0aGlzLmdldFdlZWtlbmQoc3RhcnQuZGF0ZSwgZW5kLmRhdGUsIHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgLy9cbiAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeSh0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCdkYXknLCB0aGlzLnR5cGUpKSwgNyk7XG4gICAgICBpZiAodGhpcy5tYXRyaXgubGVuZ3RoID4gMCAmJiB0aGlzLm1hdHJpeFswXS5maW5kKChjKSA9PiBjLm5leHRNb250aCA9PT0gZmFsc2UpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5tYXRyaXguc3BsaWNlKDAsIDEpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWF0cml4W3RoaXMubWF0cml4Lmxlbmd0aCAtIDFdLmZpbmQoKGMpID0+IGMubmV4dE1vbnRoID09PSBmYWxzZSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm1hdHJpeC5zcGxpY2UodGhpcy5tYXRyaXgubGVuZ3RoIC0gMSwgMSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICdtb250aCcpIHtcbiAgICAgIHRoaXMubWF0cml4ID0gdGhpcy5tYXRyaXhpZnkodGhpcy5hcHBseVN0eWxlKHRoaXMudmlld1JhbmdlLmVudW11cmF0ZSgnbW9udGgnLCB0aGlzLnR5cGUpKSwgMyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy5tYXRyaXggPSB0aGlzLm1hdHJpeGlmeSh0aGlzLmFwcGx5U3R5bGUodGhpcy52aWV3UmFuZ2UuZW51bXVyYXRlKCd5ZWFyJywgdGhpcy50eXBlKSksIDMpO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U3R5bGUoZGF0ZXM6IEFYRGF0ZVRpbWVbXSk6IGFueVtdIHtcbiAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcbiAgICBkYXRlcy5mb3JFYWNoKChkLCBpLCBqKSA9PiB7XG4gICAgICBjb25zdCBpdGVtOiBhbnkgPSB7fTtcbiAgICAgIGl0ZW0uZGF0ZSA9IGQ7XG5cbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMudmFsdWUsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDA7XG4gICAgICBpdGVtLmZvY3VzZWQgPSBkLmNvbXBhaXJlTmV3KHRoaXMuZm9jdXNlZFZhbHVlLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAwO1xuICAgICAgaXRlbS50b2RheSA9IHRoaXMudG9kYXkgJiYgZC5jb21wYWlyZU5ldyh0aGlzLnRvZGF5LCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAwO1xuICAgICAgaWYgKHRoaXMudmlldyA9PT0gJ2RheScpIHtcbiAgICAgICAgLy8gIGl0ZW0ubmV4dE1vbnRoID0gZC5jb21wYWlyZU5ldyh0aGlzLnZpZXdSYW5nZS5zdGFydFRpbWUuYWRkKCdkYXknLCAxMCksICdZTScpICE9PSAwO1xuICAgICAgICBpdGVtLm5leHRNb250aCA9IGQuY29tcGFpcmVOZXcodGhpcy52aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywgMTApLCAnWU0nLCB0aGlzLnR5cGUpICE9PSAwO1xuXG4gICAgICAgIGl0ZW0udW5zZWxlY3QgPSB0aGlzLmlzSW5NSW5NYXhSYW5nZShkKTtcbiAgICAgICAgdGhpcy5ob2xpZGF5cy5mb3JFYWNoKChoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcCA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUoaC5kYXRlLCB0aGlzLnR5cGUpLCAnWU1EJywgdGhpcy50eXBlKTtcbiAgICAgICAgICBpZiAoY29tcCA9PT0gMCkge1xuICAgICAgICAgICAgaXRlbS5ob2xpZGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVIb2xpZGF5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGluZGV4RGF5ID0gaSAtIE1hdGguZmxvb3IoaSAvIDcpICogNztcbiAgICAgICAgdGhpcy53ZWVrZW5kcy5mb3JFYWNoKChjYykgPT4ge1xuICAgICAgICAgIGlmIChOdW1iZXIoY2MpID09PSBpbmRleERheSkge1xuICAgICAgICAgICAgaXRlbS5ob2xpZGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVIb2xpZGF5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpdGVtLnVuc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBjaGFuZ2VWaWV3KCkge1xuICAgIGlmICh0aGlzLnZpZXcgPT09ICdkYXknKSB7XG4gICAgICB0aGlzLnZpZXcgPSAnbW9udGgnO1xuICAgIH0gZWxzZSBpZiAodGhpcy52aWV3ID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZpZXcgPSAneWVhcic7XG4gICAgfVxuICB9XG5cbiAgbWF0cml4aWZ5KGFycjogYW55W10sIGNvbHMpIHtcbiAgICBjb25zdCByb3dzID0gTWF0aC5jZWlsKGFyci5sZW5ndGggLyBjb2xzKTtcbiAgICBjb25zdCBtYXRyaXggPSBbXTtcbiAgICBpZiAocm93cyAqIGNvbHMgPT09IGFyci5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBjb2xzKSB7XG4gICAgICAgIG1hdHJpeC5wdXNoKGFyci5zbGljZShpLCBjb2xzICsgaSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc2V0RGF5Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcbiAgICBpZiAoaXRlbS51bnNlbGVjdCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGl0ZW0uZGF0ZS5kYXRlO1xuICAgIH1cblxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgaXNJbk1Jbk1heFJhbmdlKGQpIHtcbiAgICBsZXQgciA9IGZhbHNlO1xuICAgIGlmIChkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm1pbiAmJiAhdGhpcy5tYXgpIHtcbiAgICAgICAgciA9IGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5taW4sIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IC0xO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWF4ICYmICF0aGlzLm1pbikge1xuICAgICAgICByID0gZC5jb21wYWlyZU5ldyhuZXcgQVhEYXRlVGltZSh0aGlzLm1heCwgdGhpcy50eXBlKSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodGhpcy52aWV3KSwgdGhpcy50eXBlKSA9PT0gMTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1pbiAmJiB0aGlzLm1heCkge1xuICAgICAgICByID1cbiAgICAgICAgICBkLmNvbXBhaXJlTmV3KG5ldyBBWERhdGVUaW1lKHRoaXMubWluLCB0aGlzLnR5cGUpLCB0aGlzLmdldFZpZXdDb21wYWlyZSh0aGlzLnZpZXcpLCB0aGlzLnR5cGUpID09PSAtMSB8fFxuICAgICAgICAgIGQuY29tcGFpcmVOZXcobmV3IEFYRGF0ZVRpbWUodGhpcy5tYXgsIHRoaXMudHlwZSksIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHRoaXMudmlldyksIHRoaXMudHlwZSkgPT09IDE7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgc2V0TW9udGhDbGljayhldmVudDogTW91c2VFdmVudCwgZGF0ZTogQVhEYXRlVGltZSkge1xuICAgIGlmICh0aGlzLmRlcHRoID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZGF0ZS5kYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgICAgIHRoaXMuc2V0Rm9jdXMobmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKS5zZXQoJ3llYXInLCBkYXRlLnllYXIpLnNldCgnbW9udGgnLCBkYXRlLm1vbnRoT2ZZZWFyKSk7XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2V0WWVhckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgaWYgKHRoaXMuZGVwdGggPT09ICd5ZWFyJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGRhdGUuZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICAgIHRoaXMuc2V0Rm9jdXMobmV3IEFYRGF0ZVRpbWUodGhpcy52YWx1ZSwgdGhpcy50eXBlKS5zZXQoJ3llYXInLCBkYXRlLnllYXIpKTtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBzZXRGb2N1cyhkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5mb2N1c2VkVmFsdWUgPSBkYXRlO1xuICAgIHRoaXMubmF2aWdhdGUodGhpcy5mb2N1c2VkVmFsdWUpO1xuICB9XG5cbiAgc2V0VG9kYXkoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudG9kYXkuZGF0ZTtcbiAgICB0aGlzLnZpZXcgPSAnZGF5JztcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW0uZGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWNhbGVuZGFyLWNvbnRhaW5lciB7e3NpemV9fVwiIFtuZ0NsYXNzXT1cInR5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5uZXh0JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW5hdi1idXR0b25cIiBbbmdTd2l0Y2hdPVwidmlld1wiPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0eXBlPVwibGlnaHQgYmxhbmtcIiAoY2xpY2spPVwiY2hhbmdlVmlldygpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RheSdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lLmFkZCgnZGF5JywxMCkgfCBkdDpcIk1NTSBZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAge3t2aWV3UmFuZ2Uuc3RhcnRUaW1lIHwgZHQ6XCJZWVlZXCJ9fSAtIHt7dmlld1JhbmdlLmVuZFRpbWUgfCBkdDpcIllZWVlcIn19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb250cm9sbC1idXR0b25cIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gdHlwZT1cImxpZ2h0IGJsYW5rXCIgKGNsaWNrKT1cInByZXYoKVwiPlxuICAgICAgICAgICAgICAgIHt7J2NvbW1vbi5wcmV2JyB8IHRyYW5zfX1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItYm9keVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF5J1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tb250aC1pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IHcgb2Ygd2Vla2RheXMnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1vbnRoLWl0ZW1cIj57e3d9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF5LWl0ZW0gYXgtc3RhdGUtZXZlbnRcIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW3RpdGxlXT1cImdldFRpdGxlKGQuZGF0ZSlcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheSwnbmV4dC1tb250aCc6ZC5uZXh0TW9udGggLCAnaG9saWRheSc6ZC5ob2xpZGF5ICwgJ3Vuc2VsZWN0JzpkLnVuc2VsZWN0fVwiIFtuZ1N0eWxlXT1cIihmaW5kRGF5KGQuZGF0ZSkpID8gZ2V0U3R5bGUoZC5kYXRlKTonJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERheUNsaWNrKCRldmVudCxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZC5kYXRlLmRheUluTW9udGh9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtY29udGFpbmVyXCIgKm5nU3dpdGNoQ2FzZT1cIidtb250aCdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByIG9mIG1hdHJpeFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbW9udGgtaXRlbVwiICpuZ0Zvcj1cImxldCBkIG9mIHI7dHJhY2tCeTp0cmFja0J5Rm5cIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogZC5zZWxlY3RlZCwnZm9jdXNlZCc6ZC5mb2N1c2VkLCd0b2RheSc6ZC50b2RheX1cIiAoY2xpY2spPVwic2V0TW9udGhDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2QuZGF0ZXwgZHQ6XCJNTU1cIn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWNvbnRhaW5lclwiICpuZ1N3aXRjaENhc2U9XCIneWVhcidcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwiY2FsZW5kYXItcm93XCIgKm5nRm9yPVwibGV0IHIgb2YgbWF0cml4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC15ZWFyLWl0ZW1cIiAqbmdGb3I9XCJsZXQgZCBvZiByO3RyYWNrQnk6dHJhY2tCeUZuXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IGQuc2VsZWN0ZWQsJ2ZvY3VzZWQnOmQuZm9jdXNlZCwndG9kYXknOmQudG9kYXl9XCIgKGNsaWNrKT1cInNldFllYXJDbGljaygkZXZlbnQsZC5kYXRlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57e2QuZGF0ZSB8IGR0OlwiWVlZWVwifX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FsZW5kYXItZm9vdGVyXCI+XG4gICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInNldFRvZGF5KClcIiAqbmdJZj1cInNob3dUb2RheUJ1dHRvblwiIHR5cGU9XCJkYXJrXCI+XG4gICAgICAgICAgICB7e2dldFRvZGF5TmFtZSgpfX1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=