barsa-sap-ui 2.2.1 → 2.2.3

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 (242) hide show
  1. package/esm2022/barsa-sap-ui.mjs +5 -0
  2. package/esm2022/lib/apply-conditional-formmatings.directive.mjs +90 -0
  3. package/esm2022/lib/avatar-size.pipe.mjs +41 -0
  4. package/esm2022/lib/barsa-answer-card/barsa-answer-card.component.mjs +41 -0
  5. package/esm2022/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +145 -0
  6. package/esm2022/lib/barsa-bar-download-file/barsa-bar-download-file.component.mjs +23 -0
  7. package/esm2022/lib/barsa-bar-panel/barsa-bar-panel.component.mjs +23 -0
  8. package/esm2022/lib/barsa-base-panel/barsa-base-layout-panel.component.mjs +29 -0
  9. package/esm2022/lib/barsa-breadcrumbs/barsa-breadcrumbs.component.mjs +24 -0
  10. package/esm2022/lib/barsa-card-layout-panel/barsa-card-layout-panel.component.mjs +24 -0
  11. package/esm2022/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +31 -0
  12. package/esm2022/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +41 -0
  13. package/esm2022/lib/barsa-cartable-template/barsa-cartable-template.component.mjs +24 -0
  14. package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +242 -0
  15. package/esm2022/lib/barsa-chat/chat.model.mjs +8 -0
  16. package/esm2022/lib/barsa-chat-content/barsa-chat-content.component.mjs +13 -0
  17. package/esm2022/lib/barsa-chat-content-toolbar/barsa-chat-content-toolbar.component.mjs +22 -0
  18. package/esm2022/lib/barsa-chat-list/barsa-chat-list.component.mjs +66 -0
  19. package/esm2022/lib/barsa-chat-message/barsa-chat-message.component.mjs +78 -0
  20. package/esm2022/lib/barsa-chat-thread/barsa-chat-thread.component.mjs +22 -0
  21. package/esm2022/lib/barsa-chat-threads-list/barsa-chat-threads-list.component.mjs +13 -0
  22. package/esm2022/lib/barsa-chat-threads-list-toolbar/barsa-chat-threads-list-toolbar.component.mjs +15 -0
  23. package/esm2022/lib/barsa-chip/barsa-chip.component.mjs +72 -0
  24. package/esm2022/lib/barsa-column-indicator/barsa-column-indicator.component.mjs +23 -0
  25. package/esm2022/lib/barsa-column-rownumber/barsa-column-rownumber.component.mjs +14 -0
  26. package/esm2022/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.mjs +14 -0
  27. package/esm2022/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.mjs +26 -0
  28. package/esm2022/lib/barsa-date-time-picker/barsa-date-time-picker.component.mjs +71 -0
  29. package/esm2022/lib/barsa-dynamic-field/barsa-dynamic-field.component.mjs +40 -0
  30. package/esm2022/lib/barsa-enum-menu-button/barsa-enum-menu-button.component.mjs +61 -0
  31. package/esm2022/lib/barsa-field-key-value/barsa-field-key-value.component.mjs +45 -0
  32. package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +58 -0
  33. package/esm2022/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.mjs +27 -0
  34. package/esm2022/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +94 -0
  35. package/esm2022/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +22 -0
  36. package/esm2022/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.mjs +37 -0
  37. package/esm2022/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +41 -0
  38. package/esm2022/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +29 -0
  39. package/esm2022/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.mjs +23 -0
  40. package/esm2022/lib/barsa-modal/barsa-modal.component.mjs +43 -0
  41. package/esm2022/lib/barsa-monaco-editor/barsa-monaco-editor.component.mjs +83 -0
  42. package/esm2022/lib/barsa-network-offline/barsa-network-offline.component.mjs +57 -0
  43. package/esm2022/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +159 -0
  44. package/esm2022/lib/barsa-question-answer-comments-section/barsa-question-answer-comments-section.component.mjs +17 -0
  45. package/esm2022/lib/barsa-question-answer-content-actions-section/barsa-question-answer-content-actions-section.component.mjs +30 -0
  46. package/esm2022/lib/barsa-question-answer-creator-time-section/barsa-question-answer-creator-time-section.component.mjs +14 -0
  47. package/esm2022/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +34 -0
  48. package/esm2022/lib/barsa-question-answer-form-add-comment/barsa-question-answer-form-add-comment.component.mjs +46 -0
  49. package/esm2022/lib/barsa-question-answer-vote-section/barsa-question-answer-vote-section.component.mjs +79 -0
  50. package/esm2022/lib/barsa-question-post/barsa-question-post.component.mjs +30 -0
  51. package/esm2022/lib/barsa-report-card-flex-view/barsa-report-card-flex-view.component.mjs +31 -0
  52. package/esm2022/lib/barsa-report-checkbox-switch-button/barsa-report-checkbox-switch-button.component.mjs +28 -0
  53. package/esm2022/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +102 -0
  54. package/esm2022/lib/barsa-row-inline-actionlist/barsa-row-inline-actionlist.component.mjs +26 -0
  55. package/esm2022/lib/barsa-sap-ui-routing.module.mjs +18 -0
  56. package/esm2022/lib/barsa-sap-ui.module.mjs +377 -0
  57. package/esm2022/lib/barsa-search-form/barsa-search-form.component.mjs +29 -0
  58. package/esm2022/lib/barsa-simple-form/barsa-simple-form.component.mjs +170 -0
  59. package/esm2022/lib/barsa-tab-route-manager/barsa-tab-route-manager.component.mjs +18 -0
  60. package/esm2022/lib/barsa-table-column/barsa-table-column.component.mjs +29 -0
  61. package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +222 -0
  62. package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +87 -0
  63. package/esm2022/lib/barsa-tag-categories/barsa-tag-categories.component.mjs +60 -0
  64. package/esm2022/lib/barsa-tag-chip/barsa-tag-chip.component.mjs +26 -0
  65. package/esm2022/lib/barsa-tags-category-row/barsa-tags-category-row.component.mjs +23 -0
  66. package/esm2022/lib/barsa-text-ellipsis/barsa-text-ellipsis.component.mjs +37 -0
  67. package/esm2022/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +418 -0
  68. package/esm2022/lib/barsa-toolbaritem-search/barsa-toolbaritem-search.component.mjs +36 -0
  69. package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +153 -0
  70. package/esm2022/lib/barsa-tree-item/node-has-one-depth-level.pipe.mjs +20 -0
  71. package/esm2022/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +216 -0
  72. package/esm2022/lib/blob-viewer/blob-viewer.component.mjs +74 -0
  73. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +50 -0
  74. package/esm2022/lib/captcha-field/captcha-field.component.mjs +28 -0
  75. package/esm2022/lib/card-item/card-item.component.mjs +74 -0
  76. package/esm2022/lib/card-view-content/card-view-content.component.mjs +46 -0
  77. package/esm2022/lib/col-renderer.directive.mjs +47 -0
  78. package/esm2022/lib/column-matrix-renderer/column-matrix-renderer.component.mjs +56 -0
  79. package/esm2022/lib/column-matrix-renderer/matrix-value.pipe.mjs +61 -0
  80. package/esm2022/lib/column-renderer/column-renderer.component.mjs +97 -0
  81. package/esm2022/lib/constants.mjs +450 -0
  82. package/esm2022/lib/custom-date-time/custom-date-time.component.mjs +41 -0
  83. package/esm2022/lib/device-info-field-base.mjs +24 -0
  84. package/esm2022/lib/dialog-handler.directive.mjs +29 -0
  85. package/esm2022/lib/download-files.directive.mjs +34 -0
  86. package/esm2022/lib/dynamic-page-size.pipe.mjs +27 -0
  87. package/esm2022/lib/file-in-dialog/file-in-dialog.component.mjs +44 -0
  88. package/esm2022/lib/file-viewer/file-viewer.component.mjs +47 -0
  89. package/esm2022/lib/file-viewer-content/file-viewer-content.component.mjs +71 -0
  90. package/esm2022/lib/file-viewer-popover/file-viewer-popover.component.mjs +37 -0
  91. package/esm2022/lib/form-dialog/form-dialog.component.mjs +171 -0
  92. package/esm2022/lib/form-dialog-less/form-dialog-less.component.mjs +50 -0
  93. package/esm2022/lib/form-toolbar/form-toolbar.component.mjs +62 -0
  94. package/esm2022/lib/form-toolbar-button/form-toolbar-button.component.mjs +45 -0
  95. package/esm2022/lib/form-wizard/form-wizard.component.mjs +21 -0
  96. package/esm2022/lib/fullscreen-dialog.directive.mjs +60 -0
  97. package/esm2022/lib/fullscreen-files.directive.mjs +43 -0
  98. package/esm2022/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +217 -0
  99. package/esm2022/lib/gantt-dhtml-chart-view/gantt-dhtml-chart-view.component.mjs +215 -0
  100. package/esm2022/lib/global-search/global-search.component.mjs +27 -0
  101. package/esm2022/lib/global-search-module/global-search-module.component.mjs +29 -0
  102. package/esm2022/lib/global-search-panel/global-search-panel.component.mjs +25 -0
  103. package/esm2022/lib/header-avatar/header-avatar.component.mjs +18 -0
  104. package/esm2022/lib/htree-create-new/htree-create-new.component.mjs +48 -0
  105. package/esm2022/lib/hyperlink/hyperlink.component.mjs +23 -0
  106. package/esm2022/lib/index.mjs +549 -0
  107. package/esm2022/lib/inline-save-and-cancel/inline-save-and-cancel.component.mjs +32 -0
  108. package/esm2022/lib/layout-actions/layout-actions.component.mjs +70 -0
  109. package/esm2022/lib/layout-control/layout-control.component.mjs +302 -0
  110. package/esm2022/lib/layout-wizard/layout-wizard.component.mjs +180 -0
  111. package/esm2022/lib/list-item/list-item.component.mjs +34 -0
  112. package/esm2022/lib/ly-empty-space/ly-empty-space.component.mjs +42 -0
  113. package/esm2022/lib/ly-horizontal-layout/ly-horizontal-layout.component.mjs +82 -0
  114. package/esm2022/lib/ly-label/ly-label.component.mjs +37 -0
  115. package/esm2022/lib/ly-layout-container/ly-layout-container.component.mjs +83 -0
  116. package/esm2022/lib/ly-layout-container-of-root/ly-layout-container-of-root.component.mjs +17 -0
  117. package/esm2022/lib/ly-layout-field-label/ly-layout-field-label.component.mjs +24 -0
  118. package/esm2022/lib/ly-layout-panel/ly-layout-panel.component.mjs +83 -0
  119. package/esm2022/lib/ly-line/ly-line.component.mjs +56 -0
  120. package/esm2022/lib/ly-simple-label/ly-simple-label.component.mjs +22 -0
  121. package/esm2022/lib/ly-tab-container/ly-tab-container.component.mjs +44 -0
  122. package/esm2022/lib/ly-tab-page/ly-tab-page.component.mjs +44 -0
  123. package/esm2022/lib/ly-vertical-layout/ly-vertical-layout.component.mjs +51 -0
  124. package/esm2022/lib/manage-filters-report/manage-filters-report.component.mjs +43 -0
  125. package/esm2022/lib/mask/mask.component.mjs +22 -0
  126. package/esm2022/lib/message-strip/message-strip.component.mjs +28 -0
  127. package/esm2022/lib/models/grid-data-provider.mjs +114 -0
  128. package/esm2022/lib/models/grid-view.mjs +2 -0
  129. package/esm2022/lib/models/index.mjs +2 -0
  130. package/esm2022/lib/no-data/no-data.component.mjs +31 -0
  131. package/esm2022/lib/notification-item/notification-item.component.mjs +57 -0
  132. package/esm2022/lib/notification-item-actions/notification-item-actions.component.mjs +79 -0
  133. package/esm2022/lib/notification-popup.service.mjs +92 -0
  134. package/esm2022/lib/object-status-icon.pipe.mjs +27 -0
  135. package/esm2022/lib/progress-indicator/progress-indicator.component.mjs +18 -0
  136. package/esm2022/lib/report-navigator/report-navigator.component.mjs +68 -0
  137. package/esm2022/lib/report-new-top-form/report-new-top-form.component.mjs +60 -0
  138. package/esm2022/lib/report-search-fields-hidden-settings/report-search-fields-hidden-settings.component.mjs +35 -0
  139. package/esm2022/lib/report-search-fields-manage/report-search-fields-manage.component.mjs +97 -0
  140. package/esm2022/lib/report-search-panel-save/report-search-panel-save.component.mjs +88 -0
  141. package/esm2022/lib/report-tree-base.mjs +387 -0
  142. package/esm2022/lib/report-view-renderer.directive.mjs +392 -0
  143. package/esm2022/lib/responsive-toolbar/responsive-toolbar.component.mjs +50 -0
  144. package/esm2022/lib/responsive-toolbar-renderer/responsive-toolbar-renderer.component.mjs +84 -0
  145. package/esm2022/lib/rich-text-static/rich-text-static.component.mjs +72 -0
  146. package/esm2022/lib/sap-font-class.pipe.mjs +30 -0
  147. package/esm2022/lib/sap-font.pipe.mjs +30 -0
  148. package/esm2022/lib/sap-size.pipe.mjs +28 -0
  149. package/esm2022/lib/sap-ui-report-base.component.mjs +809 -0
  150. package/esm2022/lib/search-panel/search-panel.component.mjs +63 -0
  151. package/esm2022/lib/static-text/static-text.component.mjs +15 -0
  152. package/esm2022/lib/table-th.directive.mjs +87 -0
  153. package/esm2022/lib/title/title.component.mjs +15 -0
  154. package/esm2022/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +34 -0
  155. package/esm2022/lib/ui-bpmn-viewer/ui-bpmn-viewer.component.mjs +33 -0
  156. package/esm2022/lib/ui-button/ui-button.component.mjs +32 -0
  157. package/esm2022/lib/ui-calendar/ui-calendar.component.mjs +53 -0
  158. package/esm2022/lib/ui-card-view/ui-card-view.component.mjs +58 -0
  159. package/esm2022/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs +42 -0
  160. package/esm2022/lib/ui-check-box/ui-check-box.component.mjs +39 -0
  161. package/esm2022/lib/ui-color-ui/ui-color-ui.component.mjs +50 -0
  162. package/esm2022/lib/ui-container-with-button/ui-container-with-button.component.mjs +38 -0
  163. package/esm2022/lib/ui-date-range-ex/ui-date-range-ex.component.mjs +191 -0
  164. package/esm2022/lib/ui-date-time/ui-date-time.component.mjs +150 -0
  165. package/esm2022/lib/ui-editable-grid/ui-editable-grid.component.mjs +108 -0
  166. package/esm2022/lib/ui-exception-form/ui-exception-form.component.mjs +53 -0
  167. package/esm2022/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +124 -0
  168. package/esm2022/lib/ui-form-panel/ui-form-panel.component.mjs +103 -0
  169. package/esm2022/lib/ui-gantt-chart/ui-gantt-chart.component.mjs +32 -0
  170. package/esm2022/lib/ui-graph/ui-graph.component.mjs +17 -0
  171. package/esm2022/lib/ui-grid/ui-grid.component.mjs +25 -0
  172. package/esm2022/lib/ui-grid-columns/ui-grid-columns.component.mjs +43 -0
  173. package/esm2022/lib/ui-grid-filter-item/ui-grid-filter-item.component.mjs +66 -0
  174. package/esm2022/lib/ui-grid-filter-settings/ui-grid-filter-settings.component.mjs +75 -0
  175. package/esm2022/lib/ui-grid-sort-item/ui-grid-sort-item.component.mjs +58 -0
  176. package/esm2022/lib/ui-grid-sort-setting/ui-grid-sort-setting.component.mjs +123 -0
  177. package/esm2022/lib/ui-html-viewer/ui-html-viewer.component.mjs +16 -0
  178. package/esm2022/lib/ui-info-bar-panel/ui-info-bar-panel.component.mjs +11 -0
  179. package/esm2022/lib/ui-label/ui-label.component.mjs +12 -0
  180. package/esm2022/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +379 -0
  181. package/esm2022/lib/ui-list-view/ui-list-view.component.mjs +84 -0
  182. package/esm2022/lib/ui-map/ui-map.component.mjs +68 -0
  183. package/esm2022/lib/ui-matrix-view/ui-matrix-view.component.mjs +124 -0
  184. package/esm2022/lib/ui-mo-info-combo-viewer/ui-mo-info-combo-viewer.component.mjs +19 -0
  185. package/esm2022/lib/ui-mo-info-general-object-ui/ui-mo-info-general-object-ui.component.mjs +14 -0
  186. package/esm2022/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.mjs +55 -0
  187. package/esm2022/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +429 -0
  188. package/esm2022/lib/ui-monaco-editor/ui-monaco-editor.component.mjs +28 -0
  189. package/esm2022/lib/ui-multi-select-card/ui-multi-select-card.component.mjs +37 -0
  190. package/esm2022/lib/ui-multi-select-checkbox/ui-multi-select-checkbox.component.mjs +59 -0
  191. package/esm2022/lib/ui-multi-select-combo/ui-multi-select-combo.component.mjs +93 -0
  192. package/esm2022/lib/ui-multi-select-radio/ui-multi-select-radio.component.mjs +36 -0
  193. package/esm2022/lib/ui-multi-select-slider/ui-multi-select-slider.component.mjs +56 -0
  194. package/esm2022/lib/ui-multi-select-smile/ui-multi-select-smile.component.mjs +28 -0
  195. package/esm2022/lib/ui-notification-view/ui-notification-view.component.mjs +47 -0
  196. package/esm2022/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.mjs +33 -0
  197. package/esm2022/lib/ui-num-int-slider/ui-num-int-slider.component.mjs +27 -0
  198. package/esm2022/lib/ui-num-int-ui/ui-num-int-ui.component.mjs +21 -0
  199. package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +268 -0
  200. package/esm2022/lib/ui-picture-file/ui-picture-file.component.mjs +101 -0
  201. package/esm2022/lib/ui-pictures-info/ui-pictures-info.component.mjs +261 -0
  202. package/esm2022/lib/ui-radio-group/ui-radio-group.component.mjs +48 -0
  203. package/esm2022/lib/ui-read-only-field/ui-read-only-field.component.mjs +36 -0
  204. package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +46 -0
  205. package/esm2022/lib/ui-search-command-info-ui/ui-search-command-info-ui.component.mjs +24 -0
  206. package/esm2022/lib/ui-simple-combo/ui-simple-combo.component.mjs +55 -0
  207. package/esm2022/lib/ui-single-picture/ui-single-picture.component.mjs +36 -0
  208. package/esm2022/lib/ui-switch-button/ui-switch-button.component.mjs +20 -0
  209. package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +296 -0
  210. package/esm2022/lib/ui-text-area/ui-text-area.component.mjs +49 -0
  211. package/esm2022/lib/ui-text-field/ui-text-field.component.mjs +52 -0
  212. package/esm2022/lib/ui-text-field-auto-complete/ui-text-field-auto-complete.component.mjs +48 -0
  213. package/esm2022/lib/ui-time-span/ui-time-span.component.mjs +24 -0
  214. package/esm2022/lib/ui-tinymce/ui-tinymce.component.mjs +53 -0
  215. package/esm2022/lib/ui-tree/ui-tree.component.mjs +114 -0
  216. package/esm2022/lib/ui-tree-view/ui-tree-view.component.mjs +100 -0
  217. package/esm2022/lib/ui-ulv-form-multi-select-ui/ui-ulv-form-multi-select-ui.component.mjs +23 -0
  218. package/esm2022/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +310 -0
  219. package/esm2022/lib/ui-workflow-panel-ui/ui-workflow-panel-ui.component.mjs +25 -0
  220. package/esm2022/lib/ul-loading-mask-ui/ul-loading-mask-ui.component.mjs +93 -0
  221. package/esm2022/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.mjs +119 -0
  222. package/esm2022/lib/ul-notify-popup/ul-notify-popup.component.mjs +32 -0
  223. package/esm2022/lib/ul-toast-adapter/ul-toast-adapter.component.mjs +48 -0
  224. package/esm2022/lib/ulv-column-settings/ulv-column-settings.component.mjs +53 -0
  225. package/esm2022/lib/ulv-context-menu/ulv-context-menu.component.mjs +116 -0
  226. package/esm2022/lib/ulv-filter-settings/ulv-filter-settings.component.mjs +43 -0
  227. package/esm2022/lib/ulv-form-multi-select/ulv-form-multi-select.component.mjs +196 -0
  228. package/esm2022/lib/ulv-groupby-settings/ulv-groupby-settings.component.mjs +44 -0
  229. package/esm2022/lib/ulv-paging/ulv-paging.component.mjs +84 -0
  230. package/esm2022/lib/ulv-selection/ulv-selection.component.mjs +65 -0
  231. package/esm2022/lib/ulv-settings/ulv-settings.component.mjs +116 -0
  232. package/esm2022/lib/ulv-sort-settings/ulv-sort-settings.component.mjs +54 -0
  233. package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +177 -0
  234. package/esm2022/lib/upload-file-status.pipe.mjs +29 -0
  235. package/esm2022/lib/util-chat-time-badge.pipe.mjs +18 -0
  236. package/esm2022/lib/util-date-to-hh-mm.pipe.mjs +23 -0
  237. package/esm2022/lib/wizard-layout.directive.mjs +104 -0
  238. package/esm2022/public-api.mjs +236 -0
  239. package/fesm2022/barsa-sap-ui.mjs +6 -13
  240. package/fesm2022/barsa-sap-ui.mjs.map +1 -1
  241. package/lib/layout-wizard/layout-wizard.component.d.ts +0 -1
  242. package/package.json +3 -1
@@ -0,0 +1,42 @@
1
+ import { Component, ChangeDetectionStrategy, ViewChild } from '@angular/core';
2
+ import { DynamicPageComponent } from '@fundamental-ngx/core';
3
+ import { UiCardViewComponent } from '../ui-card-view/ui-card-view.component';
4
+ import { isFirefox } from 'barsa-novin-ray-core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@fundamental-ngx/core/dynamic-page";
7
+ import * as i2 from "@fundamental-ngx/core/title";
8
+ import * as i3 from "@fundamental-ngx/platform";
9
+ import * as i4 from "../no-data/no-data.component";
10
+ import * as i5 from "../card-view-content/card-view-content.component";
11
+ import * as i6 from "barsa-novin-ray-core";
12
+ import * as i7 from "../dynamic-page-size.pipe";
13
+ export class UiCardViewHorizontalGroupComponent extends UiCardViewComponent {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.isFirefox = false;
17
+ }
18
+ ngOnInit() {
19
+ super.ngOnInit();
20
+ this.isFirefox = isFirefox();
21
+ this._ulvMainService.hideSearchpanel$.subscribe(() => this.dynamicPage.refreshSize());
22
+ }
23
+ ngOnChanges(changes) {
24
+ super.ngOnChanges(changes);
25
+ const { hideSearchpanel } = changes;
26
+ if (hideSearchpanel && !hideSearchpanel.firstChange) {
27
+ setTimeout(() => {
28
+ this.dynamicPage.refreshSize();
29
+ });
30
+ }
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiCardViewHorizontalGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiCardViewHorizontalGroupComponent, selector: "bsu-ui-card-view-horizontal-group", viewQueries: [{ propertyName: "dynamicPage", first: true, predicate: DynamicPageComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<fd-dynamic-page [size]=\"deviceSize | dynamicPageSize\">\r\n @if (moDataList?.length) {\r\n <fdp-icon-tab-bar [expandOverflowText]=\"'More' | bbbTranslate\" [stackContent]=\"true\">\r\n @for ( tab of moDataList | groupBy: groupby[0].Name | reverse: isFirefox; track _trackByRow(index, tab); let\r\n index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.key | bbbTranslate\" [title]=\"tab.key | bbbTranslate\" [id]=\"'h_' + index\">\r\n <fd-dynamic-page-content>\r\n <h4 fd-title [id]=\"'h_' + index + '_h'\">{{ tab.key | bbbTranslate }}</h4>\r\n <bsu-card-view-content\r\n [moDataList]=\"tab.value\"\r\n [groupby]=\"[]\"\r\n [title]=\"tab.key\"\r\n [setting]=\"cardSetting\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (action)=\"onAction($event)\"\r\n ></bsu-card-view-content>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n </fdp-icon-tab-bar>\r\n } @else {\r\n <fd-dynamic-page-content>\r\n <bsu-no-data [simple]=\"true\"></bsu-no-data>\r\n </fd-dynamic-page-content>\r\n }\r\n</fd-dynamic-page>\r\n", styles: [":host ::ng-deep .fd-container.card-list{padding:0!important}:host ::ng-deep .footer-spacer{display:none!important}\n"], dependencies: [{ kind: "component", type: i1.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i1.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i2.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i3.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i3.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.CardViewContentComponent, selector: "bsu-card-view-content" }, { kind: "pipe", type: i6.GroupByPipe, name: "groupBy" }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i6.ReversePipe, name: "reverse" }, { kind: "pipe", type: i7.DynamicPageSizePipe, name: "dynamicPageSize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiCardViewHorizontalGroupComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'bsu-ui-card-view-horizontal-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-dynamic-page [size]=\"deviceSize | dynamicPageSize\">\r\n @if (moDataList?.length) {\r\n <fdp-icon-tab-bar [expandOverflowText]=\"'More' | bbbTranslate\" [stackContent]=\"true\">\r\n @for ( tab of moDataList | groupBy: groupby[0].Name | reverse: isFirefox; track _trackByRow(index, tab); let\r\n index = $index) {\r\n <fdp-icon-tab-bar-tab [label]=\"tab.key | bbbTranslate\" [title]=\"tab.key | bbbTranslate\" [id]=\"'h_' + index\">\r\n <fd-dynamic-page-content>\r\n <h4 fd-title [id]=\"'h_' + index + '_h'\">{{ tab.key | bbbTranslate }}</h4>\r\n <bsu-card-view-content\r\n [moDataList]=\"tab.value\"\r\n [groupby]=\"[]\"\r\n [title]=\"tab.key\"\r\n [setting]=\"cardSetting\"\r\n [editMode]=\"inlineEditMode\"\r\n [rtl]=\"rtl\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n [allColumns]=\"allColumns\"\r\n [contextMenuItems]=\"contextMenuItems\"\r\n [canView]=\"canView\"\r\n [conditionalFormats]=\"conditionalFormats\"\r\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\r\n [navigationArrow]=\"navigationArrow\"\r\n [isCheckList]=\"isCheckList\"\r\n (rowCheck)=\"onRowCheck($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (ulvCommand)=\"onUlvCommand($event)\"\r\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\r\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\r\n (action)=\"onAction($event)\"\r\n ></bsu-card-view-content>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n }\r\n </fdp-icon-tab-bar>\r\n } @else {\r\n <fd-dynamic-page-content>\r\n <bsu-no-data [simple]=\"true\"></bsu-no-data>\r\n </fd-dynamic-page-content>\r\n }\r\n</fd-dynamic-page>\r\n", styles: [":host ::ng-deep .fd-container.card-list{padding:0!important}:host ::ng-deep .footer-spacer{display:none!important}\n"] }]
38
+ }], propDecorators: { dynamicPage: [{
39
+ type: ViewChild,
40
+ args: [DynamicPageComponent, { static: true }]
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAvdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7O0FBU2pELE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxtQkFBbUI7SUFQM0U7O1FBU0ksY0FBUyxHQUFHLEtBQUssQ0FBQztLQWVyQjtJQWRHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDcEMsSUFBSSxlQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7K0dBaEJRLGtDQUFrQzttR0FBbEMsa0NBQWtDLHNIQUNoQyxvQkFBb0IsMEdDYm5DLGduRUF5Q0E7OzRGRDdCYSxrQ0FBa0M7a0JBUDlDLFNBQVM7K0JBQ0ksbUNBQW1DLG1CQUc1Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OEJBR2tDLFdBQVc7c0JBQTdELFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeW5hbWljUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IFVpQ2FyZFZpZXdDb21wb25lbnQgfSBmcm9tICcuLi91aS1jYXJkLXZpZXcvdWktY2FyZC12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGlzRmlyZWZveCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdic3UtdWktY2FyZC12aWV3LWhvcml6b250YWwtZ3JvdXAnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLWNhcmQtdmlldy1ob3Jpem9udGFsLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLWNhcmQtdmlldy1ob3Jpem9udGFsLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUNhcmRWaWV3SG9yaXpvbnRhbEdyb3VwQ29tcG9uZW50IGV4dGVuZHMgVWlDYXJkVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIEBWaWV3Q2hpbGQoRHluYW1pY1BhZ2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNQYWdlOiBEeW5hbWljUGFnZUNvbXBvbmVudDtcclxuICAgIGlzRmlyZWZveCA9IGZhbHNlO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLmlzRmlyZWZveCA9IGlzRmlyZWZveCgpO1xyXG4gICAgICAgIHRoaXMuX3Vsdk1haW5TZXJ2aWNlLmhpZGVTZWFyY2hwYW5lbCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHluYW1pY1BhZ2UucmVmcmVzaFNpemUoKSk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyBoaWRlU2VhcmNocGFuZWwgfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGhpZGVTZWFyY2hwYW5lbCAmJiAhaGlkZVNlYXJjaHBhbmVsLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5keW5hbWljUGFnZS5yZWZyZXNoU2l6ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGZkLWR5bmFtaWMtcGFnZSBbc2l6ZV09XCJkZXZpY2VTaXplIHwgZHluYW1pY1BhZ2VTaXplXCI+XHJcbiAgICBAaWYgKG1vRGF0YUxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgPGZkcC1pY29uLXRhYi1iYXIgW2V4cGFuZE92ZXJmbG93VGV4dF09XCInTW9yZScgfCBiYmJUcmFuc2xhdGVcIiBbc3RhY2tDb250ZW50XT1cInRydWVcIj5cclxuICAgICAgICBAZm9yICggdGFiIG9mIG1vRGF0YUxpc3QgfCBncm91cEJ5OiBncm91cGJ5WzBdLk5hbWUgfCByZXZlcnNlOiBpc0ZpcmVmb3g7IHRyYWNrIF90cmFja0J5Um93KGluZGV4LCB0YWIpOyBsZXRcclxuICAgICAgICBpbmRleCA9ICRpbmRleCkge1xyXG4gICAgICAgIDxmZHAtaWNvbi10YWItYmFyLXRhYiBbbGFiZWxdPVwidGFiLmtleSB8IGJiYlRyYW5zbGF0ZVwiIFt0aXRsZV09XCJ0YWIua2V5IHwgYmJiVHJhbnNsYXRlXCIgW2lkXT1cIidoXycgKyBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgICA8aDQgZmQtdGl0bGUgW2lkXT1cIidoXycgKyBpbmRleCArICdfaCdcIj57eyB0YWIua2V5IHwgYmJiVHJhbnNsYXRlIH19PC9oND5cclxuICAgICAgICAgICAgICAgIDxic3UtY2FyZC12aWV3LWNvbnRlbnRcclxuICAgICAgICAgICAgICAgICAgICBbbW9EYXRhTGlzdF09XCJ0YWIudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtncm91cGJ5XT1cIltdXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGFiLmtleVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NldHRpbmddPVwiY2FyZFNldHRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3J0bF09XCJydGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjYW5WaWV3XT1cImNhblZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuYXZpZ2F0aW9uQXJyb3ddPVwibmF2aWdhdGlvbkFycm93XCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh1bHZDb21tYW5kKT1cIm9uVWx2Q29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoZWRpdEZvcm1QYW5lbENhbmNlbCk9XCJvbkVkaXRGb3JtUGFuZWxDYW5jZWwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGFjdGlvbik9XCJvbkFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2JzdS1jYXJkLXZpZXctY29udGVudD5cclxuICAgICAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cclxuICAgICAgICA8L2ZkcC1pY29uLXRhYi1iYXItdGFiPlxyXG4gICAgICAgIH1cclxuICAgIDwvZmRwLWljb24tdGFiLWJhcj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxyXG4gICAgICAgIDxic3Utbm8tZGF0YSBbc2ltcGxlXT1cInRydWVcIj48L2JzdS1uby1kYXRhPlxyXG4gICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cclxuICAgIH1cclxuPC9mZC1keW5hbWljLXBhZ2U+XHJcbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { DeviceInfoFieldBaseComponent } from '../device-info-field-base';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@fundamental-ngx/core/checkbox";
6
+ import * as i3 from "@angular/common";
7
+ export class UiCheckBoxComponent extends DeviceInfoFieldBaseComponent {
8
+ get MinSize() {
9
+ return { width: 0, height: 33 };
10
+ }
11
+ ngOnInit() {
12
+ super.ngOnInit();
13
+ this.showText =
14
+ this.layoutInfo.TextVisible === false && this.layoutInfo.UseLayoutItemTextForControl ? true : false;
15
+ let caption = this.layoutInfo.Caption;
16
+ if (caption && caption.endsWith(':')) {
17
+ caption = caption.substring(0, caption.length - 1);
18
+ }
19
+ this.caption = caption;
20
+ }
21
+ onValueChange() {
22
+ this._valueChanged(!this.value);
23
+ // this._valueSource.next(!this.value);
24
+ }
25
+ _valueChanged(val) {
26
+ this.value = val;
27
+ this.valueChange.emit(val);
28
+ this.fireContextEvent('check', val);
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiCheckBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UiCheckBoxComponent, selector: "bsu-ui-check-box", inputs: { MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "<fd-checkbox\r\n [id]=\"id\"\r\n (change)=\"onValueChange()\"\r\n [ngModel]=\"value\"\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n [label]=\"!showText ? '' : caption\"\r\n [wrapLabel]=\"true\"\r\n>\r\n</fd-checkbox>\r\n", styles: [":host{width:100%;height:100%;display:flex}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "readonly", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiCheckBoxComponent, decorators: [{
34
+ type: Component,
35
+ args: [{ selector: 'bsu-ui-check-box', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<fd-checkbox\r\n [id]=\"id\"\r\n (change)=\"onValueChange()\"\r\n [ngModel]=\"value\"\r\n [disabled]=\"(disableOrReadonly$ | async)!!\"\r\n [label]=\"!showText ? '' : caption\"\r\n [wrapLabel]=\"true\"\r\n>\r\n</fd-checkbox>\r\n", styles: [":host{width:100%;height:100%;display:flex}\n"] }]
36
+ }], propDecorators: { MinSize: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY2hlY2stYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLWNoZWNrLWJveC91aS1jaGVjay1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY2hlY2stYm94L3VpLWNoZWNrLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFRekUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLDRCQUE0QjtJQUNqRSxJQUFhLE9BQU87UUFDaEIsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFJRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hHLElBQUksT0FBTyxHQUFXLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQzlDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUNELGFBQWE7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLHVDQUF1QztJQUMzQyxDQUFDO0lBQ1MsYUFBYSxDQUFDLEdBQVk7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDOytHQXpCUSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwrR0NWaEMsd1BBU0E7OzRGRENhLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLOzhCQUdKLE9BQU87c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRGV2aWNlSW5mb0ZpZWxkQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RldmljZS1pbmZvLWZpZWxkLWJhc2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVpLWNoZWNrLWJveCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktY2hlY2stYm94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLWNoZWNrLWJveC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlDaGVja0JveENvbXBvbmVudCBleHRlbmRzIERldmljZUluZm9GaWVsZEJhc2VDb21wb25lbnQge1xyXG4gICAgQElucHV0KCkgZ2V0IE1pblNpemUoKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcclxuICAgICAgICByZXR1cm4geyB3aWR0aDogMCwgaGVpZ2h0OiAzMyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dUZXh0OiBib29sZWFuO1xyXG4gICAgY2FwdGlvbjogc3RyaW5nO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgICAgICB0aGlzLnNob3dUZXh0ID1cclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRJbmZvLlRleHRWaXNpYmxlID09PSBmYWxzZSAmJiB0aGlzLmxheW91dEluZm8uVXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIGxldCBjYXB0aW9uOiBzdHJpbmcgPSB0aGlzLmxheW91dEluZm8uQ2FwdGlvbjtcclxuICAgICAgICBpZiAoY2FwdGlvbiAmJiBjYXB0aW9uLmVuZHNXaXRoKCc6JykpIHtcclxuICAgICAgICAgICAgY2FwdGlvbiA9IGNhcHRpb24uc3Vic3RyaW5nKDAsIGNhcHRpb24ubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IGNhcHRpb247XHJcbiAgICB9XHJcbiAgICBvblZhbHVlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlZCghdGhpcy52YWx1ZSk7XHJcbiAgICAgICAgLy8gdGhpcy5fdmFsdWVTb3VyY2UubmV4dCghdGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlQ2hhbmdlZCh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgICAgIHRoaXMuZmlyZUNvbnRleHRFdmVudCgnY2hlY2snLCB2YWwpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxmZC1jaGVja2JveFxyXG4gICAgW2lkXT1cImlkXCJcclxuICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgpXCJcclxuICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcclxuICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZU9yUmVhZG9ubHkkIHwgYXN5bmMpISFcIlxyXG4gICAgW2xhYmVsXT1cIiFzaG93VGV4dCA/ICcnIDogY2FwdGlvblwiXHJcbiAgICBbd3JhcExhYmVsXT1cInRydWVcIlxyXG4+XHJcbjwvZmQtY2hlY2tib3g+XHJcbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FieldBaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@fundamental-ngx/core/button";
5
+ import * as i2 from "@fundamental-ngx/core/popover";
6
+ import * as i3 from "@fundamental-ngx/core/toolbar";
7
+ import * as i4 from "ngx-color/swatches";
8
+ import * as i5 from "ngx-color/chrome";
9
+ import * as i6 from "@angular/cdk/clipboard";
10
+ import * as i7 from "@angular/common";
11
+ import * as i8 from "barsa-novin-ray-core";
12
+ export class UiColorUiComponent extends FieldBaseComponent {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.isVisibleSwatches = true;
16
+ this.switchText = 'رنگ های پیشفرض';
17
+ }
18
+ ngOnInit() {
19
+ super.ngOnInit();
20
+ this.selectedColor = this.value;
21
+ this.disable$.subscribe((disable) => {
22
+ if (disable) {
23
+ this._renderer2.setStyle(this._el.nativeElement, 'pointer-events', 'none');
24
+ }
25
+ });
26
+ }
27
+ onSwatchClick() {
28
+ this.isVisibleSwatches = !this.isVisibleSwatches;
29
+ this.switchText = 'انتخاب رنگ';
30
+ }
31
+ onApply(popover) {
32
+ this.value = this.selectedColor;
33
+ this.valueChange.emit(this.value);
34
+ popover.close();
35
+ }
36
+ onCancel(popover) {
37
+ this.selectedColor = this.value;
38
+ popover.close();
39
+ }
40
+ onColorChang($event) {
41
+ this.selectedColor = $event;
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiColorUiComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiColorUiComponent, selector: "bsu-ui-color-ui", usesInheritance: true, ngImport: i0, template: "@if (readonly$ | async) {\r\n<div class=\"read-only\">\r\n <div [style.background-color]=\"value ? value : null\"></div>\r\n <span>{{ value }}</span>\r\n <button\r\n fd-button\r\n [cdkCopyToClipboard]=\"value\"\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"'copy'\"\r\n aria-label=\"copy\"\r\n title=\"copy\"\r\n ></button>\r\n</div>\r\n} @else {\r\n<fd-popover #popover>\r\n <fd-popover-control style=\"margin: 0.25rem 0\">\r\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\r\n <span [style.background-color]=\"value\" style=\"width: 16px; height: 16px; border-radius: 50%\"></span>\r\n </button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n @if (!isVisibleSwatches) {\r\n <color-chrome [color]=\"value\" className=\"color-box\" (colorChange)=\"onColorChang($event)\"></color-chrome>\r\n } @if (isVisibleSwatches) {\r\n <color-swatches [color]=\"value\" (colorChange)=\"onColorChang($event)\"></color-swatches>\r\n }\r\n <fd-toolbar style=\"background-color: white\">\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n (click)=\"onCancel(popover)\"\r\n [compact]=\"true\"\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [label]=\"'Ok' | bbbTranslate\"\r\n (click)=\"onApply(popover)\"\r\n [compact]=\"true\"\r\n ></button>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <button fd-toolbar-item fd-button [label]=\"switchText\" (click)=\"onSwatchClick()\" [compact]=\"true\"></button>\r\n </fd-toolbar>\r\n </fd-popover-body>\r\n</fd-popover>\r\n}\r\n", styles: [":host{display:block;margin:.25rem 0}.read-only{display:flex;justify-content:flex-start;column-gap:3px}.read-only div{width:25px;height:20px;border-radius:5px}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i2.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i2.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i2.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "component", type: i3.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i3.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i3.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i4.SwatchesComponent, selector: "color-swatches", inputs: ["width", "height", "colors", "zDepth", "radius", "background"] }, { kind: "component", type: i5.ChromeComponent, selector: "color-chrome", inputs: ["disableAlpha"] }, { kind: "directive", type: i6.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiColorUiComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'bsu-ui-color-ui', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (readonly$ | async) {\r\n<div class=\"read-only\">\r\n <div [style.background-color]=\"value ? value : null\"></div>\r\n <span>{{ value }}</span>\r\n <button\r\n fd-button\r\n [cdkCopyToClipboard]=\"value\"\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"'copy'\"\r\n aria-label=\"copy\"\r\n title=\"copy\"\r\n ></button>\r\n</div>\r\n} @else {\r\n<fd-popover #popover>\r\n <fd-popover-control style=\"margin: 0.25rem 0\">\r\n <button fd-button [fdMenu]=\"true\" fdType=\"transparent\">\r\n <span [style.background-color]=\"value\" style=\"width: 16px; height: 16px; border-radius: 50%\"></span>\r\n </button>\r\n </fd-popover-control>\r\n <fd-popover-body>\r\n @if (!isVisibleSwatches) {\r\n <color-chrome [color]=\"value\" className=\"color-box\" (colorChange)=\"onColorChang($event)\"></color-chrome>\r\n } @if (isVisibleSwatches) {\r\n <color-swatches [color]=\"value\" (colorChange)=\"onColorChang($event)\"></color-swatches>\r\n }\r\n <fd-toolbar style=\"background-color: white\">\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n (click)=\"onCancel(popover)\"\r\n [compact]=\"true\"\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [label]=\"'Ok' | bbbTranslate\"\r\n (click)=\"onApply(popover)\"\r\n [compact]=\"true\"\r\n ></button>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <button fd-toolbar-item fd-button [label]=\"switchText\" (click)=\"onSwatchClick()\" [compact]=\"true\"></button>\r\n </fd-toolbar>\r\n </fd-popover-body>\r\n</fd-popover>\r\n}\r\n", styles: [":host{display:block;margin:.25rem 0}.read-only{display:flex;justify-content:flex-start;column-gap:3px}.read-only div{width:25px;height:20px;border-radius:5px}\n"] }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY29sb3ItdWkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY29sb3ItdWkvdWktY29sb3ItdWkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY29sb3ItdWkvdWktY29sb3ItdWkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUczRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7OztBQVMxRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsa0JBQWtCO0lBUDFEOztRQVFJLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUV6QixlQUFVLEdBQUcsZ0JBQWdCLENBQUM7S0ErQmpDO0lBN0JHLFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQXlCO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBeUI7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQU07UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDOytHQWpDUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw4RUNaL0IsODFEQStDQTs7NEZEbkNhLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRmllbGRCYXNlQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1jb2xvci11aScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktY29sb3ItdWkuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktY29sb3ItdWkuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQ29sb3JVaUNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBpc1Zpc2libGVTd2F0Y2hlcyA9IHRydWU7XHJcbiAgICBzZWxlY3RlZENvbG9yOiBzdHJpbmc7XHJcbiAgICBzd2l0Y2hUZXh0ID0gJ9ix2YbaryDZh9in24wg2b7bjNi02YHYsdi2JztcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlJC5zdWJzY3JpYmUoKGRpc2FibGUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGRpc2FibGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAncG9pbnRlci1ldmVudHMnLCAnbm9uZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Td2F0Y2hDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzVmlzaWJsZVN3YXRjaGVzID0gIXRoaXMuaXNWaXNpYmxlU3dhdGNoZXM7XHJcbiAgICAgICAgdGhpcy5zd2l0Y2hUZXh0ID0gJ9in2YbYqtiu2KfYqCDYsdmG2q8nO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQXBwbHkocG9wb3ZlcjogUG9wb3ZlckNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnNlbGVjdGVkQ29sb3I7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhbmNlbChwb3BvdmVyOiBQb3BvdmVyQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBwb3BvdmVyLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db2xvckNoYW5nKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9ICRldmVudDtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKHJlYWRvbmx5JCB8IGFzeW5jKSB7XHJcbjxkaXYgY2xhc3M9XCJyZWFkLW9ubHlcIj5cclxuICAgIDxkaXYgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwidmFsdWUgPyB2YWx1ZSA6IG51bGxcIj48L2Rpdj5cclxuICAgIDxzcGFuPnt7IHZhbHVlIH19PC9zcGFuPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIFtjZGtDb3B5VG9DbGlwYm9hcmRdPVwidmFsdWVcIlxyXG4gICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgW2dseXBoXT1cIidjb3B5J1wiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cImNvcHlcIlxyXG4gICAgICAgIHRpdGxlPVwiY29weVwiXHJcbiAgICA+PC9idXR0b24+XHJcbjwvZGl2PlxyXG59IEBlbHNlIHtcclxuPGZkLXBvcG92ZXIgI3BvcG92ZXI+XHJcbiAgICA8ZmQtcG9wb3Zlci1jb250cm9sIHN0eWxlPVwibWFyZ2luOiAwLjI1cmVtIDBcIj5cclxuICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBbZmRNZW51XT1cInRydWVcIiBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ2YWx1ZVwiIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsgYm9yZGVyLXJhZGl1czogNTAlXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XHJcbiAgICA8ZmQtcG9wb3Zlci1ib2R5PlxyXG4gICAgICAgIEBpZiAoIWlzVmlzaWJsZVN3YXRjaGVzKSB7XHJcbiAgICAgICAgPGNvbG9yLWNocm9tZSBbY29sb3JdPVwidmFsdWVcIiBjbGFzc05hbWU9XCJjb2xvci1ib3hcIiAoY29sb3JDaGFuZ2UpPVwib25Db2xvckNoYW5nKCRldmVudClcIj48L2NvbG9yLWNocm9tZT5cclxuICAgICAgICB9IEBpZiAoaXNWaXNpYmxlU3dhdGNoZXMpIHtcclxuICAgICAgICA8Y29sb3Itc3dhdGNoZXMgW2NvbG9yXT1cInZhbHVlXCIgKGNvbG9yQ2hhbmdlKT1cIm9uQ29sb3JDaGFuZygkZXZlbnQpXCI+PC9jb2xvci1zd2F0Y2hlcz5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGZkLXRvb2xiYXIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDYW5jZWwnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbChwb3BvdmVyKVwiXHJcbiAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidPaycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHkocG9wb3ZlcilcIlxyXG4gICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgID48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XHJcbiAgICAgICAgICAgIDxidXR0b24gZmQtdG9vbGJhci1pdGVtIGZkLWJ1dHRvbiBbbGFiZWxdPVwic3dpdGNoVGV4dFwiIChjbGljayk9XCJvblN3YXRjaENsaWNrKClcIiBbY29tcGFjdF09XCJ0cnVlXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgPC9mZC1wb3BvdmVyLWJvZHk+XHJcbjwvZmQtcG9wb3Zlcj5cclxufVxyXG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FieldBaseComponent } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "barsa-novin-ray-core";
5
+ import * as i2 from "@fundamental-ngx/core/button";
6
+ import * as i3 from "@angular/common";
7
+ export class UiContainerWithButtonComponent extends FieldBaseComponent {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.btnVisible = true;
11
+ this.btnEnable = true;
12
+ }
13
+ ngOnInit() {
14
+ super.ngOnInit();
15
+ this.btnVisible = this.context.visibleButtons;
16
+ this.btnEnable = this.context.enableButtons;
17
+ this.context.on({
18
+ enablebuttons: (btnIdList, enable) => {
19
+ this.btnEnable = enable;
20
+ this._cdr.detectChanges();
21
+ },
22
+ visiblebuttons: (btnIdList, visible) => {
23
+ this.btnVisible = visible;
24
+ this._cdr.detectChanges();
25
+ }
26
+ });
27
+ }
28
+ onBtnClick(btn) {
29
+ btn.handler.bind(this.context)();
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiContainerWithButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiContainerWithButtonComponent, selector: "bsu-ui-container-with-button", usesInheritance: true, ngImport: i0, template: "<bnrc-field-ui class=\"inner-control\" [customField]=\"context._innerControl\" [layoutInfo]=\"layoutInfo\"></bnrc-field-ui>\r\n@if (btnVisible && btnEnable) { @for (btn of context._buttonsConfig; track btn) {\r\n<button\r\n fd-button\r\n [label]=\"btn.text\"\r\n [glyph]=\"btn.itemId === 'Recalculate' ? 'synchronize' : ''\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onBtnClick(btn)\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true\"\r\n></button>\r\n} }\r\n", styles: [":host{width:100%;height:100%;display:flex;justify-content:stretch;align-items:center}.btn{max-width:80px;width:100%;height:30px}button{flex-shrink:0}\n"], dependencies: [{ kind: "component", type: i1.FieldUiComponent, selector: "bnrc-field-ui", inputs: ["isSearchPanel", "customField", "componentUi", "layoutInfo", "inlineEdit", "focusControl", "formHeight"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiContainerWithButtonComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'bsu-ui-container-with-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<bnrc-field-ui class=\"inner-control\" [customField]=\"context._innerControl\" [layoutInfo]=\"layoutInfo\"></bnrc-field-ui>\r\n@if (btnVisible && btnEnable) { @for (btn of context._buttonsConfig; track btn) {\r\n<button\r\n fd-button\r\n [label]=\"btn.text\"\r\n [glyph]=\"btn.itemId === 'Recalculate' ? 'synchronize' : ''\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"onBtnClick(btn)\"\r\n [disabled]=\"(disableOrReadonly$ | async) === true\"\r\n></button>\r\n} }\r\n", styles: [":host{width:100%;height:100%;display:flex;justify-content:stretch;align-items:center}.btn{max-width:80px;width:100%;height:30px}button{flex-shrink:0}\n"] }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXNhcC11aS9zcmMvbGliL3VpLWNvbnRhaW5lci13aXRoLWJ1dHRvbi91aS1jb250YWluZXItd2l0aC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktY29udGFpbmVyLXdpdGgtYnV0dG9uL3VpLWNvbnRhaW5lci13aXRoLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQVExRCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsa0JBQWtCO0lBUHRFOztRQVFJLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsY0FBUyxHQUFHLElBQUksQ0FBQztLQW9CcEI7SUFsQkcsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWixhQUFhLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlCLENBQUM7WUFDRCxjQUFjLEVBQUUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO2dCQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsVUFBVSxDQUFDLEdBQUc7UUFDVixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNyQyxDQUFDOytHQXJCUSw4QkFBOEI7bUdBQTlCLDhCQUE4QiwyRkNWM0MseWVBV0E7OzRGRERhLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDSSw4QkFBOEIsbUJBR3ZCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRmllbGRCYXNlQ29tcG9uZW50IH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVpLWNvbnRhaW5lci13aXRoLWJ1dHRvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktY29udGFpbmVyLXdpdGgtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLWNvbnRhaW5lci13aXRoLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlDb250YWluZXJXaXRoQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIGJ0blZpc2libGUgPSB0cnVlO1xyXG4gICAgYnRuRW5hYmxlID0gdHJ1ZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuYnRuVmlzaWJsZSA9IHRoaXMuY29udGV4dC52aXNpYmxlQnV0dG9ucztcclxuICAgICAgICB0aGlzLmJ0bkVuYWJsZSA9IHRoaXMuY29udGV4dC5lbmFibGVCdXR0b25zO1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5vbih7XHJcbiAgICAgICAgICAgIGVuYWJsZWJ1dHRvbnM6IChidG5JZExpc3QsIGVuYWJsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5FbmFibGUgPSBlbmFibGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB2aXNpYmxlYnV0dG9uczogKGJ0bklkTGlzdCwgdmlzaWJsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5WaXNpYmxlID0gdmlzaWJsZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG9uQnRuQ2xpY2soYnRuKTogdm9pZCB7XHJcbiAgICAgICAgYnRuLmhhbmRsZXIuYmluZCh0aGlzLmNvbnRleHQpKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGJucmMtZmllbGQtdWkgY2xhc3M9XCJpbm5lci1jb250cm9sXCIgW2N1c3RvbUZpZWxkXT1cImNvbnRleHQuX2lubmVyQ29udHJvbFwiIFtsYXlvdXRJbmZvXT1cImxheW91dEluZm9cIj48L2JucmMtZmllbGQtdWk+XHJcbkBpZiAoYnRuVmlzaWJsZSAmJiBidG5FbmFibGUpIHsgQGZvciAoYnRuIG9mIGNvbnRleHQuX2J1dHRvbnNDb25maWc7IHRyYWNrIGJ0bikge1xyXG48YnV0dG9uXHJcbiAgICBmZC1idXR0b25cclxuICAgIFtsYWJlbF09XCJidG4udGV4dFwiXHJcbiAgICBbZ2x5cGhdPVwiYnRuLml0ZW1JZCA9PT0gJ1JlY2FsY3VsYXRlJyA/ICdzeW5jaHJvbml6ZScgOiAnJ1wiXHJcbiAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgKGNsaWNrKT1cIm9uQnRuQ2xpY2soYnRuKVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiKGRpc2FibGVPclJlYWRvbmx5JCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXHJcbj48L2J1dHRvbj5cclxufSB9XHJcbiJdfQ==
@@ -0,0 +1,191 @@
1
+ import { Component, ViewChild, ChangeDetectionStrategy } from '@angular/core';
2
+ import { FieldBaseComponent, BarsaApi, DateService, DateShamsiService, LogService, DateMiladiService, DateHijriService, DateRanges } from 'barsa-novin-ray-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ import * as i2 from "@fundamental-ngx/core/button";
6
+ import * as i3 from "@fundamental-ngx/core/input-group";
7
+ import * as i4 from "@fundamental-ngx/core/list";
8
+ import * as i5 from "@fundamental-ngx/core/popover";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "barsa-novin-ray-core";
11
+ function getDateService(logService) {
12
+ const culture = BarsaApi.LoginFormData.Culture;
13
+ switch (culture) {
14
+ case 'fa-IR':
15
+ return new DateShamsiService(logService);
16
+ case 'ar-AE':
17
+ return new DateHijriService(logService);
18
+ default:
19
+ return new DateMiladiService(logService);
20
+ }
21
+ }
22
+ export class UiDateRangeExComponent extends FieldBaseComponent {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.valueStr = '';
26
+ this.value = new BarsaApi.Common.DateRangeData();
27
+ this.dateRanges = DateRanges;
28
+ }
29
+ get _isValidPopover() {
30
+ const mode = this.value.DateRangeType;
31
+ return /Week|Day|Today|Range/.test(mode) && this.valueStr !== '';
32
+ }
33
+ ngOnInit() {
34
+ super.ngOnInit();
35
+ if (!this.value) {
36
+ this.context.value = this.value = this._defaultValue(this.value);
37
+ }
38
+ this._decorateDateRangePicker();
39
+ }
40
+ onDateRangeTypeChange(dateRangeType) {
41
+ this._setValueStr(dateRangeType.replace('DateR_', ''));
42
+ this.valueChange.emit(this.value);
43
+ }
44
+ onDateRangeChange() {
45
+ const el = this.dateRangePicker.nativeElement;
46
+ this.value.FirstDate = el.firstDateValue;
47
+ this.value.SecondDate = el.lastDateValue;
48
+ this.valueChange.emit(this.value);
49
+ const firstDateStr = this._dateService.getDateString(this.value.FirstDate, true, false);
50
+ const secondDateStr = this._dateService.getDateString(this.value.SecondDate, true, false);
51
+ this.valueStr = firstDateStr + ' تا ' + secondDateStr;
52
+ }
53
+ onOpenPopover() {
54
+ if (this._isValidPopover && this._isValidPopover) {
55
+ this.popover.open();
56
+ }
57
+ }
58
+ _setValue(value) {
59
+ if (!value) {
60
+ this.context.value = value = this._defaultValue(value);
61
+ }
62
+ this._setValueStr(value.DateRangeType);
63
+ super._setValue(value);
64
+ }
65
+ _defaultValue(value) {
66
+ if (!value) {
67
+ value = {
68
+ DateRangeType: 'None'
69
+ };
70
+ }
71
+ return value;
72
+ }
73
+ _setValueStr(dateRangeType) {
74
+ this.value.DateRangeType = dateRangeType;
75
+ switch (dateRangeType) {
76
+ case 'SpecificRange':
77
+ this.valueStr = '';
78
+ this._decorateDateRangePicker();
79
+ return;
80
+ case 'DaysBefore':
81
+ this.valueStr = this._getDaysBefore();
82
+ break;
83
+ case 'Today':
84
+ this.valueStr = this._getToday();
85
+ break;
86
+ case 'DaysAfter':
87
+ this.valueStr = this._getDaysAfter();
88
+ break;
89
+ case 'PrevWeek':
90
+ this.valueStr = this._getPrevWeek();
91
+ break;
92
+ case 'ThisWeek':
93
+ this.valueStr = this._getThisWeek();
94
+ break;
95
+ case 'NextWeek':
96
+ this.valueStr = this._getNextWeek();
97
+ break;
98
+ case 'PrevMonth':
99
+ this.valueStr = this._getPrevMonth();
100
+ break;
101
+ case 'ThisMonth':
102
+ this.valueStr = this._getThisMonth();
103
+ break;
104
+ case 'NextMonth':
105
+ this.valueStr = this._getNextMonth();
106
+ break;
107
+ case 'PrevYear':
108
+ this.valueStr = this._getPrevYear();
109
+ break;
110
+ case 'ThisYear':
111
+ this.valueStr = this._getThisYear();
112
+ break;
113
+ case 'NextYear':
114
+ this.valueStr = this._getNextYear();
115
+ break;
116
+ default:
117
+ this.valueStr = BarsaApi.BBB.DateR_None;
118
+ this._decorateDateRangePicker();
119
+ }
120
+ }
121
+ _getToday() {
122
+ return BarsaApi.BBB.DateR_Today + ': ' + this._dateService.getDayStr('Today');
123
+ }
124
+ _getThisWeek() {
125
+ return BarsaApi.BBB.DateR_ThisWeek + ': ' + this._dateService.getWeekStr('ThisWeek');
126
+ }
127
+ _getThisMonth() {
128
+ return BarsaApi.BBB.DateR_ThisMonth + ': ' + this._dateService.getMonthStr('ThisMonth');
129
+ }
130
+ _getThisYear() {
131
+ return BarsaApi.BBB.DateR_ThisYear + ': ' + this._dateService.getYearStr('ThisYear');
132
+ }
133
+ _getDaysBefore() {
134
+ return BarsaApi.BBB.DateR_DaysBefore + ': ' + this._dateService.getDayStr('DaysBefore');
135
+ }
136
+ _getPrevWeek() {
137
+ return BarsaApi.BBB.DateR_PrevWeek + ': ' + this._dateService.getWeekStr('PrevWeek');
138
+ }
139
+ _getPrevMonth() {
140
+ return BarsaApi.BBB.DateR_PrevMonth + ': ' + this._dateService.getMonthStr('PrevMonth');
141
+ }
142
+ _getPrevYear() {
143
+ return BarsaApi.BBB.DateR_PrevYear + ': ' + this._dateService.getYearStr('PrevYear');
144
+ }
145
+ _getDaysAfter() {
146
+ return BarsaApi.BBB.DateR_DaysAfter + ': ' + this._dateService.getDayStr('DaysAfter');
147
+ }
148
+ _getNextWeek() {
149
+ return BarsaApi.BBB.DateR_NextWeek + ': ' + this._dateService.getWeekStr('NextWeek');
150
+ }
151
+ _getNextMonth() {
152
+ return BarsaApi.BBB.DateR_NextMonth + ': ' + this._dateService.getMonthStr('NextMonth');
153
+ }
154
+ _getNextYear() {
155
+ return BarsaApi.BBB.DateR_NextYear + ': ' + this._dateService.getYearStr('NextYear');
156
+ }
157
+ _decorateDateRangePicker() {
158
+ setTimeout(() => {
159
+ const elDateRangePicker = this.dateRangePicker?.nativeElement;
160
+ if (elDateRangePicker) {
161
+ const ui5InputEl = elDateRangePicker.shadowRoot?.querySelector('.ui5-date-picker-input');
162
+ this._renderer2.setAttribute(ui5InputEl, 'style', 'border-top-left-radius: 0; border-bottom-left-radius: 0');
163
+ }
164
+ }, 500);
165
+ }
166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiDateRangeExComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
167
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UiDateRangeExComponent, selector: "bsu-ui-date-range-ex", providers: [
168
+ {
169
+ provide: DateService,
170
+ useFactory: getDateService,
171
+ deps: [LogService]
172
+ }
173
+ ], viewQueries: [{ propertyName: "dateRangePicker", first: true, predicate: ["dateRangePicker"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "@if (value?.DateRangeType === 'SpecificRange') {\r\n<div class=\"input-container\">\r\n <ui5-daterange-picker\r\n id=\"mydaterange-picker1\"\r\n (mouseover)=\"onOpenPopover()\"\r\n (mouseleave)=\"popover.close()\"\r\n #dateRangePicker\r\n (change)=\"onDateRangeChange()\"\r\n format-pattern=\"yyyy/MM/dd\"\r\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\r\n [attr.disabled]=\"(disable$ | async) === true ? true : null\"\r\n [primaryCalendarType]=\"Setting.CalendarType !== 'Gregorian' ? 'Persian' : Setting.CalendarType\"\r\n >\r\n </ui5-daterange-picker>\r\n <button\r\n class=\"btn-drop-down\"\r\n fd-button\r\n [fdType]=\"'standard'\"\r\n [glyph]=\"'slim-arrow-down'\"\r\n (click)=\"popover.open()\"\r\n ></button>\r\n</div>\r\n} @else {\r\n<!-- <input fd-form-control [(ngModel)]=\"valueStr\" [fd-inline-help]=\"valueStr\" [readOnly]=\"true\" /> -->\r\n<fd-input-group\r\n placement=\"after\"\r\n glyph=\"slim-arrow-down\"\r\n glyphAriaLabel=\"Select Date Range\"\r\n [button]=\"true\"\r\n [ngModel]=\"valueStr\"\r\n (addOnButtonClicked)=\"popover.open()\"\r\n>\r\n</fd-input-group>\r\n}\r\n<ng-template #input>\r\n <!-- <input fd-form-control [(ngModel)]=\"valueStr\" [fd-inline-help]=\"valueStr\" [readOnly]=\"true\" /> -->\r\n\r\n <fd-input-group\r\n placement=\"after\"\r\n glyph=\"slim-arrow-down\"\r\n glyphAriaLabel=\"Select Date Range\"\r\n [button]=\"true\"\r\n [ngModel]=\"valueStr\"\r\n (addOnButtonClicked)=\"popover.open()\"\r\n >\r\n </fd-input-group>\r\n</ng-template>\r\n\r\n<!-- <button fd-button>\r\n<fd-select (valueChange)=\"onDateRangeTypeChange($event)\">\r\n <fd-option *ngFor=\"let option of dateRanges\" [value]=\"option\">{{ option | bbbTranslate }}</fd-option>\r\n</fd-select>\r\n</button> -->\r\n\r\n<fd-popover\r\n #popover\r\n style=\"display: block\"\r\n [fillControlMode]=\"'at-least'\"\r\n placement=\"bottom-start\"\r\n [(isOpen)]=\"isOpenPopover\"\r\n>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (option of dateRanges; track option) {\r\n <li fd-list-item (click)=\"popover.close(); onDateRangeTypeChange(option)\">\r\n <a fd-list-link>\r\n <span fd-list-title>{{ option | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n</fd-popover>\r\n", styles: [":host{display:block}:host input{border-top-left-radius:0;border-left:none;border-bottom-left-radius:0}:host .input-container{width:100%;display:flex;align-items:center}:host .input-container ui5-daterange-picker{padding:3px 0;min-width:2rem;width:100%;flex-grow:1}.btn-drop-down{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor)}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i4.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i4.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id"], outputs: ["keyDown"] }, { kind: "directive", type: i4.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i4.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "component", type: i5.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i5.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
174
+ }
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiDateRangeExComponent, decorators: [{
176
+ type: Component,
177
+ args: [{ selector: 'bsu-ui-date-range-ex', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
178
+ {
179
+ provide: DateService,
180
+ useFactory: getDateService,
181
+ deps: [LogService]
182
+ }
183
+ ], standalone: false, template: "@if (value?.DateRangeType === 'SpecificRange') {\r\n<div class=\"input-container\">\r\n <ui5-daterange-picker\r\n id=\"mydaterange-picker1\"\r\n (mouseover)=\"onOpenPopover()\"\r\n (mouseleave)=\"popover.close()\"\r\n #dateRangePicker\r\n (change)=\"onDateRangeChange()\"\r\n format-pattern=\"yyyy/MM/dd\"\r\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\r\n [attr.disabled]=\"(disable$ | async) === true ? true : null\"\r\n [primaryCalendarType]=\"Setting.CalendarType !== 'Gregorian' ? 'Persian' : Setting.CalendarType\"\r\n >\r\n </ui5-daterange-picker>\r\n <button\r\n class=\"btn-drop-down\"\r\n fd-button\r\n [fdType]=\"'standard'\"\r\n [glyph]=\"'slim-arrow-down'\"\r\n (click)=\"popover.open()\"\r\n ></button>\r\n</div>\r\n} @else {\r\n<!-- <input fd-form-control [(ngModel)]=\"valueStr\" [fd-inline-help]=\"valueStr\" [readOnly]=\"true\" /> -->\r\n<fd-input-group\r\n placement=\"after\"\r\n glyph=\"slim-arrow-down\"\r\n glyphAriaLabel=\"Select Date Range\"\r\n [button]=\"true\"\r\n [ngModel]=\"valueStr\"\r\n (addOnButtonClicked)=\"popover.open()\"\r\n>\r\n</fd-input-group>\r\n}\r\n<ng-template #input>\r\n <!-- <input fd-form-control [(ngModel)]=\"valueStr\" [fd-inline-help]=\"valueStr\" [readOnly]=\"true\" /> -->\r\n\r\n <fd-input-group\r\n placement=\"after\"\r\n glyph=\"slim-arrow-down\"\r\n glyphAriaLabel=\"Select Date Range\"\r\n [button]=\"true\"\r\n [ngModel]=\"valueStr\"\r\n (addOnButtonClicked)=\"popover.open()\"\r\n >\r\n </fd-input-group>\r\n</ng-template>\r\n\r\n<!-- <button fd-button>\r\n<fd-select (valueChange)=\"onDateRangeTypeChange($event)\">\r\n <fd-option *ngFor=\"let option of dateRanges\" [value]=\"option\">{{ option | bbbTranslate }}</fd-option>\r\n</fd-select>\r\n</button> -->\r\n\r\n<fd-popover\r\n #popover\r\n style=\"display: block\"\r\n [fillControlMode]=\"'at-least'\"\r\n placement=\"bottom-start\"\r\n [(isOpen)]=\"isOpenPopover\"\r\n>\r\n <fd-popover-body>\r\n <ul fd-list>\r\n @for (option of dateRanges; track option) {\r\n <li fd-list-item (click)=\"popover.close(); onDateRangeTypeChange(option)\">\r\n <a fd-list-link>\r\n <span fd-list-title>{{ option | bbbTranslate }}</span>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </fd-popover-body>\r\n</fd-popover>\r\n", styles: [":host{display:block}:host input{border-top-left-radius:0;border-left:none;border-bottom-left-radius:0}:host .input-container{width:100%;display:flex;align-items:center}:host .input-container ui5-daterange-picker{padding:3px 0;min-width:2rem;width:100%;flex-grow:1}.btn-drop-down{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor)}\n"] }]
184
+ }], propDecorators: { dateRangePicker: [{
185
+ type: ViewChild,
186
+ args: ['dateRangePicker']
187
+ }], popover: [{
188
+ type: ViewChild,
189
+ args: ['popover', { static: true }]
190
+ }] } });
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZGF0ZS1yYW5nZS1leC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS1kYXRlLXJhbmdlLWV4L3VpLWRhdGUtcmFuZ2UtZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktZGF0ZS1yYW5nZS1leC91aS1kYXRlLXJhbmdlLWV4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFVLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxHLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNiLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7OztBQUc5QixTQUFTLGNBQWMsQ0FBQyxVQUFzQjtJQUMxQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztJQUMvQyxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2QsS0FBSyxPQUFPO1lBQ1IsT0FBTyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLEtBQUssT0FBTztZQUNSLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QztZQUNJLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0wsQ0FBQztBQWdCRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsa0JBQWtCO0lBZDlEOztRQWtCSSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsVUFBSyxHQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQUcsVUFBVSxDQUFDO0tBZ0szQjtJQTdKRyxJQUFJLGVBQWU7UUFDZixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN0QyxPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELHFCQUFxQixDQUFDLGFBQWE7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsaUJBQWlCO1FBQ2IsTUFBTSxFQUFFLEdBQVEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFDbkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxHQUFHLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFDMUQsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7SUFFUyxTQUFTLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ08sYUFBYSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsS0FBSyxHQUFHO2dCQUNKLGFBQWEsRUFBRSxNQUFNO2FBQ3hCLENBQUM7UUFDTixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNPLFlBQVksQ0FBQyxhQUFxQjtRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDekMsUUFBUSxhQUFhLEVBQUUsQ0FBQztZQUNwQixLQUFLLGVBQWU7Z0JBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNYLEtBQUssWUFBWTtnQkFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEMsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakMsTUFBTTtZQUNWLEtBQUssV0FBVztnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsTUFBTTtZQUNWLEtBQUssV0FBVztnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsTUFBTTtZQUNWLEtBQUssV0FBVztnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsTUFBTTtZQUNWLEtBQUssV0FBVztnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEMsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsUUFB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VixPQUFPLEVBQ1AseURBQXlELENBQzVELENBQUM7WUFDTixDQUFDO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQzsrR0FyS1Esc0JBQXNCO21HQUF0QixzQkFBc0IsK0NBVHBCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFVBQVUsRUFBRSxjQUFjO2dCQUMxQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDckI7U0FDSix3UUNyQ0wseS9FQXlFQTs7NEZEakNhLHNCQUFzQjtrQkFkbEMsU0FBUzsrQkFDSSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsV0FBVzs0QkFDcEIsVUFBVSxFQUFFLGNBQWM7NEJBQzFCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQzt5QkFDckI7cUJBQ0osY0FDVyxLQUFLOzhCQUdhLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNZLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRmllbGRCYXNlQ29tcG9uZW50LFxyXG4gICAgQmFyc2FBcGksXHJcbiAgICBEYXRlU2VydmljZSxcclxuICAgIERhdGVTaGFtc2lTZXJ2aWNlLFxyXG4gICAgTG9nU2VydmljZSxcclxuICAgIERhdGVNaWxhZGlTZXJ2aWNlLFxyXG4gICAgRGF0ZUhpanJpU2VydmljZSxcclxuICAgIERhdGVSYW5nZXNcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuZnVuY3Rpb24gZ2V0RGF0ZVNlcnZpY2UobG9nU2VydmljZTogTG9nU2VydmljZSk6IERhdGVTZXJ2aWNlIHtcclxuICAgIGNvbnN0IGN1bHR1cmUgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmU7XHJcbiAgICBzd2l0Y2ggKGN1bHR1cmUpIHtcclxuICAgICAgICBjYXNlICdmYS1JUic6XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZVNoYW1zaVNlcnZpY2UobG9nU2VydmljZSk7XHJcbiAgICAgICAgY2FzZSAnYXItQUUnOlxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGVIaWpyaVNlcnZpY2UobG9nU2VydmljZSk7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlTWlsYWRpU2VydmljZShsb2dTZXJ2aWNlKTtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JzdS11aS1kYXRlLXJhbmdlLWV4JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1kYXRlLXJhbmdlLWV4LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLWRhdGUtcmFuZ2UtZXguY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlU2VydmljZSxcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogZ2V0RGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgIGRlcHM6IFtMb2dTZXJ2aWNlXVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlEYXRlUmFuZ2VFeENvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKCdkYXRlUmFuZ2VQaWNrZXInKSBkYXRlUmFuZ2VQaWNrZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG4gICAgQFZpZXdDaGlsZCgncG9wb3ZlcicsIHsgc3RhdGljOiB0cnVlIH0pIHBvcG92ZXI6IFBvcG92ZXJDb21wb25lbnQ7XHJcblxyXG4gICAgdmFsdWVTdHIgPSAnJztcclxuICAgIHZhbHVlOiBhbnkgPSBuZXcgQmFyc2FBcGkuQ29tbW9uLkRhdGVSYW5nZURhdGEoKTtcclxuICAgIGRhdGVSYW5nZXMgPSBEYXRlUmFuZ2VzO1xyXG4gICAgaXNPcGVuUG9wb3ZlcjogYm9vbGVhbjtcclxuXHJcbiAgICBnZXQgX2lzVmFsaWRQb3BvdmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLnZhbHVlLkRhdGVSYW5nZVR5cGU7XHJcbiAgICAgICAgcmV0dXJuIC9XZWVrfERheXxUb2RheXxSYW5nZS8udGVzdChtb2RlKSAmJiB0aGlzLnZhbHVlU3RyICE9PSAnJztcclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC52YWx1ZSA9IHRoaXMudmFsdWUgPSB0aGlzLl9kZWZhdWx0VmFsdWUodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2RlY29yYXRlRGF0ZVJhbmdlUGlja2VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EYXRlUmFuZ2VUeXBlQ2hhbmdlKGRhdGVSYW5nZVR5cGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zZXRWYWx1ZVN0cihkYXRlUmFuZ2VUeXBlLnJlcGxhY2UoJ0RhdGVSXycsICcnKSk7XHJcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgb25EYXRlUmFuZ2VDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWw6IGFueSA9IHRoaXMuZGF0ZVJhbmdlUGlja2VyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy52YWx1ZS5GaXJzdERhdGUgPSBlbC5maXJzdERhdGVWYWx1ZTtcclxuICAgICAgICB0aGlzLnZhbHVlLlNlY29uZERhdGUgPSBlbC5sYXN0RGF0ZVZhbHVlO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgICAgICBjb25zdCBmaXJzdERhdGVTdHIgPSB0aGlzLl9kYXRlU2VydmljZS5nZXREYXRlU3RyaW5nKHRoaXMudmFsdWUuRmlyc3REYXRlLCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kRGF0ZVN0ciA9IHRoaXMuX2RhdGVTZXJ2aWNlLmdldERhdGVTdHJpbmcodGhpcy52YWx1ZS5TZWNvbmREYXRlLCB0cnVlLCBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy52YWx1ZVN0ciA9IGZpcnN0RGF0ZVN0ciArICcg2KrYpyAnICsgc2Vjb25kRGF0ZVN0cjtcclxuICAgIH1cclxuXHJcbiAgICBvbk9wZW5Qb3BvdmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9pc1ZhbGlkUG9wb3ZlciAmJiB0aGlzLl9pc1ZhbGlkUG9wb3Zlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3NldFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC52YWx1ZSA9IHZhbHVlID0gdGhpcy5fZGVmYXVsdFZhbHVlKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fc2V0VmFsdWVTdHIodmFsdWUuRGF0ZVJhbmdlVHlwZSk7XHJcbiAgICAgICAgc3VwZXIuX3NldFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX2RlZmF1bHRWYWx1ZSh2YWx1ZSk6IGFueSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHtcclxuICAgICAgICAgICAgICAgIERhdGVSYW5nZVR5cGU6ICdOb25lJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRWYWx1ZVN0cihkYXRlUmFuZ2VUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlLkRhdGVSYW5nZVR5cGUgPSBkYXRlUmFuZ2VUeXBlO1xyXG4gICAgICAgIHN3aXRjaCAoZGF0ZVJhbmdlVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdTcGVjaWZpY1JhbmdlJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSAnJztcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RlY29yYXRlRGF0ZVJhbmdlUGlja2VyKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIGNhc2UgJ0RheXNCZWZvcmUnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9IHRoaXMuX2dldERheXNCZWZvcmUoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdUb2RheSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy5fZ2V0VG9kYXkoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdEYXlzQWZ0ZXInOlxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9IHRoaXMuX2dldERheXNBZnRlcigpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1ByZXZXZWVrJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLl9nZXRQcmV2V2VlaygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1RoaXNXZWVrJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLl9nZXRUaGlzV2VlaygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ05leHRXZWVrJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLl9nZXROZXh0V2VlaygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1ByZXZNb250aCc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy5fZ2V0UHJldk1vbnRoKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnVGhpc01vbnRoJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLl9nZXRUaGlzTW9udGgoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdOZXh0TW9udGgnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9IHRoaXMuX2dldE5leHRNb250aCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1ByZXZZZWFyJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLl9nZXRQcmV2WWVhcigpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1RoaXNZZWFyJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLl9nZXRUaGlzWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ05leHRZZWFyJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLl9nZXROZXh0WWVhcigpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RyID0gQmFyc2FBcGkuQkJCLkRhdGVSX05vbmU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWNvcmF0ZURhdGVSYW5nZVBpY2tlcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRUb2RheSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5CQkIuRGF0ZVJfVG9kYXkgKyAnOiAnICsgdGhpcy5fZGF0ZVNlcnZpY2UuZ2V0RGF5U3RyKCdUb2RheScpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldFRoaXNXZWVrKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkJCQi5EYXRlUl9UaGlzV2VlayArICc6ICcgKyB0aGlzLl9kYXRlU2VydmljZS5nZXRXZWVrU3RyKCdUaGlzV2VlaycpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldFRoaXNNb250aCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5CQkIuRGF0ZVJfVGhpc01vbnRoICsgJzogJyArIHRoaXMuX2RhdGVTZXJ2aWNlLmdldE1vbnRoU3RyKCdUaGlzTW9udGgnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRUaGlzWWVhcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5CQkIuRGF0ZVJfVGhpc1llYXIgKyAnOiAnICsgdGhpcy5fZGF0ZVNlcnZpY2UuZ2V0WWVhclN0cignVGhpc1llYXInKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXREYXlzQmVmb3JlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkJCQi5EYXRlUl9EYXlzQmVmb3JlICsgJzogJyArIHRoaXMuX2RhdGVTZXJ2aWNlLmdldERheVN0cignRGF5c0JlZm9yZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldFByZXZXZWVrKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkJCQi5EYXRlUl9QcmV2V2VlayArICc6ICcgKyB0aGlzLl9kYXRlU2VydmljZS5nZXRXZWVrU3RyKCdQcmV2V2VlaycpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldFByZXZNb250aCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5CQkIuRGF0ZVJfUHJldk1vbnRoICsgJzogJyArIHRoaXMuX2RhdGVTZXJ2aWNlLmdldE1vbnRoU3RyKCdQcmV2TW9udGgnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRQcmV2WWVhcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5CQkIuRGF0ZVJfUHJldlllYXIgKyAnOiAnICsgdGhpcy5fZGF0ZVNlcnZpY2UuZ2V0WWVhclN0cignUHJldlllYXInKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXREYXlzQWZ0ZXIoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQmFyc2FBcGkuQkJCLkRhdGVSX0RheXNBZnRlciArICc6ICcgKyB0aGlzLl9kYXRlU2VydmljZS5nZXREYXlTdHIoJ0RheXNBZnRlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldE5leHRXZWVrKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkJCQi5EYXRlUl9OZXh0V2VlayArICc6ICcgKyB0aGlzLl9kYXRlU2VydmljZS5nZXRXZWVrU3RyKCdOZXh0V2VlaycpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldE5leHRNb250aCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5CQkIuRGF0ZVJfTmV4dE1vbnRoICsgJzogJyArIHRoaXMuX2RhdGVTZXJ2aWNlLmdldE1vbnRoU3RyKCdOZXh0TW9udGgnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXROZXh0WWVhcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5CQkIuRGF0ZVJfTmV4dFllYXIgKyAnOiAnICsgdGhpcy5fZGF0ZVNlcnZpY2UuZ2V0WWVhclN0cignTmV4dFllYXInKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9kZWNvcmF0ZURhdGVSYW5nZVBpY2tlcigpOiB2b2lkIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxEYXRlUmFuZ2VQaWNrZXIgPSB0aGlzLmRhdGVSYW5nZVBpY2tlcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGVsRGF0ZVJhbmdlUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1aTVJbnB1dEVsID0gZWxEYXRlUmFuZ2VQaWNrZXIuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignLnVpNS1kYXRlLXBpY2tlci1pbnB1dCcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICAgICAgICAgICAgICB1aTVJbnB1dEVsLFxyXG4gICAgICAgICAgICAgICAgICAgICdzdHlsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKHZhbHVlPy5EYXRlUmFuZ2VUeXBlID09PSAnU3BlY2lmaWNSYW5nZScpIHtcclxuPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPHVpNS1kYXRlcmFuZ2UtcGlja2VyXHJcbiAgICAgICAgaWQ9XCJteWRhdGVyYW5nZS1waWNrZXIxXCJcclxuICAgICAgICAobW91c2VvdmVyKT1cIm9uT3BlblBvcG92ZXIoKVwiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwicG9wb3Zlci5jbG9zZSgpXCJcclxuICAgICAgICAjZGF0ZVJhbmdlUGlja2VyXHJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVSYW5nZUNoYW5nZSgpXCJcclxuICAgICAgICBmb3JtYXQtcGF0dGVybj1cInl5eXkvTU0vZGRcIlxyXG4gICAgICAgIFthdHRyLnJlYWRvbmx5XT1cIihyZWFkb25seSQgfCBhc3luYykgPT09IHRydWUgPyB0cnVlIDogbnVsbFwiXHJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiKGRpc2FibGUkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxyXG4gICAgICAgIFtwcmltYXJ5Q2FsZW5kYXJUeXBlXT1cIlNldHRpbmcuQ2FsZW5kYXJUeXBlICE9PSAnR3JlZ29yaWFuJyA/ICdQZXJzaWFuJyA6IFNldHRpbmcuQ2FsZW5kYXJUeXBlXCJcclxuICAgID5cclxuICAgIDwvdWk1LWRhdGVyYW5nZS1waWNrZXI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4tZHJvcC1kb3duXCJcclxuICAgICAgICBmZC1idXR0b25cclxuICAgICAgICBbZmRUeXBlXT1cIidzdGFuZGFyZCdcIlxyXG4gICAgICAgIFtnbHlwaF09XCInc2xpbS1hcnJvdy1kb3duJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInBvcG92ZXIub3BlbigpXCJcclxuICAgID48L2J1dHRvbj5cclxuPC9kaXY+XHJcbn0gQGVsc2Uge1xyXG48IS0tIDxpbnB1dCBmZC1mb3JtLWNvbnRyb2wgWyhuZ01vZGVsKV09XCJ2YWx1ZVN0clwiIFtmZC1pbmxpbmUtaGVscF09XCJ2YWx1ZVN0clwiIFtyZWFkT25seV09XCJ0cnVlXCIgLz4gLS0+XHJcbjxmZC1pbnB1dC1ncm91cFxyXG4gICAgcGxhY2VtZW50PVwiYWZ0ZXJcIlxyXG4gICAgZ2x5cGg9XCJzbGltLWFycm93LWRvd25cIlxyXG4gICAgZ2x5cGhBcmlhTGFiZWw9XCJTZWxlY3QgRGF0ZSBSYW5nZVwiXHJcbiAgICBbYnV0dG9uXT1cInRydWVcIlxyXG4gICAgW25nTW9kZWxdPVwidmFsdWVTdHJcIlxyXG4gICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJwb3BvdmVyLm9wZW4oKVwiXHJcbj5cclxuPC9mZC1pbnB1dC1ncm91cD5cclxufVxyXG48bmctdGVtcGxhdGUgI2lucHV0PlxyXG4gICAgPCEtLSA8aW5wdXQgZmQtZm9ybS1jb250cm9sIFsobmdNb2RlbCldPVwidmFsdWVTdHJcIiBbZmQtaW5saW5lLWhlbHBdPVwidmFsdWVTdHJcIiBbcmVhZE9ubHldPVwidHJ1ZVwiIC8+IC0tPlxyXG5cclxuICAgIDxmZC1pbnB1dC1ncm91cFxyXG4gICAgICAgIHBsYWNlbWVudD1cImFmdGVyXCJcclxuICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiXHJcbiAgICAgICAgZ2x5cGhBcmlhTGFiZWw9XCJTZWxlY3QgRGF0ZSBSYW5nZVwiXHJcbiAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVN0clwiXHJcbiAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJwb3BvdmVyLm9wZW4oKVwiXHJcbiAgICA+XHJcbiAgICA8L2ZkLWlucHV0LWdyb3VwPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSA8YnV0dG9uIGZkLWJ1dHRvbj5cclxuPGZkLXNlbGVjdCAodmFsdWVDaGFuZ2UpPVwib25EYXRlUmFuZ2VUeXBlQ2hhbmdlKCRldmVudClcIj5cclxuICA8ZmQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZGF0ZVJhbmdlc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfCBiYmJUcmFuc2xhdGUgfX08L2ZkLW9wdGlvbj5cclxuPC9mZC1zZWxlY3Q+XHJcbjwvYnV0dG9uPiAtLT5cclxuXHJcbjxmZC1wb3BvdmVyXHJcbiAgICAjcG9wb3ZlclxyXG4gICAgc3R5bGU9XCJkaXNwbGF5OiBibG9ja1wiXHJcbiAgICBbZmlsbENvbnRyb2xNb2RlXT1cIidhdC1sZWFzdCdcIlxyXG4gICAgcGxhY2VtZW50PVwiYm90dG9tLXN0YXJ0XCJcclxuICAgIFsoaXNPcGVuKV09XCJpc09wZW5Qb3BvdmVyXCJcclxuPlxyXG4gICAgPGZkLXBvcG92ZXItYm9keT5cclxuICAgICAgICA8dWwgZmQtbGlzdD5cclxuICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIGRhdGVSYW5nZXM7IHRyYWNrIG9wdGlvbikge1xyXG4gICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIChjbGljayk9XCJwb3BvdmVyLmNsb3NlKCk7IG9uRGF0ZVJhbmdlVHlwZUNoYW5nZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbms+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyBvcHRpb24gfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3VsPlxyXG4gICAgPC9mZC1wb3BvdmVyLWJvZHk+XHJcbjwvZmQtcG9wb3Zlcj5cclxuIl19