@pepperi-addons/ngx-lib 0.2.59-query-builder.7 → 0.2.61

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 (521) hide show
  1. package/README.md +39 -39
  2. package/address/address.component.theme.scss +8 -8
  3. package/address/pepperi-addons-ngx-lib-address.metadata.json +1 -1
  4. package/attachment/attachment.component.d.ts +0 -1
  5. package/attachment/attachment.component.theme.scss +3 -3
  6. package/attachment/pepperi-addons-ngx-lib-attachment.metadata.json +1 -1
  7. package/bread-crumbs/bread-crumbs.component.theme.scss +8 -8
  8. package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.metadata.json +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-address.umd.js +1 -1
  10. package/bundles/pepperi-addons-ngx-lib-address.umd.js.map +1 -1
  11. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +1 -6
  12. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js.map +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +1 -1
  14. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js.map +1 -1
  15. package/bundles/pepperi-addons-ngx-lib-button.umd.js +1 -1
  16. package/bundles/pepperi-addons-ngx-lib-button.umd.js.map +1 -1
  17. package/bundles/pepperi-addons-ngx-lib-carousel.umd.js.map +1 -1
  18. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +1 -4
  19. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js.map +1 -1
  20. package/bundles/pepperi-addons-ngx-lib-color.umd.js +2 -7
  21. package/bundles/pepperi-addons-ngx-lib-color.umd.js.map +1 -1
  22. package/bundles/pepperi-addons-ngx-lib-date.umd.js +3 -5
  23. package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
  24. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +2 -2
  25. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js.map +1 -1
  26. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +1 -1
  27. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js.map +1 -1
  28. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +1 -1
  29. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js.map +1 -1
  30. package/bundles/pepperi-addons-ngx-lib-form.umd.js +23 -26
  31. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  32. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +1 -1
  33. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js.map +1 -1
  34. package/bundles/pepperi-addons-ngx-lib-icon.umd.js.map +1 -1
  35. package/bundles/pepperi-addons-ngx-lib-image.umd.js +1 -6
  36. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  37. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +1 -6
  38. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js.map +1 -1
  39. package/bundles/pepperi-addons-ngx-lib-list.umd.js +8 -8
  40. package/bundles/pepperi-addons-ngx-lib-list.umd.js.map +1 -1
  41. package/bundles/pepperi-addons-ngx-lib-menu.umd.js +2 -2
  42. package/bundles/pepperi-addons-ngx-lib-menu.umd.js.map +1 -1
  43. package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js +1 -1
  44. package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js.map +1 -1
  45. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +1 -6
  46. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js.map +1 -1
  47. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +1 -6
  48. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js.map +1 -1
  49. package/bundles/pepperi-addons-ngx-lib-search.umd.js +1 -1
  50. package/bundles/pepperi-addons-ngx-lib-search.umd.js.map +1 -1
  51. package/bundles/pepperi-addons-ngx-lib-select.umd.js +1 -6
  52. package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
  53. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +1 -9
  54. package/bundles/pepperi-addons-ngx-lib-separator.umd.js.map +1 -1
  55. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +1 -1
  56. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js.map +1 -1
  57. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +1 -6
  58. package/bundles/pepperi-addons-ngx-lib-signature.umd.js.map +1 -1
  59. package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js +1 -1
  60. package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js.map +1 -1
  61. package/bundles/pepperi-addons-ngx-lib-slider.umd.js +1 -1
  62. package/bundles/pepperi-addons-ngx-lib-slider.umd.js.map +1 -1
  63. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +40 -307
  64. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js.map +1 -1
  65. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +1 -6
  66. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js.map +1 -1
  67. package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js +1 -1
  68. package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js.map +1 -1
  69. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +3 -5
  70. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js.map +1 -1
  71. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +1 -1
  72. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js.map +1 -1
  73. package/bundles/pepperi-addons-ngx-lib.umd.js +36 -38
  74. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  75. package/button/button.component.theme.scss +2 -2
  76. package/button/pepperi-addons-ngx-lib-button.metadata.json +1 -1
  77. package/checkbox/checkbox.component.theme.scss +2 -2
  78. package/checkbox/pepperi-addons-ngx-lib-checkbox.metadata.json +1 -1
  79. package/color/color-picker.component.theme.scss +175 -175
  80. package/color/color.component.d.ts +0 -1
  81. package/color/color.component.theme.scss +7 -7
  82. package/color/pepperi-addons-ngx-lib-color.metadata.json +1 -1
  83. package/core/common/services/addon.service.d.ts +2 -1
  84. package/core/common/services/file.service.d.ts +4 -4
  85. package/core/customization/customization.service.d.ts +0 -1
  86. package/date/date.component.theme.scss +169 -169
  87. package/date/pepperi-addons-ngx-lib-date.metadata.json +1 -1
  88. package/dialog/dialog.component.theme.scss +5 -5
  89. package/dialog/pepperi-addons-ngx-lib-dialog.metadata.json +1 -1
  90. package/esm2015/address/address.component.js +2 -2
  91. package/esm2015/address/address.module.js +1 -1
  92. package/esm2015/address/public-api.js +1 -1
  93. package/esm2015/attachment/attachment.component.js +2 -7
  94. package/esm2015/attachment/attachment.module.js +1 -1
  95. package/esm2015/attachment/public-api.js +1 -1
  96. package/esm2015/bread-crumbs/bread-crumbs.component.js +2 -2
  97. package/esm2015/bread-crumbs/bread-crumbs.model.js +1 -1
  98. package/esm2015/bread-crumbs/bread-crumbs.module.js +1 -1
  99. package/esm2015/bread-crumbs/public-api.js +1 -1
  100. package/esm2015/button/button.component.js +2 -2
  101. package/esm2015/button/button.model.js +1 -1
  102. package/esm2015/button/button.module.js +1 -1
  103. package/esm2015/button/public-api.js +1 -1
  104. package/esm2015/carousel/carousel-item.directive.js +1 -1
  105. package/esm2015/carousel/carousel.component.js +15 -15
  106. package/esm2015/carousel/carousel.module.js +1 -1
  107. package/esm2015/carousel/public-api.js +1 -1
  108. package/esm2015/checkbox/checkbox.component.js +2 -5
  109. package/esm2015/checkbox/checkbox.module.js +1 -1
  110. package/esm2015/checkbox/public-api.js +1 -1
  111. package/esm2015/color/color-picker.component.js +28 -28
  112. package/esm2015/color/color.component.js +2 -7
  113. package/esm2015/color/color.model.js +1 -1
  114. package/esm2015/color/color.module.js +1 -1
  115. package/esm2015/color/public-api.js +1 -1
  116. package/esm2015/core/clipboard/clipboard.directive.js +1 -1
  117. package/esm2015/core/clipboard/clipboard.service.js +1 -1
  118. package/esm2015/core/clipboard/index.js +1 -1
  119. package/esm2015/core/clipboard/public-api.js +1 -1
  120. package/esm2015/core/common/directives/auto-width.directive.js +1 -1
  121. package/esm2015/core/common/directives/button-blur.directive.js +1 -1
  122. package/esm2015/core/common/directives/button-loader.directive.js +1 -1
  123. package/esm2015/core/common/directives/data-qa.directive.js +1 -1
  124. package/esm2015/core/common/directives/index.js +1 -1
  125. package/esm2015/core/common/directives/menu-blur.directive.js +1 -1
  126. package/esm2015/core/common/directives/prevent-multi-click.directive.js +1 -1
  127. package/esm2015/core/common/directives/public-api.js +1 -1
  128. package/esm2015/core/common/index.js +1 -1
  129. package/esm2015/core/common/model/index.js +1 -1
  130. package/esm2015/core/common/model/papi.model.js +1 -1
  131. package/esm2015/core/common/model/public-api.js +1 -1
  132. package/esm2015/core/common/model/utilities.model.js +1 -1
  133. package/esm2015/core/common/model/wapi.model.js +1 -1
  134. package/esm2015/core/common/pipes/common-pipes.js +1 -1
  135. package/esm2015/core/common/pipes/index.js +1 -1
  136. package/esm2015/core/common/pipes/public-api.js +1 -1
  137. package/esm2015/core/common/public-api.js +1 -1
  138. package/esm2015/core/common/services/addon.service.js +19 -4
  139. package/esm2015/core/common/services/color.service.js +1 -1
  140. package/esm2015/core/common/services/cookie.service.js +1 -1
  141. package/esm2015/core/common/services/data-convertor.service.js +1 -1
  142. package/esm2015/core/common/services/file.service.js +9 -9
  143. package/esm2015/core/common/services/index.js +1 -1
  144. package/esm2015/core/common/services/jwt-helper.service.js +1 -1
  145. package/esm2015/core/common/services/public-api.js +1 -1
  146. package/esm2015/core/common/services/session.service.js +1 -1
  147. package/esm2015/core/common/services/utilities.service.js +4 -25
  148. package/esm2015/core/common/services/validator.service.js +1 -1
  149. package/esm2015/core/common/services/window-scrolling.service.js +5 -5
  150. package/esm2015/core/customization/customization.model.js +1 -1
  151. package/esm2015/core/customization/customization.service.js +2 -4
  152. package/esm2015/core/customization/index.js +1 -1
  153. package/esm2015/core/customization/public-api.js +1 -1
  154. package/esm2015/core/http/index.js +1 -1
  155. package/esm2015/core/http/interceptors/error.interceptor.js +1 -1
  156. package/esm2015/core/http/interceptors/index.js +1 -1
  157. package/esm2015/core/http/interceptors/loader.interceptor.js +1 -1
  158. package/esm2015/core/http/interceptors/profiler.interceptor.js +1 -1
  159. package/esm2015/core/http/public-api.js +1 -1
  160. package/esm2015/core/http/services/http.service.js +1 -1
  161. package/esm2015/core/http/services/loader.service.js +1 -1
  162. package/esm2015/core/index.js +1 -1
  163. package/esm2015/core/layout/index.js +1 -1
  164. package/esm2015/core/layout/layout.service.js +1 -1
  165. package/esm2015/core/layout/public-api.js +1 -1
  166. package/esm2015/core/layout/rtl.directive.js +1 -1
  167. package/esm2015/core/portal/attach.directive.js +1 -1
  168. package/esm2015/core/portal/index.js +1 -1
  169. package/esm2015/core/portal/portal.service.js +1 -1
  170. package/esm2015/core/portal/public-api.js +1 -1
  171. package/esm2015/core/portal/target.directive.js +1 -1
  172. package/esm2015/core/public-api.js +1 -1
  173. package/esm2015/core/scroll-to/index.js +1 -1
  174. package/esm2015/core/scroll-to/public-api.js +1 -1
  175. package/esm2015/core/scroll-to/scroll-to.service.js +1 -1
  176. package/esm2015/date/date.component.js +4 -6
  177. package/esm2015/date/date.module.js +1 -1
  178. package/esm2015/date/public-api.js +1 -1
  179. package/esm2015/dialog/default-dialog.component.js +2 -2
  180. package/esm2015/dialog/dialog.component.js +2 -2
  181. package/esm2015/dialog/dialog.model.js +1 -1
  182. package/esm2015/dialog/dialog.module.js +1 -1
  183. package/esm2015/dialog/dialog.service.js +1 -1
  184. package/esm2015/dialog/public-api.js +1 -1
  185. package/esm2015/field-title/field-title.component.js +2 -2
  186. package/esm2015/field-title/field-title.module.js +1 -1
  187. package/esm2015/field-title/public-api.js +1 -1
  188. package/esm2015/files-uploader/files-uploader.component.js +2 -2
  189. package/esm2015/files-uploader/files-uploader.module.js +1 -1
  190. package/esm2015/files-uploader/public-api.js +1 -1
  191. package/esm2015/form/field-generator.component.js +2 -2
  192. package/esm2015/form/form.component.js +2 -2
  193. package/esm2015/form/form.module.js +1 -1
  194. package/esm2015/form/indicators.component.js +2 -2
  195. package/esm2015/form/internal-button.component.js +18 -21
  196. package/esm2015/form/internal-carusel.component.js +2 -2
  197. package/esm2015/form/internal-carusel.service.js +1 -1
  198. package/esm2015/form/internal-list.component.js +2 -2
  199. package/esm2015/form/internal-menu.component.js +2 -2
  200. package/esm2015/form/internal-page.component.js +2 -2
  201. package/esm2015/form/internal-page.service.js +1 -1
  202. package/esm2015/form/public-api.js +1 -1
  203. package/esm2015/group-buttons/group-buttons.component.js +2 -2
  204. package/esm2015/group-buttons/group-buttons.module.js +1 -1
  205. package/esm2015/group-buttons/public-api.js +1 -1
  206. package/esm2015/icon/icon-generated-all.model.js +1 -1
  207. package/esm2015/icon/icon-generated.model.js +1 -1
  208. package/esm2015/icon/icon-registry.service.js +2 -2
  209. package/esm2015/icon/icon.component.js +1 -1
  210. package/esm2015/icon/icon.module.js +1 -1
  211. package/esm2015/icon/public-api.js +1 -1
  212. package/esm2015/image/image.component.js +2 -7
  213. package/esm2015/image/image.module.js +1 -1
  214. package/esm2015/image/public-api.js +1 -1
  215. package/esm2015/images-filmstrip/images-filmstrip.component.js +2 -7
  216. package/esm2015/images-filmstrip/images-filmstrip.module.js +1 -1
  217. package/esm2015/images-filmstrip/public-api.js +1 -1
  218. package/esm2015/list/list-actions.component.js +2 -2
  219. package/esm2015/list/list-carousel.component.js +2 -2
  220. package/esm2015/list/list-chooser.component.js +2 -2
  221. package/esm2015/list/list-pager.component.js +2 -2
  222. package/esm2015/list/list-sorting.component.js +2 -2
  223. package/esm2015/list/list-total.component.js +2 -2
  224. package/esm2015/list/list-views.component.js +2 -2
  225. package/esm2015/list/list.component.js +2 -2
  226. package/esm2015/list/list.model.js +1 -1
  227. package/esm2015/list/list.module.js +1 -1
  228. package/esm2015/list/public-api.js +1 -1
  229. package/esm2015/menu/menu-item.component.js +2 -2
  230. package/esm2015/menu/menu.component.js +2 -2
  231. package/esm2015/menu/menu.model.js +1 -1
  232. package/esm2015/menu/menu.module.js +1 -1
  233. package/esm2015/menu/public-api.js +1 -1
  234. package/esm2015/ngx-lib.module.js +1 -1
  235. package/esm2015/page-layout/page-layout.component.js +2 -2
  236. package/esm2015/page-layout/page-layout.module.js +1 -1
  237. package/esm2015/page-layout/public-api.js +1 -1
  238. package/esm2015/public-api.js +1 -1
  239. package/esm2015/quantity-selector/public-api.js +1 -1
  240. package/esm2015/quantity-selector/quantity-selector-validation.directive.js +1 -1
  241. package/esm2015/quantity-selector/quantity-selector.component.js +2 -7
  242. package/esm2015/quantity-selector/quantity-selector.module.js +1 -1
  243. package/esm2015/quantity-selector/quantity-selector.pipes.js +1 -1
  244. package/esm2015/rich-html-textarea/public-api.js +1 -1
  245. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +2 -7
  246. package/esm2015/rich-html-textarea/rich-html-textarea.module.js +1 -1
  247. package/esm2015/search/public-api.js +1 -1
  248. package/esm2015/search/search.component.js +2 -2
  249. package/esm2015/search/search.model.js +1 -1
  250. package/esm2015/search/search.module.js +1 -1
  251. package/esm2015/select/public-api.js +1 -1
  252. package/esm2015/select/select.component.js +2 -7
  253. package/esm2015/select/select.module.js +1 -1
  254. package/esm2015/separator/public-api.js +1 -1
  255. package/esm2015/separator/separator.component.js +2 -10
  256. package/esm2015/separator/separator.module.js +1 -1
  257. package/esm2015/side-bar/public-api.js +1 -1
  258. package/esm2015/side-bar/side-bar.component.js +2 -2
  259. package/esm2015/side-bar/side-bar.model.js +1 -1
  260. package/esm2015/side-bar/side-bar.module.js +1 -1
  261. package/esm2015/signature/public-api.js +1 -1
  262. package/esm2015/signature/signature.component.js +2 -7
  263. package/esm2015/signature/signature.module.js +1 -1
  264. package/esm2015/size-detector/public-api.js +1 -1
  265. package/esm2015/size-detector/size-detector.component.js +2 -2
  266. package/esm2015/size-detector/size-detector.module.js +1 -1
  267. package/esm2015/slider/public-api.js +1 -1
  268. package/esm2015/slider/slider.component.js +2 -2
  269. package/esm2015/slider/slider.module.js +1 -1
  270. package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +3 -23
  271. package/esm2015/smart-filters/common/filter-actions.component.js +2 -2
  272. package/esm2015/smart-filters/common/model/base-filter-component.js +8 -35
  273. package/esm2015/smart-filters/common/model/creator.js +2 -8
  274. package/esm2015/smart-filters/common/model/field.js +1 -12
  275. package/esm2015/smart-filters/common/model/filter.js +1 -1
  276. package/esm2015/smart-filters/common/model/operator.js +8 -8
  277. package/esm2015/smart-filters/common/model/type.js +1 -1
  278. package/esm2015/smart-filters/date-filter/date-filter.component.js +2 -45
  279. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +14 -53
  280. package/esm2015/smart-filters/number-filter/number-filter.component.js +2 -27
  281. package/esm2015/smart-filters/public-api.js +1 -2
  282. package/esm2015/smart-filters/smart-filters.component.js +2 -2
  283. package/esm2015/smart-filters/smart-filters.module.js +3 -16
  284. package/esm2015/textarea/public-api.js +1 -1
  285. package/esm2015/textarea/textarea.component.js +2 -7
  286. package/esm2015/textarea/textarea.module.js +1 -1
  287. package/esm2015/textbox/public-api.js +1 -1
  288. package/esm2015/textbox/textbox-validation.directive.js +1 -1
  289. package/esm2015/textbox/textbox.component.js +4 -6
  290. package/esm2015/textbox/textbox.module.js +1 -1
  291. package/esm2015/textbox-icon/public-api.js +1 -1
  292. package/esm2015/textbox-icon/textbox-icon.component.js +2 -2
  293. package/esm2015/textbox-icon/textbox-icon.module.js +1 -1
  294. package/esm2015/top-bar/public-api.js +1 -1
  295. package/esm2015/top-bar/top-bar.component.js +2 -2
  296. package/esm2015/top-bar/top-bar.model.js +1 -1
  297. package/esm2015/top-bar/top-bar.module.js +1 -1
  298. package/fesm2015/pepperi-addons-ngx-lib-address.js +1 -1
  299. package/fesm2015/pepperi-addons-ngx-lib-address.js.map +1 -1
  300. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +1 -6
  301. package/fesm2015/pepperi-addons-ngx-lib-attachment.js.map +1 -1
  302. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +1 -1
  303. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js.map +1 -1
  304. package/fesm2015/pepperi-addons-ngx-lib-button.js +1 -1
  305. package/fesm2015/pepperi-addons-ngx-lib-button.js.map +1 -1
  306. package/fesm2015/pepperi-addons-ngx-lib-carousel.js +14 -14
  307. package/fesm2015/pepperi-addons-ngx-lib-carousel.js.map +1 -1
  308. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +1 -4
  309. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js.map +1 -1
  310. package/fesm2015/pepperi-addons-ngx-lib-color.js +28 -33
  311. package/fesm2015/pepperi-addons-ngx-lib-color.js.map +1 -1
  312. package/fesm2015/pepperi-addons-ngx-lib-date.js +3 -5
  313. package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
  314. package/fesm2015/pepperi-addons-ngx-lib-dialog.js +2 -2
  315. package/fesm2015/pepperi-addons-ngx-lib-dialog.js.map +1 -1
  316. package/fesm2015/pepperi-addons-ngx-lib-field-title.js +1 -1
  317. package/fesm2015/pepperi-addons-ngx-lib-field-title.js.map +1 -1
  318. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +1 -1
  319. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js.map +1 -1
  320. package/fesm2015/pepperi-addons-ngx-lib-form.js +23 -26
  321. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  322. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +1 -1
  323. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js.map +1 -1
  324. package/fesm2015/pepperi-addons-ngx-lib-icon.js +1 -1
  325. package/fesm2015/pepperi-addons-ngx-lib-icon.js.map +1 -1
  326. package/fesm2015/pepperi-addons-ngx-lib-image.js +1 -6
  327. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  328. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +1 -6
  329. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js.map +1 -1
  330. package/fesm2015/pepperi-addons-ngx-lib-list.js +8 -8
  331. package/fesm2015/pepperi-addons-ngx-lib-list.js.map +1 -1
  332. package/fesm2015/pepperi-addons-ngx-lib-menu.js +2 -2
  333. package/fesm2015/pepperi-addons-ngx-lib-menu.js.map +1 -1
  334. package/fesm2015/pepperi-addons-ngx-lib-page-layout.js +1 -1
  335. package/fesm2015/pepperi-addons-ngx-lib-page-layout.js.map +1 -1
  336. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +1 -6
  337. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js.map +1 -1
  338. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +1 -6
  339. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js.map +1 -1
  340. package/fesm2015/pepperi-addons-ngx-lib-search.js +1 -1
  341. package/fesm2015/pepperi-addons-ngx-lib-search.js.map +1 -1
  342. package/fesm2015/pepperi-addons-ngx-lib-select.js +1 -6
  343. package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
  344. package/fesm2015/pepperi-addons-ngx-lib-separator.js +1 -9
  345. package/fesm2015/pepperi-addons-ngx-lib-separator.js.map +1 -1
  346. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +1 -1
  347. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js.map +1 -1
  348. package/fesm2015/pepperi-addons-ngx-lib-signature.js +1 -6
  349. package/fesm2015/pepperi-addons-ngx-lib-signature.js.map +1 -1
  350. package/fesm2015/pepperi-addons-ngx-lib-size-detector.js +1 -1
  351. package/fesm2015/pepperi-addons-ngx-lib-size-detector.js.map +1 -1
  352. package/fesm2015/pepperi-addons-ngx-lib-slider.js +1 -1
  353. package/fesm2015/pepperi-addons-ngx-lib-slider.js.map +1 -1
  354. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +37 -294
  355. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js.map +1 -1
  356. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +1 -6
  357. package/fesm2015/pepperi-addons-ngx-lib-textarea.js.map +1 -1
  358. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js +1 -1
  359. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js.map +1 -1
  360. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +3 -5
  361. package/fesm2015/pepperi-addons-ngx-lib-textbox.js.map +1 -1
  362. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +1 -1
  363. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js.map +1 -1
  364. package/fesm2015/pepperi-addons-ngx-lib.js +34 -42
  365. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  366. package/field-title/field-title.component.theme.scss +2 -2
  367. package/field-title/pepperi-addons-ngx-lib-field-title.metadata.json +1 -1
  368. package/files-uploader/files-uploader.component.theme.scss +2 -2
  369. package/files-uploader/pepperi-addons-ngx-lib-files-uploader.metadata.json +1 -1
  370. package/form/form.component.theme.scss +2 -2
  371. package/form/indicators.component.theme.scss +7 -7
  372. package/form/internal-button.component.d.ts +1 -0
  373. package/form/internal-button.component.theme.scss +2 -2
  374. package/form/internal-menu.component.theme.scss +3 -3
  375. package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
  376. package/group-buttons/group-buttons.component.theme.scss +15 -15
  377. package/group-buttons/pepperi-addons-ngx-lib-group-buttons.metadata.json +1 -1
  378. package/image/image.component.d.ts +0 -1
  379. package/image/image.component.theme.scss +35 -35
  380. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  381. package/images-filmstrip/images-filmstrip.component.d.ts +0 -1
  382. package/images-filmstrip/images-filmstrip.component.theme.scss +32 -32
  383. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.metadata.json +1 -1
  384. package/list/list-actions.component.theme.scss +3 -3
  385. package/list/list-carousel.component.theme.scss +9 -9
  386. package/list/list-chooser.component.theme.scss +3 -3
  387. package/list/list-pager.component.theme.scss +3 -3
  388. package/list/list-sorting.component.theme.scss +3 -3
  389. package/list/list-total.component.theme.scss +10 -10
  390. package/list/list-views.component.theme.scss +3 -3
  391. package/list/list.component.theme.scss +5 -5
  392. package/list/list_old.component.theme.scss +5 -5
  393. package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
  394. package/menu/menu.component.theme.scss +2 -2
  395. package/menu/pepperi-addons-ngx-lib-menu.metadata.json +1 -1
  396. package/package.json +1 -1
  397. package/page-layout/page-layout.component.theme.scss +7 -7
  398. package/page-layout/pepperi-addons-ngx-lib-page-layout.metadata.json +1 -1
  399. package/pepperi-addons-ngx-lib.metadata.json +1 -1
  400. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.metadata.json +1 -1
  401. package/quantity-selector/quantity-selector.component.d.ts +0 -1
  402. package/quantity-selector/quantity-selector.component.theme.scss +77 -77
  403. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.metadata.json +1 -1
  404. package/rich-html-textarea/rich-html-textarea.component.d.ts +0 -1
  405. package/rich-html-textarea/rich-html-textarea.component.theme.scss +236 -236
  406. package/search/pepperi-addons-ngx-lib-search.metadata.json +1 -1
  407. package/search/search.component.theme.scss +3 -3
  408. package/select/pepperi-addons-ngx-lib-select.metadata.json +1 -1
  409. package/select/select.component.d.ts +0 -1
  410. package/select/select.component.theme.scss +2 -2
  411. package/separator/pepperi-addons-ngx-lib-separator.metadata.json +1 -1
  412. package/separator/separator.component.theme.scss +2 -2
  413. package/side-bar/pepperi-addons-ngx-lib-side-bar.metadata.json +1 -1
  414. package/side-bar/side-bar.component.theme.scss +25 -25
  415. package/signature/pepperi-addons-ngx-lib-signature.metadata.json +1 -1
  416. package/signature/signature.component.d.ts +0 -1
  417. package/signature/signature.component.theme.scss +28 -28
  418. package/size-detector/pepperi-addons-ngx-lib-size-detector.metadata.json +1 -1
  419. package/slider/pepperi-addons-ngx-lib-slider.metadata.json +1 -1
  420. package/slider/slider.component.theme.scss +65 -65
  421. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +1 -6
  422. package/smart-filters/common/model/base-filter-component.d.ts +0 -7
  423. package/smart-filters/common/model/field.d.ts +0 -4
  424. package/smart-filters/common/model/operator.d.ts +0 -1
  425. package/smart-filters/common/model/type.d.ts +2 -2
  426. package/smart-filters/date-filter/date-filter.component.d.ts +1 -8
  427. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +0 -6
  428. package/smart-filters/number-filter/number-filter.component.d.ts +0 -5
  429. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.metadata.json +1 -1
  430. package/smart-filters/public-api.d.ts +0 -1
  431. package/smart-filters/smart-filters.component.theme.scss +10 -10
  432. package/src/assets/i18n/de.ngx-lib.json +77 -77
  433. package/src/assets/i18n/en.ngx-lib.json +138 -139
  434. package/src/assets/i18n/es.ngx-lib.json +77 -77
  435. package/src/assets/i18n/fr.ngx-lib.json +78 -78
  436. package/src/assets/i18n/he.ngx-lib.json +78 -78
  437. package/src/assets/i18n/hu.ngx-lib.json +78 -78
  438. package/src/assets/i18n/it.ngx-lib.json +78 -78
  439. package/src/assets/i18n/ja.ngx-lib.json +78 -78
  440. package/src/assets/i18n/nl.ngx-lib.json +78 -78
  441. package/src/assets/i18n/pl.ngx-lib.json +78 -78
  442. package/src/assets/i18n/pt.ngx-lib.json +78 -78
  443. package/src/assets/i18n/ru.ngx-lib.json +78 -78
  444. package/src/assets/i18n/zh.ngx-lib.json +76 -76
  445. package/src/assets/images/no-image.svg +41 -41
  446. package/src/core/style/abstracts/breakpoints.scss +35 -35
  447. package/src/core/style/abstracts/functions.scss +422 -422
  448. package/src/core/style/abstracts/mixins.scss +797 -797
  449. package/src/core/style/abstracts/variables.scss +545 -545
  450. package/src/core/style/base/base.scss +873 -873
  451. package/src/core/style/base/grids.scss +4 -4
  452. package/src/core/style/base/helpers.scss +70 -70
  453. package/src/core/style/base/typography.scss +255 -255
  454. package/src/core/style/components/button.scss +349 -349
  455. package/src/core/style/components/checkbox.scss +473 -473
  456. package/src/core/style/components/datetime.scss +22 -22
  457. package/src/core/style/components/file.scss +219 -219
  458. package/src/core/style/components/general.scss +1086 -1088
  459. package/src/core/style/components/input.scss +94 -94
  460. package/src/core/style/components/quantity-selector.scss +14 -14
  461. package/src/core/style/components/radio-button.scss +168 -168
  462. package/src/core/style/components/select.scss +185 -185
  463. package/src/core/style/components/signature.scss +12 -12
  464. package/src/core/style/components/splitter.scss +64 -64
  465. package/src/core/style/components/textarea.scss +195 -195
  466. package/src/core/style/themes/black-theme.scss +7 -7
  467. package/src/core/style/themes/default-theme.scss +144 -144
  468. package/src/core/style/themes/light-theme.scss +7 -7
  469. package/src/core/style/themes/nature-theme.scss +7 -7
  470. package/src/core/style/vendors/normalize.scss +497 -497
  471. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  472. package/textarea/textarea.component.d.ts +0 -1
  473. package/textarea/textarea.component.theme.scss +2 -2
  474. package/textbox/pepperi-addons-ngx-lib-textbox.metadata.json +1 -1
  475. package/textbox/textbox.component.theme.scss +3 -3
  476. package/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.metadata.json +1 -1
  477. package/textbox-icon/textbox-icon.component.theme.scss +2 -2
  478. package/theming.scss +220 -224
  479. package/top-bar/pepperi-addons-ngx-lib-top-bar.metadata.json +1 -1
  480. package/top-bar/top-bar.component.theme.scss +9 -9
  481. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +0 -1113
  482. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js.map +0 -1
  483. package/esm2015/query-builder/common/model/filter.js +0 -2
  484. package/esm2015/query-builder/common/model/legacy.js +0 -2
  485. package/esm2015/query-builder/common/model/operator-unit.js +0 -42
  486. package/esm2015/query-builder/common/model/operator.js +0 -207
  487. package/esm2015/query-builder/common/model/structure.js +0 -2
  488. package/esm2015/query-builder/common/model/type-map.js +0 -27
  489. package/esm2015/query-builder/common/model/type.js +0 -6
  490. package/esm2015/query-builder/common/services/output-query.service.js +0 -114
  491. package/esm2015/query-builder/common/services/type-convertor.service.js +0 -44
  492. package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +0 -9
  493. package/esm2015/query-builder/public-api.js +0 -8
  494. package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +0 -103
  495. package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +0 -64
  496. package/esm2015/query-builder/query-builder.component.js +0 -101
  497. package/esm2015/query-builder/query-builder.module.js +0 -43
  498. package/esm2015/query-builder/query-builder.service.js +0 -283
  499. package/esm2015/smart-filters/text-filter/text-filter.component.js +0 -79
  500. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +0 -1010
  501. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js.map +0 -1
  502. package/query-builder/common/model/filter.d.ts +0 -6
  503. package/query-builder/common/model/legacy.d.ts +0 -20
  504. package/query-builder/common/model/operator-unit.d.ts +0 -13
  505. package/query-builder/common/model/operator.d.ts +0 -21
  506. package/query-builder/common/model/structure.d.ts +0 -4
  507. package/query-builder/common/model/type-map.d.ts +0 -12
  508. package/query-builder/common/model/type.d.ts +0 -4
  509. package/query-builder/common/services/output-query.service.d.ts +0 -43
  510. package/query-builder/common/services/type-convertor.service.d.ts +0 -10
  511. package/query-builder/package.json +0 -14
  512. package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +0 -8
  513. package/query-builder/pepperi-addons-ngx-lib-query-builder.metadata.json +0 -1
  514. package/query-builder/public-api.d.ts +0 -4
  515. package/query-builder/query-builder-item/query-builder-item.component.d.ts +0 -30
  516. package/query-builder/query-builder-section/query-builder-section.component.d.ts +0 -27
  517. package/query-builder/query-builder-section/query-builder-section.component.theme.scss +0 -6
  518. package/query-builder/query-builder.component.d.ts +0 -35
  519. package/query-builder/query-builder.module.d.ts +0 -2
  520. package/query-builder/query-builder.service.d.ts +0 -94
  521. package/smart-filters/text-filter/text-filter.component.d.ts +0 -17
@@ -1,101 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { FormBuilder } from '@angular/forms';
3
- import { PepQueryBuilderService } from './query-builder.service';
4
- import { PepOperatorTypes } from './common/model/type';
5
- export class PepQueryBuilderComponent {
6
- constructor(_fb, queryBuilderService) {
7
- this._fb = _fb;
8
- this.queryBuilderService = queryBuilderService;
9
- this._query = null;
10
- this.queryChange = new EventEmitter();
11
- this.formValidationChange = new EventEmitter();
12
- this._lastFormValidStatus = true;
13
- this.hasFields = false;
14
- this.setupForm();
15
- this.initDepth();
16
- this._formSubscription$ = this.queryBuilderService.form.valueChanges.subscribe((val) => {
17
- if (this.queryBuilderService.form.valid !== this._lastFormValidStatus) {
18
- this._lastFormValidStatus = this.queryBuilderService.form.valid;
19
- this.formValidationChange.emit(this._lastFormValidStatus);
20
- }
21
- });
22
- this._outputQuerySubscription$ = this.queryBuilderService.outputQuery$.subscribe((outputQuery) => {
23
- this.queryChange.emit(outputQuery);
24
- });
25
- }
26
- set query(object) {
27
- this._query = object;
28
- this.loadQuery();
29
- }
30
- set fields(list) {
31
- this.queryBuilderService.fields = list;
32
- this.hasFields = this.queryBuilderService.hasFields;
33
- this.loadQuery();
34
- }
35
- set maxDepth(value) {
36
- this.queryBuilderService.maxDepth = value;
37
- }
38
- ngOnInit() {
39
- //
40
- }
41
- setupForm() {
42
- this.queryBuilderService.form = this._fb.group({
43
- operator: this._fb.control(PepOperatorTypes.And)
44
- });
45
- }
46
- initDepth() {
47
- this.depth = {
48
- current: 0,
49
- max: this.queryBuilderService.maxDepth
50
- };
51
- }
52
- /**
53
- * builds UI query structure as soon as both the fields and query loads
54
- */
55
- loadQuery() {
56
- var _a;
57
- if (this._query &&
58
- this.queryBuilderService.hasFields &&
59
- ((_a = this.root) === null || _a === void 0 ? void 0 : _a.sectionContainer)) {
60
- this.queryBuilderService.buildQueryStructure(this._query, this.root.sectionContainer);
61
- }
62
- }
63
- onCreateSection() {
64
- const section = this.queryBuilderService.createSection(PepOperatorTypes.And, this.root.sectionContainer, this.queryBuilderService.form, 1);
65
- this.queryBuilderService.createItem(null, section.containerRef, section.parentForm);
66
- }
67
- onCreateItem() {
68
- this.queryBuilderService.createItem(null, this.root.sectionContainer, this.queryBuilderService.form);
69
- }
70
- onOperatorChange() {
71
- this.queryBuilderService.createOutputQuery();
72
- }
73
- ngOnDestroy() {
74
- if (this._formSubscription$) {
75
- this._formSubscription$.unsubscribe();
76
- }
77
- if (this._outputQuerySubscription$) {
78
- this._outputQuerySubscription$.unsubscribe();
79
- }
80
- }
81
- }
82
- PepQueryBuilderComponent.decorators = [
83
- { type: Component, args: [{
84
- selector: 'pep-query-builder',
85
- template: "<pep-query-builder-section #rootContainer [form]=\"queryBuilderService.form\" [depth]=\"depth\" [hasFields]=\"hasFields\"\r\n (createSection)=\"onCreateSection()\" (createItem)=\"onCreateItem()\" (operatorChange)=\"onOperatorChange()\">\r\n</pep-query-builder-section>",
86
- styles: [""]
87
- },] }
88
- ];
89
- PepQueryBuilderComponent.ctorParameters = () => [
90
- { type: FormBuilder },
91
- { type: PepQueryBuilderService }
92
- ];
93
- PepQueryBuilderComponent.propDecorators = {
94
- query: [{ type: Input }],
95
- fields: [{ type: Input }],
96
- maxDepth: [{ type: Input }],
97
- queryChange: [{ type: Output }],
98
- formValidationChange: [{ type: Output }],
99
- root: [{ type: ViewChild, args: ['rootContainer', { static: true },] }]
100
- };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUXZELE1BQU0sT0FBTyx3QkFBd0I7SUErQmpDLFlBQ1ksR0FBZ0IsRUFDakIsbUJBQTJDO1FBRDFDLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFDakIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQWhDdEQsV0FBTSxHQUFxQixJQUFJLENBQUM7UUFrQmhDLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRW5GLHlCQUFvQixHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBTTFFLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUU1QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBTWQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkYsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ25F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QUUsQ0FBQztTQUN6QztRQUNELElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQ2hDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNoRDtJQUNMLENBQUM7OztZQXZHSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsMlJBQTZDOzthQUVoRDs7O1lBWlEsV0FBVztZQUdYLHNCQUFzQjs7O29CQVkxQixLQUFLO3FCQUtMLEtBQUs7dUJBTUwsS0FBSzswQkFLTCxNQUFNO21DQUVOLE1BQU07bUJBR04sU0FBUyxTQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFBlcFF1ZXJ5QnVpbGRlclNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi9xdWVyeS1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSVBlcFF1ZXJ5QnVpbGRlckZpZWxkLCBJUGVwUXVlcnlTZWN0aW9uIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvbGVnYWN5JztcclxuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVBlcFF1ZXJ5RGVwdGggfSBmcm9tICcuL2NvbW1vbi9tb2RlbC9zdHJ1Y3R1cmUnO1xyXG5pbXBvcnQgeyBQZXBPcGVyYXRvclR5cGVzIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvdHlwZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3BlcC1xdWVyeS1idWlsZGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3F1ZXJ5LWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBlcFF1ZXJ5QnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIF9xdWVyeTogSVBlcFF1ZXJ5U2VjdGlvbiA9IG51bGw7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHF1ZXJ5KG9iamVjdDogSVBlcFF1ZXJ5U2VjdGlvbikge1xyXG4gICAgICAgIHRoaXMuX3F1ZXJ5ID0gb2JqZWN0O1xyXG4gICAgICAgIHRoaXMubG9hZFF1ZXJ5KClcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZmllbGRzKGxpc3Q6IEFycmF5PElQZXBRdWVyeUJ1aWxkZXJGaWVsZD4pIHtcclxuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuZmllbGRzID0gbGlzdDtcclxuICAgICAgICB0aGlzLmhhc0ZpZWxkcyA9IHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5oYXNGaWVsZHM7XHJcbiAgICAgICAgdGhpcy5sb2FkUXVlcnkoKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgbWF4RGVwdGgodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5tYXhEZXB0aCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcXVlcnlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJUGVwUXVlcnlTZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcFF1ZXJ5U2VjdGlvbj4oKTtcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZm9ybVZhbGlkYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdyb290Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgcm9vdDogUGVwUXVlcnlCdWlsZGVyU2VjdGlvbkNvbXBvbmVudDtcclxuXHJcbiAgICBfZm9ybVN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcclxuICAgIF9vdXRwdXRRdWVyeVN1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcclxuICAgIF9sYXN0Rm9ybVZhbGlkU3RhdHVzID0gdHJ1ZTtcclxuICAgIGRlcHRoOiBJUGVwUXVlcnlEZXB0aDtcclxuICAgIGhhc0ZpZWxkcyA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX2ZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICBwdWJsaWMgcXVlcnlCdWlsZGVyU2VydmljZTogUGVwUXVlcnlCdWlsZGVyU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXR1cEZvcm0oKTtcclxuICAgICAgICB0aGlzLmluaXREZXB0aCgpO1xyXG4gICAgICAgIHRoaXMuX2Zvcm1TdWJzY3JpcHRpb24kID0gdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuZm9ybS52YWxpZCAhPT0gdGhpcy5fbGFzdEZvcm1WYWxpZFN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdEZvcm1WYWxpZFN0YXR1cyA9IHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5mb3JtLnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2xhc3RGb3JtVmFsaWRTdGF0dXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fb3V0cHV0UXVlcnlTdWJzY3JpcHRpb24kID0gdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLm91dHB1dFF1ZXJ5JC5zdWJzY3JpYmUoKG91dHB1dFF1ZXJ5KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnlDaGFuZ2UuZW1pdChvdXRwdXRRdWVyeSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy9cclxuICAgIH1cclxuXHJcbiAgICBzZXR1cEZvcm0oKSB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLl9mYi5jb250cm9sKFBlcE9wZXJhdG9yVHlwZXMuQW5kKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXREZXB0aCgpIHtcclxuICAgICAgICB0aGlzLmRlcHRoID0ge1xyXG4gICAgICAgICAgICBjdXJyZW50OiAwLFxyXG4gICAgICAgICAgICBtYXg6IHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5tYXhEZXB0aFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGJ1aWxkcyBVSSBxdWVyeSBzdHJ1Y3R1cmUgYXMgc29vbiBhcyBib3RoIHRoZSBmaWVsZHMgYW5kIHF1ZXJ5IGxvYWRzXHJcbiAgICAgKi9cclxuICAgIGxvYWRRdWVyeSgpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuX3F1ZXJ5ICYmXHJcbiAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5oYXNGaWVsZHMgJiZcclxuICAgICAgICAgICAgdGhpcy5yb290Py5zZWN0aW9uQ29udGFpbmVyXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5idWlsZFF1ZXJ5U3RydWN0dXJlKHRoaXMuX3F1ZXJ5LCB0aGlzLnJvb3Quc2VjdGlvbkNvbnRhaW5lcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ3JlYXRlU2VjdGlvbigpIHtcclxuICAgICAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZVNlY3Rpb24oUGVwT3BlcmF0b3JUeXBlcy5BbmQsIHRoaXMucm9vdC5zZWN0aW9uQ29udGFpbmVyLCB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuZm9ybSwgMSk7XHJcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmNyZWF0ZUl0ZW0obnVsbCwgc2VjdGlvbi5jb250YWluZXJSZWYsIHNlY3Rpb24ucGFyZW50Rm9ybSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DcmVhdGVJdGVtKCkge1xyXG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5jcmVhdGVJdGVtKG51bGwsIHRoaXMucm9vdC5zZWN0aW9uQ29udGFpbmVyLCB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuZm9ybSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25PcGVyYXRvckNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuY3JlYXRlT3V0cHV0UXVlcnkoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5fZm9ybVN1YnNjcmlwdGlvbiQpIHtcclxuICAgICAgICAgICAgdGhpcy5fZm9ybVN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX291dHB1dFF1ZXJ5U3Vic2NyaXB0aW9uJCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vdXRwdXRRdWVyeVN1YnNjcmlwdGlvbiQudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,43 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { ReactiveFormsModule } from '@angular/forms';
4
- import { FlexLayoutModule } from '@angular/flex-layout';
5
- import { PepSmartFiltersModule } from '@pepperi-addons/ngx-lib/smart-filters';
6
- import { PepSelectModule } from '@pepperi-addons/ngx-lib/select';
7
- import { PepButtonModule } from '@pepperi-addons/ngx-lib/button';
8
- import { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';
9
- import { PepQueryBuilderService } from './query-builder.service';
10
- import { PepOutputQueryService } from './common/services/output-query.service';
11
- import { PepTypeConvertorService } from './common/services/type-convertor.service';
12
- import { PepQueryBuilderComponent } from './query-builder.component';
13
- import { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';
14
- import { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';
15
- export class PepQueryBuilderModule {
16
- }
17
- PepQueryBuilderModule.decorators = [
18
- { type: NgModule, args: [{
19
- imports: [
20
- CommonModule,
21
- ReactiveFormsModule,
22
- FlexLayoutModule,
23
- PepSelectModule,
24
- PepButtonModule,
25
- PepGroupButtonsModule,
26
- PepSmartFiltersModule
27
- ],
28
- exports: [
29
- PepQueryBuilderComponent
30
- ],
31
- declarations: [
32
- PepQueryBuilderComponent,
33
- PepQueryBuilderSectionComponent,
34
- PepQueryBuilderItemComponent
35
- ],
36
- providers: [
37
- PepQueryBuilderService,
38
- PepOutputQueryService,
39
- PepTypeConvertorService
40
- ]
41
- },] }
42
- ];
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQTJCakcsTUFBTSxPQUFPLHFCQUFxQjs7O1lBeEJqQyxRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLFlBQVk7b0JBQ1osbUJBQW1CO29CQUNuQixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YsZUFBZTtvQkFDZixxQkFBcUI7b0JBQ3JCLHFCQUFxQjtpQkFDeEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLHdCQUF3QjtpQkFDM0I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNWLHdCQUF3QjtvQkFDeEIsK0JBQStCO29CQUMvQiw0QkFBNEI7aUJBQy9CO2dCQUNELFNBQVMsRUFBRTtvQkFDUCxzQkFBc0I7b0JBQ3RCLHFCQUFxQjtvQkFDckIsdUJBQXVCO2lCQUMxQjthQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcclxuaW1wb3J0IHsgUGVwU21hcnRGaWx0ZXJzTW9kdWxlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc21hcnQtZmlsdGVycyc7XHJcbmltcG9ydCB7IFBlcFNlbGVjdE1vZHVsZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NlbGVjdCc7XHJcbmltcG9ydCB7IFBlcEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2J1dHRvbic7XHJcbmltcG9ydCB7IFBlcEdyb3VwQnV0dG9uc01vZHVsZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMnO1xyXG5cclxuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGVwT3V0cHV0UXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24vc2VydmljZXMvb3V0cHV0LXF1ZXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQZXBUeXBlQ29udmVydG9yU2VydmljZSB9IGZyb20gJy4vY29tbW9uL3NlcnZpY2VzL3R5cGUtY29udmVydG9yLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9xdWVyeS1idWlsZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBlcFF1ZXJ5QnVpbGRlclNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi9xdWVyeS1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcXVlcnktYnVpbGRlci1pdGVtL3F1ZXJ5LWJ1aWxkZXItaXRlbS5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgRmxleExheW91dE1vZHVsZSxcclxuICAgICAgICBQZXBTZWxlY3RNb2R1bGUsXHJcbiAgICAgICAgUGVwQnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIFBlcEdyb3VwQnV0dG9uc01vZHVsZSxcclxuICAgICAgICBQZXBTbWFydEZpbHRlcnNNb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgUGVwUXVlcnlCdWlsZGVyQ29tcG9uZW50XHJcbiAgICBdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgICAgUGVwUXVlcnlCdWlsZGVyQ29tcG9uZW50LFxyXG4gICAgICAgIFBlcFF1ZXJ5QnVpbGRlclNlY3Rpb25Db21wb25lbnQsXHJcbiAgICAgICAgUGVwUXVlcnlCdWlsZGVySXRlbUNvbXBvbmVudFxyXG4gICAgXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIFBlcFF1ZXJ5QnVpbGRlclNlcnZpY2UsXHJcbiAgICAgICAgUGVwT3V0cHV0UXVlcnlTZXJ2aWNlLFxyXG4gICAgICAgIFBlcFR5cGVDb252ZXJ0b3JTZXJ2aWNlXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXBRdWVyeUJ1aWxkZXJNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -1,283 +0,0 @@
1
- import { Injectable, ComponentFactoryResolver } from '@angular/core';
2
- import { FormBuilder } from '@angular/forms';
3
- import { BehaviorSubject } from 'rxjs';
4
- import { PepSmartFilterOperators, createSmartFilter, createSmartFilterField } from '@pepperi-addons/ngx-lib/smart-filters';
5
- import { getSmartBuilderOperator } from './common/model/operator';
6
- import { PepQueryBuilderSectionComponent } from './query-builder-section/query-builder-section.component';
7
- import { PepQueryBuilderItemComponent } from './query-builder-item/query-builder-item.component';
8
- import { PepQueryBuilderTypeMap } from './common/model/type-map';
9
- import { getSmartBuilderOperationUnit } from './common/model/operator-unit';
10
- import { PepOutputQueryService } from './common/services/output-query.service';
11
- import { PepOperatorTypes } from './common/model/type';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/forms";
14
- import * as i2 from "./common/services/output-query.service";
15
- const MAX_STRUCTURE_DEPTH = 3;
16
- export class PepQueryBuilderService {
17
- constructor(_fb, _resolver, _outputQueryService) {
18
- this._fb = _fb;
19
- this._resolver = _resolver;
20
- this._outputQueryService = _outputQueryService;
21
- this._outputQuery$ = new BehaviorSubject(null);
22
- this._maxStructureDepth = MAX_STRUCTURE_DEPTH;
23
- this.outputQuery$ = this._outputQuery$.asObservable();
24
- }
25
- set maxDepth(value) {
26
- this._maxStructureDepth = value;
27
- }
28
- get maxDepth() {
29
- return this._maxStructureDepth;
30
- }
31
- set fields(list) {
32
- this._smartFilterFields = this.convertToSmartFilterFields(list);
33
- }
34
- get hasFields() {
35
- var _a;
36
- return ((_a = this._smartFilterFields) === null || _a === void 0 ? void 0 : _a.length) > 0;
37
- }
38
- set form(value) {
39
- this._form = value;
40
- }
41
- get form() {
42
- return this._form;
43
- }
44
- /**
45
- * builds a dynamic UI query structure
46
- * might has a different structure than the query's due to parent-child elements merge
47
- * @param query legacy query
48
- * @param containerRef reference to root element
49
- */
50
- buildQueryStructure(query, containerRef) {
51
- //update root operator
52
- if (this.hasProperty(query, 'ComplexId') &&
53
- (query === null || query === void 0 ? void 0 : query.Operation) &&
54
- query.Operation !== this._form.get('operator').value) {
55
- this._form.get('operator').setValue(query.Operation);
56
- }
57
- this.flatten(null, query, containerRef, this._form, 1);
58
- }
59
- /**
60
- * checks if the object contains property
61
- * @param obj object
62
- * @param prop property name
63
- * @returns true if contains, false otherwise
64
- */
65
- hasProperty(obj, prop) {
66
- return Object.prototype.hasOwnProperty.call(obj, prop);
67
- }
68
- /**
69
- * a recursive function dynamically builds UI filters structure
70
- * @param parent legacy complex object
71
- * @param current child legacy object (either another complex or expression type)
72
- * @param containerRef parent element
73
- * @param parentForm parent form
74
- */
75
- flatten(parent, current, containerRef, parentForm, depth) {
76
- if (this.hasProperty(current, 'ComplexId')) {
77
- const section = current;
78
- if ((parent === null || parent === void 0 ? void 0 : parent.Operation) === current.Operation) {
79
- this.flatten(parent, section.LeftNode, containerRef, parentForm, depth);
80
- this.flatten(parent, section.RightNode, containerRef, parentForm, depth);
81
- }
82
- else {
83
- const result = this.createSection(section.Operation, containerRef, parentForm, depth);
84
- this.flatten(section, section.LeftNode, result.containerRef, result.parentForm, depth + 1);
85
- this.flatten(section, section.RightNode, result.containerRef, result.parentForm, depth + 1);
86
- }
87
- }
88
- else if (this.hasProperty(current, 'ExpressionId')) {
89
- this.createItem(current, containerRef, parentForm);
90
- }
91
- }
92
- /**
93
- * creates a container object of two or more child filter items
94
- * @param operator AND/OR operator
95
- * @param containerRef parent element
96
- * @param parentForm parent form
97
- * @param depth
98
- * @returns an object containing the current element and current form
99
- */
100
- createSection(operator, containerRef, parentForm, depth) {
101
- const factory = this._resolver.resolveComponentFactory(PepQueryBuilderSectionComponent);
102
- const componentRef = containerRef.createComponent(factory);
103
- const sectionGroup = this._fb.group({
104
- operator: this._fb.control(operator || PepOperatorTypes.And)
105
- });
106
- let counter = 1;
107
- Object.keys(parentForm.controls).forEach(item => { if (item.includes('section')) {
108
- counter++;
109
- } });
110
- const formKey = `section${counter}`;
111
- parentForm.addControl(formKey, sectionGroup);
112
- componentRef.instance.form = sectionGroup;
113
- componentRef.instance.depth = {
114
- current: depth,
115
- max: this._maxStructureDepth
116
- };
117
- componentRef.instance.createSection.subscribe(() => {
118
- const section = this.createSection(PepOperatorTypes.And, componentRef.instance.sectionContainer, sectionGroup, depth + 1);
119
- this.createItem(null, section.containerRef, section.parentForm);
120
- });
121
- componentRef.instance.createItem.subscribe(() => {
122
- this.createItem(null, componentRef.instance.sectionContainer, sectionGroup);
123
- });
124
- componentRef.instance.remove.subscribe(() => {
125
- parentForm.removeControl(formKey);
126
- componentRef.destroy();
127
- this.createOutputQuery();
128
- });
129
- componentRef.instance.operatorChange.subscribe(() => {
130
- this.createOutputQuery();
131
- });
132
- return {
133
- containerRef: componentRef.instance.sectionContainer,
134
- parentForm: sectionGroup
135
- };
136
- }
137
- /**
138
- * creates a component represents filter item (leaf element - has no childs)
139
- * @param current filter legacy element
140
- * @param containerRef parent element
141
- * @param parentForm parent form
142
- */
143
- createItem(current, containerRef, parentForm) {
144
- const factory = this._resolver.resolveComponentFactory(PepQueryBuilderItemComponent);
145
- const componentRef = containerRef.createComponent(factory);
146
- let counter = 1;
147
- Object.keys(parentForm.controls).forEach(item => { if (item.includes('item')) {
148
- counter++;
149
- } });
150
- const formKey = `item${counter}`;
151
- componentRef.instance.formKey = formKey;
152
- componentRef.instance.fields = this._smartFilterFields;
153
- const selectedField = this.getSelectedField(current);
154
- if (selectedField) {
155
- componentRef.instance.selected = selectedField;
156
- if (current) {
157
- componentRef.instance.filter = this.getFilter(current, selectedField);
158
- }
159
- }
160
- componentRef.instance.parentForm = parentForm;
161
- componentRef.instance.filterChange.subscribe(() => {
162
- this.createOutputQuery();
163
- });
164
- componentRef.instance.remove.subscribe(() => {
165
- parentForm.removeControl(formKey);
166
- componentRef.destroy();
167
- this.createOutputQuery();
168
- });
169
- }
170
- /**
171
- * creates a smart filter object
172
- * @param current filter legacy element
173
- * @param field filter's selected field
174
- * @returns smart filter object
175
- */
176
- getFilter(current, field) {
177
- const operator = getSmartBuilderOperator(current.Operation, field.type);
178
- if (operator) {
179
- const filterValues = this.getFilterValues(current, operator, field);
180
- return createSmartFilter(current.ApiName, operator, filterValues.first, filterValues.second, filterValues.operationUnit);
181
- }
182
- else {
183
- return null;
184
- }
185
- }
186
- /**
187
- * get smart filter field
188
- * @param current filter legacy element
189
- * @returns smart filter field, if not found returns the first fields
190
- */
191
- getSelectedField(current) {
192
- var _a, _b;
193
- if (current) {
194
- const item = this._smartFilterFields.find(field => field.id === current.ApiName);
195
- return item ? item : ((_a = this._smartFilterFields) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this._smartFilterFields[0] : null;
196
- }
197
- else {
198
- return ((_b = this._smartFilterFields) === null || _b === void 0 ? void 0 : _b.length) > 0 ? this._smartFilterFields[0] : null;
199
- }
200
- }
201
- /**
202
- * gets smart filter's values data
203
- * @param current filter legacy element
204
- * @param operator smart filter operator
205
- * @param field filter's selected field
206
- * @returns object contains the filter values data
207
- */
208
- getFilterValues(current, operator, field) {
209
- var _a, _b, _c, _d, _e;
210
- const data = {
211
- first: null,
212
- second: null,
213
- operationUnit: null
214
- };
215
- if (operator === PepSmartFilterOperators.In) { //multi select
216
- //filter keys don't exist on field options
217
- data.first = ((_a = current === null || current === void 0 ? void 0 : current.Values) === null || _a === void 0 ? void 0 : _a.length) > 0 ? current.Values.filter(item => {
218
- return field.options.find(option => option.key === item);
219
- }) : null;
220
- }
221
- else if (operator === PepSmartFilterOperators.InTheLast ||
222
- operator === PepSmartFilterOperators.NotInTheLast ||
223
- operator === PepSmartFilterOperators.DueIn ||
224
- operator === PepSmartFilterOperators.NotDueIn) { //operation unit
225
- data.first = ((_b = current === null || current === void 0 ? void 0 : current.Values) === null || _b === void 0 ? void 0 : _b.length) > 0 ? current.Values[0] : null;
226
- if (((_c = current === null || current === void 0 ? void 0 : current.Values) === null || _c === void 0 ? void 0 : _c.length) === 2) {
227
- data.operationUnit = getSmartBuilderOperationUnit(current.Values[1]);
228
- }
229
- }
230
- else {
231
- data.first = ((_d = current === null || current === void 0 ? void 0 : current.Values) === null || _d === void 0 ? void 0 : _d.length) > 0 ? current.Values[0] : null;
232
- data.second = ((_e = current === null || current === void 0 ? void 0 : current.Values) === null || _e === void 0 ? void 0 : _e.length) === 2 ? current.Values[1] : null;
233
- }
234
- return data;
235
- }
236
- /**
237
- * converts legacy fields to smart filter fields
238
- * @param fields legacy fields array
239
- * @returns smart filter fields array
240
- */
241
- convertToSmartFilterFields(fields) {
242
- if ((fields === null || fields === void 0 ? void 0 : fields.length) > 0) {
243
- const typeMapper = new PepQueryBuilderTypeMap();
244
- return fields.map((field) => {
245
- var _a;
246
- return createSmartFilterField({
247
- id: field.FieldID,
248
- name: field.Title,
249
- options: (_a = field.OptionalValues) === null || _a === void 0 ? void 0 : _a.map(option => {
250
- return {
251
- key: option.Key,
252
- value: option.Value
253
- };
254
- })
255
- }, typeMapper.getSmartBuilderType(field.FieldType));
256
- });
257
- }
258
- else {
259
- return [];
260
- }
261
- }
262
- /**
263
- * creates a legacy output query
264
- */
265
- createOutputQuery() {
266
- if (this._form.valid) {
267
- const query = this._outputQueryService.generateQuery(this._form.value);
268
- this._outputQuery$.next(query);
269
- }
270
- }
271
- }
272
- PepQueryBuilderService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PepQueryBuilderService_Factory() { return new PepQueryBuilderService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i2.PepOutputQueryService)); }, token: PepQueryBuilderService, providedIn: "root" });
273
- PepQueryBuilderService.decorators = [
274
- { type: Injectable, args: [{
275
- providedIn: 'root'
276
- },] }
277
- ];
278
- PepQueryBuilderService.ctorParameters = () => [
279
- { type: FormBuilder },
280
- { type: ComponentFactoryResolver },
281
- { type: PepOutputQueryService }
282
- ];
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9xdWVyeS1idWlsZGVyL3F1ZXJ5LWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFvQix3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2QyxPQUFPLEVBR0gsdUJBQXVCLEVBR3ZCLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDekIsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUV2RCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUs5QixNQUFNLE9BQU8sc0JBQXNCO0lBUy9CLFlBQW9CLEdBQWdCLEVBQVUsU0FBbUMsRUFBVSxtQkFBMEM7UUFBakgsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQTBCO1FBQVUsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF1QjtRQVI3SCxrQkFBYSxHQUFHLElBQUksZUFB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QUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFOztnQkFDeEIsT0FBTyxzQkFBc0IsQ0FDekI7b0JBQ0ksRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUNqQixJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2pCLE9BQU8sRUFBRSxNQUFBLEtBQUssQ0FBQyxjQUFjLDBDQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDeEMsT0FBTzs0QkFDSCxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7NEJBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO3lCQUN0QixDQUFBO29CQUNMLENBQUMsQ0FBQztpQkFDbUIsRUFDdkIsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQXVCLENBQUMsQ0FBQTtZQUNoRixDQUFDLENBQUMsQ0FBQTtTQUNMO2FBQU07WUFDSCxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtZQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDOzs7O1lBelJKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBMUJRLFdBQVc7WUFEbUIsd0JBQXdCO1lBbUJ0RCxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgSVBlcFF1ZXJ5QnVpbGRlckZpZWxkLCBJUGVwUXVlcnlTZWN0aW9uLCBJUGVwUXVlcnlJdGVtIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvbGVnYWN5JztcclxuaW1wb3J0IHtcclxuICAgIElQZXBTbWFydEZpbHRlckZpZWxkLFxyXG4gICAgSVBlcFNtYXJ0RmlsdGVyRGF0YSxcclxuICAgIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLFxyXG4gICAgSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3IsXHJcbiAgICBQZXBTbWFydEZpbHRlclR5cGUsXHJcbiAgICBjcmVhdGVTbWFydEZpbHRlcixcclxuICAgIGNyZWF0ZVNtYXJ0RmlsdGVyRmllbGRcclxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zbWFydC1maWx0ZXJzJztcclxuaW1wb3J0IHsgZ2V0U21hcnRCdWlsZGVyT3BlcmF0b3IgfSBmcm9tICcuL2NvbW1vbi9tb2RlbC9vcGVyYXRvcic7XHJcbmltcG9ydCB7IFBlcFF1ZXJ5QnVpbGRlclNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL3F1ZXJ5LWJ1aWxkZXItc2VjdGlvbi9xdWVyeS1idWlsZGVyLXNlY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGVwUXVlcnlCdWlsZGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcXVlcnktYnVpbGRlci1pdGVtL3F1ZXJ5LWJ1aWxkZXItaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQZXBRdWVyeUJ1aWxkZXJUeXBlTWFwIH0gZnJvbSAnLi9jb21tb24vbW9kZWwvdHlwZS1tYXAnO1xyXG5pbXBvcnQgeyBnZXRTbWFydEJ1aWxkZXJPcGVyYXRpb25Vbml0IH0gZnJvbSAnLi9jb21tb24vbW9kZWwvb3BlcmF0b3ItdW5pdCc7XHJcbmltcG9ydCB7IFBlcE91dHB1dFF1ZXJ5U2VydmljZSB9IGZyb20gJy4vY29tbW9uL3NlcnZpY2VzL291dHB1dC1xdWVyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVBlcFF1ZXJ5QnVpbGRlclZhbHVlcyB9IGZyb20gJy4vY29tbW9uL21vZGVsL2ZpbHRlcic7XHJcbmltcG9ydCB7IFBlcE9wZXJhdG9yVHlwZXMgfSBmcm9tICcuL2NvbW1vbi9tb2RlbC90eXBlJztcclxuXHJcbmNvbnN0IE1BWF9TVFJVQ1RVUkVfREVQVEggPSAzO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQZXBRdWVyeUJ1aWxkZXJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX291dHB1dFF1ZXJ5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHJcbiAgICBwcml2YXRlIF9zbWFydEZpbHRlckZpZWxkczogQXJyYXk8SVBlcFNtYXJ0RmlsdGVyRmllbGQ+O1xyXG4gICAgcHJpdmF0ZSBfZm9ybTogRm9ybUdyb3VwO1xyXG4gICAgcHJpdmF0ZSBfbWF4U3RydWN0dXJlRGVwdGggPSBNQVhfU1RSVUNUVVJFX0RFUFRIO1xyXG5cclxuICAgIHB1YmxpYyBvdXRwdXRRdWVyeSQgPSB0aGlzLl9vdXRwdXRRdWVyeSQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9yZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBwcml2YXRlIF9vdXRwdXRRdWVyeVNlcnZpY2U6IFBlcE91dHB1dFF1ZXJ5U2VydmljZSkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXQgbWF4RGVwdGgodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9tYXhTdHJ1Y3R1cmVEZXB0aCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtYXhEZXB0aCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWF4U3RydWN0dXJlRGVwdGg7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGZpZWxkcyhsaXN0OiBBcnJheTxJUGVwUXVlcnlCdWlsZGVyRmllbGQ+KSB7XHJcbiAgICAgICAgdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHMgPSB0aGlzLmNvbnZlcnRUb1NtYXJ0RmlsdGVyRmllbGRzKGxpc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBoYXNGaWVsZHMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzPy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBmb3JtKHZhbHVlOiBGb3JtR3JvdXApIHtcclxuICAgICAgICB0aGlzLl9mb3JtID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvcm0oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBidWlsZHMgYSBkeW5hbWljIFVJIHF1ZXJ5IHN0cnVjdHVyZVxyXG4gICAgICogbWlnaHQgaGFzIGEgZGlmZmVyZW50IHN0cnVjdHVyZSB0aGFuIHRoZSBxdWVyeSdzIGR1ZSB0byBwYXJlbnQtY2hpbGQgZWxlbWVudHMgbWVyZ2VcclxuICAgICAqIEBwYXJhbSBxdWVyeSBsZWdhY3kgcXVlcnkgICAgIFxyXG4gICAgICogQHBhcmFtIGNvbnRhaW5lclJlZiByZWZlcmVuY2UgdG8gcm9vdCBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIGJ1aWxkUXVlcnlTdHJ1Y3R1cmUoXHJcbiAgICAgICAgcXVlcnk6IElQZXBRdWVyeVNlY3Rpb24sXHJcbiAgICAgICAgY29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXHJcbiAgICApIHtcclxuICAgICAgICAvL3VwZGF0ZSByb290IG9wZXJhdG9yICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5oYXNQcm9wZXJ0eShxdWVyeSwgJ0NvbXBsZXhJZCcpICYmXHJcbiAgICAgICAgICAgIHF1ZXJ5Py5PcGVyYXRpb24gJiZcclxuICAgICAgICAgICAgcXVlcnkuT3BlcmF0aW9uICE9PSB0aGlzLl9mb3JtLmdldCgnb3BlcmF0b3InKS52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9mb3JtLmdldCgnb3BlcmF0b3InKS5zZXRWYWx1ZShxdWVyeS5PcGVyYXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZsYXR0ZW4obnVsbCwgcXVlcnksIGNvbnRhaW5lclJlZiwgdGhpcy5fZm9ybSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XHJcbiAgICAqIEBwYXJhbSBvYmogb2JqZWN0XHJcbiAgICAqIEBwYXJhbSBwcm9wIHByb3BlcnR5IG5hbWVcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBoYXNQcm9wZXJ0eShvYmosIHByb3ApIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhIHJlY3Vyc2l2ZSBmdW5jdGlvbiBkeW5hbWljYWxseSBidWlsZHMgVUkgZmlsdGVycyBzdHJ1Y3R1cmVcclxuICAgICAqIEBwYXJhbSBwYXJlbnQgbGVnYWN5IGNvbXBsZXggb2JqZWN0XHJcbiAgICAgKiBAcGFyYW0gY3VycmVudCBjaGlsZCBsZWdhY3kgb2JqZWN0IChlaXRoZXIgYW5vdGhlciBjb21wbGV4IG9yIGV4cHJlc3Npb24gdHlwZSlcclxuICAgICAqIEBwYXJhbSBjb250YWluZXJSZWYgcGFyZW50IGVsZW1lbnRcclxuICAgICAqIEBwYXJhbSBwYXJlbnRGb3JtIHBhcmVudCBmb3JtXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZmxhdHRlbihwYXJlbnQ6IElQZXBRdWVyeVNlY3Rpb24sIGN1cnJlbnQ6IElQZXBRdWVyeVNlY3Rpb24gfCBJUGVwUXVlcnlJdGVtLCBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHBhcmVudEZvcm06IEZvcm1Hcm91cCwgZGVwdGg6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1Byb3BlcnR5KGN1cnJlbnQsICdDb21wbGV4SWQnKSkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gY3VycmVudCBhcyBJUGVwUXVlcnlTZWN0aW9uO1xyXG4gICAgICAgICAgICBpZiAocGFyZW50Py5PcGVyYXRpb24gPT09IGN1cnJlbnQuT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW4ocGFyZW50LCBzZWN0aW9uLkxlZnROb2RlLCBjb250YWluZXJSZWYsIHBhcmVudEZvcm0sIGRlcHRoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbihwYXJlbnQsIHNlY3Rpb24uUmlnaHROb2RlLCBjb250YWluZXJSZWYsIHBhcmVudEZvcm0sIGRlcHRoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY3JlYXRlU2VjdGlvbihzZWN0aW9uLk9wZXJhdGlvbiwgY29udGFpbmVyUmVmLCBwYXJlbnRGb3JtLCBkZXB0aCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW4oc2VjdGlvbiwgc2VjdGlvbi5MZWZ0Tm9kZSwgcmVzdWx0LmNvbnRhaW5lclJlZiwgcmVzdWx0LnBhcmVudEZvcm0sIGRlcHRoICsgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW4oc2VjdGlvbiwgc2VjdGlvbi5SaWdodE5vZGUsIHJlc3VsdC5jb250YWluZXJSZWYsIHJlc3VsdC5wYXJlbnRGb3JtLCBkZXB0aCArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1Byb3BlcnR5KGN1cnJlbnQsICdFeHByZXNzaW9uSWQnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUl0ZW0oY3VycmVudCBhcyBJUGVwUXVlcnlJdGVtLCBjb250YWluZXJSZWYsIHBhcmVudEZvcm0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNyZWF0ZXMgYSBjb250YWluZXIgb2JqZWN0IG9mIHR3byBvciBtb3JlIGNoaWxkIGZpbHRlciBpdGVtc1xyXG4gICAgICogQHBhcmFtIG9wZXJhdG9yIEFORC9PUiBvcGVyYXRvclxyXG4gICAgICogQHBhcmFtIGNvbnRhaW5lclJlZiBwYXJlbnQgZWxlbWVudFxyXG4gICAgICogQHBhcmFtIHBhcmVudEZvcm0gcGFyZW50IGZvcm1cclxuICAgICAqIEBwYXJhbSBkZXB0aFxyXG4gICAgICogQHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgZWxlbWVudCBhbmQgY3VycmVudCBmb3JtXHJcbiAgICAgKi9cclxuICAgIGNyZWF0ZVNlY3Rpb24ob3BlcmF0b3I6IFBlcE9wZXJhdG9yVHlwZXMsIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcGFyZW50Rm9ybTogRm9ybUdyb3VwLCBkZXB0aDogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX3Jlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFBlcFF1ZXJ5QnVpbGRlclNlY3Rpb25Db21wb25lbnQpO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGNvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlY3Rpb25Hcm91cCA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgICAgICAgICAgb3BlcmF0b3I6IHRoaXMuX2ZiLmNvbnRyb2wob3BlcmF0b3IgfHwgUGVwT3BlcmF0b3JUeXBlcy5BbmQpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAxO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmVudEZvcm0uY29udHJvbHMpLmZvckVhY2goaXRlbSA9PiB7IGlmIChpdGVtLmluY2x1ZGVzKCdzZWN0aW9uJykpIHsgY291bnRlcisrOyB9IH0pO1xyXG4gICAgICAgIGNvbnN0IGZvcm1LZXkgPSBgc2VjdGlvbiR7Y291bnRlcn1gO1xyXG4gICAgICAgIHBhcmVudEZvcm0uYWRkQ29udHJvbChmb3JtS2V5LCBzZWN0aW9uR3JvdXApO1xyXG5cclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZm9ybSA9IHNlY3Rpb25Hcm91cDtcclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGVwdGggPSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnQ6IGRlcHRoLFxyXG4gICAgICAgICAgICBtYXg6IHRoaXMuX21heFN0cnVjdHVyZURlcHRoXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY3JlYXRlU2VjdGlvbi5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5jcmVhdGVTZWN0aW9uKFBlcE9wZXJhdG9yVHlwZXMuQW5kLCBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VjdGlvbkNvbnRhaW5lciwgc2VjdGlvbkdyb3VwLCBkZXB0aCArIDEpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUl0ZW0obnVsbCwgc2VjdGlvbi5jb250YWluZXJSZWYsIHNlY3Rpb24ucGFyZW50Rm9ybSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNyZWF0ZUl0ZW0uc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVJdGVtKG51bGwsIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWN0aW9uQ29udGFpbmVyLCBzZWN0aW9uR3JvdXApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5yZW1vdmUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgcGFyZW50Rm9ybS5yZW1vdmVDb250cm9sKGZvcm1LZXkpO1xyXG4gICAgICAgICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dFF1ZXJ5KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLm9wZXJhdG9yQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0UXVlcnkoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY29udGFpbmVyUmVmOiBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VjdGlvbkNvbnRhaW5lcixcclxuICAgICAgICAgICAgcGFyZW50Rm9ybTogc2VjdGlvbkdyb3VwXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNyZWF0ZXMgYSBjb21wb25lbnQgcmVwcmVzZW50cyBmaWx0ZXIgaXRlbSAobGVhZiBlbGVtZW50IC0gaGFzIG5vIGNoaWxkcylcclxuICAgICAqIEBwYXJhbSBjdXJyZW50IGZpbHRlciBsZWdhY3kgZWxlbWVudFxyXG4gICAgICogQHBhcmFtIGNvbnRhaW5lclJlZiBwYXJlbnQgZWxlbWVudFxyXG4gICAgICogQHBhcmFtIHBhcmVudEZvcm0gcGFyZW50IGZvcm1cclxuICAgICAqL1xyXG4gICAgY3JlYXRlSXRlbShjdXJyZW50OiBJUGVwUXVlcnlJdGVtLCBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHBhcmVudEZvcm06IEZvcm1Hcm91cCkge1xyXG4gICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShQZXBRdWVyeUJ1aWxkZXJJdGVtQ29tcG9uZW50KTtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xyXG5cclxuICAgICAgICBsZXQgY291bnRlciA9IDE7XHJcbiAgICAgICAgT2JqZWN0LmtleXMocGFyZW50Rm9ybS5jb250cm9scykuZm9yRWFjaChpdGVtID0+IHsgaWYgKGl0ZW0uaW5jbHVkZXMoJ2l0ZW0nKSkgeyBjb3VudGVyKys7IH0gfSk7XHJcbiAgICAgICAgY29uc3QgZm9ybUtleSA9IGBpdGVtJHtjb3VudGVyfWA7XHJcblxyXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5mb3JtS2V5ID0gZm9ybUtleTtcclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmllbGRzID0gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHM7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWVsZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGaWVsZChjdXJyZW50KTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWQgPSBzZWxlY3RlZEZpZWxkO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZpbHRlciA9IHRoaXMuZ2V0RmlsdGVyKGN1cnJlbnQsIHNlbGVjdGVkRmllbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYXJlbnRGb3JtID0gcGFyZW50Rm9ybTtcclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZmlsdGVyQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlT3V0cHV0UXVlcnkoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucmVtb3ZlLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHBhcmVudEZvcm0ucmVtb3ZlQ29udHJvbChmb3JtS2V5KTtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVPdXRwdXRRdWVyeSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY3JlYXRlcyBhIHNtYXJ0IGZpbHRlciBvYmplY3RcclxuICAgICAqIEBwYXJhbSBjdXJyZW50IGZpbHRlciBsZWdhY3kgZWxlbWVudFxyXG4gICAgICogQHBhcmFtIGZpZWxkIGZpbHRlcidzIHNlbGVjdGVkIGZpZWxkXHJcbiAgICAgKiBAcmV0dXJucyBzbWFydCBmaWx0ZXIgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0RmlsdGVyKGN1cnJlbnQ6IElQZXBRdWVyeUl0ZW0sIGZpZWxkOiBhbnkpOiBJUGVwU21hcnRGaWx0ZXJEYXRhIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3Qgb3BlcmF0b3I6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yID0gZ2V0U21hcnRCdWlsZGVyT3BlcmF0b3IoY3VycmVudC5PcGVyYXRpb24sIGZpZWxkLnR5cGUpO1xyXG4gICAgICAgIGlmIChvcGVyYXRvcikge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXM6IElQZXBRdWVyeUJ1aWxkZXJWYWx1ZXMgPSB0aGlzLmdldEZpbHRlclZhbHVlcyhjdXJyZW50LCBvcGVyYXRvciwgZmllbGQpO1xyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlU21hcnRGaWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50LkFwaU5hbWUsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcixcclxuICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlcy5maXJzdCxcclxuICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlcy5zZWNvbmQsXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZXMub3BlcmF0aW9uVW5pdFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdldCBzbWFydCBmaWx0ZXIgZmllbGRcclxuICAgICAqIEBwYXJhbSBjdXJyZW50IGZpbHRlciBsZWdhY3kgZWxlbWVudFxyXG4gICAgICogQHJldHVybnMgc21hcnQgZmlsdGVyIGZpZWxkLCBpZiBub3QgZm91bmQgcmV0dXJucyB0aGUgZmlyc3QgZmllbGRzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0U2VsZWN0ZWRGaWVsZChjdXJyZW50OiBJUGVwUXVlcnlJdGVtKTogSVBlcFNtYXJ0RmlsdGVyRmllbGQgfCBudWxsIHtcclxuICAgICAgICBpZiAoY3VycmVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHMuZmluZChmaWVsZCA9PiBmaWVsZC5pZCA9PT0gY3VycmVudC5BcGlOYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtIDogdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHM/Lmxlbmd0aCA+IDAgPyB0aGlzLl9zbWFydEZpbHRlckZpZWxkc1swXSA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NtYXJ0RmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fc21hcnRGaWx0ZXJGaWVsZHNbMF0gOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdldHMgc21hcnQgZmlsdGVyJ3MgdmFsdWVzIGRhdGFcclxuICAgICAqIEBwYXJhbSBjdXJyZW50IGZpbHRlciBsZWdhY3kgZWxlbWVudFxyXG4gICAgICogQHBhcmFtIG9wZXJhdG9yIHNtYXJ0IGZpbHRlciBvcGVyYXRvclxyXG4gICAgICogQHBhcmFtIGZpZWxkIGZpbHRlcidzIHNlbGVjdGVkIGZpZWxkXHJcbiAgICAgKiBAcmV0dXJucyBvYmplY3QgY29udGFpbnMgdGhlIGZpbHRlciB2YWx1ZXMgZGF0YVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldEZpbHRlclZhbHVlcyhjdXJyZW50OiBJUGVwUXVlcnlJdGVtLCBvcGVyYXRvcjogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3IsIGZpZWxkOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBkYXRhOiBJUGVwUXVlcnlCdWlsZGVyVmFsdWVzID0ge1xyXG4gICAgICAgICAgICBmaXJzdDogbnVsbCxcclxuICAgICAgICAgICAgc2Vjb25kOiBudWxsLFxyXG4gICAgICAgICAgICBvcGVyYXRpb25Vbml0OiBudWxsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5JbikgeyAvL211bHRpIHNlbGVjdCAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvL2ZpbHRlciBrZXlzIGRvbid0IGV4aXN0IG9uIGZpZWxkIG9wdGlvbnNcclxuICAgICAgICAgICAgZGF0YS5maXJzdCA9IGN1cnJlbnQ/LlZhbHVlcz8ubGVuZ3RoID4gMCA/IGN1cnJlbnQuVmFsdWVzLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZC5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi5rZXkgPT09IGl0ZW0pO1xyXG4gICAgICAgICAgICB9KSA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgb3BlcmF0b3IgPT09IFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JzLkluVGhlTGFzdCB8fFxyXG4gICAgICAgICAgICBvcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTm90SW5UaGVMYXN0IHx8XHJcbiAgICAgICAgICAgIG9wZXJhdG9yID09PSBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5EdWVJbiB8fFxyXG4gICAgICAgICAgICBvcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTm90RHVlSW5cclxuICAgICAgICApIHsgLy9vcGVyYXRpb24gdW5pdFxyXG4gICAgICAgICAgICBkYXRhLmZpcnN0ID0gY3VycmVudD8uVmFsdWVzPy5sZW5ndGggPiAwID8gY3VycmVudC5WYWx1ZXNbMF0gOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAoY3VycmVudD8uVmFsdWVzPy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEub3BlcmF0aW9uVW5pdCA9IGdldFNtYXJ0QnVpbGRlck9wZXJhdGlvblVuaXQoY3VycmVudC5WYWx1ZXNbMV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YS5maXJzdCA9IGN1cnJlbnQ/LlZhbHVlcz8ubGVuZ3RoID4gMCA/IGN1cnJlbnQuVmFsdWVzWzBdIDogbnVsbDtcclxuICAgICAgICAgICAgZGF0YS5zZWNvbmQgPSBjdXJyZW50Py5WYWx1ZXM/Lmxlbmd0aCA9PT0gMiA/IGN1cnJlbnQuVmFsdWVzWzFdIDogbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29udmVydHMgbGVnYWN5IGZpZWxkcyB0byBzbWFydCBmaWx0ZXIgZmllbGRzXHJcbiAgICAgKiBAcGFyYW0gZmllbGRzIGxlZ2FjeSBmaWVsZHMgYXJyYXlcclxuICAgICAqIEByZXR1cm5zIHNtYXJ0IGZpbHRlciBmaWVsZHMgYXJyYXlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb252ZXJ0VG9TbWFydEZpbHRlckZpZWxkcyhmaWVsZHM6IEFycmF5PElQZXBRdWVyeUJ1aWxkZXJGaWVsZD4pIHtcclxuICAgICAgICBpZiAoZmllbGRzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGVNYXBwZXIgPSBuZXcgUGVwUXVlcnlCdWlsZGVyVHlwZU1hcCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTbWFydEZpbHRlckZpZWxkKFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGZpZWxkLkZpZWxkSUQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGZpZWxkLlRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBmaWVsZC5PcHRpb25hbFZhbHVlcz8ubWFwKG9wdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLktleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLlZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBJUGVwU21hcnRGaWx0ZXJGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICwgdHlwZU1hcHBlci5nZXRTbWFydEJ1aWxkZXJUeXBlKGZpZWxkLkZpZWxkVHlwZSkgYXMgUGVwU21hcnRGaWx0ZXJUeXBlKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjcmVhdGVzIGEgbGVnYWN5IG91dHB1dCBxdWVyeSBcclxuICAgICAqL1xyXG4gICAgY3JlYXRlT3V0cHV0UXVlcnkoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2Zvcm0udmFsaWQpIHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLl9vdXRwdXRRdWVyeVNlcnZpY2UuZ2VuZXJhdGVRdWVyeSh0aGlzLl9mb3JtLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5fb3V0cHV0UXVlcnkkLm5leHQocXVlcnkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn0iXX0=
@@ -1,79 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { distinctUntilChanged } from 'rxjs/operators';
4
- import { BaseFilterComponent } from '../common/model/base-filter-component';
5
- import { PepSmartFilterOperators, } from '../common/model/operator';
6
- export class PepTextFilterComponent extends BaseFilterComponent {
7
- constructor() {
8
- super(...arguments);
9
- this.chooseTypeOptions = [];
10
- this.operatorWidth = '38%';
11
- this.firstControlWidth = '62%';
12
- }
13
- ngOnInit() {
14
- this.firstControl.valueChanges
15
- .pipe(this.getDestroyer(), distinctUntilChanged())
16
- .subscribe(() => {
17
- this.setFieldsStateAndValidators();
18
- });
19
- }
20
- // Override
21
- getDefaultOperator() {
22
- return PepSmartFilterOperators.Equals;
23
- }
24
- // Override
25
- getFilterValue() {
26
- const filterValue = {
27
- first: this.firstControl.value,
28
- };
29
- if (this.operator === PepSmartFilterOperators.NumberRange) {
30
- filterValue['second'] = this.secondControl.value;
31
- }
32
- return filterValue;
33
- }
34
- // Override
35
- loadOperatorsOptions() {
36
- this.chooseTypeOptions = this.operators.map((operator) => {
37
- return {
38
- key: operator.id,
39
- value: this.translate.instant(`${this.OPERATORS_TRANSLATION_PREFIX}.${operator.name}`),
40
- };
41
- });
42
- }
43
- // Override
44
- setFieldsStateAndValidators() {
45
- if (this.operator === PepSmartFilterOperators.NumberRange) {
46
- const firstValidators = [Validators.required];
47
- if (this.secondControl.value) {
48
- firstValidators.push(this.validator.isLessThan(this.secondControl));
49
- }
50
- this.firstControl.setValidators(firstValidators);
51
- }
52
- else {
53
- super.setFieldsStateAndValidators();
54
- }
55
- }
56
- onOperatorChanged(value) {
57
- const operator = Object.values(PepSmartFilterOperators).find((operator) => operator.id === value);
58
- this.operator = operator;
59
- if (this._parentForm) {
60
- this.updateParentForm();
61
- }
62
- if (this.emitOnChange) {
63
- this.applyFilter();
64
- }
65
- }
66
- onValueChanged() {
67
- if (this.emitOnChange) {
68
- this.applyFilter();
69
- }
70
- }
71
- }
72
- PepTextFilterComponent.decorators = [
73
- { type: Component, args: [{
74
- selector: 'pep-text-filter',
75
- template: "<div [formGroup]=\"form\" [fxLayout]=\"inline ? 'row' : 'column'\" [fxLayoutGap]=\"inline ? '.5rem' : '0rem'\">\r\n <pep-select [fxFlex]=\"inline ? operatorWidth : null\" [key]=\"'typeOperator'\" [value]=\"operator.id\"\r\n [label]=\"'SMART_FILTERS.TYPE' | translate\" [renderTitle]=\"renderTitle\" [emptyOption]=\"false\"\r\n [options]=\"chooseTypeOptions\" (valueChange)=\"onOperatorChanged($event)\">\r\n </pep-select>\r\n <pep-textbox [fxFlex]=\"inline ? firstControlWidth : null\" [form]=\"form\" [key]=\"firstControlKey\"\r\n [label]=\"'SMART_FILTERS.AMOUNT' | translate\" [renderError]=\"false\" [renderTitle]=\"renderTitle\"\r\n [type]=\"field.type\" [formattedValue]=\"firstControl?.value || ''\" [value]=\"firstControl?.value || ''\"\r\n (valueChange)=\"onValueChanged()\">\r\n </pep-textbox>\r\n</div>",
76
- styles: [""]
77
- },] }
78
- ];
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL3RleHQtZmlsdGVyL3RleHQtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUVILHVCQUF1QixHQUMxQixNQUFNLDBCQUEwQixDQUFDO0FBU2xDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxtQkFBbUI7SUFML0Q7O1FBTUksc0JBQWlCLEdBQXNCLEVBQUUsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUF3RTlCLENBQUM7SUF0RUcsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWTthQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLG9CQUFvQixFQUFFLENBQUM7YUFDakQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFdBQVc7SUFDWCxrQkFBa0I7UUFDZCxPQUFPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztJQUMxQyxDQUFDO0lBRUQsV0FBVztJQUNYLGNBQWM7UUFDVixNQUFNLFdBQVcsR0FBRztZQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO1NBQ2pDLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssdUJBQXVCLENBQUMsV0FBVyxFQUFFO1lBQ3ZELFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztTQUNwRDtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO0lBQ1gsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3JELE9BQU87Z0JBQ0gsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3pCLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FDMUQ7YUFDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztJQUNYLDJCQUEyQjtRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssdUJBQXVCLENBQUMsV0FBVyxFQUFFO1lBQ3ZELE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7YUFDdkU7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNwRDthQUFNO1lBQ0gsS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBYTtRQUMzQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsSUFBSSxDQUN4RCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQ3RDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQzs7O1lBOUVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQix1MkJBQTJDOzthQUU5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25DaGFuZ2VzLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21tb24vbW9kZWwvYmFzZS1maWx0ZXItY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIElQZXBTbWFydEZpbHRlck9wZXJhdG9yLFxyXG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMsXHJcbn0gZnJvbSAnLi4vY29tbW9uL21vZGVsL29wZXJhdG9yJztcclxuaW1wb3J0IHsgSVBlcE9wdGlvbiB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcclxuaW1wb3J0IHsgSVBlcFNtYXJ0RmlsdGVyRGF0YVZhbHVlIH0gZnJvbSAnLi4vY29tbW9uL21vZGVsL2ZpbHRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncGVwLXRleHQtZmlsdGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90ZXh0LWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVwVGV4dEZpbHRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgY2hvb3NlVHlwZU9wdGlvbnM6IEFycmF5PElQZXBPcHRpb24+ID0gW107XHJcbiAgICBvcGVyYXRvcldpZHRoID0gJzM4JSc7XHJcbiAgICBmaXJzdENvbnRyb2xXaWR0aCA9ICc2MiUnO1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgICAucGlwZSh0aGlzLmdldERlc3Ryb3llcigpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE92ZXJyaWRlXHJcbiAgICBnZXREZWZhdWx0T3BlcmF0b3IoKTogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3Ige1xyXG4gICAgICAgIHJldHVybiBQZXBTbWFydEZpbHRlck9wZXJhdG9ycy5FcXVhbHM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gT3ZlcnJpZGVcclxuICAgIGdldEZpbHRlclZhbHVlKCk6IElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB7XHJcbiAgICAgICAgICAgIGZpcnN0OiB0aGlzLmZpcnN0Q29udHJvbC52YWx1ZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTnVtYmVyUmFuZ2UpIHtcclxuICAgICAgICAgICAgZmlsdGVyVmFsdWVbJ3NlY29uZCddID0gdGhpcy5zZWNvbmRDb250cm9sLnZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE92ZXJyaWRlXHJcbiAgICBsb2FkT3BlcmF0b3JzT3B0aW9ucygpIHtcclxuICAgICAgICB0aGlzLmNob29zZVR5cGVPcHRpb25zID0gdGhpcy5vcGVyYXRvcnMubWFwKChvcGVyYXRvcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAga2V5OiBvcGVyYXRvci5pZCxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuT1BFUkFUT1JTX1RSQU5TTEFUSU9OX1BSRUZJWH0uJHtvcGVyYXRvci5uYW1lfWBcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gT3ZlcnJpZGVcclxuICAgIHNldEZpZWxkc1N0YXRlQW5kVmFsaWRhdG9ycygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5vcGVyYXRvciA9PT0gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMuTnVtYmVyUmFuZ2UpIHtcclxuICAgICAgICAgICAgY29uc3QgZmlyc3RWYWxpZGF0b3JzID0gW1ZhbGlkYXRvcnMucmVxdWlyZWRdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWNvbmRDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBmaXJzdFZhbGlkYXRvcnMucHVzaCh0aGlzLnZhbGlkYXRvci5pc0xlc3NUaGFuKHRoaXMuc2Vjb25kQ29udHJvbCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnNldFZhbGlkYXRvcnMoZmlyc3RWYWxpZGF0b3JzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdXBlci5zZXRGaWVsZHNTdGF0ZUFuZFZhbGlkYXRvcnMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25PcGVyYXRvckNoYW5nZWQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gT2JqZWN0LnZhbHVlcyhQZXBTbWFydEZpbHRlck9wZXJhdG9ycykuZmluZChcclxuICAgICAgICAgICAgKG9wZXJhdG9yKSA9PiBvcGVyYXRvci5pZCA9PT0gdmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcclxuICAgICAgICBpZiAodGhpcy5fcGFyZW50Rm9ybSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBhcmVudEZvcm0oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25WYWx1ZUNoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1pdE9uQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59Il19