@theseam/ui-common 0.4.0-beta.2 → 0.4.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/breadcrumbs/breadcrumb.d.ts +1 -1
  2. package/breadcrumbs/breadcrumbs-resolver.d.ts +1 -1
  3. package/core/common-behaviors/active.d.ts +1 -1
  4. package/core/common-behaviors/constructor.d.ts +1 -1
  5. package/core/common-behaviors/disabled.d.ts +1 -1
  6. package/core/common-behaviors/initialized.d.ts +1 -1
  7. package/core/common-behaviors/size.d.ts +1 -1
  8. package/core/common-behaviors/tabindex.d.ts +1 -1
  9. package/core/common-behaviors/theme.d.ts +1 -1
  10. package/data-exporter/data-exporter.d.ts +1 -1
  11. package/data-filters/data-filter.d.ts +3 -3
  12. package/data-filters/filters/data-filter-search/search-filter-options.d.ts +1 -1
  13. package/datatable/datatable-column/datatable-column.component.d.ts +1 -1
  14. package/datatable/models/preferences.d.ts +1 -1
  15. package/datatable/models/table-column.d.ts +1 -1
  16. package/datatable/services/columns-manager.service.d.ts +1 -1
  17. package/datatable-dynamic/datatable-dynamic-def.d.ts +3 -3
  18. package/datatable-dynamic/models/dynamic-datatable-action-menu-record.d.ts +1 -1
  19. package/dynamic/models/dynamic-value-base-type.d.ts +1 -1
  20. package/dynamic/models/dynamic-value-evaluatable-type.d.ts +1 -1
  21. package/dynamic/models/dynamic-value-primitive.d.ts +1 -1
  22. package/dynamic/models/dynamic-value.d.ts +1 -1
  23. package/dynamic/tokens/api-config.d.ts +1 -1
  24. package/esm2020/asset-reader/asset-reader-helper.service.mjs +3 -3
  25. package/esm2020/asset-reader/asset-reader.module.mjs +4 -4
  26. package/esm2020/asset-reader/encrypted-asset-link.directive.mjs +12 -12
  27. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +3 -3
  28. package/esm2020/breadcrumbs/breadcrumbs.module.mjs +4 -4
  29. package/esm2020/breadcrumbs/breadcrumbs.service.mjs +3 -3
  30. package/esm2020/buttons/badge-button/badge-button.component.mjs +6 -6
  31. package/esm2020/buttons/button/button.component.mjs +9 -9
  32. package/esm2020/buttons/buttons.module.mjs +4 -4
  33. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +3 -3
  34. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +5 -5
  35. package/esm2020/card/card-action/card-action.component.mjs +3 -3
  36. package/esm2020/card/card-body/card-body.component.mjs +3 -3
  37. package/esm2020/card/card-footer/card-footer.component.mjs +3 -3
  38. package/esm2020/card/card-header/card-header.component.mjs +3 -3
  39. package/esm2020/card/card.component.mjs +3 -3
  40. package/esm2020/card/card.module.mjs +4 -4
  41. package/esm2020/checkbox/checkbox.component.mjs +43 -43
  42. package/esm2020/checkbox/checkbox.module.mjs +4 -4
  43. package/esm2020/checkbox/testing/checkbox.harness.mjs +1 -1
  44. package/esm2020/checkbox/testing/index.mjs +1 -1
  45. package/esm2020/confirm-dialog/confirm-click.directive.mjs +9 -9
  46. package/esm2020/confirm-dialog/confirm-dialog.component.mjs +3 -3
  47. package/esm2020/confirm-dialog/confirm-dialog.module.mjs +4 -4
  48. package/esm2020/confirm-dialog/confirm-dialog.service.mjs +3 -3
  49. package/esm2020/core/common-behaviors/active.mjs +3 -3
  50. package/esm2020/core/common-behaviors/disabled.mjs +3 -3
  51. package/esm2020/core/common-behaviors/size.mjs +6 -6
  52. package/esm2020/core/common-behaviors/tabindex.mjs +5 -5
  53. package/esm2020/core/common-behaviors/theme.mjs +6 -6
  54. package/esm2020/data-exporter/data-exporter.module.mjs +4 -4
  55. package/esm2020/data-exporter/exporters/csv-exporter.mjs +3 -3
  56. package/esm2020/data-exporter/exporters/xlsx-exporter.mjs +3 -3
  57. package/esm2020/data-filters/data-filters.module.mjs +4 -4
  58. package/esm2020/data-filters/filters/data-filter-search/data-filter-search.component.mjs +10 -10
  59. package/esm2020/data-filters/filters/data-filter-text/data-filter-text.component.mjs +10 -10
  60. package/esm2020/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.mjs +11 -11
  61. package/esm2020/datatable/datatable/datatable.component.mjs +108 -108
  62. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +3 -3
  63. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +3 -3
  64. package/esm2020/datatable/datatable-column/datatable-column.component.mjs +7 -7
  65. package/esm2020/datatable/datatable-column-preferences/datatable-column-preferences.component.mjs +3 -3
  66. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +3 -3
  67. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +7 -7
  68. package/esm2020/datatable/datatable-footer/datatable-footer-tpl.directive.mjs +3 -3
  69. package/esm2020/datatable/datatable-footer/datatable-footer.directive.mjs +3 -3
  70. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +8 -8
  71. package/esm2020/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.mjs +3 -3
  72. package/esm2020/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.mjs +3 -3
  73. package/esm2020/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.mjs +3 -3
  74. package/esm2020/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.mjs +3 -3
  75. package/esm2020/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.mjs +3 -3
  76. package/esm2020/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.mjs +3 -3
  77. package/esm2020/datatable/datatable-row-detail/datatable-row-detail.directive.mjs +3 -3
  78. package/esm2020/datatable/datatable.module.mjs +4 -4
  79. package/esm2020/datatable/directives/datatable-action-menu-item.directive.mjs +3 -3
  80. package/esm2020/datatable/directives/datatable-action-menu-toggle.directive.mjs +11 -11
  81. package/esm2020/datatable/directives/datatable-cell-tpl.directive.mjs +3 -3
  82. package/esm2020/datatable/directives/datatable-filter.directive.mjs +3 -3
  83. package/esm2020/datatable/directives/datatable-row-action-item.directive.mjs +3 -3
  84. package/esm2020/datatable/services/columns-alterations-manager.service.mjs +3 -3
  85. package/esm2020/datatable/services/columns-manager.service.mjs +3 -3
  86. package/esm2020/datatable/services/datatable-column-changes.service.mjs +3 -3
  87. package/esm2020/datatable/services/datatable-preferences.service.mjs +6 -6
  88. package/esm2020/datatable/services/datatable-scrollbar-helper.service.mjs +3 -3
  89. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +12 -12
  90. package/esm2020/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.mjs +8 -8
  91. package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.mjs +6 -6
  92. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +8 -8
  93. package/esm2020/datatable-dynamic/datatable-dynamic.module.mjs +4 -4
  94. package/esm2020/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.mjs +7 -7
  95. package/esm2020/datatable-dynamic/dynamic-datatable-def.service.mjs +3 -3
  96. package/esm2020/datatable-dynamic/dynamic-datatable-row-actions.service.mjs +3 -3
  97. package/esm2020/dynamic/action/api/dynamic-action-api.service.mjs +3 -3
  98. package/esm2020/dynamic/action/dynamic-action-helper.service.mjs +3 -3
  99. package/esm2020/dynamic/action/link/dynamic-action-link.service.mjs +3 -3
  100. package/esm2020/dynamic/action/modal/dynamic-action-modal.service.mjs +3 -3
  101. package/esm2020/dynamic/dynamic-value-helper.service.mjs +3 -3
  102. package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.mjs +3 -3
  103. package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-evaluator.mjs +3 -3
  104. package/esm2020/dynamic-component-loader/dynamic-component-loader.module.mjs +4 -4
  105. package/esm2020/dynamic-component-loader/dynamic-component-loader.service.mjs +3 -3
  106. package/esm2020/footer-bar/footer-bar/footer-bar.component.mjs +3 -3
  107. package/esm2020/footer-bar/footer-bar.module.mjs +4 -4
  108. package/esm2020/form-field/form-field-error.directive.mjs +6 -6
  109. package/esm2020/form-field/form-field-help-text.directive.mjs +3 -3
  110. package/esm2020/form-field/form-field-label-tpl.directive.mjs +3 -3
  111. package/esm2020/form-field/form-field-required-indicator.component.mjs +3 -3
  112. package/esm2020/form-field/form-field-tokens.mjs +1 -1
  113. package/esm2020/form-field/form-field.component.mjs +48 -48
  114. package/esm2020/form-field/form-field.module.mjs +4 -4
  115. package/esm2020/form-field/input.directive.mjs +43 -43
  116. package/esm2020/form-field/testing/form-field-required-indicator.harness.mjs +1 -1
  117. package/esm2020/form-field/testing/index.mjs +1 -1
  118. package/esm2020/form-field-error/form-field-error/form-field-error.component.mjs +3 -3
  119. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.mjs +3 -3
  120. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item.directive.mjs +3 -3
  121. package/esm2020/form-field-error/form-field-error-list/form-field-error-list.component.mjs +92 -92
  122. package/esm2020/form-field-error/form-field-error.module.mjs +4 -4
  123. package/esm2020/framework/base-layout/base-layout.component.mjs +6 -6
  124. package/esm2020/framework/base-layout/base-layout.module.mjs +4 -4
  125. package/esm2020/framework/base-layout/directives/base-layout-content-footer.directive.mjs +3 -3
  126. package/esm2020/framework/base-layout/directives/base-layout-content-header.directive.mjs +3 -3
  127. package/esm2020/framework/base-layout/directives/base-layout-content.directive.mjs +3 -3
  128. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +10 -10
  129. package/esm2020/framework/base-layout/directives/base-layout-side-bar-footer.directive.mjs +3 -3
  130. package/esm2020/framework/base-layout/directives/base-layout-side-bar.directive.mjs +3 -3
  131. package/esm2020/framework/base-layout/directives/base-layout-top-bar.directive.mjs +3 -3
  132. package/esm2020/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.mjs +3 -3
  133. package/esm2020/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.mjs +3 -3
  134. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.mjs +3 -3
  135. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.mjs +3 -3
  136. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +18 -18
  137. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +12 -12
  138. package/esm2020/framework/dashboard/dashboard-widgets-tokens.mjs +1 -1
  139. package/esm2020/framework/dashboard/dashboard.component.mjs +3 -3
  140. package/esm2020/framework/dashboard/dashboard.module.mjs +4 -4
  141. package/esm2020/framework/dynamic-router/dynamic-router.module.mjs +4 -4
  142. package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.mjs +3 -3
  143. package/esm2020/framework/dynamic-router/resolvers/hierarchy-level.resolver.mjs +3 -3
  144. package/esm2020/framework/schema-form/schema-form-framework.component.mjs +3 -3
  145. package/esm2020/framework/schema-form/schema-form-framework.mjs +3 -3
  146. package/esm2020/framework/schema-form/schema-form.module.mjs +4 -4
  147. package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +3 -3
  148. package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +4 -4
  149. package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +3 -3
  150. package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +3 -3
  151. package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +3 -3
  152. package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +3 -3
  153. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +3 -3
  154. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +24 -24
  155. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +3 -3
  156. package/esm2020/framework/side-nav/side-nav-tokens.mjs +1 -1
  157. package/esm2020/framework/side-nav/side-nav.component.mjs +17 -17
  158. package/esm2020/framework/side-nav/side-nav.module.mjs +4 -4
  159. package/esm2020/framework/side-nav/side-nav.service.mjs +3 -3
  160. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +3 -3
  161. package/esm2020/framework/top-bar/top-bar-menu-btn-detail.directive.mjs +3 -3
  162. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +3 -3
  163. package/esm2020/framework/top-bar/top-bar-menu.directive.mjs +3 -3
  164. package/esm2020/framework/top-bar/top-bar-title/top-bar-title.component.mjs +3 -3
  165. package/esm2020/framework/top-bar/top-bar.component.mjs +3 -3
  166. package/esm2020/framework/top-bar/top-bar.module.mjs +4 -4
  167. package/esm2020/google-maps/google-maps/google-maps.component.mjs +17 -17
  168. package/esm2020/google-maps/google-maps-controls.service.mjs +3 -3
  169. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +20 -20
  170. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.mjs +7 -7
  171. package/esm2020/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.mjs +7 -7
  172. package/esm2020/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.mjs +7 -7
  173. package/esm2020/google-maps/google-maps.module.mjs +4 -4
  174. package/esm2020/google-maps/google-maps.service.mjs +5 -5
  175. package/esm2020/google-maps/map-control.component.mjs +9 -9
  176. package/esm2020/google-maps/map-file-drop/map-file-drop.component.mjs +3 -3
  177. package/esm2020/google-maps/map-value-manager.service.mjs +3 -3
  178. package/esm2020/graphql/datatable/datatable-graphql-query-ref.mjs +5 -5
  179. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +3 -3
  180. package/esm2020/icon/icon/icon.component.mjs +3 -3
  181. package/esm2020/icon/icon-btn/icon-btn.component.mjs +24 -24
  182. package/esm2020/icon/icon-notification/icon-notification.component.mjs +3 -3
  183. package/esm2020/icon/icon.module.mjs +4 -4
  184. package/esm2020/layout/layout.module.mjs +4 -4
  185. package/esm2020/layout/layout.service.mjs +3 -3
  186. package/esm2020/loading/loading/loading.component.mjs +7 -7
  187. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  188. package/esm2020/loading/loading.module.mjs +4 -4
  189. package/esm2020/menu/menu-divider.component.mjs +3 -3
  190. package/esm2020/menu/menu-footer/menu-footer.component.mjs +3 -3
  191. package/esm2020/menu/menu-footer-action/menu-footer-action.component.mjs +7 -7
  192. package/esm2020/menu/menu-header/menu-header.component.mjs +3 -3
  193. package/esm2020/menu/menu-item.component.mjs +3 -3
  194. package/esm2020/menu/menu-toggle.directive.mjs +42 -42
  195. package/esm2020/menu/menu.component.mjs +15 -15
  196. package/esm2020/menu/menu.module.mjs +4 -4
  197. package/esm2020/modal/directives/modal-close.directive.mjs +11 -11
  198. package/esm2020/modal/directives/modal-footer-tpl.directive.mjs +3 -3
  199. package/esm2020/modal/directives/modal-header-icon-tpl.directive.mjs +3 -3
  200. package/esm2020/modal/directives/modal-header-title-tpl.directive.mjs +3 -3
  201. package/esm2020/modal/directives/modal-title.directive.mjs +3 -3
  202. package/esm2020/modal/directives/modal.directive.mjs +3 -3
  203. package/esm2020/modal/modal/modal.component.mjs +19 -19
  204. package/esm2020/modal/modal-body/modal-body.component.mjs +3 -3
  205. package/esm2020/modal/modal-container/modal-container.component.mjs +12 -12
  206. package/esm2020/modal/modal-footer/modal-footer.component.mjs +3 -3
  207. package/esm2020/modal/modal-header/modal-header.component.mjs +3 -3
  208. package/esm2020/modal/modal.module.mjs +4 -4
  209. package/esm2020/modal/modal.service.mjs +16 -16
  210. package/esm2020/modal/route-modal/route-modal.component.mjs +3 -3
  211. package/esm2020/popover/popover/popover.component.mjs +18 -18
  212. package/esm2020/popover/popover.directive.mjs +32 -32
  213. package/esm2020/popover/popover.module.mjs +4 -4
  214. package/esm2020/progress/progress-circle/progress-circle.component.mjs +9 -9
  215. package/esm2020/progress/progress.module.mjs +4 -4
  216. package/esm2020/public_api.mjs +1 -42
  217. package/esm2020/scrollbar/overlay-scrollbar.directive.mjs +10 -10
  218. package/esm2020/scrollbar/overlay-scrollbars.service.mjs +3 -3
  219. package/esm2020/scrollbar/scrollbar.module.mjs +4 -4
  220. package/esm2020/services/asset-loader.service.mjs +3 -3
  221. package/esm2020/services/font-loader.service.mjs +3 -3
  222. package/esm2020/services/router-helpers.service.mjs +3 -3
  223. package/esm2020/shared/components/password-input-reveal/password-input-reveal.component.mjs +3 -3
  224. package/esm2020/shared/directives/auto-focus.directive.mjs +3 -3
  225. package/esm2020/shared/directives/click-outside.directive.mjs +9 -9
  226. package/esm2020/shared/directives/disable-control.directive.mjs +7 -7
  227. package/esm2020/shared/directives/elem-resized.directive.mjs +3 -3
  228. package/esm2020/shared/directives/hover-class-toggle.directive.mjs +10 -10
  229. package/esm2020/shared/directives/hover-class.directive.mjs +9 -9
  230. package/esm2020/shared/directives/ng-select-extra.directive.mjs +26 -26
  231. package/esm2020/shared/directives/ngx-quill-extra.directive.mjs +10 -10
  232. package/esm2020/shared/pipes/mask-chars.pipe.mjs +3 -3
  233. package/esm2020/shared/pipes/truncate.pipe.mjs +3 -3
  234. package/esm2020/shared/shared.module.mjs +4 -4
  235. package/esm2020/storage/local-storage.service.mjs +3 -3
  236. package/esm2020/story-helpers/initial-route.service.mjs +3 -3
  237. package/esm2020/story-helpers/story-empty-with-route.component.mjs +3 -3
  238. package/esm2020/story-helpers/story-empty.component.mjs +3 -3
  239. package/esm2020/story-helpers/story-helper-components.module.mjs +4 -4
  240. package/esm2020/story-helpers/story-initial-route.mjs +4 -4
  241. package/esm2020/story-helpers/story-modal-container.component.mjs +6 -6
  242. package/esm2020/story-helpers/story-toastr.service.mjs +3 -3
  243. package/esm2020/tabbed/directives/tabbed-tab-content.directive.mjs +3 -3
  244. package/esm2020/tabbed/directives/tabbed-tab.directive.mjs +3 -3
  245. package/esm2020/tabbed/tabbed-content/tabbed-content.component.mjs +3 -3
  246. package/esm2020/tabbed/tabbed-item/tabbed-item.component.mjs +3 -3
  247. package/esm2020/tabbed/tabbed-models.mjs +1 -1
  248. package/esm2020/tabbed/tabbed.component.mjs +13 -13
  249. package/esm2020/tabbed/tabbed.module.mjs +4 -4
  250. package/esm2020/tabbed/tabbed.service.mjs +3 -3
  251. package/esm2020/table/table/table.component.mjs +11 -11
  252. package/esm2020/table/table.module.mjs +4 -4
  253. package/esm2020/table-cell-type/services/table-cell-types-helpers.service.mjs +3 -3
  254. package/esm2020/table-cell-type/table-cell-type-selector.component.mjs +3 -3
  255. package/esm2020/table-cell-type/table-cell-type.module.mjs +4 -4
  256. package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.mjs +3 -3
  257. package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.component.mjs +3 -3
  258. package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.mjs +3 -3
  259. package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.mjs +31 -31
  260. package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.mjs +3 -3
  261. package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.mjs +6 -6
  262. package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.mjs +3 -3
  263. package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.mjs +3 -3
  264. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +23 -23
  265. package/esm2020/table-cell-types/table-cell-types.module.mjs +4 -4
  266. package/esm2020/tel-input/phone-number.pipe.mjs +3 -3
  267. package/esm2020/tel-input/tel-input/tel-input.component.mjs +34 -34
  268. package/esm2020/tel-input/tel-input.directive.mjs +18 -18
  269. package/esm2020/tel-input/tel-input.module.mjs +4 -4
  270. package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +20 -20
  271. package/esm2020/tiled-select/components/tiled-select-tile/tiled-select-tile.component.mjs +6 -6
  272. package/esm2020/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.mjs +10 -10
  273. package/esm2020/tiled-select/directives/tiled-select-tile-icon-tpl.directive.mjs +3 -3
  274. package/esm2020/tiled-select/directives/tiled-select-tile-label-tpl.directive.mjs +3 -3
  275. package/esm2020/tiled-select/directives/tiled-select-tile-overlay.directive.mjs +3 -3
  276. package/esm2020/tiled-select/tiled-select.module.mjs +4 -4
  277. package/esm2020/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.mjs +3 -3
  278. package/esm2020/toggle-edit/toggle-edit-display-tpl.directive.mjs +3 -3
  279. package/esm2020/toggle-edit/toggle-edit-keyboard-listener.service.mjs +3 -3
  280. package/esm2020/toggle-edit/toggle-edit.component.mjs +16 -16
  281. package/esm2020/toggle-edit/toggle-edit.module.mjs +4 -4
  282. package/esm2020/toggle-group/toggle-group-option.directive.mjs +12 -12
  283. package/esm2020/toggle-group/toggle-group.directive.mjs +3 -3
  284. package/esm2020/toggle-group/toggle-group.module.mjs +4 -4
  285. package/esm2020/unsaved-changes-dialog/unsaved-changes-can-deactivate.mjs +3 -3
  286. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +3 -3
  287. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.guard.mjs +3 -3
  288. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +4 -4
  289. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  290. package/esm2020/utils/geo-json/geo-json-to-area.mjs +1 -1
  291. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  292. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  293. package/esm2020/utils/geo-json/is-only-geometry-types.validator.mjs +1 -1
  294. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  295. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  296. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  297. package/esm2020/viewers/html-template-viewer/html-template-viewer.component.mjs +37 -37
  298. package/esm2020/viewers/html-template-viewer/html-template-viewer.module.mjs +4 -4
  299. package/esm2020/viewers/pdf-viewer/pdf-page/pdf-page.component.mjs +10 -10
  300. package/esm2020/viewers/pdf-viewer/pdf-renderer.service.mjs +3 -3
  301. package/esm2020/viewers/pdf-viewer/pdf-viewer.component.mjs +38 -38
  302. package/esm2020/viewers/pdf-viewer/pdf-viewer.module.mjs +4 -4
  303. package/esm2020/widget/directives/widget-drag-handle.directive.mjs +12 -12
  304. package/esm2020/widget/directives/widget-icon-tpl.directive.mjs +3 -3
  305. package/esm2020/widget/directives/widget-title-tpl.directive.mjs +3 -3
  306. package/esm2020/widget/widget/widget.component.mjs +23 -23
  307. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.component.mjs +3 -3
  308. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.module.mjs +4 -4
  309. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.component.mjs +3 -3
  310. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.module.mjs +4 -4
  311. package/esm2020/widget/widget-content-components/widget-description/widget-description.component.mjs +3 -3
  312. package/esm2020/widget/widget-content-components/widget-description/widget-description.module.mjs +4 -4
  313. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.component.mjs +7 -7
  314. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.module.mjs +4 -4
  315. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.component.mjs +3 -3
  316. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.module.mjs +4 -4
  317. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.component.mjs +3 -3
  318. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.module.mjs +4 -4
  319. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.component.mjs +3 -3
  320. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.module.mjs +4 -4
  321. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.mjs +3 -3
  322. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.mjs +15 -15
  323. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.component.mjs +3 -3
  324. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.module.mjs +4 -4
  325. package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +3 -3
  326. package/esm2020/widget/widget-content-components/widget-table/widget-table.module.mjs +4 -4
  327. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.mjs +3 -3
  328. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.mjs +8 -8
  329. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.mjs +3 -3
  330. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.mjs +3 -3
  331. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.component.mjs +16 -16
  332. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.module.mjs +4 -4
  333. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.component.mjs +3 -3
  334. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.module.mjs +4 -4
  335. package/esm2020/widget/widget-footer/widget-footer.component.mjs +3 -3
  336. package/esm2020/widget/widget-registry.service.mjs +3 -3
  337. package/esm2020/widget/widget.module.mjs +4 -4
  338. package/fesm2015/theseam-ui-common-asset-reader.mjs +18 -18
  339. package/fesm2015/theseam-ui-common-asset-reader.mjs.map +1 -1
  340. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +10 -10
  341. package/fesm2015/theseam-ui-common-buttons.mjs +26 -26
  342. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  343. package/fesm2015/theseam-ui-common-card.mjs +19 -19
  344. package/fesm2015/theseam-ui-common-checkbox.mjs +46 -46
  345. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  346. package/fesm2015/theseam-ui-common-confirm-dialog.mjs +18 -18
  347. package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  348. package/fesm2015/theseam-ui-common-core.mjs +18 -18
  349. package/fesm2015/theseam-ui-common-core.mjs.map +1 -1
  350. package/fesm2015/theseam-ui-common-data-exporter.mjs +10 -10
  351. package/fesm2015/theseam-ui-common-data-filters.mjs +32 -32
  352. package/fesm2015/theseam-ui-common-data-filters.mjs.map +1 -1
  353. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +46 -46
  354. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  355. package/fesm2015/theseam-ui-common-datatable.mjs +208 -208
  356. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  357. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  358. package/fesm2015/theseam-ui-common-dynamic.mjs +21 -21
  359. package/fesm2015/theseam-ui-common-footer-bar.mjs +7 -7
  360. package/fesm2015/theseam-ui-common-form-field-error.mjs +104 -104
  361. package/fesm2015/theseam-ui-common-form-field-error.mjs.map +1 -1
  362. package/fesm2015/theseam-ui-common-form-field.mjs +107 -107
  363. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  364. package/fesm2015/theseam-ui-common-framework.mjs +196 -196
  365. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  366. package/fesm2015/theseam-ui-common-google-maps.mjs +78 -78
  367. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  368. package/fesm2015/theseam-ui-common-graphql.mjs +7 -7
  369. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  370. package/fesm2015/theseam-ui-common-icon.mjs +33 -33
  371. package/fesm2015/theseam-ui-common-icon.mjs.map +1 -1
  372. package/fesm2015/theseam-ui-common-layout.mjs +7 -7
  373. package/fesm2015/theseam-ui-common-loading.mjs +13 -13
  374. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  375. package/fesm2015/theseam-ui-common-menu.mjs +79 -79
  376. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  377. package/fesm2015/theseam-ui-common-modal.mjs +85 -85
  378. package/fesm2015/theseam-ui-common-modal.mjs.map +1 -1
  379. package/fesm2015/theseam-ui-common-popover.mjs +52 -52
  380. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  381. package/fesm2015/theseam-ui-common-progress.mjs +12 -12
  382. package/fesm2015/theseam-ui-common-progress.mjs.map +1 -1
  383. package/fesm2015/theseam-ui-common-scrollbar.mjs +16 -16
  384. package/fesm2015/theseam-ui-common-scrollbar.mjs.map +1 -1
  385. package/fesm2015/theseam-ui-common-services.mjs +9 -9
  386. package/fesm2015/theseam-ui-common-shared.mjs +84 -84
  387. package/fesm2015/theseam-ui-common-shared.mjs.map +1 -1
  388. package/fesm2015/theseam-ui-common-storage.mjs +3 -3
  389. package/fesm2015/theseam-ui-common-story-helpers.mjs +25 -25
  390. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  391. package/fesm2015/theseam-ui-common-tabbed.mjs +31 -31
  392. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  393. package/fesm2015/theseam-ui-common-table-cell-type.mjs +10 -10
  394. package/fesm2015/theseam-ui-common-table-cell-types.mjs +80 -80
  395. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  396. package/fesm2015/theseam-ui-common-table.mjs +14 -14
  397. package/fesm2015/theseam-ui-common-table.mjs.map +1 -1
  398. package/fesm2015/theseam-ui-common-tel-input.mjs +59 -59
  399. package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
  400. package/fesm2015/theseam-ui-common-tiled-select.mjs +46 -46
  401. package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
  402. package/fesm2015/theseam-ui-common-toggle-edit.mjs +28 -28
  403. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  404. package/fesm2015/theseam-ui-common-toggle-group.mjs +18 -18
  405. package/fesm2015/theseam-ui-common-toggle-group.mjs.map +1 -1
  406. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  407. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  408. package/fesm2015/theseam-ui-common-viewers.mjs +93 -93
  409. package/fesm2015/theseam-ui-common-viewers.mjs.map +1 -1
  410. package/fesm2015/theseam-ui-common-widget.mjs +175 -175
  411. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  412. package/fesm2015/theseam-ui-common.mjs +0 -41
  413. package/fesm2015/theseam-ui-common.mjs.map +1 -1
  414. package/fesm2020/theseam-ui-common-asset-reader.mjs +18 -18
  415. package/fesm2020/theseam-ui-common-asset-reader.mjs.map +1 -1
  416. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +10 -10
  417. package/fesm2020/theseam-ui-common-buttons.mjs +26 -26
  418. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  419. package/fesm2020/theseam-ui-common-card.mjs +19 -19
  420. package/fesm2020/theseam-ui-common-checkbox.mjs +46 -46
  421. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  422. package/fesm2020/theseam-ui-common-confirm-dialog.mjs +18 -18
  423. package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  424. package/fesm2020/theseam-ui-common-core.mjs +18 -18
  425. package/fesm2020/theseam-ui-common-core.mjs.map +1 -1
  426. package/fesm2020/theseam-ui-common-data-exporter.mjs +10 -10
  427. package/fesm2020/theseam-ui-common-data-filters.mjs +32 -32
  428. package/fesm2020/theseam-ui-common-data-filters.mjs.map +1 -1
  429. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +46 -46
  430. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  431. package/fesm2020/theseam-ui-common-datatable.mjs +208 -208
  432. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  433. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  434. package/fesm2020/theseam-ui-common-dynamic.mjs +21 -21
  435. package/fesm2020/theseam-ui-common-footer-bar.mjs +7 -7
  436. package/fesm2020/theseam-ui-common-form-field-error.mjs +104 -104
  437. package/fesm2020/theseam-ui-common-form-field-error.mjs.map +1 -1
  438. package/fesm2020/theseam-ui-common-form-field.mjs +107 -107
  439. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  440. package/fesm2020/theseam-ui-common-framework.mjs +196 -196
  441. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  442. package/fesm2020/theseam-ui-common-google-maps.mjs +78 -78
  443. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  444. package/fesm2020/theseam-ui-common-graphql.mjs +7 -7
  445. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  446. package/fesm2020/theseam-ui-common-icon.mjs +33 -33
  447. package/fesm2020/theseam-ui-common-icon.mjs.map +1 -1
  448. package/fesm2020/theseam-ui-common-layout.mjs +7 -7
  449. package/fesm2020/theseam-ui-common-loading.mjs +13 -13
  450. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  451. package/fesm2020/theseam-ui-common-menu.mjs +77 -77
  452. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  453. package/fesm2020/theseam-ui-common-modal.mjs +85 -85
  454. package/fesm2020/theseam-ui-common-modal.mjs.map +1 -1
  455. package/fesm2020/theseam-ui-common-popover.mjs +52 -52
  456. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  457. package/fesm2020/theseam-ui-common-progress.mjs +12 -12
  458. package/fesm2020/theseam-ui-common-progress.mjs.map +1 -1
  459. package/fesm2020/theseam-ui-common-scrollbar.mjs +16 -16
  460. package/fesm2020/theseam-ui-common-scrollbar.mjs.map +1 -1
  461. package/fesm2020/theseam-ui-common-services.mjs +9 -9
  462. package/fesm2020/theseam-ui-common-shared.mjs +84 -84
  463. package/fesm2020/theseam-ui-common-shared.mjs.map +1 -1
  464. package/fesm2020/theseam-ui-common-storage.mjs +3 -3
  465. package/fesm2020/theseam-ui-common-story-helpers.mjs +25 -25
  466. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  467. package/fesm2020/theseam-ui-common-tabbed.mjs +31 -31
  468. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  469. package/fesm2020/theseam-ui-common-table-cell-type.mjs +10 -10
  470. package/fesm2020/theseam-ui-common-table-cell-types.mjs +80 -80
  471. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  472. package/fesm2020/theseam-ui-common-table.mjs +14 -14
  473. package/fesm2020/theseam-ui-common-table.mjs.map +1 -1
  474. package/fesm2020/theseam-ui-common-tel-input.mjs +57 -57
  475. package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
  476. package/fesm2020/theseam-ui-common-tiled-select.mjs +46 -46
  477. package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
  478. package/fesm2020/theseam-ui-common-toggle-edit.mjs +28 -28
  479. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  480. package/fesm2020/theseam-ui-common-toggle-group.mjs +18 -18
  481. package/fesm2020/theseam-ui-common-toggle-group.mjs.map +1 -1
  482. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  483. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  484. package/fesm2020/theseam-ui-common-viewers.mjs +93 -93
  485. package/fesm2020/theseam-ui-common-viewers.mjs.map +1 -1
  486. package/fesm2020/theseam-ui-common-widget.mjs +175 -175
  487. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  488. package/fesm2020/theseam-ui-common.mjs +0 -41
  489. package/fesm2020/theseam-ui-common.mjs.map +1 -1
  490. package/framework/base-layout/base-layout-action.d.ts +1 -1
  491. package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +1 -1
  492. package/framework/side-nav/side-nav.models.d.ts +1 -1
  493. package/google-maps/google-maps/google-maps.component.d.ts +0 -1
  494. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.d.ts +0 -4
  495. package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.d.ts +0 -4
  496. package/google-maps/google-maps.service.d.ts +0 -2
  497. package/google-maps/map-controls-service.d.ts +0 -1
  498. package/google-maps/map-value-manager.service.d.ts +1 -1
  499. package/graphql/datatable/datatable-graphql-query-ref.d.ts +2 -2
  500. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  501. package/graphql/datatable/datatable-helpers.d.ts +2 -2
  502. package/graphql/datatable/map-filter-states.d.ts +2 -2
  503. package/graphql/datatable/map-page-info.d.ts +1 -1
  504. package/graphql/datatable/mapper-context.d.ts +1 -1
  505. package/graphql/models/gql-datatable-accessor.d.ts +1 -1
  506. package/graphql/models/hint-transformer.d.ts +1 -1
  507. package/icon/icon/icon.component.d.ts +1 -1
  508. package/icon/icon.d.ts +1 -1
  509. package/layout/breakpoint-aliases.d.ts +1 -1
  510. package/loading/loading.models.d.ts +1 -1
  511. package/modal/modal-config.d.ts +1 -1
  512. package/models/component-type.d.ts +1 -1
  513. package/models/size-prefixes.d.ts +1 -1
  514. package/models/size-types.d.ts +1 -1
  515. package/models/theme-prefixes.d.ts +1 -1
  516. package/models/theme-types.d.ts +2 -2
  517. package/package.json +1 -1
  518. package/scrollbar/overlay-scrollbars-config-model.d.ts +1 -1
  519. package/services/font-loader.service.d.ts +1 -1
  520. package/styles/bootstrap/_bootstrap.scss +34 -34
  521. package/styles/bootstrap/_bs-utilities.scss +3 -3
  522. package/styles/theme.scss +3 -3
  523. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +1 -1
  524. package/styles/vendor/quill/_quill.scss +3 -3
  525. package/table/table/table.component.d.ts +1 -1
  526. package/table-cell-type/table-cell-type-models.d.ts +3 -3
  527. package/table-cell-type/table-cell-type-name.d.ts +1 -1
  528. package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +1 -1
  529. package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +1 -1
  530. package/table-cell-types/table-cell-type-date/table-cell-type-date.d.ts +1 -1
  531. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +1 -1
  532. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +1 -1
  533. package/table-cell-types/table-cell-type-icon/table-cell-type-icon-config.d.ts +1 -1
  534. package/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.d.ts +1 -1
  535. package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +1 -1
  536. package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +1 -1
  537. package/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle-config.d.ts +1 -1
  538. package/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config.d.ts +1 -1
  539. package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +1 -1
  540. package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +1 -1
  541. package/tel-input/utils/coerce-phone-number-format.d.ts +1 -1
  542. package/tiled-select/components/tiled-select/tiled-select.component.d.ts +1 -1
  543. package/tiled-select/tiled-select.models.d.ts +2 -2
  544. package/utils/polling-ticker.d.ts +1 -1
  545. package/utils/subscriber-count.d.ts +1 -1
  546. package/widget/directives/widget-drag-handle.directive.d.ts +1 -1
@@ -34,9 +34,9 @@ class CSVDataExporter {
34
34
  }));
35
35
  }
36
36
  }
37
- CSVDataExporter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: CSVDataExporter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
- CSVDataExporter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: CSVDataExporter });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: CSVDataExporter, decorators: [{
37
+ CSVDataExporter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CSVDataExporter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
+ CSVDataExporter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CSVDataExporter });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: CSVDataExporter, decorators: [{
40
40
  type: Injectable
41
41
  }] });
42
42
 
@@ -59,21 +59,21 @@ class XLSXDataExporter {
59
59
  }));
60
60
  }
61
61
  }
62
- XLSXDataExporter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: XLSXDataExporter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
63
- XLSXDataExporter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: XLSXDataExporter });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: XLSXDataExporter, decorators: [{
62
+ XLSXDataExporter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: XLSXDataExporter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
63
+ XLSXDataExporter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: XLSXDataExporter });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: XLSXDataExporter, decorators: [{
65
65
  type: Injectable
66
66
  }] });
67
67
 
68
68
  class TheSeamDataExporterModule {
69
69
  }
70
- TheSeamDataExporterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataExporterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
71
- TheSeamDataExporterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataExporterModule });
72
- TheSeamDataExporterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataExporterModule, providers: [
70
+ TheSeamDataExporterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataExporterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
71
+ TheSeamDataExporterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataExporterModule });
72
+ TheSeamDataExporterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataExporterModule, providers: [
73
73
  { provide: THESEAM_DATA_EXPORTER, useClass: CSVDataExporter, multi: true },
74
74
  { provide: THESEAM_DATA_EXPORTER, useClass: XLSXDataExporter, multi: true }
75
75
  ] });
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataExporterModule, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataExporterModule, decorators: [{
77
77
  type: NgModule,
78
78
  args: [{
79
79
  declarations: [],
@@ -96,6 +96,12 @@ function textDataFilter(data, text, options = DefaultTextFilterOptions) {
96
96
  }
97
97
  let _uid$2 = 0;
98
98
  class DataFilterTextComponent {
99
+ set value(value) {
100
+ const _value = !isNullOrUndefined(value) ? `${value}` : '';
101
+ if (this._control.value !== _value) {
102
+ this._control.setValue(_value);
103
+ }
104
+ }
99
105
  constructor(_filterContainer, _filterOptions) {
100
106
  this._filterContainer = _filterContainer;
101
107
  this._filterOptions = _filterOptions;
@@ -108,12 +114,6 @@ class DataFilterTextComponent {
108
114
  this.caseSensitive = this._optDefault('caseSensitive');
109
115
  this.filterStateChanges = this._control.valueChanges.pipe(switchMap(() => of(this.filterState())), shareReplay({ bufferSize: 1, refCount: true }));
110
116
  }
111
- set value(value) {
112
- const _value = !isNullOrUndefined(value) ? `${value}` : '';
113
- if (this._control.value !== _value) {
114
- this._control.setValue(_value);
115
- }
116
- }
117
117
  ngOnInit() { this._filterContainer.addFilter(this); }
118
118
  ngOnDestroy() { this._filterContainer.removeFilter(this); }
119
119
  _optDefault(prop) {
@@ -145,15 +145,15 @@ class DataFilterTextComponent {
145
145
  };
146
146
  }
147
147
  }
148
- DataFilterTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DataFilterTextComponent, deps: [{ token: THESEAM_DATA_FILTER_CONTAINER }, { token: THESEAM_DATA_FILTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
149
- DataFilterTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: DataFilterTextComponent, selector: "seam-data-filter-text", inputs: { properties: "properties", omitProperties: "omitProperties", exact: "exact", caseSensitive: "caseSensitive", placeholder: "placeholder", iconTpl: "iconTpl", value: "value" }, providers: [DATA_FILTER_TEXT], ngImport: i0, template: "<div class=\"position-relative\"\n [class.data-filter-text-has-icon]=\"iconTpl\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Text filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:block}.data-filter-text-has-icon>input{padding-left:30px}.data-filter-text-has-icon ::ng-deep fa-icon{position:absolute;top:3px;left:10px;bottom:0}.data-filter-text-has-icon ::ng-deep fa-icon .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }] });
148
+ DataFilterTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: DataFilterTextComponent, deps: [{ token: THESEAM_DATA_FILTER_CONTAINER }, { token: THESEAM_DATA_FILTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
149
+ DataFilterTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: DataFilterTextComponent, selector: "seam-data-filter-text", inputs: { properties: "properties", omitProperties: "omitProperties", exact: "exact", caseSensitive: "caseSensitive", placeholder: "placeholder", iconTpl: "iconTpl", value: "value" }, providers: [DATA_FILTER_TEXT], ngImport: i0, template: "<div class=\"position-relative\"\n [class.data-filter-text-has-icon]=\"iconTpl\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Text filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:block}.data-filter-text-has-icon>input{padding-left:30px}.data-filter-text-has-icon ::ng-deep fa-icon{position:absolute;top:3px;left:10px;bottom:0}.data-filter-text-has-icon ::ng-deep fa-icon .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }] });
150
150
  __decorate([
151
151
  InputBoolean()
152
152
  ], DataFilterTextComponent.prototype, "exact", void 0);
153
153
  __decorate([
154
154
  InputBoolean()
155
155
  ], DataFilterTextComponent.prototype, "caseSensitive", void 0);
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DataFilterTextComponent, decorators: [{
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: DataFilterTextComponent, decorators: [{
157
157
  type: Component,
158
158
  args: [{ selector: 'seam-data-filter-text', providers: [DATA_FILTER_TEXT], template: "<div class=\"position-relative\"\n [class.data-filter-text-has-icon]=\"iconTpl\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Text filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:block}.data-filter-text-has-icon>input{padding-left:30px}.data-filter-text-has-icon ::ng-deep fa-icon{position:absolute;top:3px;left:10px;bottom:0}.data-filter-text-has-icon ::ng-deep fa-icon .svg-inline--fa{vertical-align:middle}\n"] }]
159
159
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -197,6 +197,12 @@ function searchDataFilter(data, values, options = DefaultSearchFilterOptions) {
197
197
  }
198
198
  let _uid$1 = 0;
199
199
  class DataFilterSearchComponent {
200
+ set value(value) {
201
+ const _value = !isNullOrUndefined(value) ? `${value}` : '';
202
+ if (this._control.value !== _value) {
203
+ this._control.setValue(_value);
204
+ }
205
+ }
200
206
  constructor(_filterContainer, _filterOptions) {
201
207
  this._filterContainer = _filterContainer;
202
208
  this._filterOptions = _filterOptions;
@@ -211,12 +217,6 @@ class DataFilterSearchComponent {
211
217
  this.icon = faSearch;
212
218
  this.filterStateChanges = this._control.valueChanges.pipe(switchMap(() => of(this.filterState())), shareReplay({ bufferSize: 1, refCount: true }));
213
219
  }
214
- set value(value) {
215
- const _value = !isNullOrUndefined(value) ? `${value}` : '';
216
- if (this._control.value !== _value) {
217
- this._control.setValue(_value);
218
- }
219
- }
220
220
  ngOnInit() { this._filterContainer.addFilter(this); }
221
221
  ngOnDestroy() { this._filterContainer.removeFilter(this); }
222
222
  _optDefault(prop) {
@@ -248,15 +248,15 @@ class DataFilterSearchComponent {
248
248
  };
249
249
  }
250
250
  }
251
- DataFilterSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DataFilterSearchComponent, deps: [{ token: THESEAM_DATA_FILTER_CONTAINER }, { token: THESEAM_DATA_FILTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
252
- DataFilterSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: DataFilterSearchComponent, selector: "seam-data-filter-search", inputs: { properties: "properties", omitProperties: "omitProperties", exact: "exact", caseSensitive: "caseSensitive", placeholder: "placeholder", icon: "icon", iconTpl: "iconTpl", value: "value" }, providers: [DATA_FILTER_SEARCH], ngImport: i0, template: "<div class=\"position-relative\"\n [class.data-filter-search-has-icon]=\"iconTpl || icon\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Search filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl; else searchIconTpl\">\n <div class=\"data-filter-search--icon-wrapper\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </div>\n </ng-container>\n <ng-template #searchIconTpl>\n <ng-container *ngIf=\"icon\">\n <div class=\"data-filter-search--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\"></seam-icon>\n </div>\n </ng-container>\n </ng-template>\n</div>\n", styles: [":host{display:flex;flex:0 1 300px}.data-filter-search-has-icon{width:100%}.data-filter-search-has-icon>input{padding-left:30px}.data-filter-search-has-icon .data-filter-search--icon-wrapper{position:absolute;top:3px;left:10px;bottom:0}.data-filter-search-has-icon .data-filter-search--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "component", type: i4.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
251
+ DataFilterSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: DataFilterSearchComponent, deps: [{ token: THESEAM_DATA_FILTER_CONTAINER }, { token: THESEAM_DATA_FILTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
252
+ DataFilterSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: DataFilterSearchComponent, selector: "seam-data-filter-search", inputs: { properties: "properties", omitProperties: "omitProperties", exact: "exact", caseSensitive: "caseSensitive", placeholder: "placeholder", icon: "icon", iconTpl: "iconTpl", value: "value" }, providers: [DATA_FILTER_SEARCH], ngImport: i0, template: "<div class=\"position-relative\"\n [class.data-filter-search-has-icon]=\"iconTpl || icon\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Search filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl; else searchIconTpl\">\n <div class=\"data-filter-search--icon-wrapper\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </div>\n </ng-container>\n <ng-template #searchIconTpl>\n <ng-container *ngIf=\"icon\">\n <div class=\"data-filter-search--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\"></seam-icon>\n </div>\n </ng-container>\n </ng-template>\n</div>\n", styles: [":host{display:flex;flex:0 1 300px}.data-filter-search-has-icon{width:100%}.data-filter-search-has-icon>input{padding-left:30px}.data-filter-search-has-icon .data-filter-search--icon-wrapper{position:absolute;top:3px;left:10px;bottom:0}.data-filter-search-has-icon .data-filter-search--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "component", type: i4.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
253
253
  __decorate([
254
254
  InputBoolean()
255
255
  ], DataFilterSearchComponent.prototype, "exact", void 0);
256
256
  __decorate([
257
257
  InputBoolean()
258
258
  ], DataFilterSearchComponent.prototype, "caseSensitive", void 0);
259
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DataFilterSearchComponent, decorators: [{
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: DataFilterSearchComponent, decorators: [{
260
260
  type: Component,
261
261
  args: [{ selector: 'seam-data-filter-search', providers: [DATA_FILTER_SEARCH], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"position-relative\"\n [class.data-filter-search-has-icon]=\"iconTpl || icon\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Search filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl; else searchIconTpl\">\n <div class=\"data-filter-search--icon-wrapper\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </div>\n </ng-container>\n <ng-template #searchIconTpl>\n <ng-container *ngIf=\"icon\">\n <div class=\"data-filter-search--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\"></seam-icon>\n </div>\n </ng-container>\n </ng-template>\n</div>\n", styles: [":host{display:flex;flex:0 1 300px}.data-filter-search-has-icon{width:100%}.data-filter-search-has-icon>input{padding-left:30px}.data-filter-search-has-icon .data-filter-search--icon-wrapper{position:absolute;top:3px;left:10px;bottom:0}.data-filter-search-has-icon .data-filter-search--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
262
262
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -343,6 +343,13 @@ function toggleButtonsFilter(data, values, options = DefaultToggleButtonsFilterO
343
343
  }
344
344
  let _uid = 0;
345
345
  class DataFilterToggleButtonsComponent {
346
+ set value(value) {
347
+ const _value = !isNullOrUndefined(value) ? coerceArray(value) : undefined;
348
+ // console.log('_value', _value, this._control.value)
349
+ if (this._control.value !== _value) {
350
+ this._control.setValue(_value);
351
+ }
352
+ }
346
353
  constructor(_filterContainer, _filterOptions) {
347
354
  this._filterContainer = _filterContainer;
348
355
  this._filterOptions = _filterOptions;
@@ -358,13 +365,6 @@ class DataFilterToggleButtonsComponent {
358
365
  this.caseSensitive = this._optDefault('caseSensitive');
359
366
  this.filterStateChanges = this._control.valueChanges.pipe(tap(v => console.log('v', v)), switchMap(() => of(this.filterState())), tap(v => console.log('v2', v)), shareReplay({ bufferSize: 1, refCount: true }));
360
367
  }
361
- set value(value) {
362
- const _value = !isNullOrUndefined(value) ? coerceArray(value) : undefined;
363
- // console.log('_value', _value, this._control.value)
364
- if (this._control.value !== _value) {
365
- this._control.setValue(_value);
366
- }
367
- }
368
368
  ngOnInit() {
369
369
  this._filterContainer.addFilter(this);
370
370
  if (this._filterOptions && hasProperty(this._filterOptions, 'initialValue')) {
@@ -404,9 +404,9 @@ class DataFilterToggleButtonsComponent {
404
404
  };
405
405
  }
406
406
  }
407
- DataFilterToggleButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DataFilterToggleButtonsComponent, deps: [{ token: THESEAM_DATA_FILTER_CONTAINER }, { token: THESEAM_DATA_FILTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
408
- DataFilterToggleButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: DataFilterToggleButtonsComponent, selector: "seam-data-filter-toggle-buttons", inputs: { properties: "properties", omitProperties: "omitProperties", multiple: "multiple", selectionToggleable: "selectionToggleable", buttons: "buttons", exact: "exact", caseSensitive: "caseSensitive", value: "value" }, providers: [DATA_FILTER_TOGGLE_BUTTON], ngImport: i0, template: "<div class=\"btn-group\" role=\"group\" aria-label=\"Progress Filter\"\n *ngIf=\"options as opts\"\n [formControl]=\"_control\"\n seamToggleGroup\n [multiple]=\"opts.multiple\"\n [selectionToggleable]=\"opts.selectionToggleable\">\n <ng-container *ngFor=\"let btn of buttons\">\n <button type=\"button\" class=\"btn btn-sm px-4\"\n [seamToggleGroupOption]=\"btn.value\"\n #opt=\"seamToggleGroupOption\"\n [class.btn-lightgray]=\"!opt.selected\"\n [class.btn-primary]=\"opt.selected\"\n (click)=\"opt.selected=!opt.selected\">\n {{ btn.name || btn.value }}\n </button>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.ToggleGroupDirective, selector: "[seamToggleGroup]", inputs: ["value", "disabled", "multiple", "selectionToggleable"], outputs: ["change"], exportAs: ["seamToggleGroup"] }, { kind: "directive", type: i3$1.ToggleGroupOptionDirective, selector: "[seamToggleGroupOption]", inputs: ["seamToggleGroupOption", "selected"], outputs: ["selectionChange"], exportAs: ["seamToggleGroupOption"] }] });
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: DataFilterToggleButtonsComponent, decorators: [{
407
+ DataFilterToggleButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: DataFilterToggleButtonsComponent, deps: [{ token: THESEAM_DATA_FILTER_CONTAINER }, { token: THESEAM_DATA_FILTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
408
+ DataFilterToggleButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: DataFilterToggleButtonsComponent, selector: "seam-data-filter-toggle-buttons", inputs: { properties: "properties", omitProperties: "omitProperties", multiple: "multiple", selectionToggleable: "selectionToggleable", buttons: "buttons", exact: "exact", caseSensitive: "caseSensitive", value: "value" }, providers: [DATA_FILTER_TOGGLE_BUTTON], ngImport: i0, template: "<div class=\"btn-group\" role=\"group\" aria-label=\"Progress Filter\"\n *ngIf=\"options as opts\"\n [formControl]=\"_control\"\n seamToggleGroup\n [multiple]=\"opts.multiple\"\n [selectionToggleable]=\"opts.selectionToggleable\">\n <ng-container *ngFor=\"let btn of buttons\">\n <button type=\"button\" class=\"btn btn-sm px-4\"\n [seamToggleGroupOption]=\"btn.value\"\n #opt=\"seamToggleGroupOption\"\n [class.btn-lightgray]=\"!opt.selected\"\n [class.btn-primary]=\"opt.selected\"\n (click)=\"opt.selected=!opt.selected\">\n {{ btn.name || btn.value }}\n </button>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.ToggleGroupDirective, selector: "[seamToggleGroup]", inputs: ["value", "disabled", "multiple", "selectionToggleable"], outputs: ["change"], exportAs: ["seamToggleGroup"] }, { kind: "directive", type: i3$1.ToggleGroupOptionDirective, selector: "[seamToggleGroupOption]", inputs: ["seamToggleGroupOption", "selected"], outputs: ["selectionChange"], exportAs: ["seamToggleGroupOption"] }] });
409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: DataFilterToggleButtonsComponent, decorators: [{
410
410
  type: Component,
411
411
  args: [{ selector: 'seam-data-filter-toggle-buttons', providers: [DATA_FILTER_TOGGLE_BUTTON], template: "<div class=\"btn-group\" role=\"group\" aria-label=\"Progress Filter\"\n *ngIf=\"options as opts\"\n [formControl]=\"_control\"\n seamToggleGroup\n [multiple]=\"opts.multiple\"\n [selectionToggleable]=\"opts.selectionToggleable\">\n <ng-container *ngFor=\"let btn of buttons\">\n <button type=\"button\" class=\"btn btn-sm px-4\"\n [seamToggleGroupOption]=\"btn.value\"\n #opt=\"seamToggleGroupOption\"\n [class.btn-lightgray]=\"!opt.selected\"\n [class.btn-primary]=\"opt.selected\"\n (click)=\"opt.selected=!opt.selected\">\n {{ btn.name || btn.value }}\n </button>\n </ng-container>\n</div>\n" }]
412
412
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -447,8 +447,8 @@ const filterDefProviders = [
447
447
  ];
448
448
  class TheSeamDataFiltersModule {
449
449
  }
450
- TheSeamDataFiltersModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataFiltersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
451
- TheSeamDataFiltersModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataFiltersModule, declarations: [DataFilterSearchComponent,
450
+ TheSeamDataFiltersModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataFiltersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
451
+ TheSeamDataFiltersModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataFiltersModule, declarations: [DataFilterSearchComponent,
452
452
  DataFilterTextComponent,
453
453
  DataFilterToggleButtonsComponent], imports: [CommonModule,
454
454
  ReactiveFormsModule,
@@ -458,7 +458,7 @@ TheSeamDataFiltersModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0"
458
458
  TheSeamIconModule], exports: [DataFilterSearchComponent,
459
459
  DataFilterTextComponent,
460
460
  DataFilterToggleButtonsComponent] });
461
- TheSeamDataFiltersModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataFiltersModule, providers: [
461
+ TheSeamDataFiltersModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataFiltersModule, providers: [
462
462
  ...filterDefProviders
463
463
  ], imports: [CommonModule,
464
464
  ReactiveFormsModule,
@@ -466,7 +466,7 @@ TheSeamDataFiltersModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0"
466
466
  FontAwesomeModule,
467
467
  TheSeamToggleGroupModule,
468
468
  TheSeamIconModule] });
469
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TheSeamDataFiltersModule, decorators: [{
469
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamDataFiltersModule, decorators: [{
470
470
  type: NgModule,
471
471
  args: [{
472
472
  declarations: [
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-data-filters.mjs","sources":["../../../projects/ui-common/data-filters/data-filter.ts","../../../projects/ui-common/data-filters/data-filter-def.ts","../../../projects/ui-common/data-filters/data-filter-container.ts","../../../projects/ui-common/data-filters/filters/data-filter-text/data-filter-text.component.ts","../../../projects/ui-common/data-filters/filters/data-filter-text/data-filter-text.component.html","../../../projects/ui-common/data-filters/filters/data-filter-search/data-filter-search.component.ts","../../../projects/ui-common/data-filters/filters/data-filter-search/data-filter-search.component.html","../../../projects/ui-common/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.ts","../../../projects/ui-common/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.html","../../../projects/ui-common/data-filters/data-filters.module.ts","../../../projects/ui-common/data-filters/theseam-ui-common-data-filters.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { map, startWith, switchMap } from 'rxjs/operators'\n\nexport type DataFilterFunction = <T>(data: T[]) => Observable<T[]>\n\n/**\n * State of the filter that would allow an external operation to apply the\n * filtering.\n *\n * This is primarily for server-side filtering.\n */\nexport interface DataFilterState {\n /**\n * DataFilter's name.\n */\n name: string\n\n /**\n * Anything necessary for an external implementation to apply this filter.\n */\n state: { [key: string]: any }\n}\n\n// TODO: Consider adding something, such as a priority or order, to allow the\n// order the filter functions are called in to be declared/influenced\n// externally. This would allow the filters that will most likely filter out\n// many records quickly to be run before the heavy processing filters.\nexport interface DataFilter {\n /**\n * Name used when referencing filter by string.\n */\n name: string\n\n /**\n * Unique value to prevent a filter being used more than once if it ends up\n * being registered more than once.\n */\n uid: string\n\n /**\n *\n */\n filterStateChanges: Observable<DataFilterState>\n\n /**\n * Filters the data based on the conditions of the filter.\n */\n filter<T>(data: T[]): Observable<T[]>\n\n /**\n *\n */\n filterState(): DataFilterState\n}\n\nexport const THESEAM_DATA_FILTER = new InjectionToken<DataFilter>('TheSeamDataFilter')\nexport const THESEAM_DATA_FILTER_OPTIONS = new InjectionToken<{}>('TheSeamDataFilterOptions')\n\nexport function filterOperator<T>(filterFn: DataFilterFunction) {\n return (source$: Observable<T[]>) =>\n source$.pipe(switchMap(filterFn))\n}\n\nexport function composeDataFilters(filters: DataFilter[]) {\n const filterFunctions = filters.map(f => filterOperator(f.filter.bind(f)))\n return (source$: Observable<any>) => {\n let src$ = source$\n for (const f of filterFunctions) {\n src$ = src$.pipe(f)\n }\n return src$\n }\n}\n\nexport function composeDataFilterStates(filters: DataFilter[]): Observable<DataFilterState[]> {\n if (filters.length === 0) {\n return of([])\n }\n\n return combineLatest(filters.map(f => f.filterStateChanges.pipe(\n startWith(undefined),\n map(() => f.filterState())\n )))\n}\n\n\n/** @deprecated Use `DataFilter` instead. */\nexport type IDataFilter = DataFilter\n\n/** @deprecated Use `IDataFilterFunction` instead. */\nexport type IDataFilterFunction = DataFilterFunction\n","import { InjectionToken } from '@angular/core'\n\nimport { IDataFilter } from './data-filter'\n\nexport interface IDataFilterDef<T = any> {\n name: string\n\n /**\n * Component that controls the filter.\n */\n component: IDataFilter\n\n}\n\nexport const THESEAM_DATA_FILTER_DEF = new InjectionToken<IDataFilterDef[]>('TheSeamDataFilter')\n","import { InjectionToken } from '@angular/core'\nimport { IDataFilter } from './data-filter'\n\nexport interface DataFilterContainer {\n filters(): IDataFilter[]\n\n addFilter(dataFilter: IDataFilter): void\n\n removeFilter(dataFilter: IDataFilter): void\n}\n\nexport const THESEAM_DATA_FILTER_CONTAINER = new InjectionToken<DataFilterContainer>(\n 'DataFilterContainer'\n)\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, forwardRef, Inject, Input, OnDestroy, OnInit, Optional, TemplateRef } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { map, shareReplay, startWith, switchMap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DataFilterState, IDataFilter, THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_OPTIONS } from '../../data-filter'\nimport { THESEAM_DATA_FILTER_CONTAINER } from '../../data-filter-container'\nimport type { DataFilterContainer } from '../../data-filter-container'\nimport { ITextFilterOptions } from './text-filter-options'\n\nexport const DATA_FILTER_TEXT: any = {\n provide: THESEAM_DATA_FILTER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DataFilterTextComponent),\n multi: true,\n}\n\nexport const DefaultTextFilterOptions: ITextFilterOptions = {\n properties: undefined,\n omitProperties: undefined,\n exact: false,\n caseSensitive: false,\n}\n\nexport function textDataFilter(data: any[], text: string, options = DefaultTextFilterOptions) {\n if (!data || !text) {\n return data\n }\n\n if (data.length <= 0) {\n return data\n }\n\n let props = options ? options.properties : undefined\n if (!props) {\n props = []\n let keys = Object.keys(data[0])\n if (options && options.omitProperties) {\n keys = keys.filter(key => !(options.omitProperties || []).find(p => p === key))\n }\n for (const key of keys) {\n if (data[0].hasOwnProperty(key)) {\n props.push(key)\n }\n }\n }\n\n const filtered: any[] = []\n\n for (const item of data) {\n for (const p of props) {\n let value1 = `${item[p]}`\n let value2 = text\n\n if (!options.caseSensitive) {\n value1 = value1.toLowerCase()\n value2 = value2.toLowerCase()\n }\n\n if (item[p] && value1.indexOf(value2) !== (options.exact ? 0 : -1)) {\n filtered.push(item)\n break\n }\n }\n }\n\n return filtered\n}\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-data-filter-text',\n templateUrl: './data-filter-text.component.html',\n styleUrls: ['./data-filter-text.component.scss'],\n providers: [ DATA_FILTER_TEXT ]\n})\nexport class DataFilterTextComponent implements OnInit, OnDestroy, IDataFilter {\n static ngAcceptInputType_exact: BooleanInput\n static ngAcceptInputType_caseSensitive: BooleanInput\n\n public readonly name = 'text'\n public readonly uid = `text__${_uid++}`\n\n _control = new UntypedFormControl()\n\n @Input() properties: string[] | undefined | null = this._optDefault('properties')\n @Input() omitProperties: string[] | undefined | null = this._optDefault('omitProperties')\n @Input() @InputBoolean() exact: boolean = this._optDefault('exact')\n @Input() @InputBoolean() caseSensitive: boolean = this._optDefault('caseSensitive')\n\n @Input() placeholder: string | undefined | null\n @Input() iconTpl: TemplateRef<HTMLElement> | undefined | null\n\n @Input()\n set value(value: string | string[]) {\n const _value = !isNullOrUndefined(value) ? `${value}` : ''\n if (this._control.value !== _value) {\n this._control.setValue(_value)\n }\n }\n\n public readonly filterStateChanges: Observable<DataFilterState>\n\n constructor(\n @Inject(THESEAM_DATA_FILTER_CONTAINER) private _filterContainer: DataFilterContainer,\n @Optional() @Inject(THESEAM_DATA_FILTER_OPTIONS) private _filterOptions: ITextFilterOptions | null\n ) {\n this.filterStateChanges = this._control.valueChanges.pipe(\n switchMap(() => of(this.filterState())),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n ngOnInit() { this._filterContainer.addFilter(this) }\n\n ngOnDestroy() { this._filterContainer.removeFilter(this) }\n\n private _optDefault<K extends keyof ITextFilterOptions>(prop: K) {\n if (this._filterOptions && this._filterOptions.hasOwnProperty(prop)) {\n return this._filterOptions[prop]\n }\n return DefaultTextFilterOptions[prop]\n }\n\n get options(): ITextFilterOptions {\n return {\n properties: this.properties ?? undefined,\n omitProperties: this.omitProperties ?? undefined,\n exact: this.exact,\n caseSensitive: this.caseSensitive\n }\n }\n\n public filter<T>(data: T[]): Observable<T[]> {\n return this._control.valueChanges\n .pipe(\n map(v => textDataFilter(data, v, this.options)),\n startWith(textDataFilter(data, this._control.value, this.options)),\n )\n }\n\n public filterState(): DataFilterState {\n return {\n // id:\n name: this.name,\n state: {\n value: this._control.value,\n options: this.options\n }\n }\n }\n\n}\n","<div class=\"position-relative\"\n [class.data-filter-text-has-icon]=\"iconTpl\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Text filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </ng-container>\n</div>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, forwardRef, Inject, Input, OnDestroy, OnInit, Optional, TemplateRef } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { map, shareReplay, startWith, switchMap } from 'rxjs/operators'\n\nimport { faSearch } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport type { SeamIcon } from '@theseam/ui-common/icon'\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DataFilterState, IDataFilter, THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_OPTIONS } from '../../data-filter'\nimport { THESEAM_DATA_FILTER_CONTAINER } from '../../data-filter-container'\nimport type { DataFilterContainer } from '../../data-filter-container'\nimport { textDataFilter } from '../data-filter-text/data-filter-text.component'\n\nimport { ISearchFilterOptions } from './search-filter-options'\n\n\nexport const DATA_FILTER_SEARCH: any = {\n provide: THESEAM_DATA_FILTER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DataFilterSearchComponent),\n multi: true,\n}\n\nexport const DefaultSearchFilterOptions: ISearchFilterOptions = {\n properties: undefined,\n omitProperties: undefined,\n exact: false,\n caseSensitive: false\n}\n\nexport function searchDataFilter(data: any[], values: string, options = DefaultSearchFilterOptions) {\n return textDataFilter(data, values, options)\n}\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-data-filter-search',\n templateUrl: './data-filter-search.component.html',\n styleUrls: ['./data-filter-search.component.scss'],\n providers: [ DATA_FILTER_SEARCH ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataFilterSearchComponent implements OnInit, OnDestroy, IDataFilter {\n static ngAcceptInputType_exact: BooleanInput\n static ngAcceptInputType_caseSensitive: BooleanInput\n\n public readonly name = 'search'\n public readonly uid = `search__${_uid++}`\n\n _control = new UntypedFormControl()\n\n @Input() properties: string[] | undefined | null = this._optDefault('properties')\n @Input() omitProperties: string[] | undefined | null = this._optDefault('omitProperties')\n @Input() @InputBoolean() exact: boolean = this._optDefault('exact')\n @Input() @InputBoolean() caseSensitive: boolean = this._optDefault('caseSensitive')\n\n @Input() placeholder: string | undefined | null = 'Search...'\n @Input() icon: SeamIcon | undefined | null = faSearch\n @Input() iconTpl?: TemplateRef<HTMLElement>\n\n @Input()\n set value(value: string | string[]) {\n const _value = !isNullOrUndefined(value) ? `${value}` : ''\n if (this._control.value !== _value) {\n this._control.setValue(_value)\n }\n }\n\n public readonly filterStateChanges: Observable<DataFilterState>\n\n constructor(\n @Inject(THESEAM_DATA_FILTER_CONTAINER) private _filterContainer: DataFilterContainer,\n @Optional() @Inject(THESEAM_DATA_FILTER_OPTIONS) private _filterOptions: ISearchFilterOptions | null\n ) {\n this.filterStateChanges = this._control.valueChanges.pipe(\n switchMap(() => of(this.filterState())),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n ngOnInit() { this._filterContainer.addFilter(this) }\n\n ngOnDestroy() { this._filterContainer.removeFilter(this) }\n\n private _optDefault<K extends keyof ISearchFilterOptions>(prop: K) {\n if (this._filterOptions && this._filterOptions.hasOwnProperty(prop)) {\n return this._filterOptions[prop]\n }\n return DefaultSearchFilterOptions[prop]\n }\n\n get options(): ISearchFilterOptions {\n return {\n properties: this.properties ?? undefined,\n omitProperties: this.omitProperties ?? undefined,\n exact: this.exact,\n caseSensitive: this.caseSensitive\n }\n }\n\n public filter<T>(data: T[]): Observable<T[]> {\n return this._control.valueChanges\n .pipe(\n map(v => searchDataFilter(data, v, this.options)),\n startWith(searchDataFilter(data, this._control.value, this.options)),\n )\n }\n\n public filterState(): DataFilterState {\n return {\n // id:\n name: this.name,\n state: {\n value: this._control.value,\n options: this.options\n }\n }\n }\n\n}\n","<div class=\"position-relative\"\n [class.data-filter-search-has-icon]=\"iconTpl || icon\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Search filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl; else searchIconTpl\">\n <div class=\"data-filter-search--icon-wrapper\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </div>\n </ng-container>\n <ng-template #searchIconTpl>\n <ng-container *ngIf=\"icon\">\n <div class=\"data-filter-search--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\"></seam-icon>\n </div>\n </ng-container>\n </ng-template>\n</div>\n","import { coerceArray } from '@angular/cdk/coercion'\nimport { Component, forwardRef, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators'\n\nimport { hasProperty, isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DataFilterState, IDataFilter, THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_OPTIONS } from '../../data-filter'\nimport { THESEAM_DATA_FILTER_CONTAINER } from '../../data-filter-container'\nimport type { DataFilterContainer } from '../../data-filter-container'\nimport { textDataFilter } from '../data-filter-text/data-filter-text.component'\nimport { ITextFilterOptions } from '../data-filter-text/text-filter-options'\n\n\nexport const DATA_FILTER_TOGGLE_BUTTON: any = {\n provide: THESEAM_DATA_FILTER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DataFilterToggleButtonsComponent),\n multi: true,\n}\n\nexport interface IToggleButton {\n name: string\n value: string\n comparator?: (value: any, row: any, index: number) => -1 | 0 | 1\n}\n\nexport interface IToggleButtonsFilterOptions extends ITextFilterOptions {\n selectionToggleable: boolean\n multiple: boolean\n buttons: IToggleButton[]\n initialValue?: any\n}\n\nexport const DefaultToggleButtonsFilterOptions: IToggleButtonsFilterOptions = {\n properties: undefined,\n omitProperties: undefined,\n multiple: false,\n selectionToggleable: false,\n buttons: [],\n exact: false,\n caseSensitive: false\n}\n\nexport function toggleButtonsFilter(data: any[], values: string[], options = DefaultToggleButtonsFilterOptions) {\n if (!data || !values) {\n return data\n }\n\n const customComparatorBtns: IToggleButton[] = []\n for (const btn of options.buttons) {\n if (btn.comparator) {\n customComparatorBtns.push(btn)\n }\n }\n\n let _data = data\n for (const val of values) {\n if (val === '') { continue }\n\n let cmp\n for (const btn of customComparatorBtns) {\n if (btn.value === val) {\n cmp = btn.comparator\n }\n }\n if (cmp) {\n const filtered: any[] = []\n for (let i = 0; i < _data.length; i++) {\n if (cmp(val, _data[i], i) !== -1) {\n filtered.push(_data[i])\n }\n }\n _data = filtered\n } else {\n _data = textDataFilter(_data, val, {\n properties: options.properties,\n omitProperties: options.omitProperties,\n exact: options.exact,\n caseSensitive: options.caseSensitive\n })\n }\n }\n return _data\n}\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-data-filter-toggle-buttons',\n templateUrl: './data-filter-toggle-buttons.component.html',\n styleUrls: ['./data-filter-toggle-buttons.component.scss'],\n providers: [ DATA_FILTER_TOGGLE_BUTTON ]\n})\nexport class DataFilterToggleButtonsComponent implements OnInit, OnDestroy, IDataFilter {\n\n public readonly name = 'toggle-buttons'\n public readonly uid = `toggle-buttons__${_uid++}`\n\n _control = new UntypedFormControl()\n\n @Input() properties = this._optDefault('properties')\n @Input() omitProperties = this._optDefault('omitProperties')\n @Input() multiple = this._optDefault('multiple')\n @Input() selectionToggleable = this._optDefault('selectionToggleable')\n @Input() buttons = this._optDefault('buttons')\n @Input() exact = this._optDefault('exact')\n @Input() caseSensitive = this._optDefault('caseSensitive')\n\n @Input()\n set value(value: string | string[]) {\n const _value = !isNullOrUndefined(value) ? coerceArray(value) : undefined\n // console.log('_value', _value, this._control.value)\n if (this._control.value !== _value) {\n this._control.setValue(_value)\n }\n }\n\n public readonly filterStateChanges: Observable<DataFilterState>\n\n constructor(\n @Inject(THESEAM_DATA_FILTER_CONTAINER) private _filterContainer: DataFilterContainer,\n @Optional() @Inject(THESEAM_DATA_FILTER_OPTIONS) private _filterOptions: IToggleButtonsFilterOptions | null\n ) {\n this.filterStateChanges = this._control.valueChanges.pipe(\n tap(v => console.log('v', v)),\n switchMap(() => of(this.filterState())),\n tap(v => console.log('v2', v)),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n ngOnInit() {\n this._filterContainer.addFilter(this)\n if (this._filterOptions && hasProperty(this._filterOptions, 'initialValue')) {\n this.value = this._optDefault('initialValue')\n }\n }\n\n ngOnDestroy() { this._filterContainer.removeFilter(this) }\n\n private _optDefault<K extends keyof IToggleButtonsFilterOptions>(prop: K) {\n if (this._filterOptions && this._filterOptions.hasOwnProperty(prop)) {\n return this._filterOptions[prop]\n }\n return DefaultToggleButtonsFilterOptions[prop]\n }\n\n get options(): IToggleButtonsFilterOptions {\n return {\n properties: this.properties,\n omitProperties: this.omitProperties,\n multiple: this.multiple,\n selectionToggleable: this.selectionToggleable,\n buttons: this.buttons,\n exact: this.exact,\n caseSensitive: this.caseSensitive\n }\n }\n\n public filter<T>(data: T[]): Observable<T[]> {\n return this._control.valueChanges\n .pipe(\n map(v => toggleButtonsFilter(data, coerceArray(v), this.options)),\n startWith(toggleButtonsFilter(data, coerceArray(this._control.value), this.options)),\n )\n }\n\n public filterState(): DataFilterState {\n return {\n // id:\n name: this.name,\n state: {\n value: this._control.value,\n options: this.options\n }\n }\n }\n\n}\n","<div class=\"btn-group\" role=\"group\" aria-label=\"Progress Filter\"\n *ngIf=\"options as opts\"\n [formControl]=\"_control\"\n seamToggleGroup\n [multiple]=\"opts.multiple\"\n [selectionToggleable]=\"opts.selectionToggleable\">\n <ng-container *ngFor=\"let btn of buttons\">\n <button type=\"button\" class=\"btn btn-sm px-4\"\n [seamToggleGroupOption]=\"btn.value\"\n #opt=\"seamToggleGroupOption\"\n [class.btn-lightgray]=\"!opt.selected\"\n [class.btn-primary]=\"opt.selected\"\n (click)=\"opt.selected=!opt.selected\">\n {{ btn.name || btn.value }}\n </button>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\n\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamToggleGroupModule } from '@theseam/ui-common/toggle-group'\n\nimport { THESEAM_DATA_FILTER_DEF } from './data-filter-def'\nimport { DataFilterSearchComponent } from './filters/data-filter-search/data-filter-search.component'\nimport { DataFilterTextComponent } from './filters/data-filter-text/data-filter-text.component'\nimport { DataFilterToggleButtonsComponent } from './filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component'\n\nconst filterComponents = [\n DataFilterSearchComponent,\n DataFilterTextComponent,\n DataFilterToggleButtonsComponent\n]\n\nconst filterDefProviders = [\n { provide: THESEAM_DATA_FILTER_DEF, useValue: { name: 'search', component: DataFilterSearchComponent }, multi: true },\n { provide: THESEAM_DATA_FILTER_DEF, useValue: { name: 'text', component: DataFilterTextComponent }, multi: true },\n { provide: THESEAM_DATA_FILTER_DEF, useValue: { name: 'toggle-buttons', component: DataFilterToggleButtonsComponent }, multi: true },\n]\n\n@NgModule({\n declarations: [\n ...filterComponents\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TheSeamFormFieldModule,\n FontAwesomeModule,\n TheSeamToggleGroupModule,\n TheSeamIconModule\n ],\n providers: [\n ...filterDefProviders\n ],\n exports: [\n ...filterComponents\n ]\n})\nexport class TheSeamDataFiltersModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_uid","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;MAwDa,mBAAmB,GAAG,IAAI,cAAc,CAAa,mBAAmB,EAAC;MACzE,2BAA2B,GAAG,IAAI,cAAc,CAAK,0BAA0B,EAAC;AAEvF,SAAU,cAAc,CAAI,QAA4B,EAAA;AAC5D,IAAA,OAAO,CAAC,OAAwB,KAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;AACrC,CAAC;AAEK,SAAU,kBAAkB,CAAC,OAAqB,EAAA;IACtD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,OAAO,CAAC,OAAwB,KAAI;QAClC,IAAI,IAAI,GAAG,OAAO,CAAA;AAClB,QAAA,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE;AAC/B,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACpB,SAAA;AACD,QAAA,OAAO,IAAI,CAAA;AACb,KAAC,CAAA;AACH,CAAC;AAEK,SAAU,uBAAuB,CAAC,OAAqB,EAAA;AAC3D,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACd,KAAA;AAED,IAAA,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAC7D,SAAS,CAAC,SAAS,CAAC,EACpB,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAC3B,CAAC,CAAC,CAAA;AACL;;MCtEa,uBAAuB,GAAG,IAAI,cAAc,CAAmB,mBAAmB;;MCHlF,6BAA6B,GAAG,IAAI,cAAc,CAC7D,qBAAqB;;ACEV,MAAA,gBAAgB,GAAQ;AACnC,IAAA,OAAO,EAAE,mBAAmB;;AAE5B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,IAAA,KAAK,EAAE,IAAI;EACZ;AAEY,MAAA,wBAAwB,GAAuB;AAC1D,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,cAAc,EAAE,SAAS;AACzB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,aAAa,EAAE,KAAK;EACrB;AAEK,SAAU,cAAc,CAAC,IAAW,EAAE,IAAY,EAAE,OAAO,GAAG,wBAAwB,EAAA;AAC1F,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AAClB,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAED,IAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;AACpB,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;AAED,IAAA,IAAI,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;IACpD,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,EAAE,CAAA;QACV,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE;AACrC,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;AAChF,SAAA;AACD,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC/B,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAChB,aAAA;AACF,SAAA;AACF,KAAA;IAED,MAAM,QAAQ,GAAU,EAAE,CAAA;AAE1B,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,QAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,MAAM,GAAG,CAAG,EAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YACzB,IAAI,MAAM,GAAG,IAAI,CAAA;AAEjB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC1B,gBAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;AAC7B,gBAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;AAC9B,aAAA;YAED,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAClE,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACnB,MAAK;AACN,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,IAAIA,MAAI,GAAG,CAAC,CAAA;MAQC,uBAAuB,CAAA;IA2BlC,WACiD,CAAA,gBAAqC,EAC3B,cAAyC,EAAA;QADnD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QAC3B,IAAc,CAAA,cAAA,GAAd,cAAc,CAA2B;QAzBpF,IAAI,CAAA,IAAA,GAAG,MAAM,CAAA;AACb,QAAA,IAAA,CAAA,GAAG,GAAG,CAAA,MAAA,EAASA,MAAI,EAAE,EAAE,CAAA;AAEvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAA;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAgC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AACxE,QAAA,IAAA,CAAA,cAAc,GAAgC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;AAChE,QAAA,IAAA,CAAA,KAAK,GAAY,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAY,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;AAmBjF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CACvD,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EACvC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAA;KACF;IAlBD,IACI,KAAK,CAAC,KAAwB,EAAA;AAChC,QAAA,MAAM,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAA,CAAE,GAAG,EAAE,CAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC/B,SAAA;KACF;IAcD,QAAQ,GAAA,EAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,EAAE;IAEpD,WAAW,GAAA,EAAK,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,EAAE;AAElD,IAAA,WAAW,CAAqC,IAAO,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACnE,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AACjC,SAAA;AACD,QAAA,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAA;KACtC;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;AACxC,YAAA,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS;YAChD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAA;KACF;AAEM,IAAA,MAAM,CAAI,IAAS,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9B,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAC/C,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CACnE,CAAA;KACJ;IAEM,WAAW,GAAA;QAChB,OAAO;;YAEL,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA;SACF,CAAA;KACF;;oHA1EU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA4BxB,6BAA6B,EAAA,EAAA,EAAA,KAAA,EACjB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA7BtC,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAFvB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,CAAE,gBAAgB,CAAE,0BC/EjC,6aASA,EAAA,MAAA,EAAA,CAAA,wPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wLAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;ADmF2B,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAA2C,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAC1C,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAA2D,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;2FAZxE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACE,uBAAuB,EAAA,SAAA,EAGtB,CAAE,gBAAgB,CAAE,EAAA,QAAA,EAAA,6aAAA,EAAA,MAAA,EAAA,CAAA,wPAAA,CAAA,EAAA,CAAA;;0BA8B5B,MAAM;2BAAC,6BAA6B,CAAA;;0BACpC,QAAQ;;0BAAI,MAAM;2BAAC,2BAA2B,CAAA;4CApBxC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACmB,KAAK,EAAA,CAAA;sBAA7B,KAAK;gBACmB,aAAa,EAAA,CAAA;sBAArC,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGF,KAAK,EAAA,CAAA;sBADR,KAAK;;;AE9EK,MAAA,kBAAkB,GAAQ;AACrC,IAAA,OAAO,EAAE,mBAAmB;;AAE5B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,IAAA,KAAK,EAAE,IAAI;EACZ;AAEY,MAAA,0BAA0B,GAAyB;AAC9D,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,cAAc,EAAE,SAAS;AACzB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,aAAa,EAAE,KAAK;EACrB;AAEK,SAAU,gBAAgB,CAAC,IAAW,EAAE,MAAc,EAAE,OAAO,GAAG,0BAA0B,EAAA;IAChG,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAC9C,CAAC;AAED,IAAIA,MAAI,GAAG,CAAC,CAAA;MASC,yBAAyB,CAAA;IA4BpC,WACiD,CAAA,gBAAqC,EAC3B,cAA2C,EAAA;QADrD,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QAC3B,IAAc,CAAA,cAAA,GAAd,cAAc,CAA6B;QA1BtF,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAA;AACf,QAAA,IAAA,CAAA,GAAG,GAAG,CAAA,QAAA,EAAWA,MAAI,EAAE,EAAE,CAAA;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAA;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAgC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AACxE,QAAA,IAAA,CAAA,cAAc,GAAgC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;AAChE,QAAA,IAAA,CAAA,KAAK,GAAY,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAY,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;QAE1E,IAAW,CAAA,WAAA,GAA8B,WAAW,CAAA;QACpD,IAAI,CAAA,IAAA,GAAgC,QAAQ,CAAA;AAiBnD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CACvD,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EACvC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAA;KACF;IAlBD,IACI,KAAK,CAAC,KAAwB,EAAA;AAChC,QAAA,MAAM,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAA,CAAE,GAAG,EAAE,CAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC/B,SAAA;KACF;IAcD,QAAQ,GAAA,EAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,EAAE;IAEpD,WAAW,GAAA,EAAK,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,EAAE;AAElD,IAAA,WAAW,CAAuC,IAAO,EAAA;AAC/D,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACnE,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AACjC,SAAA;AACD,QAAA,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAA;KACxC;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;AACxC,YAAA,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS;YAChD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAA;KACF;AAEM,IAAA,MAAM,CAAI,IAAS,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9B,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EACjD,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CACrE,CAAA;KACJ;IAEM,WAAW,GAAA;QAChB,OAAO;;YAEL,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA;SACF,CAAA;KACF;;sHA3EU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA6B1B,6BAA6B,EAAA,EAAA,EAAA,KAAA,EACjB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9BtC,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAHzB,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,CAAE,kBAAkB,CAAE,0BC5CnC,uwBAkBA,EAAA,MAAA,EAAA,CAAA,8VAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wLAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;ADwC2B,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAA2C,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAC1C,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAA2D,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;2FAZxE,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,aAGxB,CAAE,kBAAkB,CAAE,EAChB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uwBAAA,EAAA,MAAA,EAAA,CAAA,8VAAA,CAAA,EAAA,CAAA;;0BA+B5C,MAAM;2BAAC,6BAA6B,CAAA;;0BACpC,QAAQ;;0BAAI,MAAM;2BAAC,2BAA2B,CAAA;4CArBxC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACmB,KAAK,EAAA,CAAA;sBAA7B,KAAK;gBACmB,aAAa,EAAA,CAAA;sBAArC,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAGF,KAAK,EAAA,CAAA;sBADR,KAAK;;;AElDK,MAAA,yBAAyB,GAAQ;AAC5C,IAAA,OAAO,EAAE,mBAAmB;;AAE5B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gCAAgC,CAAC;AAC/D,IAAA,KAAK,EAAE,IAAI;EACZ;AAeY,MAAA,iCAAiC,GAAgC;AAC5E,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,cAAc,EAAE,SAAS;AACzB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,aAAa,EAAE,KAAK;EACrB;AAEK,SAAU,mBAAmB,CAAC,IAAW,EAAE,MAAgB,EAAE,OAAO,GAAG,iCAAiC,EAAA;AAC5G,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpB,QAAA,OAAO,IAAI,CAAA;AACZ,KAAA;IAED,MAAM,oBAAoB,GAAoB,EAAE,CAAA;AAChD,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;QACjC,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,YAAA,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC/B,SAAA;AACF,KAAA;IAED,IAAI,KAAK,GAAG,IAAI,CAAA;AAChB,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,IAAI,GAAG,KAAK,EAAE,EAAE;YAAE,SAAQ;AAAE,SAAA;AAE5B,QAAA,IAAI,GAAG,CAAA;AACP,QAAA,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE;AACtC,YAAA,IAAI,GAAG,CAAC,KAAK,KAAK,GAAG,EAAE;AACrB,gBAAA,GAAG,GAAG,GAAG,CAAC,UAAU,CAAA;AACrB,aAAA;AACF,SAAA;AACD,QAAA,IAAI,GAAG,EAAE;YACP,MAAM,QAAQ,GAAU,EAAE,CAAA;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAA,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;oBAChC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,iBAAA;AACF,aAAA;YACD,KAAK,GAAG,QAAQ,CAAA;AACjB,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,aAAa,EAAE,OAAO,CAAC,aAAa;AACrC,aAAA,CAAC,CAAA;AACH,SAAA;AACF,KAAA;AACD,IAAA,OAAO,KAAK,CAAA;AACd,CAAC;AAED,IAAI,IAAI,GAAG,CAAC,CAAA;MAQC,gCAAgC,CAAA;IA0B3C,WACiD,CAAA,gBAAqC,EAC3B,cAAkD,EAAA;QAD5D,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QAC3B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAoC;QA1B7F,IAAI,CAAA,IAAA,GAAG,gBAAgB,CAAA;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,CAAA,gBAAA,EAAmB,IAAI,EAAE,EAAE,CAAA;AAEjD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAA;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AAC3C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;AACnD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AACvC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAA;AAC7D,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;AACrC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;AAiBxD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAC7B,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EACvC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAC9B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAA;KACF;IArBD,IACI,KAAK,CAAC,KAAwB,EAAA;AAChC,QAAA,MAAM,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,CAAA;;AAEzE,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC/B,SAAA;KACF;IAgBD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AACrC,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;YAC3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;AAC9C,SAAA;KACF;IAED,WAAW,GAAA,EAAK,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,EAAE;AAElD,IAAA,WAAW,CAA8C,IAAO,EAAA;AACtE,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACnE,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;AACjC,SAAA;AACD,QAAA,OAAO,iCAAiC,CAAC,IAAI,CAAC,CAAA;KAC/C;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAA;KACF;AAEM,IAAA,MAAM,CAAI,IAAS,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC9B,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EACjE,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CACrF,CAAA;KACJ;IAEM,WAAW,GAAA;QAChB,OAAO;;YAEL,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA;SACF,CAAA;KACF;;6HAnFU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA2BjC,6BAA6B,EAAA,EAAA,EAAA,KAAA,EACjB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5BtC,gCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAFhC,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,CAAE,yBAAyB,CAAE,0BC7F1C,goBAiBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD8Ea,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;+BACE,iCAAiC,EAAA,SAAA,EAGhC,CAAE,yBAAyB,CAAE,EAAA,QAAA,EAAA,goBAAA,EAAA,CAAA;;0BA6BrC,MAAM;2BAAC,6BAA6B,CAAA;;0BACpC,QAAQ;;0BAAI,MAAM;2BAAC,2BAA2B,CAAA;4CArBxC,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGF,KAAK,EAAA,CAAA;sBADR,KAAK;;;AE/FR,MAAM,gBAAgB,GAAG;IACvB,yBAAyB;IACzB,uBAAuB;IACvB,gCAAgC;CACjC,CAAA;AAED,MAAM,kBAAkB,GAAG;AACzB,IAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACrH,IAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACjH,IAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,gCAAgC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;CACrI,CAAA;MAqBY,wBAAwB,CAAA;;qHAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBA9BnC,yBAAyB;QACzB,uBAAuB;AACvB,QAAA,gCAAgC,aAc1B,YAAY;QACZ,mBAAmB;QACnB,sBAAsB;QACtB,iBAAiB;QACjB,wBAAwB;AACxB,QAAA,iBAAiB,aArBvB,yBAAyB;QACzB,uBAAuB;QACvB,gCAAgC,CAAA,EAAA,CAAA,CAAA;AA4BrB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAPtB,SAAA,EAAA;AACP,QAAA,GAAG,kBAAkB;AACxB,KAAA,EAAA,OAAA,EAAA,CATG,YAAY;QACZ,mBAAmB;QACnB,sBAAsB;QACtB,iBAAiB;QACjB,wBAAwB;QACxB,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FASZ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAnBpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;AACV,wBAAA,GAAG,gBAAgB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,sBAAsB;wBACtB,iBAAiB;wBACjB,wBAAwB;wBACxB,iBAAiB;AACpB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA,GAAG,kBAAkB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG,gBAAgB;AACtB,qBAAA;AACJ,iBAAA,CAAA;;;AC7CD;;AAEG;;;;"}
1
+ {"version":3,"file":"theseam-ui-common-data-filters.mjs","sources":["../../../projects/ui-common/data-filters/data-filter.ts","../../../projects/ui-common/data-filters/data-filter-def.ts","../../../projects/ui-common/data-filters/data-filter-container.ts","../../../projects/ui-common/data-filters/filters/data-filter-text/data-filter-text.component.ts","../../../projects/ui-common/data-filters/filters/data-filter-text/data-filter-text.component.html","../../../projects/ui-common/data-filters/filters/data-filter-search/data-filter-search.component.ts","../../../projects/ui-common/data-filters/filters/data-filter-search/data-filter-search.component.html","../../../projects/ui-common/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.ts","../../../projects/ui-common/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.html","../../../projects/ui-common/data-filters/data-filters.module.ts","../../../projects/ui-common/data-filters/theseam-ui-common-data-filters.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { map, startWith, switchMap } from 'rxjs/operators'\n\nexport type DataFilterFunction = <T>(data: T[]) => Observable<T[]>\n\n/**\n * State of the filter that would allow an external operation to apply the\n * filtering.\n *\n * This is primarily for server-side filtering.\n */\nexport interface DataFilterState {\n /**\n * DataFilter's name.\n */\n name: string\n\n /**\n * Anything necessary for an external implementation to apply this filter.\n */\n state: { [key: string]: any }\n}\n\n// TODO: Consider adding something, such as a priority or order, to allow the\n// order the filter functions are called in to be declared/influenced\n// externally. This would allow the filters that will most likely filter out\n// many records quickly to be run before the heavy processing filters.\nexport interface DataFilter {\n /**\n * Name used when referencing filter by string.\n */\n name: string\n\n /**\n * Unique value to prevent a filter being used more than once if it ends up\n * being registered more than once.\n */\n uid: string\n\n /**\n *\n */\n filterStateChanges: Observable<DataFilterState>\n\n /**\n * Filters the data based on the conditions of the filter.\n */\n filter<T>(data: T[]): Observable<T[]>\n\n /**\n *\n */\n filterState(): DataFilterState\n}\n\nexport const THESEAM_DATA_FILTER = new InjectionToken<DataFilter>('TheSeamDataFilter')\nexport const THESEAM_DATA_FILTER_OPTIONS = new InjectionToken<{}>('TheSeamDataFilterOptions')\n\nexport function filterOperator<T>(filterFn: DataFilterFunction) {\n return (source$: Observable<T[]>) =>\n source$.pipe(switchMap(filterFn))\n}\n\nexport function composeDataFilters(filters: DataFilter[]) {\n const filterFunctions = filters.map(f => filterOperator(f.filter.bind(f)))\n return (source$: Observable<any>) => {\n let src$ = source$\n for (const f of filterFunctions) {\n src$ = src$.pipe(f)\n }\n return src$\n }\n}\n\nexport function composeDataFilterStates(filters: DataFilter[]): Observable<DataFilterState[]> {\n if (filters.length === 0) {\n return of([])\n }\n\n return combineLatest(filters.map(f => f.filterStateChanges.pipe(\n startWith(undefined),\n map(() => f.filterState())\n )))\n}\n\n\n/** @deprecated Use `DataFilter` instead. */\nexport type IDataFilter = DataFilter\n\n/** @deprecated Use `IDataFilterFunction` instead. */\nexport type IDataFilterFunction = DataFilterFunction\n","import { InjectionToken } from '@angular/core'\n\nimport { IDataFilter } from './data-filter'\n\nexport interface IDataFilterDef<T = any> {\n name: string\n\n /**\n * Component that controls the filter.\n */\n component: IDataFilter\n\n}\n\nexport const THESEAM_DATA_FILTER_DEF = new InjectionToken<IDataFilterDef[]>('TheSeamDataFilter')\n","import { InjectionToken } from '@angular/core'\nimport { IDataFilter } from './data-filter'\n\nexport interface DataFilterContainer {\n filters(): IDataFilter[]\n\n addFilter(dataFilter: IDataFilter): void\n\n removeFilter(dataFilter: IDataFilter): void\n}\n\nexport const THESEAM_DATA_FILTER_CONTAINER = new InjectionToken<DataFilterContainer>(\n 'DataFilterContainer'\n)\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { Component, forwardRef, Inject, Input, OnDestroy, OnInit, Optional, TemplateRef } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { map, shareReplay, startWith, switchMap } from 'rxjs/operators'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DataFilterState, IDataFilter, THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_OPTIONS } from '../../data-filter'\nimport { THESEAM_DATA_FILTER_CONTAINER } from '../../data-filter-container'\nimport type { DataFilterContainer } from '../../data-filter-container'\nimport { ITextFilterOptions } from './text-filter-options'\n\nexport const DATA_FILTER_TEXT: any = {\n provide: THESEAM_DATA_FILTER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DataFilterTextComponent),\n multi: true,\n}\n\nexport const DefaultTextFilterOptions: ITextFilterOptions = {\n properties: undefined,\n omitProperties: undefined,\n exact: false,\n caseSensitive: false,\n}\n\nexport function textDataFilter(data: any[], text: string, options = DefaultTextFilterOptions) {\n if (!data || !text) {\n return data\n }\n\n if (data.length <= 0) {\n return data\n }\n\n let props = options ? options.properties : undefined\n if (!props) {\n props = []\n let keys = Object.keys(data[0])\n if (options && options.omitProperties) {\n keys = keys.filter(key => !(options.omitProperties || []).find(p => p === key))\n }\n for (const key of keys) {\n if (data[0].hasOwnProperty(key)) {\n props.push(key)\n }\n }\n }\n\n const filtered: any[] = []\n\n for (const item of data) {\n for (const p of props) {\n let value1 = `${item[p]}`\n let value2 = text\n\n if (!options.caseSensitive) {\n value1 = value1.toLowerCase()\n value2 = value2.toLowerCase()\n }\n\n if (item[p] && value1.indexOf(value2) !== (options.exact ? 0 : -1)) {\n filtered.push(item)\n break\n }\n }\n }\n\n return filtered\n}\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-data-filter-text',\n templateUrl: './data-filter-text.component.html',\n styleUrls: ['./data-filter-text.component.scss'],\n providers: [ DATA_FILTER_TEXT ]\n})\nexport class DataFilterTextComponent implements OnInit, OnDestroy, IDataFilter {\n static ngAcceptInputType_exact: BooleanInput\n static ngAcceptInputType_caseSensitive: BooleanInput\n\n public readonly name = 'text'\n public readonly uid = `text__${_uid++}`\n\n _control = new UntypedFormControl()\n\n @Input() properties: string[] | undefined | null = this._optDefault('properties')\n @Input() omitProperties: string[] | undefined | null = this._optDefault('omitProperties')\n @Input() @InputBoolean() exact: boolean = this._optDefault('exact')\n @Input() @InputBoolean() caseSensitive: boolean = this._optDefault('caseSensitive')\n\n @Input() placeholder: string | undefined | null\n @Input() iconTpl: TemplateRef<HTMLElement> | undefined | null\n\n @Input()\n set value(value: string | string[]) {\n const _value = !isNullOrUndefined(value) ? `${value}` : ''\n if (this._control.value !== _value) {\n this._control.setValue(_value)\n }\n }\n\n public readonly filterStateChanges: Observable<DataFilterState>\n\n constructor(\n @Inject(THESEAM_DATA_FILTER_CONTAINER) private _filterContainer: DataFilterContainer,\n @Optional() @Inject(THESEAM_DATA_FILTER_OPTIONS) private _filterOptions: ITextFilterOptions | null\n ) {\n this.filterStateChanges = this._control.valueChanges.pipe(\n switchMap(() => of(this.filterState())),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n ngOnInit() { this._filterContainer.addFilter(this) }\n\n ngOnDestroy() { this._filterContainer.removeFilter(this) }\n\n private _optDefault<K extends keyof ITextFilterOptions>(prop: K) {\n if (this._filterOptions && this._filterOptions.hasOwnProperty(prop)) {\n return this._filterOptions[prop]\n }\n return DefaultTextFilterOptions[prop]\n }\n\n get options(): ITextFilterOptions {\n return {\n properties: this.properties ?? undefined,\n omitProperties: this.omitProperties ?? undefined,\n exact: this.exact,\n caseSensitive: this.caseSensitive\n }\n }\n\n public filter<T>(data: T[]): Observable<T[]> {\n return this._control.valueChanges\n .pipe(\n map(v => textDataFilter(data, v, this.options)),\n startWith(textDataFilter(data, this._control.value, this.options)),\n )\n }\n\n public filterState(): DataFilterState {\n return {\n // id:\n name: this.name,\n state: {\n value: this._control.value,\n options: this.options\n }\n }\n }\n\n}\n","<div class=\"position-relative\"\n [class.data-filter-text-has-icon]=\"iconTpl\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Text filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </ng-container>\n</div>\n","import { BooleanInput } from '@angular/cdk/coercion'\nimport { ChangeDetectionStrategy, Component, forwardRef, Inject, Input, OnDestroy, OnInit, Optional, TemplateRef } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { map, shareReplay, startWith, switchMap } from 'rxjs/operators'\n\nimport { faSearch } from '@fortawesome/free-solid-svg-icons'\n\nimport { InputBoolean } from '@theseam/ui-common/core'\nimport type { SeamIcon } from '@theseam/ui-common/icon'\nimport { isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DataFilterState, IDataFilter, THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_OPTIONS } from '../../data-filter'\nimport { THESEAM_DATA_FILTER_CONTAINER } from '../../data-filter-container'\nimport type { DataFilterContainer } from '../../data-filter-container'\nimport { textDataFilter } from '../data-filter-text/data-filter-text.component'\n\nimport { ISearchFilterOptions } from './search-filter-options'\n\n\nexport const DATA_FILTER_SEARCH: any = {\n provide: THESEAM_DATA_FILTER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DataFilterSearchComponent),\n multi: true,\n}\n\nexport const DefaultSearchFilterOptions: ISearchFilterOptions = {\n properties: undefined,\n omitProperties: undefined,\n exact: false,\n caseSensitive: false\n}\n\nexport function searchDataFilter(data: any[], values: string, options = DefaultSearchFilterOptions) {\n return textDataFilter(data, values, options)\n}\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-data-filter-search',\n templateUrl: './data-filter-search.component.html',\n styleUrls: ['./data-filter-search.component.scss'],\n providers: [ DATA_FILTER_SEARCH ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataFilterSearchComponent implements OnInit, OnDestroy, IDataFilter {\n static ngAcceptInputType_exact: BooleanInput\n static ngAcceptInputType_caseSensitive: BooleanInput\n\n public readonly name = 'search'\n public readonly uid = `search__${_uid++}`\n\n _control = new UntypedFormControl()\n\n @Input() properties: string[] | undefined | null = this._optDefault('properties')\n @Input() omitProperties: string[] | undefined | null = this._optDefault('omitProperties')\n @Input() @InputBoolean() exact: boolean = this._optDefault('exact')\n @Input() @InputBoolean() caseSensitive: boolean = this._optDefault('caseSensitive')\n\n @Input() placeholder: string | undefined | null = 'Search...'\n @Input() icon: SeamIcon | undefined | null = faSearch\n @Input() iconTpl?: TemplateRef<HTMLElement>\n\n @Input()\n set value(value: string | string[]) {\n const _value = !isNullOrUndefined(value) ? `${value}` : ''\n if (this._control.value !== _value) {\n this._control.setValue(_value)\n }\n }\n\n public readonly filterStateChanges: Observable<DataFilterState>\n\n constructor(\n @Inject(THESEAM_DATA_FILTER_CONTAINER) private _filterContainer: DataFilterContainer,\n @Optional() @Inject(THESEAM_DATA_FILTER_OPTIONS) private _filterOptions: ISearchFilterOptions | null\n ) {\n this.filterStateChanges = this._control.valueChanges.pipe(\n switchMap(() => of(this.filterState())),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n ngOnInit() { this._filterContainer.addFilter(this) }\n\n ngOnDestroy() { this._filterContainer.removeFilter(this) }\n\n private _optDefault<K extends keyof ISearchFilterOptions>(prop: K) {\n if (this._filterOptions && this._filterOptions.hasOwnProperty(prop)) {\n return this._filterOptions[prop]\n }\n return DefaultSearchFilterOptions[prop]\n }\n\n get options(): ISearchFilterOptions {\n return {\n properties: this.properties ?? undefined,\n omitProperties: this.omitProperties ?? undefined,\n exact: this.exact,\n caseSensitive: this.caseSensitive\n }\n }\n\n public filter<T>(data: T[]): Observable<T[]> {\n return this._control.valueChanges\n .pipe(\n map(v => searchDataFilter(data, v, this.options)),\n startWith(searchDataFilter(data, this._control.value, this.options)),\n )\n }\n\n public filterState(): DataFilterState {\n return {\n // id:\n name: this.name,\n state: {\n value: this._control.value,\n options: this.options\n }\n }\n }\n\n}\n","<div class=\"position-relative\"\n [class.data-filter-search-has-icon]=\"iconTpl || icon\"\n (click)=\"inp.focus()\">\n <label [attr.for]=\"inp.id\" class=\"sr-only\">Search filter</label>\n <input seamInput #inp=\"seamInput\" seamInputSize=\"sm\" [formControl]=\"_control\" [placeholder]=\"placeholder\">\n <ng-container *ngIf=\"iconTpl; else searchIconTpl\">\n <div class=\"data-filter-search--icon-wrapper\">\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\n </div>\n </ng-container>\n <ng-template #searchIconTpl>\n <ng-container *ngIf=\"icon\">\n <div class=\"data-filter-search--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\"></seam-icon>\n </div>\n </ng-container>\n </ng-template>\n</div>\n","import { coerceArray } from '@angular/cdk/coercion'\nimport { Component, forwardRef, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { UntypedFormControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators'\n\nimport { hasProperty, isNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { DataFilterState, IDataFilter, THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_OPTIONS } from '../../data-filter'\nimport { THESEAM_DATA_FILTER_CONTAINER } from '../../data-filter-container'\nimport type { DataFilterContainer } from '../../data-filter-container'\nimport { textDataFilter } from '../data-filter-text/data-filter-text.component'\nimport { ITextFilterOptions } from '../data-filter-text/text-filter-options'\n\n\nexport const DATA_FILTER_TOGGLE_BUTTON: any = {\n provide: THESEAM_DATA_FILTER,\n // tslint:disable-next-line:no-use-before-declare\n useExisting: forwardRef(() => DataFilterToggleButtonsComponent),\n multi: true,\n}\n\nexport interface IToggleButton {\n name: string\n value: string\n comparator?: (value: any, row: any, index: number) => -1 | 0 | 1\n}\n\nexport interface IToggleButtonsFilterOptions extends ITextFilterOptions {\n selectionToggleable: boolean\n multiple: boolean\n buttons: IToggleButton[]\n initialValue?: any\n}\n\nexport const DefaultToggleButtonsFilterOptions: IToggleButtonsFilterOptions = {\n properties: undefined,\n omitProperties: undefined,\n multiple: false,\n selectionToggleable: false,\n buttons: [],\n exact: false,\n caseSensitive: false\n}\n\nexport function toggleButtonsFilter(data: any[], values: string[], options = DefaultToggleButtonsFilterOptions) {\n if (!data || !values) {\n return data\n }\n\n const customComparatorBtns: IToggleButton[] = []\n for (const btn of options.buttons) {\n if (btn.comparator) {\n customComparatorBtns.push(btn)\n }\n }\n\n let _data = data\n for (const val of values) {\n if (val === '') { continue }\n\n let cmp\n for (const btn of customComparatorBtns) {\n if (btn.value === val) {\n cmp = btn.comparator\n }\n }\n if (cmp) {\n const filtered: any[] = []\n for (let i = 0; i < _data.length; i++) {\n if (cmp(val, _data[i], i) !== -1) {\n filtered.push(_data[i])\n }\n }\n _data = filtered\n } else {\n _data = textDataFilter(_data, val, {\n properties: options.properties,\n omitProperties: options.omitProperties,\n exact: options.exact,\n caseSensitive: options.caseSensitive\n })\n }\n }\n return _data\n}\n\nlet _uid = 0\n\n@Component({\n selector: 'seam-data-filter-toggle-buttons',\n templateUrl: './data-filter-toggle-buttons.component.html',\n styleUrls: ['./data-filter-toggle-buttons.component.scss'],\n providers: [ DATA_FILTER_TOGGLE_BUTTON ]\n})\nexport class DataFilterToggleButtonsComponent implements OnInit, OnDestroy, IDataFilter {\n\n public readonly name = 'toggle-buttons'\n public readonly uid = `toggle-buttons__${_uid++}`\n\n _control = new UntypedFormControl()\n\n @Input() properties = this._optDefault('properties')\n @Input() omitProperties = this._optDefault('omitProperties')\n @Input() multiple = this._optDefault('multiple')\n @Input() selectionToggleable = this._optDefault('selectionToggleable')\n @Input() buttons = this._optDefault('buttons')\n @Input() exact = this._optDefault('exact')\n @Input() caseSensitive = this._optDefault('caseSensitive')\n\n @Input()\n set value(value: string | string[]) {\n const _value = !isNullOrUndefined(value) ? coerceArray(value) : undefined\n // console.log('_value', _value, this._control.value)\n if (this._control.value !== _value) {\n this._control.setValue(_value)\n }\n }\n\n public readonly filterStateChanges: Observable<DataFilterState>\n\n constructor(\n @Inject(THESEAM_DATA_FILTER_CONTAINER) private _filterContainer: DataFilterContainer,\n @Optional() @Inject(THESEAM_DATA_FILTER_OPTIONS) private _filterOptions: IToggleButtonsFilterOptions | null\n ) {\n this.filterStateChanges = this._control.valueChanges.pipe(\n tap(v => console.log('v', v)),\n switchMap(() => of(this.filterState())),\n tap(v => console.log('v2', v)),\n shareReplay({ bufferSize: 1, refCount: true })\n )\n }\n\n ngOnInit() {\n this._filterContainer.addFilter(this)\n if (this._filterOptions && hasProperty(this._filterOptions, 'initialValue')) {\n this.value = this._optDefault('initialValue')\n }\n }\n\n ngOnDestroy() { this._filterContainer.removeFilter(this) }\n\n private _optDefault<K extends keyof IToggleButtonsFilterOptions>(prop: K) {\n if (this._filterOptions && this._filterOptions.hasOwnProperty(prop)) {\n return this._filterOptions[prop]\n }\n return DefaultToggleButtonsFilterOptions[prop]\n }\n\n get options(): IToggleButtonsFilterOptions {\n return {\n properties: this.properties,\n omitProperties: this.omitProperties,\n multiple: this.multiple,\n selectionToggleable: this.selectionToggleable,\n buttons: this.buttons,\n exact: this.exact,\n caseSensitive: this.caseSensitive\n }\n }\n\n public filter<T>(data: T[]): Observable<T[]> {\n return this._control.valueChanges\n .pipe(\n map(v => toggleButtonsFilter(data, coerceArray(v), this.options)),\n startWith(toggleButtonsFilter(data, coerceArray(this._control.value), this.options)),\n )\n }\n\n public filterState(): DataFilterState {\n return {\n // id:\n name: this.name,\n state: {\n value: this._control.value,\n options: this.options\n }\n }\n }\n\n}\n","<div class=\"btn-group\" role=\"group\" aria-label=\"Progress Filter\"\n *ngIf=\"options as opts\"\n [formControl]=\"_control\"\n seamToggleGroup\n [multiple]=\"opts.multiple\"\n [selectionToggleable]=\"opts.selectionToggleable\">\n <ng-container *ngFor=\"let btn of buttons\">\n <button type=\"button\" class=\"btn btn-sm px-4\"\n [seamToggleGroupOption]=\"btn.value\"\n #opt=\"seamToggleGroupOption\"\n [class.btn-lightgray]=\"!opt.selected\"\n [class.btn-primary]=\"opt.selected\"\n (click)=\"opt.selected=!opt.selected\">\n {{ btn.name || btn.value }}\n </button>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { ReactiveFormsModule } from '@angular/forms'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\n\nimport { TheSeamFormFieldModule } from '@theseam/ui-common/form-field'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamToggleGroupModule } from '@theseam/ui-common/toggle-group'\n\nimport { THESEAM_DATA_FILTER_DEF } from './data-filter-def'\nimport { DataFilterSearchComponent } from './filters/data-filter-search/data-filter-search.component'\nimport { DataFilterTextComponent } from './filters/data-filter-text/data-filter-text.component'\nimport { DataFilterToggleButtonsComponent } from './filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component'\n\nconst filterComponents = [\n DataFilterSearchComponent,\n DataFilterTextComponent,\n DataFilterToggleButtonsComponent\n]\n\nconst filterDefProviders = [\n { provide: THESEAM_DATA_FILTER_DEF, useValue: { name: 'search', component: DataFilterSearchComponent }, multi: true },\n { provide: THESEAM_DATA_FILTER_DEF, useValue: { name: 'text', component: DataFilterTextComponent }, multi: true },\n { provide: THESEAM_DATA_FILTER_DEF, useValue: { name: 'toggle-buttons', component: DataFilterToggleButtonsComponent }, multi: true },\n]\n\n@NgModule({\n declarations: [\n ...filterComponents\n ],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n TheSeamFormFieldModule,\n FontAwesomeModule,\n TheSeamToggleGroupModule,\n TheSeamIconModule\n ],\n providers: [\n ...filterDefProviders\n ],\n exports: [\n ...filterComponents\n ]\n})\nexport class TheSeamDataFiltersModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_uid","i3"],"mappings":"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"}