@f1falcha/stimulus 1.0.0

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 (576) hide show
  1. package/accordion/accordion-config.scss +18 -0
  2. package/accordion/accordion-item/accordion-item.component.d.ts +11 -0
  3. package/accordion/accordion-item-body/accordion-item-body.component.d.ts +10 -0
  4. package/accordion/accordion-item-header/accordion-item-header.component.d.ts +15 -0
  5. package/accordion/accordion.d.ts +12 -0
  6. package/accordion/accordion.icon.d.ts +3 -0
  7. package/accordion/accordion.scss +41 -0
  8. package/account-card/account-card-config.scss +36 -0
  9. package/account-card/account-card-header/account-card-header-config.scss +9 -0
  10. package/account-card/account-card-header/account-card-header.component.d.ts +12 -0
  11. package/account-card/account-card-header/account-card-header.scss +11 -0
  12. package/account-card/account-card.component.d.ts +16 -0
  13. package/account-card/account-card.scss +19 -0
  14. package/alert/alert-animation.d.ts +6 -0
  15. package/alert/alert-config.d.ts +26 -0
  16. package/alert/alert-config.scss +43 -0
  17. package/alert/alert-icon.d.ts +3 -0
  18. package/alert/alert-ref.d.ts +11 -0
  19. package/alert/alert.d.ts +23 -0
  20. package/alert/alert.scss +91 -0
  21. package/alert/alert.service.d.ts +31 -0
  22. package/avatar/avatar-config.scss +12 -0
  23. package/avatar/avatar.d.ts +21 -0
  24. package/avatar/avatar.scss +2 -0
  25. package/badge/badge-config.scss +68 -0
  26. package/badge/badge.d.ts +17 -0
  27. package/badge/badge.scss +21 -0
  28. package/bank-logo.provider.d.ts +7 -0
  29. package/bordered-section/bordered-section-config.scss +24 -0
  30. package/bordered-section/bordered-section.d.ts +15 -0
  31. package/bordered-section/bordered-section.scss +22 -0
  32. package/box-shadow/box-shadow-config.scss +18 -0
  33. package/button/button-config.scss +342 -0
  34. package/button/button.d.ts +10 -0
  35. package/button/button.scss +62 -0
  36. package/button-group/button-group-config.scss +12 -0
  37. package/button-group/button-group-header/button-group-header-config.scss +9 -0
  38. package/button-group/button-group-header/button-group-header.d.ts +8 -0
  39. package/button-group/button-group-header/button-group-header.scss +5 -0
  40. package/button-group/button-group.d.ts +11 -0
  41. package/button-group/buttton-group.scss +19 -0
  42. package/button-spinner/button-spinner-config.scss +15 -0
  43. package/button-spinner/button-spinner.scss +30 -0
  44. package/card/card-config.scss +15 -0
  45. package/card/card.component.d.ts +8 -0
  46. package/card/card.scss +14 -0
  47. package/chart/chart-config.scss +21 -0
  48. package/chart/chart.component.d.ts +21 -0
  49. package/chart/chart.component.scss +34 -0
  50. package/checkbox/checkbox-config.scss +62 -0
  51. package/checkbox/checkbox.scss +45 -0
  52. package/checkbox-dropdown/checkbox-dropdown.component.d.ts +139 -0
  53. package/checkbox-dropdown/checkbox-dropdown.component.scss +11 -0
  54. package/checkbox-dropdown/checkbox-dropdown.icon.d.ts +3 -0
  55. package/clipboard/clipboard-config.scss +23 -0
  56. package/clipboard/clipboard.component.d.ts +15 -0
  57. package/clipboard/clipboard.component.scss +37 -0
  58. package/clipboard/clipboard.icon.d.ts +3 -0
  59. package/color/cherry.scss +19 -0
  60. package/color/chilli.scss +19 -0
  61. package/color/comet.scss +19 -0
  62. package/color/cotton-candy.scss +19 -0
  63. package/color/default.scss +154 -0
  64. package/color/emerald.scss +19 -0
  65. package/color/goblin.scss +19 -0
  66. package/color/jacaranda.scss +19 -0
  67. package/color/mars.scss +19 -0
  68. package/color/orchid.scss +19 -0
  69. package/color/spaceship.scss +19 -0
  70. package/color/summer.scss +19 -0
  71. package/color/tiger-lily.scss +19 -0
  72. package/color-wrapper/color-wrapper-config.scss +37 -0
  73. package/color-wrapper/color-wrapper.d.ts +17 -0
  74. package/color-wrapper/color-wrapper.scss +23 -0
  75. package/column-seperator/column-separator-config.scss +16 -0
  76. package/column-seperator/column-separator.d.ts +14 -0
  77. package/column-seperator/column-separator.scss +25 -0
  78. package/column-text/column-text.config.scss +12 -0
  79. package/column-text/column-text.d.ts +11 -0
  80. package/column-text/column-text.scss +22 -0
  81. package/container/container-config.scss +12 -0
  82. package/container/container.component.d.ts +12 -0
  83. package/container/container.scss +19 -0
  84. package/custom-datepicker/custom-datepicker-config.scss +50 -0
  85. package/custom-datepicker/custom-datepicker.component.d.ts +80 -0
  86. package/custom-datepicker/custom-datepicker.component.scss +127 -0
  87. package/custom-datepicker/custom-datepicker.model.d.ts +18 -0
  88. package/custom-datepicker/datepicker.icon.d.ts +3 -0
  89. package/custom-datepicker/timepicker/timepicker.component.d.ts +37 -0
  90. package/custom-datepicker/timepicker/timepicker.component.scss +79 -0
  91. package/data-list/data-list.config.scss +35 -0
  92. package/data-list/data-list.d.ts +13 -0
  93. package/data-list/data-list.scss +67 -0
  94. package/date-range-picker/date-range-picker.d.ts +40 -0
  95. package/datepicker/datepicker.config.scss +0 -0
  96. package/datepicker/datepicker.d.ts +45 -0
  97. package/datepicker/datepicker.scss +0 -0
  98. package/datepicker-icon/datepicker-icon-config.scss +10 -0
  99. package/datepicker-icon/datepicker-icon.d.ts +6 -0
  100. package/datepicker-icon/datepicker-icon.scss +7 -0
  101. package/datepicker.provider.d.ts +2 -0
  102. package/detail-panel/detail-panel-config.scss +16 -0
  103. package/detail-panel/detail-panel-row/detail-panel-column/detail-panel-column-config.scss +11 -0
  104. package/detail-panel/detail-panel-row/detail-panel-column/detail-panel-column.d.ts +6 -0
  105. package/detail-panel/detail-panel-row/detail-panel-column/detail-panel-column.scss +15 -0
  106. package/detail-panel/detail-panel-row/detail-panel-row.d.ts +6 -0
  107. package/detail-panel/detail-panel-row/detail-panel-row.scss +5 -0
  108. package/detail-panel/detail-panel-title/detail-panel-title-config.scss +14 -0
  109. package/detail-panel/detail-panel-title/detail-panel-title.d.ts +7 -0
  110. package/detail-panel/detail-panel-title/detail-panel-title.scss +16 -0
  111. package/detail-panel/detail-panel.d.ts +11 -0
  112. package/detail-panel/detail-panel.scss +50 -0
  113. package/dialog/dialog-body/dialog-body.component.d.ts +6 -0
  114. package/dialog/dialog-config.scss +24 -0
  115. package/dialog/dialog-container/dialog-container-config.scss +9 -0
  116. package/dialog/dialog-container/dialog-container.component.d.ts +6 -0
  117. package/dialog/dialog-container/dialog-container.scss +6 -0
  118. package/dialog/dialog-footer/dialog-footer.component.d.ts +6 -0
  119. package/dialog/dialog-footer/dialog-footer.scss +6 -0
  120. package/dialog/dialog-header/dialog-header-config.scss +14 -0
  121. package/dialog/dialog-header/dialog-header.component.d.ts +10 -0
  122. package/dialog/dialog-header/dialog-header.scss +16 -0
  123. package/dialog/dialog-icon.d.ts +3 -0
  124. package/dialog/dialog.component.d.ts +12 -0
  125. package/dialog/dialog.scss +27 -0
  126. package/dialog.provider.d.ts +3 -0
  127. package/dialog.ref.d.ts +4 -0
  128. package/dialog.service.d.ts +7 -0
  129. package/dropdown/context-menu-config.scss +23 -0
  130. package/dropdown/context-menu-content/context-menu-content.d.ts +9 -0
  131. package/dropdown/context-menu-item.d.ts +10 -0
  132. package/dropdown/context-menu-list/context-menu-list.d.ts +9 -0
  133. package/dropdown/context-menu.d.ts +19 -0
  134. package/dropdown/context-menu.scss +41 -0
  135. package/error-page-container/error-content/error-content-config.scss +29 -0
  136. package/error-page-container/error-content/error-content.d.ts +24 -0
  137. package/error-page-container/error-content/error-content.scss +58 -0
  138. package/error-page-container/error-page-container.d.ts +6 -0
  139. package/error-page-container/error-page-container.scss +15 -0
  140. package/esm2022/accordion/accordion-item/accordion-item.component.mjs +23 -0
  141. package/esm2022/accordion/accordion-item-body/accordion-item-body.component.mjs +18 -0
  142. package/esm2022/accordion/accordion-item-header/accordion-item-header.component.mjs +41 -0
  143. package/esm2022/accordion/accordion.icon.mjs +25 -0
  144. package/esm2022/accordion/accordion.mjs +14 -0
  145. package/esm2022/account-card/account-card-header/account-card-header.component.mjs +30 -0
  146. package/esm2022/account-card/account-card.component.mjs +64 -0
  147. package/esm2022/alert/alert-animation.mjs +9 -0
  148. package/esm2022/alert/alert-config.mjs +13 -0
  149. package/esm2022/alert/alert-icon.mjs +33 -0
  150. package/esm2022/alert/alert-ref.mjs +23 -0
  151. package/esm2022/alert/alert.mjs +50 -0
  152. package/esm2022/alert/alert.service.mjs +112 -0
  153. package/esm2022/avatar/avatar.mjs +91 -0
  154. package/esm2022/badge/badge.mjs +77 -0
  155. package/esm2022/bank-logo.provider.mjs +12 -0
  156. package/esm2022/bordered-section/bordered-section.mjs +70 -0
  157. package/esm2022/button/button.mjs +26 -0
  158. package/esm2022/button-group/button-group-header/button-group-header.mjs +24 -0
  159. package/esm2022/button-group/button-group.mjs +41 -0
  160. package/esm2022/card/card.component.mjs +28 -0
  161. package/esm2022/chart/chart.component.mjs +70 -0
  162. package/esm2022/checkbox-dropdown/checkbox-dropdown.component.mjs +232 -0
  163. package/esm2022/checkbox-dropdown/checkbox-dropdown.icon.mjs +14 -0
  164. package/esm2022/clipboard/clipboard.component.mjs +36 -0
  165. package/esm2022/clipboard/clipboard.icon.mjs +6 -0
  166. package/esm2022/color-wrapper/color-wrapper.mjs +82 -0
  167. package/esm2022/column-seperator/column-separator.mjs +62 -0
  168. package/esm2022/column-text/column-text.mjs +38 -0
  169. package/esm2022/container/container.component.mjs +46 -0
  170. package/esm2022/custom-datepicker/custom-datepicker.component.mjs +364 -0
  171. package/esm2022/custom-datepicker/custom-datepicker.model.mjs +12 -0
  172. package/esm2022/custom-datepicker/datepicker.icon.mjs +7 -0
  173. package/esm2022/custom-datepicker/timepicker/timepicker.component.mjs +195 -0
  174. package/esm2022/data-list/data-list.mjs +46 -0
  175. package/esm2022/date-range-picker/date-range-picker.mjs +207 -0
  176. package/esm2022/datepicker/datepicker.mjs +153 -0
  177. package/esm2022/datepicker-icon/datepicker-icon.mjs +18 -0
  178. package/esm2022/datepicker.provider.mjs +6 -0
  179. package/esm2022/detail-panel/detail-panel-row/detail-panel-column/detail-panel-column.mjs +15 -0
  180. package/esm2022/detail-panel/detail-panel-row/detail-panel-row.mjs +15 -0
  181. package/esm2022/detail-panel/detail-panel-title/detail-panel-title.mjs +19 -0
  182. package/esm2022/detail-panel/detail-panel.mjs +36 -0
  183. package/esm2022/dialog/dialog-body/dialog-body.component.mjs +16 -0
  184. package/esm2022/dialog/dialog-container/dialog-container.component.mjs +16 -0
  185. package/esm2022/dialog/dialog-footer/dialog-footer.component.mjs +16 -0
  186. package/esm2022/dialog/dialog-header/dialog-header.component.mjs +25 -0
  187. package/esm2022/dialog/dialog-icon.mjs +8 -0
  188. package/esm2022/dialog/dialog.component.mjs +36 -0
  189. package/esm2022/dialog.provider.mjs +5 -0
  190. package/esm2022/dialog.ref.mjs +4 -0
  191. package/esm2022/dialog.service.mjs +15 -0
  192. package/esm2022/dropdown/context-menu-content/context-menu-content.mjs +18 -0
  193. package/esm2022/dropdown/context-menu-item.mjs +28 -0
  194. package/esm2022/dropdown/context-menu-list/context-menu-list.mjs +18 -0
  195. package/esm2022/dropdown/context-menu.mjs +61 -0
  196. package/esm2022/error-page-container/error-content/error-content.mjs +49 -0
  197. package/esm2022/error-page-container/error-page-container.mjs +18 -0
  198. package/esm2022/extract-inital/extract-initial.mjs +21 -0
  199. package/esm2022/f1softinternational-stimulus.mjs +5 -0
  200. package/esm2022/file-uploader/file-uploader-icon.mjs +13 -0
  201. package/esm2022/file-uploader/file-uploader.mjs +274 -0
  202. package/esm2022/file-uploader/file-uploader.ref.mjs +3 -0
  203. package/esm2022/file-uploader/file-uploader.service.mjs +26 -0
  204. package/esm2022/filter/filter.mjs +173 -0
  205. package/esm2022/form/form-control/form-control-action.mjs +18 -0
  206. package/esm2022/form/form-control/form-control-icon.mjs +18 -0
  207. package/esm2022/form/form-control/form-field.mjs +86 -0
  208. package/esm2022/form/form-control-wrapper/form-control-wrapper.component.mjs +22 -0
  209. package/esm2022/form/form-error-messages.mjs +43 -0
  210. package/esm2022/form/form-message/form-message.mjs +30 -0
  211. package/esm2022/form/select-input-field/select-input-field.mjs +14 -0
  212. package/esm2022/form/validate-and-submit.mjs +54 -0
  213. package/esm2022/full-container/full-container.component.mjs +30 -0
  214. package/esm2022/grid/grid-item.component.mjs +24 -0
  215. package/esm2022/grid/grid.component.mjs +56 -0
  216. package/esm2022/grid-row/grid-row.mjs +18 -0
  217. package/esm2022/icon/icons.mjs +619 -0
  218. package/esm2022/image-card/illustration.pipe.mjs +57 -0
  219. package/esm2022/image-card/image-card.component.mjs +22 -0
  220. package/esm2022/image-panel/image-panel.component.mjs +88 -0
  221. package/esm2022/info-column/info-column.mjs +18 -0
  222. package/esm2022/info-slider/info-slider.component.mjs +50 -0
  223. package/esm2022/inline-alert/inline-alert.mjs +51 -0
  224. package/esm2022/inline-group/inline-group.component.mjs +32 -0
  225. package/esm2022/input/input.mjs +25 -0
  226. package/esm2022/label/label.mjs +18 -0
  227. package/esm2022/layout/layout.component.mjs +23 -0
  228. package/esm2022/link/link.mjs +79 -0
  229. package/esm2022/media-preview/media-preview-icon.mjs +41 -0
  230. package/esm2022/media-preview/media-preview-modal/media-preview-modal.mjs +128 -0
  231. package/esm2022/media-preview/media-preview.mjs +131 -0
  232. package/esm2022/media-preview/media_preview.service.mjs +31 -0
  233. package/esm2022/menu/menu-icon.mjs +29 -0
  234. package/esm2022/menu/menu.component.mjs +151 -0
  235. package/esm2022/nebular-icon.mjs +179 -0
  236. package/esm2022/otp-input/otp-input.component.mjs +106 -0
  237. package/esm2022/otp-input/otp-input.icon.mjs +13 -0
  238. package/esm2022/page-container/page-container-info/page-container-info.component.mjs +28 -0
  239. package/esm2022/page-container/page-container.component.mjs +63 -0
  240. package/esm2022/page-header/page-header.component.mjs +47 -0
  241. package/esm2022/page-header/page-header.icons.mjs +8 -0
  242. package/esm2022/page-header/page-sub-heading/page-sub-heading.component.mjs +12 -0
  243. package/esm2022/page-loader/page-loader.component.mjs +47 -0
  244. package/esm2022/pagination/pagination.icon.mjs +11 -0
  245. package/esm2022/pagination/pagination.mjs +170 -0
  246. package/esm2022/popover-content/popover-content-item/popover-content-item.component.mjs +15 -0
  247. package/esm2022/popover-content/popover-content.component.mjs +23 -0
  248. package/esm2022/preview-box/preview-box.component.mjs +73 -0
  249. package/esm2022/progress-bar/progress-bar.component.mjs +31 -0
  250. package/esm2022/progress-chart/progress-chart.component.mjs +87 -0
  251. package/esm2022/public-api.mjs +141 -0
  252. package/esm2022/radio-card-group/radio-card/radio-card.component.mjs +86 -0
  253. package/esm2022/radio-card-group/radio-card-group.component.mjs +61 -0
  254. package/esm2022/regex-checker/regex-checker-icon.mjs +18 -0
  255. package/esm2022/regex-checker/regex-checker.mjs +77 -0
  256. package/esm2022/regex-checker/regex-validity-icon.pipe.mjs +25 -0
  257. package/esm2022/ribbon/ribbon-icon.mjs +8 -0
  258. package/esm2022/ribbon/ribbon.mjs +37 -0
  259. package/esm2022/round-checkbox/round-checkbox.component.mjs +43 -0
  260. package/esm2022/row/column/column.component.mjs +19 -0
  261. package/esm2022/row/row.component.mjs +32 -0
  262. package/esm2022/scrollable-content/scrollable-content.component.mjs +22 -0
  263. package/esm2022/section-header/section-header.component.mjs +29 -0
  264. package/esm2022/section-row/section-row.mjs +35 -0
  265. package/esm2022/section-separator/section-separator.mjs +69 -0
  266. package/esm2022/section-shell/section-shell.component.mjs +45 -0
  267. package/esm2022/select/select.component.mjs +137 -0
  268. package/esm2022/select-card/select-card-icon.mjs +24 -0
  269. package/esm2022/select-card/select-card.component.mjs +117 -0
  270. package/esm2022/select-country/select-country.component.mjs +86 -0
  271. package/esm2022/shell/checker-sidebar/checker-sidebar.component.mjs +19 -0
  272. package/esm2022/shell/maker-sidebar/maker-sidebar.component.mjs +19 -0
  273. package/esm2022/shell/nebular-icons.mjs +180 -0
  274. package/esm2022/shell/shell-icons.mjs +474 -0
  275. package/esm2022/shell/shell-sidebar/shell-sidebar.component.mjs +38 -0
  276. package/esm2022/shell/shell.component.mjs +77 -0
  277. package/esm2022/side-drawer/side-drawer.mjs +15 -0
  278. package/esm2022/side-drawer/side-drawer.service.mjs +71 -0
  279. package/esm2022/size/component-size.mjs +2 -0
  280. package/esm2022/spinner/spinner.mjs +32 -0
  281. package/esm2022/stepper/step/step.mjs +20 -0
  282. package/esm2022/stepper/step/step.pipe.mjs +21 -0
  283. package/esm2022/stepper/step-header/step-header.mjs +29 -0
  284. package/esm2022/stepper/stepper-button/stepper-next.mjs +21 -0
  285. package/esm2022/stepper/stepper-button/stepper-previous.mjs +21 -0
  286. package/esm2022/stepper/stepper.mjs +56 -0
  287. package/esm2022/stimulus.module.mjs +891 -0
  288. package/esm2022/table/table-column/scl-table-column.mjs +54 -0
  289. package/esm2022/table/table-icon.mjs +13 -0
  290. package/esm2022/table/table-text/scl-table-text.mjs +51 -0
  291. package/esm2022/table/table.config.mjs +15 -0
  292. package/esm2022/table/table.mjs +186 -0
  293. package/esm2022/table-action-control/table-action-control.component.mjs +20 -0
  294. package/esm2022/tabset/tab/tab.component.mjs +29 -0
  295. package/esm2022/tabset/tab-directive/tabset.directive.mjs +22 -0
  296. package/esm2022/tabset/tabset.component.mjs +40 -0
  297. package/esm2022/taglist/tag/tag.component.mjs +51 -0
  298. package/esm2022/taglist/tag/tag.directive.mjs +30 -0
  299. package/esm2022/taglist/taglist.component.mjs +39 -0
  300. package/esm2022/text-decoration/text-decoration.component.mjs +26 -0
  301. package/esm2022/text-editor/text-editor.mjs +263 -0
  302. package/esm2022/theme.provider.mjs +9 -0
  303. package/esm2022/timeline/timeline.component.mjs +66 -0
  304. package/esm2022/timepicker/timepicker.component.mjs +377 -0
  305. package/esm2022/timepicker/timepicker.icon.mjs +7 -0
  306. package/esm2022/timepicker/timepicker.model.mjs +6 -0
  307. package/esm2022/toggle/toggle-description/toggle-description.mjs +18 -0
  308. package/esm2022/toggle/toggle.mjs +75 -0
  309. package/esm2022/toggle-password/toggle-password.component.mjs +54 -0
  310. package/esm2022/toggle-password/toggle-password.directive.mjs +26 -0
  311. package/esm2022/toggle-password/toggle-password.icon.mjs +13 -0
  312. package/esm2022/treeview/treeview-header/treeview-header.mjs +26 -0
  313. package/esm2022/treeview/treeview.icon.mjs +53 -0
  314. package/esm2022/treeview/treeview.mjs +319 -0
  315. package/esm2022/truncate/truncate.component.mjs +53 -0
  316. package/esm2022/typography/typography.mjs +168 -0
  317. package/extract-inital/extract-initial.d.ts +8 -0
  318. package/f1softinternational-stimulus-1.0.0.tgz +0 -0
  319. package/fesm2022/f1softinternational-stimulus.mjs +10275 -0
  320. package/file-uploader/file-upload-config.scss +48 -0
  321. package/file-uploader/file-upload.scss +77 -0
  322. package/file-uploader/file-uploader-icon.d.ts +3 -0
  323. package/file-uploader/file-uploader.d.ts +84 -0
  324. package/file-uploader/file-uploader.ref.d.ts +6 -0
  325. package/file-uploader/file-uploader.service.d.ts +11 -0
  326. package/filter/filter.d.ts +48 -0
  327. package/flag/_flags.scss +9 -0
  328. package/form/form-config.scss +14 -0
  329. package/form/form-control/form-control-action.d.ts +6 -0
  330. package/form/form-control/form-control-config.scss +9 -0
  331. package/form/form-control/form-control-icon.d.ts +6 -0
  332. package/form/form-control/form-control.scss +17 -0
  333. package/form/form-control/form-field.d.ts +26 -0
  334. package/form/form-control-wrapper/form-control-wrapper-config.scss +11 -0
  335. package/form/form-control-wrapper/form-control-wrapper.component.d.ts +8 -0
  336. package/form/form-control-wrapper/form-control-wrapper.scss +17 -0
  337. package/form/form-error-messages.d.ts +8 -0
  338. package/form/form-message/form-message-config.scss +7 -0
  339. package/form/form-message/form-message.d.ts +15 -0
  340. package/form/form-message/form-message.scss +6 -0
  341. package/form/form.scss +22 -0
  342. package/form/select-input-field/select-input-field-config.scss +13 -0
  343. package/form/select-input-field/select-input-field.d.ts +6 -0
  344. package/form/select-input-field/select-input-field.scss +43 -0
  345. package/form/validate-and-submit.d.ts +14 -0
  346. package/full-container/full-container-config.scss +16 -0
  347. package/full-container/full-container.component.d.ts +11 -0
  348. package/full-container/full-container.component.scss +54 -0
  349. package/grid/grid-config.scss +14 -0
  350. package/grid/grid-item.component.d.ts +8 -0
  351. package/grid/grid.component.d.ts +10 -0
  352. package/grid/grid.component.scss +26 -0
  353. package/grid-row/grid-row.config.scss +9 -0
  354. package/grid-row/grid-row.d.ts +6 -0
  355. package/grid-row/grid-row.scss +7 -0
  356. package/icon/icon.config.scss +9 -0
  357. package/icon/icon.scss +9 -0
  358. package/icon/icons.d.ts +3 -0
  359. package/image-card/illustration.pipe.d.ts +8 -0
  360. package/image-card/image-card-config.scss +29 -0
  361. package/image-card/image-card.component.d.ts +8 -0
  362. package/image-card/image-card.scss +37 -0
  363. package/image-panel/image-panel-config.scss +30 -0
  364. package/image-panel/image-panel.component.d.ts +26 -0
  365. package/image-panel/image-panel.component.scss +80 -0
  366. package/index.d.ts +6 -0
  367. package/info-column/info-column-config.scss +14 -0
  368. package/info-column/info-column.d.ts +7 -0
  369. package/info-column/info-column.scss +17 -0
  370. package/info-slider/info-slider-config.scss +10 -0
  371. package/info-slider/info-slider.component.d.ts +16 -0
  372. package/info-slider/info-slider.component.scss +21 -0
  373. package/inline-alert/inline-alert-config.scss +12 -0
  374. package/inline-alert/inline-alert.d.ts +20 -0
  375. package/inline-alert/inline-alert.scss +16 -0
  376. package/inline-group/inline-group.component.d.ts +10 -0
  377. package/inline-group/inline-group.component.scss +15 -0
  378. package/input/input-config.scss +57 -0
  379. package/input/input.d.ts +10 -0
  380. package/input/input.scss +68 -0
  381. package/label/label-config.scss +13 -0
  382. package/label/label.d.ts +6 -0
  383. package/label/label.scss +10 -0
  384. package/layout/layout.component.d.ts +9 -0
  385. package/link/link-config.scss +89 -0
  386. package/link/link.d.ts +19 -0
  387. package/link/link.scss +157 -0
  388. package/media-preview/media-preview-config.scss +15 -0
  389. package/media-preview/media-preview-icon.d.ts +3 -0
  390. package/media-preview/media-preview-modal/media-preview-modal.d.ts +31 -0
  391. package/media-preview/media-preview-modal/media-preview-modal.scss +148 -0
  392. package/media-preview/media-preview-modal/media-previw-modal-config.scss +44 -0
  393. package/media-preview/media-preview.d.ts +48 -0
  394. package/media-preview/media-preview.scss +59 -0
  395. package/media-preview/media_preview.service.d.ts +16 -0
  396. package/menu/menu-config.scss +33 -0
  397. package/menu/menu-icon.d.ts +3 -0
  398. package/menu/menu.component.d.ts +47 -0
  399. package/menu/menu.component.scss +80 -0
  400. package/nebular-icon.d.ts +3 -0
  401. package/otp-input/otp-input-config.scss +22 -0
  402. package/otp-input/otp-input.component.d.ts +33 -0
  403. package/otp-input/otp-input.component.scss +52 -0
  404. package/otp-input/otp-input.icon.d.ts +3 -0
  405. package/package.json +57 -0
  406. package/page-container/page-container-config.scss +9 -0
  407. package/page-container/page-container-info/page-container-info-config.scss +9 -0
  408. package/page-container/page-container-info/page-container-info.component.d.ts +10 -0
  409. package/page-container/page-container-info/page-container-info.scss +6 -0
  410. package/page-container/page-container.component.d.ts +14 -0
  411. package/page-container/page-container.component.scss +11 -0
  412. package/page-header/page-header-config.scss +28 -0
  413. package/page-header/page-header.component.d.ts +18 -0
  414. package/page-header/page-header.component.scss +37 -0
  415. package/page-header/page-header.icons.d.ts +3 -0
  416. package/page-header/page-sub-heading/page-sub-heading.component.d.ts +6 -0
  417. package/page-loader/page-loader-config.scss +23 -0
  418. package/page-loader/page-loader.component.d.ts +13 -0
  419. package/page-loader/page-loader.component.scss +44 -0
  420. package/pagination/pagination-config.scss +24 -0
  421. package/pagination/pagination.d.ts +47 -0
  422. package/pagination/pagination.icon.d.ts +3 -0
  423. package/pagination/pagination.scss +67 -0
  424. package/popover-content/popover-content-item/popover-content-item-config.scss +22 -0
  425. package/popover-content/popover-content-item/popover-content-item.component.d.ts +6 -0
  426. package/popover-content/popover-content-item/popover-content-item.scss +36 -0
  427. package/popover-content/popover-content.component.d.ts +14 -0
  428. package/preview-box/preview-box-config.scss +52 -0
  429. package/preview-box/preview-box.component.d.ts +31 -0
  430. package/preview-box/preview-box.component.scss +101 -0
  431. package/progress-bar/progress-bar-config.scss +14 -0
  432. package/progress-bar/progress-bar.component.d.ts +10 -0
  433. package/progress-bar/progress-bar.component.scss +13 -0
  434. package/progress-chart/progress-chart-config.scss +15 -0
  435. package/progress-chart/progress-chart.component.d.ts +21 -0
  436. package/progress-chart/progress-chart.component.scss +41 -0
  437. package/public-api.d.ts +135 -0
  438. package/radio-button/radio-button-config.scss +47 -0
  439. package/radio-button/radio-button.scss +89 -0
  440. package/radio-card-group/radio-card/radio-card-config.scss +31 -0
  441. package/radio-card-group/radio-card/radio-card.component.d.ts +30 -0
  442. package/radio-card-group/radio-card/radio-card.component.scss +88 -0
  443. package/radio-card-group/radio-card-group-config.scss +9 -0
  444. package/radio-card-group/radio-card-group.component.d.ts +20 -0
  445. package/radio-card-group/radio-card-group.scss +7 -0
  446. package/regex-checker/regex-checker-config.scss +24 -0
  447. package/regex-checker/regex-checker-icon.d.ts +3 -0
  448. package/regex-checker/regex-checker.d.ts +29 -0
  449. package/regex-checker/regex-checker.scss +38 -0
  450. package/regex-checker/regex-validity-icon.pipe.d.ts +8 -0
  451. package/ribbon/ribbon-config.scss +21 -0
  452. package/ribbon/ribbon-icon.d.ts +3 -0
  453. package/ribbon/ribbon.d.ts +14 -0
  454. package/ribbon/ribbon.scss +29 -0
  455. package/round-checkbox/round-checkbox-config.scss +15 -0
  456. package/round-checkbox/round-checkbox.component.d.ts +16 -0
  457. package/round-checkbox/round-checkbox.component.scss +23 -0
  458. package/row/column/column.component.d.ts +9 -0
  459. package/row/row-config.scss +10 -0
  460. package/row/row.component.d.ts +9 -0
  461. package/row/row.scss +22 -0
  462. package/scrollable-content/scrollable-content-config.scss +11 -0
  463. package/scrollable-content/scrollable-content.component.d.ts +8 -0
  464. package/scrollable-content/scrollable-content.component.scss +28 -0
  465. package/section-header/section-header-config.scss +18 -0
  466. package/section-header/section-header.component.d.ts +9 -0
  467. package/section-header/section-header.component.scss +32 -0
  468. package/section-row/section-row-config.scss +9 -0
  469. package/section-row/section-row.d.ts +9 -0
  470. package/section-row/section-row.scss +23 -0
  471. package/section-separator/section-separator-config.scss +19 -0
  472. package/section-separator/section-separator.d.ts +15 -0
  473. package/section-separator/section-separator.scss +28 -0
  474. package/section-shell/section-shell-config.scss +23 -0
  475. package/section-shell/section-shell.component.d.ts +12 -0
  476. package/section-shell/section-shell.component.scss +30 -0
  477. package/select/select-config.scss +78 -0
  478. package/select/select.component.d.ts +44 -0
  479. package/select/select.scss +174 -0
  480. package/select-card/select-card-config.scss +32 -0
  481. package/select-card/select-card-icon.d.ts +3 -0
  482. package/select-card/select-card.component.d.ts +38 -0
  483. package/select-card/select-card.component.scss +66 -0
  484. package/select-country/select-country-config.scss +10 -0
  485. package/select-country/select-country.component.d.ts +33 -0
  486. package/select-country/select-country.component.scss +34 -0
  487. package/shell/checker-sidebar/checker-sidebar-config.scss +21 -0
  488. package/shell/checker-sidebar/checker-sidebar.component.d.ts +8 -0
  489. package/shell/checker-sidebar/checker-sidebar.component.scss +34 -0
  490. package/shell/maker-sidebar/maker-sidebar-config.scss +21 -0
  491. package/shell/maker-sidebar/maker-sidebar.component.d.ts +8 -0
  492. package/shell/maker-sidebar/maker-sidebar.component.scss +34 -0
  493. package/shell/nebular-icons.d.ts +3 -0
  494. package/shell/shell-config.component.scss +25 -0
  495. package/shell/shell-icons.d.ts +3 -0
  496. package/shell/shell-sidebar/shell-sidebar-config.scss +43 -0
  497. package/shell/shell-sidebar/shell-sidebar.component.d.ts +14 -0
  498. package/shell/shell-sidebar/shell-sidebar.component.scss +106 -0
  499. package/shell/shell-sidebar-menu/shell-sidebar-menu-config.scss +56 -0
  500. package/shell/shell-sidebar-menu/shell-sidebar-menu.scss +76 -0
  501. package/shell/shell.component.d.ts +21 -0
  502. package/shell/shell.component.scss +55 -0
  503. package/side-drawer/side-drawer-config.scss +20 -0
  504. package/side-drawer/side-drawer.d.ts +8 -0
  505. package/side-drawer/side-drawer.scss +52 -0
  506. package/side-drawer/side-drawer.service.d.ts +20 -0
  507. package/size/component-size.d.ts +2 -0
  508. package/spinner/spinner.d.ts +11 -0
  509. package/stepper/step/step.d.ts +8 -0
  510. package/stepper/step/step.pipe.d.ts +8 -0
  511. package/stepper/step-header/step-header.d.ts +12 -0
  512. package/stepper/stepper-button/stepper-next.d.ts +7 -0
  513. package/stepper/stepper-button/stepper-previous.d.ts +7 -0
  514. package/stepper/stepper.config.scss +37 -0
  515. package/stepper/stepper.d.ts +19 -0
  516. package/stepper/stepper.scss +149 -0
  517. package/stimulus-config.scss +98 -0
  518. package/stimulus.module.d.ts +136 -0
  519. package/stimulus.scss +107 -0
  520. package/table/table-column/scl-table-column.d.ts +26 -0
  521. package/table/table-config.scss +63 -0
  522. package/table/table-icon.d.ts +3 -0
  523. package/table/table-text/scl-table-text.d.ts +13 -0
  524. package/table/table.config.d.ts +19 -0
  525. package/table/table.d.ts +58 -0
  526. package/table/table.scss +232 -0
  527. package/table-action-control/table-action-control-config.scss +12 -0
  528. package/table-action-control/table-action-control.component.d.ts +8 -0
  529. package/table-action-control/table-action-control.component.scss +14 -0
  530. package/tabset/route-tab/route-tab-config.scss +30 -0
  531. package/tabset/route-tab/route-tab.scss +44 -0
  532. package/tabset/tab/tab.component.d.ts +9 -0
  533. package/tabset/tab-directive/tabset-config.scss +49 -0
  534. package/tabset/tab-directive/tabset.directive.d.ts +7 -0
  535. package/tabset/tab-directive/tabset.scss +154 -0
  536. package/tabset/tabset.component.d.ts +14 -0
  537. package/tabset/tabset.component.scss +79 -0
  538. package/taglist/tag/tag-config.scss +30 -0
  539. package/taglist/tag/tag.component.d.ts +17 -0
  540. package/taglist/tag/tag.directive.d.ts +16 -0
  541. package/taglist/tag/tag.scss +43 -0
  542. package/taglist/taglist.component.d.ts +12 -0
  543. package/text-decoration/text-decoration.component.d.ts +9 -0
  544. package/text-decoration/text-decoration.scss +7 -0
  545. package/text-editor/text-editor.config.scss +23 -0
  546. package/text-editor/text-editor.d.ts +60 -0
  547. package/text-editor/text-editor.scss +74 -0
  548. package/theme.provider.d.ts +2 -0
  549. package/timeline/timeline-config.scss +49 -0
  550. package/timeline/timeline.component.d.ts +26 -0
  551. package/timeline/timeline.component.scss +126 -0
  552. package/timepicker/timepicker-config.scss +41 -0
  553. package/timepicker/timepicker.component.d.ts +74 -0
  554. package/timepicker/timepicker.component.scss +111 -0
  555. package/timepicker/timepicker.icon.d.ts +3 -0
  556. package/timepicker/timepicker.model.d.ts +13 -0
  557. package/toggle/toggle-config.scss +51 -0
  558. package/toggle/toggle-description/toggle-description.d.ts +6 -0
  559. package/toggle/toggle.d.ts +19 -0
  560. package/toggle/toggle.scss +31 -0
  561. package/toggle-password/toggle-password-config.scss +12 -0
  562. package/toggle-password/toggle-password.component.d.ts +21 -0
  563. package/toggle-password/toggle-password.directive.d.ts +13 -0
  564. package/toggle-password/toggle-password.icon.d.ts +3 -0
  565. package/toggle-password/toggle-password.scss +16 -0
  566. package/treeview/treeview-config.scss +86 -0
  567. package/treeview/treeview-header/treeview-header.d.ts +12 -0
  568. package/treeview/treeview.d.ts +66 -0
  569. package/treeview/treeview.icon.d.ts +3 -0
  570. package/treeview/treeview.scss +278 -0
  571. package/truncate/truncate.component.d.ts +16 -0
  572. package/truncate/truncate.scss +18 -0
  573. package/typography/font.scss +28 -0
  574. package/typography/typography-config.scss +73 -0
  575. package/typography/typography.d.ts +37 -0
  576. package/typography/typography.scss +47 -0
@@ -0,0 +1,30 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { NbTagInputDirective } from '@nebular/theme';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@nebular/theme";
5
+ class SclTagInput extends NbTagInputDirective {
6
+ constructor(hostElement, focusMonitor, renderer, zone, statusService) {
7
+ super(hostElement, focusMonitor, renderer, zone, statusService);
8
+ this.tagAdd = new EventEmitter();
9
+ this.setAttribute();
10
+ }
11
+ setAttribute() {
12
+ this.renderer.setAttribute(this._hostElement.nativeElement, 'nbTagInput', '');
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTagInput, deps: [{ token: i0.ElementRef }, { token: i1.NbFocusMonitor }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.NbStatusService }], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: SclTagInput, isStandalone: true, selector: "input[sclTagInput]", inputs: { separatorKeys: "separatorKeys" }, outputs: { tagAdd: "tagAdd" }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
16
+ }
17
+ export { SclTagInput };
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTagInput, decorators: [{
19
+ type: Component,
20
+ args: [{
21
+ selector: 'input[sclTagInput]',
22
+ template: `<ng-content></ng-content>`,
23
+ standalone: true,
24
+ }]
25
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NbFocusMonitor }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.NbStatusService }]; }, propDecorators: { separatorKeys: [{
26
+ type: Input
27
+ }], tagAdd: [{
28
+ type: Output
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wYWNrYWdlcy90YWdsaXN0L3RhZy90YWcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFtQyxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFPdEYsTUFLYSxXQUFZLFNBQVEsbUJBQW1CO0lBS2hELFlBQVksV0FBeUMsRUFBRSxZQUE0QixFQUFFLFFBQW1CLEVBQUUsSUFBWSxFQUFFLGFBQThCO1FBQ2xKLEtBQUssQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFIakQsV0FBTSxHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUluRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLFlBQVk7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7OEdBWlEsV0FBVztrR0FBWCxXQUFXLGdMQUhWLDJCQUEyQjs7U0FHNUIsV0FBVzsyRkFBWCxXQUFXO2tCQUx2QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjt5TUFFcUIsYUFBYTtzQkFBOUIsS0FBSztnQkFFYSxNQUFNO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYkZvY3VzTW9uaXRvciwgTmJTdGF0dXNTZXJ2aWNlLCBOYlRhZ0lucHV0RGlyZWN0aXZlIH0gZnJvbSAnQG5lYnVsYXIvdGhlbWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjbFRhZ0lucHV0QWRkRXZlbnQge1xuICAgIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaW5wdXRbc2NsVGFnSW5wdXRdJyxcbiAgICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNjbFRhZ0lucHV0IGV4dGVuZHMgTmJUYWdJbnB1dERpcmVjdGl2ZSB7XG4gICAgQElucHV0KCkgb3ZlcnJpZGUgc2VwYXJhdG9yS2V5cyE6IG51bWJlcltdO1xuXG4gICAgQE91dHB1dCgpIG92ZXJyaWRlIHRhZ0FkZDogRXZlbnRFbWl0dGVyPFNjbFRhZ0lucHV0QWRkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY2xUYWdJbnB1dEFkZEV2ZW50PigpO1xuXG4gICAgY29uc3RydWN0b3IoaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sIGZvY3VzTW9uaXRvcjogTmJGb2N1c01vbml0b3IsIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHpvbmU6IE5nWm9uZSwgc3RhdHVzU2VydmljZTogTmJTdGF0dXNTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGhvc3RFbGVtZW50LCBmb2N1c01vbml0b3IsIHJlbmRlcmVyLCB6b25lLCBzdGF0dXNTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEF0dHJpYnV0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5faG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ25iVGFnSW5wdXQnLCAnJyk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,39 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, ContentChildren, EventEmitter, Output } from '@angular/core';
3
+ import { SclTagComponent } from './tag/tag.component';
4
+ import * as i0 from "@angular/core";
5
+ class SclTagListComponent {
6
+ constructor() {
7
+ this.tagRemove = new EventEmitter();
8
+ }
9
+ ngAfterContentInit() {
10
+ this.handleTagRemove();
11
+ this.tags.changes.subscribe(() => this.handleTagRemove());
12
+ }
13
+ handleTagRemove() {
14
+ this.tags.forEach(tag => {
15
+ tag.remove.pipe().subscribe(() => this.tagRemove.emit(tag));
16
+ });
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTagListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: SclTagListComponent, isStandalone: true, selector: "scl-tag-list", outputs: { tagRemove: "tagRemove" }, host: { classAttribute: "scl-tag-list " }, queries: [{ propertyName: "tags", predicate: SclTagComponent, descendants: true }], ngImport: i0, template: ` <ng-content></ng-content> `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
20
+ }
21
+ export { SclTagListComponent };
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTagListComponent, decorators: [{
23
+ type: Component,
24
+ args: [{
25
+ selector: 'scl-tag-list',
26
+ standalone: true,
27
+ imports: [CommonModule],
28
+ host: {
29
+ class: 'scl-tag-list ',
30
+ },
31
+ template: ` <ng-content></ng-content> `,
32
+ }]
33
+ }], propDecorators: { tags: [{
34
+ type: ContentChildren,
35
+ args: [SclTagComponent, { descendants: true }]
36
+ }], tagRemove: [{
37
+ type: Output
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFja2FnZXMvdGFnbGlzdC90YWdsaXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXRELE1BU2EsbUJBQW1CO0lBVGhDO1FBWWMsY0FBUyxHQUFrQyxJQUFJLFlBQVksRUFBbUIsQ0FBQztLQVk1RjtJQVZHLGtCQUFrQjtRQUNkLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FkUSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw2S0FDWCxlQUFlLGdEQUh0Qiw2QkFBNkIsMkRBSjdCLFlBQVk7O1NBTWIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBVC9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsZUFBZTtxQkFDekI7b0JBQ0QsUUFBUSxFQUFFLDZCQUE2QjtpQkFDMUM7OEJBRTRELElBQUk7c0JBQTVELGVBQWU7dUJBQUMsZUFBZSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFN0MsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NsVGFnQ29tcG9uZW50IH0gZnJvbSAnLi90YWcvdGFnLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2NsLXRhZy1saXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdzY2wtdGFnLWxpc3QgJyxcbiAgICB9LFxuICAgIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgU2NsVGFnTGlzdENvbXBvbmVudCB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihTY2xUYWdDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgdGFncyE6IFF1ZXJ5TGlzdDxTY2xUYWdDb21wb25lbnQ+O1xuXG4gICAgQE91dHB1dCgpIHRhZ1JlbW92ZTogRXZlbnRFbWl0dGVyPFNjbFRhZ0NvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjbFRhZ0NvbXBvbmVudD4oKTtcblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVUYWdSZW1vdmUoKTtcbiAgICAgICAgdGhpcy50YWdzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFuZGxlVGFnUmVtb3ZlKCkpO1xuICAgIH1cblxuICAgIGhhbmRsZVRhZ1JlbW92ZSgpIHtcbiAgICAgICAgdGhpcy50YWdzLmZvckVhY2godGFnID0+IHtcbiAgICAgICAgICAgIHRhZy5yZW1vdmUucGlwZSgpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRhZ1JlbW92ZS5lbWl0KHRhZykpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { Directive, HostBinding, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ class SclTextDecoration {
4
+ get none() {
5
+ return this.type === 'none';
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTextDecoration, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: SclTextDecoration, isStandalone: true, selector: "[sclTextDecoration]", inputs: { type: "type" }, host: { properties: { "class.scl-text-decoration--none": "this.none" }, classAttribute: "scl-text-decoration" }, ngImport: i0 }); }
9
+ }
10
+ export { SclTextDecoration };
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTextDecoration, decorators: [{
12
+ type: Directive,
13
+ args: [{
14
+ selector: '[sclTextDecoration]',
15
+ standalone: true,
16
+ host: {
17
+ class: 'scl-text-decoration',
18
+ },
19
+ }]
20
+ }], propDecorators: { type: [{
21
+ type: Input
22
+ }], none: [{
23
+ type: HostBinding,
24
+ args: ['class.scl-text-decoration--none']
25
+ }] } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1kZWNvcmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWNrYWdlcy90ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzlELE1BT2EsaUJBQWlCO0lBRzFCLElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7SUFDaEMsQ0FBQzs4R0FOUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7U0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBUDdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUscUJBQXFCO3FCQUMvQjtpQkFDSjs4QkFFWSxJQUFJO3NCQUFaLEtBQUs7Z0JBR0YsSUFBSTtzQkFEUCxXQUFXO3VCQUFDLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5leHBvcnQgdHlwZSBUZXh0RGVjb3JhdGlvbiA9ICdub25lJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbc2NsVGV4dERlY29yYXRpb25dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdzY2wtdGV4dC1kZWNvcmF0aW9uJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTY2xUZXh0RGVjb3JhdGlvbiB7XG4gICAgQElucHV0KCkgdHlwZT86IFRleHREZWNvcmF0aW9uO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zY2wtdGV4dC1kZWNvcmF0aW9uLS1ub25lJylcbiAgICBnZXQgbm9uZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ25vbmUnO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,263 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { CommonModule } from '@angular/common';
3
+ import { Component, Input, ViewChild, forwardRef } from '@angular/core';
4
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ import { NbTabsetModule } from '@nebular/theme';
6
+ import { QuillModule } from 'ngx-quill';
7
+ import Quill from 'quill';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@nebular/theme";
11
+ import * as i3 from "ngx-quill";
12
+ import * as i4 from "@angular/forms";
13
+ const Parchment = Quill.import('parchment');
14
+ const AlignStyle = new Parchment.Attributor.Style('align', 'text-align', {
15
+ scope: Parchment.Scope.BLOCK,
16
+ whitelist: ['left', 'center', 'right', 'justify'],
17
+ });
18
+ const DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', {
19
+ scope: Parchment.Scope.BLOCK,
20
+ whitelist: ['ltr', 'rtl'],
21
+ });
22
+ const IndentStyle = new Parchment.Attributor.Style('indent', 'padding-left', {
23
+ scope: Parchment.Scope.BLOCK,
24
+ whitelist: ['0px', '30px', '60px', '90px', '120px', '150px', '180px', '210px', '240px', '270px'],
25
+ });
26
+ Quill.register(AlignStyle, true);
27
+ Quill.register(DirectionStyle, true);
28
+ Quill.register(IndentStyle, true);
29
+ let id = 1;
30
+ class SclTextEditor {
31
+ set hasImageUpload(value) {
32
+ this.showImgConfig = coerceBooleanProperty(value);
33
+ }
34
+ get hasImageUpload() {
35
+ return this.showImgConfig;
36
+ }
37
+ set toolbarOptions(options) {
38
+ this._toolbarOptions = options;
39
+ }
40
+ get toolbarOptions() {
41
+ return this._toolbarOptions;
42
+ }
43
+ get quillConfig() {
44
+ return {
45
+ toolbar: {
46
+ container: this.hasImageUpload ? this.toolbarOptions : this.toolbarOptions.filter(group => group.length > 1 || group[0] !== 'image'),
47
+ handlers: {
48
+ indent: (value) => {
49
+ this.handleIndent(value);
50
+ },
51
+ },
52
+ },
53
+ clipboard: {
54
+ matchVisual: false, // Prevents visual alignment of pasted content
55
+ },
56
+ };
57
+ }
58
+ constructor() {
59
+ this.showImgConfig = false;
60
+ this.isTabChanged = false;
61
+ this.imagePath = '';
62
+ this.content = '';
63
+ this.htmlContent = '';
64
+ this.id = 'editor-' + id++;
65
+ this.create = true;
66
+ this.saveAndPublishLoader = false;
67
+ this.saveLoader = false;
68
+ this.saveMode = '';
69
+ this.isVisualMode = true;
70
+ this.textEditorDisabled = false;
71
+ this._toolbarOptions = [
72
+ // Headings and structure
73
+ [{ header: [1, 2, 3, 4, 5, 6, false] }],
74
+ // Text formatting (basic)
75
+ ['bold', 'italic', 'underline', 'strike'],
76
+ // Text appearance
77
+ [{ color: [] }, { background: [] }],
78
+ // Lists and indentation (organization)
79
+ [{ list: 'ordered' }, { list: 'bullet' }],
80
+ [{ indent: '-1' }, { indent: '+1' }],
81
+ // Text alignment and direction
82
+ [{ align: [] }, { direction: 'rtl' }],
83
+ // Special text elements
84
+ [{ script: 'sub' }, { script: 'super' }],
85
+ ['blockquote', 'code-block'],
86
+ // Media and links
87
+ //add 'image' and 'video' if needed
88
+ ['link'],
89
+ // Cleaning
90
+ ['clean'],
91
+ ];
92
+ this.onChange = () => { };
93
+ this.htmlText = '';
94
+ this.hasFocus = false;
95
+ this.format = 'html';
96
+ this.onTouched = () => { };
97
+ }
98
+ onEditorCreated(editorInstance) {
99
+ this.quill = editorInstance;
100
+ this.addToolbarTooltips(editorInstance);
101
+ }
102
+ addToolbarTooltips(editorInstance) {
103
+ const toolbarModule = editorInstance.getModule('toolbar');
104
+ if (!toolbarModule || !toolbarModule.container)
105
+ return;
106
+ const toolbarContainer = toolbarModule.container;
107
+ const tooltipMap = {
108
+ bold: 'Bold',
109
+ italic: 'Italic',
110
+ underline: 'Underline',
111
+ strike: 'Strikethrough',
112
+ header: 'Header',
113
+ font: 'Font',
114
+ color: 'Text color',
115
+ background: 'Background color',
116
+ align: 'Align',
117
+ direction: 'Text direction',
118
+ blockquote: 'Blockquote',
119
+ 'code-block': 'Code Block',
120
+ link: 'Link',
121
+ image: 'Image',
122
+ video: 'Video',
123
+ clean: 'Clear formatting',
124
+ };
125
+ const buttons = toolbarContainer.querySelectorAll('button');
126
+ buttons.forEach((btn) => {
127
+ const qlCommand = Array.from(btn.classList).find(cls => cls.startsWith('ql-'));
128
+ if (!qlCommand)
129
+ return;
130
+ const command = qlCommand.replace('ql-', '');
131
+ const tooltip = this.getTooltipForButton(command, btn, tooltipMap);
132
+ if (tooltip && !btn.hasAttribute('title')) {
133
+ btn.setAttribute('title', tooltip);
134
+ }
135
+ });
136
+ const pickerLabels = toolbarContainer.querySelectorAll('.ql-picker-label');
137
+ pickerLabels.forEach(label => {
138
+ if (label.hasAttribute('title'))
139
+ return;
140
+ const parentPicker = label.closest('.ql-picker');
141
+ if (!parentPicker)
142
+ return;
143
+ const commandClass = Array.from(parentPicker.classList).find(cls => cls.startsWith('ql-') && cls !== 'ql-picker');
144
+ if (!commandClass)
145
+ return;
146
+ const command = commandClass.replace('ql-', '');
147
+ const tooltip = tooltipMap[command] || '';
148
+ if (tooltip) {
149
+ label.setAttribute('title', tooltip);
150
+ }
151
+ });
152
+ }
153
+ getTooltipForButton(command, button, tooltipMap) {
154
+ const value = button.getAttribute('value') ?? '';
155
+ switch (command) {
156
+ case 'script':
157
+ if (value === 'sub')
158
+ return 'Subscript';
159
+ if (value === 'super')
160
+ return 'Superscript';
161
+ break;
162
+ case 'list':
163
+ if (value === 'ordered')
164
+ return 'Ordered List';
165
+ if (value === 'bullet')
166
+ return 'Bullet List';
167
+ break;
168
+ case 'indent':
169
+ if (value === '+1')
170
+ return 'Increase Indent';
171
+ if (value === '-1')
172
+ return 'Decrease Indent';
173
+ break;
174
+ }
175
+ return tooltipMap[command] || '';
176
+ }
177
+ handleIndent(value) {
178
+ const range = this.quill.getSelection();
179
+ if (!range)
180
+ return;
181
+ const format = this.quill.getFormat(range);
182
+ const currentIndent = format['indent'] || '0px';
183
+ const currentLevel = parseInt(currentIndent) / 30;
184
+ let newLevel;
185
+ if (value === '+1') {
186
+ newLevel = Math.min(currentLevel + 1, 9);
187
+ }
188
+ else {
189
+ newLevel = Math.max(currentLevel - 1, 0);
190
+ }
191
+ const newIndent = newLevel === 0 ? false : `${newLevel * 30}px`;
192
+ this.quill.format('indent', newIndent);
193
+ }
194
+ registerOnChange(fn) {
195
+ this.onChange = fn;
196
+ }
197
+ registerOnTouched(fn) {
198
+ this.onTouched = fn;
199
+ }
200
+ writeValue(value) {
201
+ this.htmlText = value || '';
202
+ }
203
+ setDisabledState(isDisabled) {
204
+ this.textEditorDisabled = isDisabled;
205
+ }
206
+ tabChanged(event) {
207
+ switch (event.tabId) {
208
+ case 'VISUAL':
209
+ if (!this.isVisualMode) {
210
+ this.isVisualMode = true;
211
+ const htmlString = this.editor.quillEditor.getText().trim();
212
+ this.editor.quillEditor.root.innerHTML = htmlString;
213
+ }
214
+ break;
215
+ case 'TEXT':
216
+ if (this.isVisualMode) {
217
+ this.isVisualMode = false;
218
+ const htmlContent = this.editor.quillEditor.root.innerHTML;
219
+ this.editor.quillEditor.setText(htmlContent);
220
+ }
221
+ break;
222
+ }
223
+ }
224
+ onSelectionChanged(event) {
225
+ if (event.oldRange == null) {
226
+ this.onTouched();
227
+ }
228
+ }
229
+ onContentChanged(event) {
230
+ this.onChange(this.htmlText);
231
+ }
232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTextEditor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: SclTextEditor, isStandalone: true, selector: "scl-text-editor", inputs: { tabLess: "tabLess", placeholder: "placeholder", hasImageUpload: "hasImageUpload", toolbarOptions: "toolbarOptions" }, providers: [
234
+ {
235
+ provide: NG_VALUE_ACCESSOR,
236
+ useExisting: forwardRef(() => SclTextEditor),
237
+ multi: true,
238
+ },
239
+ ], viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], ngImport: i0, template: "<div class=\"scl-text-editor\" [class.scl-text-editor--disabled]=\"textEditorDisabled\">\n <quill-editor\n [(ngModel)]=\"htmlText\"\n [modules]=\"quillConfig\"\n class=\"scl-text-editor__quill\"\n (onSelectionChanged)=\"onSelectionChanged($event)\"\n (onContentChanged)=\"onContentChanged($event)\"\n [format]=\"format\"\n #editor\n (onEditorCreated)=\"onEditorCreated($event)\"\n [placeholder]=\"placeholder\"></quill-editor>\n\n <div class=\"scl-text-editor__tab\" *ngIf=\"!tabLess\">\n <nb-tabset (changeTab)=\"tabChanged($event)\">\n <nb-tab tabTitle=\"Visual\" tabId=\"VISUAL\" [disabled]=\"textEditorDisabled\"> </nb-tab>\n <nb-tab tabTitle=\"Text\" tabId=\"TEXT\" [disabled]=\"textEditorDisabled\"> </nb-tab>\n </nb-tabset>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NbTabsetModule }, { kind: "component", type: i2.NbTabsetComponent, selector: "nb-tabset", inputs: ["fullWidth", "routeParam"], outputs: ["changeTab"] }, { kind: "component", type: i2.NbTabComponent, selector: "nb-tab", inputs: ["tabTitle", "tabId", "badgeDot", "tabIcon", "disabled", "responsive", "route", "active", "lazyLoad", "badgeText", "badgeStatus", "badgePosition"] }, { kind: "ngmodule", type: QuillModule }, { kind: "component", type: i3.QuillEditorComponent, selector: "quill-editor" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
240
+ }
241
+ export { SclTextEditor };
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTextEditor, decorators: [{
243
+ type: Component,
244
+ args: [{ selector: 'scl-text-editor', standalone: true, imports: [CommonModule, NbTabsetModule, QuillModule, FormsModule], providers: [
245
+ {
246
+ provide: NG_VALUE_ACCESSOR,
247
+ useExisting: forwardRef(() => SclTextEditor),
248
+ multi: true,
249
+ },
250
+ ], template: "<div class=\"scl-text-editor\" [class.scl-text-editor--disabled]=\"textEditorDisabled\">\n <quill-editor\n [(ngModel)]=\"htmlText\"\n [modules]=\"quillConfig\"\n class=\"scl-text-editor__quill\"\n (onSelectionChanged)=\"onSelectionChanged($event)\"\n (onContentChanged)=\"onContentChanged($event)\"\n [format]=\"format\"\n #editor\n (onEditorCreated)=\"onEditorCreated($event)\"\n [placeholder]=\"placeholder\"></quill-editor>\n\n <div class=\"scl-text-editor__tab\" *ngIf=\"!tabLess\">\n <nb-tabset (changeTab)=\"tabChanged($event)\">\n <nb-tab tabTitle=\"Visual\" tabId=\"VISUAL\" [disabled]=\"textEditorDisabled\"> </nb-tab>\n <nb-tab tabTitle=\"Text\" tabId=\"TEXT\" [disabled]=\"textEditorDisabled\"> </nb-tab>\n </nb-tabset>\n </div>\n</div>\n" }]
251
+ }], ctorParameters: function () { return []; }, propDecorators: { tabLess: [{
252
+ type: Input
253
+ }], placeholder: [{
254
+ type: Input
255
+ }], editor: [{
256
+ type: ViewChild,
257
+ args: ['editor']
258
+ }], hasImageUpload: [{
259
+ type: Input
260
+ }], toolbarOptions: [{
261
+ type: Input
262
+ }] } });
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGFja2FnZXMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IudHMiLCIuLi8uLi8uLi8uLi9zcmMvcGFja2FnZXMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBd0IsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7O0FBRTFCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFO0lBQ3JFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUs7SUFDNUIsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO0NBQ3BELENBQUMsQ0FBQztBQUVILE1BQU0sY0FBYyxHQUFHLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRTtJQUM1RSxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLO0lB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bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYlRhYnNldE1vZHVsZSB9IGZyb20gJ0BuZWJ1bGFyL3RoZW1lJztcbmltcG9ydCB7IFF1aWxsRWRpdG9yQ29tcG9uZW50LCBRdWlsbE1vZHVsZSB9IGZyb20gJ25neC1xdWlsbCc7XG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xuXG5jb25zdCBQYXJjaG1lbnQgPSBRdWlsbC5pbXBvcnQoJ3BhcmNobWVudCcpO1xuY29uc3QgQWxpZ25TdHlsZSA9IG5ldyBQYXJjaG1lbnQuQXR0cmlidXRvci5TdHlsZSgnYWxpZ24nLCAndGV4dC1hbGlnbicsIHtcbiAgICBzY29wZTogUGFyY2htZW50LlNjb3BlLkJMT0NLLFxuICAgIHdoaXRlbGlzdDogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcsICdqdXN0aWZ5J10sXG59KTtcblxuY29uc3QgRGlyZWN0aW9uU3R5bGUgPSBuZXcgUGFyY2htZW50LkF0dHJpYnV0b3IuU3R5bGUoJ2RpcmVjdGlvbicsICdkaXJlY3Rpb24nLCB7XG4gICAgc2NvcGU6IFBhcmNobWVudC5TY29wZS5CTE9DSyxcbiAgICB3aGl0ZWxpc3Q6IFsnbHRyJywgJ3J0bCddLFxufSk7XG5cbmNvbnN0IEluZGVudFN0eWxlID0gbmV3IFBhcmNobWVudC5BdHRyaWJ1dG9yLlN0eWxlKCdpbmRlbnQnLCAncGFkZGluZy1sZWZ0Jywge1xuICAgIHNjb3BlOiBQYXJjaG1lbnQuU2NvcGUuQkxPQ0ssXG4gICAgd2hpdGVsaXN0OiBbJzBweCcsICczMHB4JywgJzYwcHgnLCAnOTBweCcsICcxMjBweCcsICcxNTBweCcsICcxODBweCcsICcyMTBweCcsICcyNDBweCcsICcyNzBweCddLFxufSk7XG5cblF1aWxsLnJlZ2lzdGVyKEFsaWduU3R5bGUsIHRydWUpO1xuUXVpbGwucmVnaXN0ZXIoRGlyZWN0aW9uU3R5bGUsIHRydWUpO1xuUXVpbGwucmVnaXN0ZXIoSW5kZW50U3R5bGUsIHRydWUpO1xuXG5sZXQgaWQgPSAxO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjbC10ZXh0LWVkaXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOYlRhYnNldE1vZHVsZSwgUXVpbGxNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3IuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2NsVGV4dEVkaXRvciksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTY2xUZXh0RWRpdG9yIHtcbiAgICBASW5wdXQoKSB0YWJMZXNzPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBAVmlld0NoaWxkKCdlZGl0b3InKSBlZGl0b3IhOiBRdWlsbEVkaXRvckNvbXBvbmVudDtcblxuICAgIHNob3dJbWdDb25maWcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGhhc0ltYWdlVXBsb2FkKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zaG93SW1nQ29uZmlnID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGhhc0ltYWdlVXBsb2FkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93SW1nQ29uZmlnO1xuICAgIH1cblxuICAgIGlzVGFiQ2hhbmdlZCA9IGZhbHNlO1xuICAgIHF1aWxsITogUXVpbGw7XG4gICAgaW1hZ2VQYXRoID0gJyc7XG4gICAgY29udGVudDogc3RyaW5nID0gJyc7XG4gICAgcXVpbGxGaWxlOiBhbnk7XG4gICAgbWVRdWlsbFJlZjogYW55O1xuICAgIGNvbnRlbnRUeXBlITogc3RyaW5nO1xuICAgIGh0bWxDb250ZW50OiBzdHJpbmcgPSAnJztcbiAgICBpZCA9ICdlZGl0b3ItJyArIGlkKys7XG4gICAgY3JlYXRlID0gdHJ1ZTtcbiAgICBzYXZlQW5kUHVibGlzaExvYWRlciA9IGZhbHNlO1xuICAgIHNhdmVMb2FkZXIgPSBmYWxzZTtcbiAgICBzYXZlTW9kZSA9ICcnO1xuICAgIGlzVmlzdWFsTW9kZSA9IHRydWU7XG4gICAgdGV4dEVkaXRvckRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF90b29sYmFyT3B0aW9uczogYW55W10gPSBbXG4gICAgICAgIC8vIEhlYWRpbmdzIGFuZCBzdHJ1Y3R1cmVcbiAgICAgICAgW3sgaGVhZGVyOiBbMSwgMiwgMywgNCwgNSwgNiwgZmFsc2VdIH1dLFxuXG4gICAgICAgIC8vIFRleHQgZm9ybWF0dGluZyAoYmFzaWMpXG4gICAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZSddLFxuXG4gICAgICAgIC8vIFRleHQgYXBwZWFyYW5jZVxuICAgICAgICBbeyBjb2xvcjogW10gfSwgeyBiYWNrZ3JvdW5kOiBbXSB9XSxcblxuICAgICAgICAvLyBMaXN0cyBhbmQgaW5kZW50YXRpb24gKG9yZ2FuaXphdGlvbilcbiAgICAgICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXG4gICAgICAgIFt7IGluZGVudDogJy0xJyB9LCB7IGluZGVudDogJysxJyB9XSxcblxuICAgICAgICAvLyBUZXh0IGFsaWdubWVudCBhbmQgZGlyZWN0aW9uXG4gICAgICAgIFt7IGFsaWduOiBbXSB9LCB7IGRpcmVjdGlvbjogJ3J0bCcgfV0sXG5cbiAgICAgICAgLy8gU3BlY2lhbCB0ZXh0IGVsZW1lbnRzXG4gICAgICAgIFt7IHNjcmlwdDogJ3N1YicgfSwgeyBzY3JpcHQ6ICdzdXBlcicgfV0sXG4gICAgICAgIFsnYmxvY2txdW90ZScsICdjb2RlLWJsb2NrJ10sXG5cbiAgICAgICAgLy8gTWVkaWEgYW5kIGxpbmtzXG4gICAgICAgIC8vYWRkICdpbWFnZScgYW5kICd2aWRlbycgaWYgbmVlZGVkXG4gICAgICAgIFsnbGluayddLFxuXG4gICAgICAgIC8vIENsZWFuaW5nXG4gICAgICAgIFsnY2xlYW4nXSxcbiAgICBdO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgdG9vbGJhck9wdGlvbnMob3B0aW9uczogYW55W10pIHtcbiAgICAgICAgdGhpcy5fdG9vbGJhck9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICBnZXQgdG9vbGJhck9wdGlvbnMoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9vbGJhck9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBodG1sVGV4dCA9ICcnO1xuICAgIGhhc0ZvY3VzID0gZmFsc2U7XG4gICAgZm9ybWF0OiBhbnkgPSAnaHRtbCc7XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGdldCBxdWlsbENvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvb2xiYXI6IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMuaGFzSW1hZ2VVcGxvYWQgPyB0aGlzLnRvb2xiYXJPcHRpb25zIDogdGhpcy50b29sYmFyT3B0aW9ucy5maWx0ZXIoZ3JvdXAgPT4gZ3JvdXAubGVuZ3RoID4gMSB8fCBncm91cFswXSAhPT0gJ2ltYWdlJyksXG4gICAgICAgICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVJbmRlbnQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xpcGJvYXJkOiB7XG4gICAgICAgICAgICAgICAgbWF0Y2hWaXN1YWw6IGZhbHNlLCAvLyBQcmV2ZW50cyB2aXN1YWwgYWxpZ25tZW50IG9mIHBhc3RlZCBjb250ZW50XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIG9uRWRpdG9yQ3JlYXRlZChlZGl0b3JJbnN0YW5jZTogUXVpbGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5xdWlsbCA9IGVkaXRvckluc3RhbmNlO1xuICAgICAgICB0aGlzLmFkZFRvb2xiYXJUb29sdGlwcyhlZGl0b3JJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRUb29sYmFyVG9vbHRpcHMoZWRpdG9ySW5zdGFuY2U6IFF1aWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJNb2R1bGUgPSBlZGl0b3JJbnN0YW5jZS5nZXRNb2R1bGUoJ3Rvb2xiYXInKTtcbiAgICAgICAgaWYgKCF0b29sYmFyTW9kdWxlIHx8ICF0b29sYmFyTW9kdWxlLmNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRvb2xiYXJDb250YWluZXIgPSB0b29sYmFyTW9kdWxlLmNvbnRhaW5lciBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgdG9vbHRpcE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgIGJvbGQ6ICdCb2xkJyxcbiAgICAgICAgICAgIGl0YWxpYzogJ0l0YWxpYycsXG4gICAgICAgICAgICB1bmRlcmxpbmU6ICdVbmRlcmxpbmUnLFxuICAgICAgICAgICAgc3RyaWtlOiAnU3RyaWtldGhyb3VnaCcsXG4gICAgICAgICAgICBoZWFkZXI6ICdIZWFkZXInLFxuICAgICAgICAgICAgZm9udDogJ0ZvbnQnLFxuICAgICAgICAgICAgY29sb3I6ICdUZXh0IGNvbG9yJyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICdCYWNrZ3JvdW5kIGNvbG9yJyxcbiAgICAgICAgICAgIGFsaWduOiAnQWxpZ24nLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiAnVGV4dCBkaXJlY3Rpb24nLFxuICAgICAgICAgICAgYmxvY2txdW90ZTogJ0Jsb2NrcXVvdGUnLFxuICAgICAgICAgICAgJ2NvZGUtYmxvY2snOiAnQ29kZSBCbG9jaycsXG4gICAgICAgICAgICBsaW5rOiAnTGluaycsXG4gICAgICAgICAgICBpbWFnZTogJ0ltYWdlJyxcbiAgICAgICAgICAgIHZpZGVvOiAnVmlkZW8nLFxuICAgICAgICAgICAgY2xlYW46ICdDbGVhciBmb3JtYXR0aW5nJyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBidXR0b25zID0gdG9vbGJhckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcbiAgICAgICAgYnV0dG9ucy5mb3JFYWNoKChidG46IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBxbENvbW1hbmQgPSBBcnJheS5mcm9tKGJ0bi5jbGFzc0xpc3QpLmZpbmQoY2xzID0+IGNscy5zdGFydHNXaXRoKCdxbC0nKSk7XG4gICAgICAgICAgICBpZiAoIXFsQ29tbWFuZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBjb21tYW5kID0gcWxDb21tYW5kLnJlcGxhY2UoJ3FsLScsICcnKTtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLmdldFRvb2x0aXBGb3JCdXR0b24oY29tbWFuZCwgYnRuLCB0b29sdGlwTWFwKTtcbiAgICAgICAgICAgIGlmICh0b29sdGlwICYmICFidG4uaGFzQXR0cmlidXRlKCd0aXRsZScpKSB7XG4gICAgICAgICAgICAgICAgYnRuLnNldEF0dHJpYnV0ZSgndGl0bGUnLCB0b29sdGlwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcGlja2VyTGFiZWxzID0gdG9vbGJhckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcucWwtcGlja2VyLWxhYmVsJyk7XG4gICAgICAgIHBpY2tlckxhYmVscy5mb3JFYWNoKGxhYmVsID0+IHtcbiAgICAgICAgICAgIGlmIChsYWJlbC5oYXNBdHRyaWJ1dGUoJ3RpdGxlJykpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFBpY2tlciA9IGxhYmVsLmNsb3Nlc3QoJy5xbC1waWNrZXInKTtcbiAgICAgICAgICAgIGlmICghcGFyZW50UGlja2VyKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmRDbGFzcyA9IEFycmF5LmZyb20ocGFyZW50UGlja2VyLmNsYXNzTGlzdCkuZmluZChjbHMgPT4gY2xzLnN0YXJ0c1dpdGgoJ3FsLScpICYmIGNscyAhPT0gJ3FsLXBpY2tlcicpO1xuICAgICAgICAgICAgaWYgKCFjb21tYW5kQ2xhc3MpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IGNvbW1hbmRDbGFzcy5yZXBsYWNlKCdxbC0nLCAnJyk7XG4gICAgICAgICAgICBjb25zdCB0b29sdGlwID0gdG9vbHRpcE1hcFtjb21tYW5kXSB8fCAnJztcbiAgICAgICAgICAgIGlmICh0b29sdGlwKSB7XG4gICAgICAgICAgICAgICAgbGFiZWwuc2V0QXR0cmlidXRlKCd0aXRsZScsIHRvb2x0aXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRvb2x0aXBGb3JCdXR0b24oY29tbWFuZDogc3RyaW5nLCBidXR0b246IEhUTUxFbGVtZW50LCB0b29sdGlwTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBidXR0b24uZ2V0QXR0cmlidXRlKCd2YWx1ZScpID8/ICcnO1xuICAgICAgICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnc3ViJykgcmV0dXJuICdTdWJzY3JpcHQnO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ3N1cGVyJykgcmV0dXJuICdTdXBlcnNjcmlwdCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsaXN0JzpcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICdvcmRlcmVkJykgcmV0dXJuICdPcmRlcmVkIExpc3QnO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ2J1bGxldCcpIHJldHVybiAnQnVsbGV0IExpc3QnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaW5kZW50JzpcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICcrMScpIHJldHVybiAnSW5jcmVhc2UgSW5kZW50JztcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICctMScpIHJldHVybiAnRGVjcmVhc2UgSW5kZW50JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9vbHRpcE1hcFtjb21tYW5kXSB8fCAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUluZGVudCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCFyYW5nZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KHJhbmdlKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGVudCA9IGZvcm1hdFsnaW5kZW50J10gfHwgJzBweCc7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IHBhcnNlSW50KGN1cnJlbnRJbmRlbnQpIC8gMzA7XG5cbiAgICAgICAgbGV0IG5ld0xldmVsOiBudW1iZXI7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJysxJykge1xuICAgICAgICAgICAgbmV3TGV2ZWwgPSBNYXRoLm1pbihjdXJyZW50TGV2ZWwgKyAxLCA5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0xldmVsID0gTWF0aC5tYXgoY3VycmVudExldmVsIC0gMSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdJbmRlbnQgPSBuZXdMZXZlbCA9PT0gMCA/IGZhbHNlIDogYCR7bmV3TGV2ZWwgKiAzMH1weGA7XG4gICAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCdpbmRlbnQnLCBuZXdJbmRlbnQpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmh0bWxUZXh0ID0gdmFsdWUgfHwgJyc7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dEVkaXRvckRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICB0YWJDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50YWJJZCkge1xuICAgICAgICAgICAgY2FzZSAnVklTVUFMJzpcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWaXN1YWxNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNWaXN1YWxNb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbFN0cmluZyA9IHRoaXMuZWRpdG9yLnF1aWxsRWRpdG9yLmdldFRleHQoKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yLnF1aWxsRWRpdG9yLnJvb3QuaW5uZXJIVE1MID0gaHRtbFN0cmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdURVhUJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1Zpc3VhbE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Zpc3VhbE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbENvbnRlbnQgPSB0aGlzLmVkaXRvci5xdWlsbEVkaXRvci5yb290LmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3IucXVpbGxFZGl0b3Iuc2V0VGV4dChodG1sQ29udGVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3Rpb25DaGFuZ2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Lm9sZFJhbmdlID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRlbnRDaGFuZ2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmh0bWxUZXh0KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2NsLXRleHQtZWRpdG9yXCIgW2NsYXNzLnNjbC10ZXh0LWVkaXRvci0tZGlzYWJsZWRdPVwidGV4dEVkaXRvckRpc2FibGVkXCI+XG4gICAgPHF1aWxsLWVkaXRvclxuICAgICAgICBbKG5nTW9kZWwpXT1cImh0bWxUZXh0XCJcbiAgICAgICAgW21vZHVsZXNdPVwicXVpbGxDb25maWdcIlxuICAgICAgICBjbGFzcz1cInNjbC10ZXh0LWVkaXRvcl9fcXVpbGxcIlxuICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ29udGVudENoYW5nZWQpPVwib25Db250ZW50Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW2Zvcm1hdF09XCJmb3JtYXRcIlxuICAgICAgICAjZWRpdG9yXG4gICAgICAgIChvbkVkaXRvckNyZWF0ZWQpPVwib25FZGl0b3JDcmVhdGVkKCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIj48L3F1aWxsLWVkaXRvcj5cblxuICAgIDxkaXYgY2xhc3M9XCJzY2wtdGV4dC1lZGl0b3JfX3RhYlwiICpuZ0lmPVwiIXRhYkxlc3NcIj5cbiAgICAgICAgPG5iLXRhYnNldCAoY2hhbmdlVGFiKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPG5iLXRhYiB0YWJUaXRsZT1cIlZpc3VhbFwiIHRhYklkPVwiVklTVUFMXCIgW2Rpc2FibGVkXT1cInRleHRFZGl0b3JEaXNhYmxlZFwiPiA8L25iLXRhYj5cbiAgICAgICAgICAgIDxuYi10YWIgdGFiVGl0bGU9XCJUZXh0XCIgdGFiSWQ9XCJURVhUXCIgW2Rpc2FibGVkXT1cInRleHRFZGl0b3JEaXNhYmxlZFwiPiA8L25iLXRhYj5cbiAgICAgICAgPC9uYi10YWJzZXQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { NbThemeModule } from '@nebular/theme';
2
+ export function themeProvider(themeName = 'default') {
3
+ return [
4
+ NbThemeModule.forRoot({
5
+ name: themeName,
6
+ }).providers,
7
+ ];
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFja2FnZXMvdGhlbWUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE1BQU0sVUFBVSxhQUFhLENBQUMsWUFBb0IsU0FBUztJQUN2RCxPQUFPO1FBQ0gsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUNsQixJQUFJLEVBQUUsU0FBUztTQUNsQixDQUFDLENBQUMsU0FBUztLQUNmLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmJUaGVtZU1vZHVsZSB9IGZyb20gJ0BuZWJ1bGFyL3RoZW1lJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW1lUHJvdmlkZXIodGhlbWVOYW1lOiBzdHJpbmcgPSAnZGVmYXVsdCcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBOYlRoZW1lTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICAgICAgbmFtZTogdGhlbWVOYW1lLFxuICAgICAgICB9KS5wcm92aWRlcnMsXG4gICAgXTtcbn1cbiJdfQ==
@@ -0,0 +1,66 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { NbCardModule } from '@nebular/theme';
4
+ import * as moment from 'moment';
5
+ import { SclBadge } from '../badge/badge';
6
+ import { SclTruncate } from '../truncate/truncate.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@nebular/theme";
10
+ class SclTimelineComponent {
11
+ get data() {
12
+ return this._data;
13
+ }
14
+ set data(value) {
15
+ this._data = value;
16
+ this.groupedData = this.groupByMonth(this._data);
17
+ }
18
+ constructor() {
19
+ this.onClick = new EventEmitter();
20
+ this._data = [];
21
+ this.groupedData = [];
22
+ }
23
+ onSelect(value) {
24
+ if (value.active) {
25
+ return;
26
+ }
27
+ this.data.forEach(item => {
28
+ item.active = item === value;
29
+ });
30
+ this.onClick.emit(value);
31
+ }
32
+ groupByMonth(items) {
33
+ const groupedData = {};
34
+ items?.forEach(item => {
35
+ const formattedDate = moment(item.description).format('YYYY-MM');
36
+ if (!groupedData[formattedDate]) {
37
+ groupedData[formattedDate] = [];
38
+ }
39
+ groupedData[formattedDate].push(item);
40
+ });
41
+ return Object.keys(groupedData).map(date => ({
42
+ date,
43
+ remainingData: groupedData[date],
44
+ }));
45
+ }
46
+ getMetadata(item) {
47
+ const ignore = ['label', 'description', 'active', 'id'];
48
+ return Object.keys(item)
49
+ .filter(key => !ignore.includes(key))
50
+ .map(key => item[key]);
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: SclTimelineComponent, isStandalone: true, selector: "scl-timeline", inputs: { data: "data" }, outputs: { onClick: "onClick" }, host: { classAttribute: "scl-timeline" }, ngImport: i0, template: "<div class=\"scl-timeline__aside\">\n <nb-card class=\"scl-timeline__card\">\n <nb-card-body class=\"scl-timeline__card-body\">\n <section class=\"scl-timeline__wrapper\" *ngFor=\"let group of groupedData\">\n <h3 class=\"scl-timeline__title\">{{ group.date | date: 'MMM, y' }}</h3>\n\n <div class=\"scl-timeline-item\" *ngFor=\"let item of group.remainingData; let i = index\">\n <div class=\"scl-timeline-item__bullet-wrapper\">\n <span class=\"scl-timeline-item__bullet\" [class.active]=\"item?.active\"></span>\n <div class=\"scl-timeline-item__line\" *ngIf=\"i < group.remainingData.length - 1\"></div>\n </div>\n <button class=\"scl-timeline-item__card\" (click)=\"onSelect(item)\" [class.active]=\"item?.active\">\n <div class=\"scl-timeline-item__content\">\n <span class=\"scl-timeline-item__label\" sclTruncate=\"1\">{{ item?.label }}</span>\n <scl-badge *ngIf=\"item === data[0]\" status=\"success\"> CURRENT </scl-badge>\n </div>\n <span class=\"scl-timeline-item__info\">{{ item?.description | date: \"MMM d 'at' hh:mm a\" }}</span>\n <ng-container *ngFor=\"let value of getMetadata(item)\">\n <span class=\"scl-timeline-item__info\">{{ value }}</span>\n </ng-container>\n </button>\n </div>\n </section>\n </nb-card-body>\n </nb-card>\n</div>\n\n<div class=\"scl-timeline__content\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "directive", type: SclBadge, selector: "scl-badge", inputs: ["status"] }, { kind: "directive", type: SclTruncate, selector: "[sclTruncate]", inputs: ["sclTruncate"] }, { kind: "ngmodule", type: NbCardModule }, { kind: "component", type: i2.NbCardComponent, selector: "nb-card", inputs: ["size", "status", "accent"] }, { kind: "component", type: i2.NbCardBodyComponent, selector: "nb-card-body" }] }); }
54
+ }
55
+ export { SclTimelineComponent };
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SclTimelineComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'scl-timeline', standalone: true, imports: [CommonModule, SclBadge, SclTruncate, NbCardModule], host: {
59
+ class: 'scl-timeline',
60
+ }, template: "<div class=\"scl-timeline__aside\">\n <nb-card class=\"scl-timeline__card\">\n <nb-card-body class=\"scl-timeline__card-body\">\n <section class=\"scl-timeline__wrapper\" *ngFor=\"let group of groupedData\">\n <h3 class=\"scl-timeline__title\">{{ group.date | date: 'MMM, y' }}</h3>\n\n <div class=\"scl-timeline-item\" *ngFor=\"let item of group.remainingData; let i = index\">\n <div class=\"scl-timeline-item__bullet-wrapper\">\n <span class=\"scl-timeline-item__bullet\" [class.active]=\"item?.active\"></span>\n <div class=\"scl-timeline-item__line\" *ngIf=\"i < group.remainingData.length - 1\"></div>\n </div>\n <button class=\"scl-timeline-item__card\" (click)=\"onSelect(item)\" [class.active]=\"item?.active\">\n <div class=\"scl-timeline-item__content\">\n <span class=\"scl-timeline-item__label\" sclTruncate=\"1\">{{ item?.label }}</span>\n <scl-badge *ngIf=\"item === data[0]\" status=\"success\"> CURRENT </scl-badge>\n </div>\n <span class=\"scl-timeline-item__info\">{{ item?.description | date: \"MMM d 'at' hh:mm a\" }}</span>\n <ng-container *ngFor=\"let value of getMetadata(item)\">\n <span class=\"scl-timeline-item__info\">{{ value }}</span>\n </ng-container>\n </button>\n </div>\n </section>\n </nb-card-body>\n </nb-card>\n</div>\n\n<div class=\"scl-timeline__content\">\n <ng-content></ng-content>\n</div>\n" }]
61
+ }], ctorParameters: function () { return []; }, propDecorators: { onClick: [{
62
+ type: Output
63
+ }], data: [{
64
+ type: Input
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BhY2thZ2VzL3RpbWVsaW5lL3RpbWVsaW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wYWNrYWdlcy90aW1lbGluZS90aW1lbGluZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVU3RCxNQVNhLG9CQUFvQjtJQUs3QixJQUFhLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLEtBQXdCO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUlEO1FBZlUsWUFBTyxHQUFrQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlELFVBQUssR0FBc0IsRUFBRSxDQUFDO1FBV3RDLGdCQUFXLEdBQVUsRUFBRSxDQUFDO0lBRVQsQ0FBQztJQUVoQixRQUFRLENBQUMsS0FBc0I7UUFDM0IsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2QsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssS0FBSyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFZO1FBQ3JCLE1BQU0sV0FBVyxHQUE4QixFQUFFLENBQUM7UUFDbEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUM3QixXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ25DO1lBQ0QsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLElBQUk7WUFDSixhQUFhLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQztTQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBcUI7UUFDN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQWpEUSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw2S0N4QmpDLGl0REE4QkEsMkNEWGMsWUFBWSxtVEFBRSxRQUFRLDBFQUFFLFdBQVcsa0ZBQUUsWUFBWTs7U0FLbEQsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0ksY0FBYyxjQUVaLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxRQUN0RDt3QkFDRixLQUFLLEVBQUUsY0FBYztxQkFDeEI7MEVBR1MsT0FBTztzQkFBaEIsTUFBTTtnQkFJTSxJQUFJO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5iQ2FyZE1vZHVsZSB9IGZyb20gJ0BuZWJ1bGFyL3RoZW1lJztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgU2NsQmFkZ2UgfSBmcm9tICcuLi9iYWRnZS9iYWRnZSc7XG5pbXBvcnQgeyBTY2xUcnVuY2F0ZSB9IGZyb20gJy4uL3RydW5jYXRlL3RydW5jYXRlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NsVGltZWxpbmVJdGVtIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgYWN0aXZlOiBib29sZWFuO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjbC10aW1lbGluZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNjbEJhZGdlLCBTY2xUcnVuY2F0ZSwgTmJDYXJkTW9kdWxlXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnc2NsLXRpbWVsaW5lJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTY2xUaW1lbGluZUNvbXBvbmVudCB7XG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxTY2xUaW1lbGluZUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfZGF0YTogU2NsVGltZWxpbmVJdGVtW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGdldCBkYXRhKCk6IFNjbFRpbWVsaW5lSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuXG4gICAgc2V0IGRhdGEodmFsdWU6IFNjbFRpbWVsaW5lSXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMuZ3JvdXBCeU1vbnRoKHRoaXMuX2RhdGEpO1xuICAgIH1cblxuICAgIGdyb3VwZWREYXRhOiBhbnlbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgb25TZWxlY3QodmFsdWU6IFNjbFRpbWVsaW5lSXRlbSkge1xuICAgICAgICBpZiAodmFsdWUuYWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmFjdGl2ZSA9IGl0ZW0gPT09IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIGdyb3VwQnlNb250aChpdGVtczogYW55W10pIHtcbiAgICAgICAgY29uc3QgZ3JvdXBlZERhdGE6IHsgW2RhdGU6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcbiAgICAgICAgaXRlbXM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gbW9tZW50KGl0ZW0uZGVzY3JpcHRpb24pLmZvcm1hdCgnWVlZWS1NTScpO1xuICAgICAgICAgICAgaWYgKCFncm91cGVkRGF0YVtmb3JtYXR0ZWREYXRlXSkge1xuICAgICAgICAgICAgICAgIGdyb3VwZWREYXRhW2Zvcm1hdHRlZERhdGVdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cGVkRGF0YVtmb3JtYXR0ZWREYXRlXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JvdXBlZERhdGEpLm1hcChkYXRlID0+ICh7XG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgcmVtYWluaW5nRGF0YTogZ3JvdXBlZERhdGFbZGF0ZV0sXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBnZXRNZXRhZGF0YShpdGVtOiBTY2xUaW1lbGluZUl0ZW0pOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZSA9IFsnbGFiZWwnLCAnZGVzY3JpcHRpb24nLCAnYWN0aXZlJywgJ2lkJ107XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhpdGVtKVxuICAgICAgICAgICAgLmZpbHRlcihrZXkgPT4gIWlnbm9yZS5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAgICAgLm1hcChrZXkgPT4gaXRlbVtrZXldKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2NsLXRpbWVsaW5lX19hc2lkZVwiPlxuICAgIDxuYi1jYXJkIGNsYXNzPVwic2NsLXRpbWVsaW5lX19jYXJkXCI+XG4gICAgICAgIDxuYi1jYXJkLWJvZHkgY2xhc3M9XCJzY2wtdGltZWxpbmVfX2NhcmQtYm9keVwiPlxuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzY2wtdGltZWxpbmVfX3dyYXBwZXJcIiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBlZERhdGFcIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJzY2wtdGltZWxpbmVfX3RpdGxlXCI+e3sgZ3JvdXAuZGF0ZSB8IGRhdGU6ICdNTU0sIHknIH19PC9oMz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY2wtdGltZWxpbmUtaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwLnJlbWFpbmluZ0RhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjbC10aW1lbGluZS1pdGVtX19idWxsZXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzY2wtdGltZWxpbmUtaXRlbV9fYnVsbGV0XCIgW2NsYXNzLmFjdGl2ZV09XCJpdGVtPy5hY3RpdmVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NsLXRpbWVsaW5lLWl0ZW1fX2xpbmVcIiAqbmdJZj1cImkgPCBncm91cC5yZW1haW5pbmdEYXRhLmxlbmd0aCAtIDFcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzY2wtdGltZWxpbmUtaXRlbV9fY2FyZFwiIChjbGljayk9XCJvblNlbGVjdChpdGVtKVwiIFtjbGFzcy5hY3RpdmVdPVwiaXRlbT8uYWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2NsLXRpbWVsaW5lLWl0ZW1fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjbC10aW1lbGluZS1pdGVtX19sYWJlbFwiIHNjbFRydW5jYXRlPVwiMVwiPnt7IGl0ZW0/LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzY2wtYmFkZ2UgKm5nSWY9XCJpdGVtID09PSBkYXRhWzBdXCIgc3RhdHVzPVwic3VjY2Vzc1wiPiBDVVJSRU5UIDwvc2NsLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjbC10aW1lbGluZS1pdGVtX19pbmZvXCI+e3sgaXRlbT8uZGVzY3JpcHRpb24gfCBkYXRlOiBcIk1NTSBkICdhdCcgaGg6bW0gYVwiIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZ2V0TWV0YWRhdGEoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjbC10aW1lbGluZS1pdGVtX19pbmZvXCI+e3sgdmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvbmItY2FyZC1ib2R5PlxuICAgIDwvbmItY2FyZD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2NsLXRpbWVsaW5lX19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=