@theseam/ui-common 0.4.29 → 0.4.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +61 -9
  3. package/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.d.ts +25 -0
  4. package/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.d.ts +18 -0
  5. package/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.d.ts +16 -0
  6. package/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.d.ts +15 -0
  7. package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +2 -2
  8. package/datatable/datatable.module.d.ts +29 -20
  9. package/datatable/directives/datatable-column-filter-tpl.directive.d.ts +8 -0
  10. package/datatable/directives/datatable-column-filter.directive.d.ts +10 -0
  11. package/datatable/models/action-item-column-position.d.ts +13 -0
  12. package/datatable/models/columns-data-filter.d.ts +57 -0
  13. package/datatable/models/columns-data-filters/models.d.ts +65 -0
  14. package/datatable/models/columns-data-filters/search-date.columns-data-filter.d.ts +23 -0
  15. package/datatable/models/columns-data-filters/search-numeric.columns-data-filter.d.ts +22 -0
  16. package/datatable/models/columns-data-filters/search-text.columns-data-filter.d.ts +21 -0
  17. package/datatable/models/columns-data-filters/utils.d.ts +15 -0
  18. package/datatable/models/datatable-config.d.ts +97 -0
  19. package/datatable/models/table-column.d.ts +22 -1
  20. package/datatable/public-api.d.ts +14 -0
  21. package/datatable/services/columns-filters.service.d.ts +29 -0
  22. package/datatable/services/columns-manager.service.d.ts +7 -0
  23. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  24. package/esm2020/asset-reader/asset-reader-helper.service.mjs +4 -4
  25. package/esm2020/asset-reader/asset-reader.module.mjs +5 -5
  26. package/esm2020/asset-reader/encrypted-asset-link.directive.mjs +4 -4
  27. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +5 -5
  28. package/esm2020/breadcrumbs/breadcrumbs.module.mjs +5 -5
  29. package/esm2020/breadcrumbs/breadcrumbs.service.mjs +4 -4
  30. package/esm2020/buttons/badge-button/badge-button.component.mjs +7 -7
  31. package/esm2020/buttons/button/button.component.mjs +10 -10
  32. package/esm2020/buttons/buttons.module.mjs +5 -5
  33. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +4 -4
  34. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +4 -4
  35. package/esm2020/card/card-action/card-action.component.mjs +4 -4
  36. package/esm2020/card/card-body/card-body.component.mjs +4 -4
  37. package/esm2020/card/card-footer/card-footer.component.mjs +4 -4
  38. package/esm2020/card/card-header/card-header.component.mjs +4 -4
  39. package/esm2020/card/card.component.mjs +4 -4
  40. package/esm2020/card/card.module.mjs +5 -5
  41. package/esm2020/carousel/carousel-slide.directive.mjs +4 -4
  42. package/esm2020/carousel/carousel.component.mjs +4 -4
  43. package/esm2020/carousel/carousel.module.mjs +5 -5
  44. package/esm2020/checkbox/checkbox.component.mjs +4 -4
  45. package/esm2020/checkbox/checkbox.module.mjs +5 -5
  46. package/esm2020/confirm-dialog/confirm-click.directive.mjs +4 -4
  47. package/esm2020/confirm-dialog/confirm-dialog.component.mjs +4 -4
  48. package/esm2020/confirm-dialog/confirm-dialog.module.mjs +5 -5
  49. package/esm2020/confirm-dialog/confirm-dialog.service.mjs +4 -4
  50. package/esm2020/data-exporter/data-exporter.module.mjs +5 -5
  51. package/esm2020/data-exporter/exporters/csv-exporter.mjs +4 -4
  52. package/esm2020/data-exporter/exporters/xlsx-exporter.mjs +4 -4
  53. package/esm2020/data-filters/data-filters.module.mjs +5 -5
  54. package/esm2020/data-filters/filters/data-filter-search/data-filter-search.component.mjs +4 -4
  55. package/esm2020/data-filters/filters/data-filter-text/data-filter-text.component.mjs +4 -4
  56. package/esm2020/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.mjs +4 -4
  57. package/esm2020/datatable/datatable/datatable.component.mjs +241 -32
  58. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +5 -5
  59. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +4 -4
  60. package/esm2020/datatable/datatable-column/datatable-column.component.mjs +4 -4
  61. package/esm2020/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.mjs +55 -0
  62. package/esm2020/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.mjs +54 -0
  63. package/esm2020/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.mjs +48 -0
  64. package/esm2020/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.mjs +44 -0
  65. package/esm2020/datatable/datatable-column-preferences/datatable-column-preferences.component.mjs +4 -4
  66. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +4 -4
  67. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +4 -4
  68. package/esm2020/datatable/datatable-footer/datatable-footer-tpl.directive.mjs +4 -4
  69. package/esm2020/datatable/datatable-footer/datatable-footer.directive.mjs +4 -4
  70. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +4 -4
  71. package/esm2020/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.mjs +4 -4
  72. package/esm2020/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.mjs +4 -4
  73. package/esm2020/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.mjs +4 -4
  74. package/esm2020/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.mjs +4 -4
  75. package/esm2020/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.mjs +4 -4
  76. package/esm2020/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.mjs +4 -4
  77. package/esm2020/datatable/datatable-row-detail/datatable-row-detail.directive.mjs +4 -4
  78. package/esm2020/datatable/datatable.module.mjs +53 -11
  79. package/esm2020/datatable/directives/datatable-action-menu-item.directive.mjs +4 -4
  80. package/esm2020/datatable/directives/datatable-action-menu-toggle.directive.mjs +4 -4
  81. package/esm2020/datatable/directives/datatable-cell-tpl.directive.mjs +4 -4
  82. package/esm2020/datatable/directives/datatable-column-filter-tpl.directive.mjs +16 -0
  83. package/esm2020/datatable/directives/datatable-column-filter.directive.mjs +26 -0
  84. package/esm2020/datatable/directives/datatable-filter.directive.mjs +4 -4
  85. package/esm2020/datatable/directives/datatable-row-action-item.directive.mjs +4 -4
  86. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  87. package/esm2020/datatable/models/columns-data-filter.mjs +10 -0
  88. package/esm2020/datatable/models/columns-data-filters/models.mjs +74 -0
  89. package/esm2020/datatable/models/columns-data-filters/search-date.columns-data-filter.mjs +113 -0
  90. package/esm2020/datatable/models/columns-data-filters/search-numeric.columns-data-filter.mjs +104 -0
  91. package/esm2020/datatable/models/columns-data-filters/search-text.columns-data-filter.mjs +86 -0
  92. package/esm2020/datatable/models/columns-data-filters/utils.mjs +28 -0
  93. package/esm2020/datatable/models/datatable-config.mjs +3 -0
  94. package/esm2020/datatable/models/table-column.mjs +1 -1
  95. package/esm2020/datatable/public-api.mjs +15 -1
  96. package/esm2020/datatable/services/columns-alterations-manager.service.mjs +4 -4
  97. package/esm2020/datatable/services/columns-filters.service.mjs +109 -0
  98. package/esm2020/datatable/services/columns-manager.service.mjs +30 -5
  99. package/esm2020/datatable/services/datatable-column-changes.service.mjs +4 -4
  100. package/esm2020/datatable/services/datatable-preferences.service.mjs +4 -4
  101. package/esm2020/datatable/services/datatable-scrollbar-helper.service.mjs +4 -4
  102. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  103. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +4 -4
  104. package/esm2020/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.mjs +4 -4
  105. package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.mjs +4 -4
  106. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +5 -5
  107. package/esm2020/datatable-dynamic/datatable-dynamic.module.mjs +5 -5
  108. package/esm2020/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.mjs +4 -4
  109. package/esm2020/datatable-dynamic/dynamic-datatable-def.service.mjs +4 -4
  110. package/esm2020/datatable-dynamic/dynamic-datatable-row-actions.service.mjs +4 -4
  111. package/esm2020/dynamic/action/api/dynamic-action-api.service.mjs +4 -4
  112. package/esm2020/dynamic/action/dynamic-action-helper.service.mjs +4 -4
  113. package/esm2020/dynamic/action/link/dynamic-action-link.service.mjs +4 -4
  114. package/esm2020/dynamic/action/modal/dynamic-action-modal.service.mjs +4 -4
  115. package/esm2020/dynamic/dynamic-value-helper.service.mjs +4 -4
  116. package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.mjs +4 -4
  117. package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-evaluator.mjs +4 -4
  118. package/esm2020/dynamic-component-loader/dynamic-component-loader.module.mjs +5 -5
  119. package/esm2020/dynamic-component-loader/dynamic-component-loader.service.mjs +4 -4
  120. package/esm2020/footer-bar/footer-bar/footer-bar.component.mjs +4 -4
  121. package/esm2020/footer-bar/footer-bar.module.mjs +5 -5
  122. package/esm2020/form-field/form-field-error.directive.mjs +4 -4
  123. package/esm2020/form-field/form-field-help-text.directive.mjs +4 -4
  124. package/esm2020/form-field/form-field-label-tpl.directive.mjs +4 -4
  125. package/esm2020/form-field/form-field-required-indicator.component.mjs +4 -4
  126. package/esm2020/form-field/form-field.component.mjs +4 -4
  127. package/esm2020/form-field/form-field.module.mjs +5 -5
  128. package/esm2020/form-field/input.directive.mjs +4 -4
  129. package/esm2020/form-field-error/form-field-error/form-field-error.component.mjs +4 -4
  130. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.mjs +4 -4
  131. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item.directive.mjs +4 -4
  132. package/esm2020/form-field-error/form-field-error-list/form-field-error-list.component.mjs +4 -4
  133. package/esm2020/form-field-error/form-field-error.module.mjs +5 -5
  134. package/esm2020/framework/base-layout/base-layout.component.mjs +16 -6
  135. package/esm2020/framework/base-layout/base-layout.module.mjs +10 -5
  136. package/esm2020/framework/base-layout/directives/base-layout-content-footer.directive.mjs +4 -4
  137. package/esm2020/framework/base-layout/directives/base-layout-content-header.directive.mjs +4 -4
  138. package/esm2020/framework/base-layout/directives/base-layout-content.directive.mjs +4 -4
  139. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +22 -6
  140. package/esm2020/framework/base-layout/directives/base-layout-side-bar-footer.directive.mjs +4 -4
  141. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  142. package/esm2020/framework/base-layout/directives/base-layout-side-bar.directive.mjs +4 -4
  143. package/esm2020/framework/base-layout/directives/base-layout-top-bar.directive.mjs +4 -4
  144. package/esm2020/framework/base-layout/index.mjs +2 -1
  145. package/esm2020/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.mjs +4 -4
  146. package/esm2020/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.mjs +4 -4
  147. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.mjs +4 -4
  148. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.mjs +4 -4
  149. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +4 -4
  150. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +4 -4
  151. package/esm2020/framework/dashboard/dashboard.component.mjs +4 -4
  152. package/esm2020/framework/dashboard/dashboard.module.mjs +5 -5
  153. package/esm2020/framework/dynamic-router/dynamic-router.module.mjs +5 -5
  154. package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.mjs +4 -4
  155. package/esm2020/framework/dynamic-router/resolvers/hierarchy-level.resolver.mjs +4 -4
  156. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  157. package/esm2020/framework/nav/index.mjs +6 -0
  158. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  159. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  160. package/esm2020/framework/nav/nav.models.mjs +2 -0
  161. package/esm2020/framework/nav/nav.module.mjs +67 -0
  162. package/esm2020/framework/nav/nav.service.mjs +204 -0
  163. package/esm2020/framework/public-api.mjs +2 -1
  164. package/esm2020/framework/schema-form/schema-form-framework.component.mjs +4 -4
  165. package/esm2020/framework/schema-form/schema-form-framework.mjs +4 -4
  166. package/esm2020/framework/schema-form/schema-form.module.mjs +5 -5
  167. package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +4 -4
  168. package/esm2020/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.mjs +4 -4
  169. package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +4 -4
  170. package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +4 -4
  171. package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +4 -4
  172. package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +4 -4
  173. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +4 -4
  174. package/esm2020/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.mjs +4 -4
  175. package/esm2020/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.mjs +4 -4
  176. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +29 -68
  177. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +14 -7
  178. package/esm2020/framework/side-nav/side-nav.component.mjs +117 -39
  179. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  180. package/esm2020/framework/side-nav/side-nav.module.mjs +11 -41
  181. package/esm2020/framework/side-nav/side-nav.service.mjs +4 -4
  182. package/esm2020/framework/top-bar/index.mjs +3 -1
  183. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  184. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +12 -6
  185. package/esm2020/framework/top-bar/top-bar-menu-btn-detail.directive.mjs +4 -4
  186. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +8 -6
  187. package/esm2020/framework/top-bar/top-bar-menu.directive.mjs +4 -4
  188. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  189. package/esm2020/framework/top-bar/top-bar-title/top-bar-title.component.mjs +4 -4
  190. package/esm2020/framework/top-bar/top-bar.component.mjs +57 -13
  191. package/esm2020/framework/top-bar/top-bar.module.mjs +19 -9
  192. package/esm2020/google-maps/google-maps/google-maps.component.mjs +4 -4
  193. package/esm2020/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.mjs +4 -4
  194. package/esm2020/google-maps/google-maps-api-loader/noop-google-maps-api-loader.mjs +4 -4
  195. package/esm2020/google-maps/google-maps-controls.service.mjs +4 -4
  196. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +5 -5
  197. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.mjs +4 -4
  198. package/esm2020/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.mjs +4 -4
  199. package/esm2020/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.mjs +4 -4
  200. package/esm2020/google-maps/google-maps.module.mjs +5 -5
  201. package/esm2020/google-maps/google-maps.service.mjs +4 -4
  202. package/esm2020/google-maps/map-control.component.mjs +4 -4
  203. package/esm2020/google-maps/map-file-drop/map-file-drop.component.mjs +4 -4
  204. package/esm2020/google-maps/map-value-manager.service.mjs +4 -4
  205. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +4 -4
  206. package/esm2020/graphql/datatable/index.mjs +4 -1
  207. package/esm2020/graphql/datatable/map-filter-states.mjs +1 -1
  208. package/esm2020/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.mjs +139 -0
  209. package/esm2020/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.mjs +75 -0
  210. package/esm2020/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.mjs +44 -0
  211. package/esm2020/icon/icon/icon.component.mjs +4 -4
  212. package/esm2020/icon/icon-btn/icon-btn.component.mjs +4 -4
  213. package/esm2020/icon/icon-notification/icon-notification.component.mjs +4 -4
  214. package/esm2020/icon/icon.module.mjs +5 -5
  215. package/esm2020/layout/layout.module.mjs +5 -5
  216. package/esm2020/layout/layout.service.mjs +15 -5
  217. package/esm2020/loading/loading/loading.component.mjs +4 -4
  218. package/esm2020/loading/loading-overlay.service.mjs +4 -4
  219. package/esm2020/loading/loading.module.mjs +5 -5
  220. package/esm2020/menu/menu-divider.component.mjs +4 -4
  221. package/esm2020/menu/menu-footer/menu-footer.component.mjs +4 -4
  222. package/esm2020/menu/menu-footer-action/menu-footer-action.component.mjs +4 -4
  223. package/esm2020/menu/menu-header/menu-header.component.mjs +4 -4
  224. package/esm2020/menu/menu-item.component.mjs +4 -4
  225. package/esm2020/menu/menu-toggle.directive.mjs +9 -4
  226. package/esm2020/menu/menu.component.mjs +4 -4
  227. package/esm2020/menu/menu.module.mjs +5 -5
  228. package/esm2020/modal/directives/modal-close.directive.mjs +4 -4
  229. package/esm2020/modal/directives/modal-footer-tpl.directive.mjs +4 -4
  230. package/esm2020/modal/directives/modal-header-icon-tpl.directive.mjs +4 -4
  231. package/esm2020/modal/directives/modal-header-title-tpl.directive.mjs +4 -4
  232. package/esm2020/modal/directives/modal-title.directive.mjs +4 -4
  233. package/esm2020/modal/directives/modal.directive.mjs +4 -4
  234. package/esm2020/modal/modal/modal.component.mjs +4 -4
  235. package/esm2020/modal/modal-body/modal-body.component.mjs +4 -4
  236. package/esm2020/modal/modal-container/modal-container.component.mjs +4 -4
  237. package/esm2020/modal/modal-footer/modal-footer.component.mjs +4 -4
  238. package/esm2020/modal/modal-header/modal-header.component.mjs +4 -4
  239. package/esm2020/modal/modal.module.mjs +5 -5
  240. package/esm2020/modal/modal.service.mjs +4 -4
  241. package/esm2020/modal/route-modal/route-modal.component.mjs +4 -4
  242. package/esm2020/navigation-reload/navigation-reload.service.mjs +4 -4
  243. package/esm2020/popover/popover/popover.component.mjs +9 -5
  244. package/esm2020/popover/popover.directive.mjs +8 -4
  245. package/esm2020/popover/popover.module.mjs +5 -5
  246. package/esm2020/progress/progress-circle/progress-circle.component.mjs +4 -4
  247. package/esm2020/progress/progress.module.mjs +5 -5
  248. package/esm2020/rich-text/rich-text/rich-text.component.mjs +4 -4
  249. package/esm2020/rich-text/rich-text.module.mjs +5 -5
  250. package/esm2020/scrollbar/overlay-scrollbar.directive.mjs +4 -4
  251. package/esm2020/scrollbar/overlay-scrollbars.service.mjs +4 -4
  252. package/esm2020/scrollbar/scrollbar.module.mjs +5 -5
  253. package/esm2020/services/asset-loader.service.mjs +4 -4
  254. package/esm2020/services/font-loader.service.mjs +4 -4
  255. package/esm2020/services/preferences/preferences-manager.service.mjs +4 -4
  256. package/esm2020/services/router-helpers.service.mjs +4 -4
  257. package/esm2020/shared/components/password-input-reveal/password-input-reveal.component.mjs +4 -4
  258. package/esm2020/shared/directives/auto-focus.directive.mjs +4 -4
  259. package/esm2020/shared/directives/click-outside.directive.mjs +4 -4
  260. package/esm2020/shared/directives/disable-control.directive.mjs +4 -4
  261. package/esm2020/shared/directives/elem-resized.directive.mjs +4 -4
  262. package/esm2020/shared/directives/hover-class-toggle.directive.mjs +4 -4
  263. package/esm2020/shared/directives/hover-class.directive.mjs +4 -4
  264. package/esm2020/shared/directives/ng-select-extra.directive.mjs +4 -4
  265. package/esm2020/shared/directives/ngx-quill-extra.directive.mjs +4 -4
  266. package/esm2020/shared/pipes/mask-chars.pipe.mjs +4 -4
  267. package/esm2020/shared/pipes/truncate.pipe.mjs +4 -4
  268. package/esm2020/shared/shared.module.mjs +5 -5
  269. package/esm2020/storage/local-storage.service.mjs +4 -4
  270. package/esm2020/story-helpers/initial-route.service.mjs +4 -4
  271. package/esm2020/story-helpers/story-empty-with-route.component.mjs +4 -4
  272. package/esm2020/story-helpers/story-empty.component.mjs +4 -4
  273. package/esm2020/story-helpers/story-helper-components.module.mjs +5 -5
  274. package/esm2020/story-helpers/story-initial-route.mjs +5 -5
  275. package/esm2020/story-helpers/story-modal-container.component.mjs +4 -4
  276. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +4 -4
  277. package/esm2020/story-helpers/story-toastr.service.mjs +4 -4
  278. package/esm2020/tabbed/directives/tabbed-tab-content.directive.mjs +4 -4
  279. package/esm2020/tabbed/directives/tabbed-tab.directive.mjs +4 -4
  280. package/esm2020/tabbed/tabbed-content/tabbed-content.component.mjs +4 -4
  281. package/esm2020/tabbed/tabbed-item/tabbed-item.component.mjs +4 -4
  282. package/esm2020/tabbed/tabbed.component.mjs +4 -4
  283. package/esm2020/tabbed/tabbed.module.mjs +5 -5
  284. package/esm2020/tabbed/tabbed.service.mjs +4 -4
  285. package/esm2020/table/public-api.mjs +4 -1
  286. package/esm2020/table/table/table.component.mjs +92 -7
  287. package/esm2020/table/table-cell-tpl.directive.mjs +17 -0
  288. package/esm2020/table/table-column-header-tpl.directive.mjs +17 -0
  289. package/esm2020/table/table-column.component.mjs +68 -0
  290. package/esm2020/table/table.module.mjs +25 -9
  291. package/esm2020/table-cell-type/services/table-cell-types-helpers.service.mjs +4 -4
  292. package/esm2020/table-cell-type/table-cell-type-selector.component.mjs +4 -4
  293. package/esm2020/table-cell-type/table-cell-type.module.mjs +5 -5
  294. package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.mjs +4 -4
  295. package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.component.mjs +4 -4
  296. package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.mjs +4 -4
  297. package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.mjs +4 -4
  298. package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.mjs +4 -4
  299. package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.mjs +4 -4
  300. package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.mjs +4 -4
  301. package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.mjs +4 -4
  302. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +7 -5
  303. package/esm2020/table-cell-types/table-cell-types.module.mjs +5 -5
  304. package/esm2020/tel-input/phone-number.pipe.mjs +4 -4
  305. package/esm2020/tel-input/tel-input/tel-input.component.mjs +4 -4
  306. package/esm2020/tel-input/tel-input.directive.mjs +4 -4
  307. package/esm2020/tel-input/tel-input.module.mjs +5 -5
  308. package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +4 -4
  309. package/esm2020/tiled-select/components/tiled-select-tile/tiled-select-tile.component.mjs +4 -4
  310. package/esm2020/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.mjs +4 -4
  311. package/esm2020/tiled-select/directives/tiled-select-tile-icon-tpl.directive.mjs +4 -4
  312. package/esm2020/tiled-select/directives/tiled-select-tile-label-tpl.directive.mjs +4 -4
  313. package/esm2020/tiled-select/directives/tiled-select-tile-overlay.directive.mjs +4 -4
  314. package/esm2020/tiled-select/tiled-select.module.mjs +5 -5
  315. package/esm2020/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.mjs +4 -4
  316. package/esm2020/toggle-edit/toggle-edit-display-tpl.directive.mjs +4 -4
  317. package/esm2020/toggle-edit/toggle-edit-keyboard-listener.service.mjs +4 -4
  318. package/esm2020/toggle-edit/toggle-edit.component.mjs +4 -4
  319. package/esm2020/toggle-edit/toggle-edit.module.mjs +5 -5
  320. package/esm2020/toggle-group/toggle-group-option.directive.mjs +4 -4
  321. package/esm2020/toggle-group/toggle-group.directive.mjs +4 -4
  322. package/esm2020/toggle-group/toggle-group.module.mjs +5 -5
  323. package/esm2020/unsaved-changes-dialog/unsaved-changes-can-deactivate.mjs +4 -4
  324. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +4 -4
  325. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.guard.mjs +4 -4
  326. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +5 -5
  327. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  328. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  329. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  330. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  331. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  332. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  333. package/esm2020/vertical-list-filter/vertical-list-filter.component.mjs +4 -4
  334. package/esm2020/viewers/html-template-viewer/html-template-viewer.component.mjs +4 -4
  335. package/esm2020/viewers/html-template-viewer/html-template-viewer.module.mjs +5 -5
  336. package/esm2020/viewers/pdf-viewer/pdf-page/pdf-page.component.mjs +4 -4
  337. package/esm2020/viewers/pdf-viewer/pdf-renderer.service.mjs +4 -4
  338. package/esm2020/viewers/pdf-viewer/pdf-viewer.component.mjs +4 -4
  339. package/esm2020/viewers/pdf-viewer/pdf-viewer.module.mjs +5 -5
  340. package/esm2020/widget/directives/widget-drag-handle.directive.mjs +4 -4
  341. package/esm2020/widget/directives/widget-icon-tpl.directive.mjs +4 -4
  342. package/esm2020/widget/directives/widget-title-tpl.directive.mjs +4 -4
  343. package/esm2020/widget/preferences/widget-preferences.service.mjs +4 -4
  344. package/esm2020/widget/widget/widget.component.mjs +4 -4
  345. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.component.mjs +4 -4
  346. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.module.mjs +5 -5
  347. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.component.mjs +4 -4
  348. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.module.mjs +5 -5
  349. package/esm2020/widget/widget-content-components/widget-description/widget-description.component.mjs +4 -4
  350. package/esm2020/widget/widget-content-components/widget-description/widget-description.module.mjs +5 -5
  351. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.component.mjs +4 -4
  352. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.module.mjs +5 -5
  353. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.component.mjs +4 -4
  354. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.module.mjs +5 -5
  355. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.component.mjs +4 -4
  356. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.module.mjs +5 -5
  357. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.component.mjs +4 -4
  358. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.module.mjs +5 -5
  359. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.mjs +4 -4
  360. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.mjs +16 -16
  361. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.component.mjs +4 -4
  362. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.module.mjs +5 -5
  363. package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +4 -4
  364. package/esm2020/widget/widget-content-components/widget-table/widget-table.module.mjs +5 -5
  365. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.mjs +4 -4
  366. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.mjs +4 -4
  367. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.mjs +4 -4
  368. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.mjs +4 -4
  369. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.component.mjs +7 -7
  370. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.module.mjs +5 -5
  371. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.component.mjs +4 -4
  372. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.module.mjs +5 -5
  373. package/esm2020/widget/widget-footer/widget-footer.component.mjs +4 -4
  374. package/esm2020/widget/widget-registry.service.mjs +4 -4
  375. package/esm2020/widget/widget.module.mjs +5 -5
  376. package/fesm2015/theseam-ui-common-asset-reader.mjs +10 -10
  377. package/fesm2015/theseam-ui-common-asset-reader.mjs.map +1 -1
  378. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +11 -11
  379. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  380. package/fesm2015/theseam-ui-common-buttons.mjs +25 -25
  381. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  382. package/fesm2015/theseam-ui-common-card.mjs +19 -19
  383. package/fesm2015/theseam-ui-common-card.mjs.map +1 -1
  384. package/fesm2015/theseam-ui-common-carousel.mjs +10 -10
  385. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  386. package/fesm2015/theseam-ui-common-checkbox.mjs +7 -7
  387. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  388. package/fesm2015/theseam-ui-common-confirm-dialog.mjs +13 -13
  389. package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  390. package/fesm2015/theseam-ui-common-data-exporter.mjs +10 -10
  391. package/fesm2015/theseam-ui-common-data-exporter.mjs.map +1 -1
  392. package/fesm2015/theseam-ui-common-data-filters.mjs +13 -13
  393. package/fesm2015/theseam-ui-common-data-filters.mjs.map +1 -1
  394. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +26 -26
  395. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  396. package/fesm2015/theseam-ui-common-datatable.mjs +1112 -139
  397. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  398. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  399. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  400. package/fesm2015/theseam-ui-common-dynamic.mjs +21 -21
  401. package/fesm2015/theseam-ui-common-dynamic.mjs.map +1 -1
  402. package/fesm2015/theseam-ui-common-footer-bar.mjs +7 -7
  403. package/fesm2015/theseam-ui-common-footer-bar.mjs.map +1 -1
  404. package/fesm2015/theseam-ui-common-form-field-error.mjs +16 -16
  405. package/fesm2015/theseam-ui-common-form-field-error.mjs.map +1 -1
  406. package/fesm2015/theseam-ui-common-form-field.mjs +22 -22
  407. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  408. package/fesm2015/theseam-ui-common-framework.mjs +1026 -277
  409. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  410. package/fesm2015/theseam-ui-common-google-maps.mjs +41 -41
  411. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  412. package/fesm2015/theseam-ui-common-graphql.mjs +257 -4
  413. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  414. package/fesm2015/theseam-ui-common-icon.mjs +13 -13
  415. package/fesm2015/theseam-ui-common-icon.mjs.map +1 -1
  416. package/fesm2015/theseam-ui-common-layout.mjs +18 -9
  417. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  418. package/fesm2015/theseam-ui-common-loading.mjs +10 -10
  419. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  420. package/fesm2015/theseam-ui-common-menu.mjs +30 -25
  421. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  422. package/fesm2015/theseam-ui-common-modal.mjs +43 -43
  423. package/fesm2015/theseam-ui-common-modal.mjs.map +1 -1
  424. package/fesm2015/theseam-ui-common-navigation-reload.mjs +3 -3
  425. package/fesm2015/theseam-ui-common-navigation-reload.mjs.map +1 -1
  426. package/fesm2015/theseam-ui-common-popover.mjs +19 -11
  427. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  428. package/fesm2015/theseam-ui-common-progress.mjs +7 -7
  429. package/fesm2015/theseam-ui-common-progress.mjs.map +1 -1
  430. package/fesm2015/theseam-ui-common-rich-text.mjs +7 -7
  431. package/fesm2015/theseam-ui-common-rich-text.mjs.map +1 -1
  432. package/fesm2015/theseam-ui-common-scrollbar.mjs +10 -10
  433. package/fesm2015/theseam-ui-common-scrollbar.mjs.map +1 -1
  434. package/fesm2015/theseam-ui-common-services.mjs +12 -12
  435. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  436. package/fesm2015/theseam-ui-common-shared.mjs +37 -37
  437. package/fesm2015/theseam-ui-common-shared.mjs.map +1 -1
  438. package/fesm2015/theseam-ui-common-storage.mjs +3 -3
  439. package/fesm2015/theseam-ui-common-storage.mjs.map +1 -1
  440. package/fesm2015/theseam-ui-common-story-helpers.mjs +26 -26
  441. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  442. package/fesm2015/theseam-ui-common-tabbed.mjs +22 -22
  443. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  444. package/fesm2015/theseam-ui-common-table-cell-type.mjs +10 -10
  445. package/fesm2015/theseam-ui-common-table-cell-type.mjs.map +1 -1
  446. package/fesm2015/theseam-ui-common-table-cell-types.mjs +34 -32
  447. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  448. package/fesm2015/theseam-ui-common-table.mjs +207 -15
  449. package/fesm2015/theseam-ui-common-table.mjs.map +1 -1
  450. package/fesm2015/theseam-ui-common-tel-input.mjs +13 -13
  451. package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
  452. package/fesm2015/theseam-ui-common-tiled-select.mjs +22 -22
  453. package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
  454. package/fesm2015/theseam-ui-common-toggle-edit.mjs +16 -16
  455. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  456. package/fesm2015/theseam-ui-common-toggle-group.mjs +10 -10
  457. package/fesm2015/theseam-ui-common-toggle-group.mjs.map +1 -1
  458. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  459. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  460. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  461. package/fesm2015/theseam-ui-common-vertical-list-filter.mjs +3 -3
  462. package/fesm2015/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  463. package/fesm2015/theseam-ui-common-viewers.mjs +20 -20
  464. package/fesm2015/theseam-ui-common-viewers.mjs.map +1 -1
  465. package/fesm2015/theseam-ui-common-widget.mjs +135 -135
  466. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  467. package/fesm2020/theseam-ui-common-asset-reader.mjs +10 -10
  468. package/fesm2020/theseam-ui-common-asset-reader.mjs.map +1 -1
  469. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +11 -11
  470. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  471. package/fesm2020/theseam-ui-common-buttons.mjs +25 -25
  472. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  473. package/fesm2020/theseam-ui-common-card.mjs +19 -19
  474. package/fesm2020/theseam-ui-common-card.mjs.map +1 -1
  475. package/fesm2020/theseam-ui-common-carousel.mjs +10 -10
  476. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  477. package/fesm2020/theseam-ui-common-checkbox.mjs +7 -7
  478. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  479. package/fesm2020/theseam-ui-common-confirm-dialog.mjs +13 -13
  480. package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  481. package/fesm2020/theseam-ui-common-data-exporter.mjs +10 -10
  482. package/fesm2020/theseam-ui-common-data-exporter.mjs.map +1 -1
  483. package/fesm2020/theseam-ui-common-data-filters.mjs +13 -13
  484. package/fesm2020/theseam-ui-common-data-filters.mjs.map +1 -1
  485. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +26 -26
  486. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  487. package/fesm2020/theseam-ui-common-datatable.mjs +1096 -139
  488. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  489. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  490. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  491. package/fesm2020/theseam-ui-common-dynamic.mjs +21 -21
  492. package/fesm2020/theseam-ui-common-dynamic.mjs.map +1 -1
  493. package/fesm2020/theseam-ui-common-footer-bar.mjs +7 -7
  494. package/fesm2020/theseam-ui-common-footer-bar.mjs.map +1 -1
  495. package/fesm2020/theseam-ui-common-form-field-error.mjs +16 -16
  496. package/fesm2020/theseam-ui-common-form-field-error.mjs.map +1 -1
  497. package/fesm2020/theseam-ui-common-form-field.mjs +22 -22
  498. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  499. package/fesm2020/theseam-ui-common-framework.mjs +1028 -277
  500. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  501. package/fesm2020/theseam-ui-common-google-maps.mjs +41 -41
  502. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  503. package/fesm2020/theseam-ui-common-graphql.mjs +257 -4
  504. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  505. package/fesm2020/theseam-ui-common-icon.mjs +13 -13
  506. package/fesm2020/theseam-ui-common-icon.mjs.map +1 -1
  507. package/fesm2020/theseam-ui-common-layout.mjs +18 -9
  508. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  509. package/fesm2020/theseam-ui-common-loading.mjs +10 -10
  510. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  511. package/fesm2020/theseam-ui-common-menu.mjs +30 -25
  512. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  513. package/fesm2020/theseam-ui-common-modal.mjs +43 -43
  514. package/fesm2020/theseam-ui-common-modal.mjs.map +1 -1
  515. package/fesm2020/theseam-ui-common-navigation-reload.mjs +3 -3
  516. package/fesm2020/theseam-ui-common-navigation-reload.mjs.map +1 -1
  517. package/fesm2020/theseam-ui-common-popover.mjs +19 -11
  518. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  519. package/fesm2020/theseam-ui-common-progress.mjs +7 -7
  520. package/fesm2020/theseam-ui-common-progress.mjs.map +1 -1
  521. package/fesm2020/theseam-ui-common-rich-text.mjs +7 -7
  522. package/fesm2020/theseam-ui-common-rich-text.mjs.map +1 -1
  523. package/fesm2020/theseam-ui-common-scrollbar.mjs +10 -10
  524. package/fesm2020/theseam-ui-common-scrollbar.mjs.map +1 -1
  525. package/fesm2020/theseam-ui-common-services.mjs +12 -12
  526. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  527. package/fesm2020/theseam-ui-common-shared.mjs +37 -37
  528. package/fesm2020/theseam-ui-common-shared.mjs.map +1 -1
  529. package/fesm2020/theseam-ui-common-storage.mjs +3 -3
  530. package/fesm2020/theseam-ui-common-storage.mjs.map +1 -1
  531. package/fesm2020/theseam-ui-common-story-helpers.mjs +26 -26
  532. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  533. package/fesm2020/theseam-ui-common-tabbed.mjs +22 -22
  534. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  535. package/fesm2020/theseam-ui-common-table-cell-type.mjs +10 -10
  536. package/fesm2020/theseam-ui-common-table-cell-type.mjs.map +1 -1
  537. package/fesm2020/theseam-ui-common-table-cell-types.mjs +34 -32
  538. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  539. package/fesm2020/theseam-ui-common-table.mjs +205 -15
  540. package/fesm2020/theseam-ui-common-table.mjs.map +1 -1
  541. package/fesm2020/theseam-ui-common-tel-input.mjs +13 -13
  542. package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
  543. package/fesm2020/theseam-ui-common-tiled-select.mjs +22 -22
  544. package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
  545. package/fesm2020/theseam-ui-common-toggle-edit.mjs +16 -16
  546. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  547. package/fesm2020/theseam-ui-common-toggle-group.mjs +10 -10
  548. package/fesm2020/theseam-ui-common-toggle-group.mjs.map +1 -1
  549. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  550. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  551. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  552. package/fesm2020/theseam-ui-common-vertical-list-filter.mjs +3 -3
  553. package/fesm2020/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  554. package/fesm2020/theseam-ui-common-viewers.mjs +20 -20
  555. package/fesm2020/theseam-ui-common-viewers.mjs.map +1 -1
  556. package/fesm2020/theseam-ui-common-widget.mjs +135 -135
  557. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  558. package/framework/base-layout/base-layout.component.d.ts +4 -2
  559. package/framework/base-layout/base-layout.component.scss +18 -10
  560. package/framework/base-layout/base-layout.module.d.ts +11 -10
  561. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  562. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  563. package/framework/base-layout/index.d.ts +1 -0
  564. package/framework/base-layout/styles/_variables.scss +21 -0
  565. package/framework/nav/_nav-theme.scss +4 -0
  566. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  567. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  568. package/framework/nav/index.d.ts +5 -0
  569. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  570. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  571. package/framework/nav/nav-utils.d.ts +20 -0
  572. package/framework/nav/nav.models.d.ts +77 -0
  573. package/framework/nav/nav.module.d.ts +17 -0
  574. package/framework/nav/nav.service.d.ts +27 -0
  575. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  576. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  577. package/framework/nav/styles/_utilities.scss +3 -0
  578. package/framework/nav/styles/_variables.scss +2 -0
  579. package/framework/public-api.d.ts +1 -0
  580. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
  581. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  582. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  583. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  584. package/framework/side-nav/side-nav.component.d.ts +13 -1
  585. package/framework/side-nav/side-nav.component.scss +0 -1
  586. package/framework/side-nav/side-nav.models.d.ts +7 -1
  587. package/framework/side-nav/side-nav.module.d.ts +1 -9
  588. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  589. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  590. package/framework/top-bar/index.d.ts +2 -0
  591. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  592. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  593. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  594. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  595. package/framework/top-bar/top-bar.component.d.ts +25 -3
  596. package/framework/top-bar/top-bar.component.scss +7 -2
  597. package/framework/top-bar/top-bar.module.d.ts +10 -8
  598. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  599. package/graphql/datatable/index.d.ts +3 -0
  600. package/graphql/datatable/map-filter-states.d.ts +2 -2
  601. package/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.d.ts +4 -0
  602. package/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.d.ts +4 -0
  603. package/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.d.ts +4 -0
  604. package/layout/layout.service.d.ts +9 -1
  605. package/menu/menu-toggle.directive.d.ts +2 -1
  606. package/package.json +3 -3
  607. package/popover/popover/popover.component.d.ts +4 -1
  608. package/popover/popover.directive.d.ts +2 -1
  609. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +83 -14
  610. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +38 -3
  611. package/table/public-api.d.ts +3 -0
  612. package/table/table/table.component.d.ts +21 -3
  613. package/table/table-cell-tpl.directive.d.ts +7 -0
  614. package/table/table-column-header-tpl.directive.d.ts +7 -0
  615. package/table/table-column.component.d.ts +24 -0
  616. package/table/table.module.d.ts +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-utils.mjs","sources":["../../../projects/ui-common/utils/get-attribute.ts","../../../projects/ui-common/utils/has-attribute.ts","../../../projects/ui-common/utils/cdk/get-closest-widget-cdk-drag.ts","../../../projects/ui-common/utils/form/get-control-name.ts","../../../projects/ui-common/utils/form/get-control-path.ts","../../../projects/ui-common/utils/form/observe-control-value.ts","../../../projects/ui-common/utils/form/observe-control-is-different.ts","../../../projects/ui-common/utils/form/wait-on-non-pending-status.ts","../../../projects/ui-common/utils/form/observe-control-status.ts","../../../projects/ui-common/utils/form/observe-control-valid.ts","../../../projects/ui-common/utils/form/observe-control-value-change.ts","../../../projects/ui-common/utils/has-property.ts","../../../projects/ui-common/utils/form/has-required-control.ts","../../../projects/ui-common/utils/form/is-empty-input-value.ts","../../../projects/ui-common/utils/operators/map-each.ts","../../../projects/ui-common/utils/operators/tap-first.ts","../../../projects/ui-common/utils/router/leaf-child-route.ts","../../../projects/ui-common/utils/router/will-have-data-prop.ts","../../../projects/ui-common/utils/router/operators/activated-routes-with-data-property.ts","../../../projects/ui-common/utils/router/route-snapshot-path-relative.ts","../../../projects/ui-common/utils/router/route-snapshot-path-full.ts","../../../projects/ui-common/utils/router/is-empty-url-route.ts","../../../projects/ui-common/utils/geo-json/coerce-feature-collection.ts","../../../projects/ui-common/utils/geo-json/geo-json-to-area.ts","../../../projects/ui-common/utils/geo-json/is-feature-collection.validator.ts","../../../projects/ui-common/utils/geo-json/is-only-geometry-types.ts","../../../projects/ui-common/utils/geo-json/is-only-geometry-types.validator.ts","../../../projects/ui-common/utils/geo-json/merge-polygons.ts","../../../projects/ui-common/utils/not-null-or-undefined.ts","../../../projects/ui-common/utils/geo-json/min-max-points.validator.ts","../../../projects/ui-common/utils/geo-json/no-empty-feature-collection.validator.ts","../../../projects/ui-common/utils/geo-json/no-inner-rings.validator.ts","../../../projects/ui-common/utils/geo-json/no-kinks.validator.ts","../../../projects/ui-common/utils/file-utils.ts","../../../projects/ui-common/utils/obj-utils.ts","../../../projects/ui-common/utils/geo-json/read-geo-file.ts","../../../projects/ui-common/utils/geo-json/split-multi-polygons.ts","../../../projects/ui-common/utils/geo-json/close-polygons.ts","../../../projects/ui-common/utils/array-move.ts","../../../projects/ui-common/utils/calc-percentage.ts","../../../projects/ui-common/utils/toggle-attribute.ts","../../../projects/ui-common/utils/input-masks.ts","../../../projects/ui-common/utils/is-null-or-undefined.ts","../../../projects/ui-common/utils/is-null-or-undefined-or-empty.ts","../../../projects/ui-common/utils/load-style.ts","../../../projects/ui-common/utils/load-style-sheet.ts","../../../projects/ui-common/utils/not-null-or-undefined-or-empty.ts","../../../projects/ui-common/utils/wait-on-condition-async.ts","../../../projects/ui-common/utils/polling-ticker.ts","../../../projects/ui-common/utils/refreshable.ts","../../../projects/ui-common/utils/wrap-into-observable.ts","../../../projects/ui-common/utils/is-absolute-url.ts","../../../projects/ui-common/utils/subscriber-count.ts","../../../projects/ui-common/utils/observe-query-list.ts","../../../projects/ui-common/utils/create-padding.ts","../../../projects/ui-common/utils/pad-end.ts","../../../projects/ui-common/utils/pad-start.ts","../../../projects/ui-common/utils/is-numeric.ts","../../../projects/ui-common/utils/fractional-digits-count.ts","../../../projects/ui-common/utils/theseam-ui-common-utils.ts"],"sourcesContent":["/**\n *\n */\nexport function getAttribute<E extends HTMLElement>(element: E, name: string): string | null {\n return element.getAttribute(name)\n}\n","/**\n *\n */\nexport function hasAttribute<E extends HTMLElement>(element: E, name: string): boolean {\n return element.hasAttribute(name)\n}\n","import { CdkDrag } from '@angular/cdk/drag-drop'\nimport { ElementRef } from '@angular/core'\n\nimport { getAttribute } from '../get-attribute'\nimport { hasAttribute } from '../has-attribute'\n\n/**\n * Finds the closest CdkDrag to an element by looking at the DOM.\n * @param element Element relative to which to look for a cdkDrag.\n * @param openDialogs References to the currently available cdkDrag.\n */\nexport function getClosestWidgetCdkDrag(element: ElementRef<HTMLElement>, dragDirectives: CdkDrag<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement\n\n while (parent && !(parent.classList.contains('cdk-drag') && hasAttribute(parent, 'data-widget-id'))) {\n parent = parent.parentElement\n }\n\n const parentId = parent ? getAttribute(parent, 'data-widget-id') : null\n return parentId\n ? dragDirectives.find(drag => getAttribute(drag.getRootElement(), 'data-widget-id') === parentId)\n : null\n}\n","import { AbstractControl } from '@angular/forms'\n\n/**\n * Get the name of the control.\n *\n * Example:\n *\n * ```js\n * const group = new FormGroup({\n * name: new Control(),\n * age: new Control()\n * })\n *\n * for (const c of group.controls) {\n * console.log(getControlName(c))\n * }\n *\n * // Output:\n * // >> 'name'\n * // >> 'age'\n * ```\n */\nexport function getControlName(c: AbstractControl): string | null {\n if (!c.parent) { return null }\n // NOTE: Typed as 'any' because using string for array index is not valid for\n // array index type, but it works and we actually want the index as a string\n // anyway.\n const controls: any = c.parent.controls\n return Object.keys(controls).find(name => c === controls[name]) || null\n}\n","import { AbstractControl } from '@angular/forms'\n\nimport { getControlName } from './get-control-name'\n\n/**\n * Get the path to a control.\n *\n * The path is built by walking back the `parent` properties until `parent` is\n * `null`.\n *\n * Example:\n *\n * ```js\n * const group = new FormGroup({\n * name: new FormControl(),\n * address: new FormGroup({\n * city: new FormControl(),\n * state: new FormControl()\n * })\n * })\n *\n * const control = group.get('address.city')\n * console.log(getControlPath(control))\n *\n * // Output:\n * >> 'address.city'\n * ```\n *\n */\nexport function getControlPath(c: AbstractControl, path: string = ''): string | null {\n let _path = path\n _path = getControlName(c) + _path\n\n if (c.parent && getControlName(c.parent)) {\n _path = `.${_path}`\n return getControlPath(c.parent, _path)\n } else {\n return _path\n }\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { startWith, switchMap } from 'rxjs/operators'\n\n/**\n * Observe the value of a control.\n */\nexport function observeControlValue<T = any>(control: AbstractControl): Observable<T> {\n return of(control)\n .pipe(switchMap(_control => _control.valueChanges\n .pipe(startWith(_control.value))\n ))\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable } from 'rxjs'\nimport { distinctUntilChanged, map } from 'rxjs/operators'\n\nimport { observeControlValue } from './observe-control-value'\n\n/**\n * Observe the changed state of the input value from the time this function is\n * called.\n *\n * When this function is called the value is stored. Each time the control's\n * value changes the value is compared with the initial value. Currenly the\n * values are compared as stringified objects using `JSON.stringify`.\n *\n * TODO: Allow the value compare implementation to be optionally changed.\n */\nexport function observeControlIsDifferent(control: AbstractControl): Observable<boolean> {\n const _initial = JSON.stringify(control.value)\n return observeControlValue(control)\n .pipe(\n map(value => JSON.stringify(value) !== _initial),\n distinctUntilChanged(),\n )\n}\n","import { AbstractControl } from '@angular/forms'\nimport { interval, merge, Observable } from 'rxjs'\nimport { filter, map, mapTo, startWith, take } from 'rxjs/operators'\n\n/**\n * Wait on the status of a form control to not be `'PENDING'`.\n *\n * NOTE: This function is mainly just a work around for an issue where\n * `statusChanges` sometimes emits `'Pending'` without emitting another state\n * when complete. Seems to happen with async validators if the value changes\n * before completing, even if the validator completes(subscription `complete`\n * if observable).\n */\nexport function waitOnNonPendingStatus(control: AbstractControl): Observable<string> {\n return merge(\n control.statusChanges,\n interval(30).pipe(mapTo(control), map(c => c.status))\n )\n .pipe(startWith(control.status))\n .pipe(filter(v => v !== 'PENDING'))\n .pipe(take(1))\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { startWith, switchMap } from 'rxjs/operators'\n\nimport { waitOnNonPendingStatus } from './wait-on-non-pending-status'\n\n/**\n * Observe the status of a control using a work around for status not changing\n * after pending.\n */\nexport function observeControlStatus(control: AbstractControl): Observable<string> {\n return of(control)\n .pipe(switchMap(_control => _control.statusChanges\n .pipe(startWith(_control.status))\n .pipe(switchMap(status => status === 'PENDING'\n ? waitOnNonPendingStatus(control)\n .pipe(startWith(status))\n : of(status)\n ))\n ))\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable } from 'rxjs'\nimport { distinctUntilChanged, map, pairwise, startWith } from 'rxjs/operators'\n\nimport { observeControlStatus } from './observe-control-status'\n\n/**\n * Observe the valid state of a control.\n *\n * By default `waitOnPending` is false and the control states map to:\n * 'VALID' => true\n * 'INVALID' => false\n * 'PENDING' => false\n *\n * If `waitOnPending` is true the valid result when 'PENDING' remains the same\n * as it was before 'PENDING' until it is no longer 'PENDING'.\n */\nexport function observeControlValid(control: AbstractControl, waitOnPending: boolean = false): Observable<boolean> {\n if (waitOnPending) {\n return observeControlStatus(control)\n .pipe(distinctUntilChanged())\n .pipe(startWith(undefined))\n .pipe(pairwise())\n .pipe(map(v => ({ previous: v[0], current: v[1] })))\n .pipe(map(v => v.current === 'PENDING' ? v.previous : v.current))\n .pipe(map(status => status === 'VALID'))\n } else {\n return observeControlStatus(control)\n .pipe(distinctUntilChanged())\n .pipe(map(status => status === 'VALID'))\n }\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable } from 'rxjs'\nimport { map, pairwise, startWith } from 'rxjs/operators'\n\nimport { observeControlValue } from './observe-control-value'\n\n/**\n * Observe the value of a control with the previous.\n */\nexport function observeControlValueChange(control: AbstractControl): Observable<{ previous: any, current: any }> {\n return observeControlValue(control)\n .pipe(\n startWith(undefined),\n pairwise(),\n map(v => ({ previous: v[0], current: v[1] }))\n )\n}\n","// Source: https://stackoverflow.com/a/59361497/7926298\nexport function hasProperty<T extends object, K extends keyof T>(\n style: T,\n prop: K\n// ): style is T & { [P in K]-?: Exclude<T[K], undefined> } {\n): style is T & Required<Record<K, Exclude<T[K], undefined>>> {\n return Object.prototype.hasOwnProperty.call(style, prop) && style[prop] !== undefined\n}\n","import { AbstractControl } from '@angular/forms'\n\nimport { hasProperty } from '../has-property'\n\n/**\n * Check if control has a required control.\n *\n * ----------------------------------------------------------------------------\n * NOTE: I am not sure about if this should be used or not.\n *\n * From my understanding this assumes that all the validators do not have some\n * unexpected side-effect from being called like this. It could be argued that\n * the validator is flawed and should be fixed if that is the case, but I am not\n * convinced that is correct yet.\n *\n * An example that I think is valid for this argument: A FormControl configured\n * to only check validators when a specific condition happens, because of a\n * reason that it has to do a long process. In that situation should this\n * function be smart enough to consider that or is it up to the validator to\n * consider this function possibly being used.\n *\n * This seems to assume the required validator will always be a synchronous\n * validator. That is a valid assumption if thinking about showing a required\n * state in the UI, but a FormControl does not neccessarily have to be used in\n * UI. So, I think it could be valid to have an async validator that uses the\n * name `required` for it error, but I do not have a good example, so I could be\n * wrong.\n * ----------------------------------------------------------------------------\n *\n * Source: https://gist.github.com/jsdevtom/5589af349a395b37e699b67417ef025b\n * @experimental\n * @ignore\n */\nexport function hasRequiredControl(abstractControl: AbstractControl): boolean {\n if (abstractControl.validator) {\n const validator = abstractControl.validator({}as AbstractControl)\n if (validator && validator.required) {\n return true\n }\n }\n\n const _abstractControl: any = abstractControl\n if (hasProperty(_abstractControl, 'controls')) {\n for (const controlName in _abstractControl.controls) {\n if (_abstractControl.controls[controlName]) {\n if (hasRequiredControl(_abstractControl.controls[controlName])) {\n return true\n }\n }\n }\n }\n\n return false\n}\n","// Source: https://github.com/angular/angular/blob/master/packages/forms/src/validators.ts#L16\nexport function isEmptyInputValue(value: any): boolean {\n // we don't check for string here so it also works with arrays\n return value == null || value.length === 0\n}\n","import { from, Observable } from 'rxjs'\nimport { map, switchMap, toArray } from 'rxjs/operators'\n\nexport function mapEach<T, R>(predicate: (value: T) => R) {\n return (source$: Observable<T[]>): Observable<R[]> =>\n source$.pipe(switchMap(v => from(v).pipe(map(m => predicate(m)), toArray())))\n}\n","import { Observable } from 'rxjs'\nimport { tap } from 'rxjs/operators'\n\n/**\n * Like tap, but only calls predicate on first emission.\n */\nexport function tapFirst<T>(predicate: (value: T) => void) {\n let _initialized = false\n return (source$: Observable<T>): Observable<T> =>\n source$.pipe(\n tap(v => {\n if (!_initialized) {\n predicate(v)\n _initialized = true\n }\n })\n )\n}\n","import { ActivatedRoute } from '@angular/router'\n\nexport function leafChildRoute(activatedRoute: ActivatedRoute): ActivatedRoute {\n let route = activatedRoute\n while (route.firstChild) { route = route.firstChild }\n return route\n}\n","import { ActivatedRoute } from '@angular/router'\n\nfunction hasRouteConfigDataProp(route: ActivatedRoute, prop: string): boolean {\n return !!(route && route.routeConfig && route.routeConfig.data && Object.prototype.hasOwnProperty.call(route.routeConfig.data, prop))\n}\n\nfunction hasRouteConfigResolveProp(route: ActivatedRoute, prop: string): boolean {\n return !!(route && route.routeConfig && route.routeConfig.resolve && Object.prototype.hasOwnProperty.call(route.routeConfig.resolve, prop))\n}\n\nexport function willHaveDataProp(route: ActivatedRoute, prop: string): boolean {\n return hasRouteConfigDataProp(route, prop) || hasRouteConfigResolveProp(route, prop)\n}\n","import { ActivatedRoute, Data } from '@angular/router'\nimport { combineLatest, Observable } from 'rxjs'\nimport { map, switchMap } from 'rxjs/operators'\n\nimport { leafChildRoute } from '../leaf-child-route'\nimport { willHaveDataProp } from '../will-have-data-prop'\n\nexport interface IActivatedRouteWithData {\n route: ActivatedRoute\n data: Data\n}\n\nexport function activatedRoutesWithDataProperty(prop: string, mustHaveDefined: boolean = false) {\n const _data = (r: ActivatedRoute) => r.data.pipe(map(_d => ({ route: r, data: _d })))\n return (source$: Observable<ActivatedRoute>): Observable<IActivatedRouteWithData[]> =>\n source$.pipe(\n map(route => leafChildRoute(route)),\n map(route => route.pathFromRoot),\n switchMap(routes => combineLatest(routes.map(r => _data(r)))),\n map(v => v.filter(_v => Object.prototype.hasOwnProperty.call(_v.data, prop))),\n map(v => mustHaveDefined\n ? v.filter(_v => willHaveDataProp(_v.route, prop))\n : v\n )\n )\n}\n","import { ActivatedRouteSnapshot } from '@angular/router'\n\nexport function routeSnapshotPathRelative(route: ActivatedRouteSnapshot) {\n return route.url.reduce((path, urlSegment) => `${path}/${urlSegment.path}`, '')\n}\n","import { ActivatedRouteSnapshot } from '@angular/router'\n\nimport { routeSnapshotPathRelative } from './route-snapshot-path-relative'\n\nexport function routeSnapshotPathFull(route: ActivatedRouteSnapshot) {\n return route.pathFromRoot.reduce((path, _route) => path + routeSnapshotPathRelative(_route), '')\n}\n","import { ActivatedRoute } from '@angular/router'\n\nexport function isEmptyUrlRoute(activatedRoute: ActivatedRoute): boolean {\n return activatedRoute.snapshot.url.length === 0\n}\n","import { FeatureCollection } from 'geojson'\n\n// TODO: Make this more thorough and maybe error on unrecognized.\nexport function coerceFeatureCollection(value: any): FeatureCollection | null {\n return parseValue(value)\n}\n\n/**\n * Parses the value to a FeatureCollection object or null if it is not a\n * FeatureCollection.\n */\nfunction parseValue(value: any): FeatureCollection | null {\n const _value = parseStringValue(value)\n if (isFeatureCollectionValue(_value)) {\n return _value\n }\n return null\n}\n\n/**\n * Tries to parse the value to an object, in case the value is a stringified\n * json.\n */\nfunction parseStringValue(value: any): any {\n if (typeof value === 'string') {\n try {\n return JSON.parse(value)\n } catch {\n return null\n }\n }\n\n return value\n}\n\n/**\n * Checks if the value is a FeatureCollection.\n *\n * NOTE: This is not a thorough FeatureCollection check. It only checks that the\n * value is an object resembling a GeoJSON.FeatureCollection, enough for the\n * validator.\n */\nfunction isFeatureCollectionValue(value: any): value is FeatureCollection {\n if (value === undefined || value === null) {\n return false\n }\n return value.type === 'FeatureCollection' && Array.isArray(value.features)\n}\n","import area from '@turf/area'\nimport { convertArea, Feature, FeatureCollection, Geometry, Properties, Units } from '@turf/helpers'\nimport { GeoJSON } from 'geojson'\n\n/**\n *\n */\nexport function geoJsonToArea(\n geoJson: GeoJSON | Feature<any, Properties> | FeatureCollection<any, Properties> | Geometry,\n units: Units = 'acres'\n): number {\n const areaMSqr = area(geoJson as any)\n const acres = convertArea(areaMSqr, 'meters', units)\n return acres\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nexport const IS_FEATURE_COLLECTION_VALIDATOR_NAME = 'is-feature-collection'\n\nexport function isFeatureCollectionValidator(): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n return {\n [IS_FEATURE_COLLECTION_VALIDATOR_NAME]: {\n reason: `Must be a FeatureCollection.`,\n }\n }\n }\n\n return null\n }\n}\n","import { FeatureCollection, Geometry } from 'geojson'\n\n/**\n * Returns true if the GeoJSON is only specifies geometries.\n */\nexport function isOnlyGeometryTypes(featureCollection: FeatureCollection, types: Geometry['type'][]): boolean {\n if (types.length === 0) {\n if (featureCollection.features.length > 0) {\n // If no types are specified then there can't be any specified types found.\n return false\n } else {\n // If no types are specified and there are no features then there is\n // nothing to say a specified type isn't found.\n return true\n }\n }\n\n for (const f of featureCollection.features) {\n if (types.indexOf(f.geometry.type) === -1) {\n return false\n }\n }\n\n return true\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { Geometry } from 'geojson'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\nimport { isOnlyGeometryTypes } from './is-only-geometry-types'\n\nexport const IS_ONLY_GEOMETRY_TYPES_VALIDATOR_NAME = 'is-only-geometry-types'\n\nexport function isOnlyGeometryTypesValidator(types: Geometry['type'][]): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n // If there isn't a FeatureCollection then there is nothing to validate.\n // Use 'isFeatureCollection' to validate the value is a FeatureCollection.\n return null\n }\n\n if (!isOnlyGeometryTypes(value, types)) {\n const typesNotAllowed = value.features\n .map(f => f.geometry.type)\n .filter(t => types.indexOf(t) === -1)\n const distinctTypesNotAllowed = Array.from(new Set(typesNotAllowed))\n return {\n [IS_ONLY_GEOMETRY_TYPES_VALIDATOR_NAME]: {\n reason: `Only geometry type${(types.length === 1 ? '' : 's')} ${types.join(', ')} allowed.`,\n notAllowedGeometryTypesFound: distinctTypesNotAllowed,\n }\n }\n }\n\n return null\n }\n}\n","import {\n Feature,\n FeatureCollection,\n MultiPolygon,\n} from 'geojson'\n\n/**\n * Merge Polygon and MultiPolygon geometries into a single MultiPolygon. Any\n * properties, other than 'coordinates', of the Polygons and MultiPolygons will\n * be lost.\n *\n * NOTE: Polygons and MultPolygons in a GeometryCollection will not be merged.\n */\nexport function mergePolygons(featureCollection: FeatureCollection): void {\n const multiPolygon: MultiPolygon = {\n type: 'MultiPolygon',\n coordinates: [],\n }\n\n for (let i = 0; i < featureCollection.features.length; i++) {\n const f = featureCollection.features[i]\n if (f.geometry.type === 'Polygon') {\n multiPolygon.coordinates.push(f.geometry.coordinates)\n featureCollection.features.splice(i, 1)\n i--\n } else if (f.geometry.type === 'MultiPolygon') {\n multiPolygon.coordinates.push(...f.geometry.coordinates)\n featureCollection.features.splice(i, 1)\n i--\n }\n }\n\n if (multiPolygon.coordinates.length > 0) {\n const feature: Feature = {\n type: 'Feature',\n geometry: multiPolygon,\n properties: { },\n }\n featureCollection.features.push(feature)\n }\n}\n","export function notNullOrUndefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { FeatureCollection } from 'geojson'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { notNullOrUndefined } from '../not-null-or-undefined'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nexport const MIN_MAX_POINTS_VALIDATOR_NAME = 'min-max-points'\n\nexport function minMaxPointsValidator(min: number | undefined = 3, max?: number | undefined): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n return null\n }\n\n if (collectionViolatesMinMax(value, min, max)) {\n const reason = notNullOrUndefined(max)\n ? `A polygon must have between ${min} and ${max} points.`\n : `A polygon must have at least ${min} points.`\n return {\n [MIN_MAX_POINTS_VALIDATOR_NAME]: {\n reason\n }\n }\n }\n return null\n }\n}\n\n/**\n * Checks if a FeatureCollection contains any geometries with an incomplete polygon.\n *\n * NOTE: Does not consider GeometryCollection.\n */\n function collectionViolatesMinMax(featureCollection: FeatureCollection, min: number, max: number | undefined): boolean {\n for (const f of featureCollection.features) {\n if (f.geometry.type === 'Polygon') {\n if (polygonViolatesMinMax(f.geometry.coordinates[0].length, min, max)) {\n return true\n }\n } else if (f.geometry.type === 'MultiPolygon') {\n for (const coords of f.geometry.coordinates) {\n if (polygonViolatesMinMax(coords[0].length, min, max)) {\n return true\n }\n }\n }\n }\n\n return false\n}\n\nfunction polygonViolatesMinMax(coordinateLength: number, min: number, max: number | undefined): boolean {\n if (coordinateLength < min || (notNullOrUndefined(max) && max > min && coordinateLength > max)) {\n return true\n }\n\n return false\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nexport const NO_EMPTY_FEATURE_COLLECTION_VALIDATOR_NAME = 'no-empty-feature-collection'\n\nexport function noEmptyFeatureCollectionValidator(): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n return null\n }\n\n if (value.features.length === 0) {\n return {\n [NO_EMPTY_FEATURE_COLLECTION_VALIDATOR_NAME]: {\n reason: `FeatureCollection must have a value.`,\n }\n }\n }\n\n return null\n }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { FeatureCollection } from 'geojson'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nexport const NO_INNER_RINGS_VALIDATOR_NAME = 'no-inner-rings'\n\n/**\n * Validates that a FeatureCollection does not contain any Polygon with inner\n * rings(\"holes\").\n *\n * NOTE: Only considers Polygon and MultiPolygon. Does not consider\n * GeometryCollection.\n */\nexport function noInnerRingsValidator(): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n // If there isn't a FeatureCollection then there is nothing to validate.\n // Use 'isFeatureCollection' to validate the value is a FeatureCollection.\n return null\n }\n\n if (hasInnerRing(value)) {\n return {\n [NO_INNER_RINGS_VALIDATOR_NAME]: {\n reason: `A shape cannot have an inner ring.`\n }\n }\n }\n\n return null\n }\n}\n\n/**\n * Checks if a FeatureCollection contains any geometries with an inner\n * ring(\"hole\").\n *\n * NOTE: Does not consider GeometryCollection.\n */\nfunction hasInnerRing(featureCollection: FeatureCollection): boolean {\n for (const f of featureCollection.features) {\n // The spec says the right-hand rule must be followed, but also specifies\n // that tools should not reject polygons that do not follow the right-hand\n // rule. It does specify that the first ring must be the exterior ring and\n // the others must be the interior. So, this should be safe to just check\n // if there are multiple rings, instead of checking their winding orders.\n //\n // Polygon spec: https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6\n if (f.geometry.type === 'Polygon') {\n if (f.geometry.coordinates.length > 1) {\n return true\n }\n } else if (f.geometry.type === 'MultiPolygon') {\n for (const coords of f.geometry.coordinates) {\n if (coords.length > 1) {\n return true\n }\n }\n }\n }\n\n return false\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport kinks from '@turf/kinks'\nimport { Feature, FeatureCollection } from 'geojson'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nconst kinkableGeometryTypes = [ 'LineString', 'MultiLineString', 'MultiPolygon', 'Polygon' ]\n\nexport const NO_KINKS_VALIDATOR_NAME = 'no-kinks'\n\nexport function noKinksValidator(): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n return null\n }\n\n const kinksFound: { feature: Feature, kinks: FeatureCollection }[] = []\n for (const f of value.features) {\n if (kinkableGeometryTypes.indexOf(f.geometry.type) !== -1) {\n const _kinks = kinks(f as any)\n if (_kinks.features.length > 0) {\n kinksFound.push({\n feature: f,\n kinks: _kinks,\n })\n }\n }\n }\n\n if (kinksFound.length > 0) {\n return {\n [NO_KINKS_VALIDATOR_NAME]: {\n reason: 'Paths should not intersect themselves.',\n featuresWithKink: kinksFound,\n }\n }\n }\n\n return null\n }\n}\n","import fileType from '@marklb/file-type'\nimport { Buffer } from 'buffer/'\n\nexport function readFileAsync(file: any): Promise<ArrayBuffer | null> {\n return new Promise<ArrayBuffer | null>((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => {\n resolve(reader.result as ArrayBuffer | null)\n }\n reader.readAsArrayBuffer(file)\n })\n}\n\nexport async function readFileAsDataUrlAsync(file: Blob): Promise<string | null> {\n return new Promise<string | null>((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => {\n resolve(reader.result as string | null)\n }\n reader.readAsDataURL(file)\n })\n}\n\nexport async function fileBufferToBlob(\n fileBuffer: Buffer,\n defaultMime: string = 'application/octet-stream'\n): Promise<Blob> {\n const fType = fileType(fileBuffer)\n const mime = (fType) ? fType.mime : defaultMime\n const blob = new Blob([fileBuffer as any], { type: mime })\n return blob\n}\n\nexport async function fileBufferToObjectUrl(\n fileBuffer: Buffer,\n defaultMime: string = 'application/octet-stream'\n): Promise<string> {\n const file = await fileBufferToBlob(fileBuffer, defaultMime)\n const fileURL = URL.createObjectURL(file)\n return fileURL\n}\n\nexport interface IFileData {\n ext?: string\n mime?: string\n blob: Blob\n}\n\nexport async function fileDataFromBuffer(\n fileBuffer: Buffer | Uint8Array | ArrayBuffer,\n defaultMime: string = 'application/octet-stream'\n): Promise<IFileData> {\n const _fileBuffer = Buffer.from(fileBuffer)\n const fType = fileType(_fileBuffer as any)\n const ext = (fType && fType.ext) || undefined\n const mime = fType ? fType.mime : defaultMime\n const blob = new Blob([_fileBuffer as any], { type: mime })\n const fileData: IFileData = { ext, mime, blob }\n return fileData\n}\n\nexport function openBlob(blob: Blob, target?: string, filename?: string) {\n const url = URL.createObjectURL(blob)\n const win = window.open(url, target)\n // TODO: Consider if always setting opener to null is to restrictive\n // if (win && target && target.toLowerCase() === '_blank') {\n // win.opener = null\n // }\n}\n","/** Returns object without property */\nexport function withoutProperty<T, K extends keyof T>(obj: T, propName: K): Pick<T, Exclude<keyof T, K>> {\n const { [propName]: _, ...without } = obj\n return without\n}\n\n/** Returns object without properties */\nexport function withoutProperties<T, K extends keyof T>(obj: T, propNames: K[]): Pick<T, Exclude<keyof T, K>> {\n let without: any = obj\n for (const propName of propNames) {\n without = withoutProperty(without, propName)\n }\n return without\n}\n\n/** Delete property of object */\nexport function deleteProperty<T extends object, K extends keyof T>(obj: T, propName: K): void {\n if (Object.prototype.hasOwnProperty.call(obj, propName)) {\n delete obj[propName]\n }\n}\n\n/** Delete properties of object */\nexport function deleteProperties<T extends object, K extends keyof T>(obj: T, propNames: K[]): void {\n for (const propName of propNames) {\n deleteProperty(obj, propName)\n }\n}\n","import { isDevMode } from '@angular/core'\n\nimport fileType from '@marklb/file-type'\nimport { FeatureCollection } from 'geojson'\nimport { Buffer } from 'buffer/'\nimport shp from 'shpjs'\n\nimport { readFileAsync } from '../file-utils'\nimport { withoutProperty } from '../obj-utils'\n\n/**\n * Reads a File, or buffer of file content, in GeoJSON or ESRI Shapefile format\n * and returns a GeoJSON `FeatureCollection`.\n */\nexport async function readGeoFile(fileOrBuffer: File | ArrayBuffer | Buffer): Promise<FeatureCollection> {\n const buffer = await coerceFileOrBufferToBuffer(fileOrBuffer)\n\n if (isShpFile(buffer)) {\n return parseShpFile(buffer)\n } else if (fileType(buffer)?.mime === 'application/zip') {\n try {\n return await parseShpZip(buffer)\n } catch (e: any) {\n // NOTE: If 'shpjs' updates or we switch to a fork, where it doesn't use\n // node buffers, then we can remove this rethrow.\n if (isDevMode()) {\n if (e.message === 'nodebuffer is not supported by this platform') {\n // eslint-disable-next-line no-console\n console.warn(\n 'Try adding Buffer polyfill.\\n' +\n 'Install: npm install buffer\\n' +\n 'Add `global.Buffer = global.Buffer || require(\\'buffer\\').Buffer` to \"src/polyfills.ts\"'\n )\n }\n }\n throw e\n }\n }\n\n return parseGeoJson(buffer)\n}\n\nasync function coerceFileOrBufferToBuffer(fileOrBuffer: File | ArrayBuffer | Buffer): Promise<Buffer> {\n if (fileOrBuffer instanceof File) {\n const arrBuf = await readFileAsync(fileOrBuffer)\n if (arrBuf === null) {\n throw new Error('Could not read file.')\n }\n return Buffer.from(arrBuf)\n }\n\n return Buffer.from(fileOrBuffer)\n}\n\n// NOTE: Our current version of file-type does not detect shp files. We can\n// remove this function when file-types is upgraded.\nfunction isShpFile(buffer: Buffer): boolean {\n const header = [ 0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]\n const offset = 2\n\n if (buffer.length < (header.length + offset)) {\n return false\n }\n\n for (let i = 0; i < header.length; i++) {\n if (header[i] !== buffer[i + offset]) {\n return false\n }\n }\n\n return true\n}\n\nasync function parseShpFile(buffer: Buffer): Promise<FeatureCollection> {\n const geometries = await shp.parseShp(buffer, undefined as any)\n const featCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: geometries.map(geom => ({\n type: 'Feature',\n geometry: geom,\n properties: { }\n }))\n }\n return featCollection\n}\n\nasync function parseShpZip(buffer: Buffer): Promise<FeatureCollection> {\n let featCollection = await shp.parseZip(buffer, undefined as any)\n if (Array.isArray(featCollection)) {\n if (featCollection.length === 0) {\n throw Error(`Shape data not found.`)\n } else if (featCollection.length > 1) {\n throw Error(`Multiple shape files not supported.`)\n }\n featCollection = featCollection[0]\n }\n return withoutProperty(featCollection, 'fileName')\n}\n\nfunction parseGeoJson(buffer: Buffer): FeatureCollection {\n const json = JSON.parse(buffer.toString())\n\n if (json?.type === 'FeatureCollection' && Array.isArray(json?.features)) {\n return json as FeatureCollection\n }\n\n throw Error(`Unable to parse as GeoJSON.`)\n}\n","import { Polygon } from '@turf/helpers'\nimport {\n Feature,\n FeatureCollection,\n MultiPolygon,\n} from 'geojson'\n\n/**\n * Split all MultiPolygon into Polygon. Any properties, other than\n * 'coordinates', of the MultiPolygons will be lost.\n *\n * NOTE: MultiPolygons in a GeometryCollection will not be split.\n */\nexport function splitMultiPolygons(featureCollection: FeatureCollection): void {\n for (let i = 0; i < featureCollection.features.length; i++) {\n if (featureCollection.features[i]) {\n const geometry = featureCollection.features[i].geometry\n if (geometry.type === 'MultiPolygon') {\n const features = splitMultPolygon(geometry).map(p => ({\n type: 'Feature',\n geometry: p,\n properties: { },\n } as Feature))\n featureCollection.features.splice(i, 1, ...features)\n i += Math.max(features.length - 1, 0)\n }\n }\n }\n}\n\nfunction splitMultPolygon(multiPolygon: MultiPolygon): Polygon[] {\n return multiPolygon.coordinates.map(c => ({\n type: 'Polygon',\n coordinates: c,\n }))\n}\n","import { Feature, FeatureCollection, MultiPolygon, Polygon } from 'geojson'\n\n/**\n * Close all polygons in the GeoJSON.\n *\n * Google Maps requires that polygons be closed, but not all libraries have that\n * requirement. This may add redundent points to the GeoJSON, but it will ensure\n * that the GeoJSON is valid for Google Maps.\n */\nexport function closePolygons(geoJson: FeatureCollection | Feature | Polygon | MultiPolygon) {\n if (geoJson.type === 'FeatureCollection') {\n for (const f of geoJson.features) {\n closePolygonsFeature(f)\n }\n } else if (geoJson.type === 'Feature') {\n closePolygonsFeature(geoJson)\n }\n}\n\nfunction closePolygonsFeature(feature: Feature): void {\n if (feature.geometry.type === 'Polygon') {\n closePolygon(feature.geometry)\n } else if (feature.geometry.type === 'MultiPolygon') {\n closeMultiPolygon(feature.geometry)\n }\n}\n\nfunction closePolygon(polygon: Polygon): void {\n for (const c of polygon.coordinates) {\n c.push(c[0])\n }\n}\n\nfunction closeMultiPolygon(multiPolygon: MultiPolygon): void {\n for (const p of multiPolygon.coordinates) {\n for (const c of p) {\n c.push(c[0])\n }\n }\n}\n","// Based on source: https://github.com/sindresorhus/array-move/blob/main/index.js\n\n/**\n Moves the item to the new position in the input array. Useful for huge arrays\n where absolute performance is needed.\n\n @param array - The array to modify.\n @param fromIndex - The index of item to move. If negative, it will begin that\n many elements from the end.\n @param toIndex - The index of where to move the item. If negative, it will\n begin that many elements from the end.\n @example\n ```\n import { arrayMoveMutable } from '@theseam/ui-common/utils';\n\n const input = ['a', 'b', 'c'];\n arrayMoveMutable(input, 1, 2);\n console.log(input);\n //=> ['a', 'c', 'b']\n ```\n*/\nexport function arrayMoveMutable(\n array: unknown[],\n fromIndex: number,\n toIndex: number\n): void {\n const startIndex = fromIndex < 0 ? array.length + fromIndex : fromIndex\n\n if (startIndex >= 0 && startIndex < array.length) {\n const endIndex = toIndex < 0 ? array.length + toIndex : toIndex\n\n const [item] = array.splice(fromIndex, 1)\n array.splice(endIndex, 0, item)\n }\n}\n\n/**\n Clones the given `array`, moves the item to a new position in the new array,\n and then returns the new array. The given `array` is not mutated.\n\n @param array - The array with the item to move.\n @param fromIndex - The index of item to move. If negative, it will begin that\n many elements from the end.\n @param toIndex - The index of where to move the item. If negative, it will\n begin that many elements from the end.\n @returns A new array with the item moved to the new position.\n @example\n ```\n import { arrayMoveImmutable } from '@theseam/ui-common/utils';\n\n const input = ['a', 'b', 'c'];\n const array1 = arrayMoveImmutable(input, 1, 2);\n console.log(array1);\n //=> ['a', 'c', 'b']\n\n const array2 = arrayMoveImmutable(input, -1, 0);\n console.log(array2);\n //=> ['c', 'a', 'b']\n\n const array3 = arrayMoveImmutable(input, -2, -3);\n console.log(array3);\n //=> ['b', 'a', 'c']\n ```\n*/\nexport function arrayMoveImmutable<ValueType>(\n array: readonly ValueType[],\n fromIndex: number,\n toIndex: number\n): ValueType[] {\n const newArray = [ ...array ]\n arrayMoveMutable(newArray, fromIndex, toIndex)\n return newArray\n}\n","export function calcPercentage(total: number, n: number) {\n return total && total > 0 ? (n / total) * 100 : 0\n}\n","/**\n * Polyfil for `Element.toggleAttribute`\n *\n * Toggles a value without a value. Useful for attributes, such as `disabled`,\n * `readonly`, and `hidden`, that only needs to exist on the `Element` without\n * requiring a value.\n *\n * Most browsers natively support this feature, but IE, which we still try to\n * support for at least the main parts of the app, has \"Unknown\" support of this\n * feature. Until IE support is dropped this polyfil should be used to toggle an\n * attribute.\n *\n * Source:\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute#Polyfill\n */\nexport function toggleAttribute(element: HTMLElement, name: string, force: boolean): boolean {\n let _force = force\n if (_force !== void 0) { _force = !!_force }\n\n if (element.getAttribute(name) !== null) {\n if (_force) { return true }\n\n element.removeAttribute(name)\n return false\n } else {\n if (_force === false) { return false }\n\n element.setAttribute(name, '')\n return true\n }\n}\n","export const phoneNumberMask = ['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/]\n","export function isNullOrUndefined<T>(value: T | null | undefined): value is (null | undefined) {\n return value === undefined || value === null\n}\n","export function isNullOrUndefinedOrEmpty(value: string | null | undefined, trim: boolean = true): value is (string | null | undefined) {\n return value === undefined || value === null || (trim ? value.trim() : value).length === 0\n}\n","export function loadStyle(content: string): Promise<HTMLStyleElement> {\n return new Promise((resolve, reject) => {\n const s = document.createElement('style')\n s.onload = () => resolve(s)\n s.onerror = e => {\n document.head.removeChild(s)\n reject(e)\n }\n s.innerHTML = content\n document.head.appendChild(s)\n })\n}\n","export function loadStyleSheet(path: string): Promise<HTMLLinkElement> {\n return new Promise((resolve, reject) => {\n const s = document.createElement('link')\n s.onload = () => resolve(s)\n s.onerror = e => {\n document.head.removeChild(s)\n reject(e)\n }\n s.rel = 'stylesheet'\n s.href = path\n document.head.appendChild(s)\n })\n}\n","export function notNullOrUndefinedOrEmpty(value: string | null | undefined, trim: boolean = true): value is string {\n return value !== null && value !== undefined && (trim ? value.trim() : value).length > 0\n}\n","export async function waitOnConditionAsync(\n condition: () => boolean,\n timeoutDuration: number = -1,\n throwOnTimeout: boolean = true\n): Promise<any> {\n const timeStart: any = new Date()\n\n const _waitFunc = (callbackFn: (boolean: boolean) => any) => {\n let conditionSuccess = false\n\n if (condition()) {\n callbackFn(true)\n conditionSuccess = true\n }\n\n if (!conditionSuccess) {\n const timeNow: any = new Date()\n const duration = timeNow - timeStart\n if (timeoutDuration > -1 && duration > timeoutDuration) {\n if (throwOnTimeout) {\n throw new Error('Timed out waiting on condition.')\n } else {\n callbackFn(false)\n }\n }\n\n setTimeout(() => { _waitFunc(callbackFn) }, 30)\n }\n }\n\n return new Promise((resolve, reject) => {\n const fn = (b: boolean) => {\n resolve(b)\n }\n _waitFunc(fn)\n })\n}\n","import { isObservable, Observable, Subscriber, Subscription } from 'rxjs'\n\nclass IntervalTimer {\n\n private _intervalTime: number\n private _intervalId: number | null = null\n\n constructor(\n private _callback: () => void,\n intervalTime: number,\n startOnInit: boolean = true\n ) {\n this._intervalTime = intervalTime\n if (startOnInit) {\n this.start()\n }\n }\n\n set intervalTime(time: number) {\n this._intervalTime = time\n }\n\n public start(): void {\n if (this._intervalId === null) {\n this._intervalId = window.setInterval(() => {\n this._callback()\n }, this._intervalTime)\n }\n }\n\n public stop(): void {\n if (this._intervalId !== null) {\n clearInterval(this._intervalId)\n this._intervalId = null\n }\n }\n\n public reset(newIntervalTime?: number): void {\n if (newIntervalTime) {\n this.intervalTime = newIntervalTime\n }\n this.stop()\n this.start()\n }\n\n}\n\nexport type PollingActionFn<R> = () => R | Observable<R>\n\n// tslint:disable:no-inferrable-types\nexport class PollingTickerOptions {\n emitOnInit?: boolean = true\n}\n// tslint:enable:no-inferrable-types\n\n// TODO: Simplify complexity.\n\n/**\n * Call an action and emits the result to its subscriber on an interval or when\n * ticker emits. When the ticker emits, the interval time will reset.\n *\n * When subscribed to, the action will be called and emitted right away unless\n * the `emitOnInit` option is set to false.\n */\nexport function pollingTicker<R>(\n action: PollingActionFn<R>,\n pollingInterval?: number,\n ticker?: Observable<number | void>,\n options?: PollingTickerOptions\n): Observable<R> {\n return new Observable((subscriber: Subscriber<R>) => {\n const _opts = { ...(new PollingTickerOptions()), ...(options || {}) }\n\n let timer: IntervalTimer | null = null\n let actionSub: Subscription | null = null\n let tickerSub: Subscription | null = null\n\n try {\n const handleAction = () => {\n if (timer) { timer.stop() }\n\n const actionResult = action()\n\n if (isObservable(actionResult)) {\n if (actionSub) {\n actionSub.unsubscribe()\n }\n actionSub = actionResult.subscribe(\n (v: R) => { subscriber.next(v); if (timer) { timer.reset() } },\n err => { subscriber.error(err) },\n () => {\n actionSub = null\n if (timer) { timer.start() }\n }\n )\n } else {\n subscriber.next(actionResult)\n }\n if (timer) { timer.start() }\n }\n\n if (_opts.emitOnInit) {\n handleAction()\n }\n\n if (pollingInterval) {\n timer = new IntervalTimer(() => {\n handleAction()\n }, pollingInterval)\n }\n\n if (ticker) {\n tickerSub = ticker.subscribe(newPollingInterval => {\n if (newPollingInterval && timer) {\n timer.stop()\n if (newPollingInterval) {\n timer.intervalTime = newPollingInterval\n }\n }\n handleAction()\n if (timer) { timer.reset() }\n })\n }\n } catch (err) {\n subscriber.error(err)\n }\n\n return () => {\n if (timer) {\n timer.stop()\n }\n if (actionSub) {\n actionSub.unsubscribe()\n }\n if (tickerSub) {\n tickerSub.unsubscribe()\n }\n }\n })\n}\n","import { BehaviorSubject, isObservable, Observable, Subject } from 'rxjs'\nimport { distinctUntilChanged, mapTo, publishReplay, refCount, shareReplay, skip, take, tap } from 'rxjs/operators'\n\nimport { tapFirst } from './operators/tap-first'\nimport { pollingTicker } from './polling-ticker'\n\nexport class Refreshable<T> {\n\n private _initialized = false\n private _pollingInterval = new BehaviorSubject<number>(0)\n private _ticker = new Subject<void>()\n private _pending = new BehaviorSubject<boolean>(false)\n\n public data$: Observable<T>\n public pending$: Observable<boolean>\n\n constructor(\n action: () => (T | Observable<T>),\n pollingInterval?: number\n ) {\n if (pollingInterval !== null && pollingInterval !== undefined) {\n this._pollingInterval.next(pollingInterval)\n }\n\n this.pending$ = this._pending.asObservable()\n .pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n this.data$ = pollingTicker(this._actionHandler(action), pollingInterval, this._ticker)\n .pipe(\n tapFirst(() => this._initialized = true),\n publishReplay(),\n refCount()\n )\n }\n\n get initialized(): boolean { return this._initialized }\n\n /**\n * Intercepts the action call to monitor pending state\n */\n private _actionHandler = (action: () => (T | Observable<T>)) => {\n return () => {\n this._pending.next(true)\n\n const actionResult = action()\n if (isObservable(actionResult)) {\n return actionResult.pipe(tap(() => { this._pending.next(false) }))\n } else {\n this._pending.next(true)\n return actionResult\n }\n }\n }\n\n /**\n * Selects the data observable\n */\n public select(refresh?: boolean): Observable<T> {\n if (refresh && this._initialized && !this._pending.value) { this._ticker.next() }\n return this.data$\n }\n\n public refresh(): Observable<void> {\n let result$: Observable<any>\n\n if (this._initialized) {\n // TODO: Add a test and maybe refactor this to be more clear. It worked in\n // my manual tests, but there may be some situations where this doesn't\n // work, since the ticker isn't the only way to trigger a refresh. Right\n // now it should be fine, but if an async operator is added to be run\n // each time `data$` is subscribed to, then this could fail if the data\n // emits one extra time before the ticker is triggered.\n let _polled = false\n result$ = this.data$\n .pipe(\n tap(_ => !_polled && (_polled = true) && this._ticker.next()),\n skip(1)\n )\n } else {\n result$ = this.data$\n }\n\n return result$\n .pipe(\n take(1),\n mapTo(undefined)\n )\n }\n\n}\n","import { from, isObservable, Observable } from 'rxjs'\n\nexport function wrapIntoObservable<T>(value: T | Promise<T>| Observable<T>): Observable<T> {\n if (isObservable(value)) {\n return value\n }\n\n return from(Promise.resolve(value))\n}\n","\n/**\n * Explaination:\n * ^ - beginning of the string\n * (?: - beginning of a non-captured group\n * [a-z]+ - any character of 'a' to 'z' 1 or more times\n * : - string (colon character)\n * )? - end of the non-captured group. Group appearing 0 or 1 times\n * // - string (two forward slash characters)\n * 'i' - non case-sensitive flag\n *\n * source: https://stackoverflow.com/a/19709846\n */\nconst IS_ABSOLUTE_URL_REGEX = new RegExp('^(?:[a-z]+:)?//', 'i')\n\nexport function isAbsoluteUrl(url: string): boolean {\n return IS_ABSOLUTE_URL_REGEX.test(url)\n}\n","import { Observable, Subscriber } from 'rxjs'\n\nexport type SubscriberCountChangedFn = (description: string, count: number, reason: 'subscribed' | 'unsubscribed') => void\n\n/**\n * This is just for helping debug observables that aren't being unsubscribed\n * from correctly.\n *\n * If description is 'foo' then you can check the how many observers are\n * subscribed with the expression `__subscriberCounts['foo']`. In a debugger you\n * can add the expression to the \"Watch\" expressions or in Chrome Devtools\n * Console you can add it to the live expressions(Add live expressions by\n * clicking the eye the the left of the Console filter input).\n */\nexport function subscriberCount<T>(\n sourceObservable: Observable<T>,\n description: string,\n countChangedFn: SubscriberCountChangedFn | undefined | null = logOnChange\n) {\n let counter = 0\n return new Observable((subscriber: Subscriber<T>) => {\n const subscription = sourceObservable.subscribe(subscriber)\n counter++\n if (countChangedFn !== undefined && countChangedFn !== null) {\n countChangedFn(description, counter, 'subscribed')\n }\n setGlobalSubscriberCount(description, counter)\n\n return () => {\n subscription.unsubscribe()\n counter--\n if (countChangedFn !== undefined && countChangedFn !== null) {\n countChangedFn(description, counter, 'unsubscribed')\n }\n setGlobalSubscriberCount(description, counter)\n }\n })\n}\n\nconst logOnChange: SubscriberCountChangedFn = (description: string, count: number, reason: 'subscribed' | 'unsubscribed') => {\n // eslint-disable-next-line no-console\n console.log(`${description} subscriptions: ${count} [${reason}]`)\n}\n\nfunction getGlobalSubscriberCounts(): { [description: string]: number } {\n const w = window as any\n if (w.__subscriberCounts === undefined || w.__subscriberCounts === null) {\n w.__subscriberCounts = {}\n }\n return w.__subscriberCounts\n}\n\nfunction setGlobalSubscriberCount(description: string, count: number): void {\n getGlobalSubscriberCounts()[description] = count\n}\n","import { QueryList } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { map, startWith } from 'rxjs/operators'\n\nexport function observeQueryList<T>(queryList: QueryList<T>, emitCurrentValue = true): Observable<T[]> {\n return queryList.changes.pipe(\n startWith(queryList),\n map(v => v.toArray() as T[])\n )\n}\n","\nexport function createPadding(len: number, chars: string): string {\n // if (chars.length <= len) {\n // return chars\n // }\n\n if (chars.length === 0) {\n throw Error(`Padding characters must be at least 1 char length.`)\n }\n\n let str = chars\n while (str.length < len) {\n str += chars\n }\n\n if (str.length > len) {\n str = str.slice(0, len)\n }\n\n return str\n}\n","import { createPadding } from './create-padding'\n\nexport function padEnd(\n stringToPad: string,\n paddingLength: number | undefined = 0,\n paddingChars: string | undefined = ' '\n): string {\n const strLength = paddingLength ? stringToPad.length : 0\n\n if (!paddingLength || strLength >= paddingLength) {\n return stringToPad\n }\n\n return stringToPad + createPadding(paddingLength - strLength, paddingChars)\n}\n","import { createPadding } from './create-padding'\n\nexport function padStart(\n stringToPad: string,\n paddingLength: number | undefined = 0,\n paddingChars: string | undefined = ' '\n): string {\n const strLength = paddingLength ? stringToPad.length : 0\n\n if (!paddingLength || strLength >= paddingLength) {\n return stringToPad\n }\n\n return createPadding(paddingLength - strLength, paddingChars) + stringToPad\n}\n","export function isNumeric(value: any): boolean {\n return !isNaN(Number(value) - parseFloat(value))\n}\n","import { isNumeric } from './is-numeric'\n\n/**\n * Returns the number of fractional digits.\n *\n * NOTE: This is intended for input validation, so trailing 0's will be included\n * in the total. Also, localization is not considered, so '.' is assumed to be\n * the fractional separator.\n */\nexport function fractionalDigitsCount(value: string): number | null {\n if (!isNumeric(value)) {\n return null\n }\n\n const a = value.split('.')\n if (a.length !== 2) {\n return null\n }\n\n return a[1].length\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-utils.mjs","sources":["../../../projects/ui-common/utils/get-attribute.ts","../../../projects/ui-common/utils/has-attribute.ts","../../../projects/ui-common/utils/cdk/get-closest-widget-cdk-drag.ts","../../../projects/ui-common/utils/form/get-control-name.ts","../../../projects/ui-common/utils/form/get-control-path.ts","../../../projects/ui-common/utils/form/observe-control-value.ts","../../../projects/ui-common/utils/form/observe-control-is-different.ts","../../../projects/ui-common/utils/form/wait-on-non-pending-status.ts","../../../projects/ui-common/utils/form/observe-control-status.ts","../../../projects/ui-common/utils/form/observe-control-valid.ts","../../../projects/ui-common/utils/form/observe-control-value-change.ts","../../../projects/ui-common/utils/has-property.ts","../../../projects/ui-common/utils/form/has-required-control.ts","../../../projects/ui-common/utils/form/is-empty-input-value.ts","../../../projects/ui-common/utils/operators/map-each.ts","../../../projects/ui-common/utils/operators/tap-first.ts","../../../projects/ui-common/utils/router/leaf-child-route.ts","../../../projects/ui-common/utils/router/will-have-data-prop.ts","../../../projects/ui-common/utils/router/operators/activated-routes-with-data-property.ts","../../../projects/ui-common/utils/router/route-snapshot-path-relative.ts","../../../projects/ui-common/utils/router/route-snapshot-path-full.ts","../../../projects/ui-common/utils/router/is-empty-url-route.ts","../../../projects/ui-common/utils/geo-json/coerce-feature-collection.ts","../../../projects/ui-common/utils/geo-json/geo-json-to-area.ts","../../../projects/ui-common/utils/geo-json/is-feature-collection.validator.ts","../../../projects/ui-common/utils/geo-json/is-only-geometry-types.ts","../../../projects/ui-common/utils/geo-json/is-only-geometry-types.validator.ts","../../../projects/ui-common/utils/geo-json/merge-polygons.ts","../../../projects/ui-common/utils/not-null-or-undefined.ts","../../../projects/ui-common/utils/geo-json/min-max-points.validator.ts","../../../projects/ui-common/utils/geo-json/no-empty-feature-collection.validator.ts","../../../projects/ui-common/utils/geo-json/no-inner-rings.validator.ts","../../../projects/ui-common/utils/geo-json/no-kinks.validator.ts","../../../projects/ui-common/utils/file-utils.ts","../../../projects/ui-common/utils/obj-utils.ts","../../../projects/ui-common/utils/geo-json/read-geo-file.ts","../../../projects/ui-common/utils/geo-json/split-multi-polygons.ts","../../../projects/ui-common/utils/geo-json/close-polygons.ts","../../../projects/ui-common/utils/array-move.ts","../../../projects/ui-common/utils/calc-percentage.ts","../../../projects/ui-common/utils/toggle-attribute.ts","../../../projects/ui-common/utils/input-masks.ts","../../../projects/ui-common/utils/is-null-or-undefined.ts","../../../projects/ui-common/utils/is-null-or-undefined-or-empty.ts","../../../projects/ui-common/utils/load-style.ts","../../../projects/ui-common/utils/load-style-sheet.ts","../../../projects/ui-common/utils/not-null-or-undefined-or-empty.ts","../../../projects/ui-common/utils/wait-on-condition-async.ts","../../../projects/ui-common/utils/polling-ticker.ts","../../../projects/ui-common/utils/refreshable.ts","../../../projects/ui-common/utils/wrap-into-observable.ts","../../../projects/ui-common/utils/is-absolute-url.ts","../../../projects/ui-common/utils/subscriber-count.ts","../../../projects/ui-common/utils/observe-query-list.ts","../../../projects/ui-common/utils/create-padding.ts","../../../projects/ui-common/utils/pad-end.ts","../../../projects/ui-common/utils/pad-start.ts","../../../projects/ui-common/utils/is-numeric.ts","../../../projects/ui-common/utils/fractional-digits-count.ts","../../../projects/ui-common/utils/theseam-ui-common-utils.ts"],"sourcesContent":["/**\n *\n */\nexport function getAttribute<E extends HTMLElement>(element: E, name: string): string | null {\n return element.getAttribute(name)\n}\n","/**\n *\n */\nexport function hasAttribute<E extends HTMLElement>(element: E, name: string): boolean {\n return element.hasAttribute(name)\n}\n","import { CdkDrag } from '@angular/cdk/drag-drop'\nimport { ElementRef } from '@angular/core'\n\nimport { getAttribute } from '../get-attribute'\nimport { hasAttribute } from '../has-attribute'\n\n/**\n * Finds the closest CdkDrag to an element by looking at the DOM.\n * @param element Element relative to which to look for a cdkDrag.\n * @param openDialogs References to the currently available cdkDrag.\n */\nexport function getClosestWidgetCdkDrag(element: ElementRef<HTMLElement>, dragDirectives: CdkDrag<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement\n\n while (parent && !(parent.classList.contains('cdk-drag') && hasAttribute(parent, 'data-widget-id'))) {\n parent = parent.parentElement\n }\n\n const parentId = parent ? getAttribute(parent, 'data-widget-id') : null\n return parentId\n ? dragDirectives.find(drag => getAttribute(drag.getRootElement(), 'data-widget-id') === parentId)\n : null\n}\n","import { AbstractControl } from '@angular/forms'\n\n/**\n * Get the name of the control.\n *\n * Example:\n *\n * ```js\n * const group = new FormGroup({\n * name: new Control(),\n * age: new Control()\n * })\n *\n * for (const c of group.controls) {\n * console.log(getControlName(c))\n * }\n *\n * // Output:\n * // >> 'name'\n * // >> 'age'\n * ```\n */\nexport function getControlName(c: AbstractControl): string | null {\n if (!c.parent) { return null }\n // NOTE: Typed as 'any' because using string for array index is not valid for\n // array index type, but it works and we actually want the index as a string\n // anyway.\n const controls: any = c.parent.controls\n return Object.keys(controls).find(name => c === controls[name]) || null\n}\n","import { AbstractControl } from '@angular/forms'\n\nimport { getControlName } from './get-control-name'\n\n/**\n * Get the path to a control.\n *\n * The path is built by walking back the `parent` properties until `parent` is\n * `null`.\n *\n * Example:\n *\n * ```js\n * const group = new FormGroup({\n * name: new FormControl(),\n * address: new FormGroup({\n * city: new FormControl(),\n * state: new FormControl()\n * })\n * })\n *\n * const control = group.get('address.city')\n * console.log(getControlPath(control))\n *\n * // Output:\n * >> 'address.city'\n * ```\n *\n */\nexport function getControlPath(c: AbstractControl, path: string = ''): string | null {\n let _path = path\n _path = getControlName(c) + _path\n\n if (c.parent && getControlName(c.parent)) {\n _path = `.${_path}`\n return getControlPath(c.parent, _path)\n } else {\n return _path\n }\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { startWith, switchMap } from 'rxjs/operators'\n\n/**\n * Observe the value of a control.\n */\nexport function observeControlValue<T = any>(control: AbstractControl): Observable<T> {\n return of(control)\n .pipe(switchMap(_control => _control.valueChanges\n .pipe(startWith(_control.value))\n ))\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable } from 'rxjs'\nimport { distinctUntilChanged, map } from 'rxjs/operators'\n\nimport { observeControlValue } from './observe-control-value'\n\n/**\n * Observe the changed state of the input value from the time this function is\n * called.\n *\n * When this function is called the value is stored. Each time the control's\n * value changes the value is compared with the initial value. Currenly the\n * values are compared as stringified objects using `JSON.stringify`.\n *\n * TODO: Allow the value compare implementation to be optionally changed.\n */\nexport function observeControlIsDifferent(control: AbstractControl): Observable<boolean> {\n const _initial = JSON.stringify(control.value)\n return observeControlValue(control)\n .pipe(\n map(value => JSON.stringify(value) !== _initial),\n distinctUntilChanged(),\n )\n}\n","import { AbstractControl } from '@angular/forms'\nimport { interval, merge, Observable } from 'rxjs'\nimport { filter, map, mapTo, startWith, take } from 'rxjs/operators'\n\n/**\n * Wait on the status of a form control to not be `'PENDING'`.\n *\n * NOTE: This function is mainly just a work around for an issue where\n * `statusChanges` sometimes emits `'Pending'` without emitting another state\n * when complete. Seems to happen with async validators if the value changes\n * before completing, even if the validator completes(subscription `complete`\n * if observable).\n */\nexport function waitOnNonPendingStatus(control: AbstractControl): Observable<string> {\n return merge(\n control.statusChanges,\n interval(30).pipe(mapTo(control), map(c => c.status))\n )\n .pipe(startWith(control.status))\n .pipe(filter(v => v !== 'PENDING'))\n .pipe(take(1))\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable, of } from 'rxjs'\nimport { startWith, switchMap } from 'rxjs/operators'\n\nimport { waitOnNonPendingStatus } from './wait-on-non-pending-status'\n\n/**\n * Observe the status of a control using a work around for status not changing\n * after pending.\n */\nexport function observeControlStatus(control: AbstractControl): Observable<string> {\n return of(control)\n .pipe(switchMap(_control => _control.statusChanges\n .pipe(startWith(_control.status))\n .pipe(switchMap(status => status === 'PENDING'\n ? waitOnNonPendingStatus(control)\n .pipe(startWith(status))\n : of(status)\n ))\n ))\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable } from 'rxjs'\nimport { distinctUntilChanged, map, pairwise, startWith } from 'rxjs/operators'\n\nimport { observeControlStatus } from './observe-control-status'\n\n/**\n * Observe the valid state of a control.\n *\n * By default `waitOnPending` is false and the control states map to:\n * 'VALID' => true\n * 'INVALID' => false\n * 'PENDING' => false\n *\n * If `waitOnPending` is true the valid result when 'PENDING' remains the same\n * as it was before 'PENDING' until it is no longer 'PENDING'.\n */\nexport function observeControlValid(control: AbstractControl, waitOnPending: boolean = false): Observable<boolean> {\n if (waitOnPending) {\n return observeControlStatus(control)\n .pipe(distinctUntilChanged())\n .pipe(startWith(undefined))\n .pipe(pairwise())\n .pipe(map(v => ({ previous: v[0], current: v[1] })))\n .pipe(map(v => v.current === 'PENDING' ? v.previous : v.current))\n .pipe(map(status => status === 'VALID'))\n } else {\n return observeControlStatus(control)\n .pipe(distinctUntilChanged())\n .pipe(map(status => status === 'VALID'))\n }\n}\n","import { AbstractControl } from '@angular/forms'\nimport { Observable } from 'rxjs'\nimport { map, pairwise, startWith } from 'rxjs/operators'\n\nimport { observeControlValue } from './observe-control-value'\n\n/**\n * Observe the value of a control with the previous.\n */\nexport function observeControlValueChange(control: AbstractControl): Observable<{ previous: any, current: any }> {\n return observeControlValue(control)\n .pipe(\n startWith(undefined),\n pairwise(),\n map(v => ({ previous: v[0], current: v[1] }))\n )\n}\n","// Source: https://stackoverflow.com/a/59361497/7926298\nexport function hasProperty<T extends object, K extends keyof T>(\n style: T,\n prop: K\n// ): style is T & { [P in K]-?: Exclude<T[K], undefined> } {\n): style is T & Required<Record<K, Exclude<T[K], undefined>>> {\n return Object.prototype.hasOwnProperty.call(style, prop) && style[prop] !== undefined\n}\n","import { AbstractControl } from '@angular/forms'\n\nimport { hasProperty } from '../has-property'\n\n/**\n * Check if control has a required control.\n *\n * ----------------------------------------------------------------------------\n * NOTE: I am not sure about if this should be used or not.\n *\n * From my understanding this assumes that all the validators do not have some\n * unexpected side-effect from being called like this. It could be argued that\n * the validator is flawed and should be fixed if that is the case, but I am not\n * convinced that is correct yet.\n *\n * An example that I think is valid for this argument: A FormControl configured\n * to only check validators when a specific condition happens, because of a\n * reason that it has to do a long process. In that situation should this\n * function be smart enough to consider that or is it up to the validator to\n * consider this function possibly being used.\n *\n * This seems to assume the required validator will always be a synchronous\n * validator. That is a valid assumption if thinking about showing a required\n * state in the UI, but a FormControl does not neccessarily have to be used in\n * UI. So, I think it could be valid to have an async validator that uses the\n * name `required` for it error, but I do not have a good example, so I could be\n * wrong.\n * ----------------------------------------------------------------------------\n *\n * Source: https://gist.github.com/jsdevtom/5589af349a395b37e699b67417ef025b\n * @experimental\n * @ignore\n */\nexport function hasRequiredControl(abstractControl: AbstractControl): boolean {\n if (abstractControl.validator) {\n const validator = abstractControl.validator({}as AbstractControl)\n if (validator && validator.required) {\n return true\n }\n }\n\n const _abstractControl: any = abstractControl\n if (hasProperty(_abstractControl, 'controls')) {\n for (const controlName in _abstractControl.controls) {\n if (_abstractControl.controls[controlName]) {\n if (hasRequiredControl(_abstractControl.controls[controlName])) {\n return true\n }\n }\n }\n }\n\n return false\n}\n","// Source: https://github.com/angular/angular/blob/master/packages/forms/src/validators.ts#L16\nexport function isEmptyInputValue(value: any): boolean {\n // we don't check for string here so it also works with arrays\n return value == null || value.length === 0\n}\n","import { from, Observable } from 'rxjs'\nimport { map, switchMap, toArray } from 'rxjs/operators'\n\nexport function mapEach<T, R>(predicate: (value: T) => R) {\n return (source$: Observable<T[]>): Observable<R[]> =>\n source$.pipe(switchMap(v => from(v).pipe(map(m => predicate(m)), toArray())))\n}\n","import { Observable } from 'rxjs'\nimport { tap } from 'rxjs/operators'\n\n/**\n * Like tap, but only calls predicate on first emission.\n */\nexport function tapFirst<T>(predicate: (value: T) => void) {\n let _initialized = false\n return (source$: Observable<T>): Observable<T> =>\n source$.pipe(\n tap(v => {\n if (!_initialized) {\n predicate(v)\n _initialized = true\n }\n })\n )\n}\n","import { ActivatedRoute } from '@angular/router'\n\nexport function leafChildRoute(activatedRoute: ActivatedRoute): ActivatedRoute {\n let route = activatedRoute\n while (route.firstChild) { route = route.firstChild }\n return route\n}\n","import { ActivatedRoute } from '@angular/router'\n\nfunction hasRouteConfigDataProp(route: ActivatedRoute, prop: string): boolean {\n return !!(route && route.routeConfig && route.routeConfig.data && Object.prototype.hasOwnProperty.call(route.routeConfig.data, prop))\n}\n\nfunction hasRouteConfigResolveProp(route: ActivatedRoute, prop: string): boolean {\n return !!(route && route.routeConfig && route.routeConfig.resolve && Object.prototype.hasOwnProperty.call(route.routeConfig.resolve, prop))\n}\n\nexport function willHaveDataProp(route: ActivatedRoute, prop: string): boolean {\n return hasRouteConfigDataProp(route, prop) || hasRouteConfigResolveProp(route, prop)\n}\n","import { ActivatedRoute, Data } from '@angular/router'\nimport { combineLatest, Observable } from 'rxjs'\nimport { map, switchMap } from 'rxjs/operators'\n\nimport { leafChildRoute } from '../leaf-child-route'\nimport { willHaveDataProp } from '../will-have-data-prop'\n\nexport interface IActivatedRouteWithData {\n route: ActivatedRoute\n data: Data\n}\n\nexport function activatedRoutesWithDataProperty(prop: string, mustHaveDefined: boolean = false) {\n const _data = (r: ActivatedRoute) => r.data.pipe(map(_d => ({ route: r, data: _d })))\n return (source$: Observable<ActivatedRoute>): Observable<IActivatedRouteWithData[]> =>\n source$.pipe(\n map(route => leafChildRoute(route)),\n map(route => route.pathFromRoot),\n switchMap(routes => combineLatest(routes.map(r => _data(r)))),\n map(v => v.filter(_v => Object.prototype.hasOwnProperty.call(_v.data, prop))),\n map(v => mustHaveDefined\n ? v.filter(_v => willHaveDataProp(_v.route, prop))\n : v\n )\n )\n}\n","import { ActivatedRouteSnapshot } from '@angular/router'\n\nexport function routeSnapshotPathRelative(route: ActivatedRouteSnapshot) {\n return route.url.reduce((path, urlSegment) => `${path}/${urlSegment.path}`, '')\n}\n","import { ActivatedRouteSnapshot } from '@angular/router'\n\nimport { routeSnapshotPathRelative } from './route-snapshot-path-relative'\n\nexport function routeSnapshotPathFull(route: ActivatedRouteSnapshot) {\n return route.pathFromRoot.reduce((path, _route) => path + routeSnapshotPathRelative(_route), '')\n}\n","import { ActivatedRoute } from '@angular/router'\n\nexport function isEmptyUrlRoute(activatedRoute: ActivatedRoute): boolean {\n return activatedRoute.snapshot.url.length === 0\n}\n","import { FeatureCollection } from 'geojson'\r\n\r\n// TODO: Make this more thorough and maybe error on unrecognized.\r\nexport function coerceFeatureCollection(value: any): FeatureCollection | null {\r\n return parseValue(value)\r\n}\r\n\r\n/**\r\n * Parses the value to a FeatureCollection object or null if it is not a\r\n * FeatureCollection.\r\n */\r\nfunction parseValue(value: any): FeatureCollection | null {\r\n const _value = parseStringValue(value)\r\n if (isFeatureCollectionValue(_value)) {\r\n return _value\r\n }\r\n return null\r\n}\r\n\r\n/**\r\n * Tries to parse the value to an object, in case the value is a stringified\r\n * json.\r\n */\r\nfunction parseStringValue(value: any): any {\r\n if (typeof value === 'string') {\r\n try {\r\n return JSON.parse(value)\r\n } catch {\r\n return null\r\n }\r\n }\r\n\r\n return value\r\n}\r\n\r\n/**\r\n * Checks if the value is a FeatureCollection.\r\n *\r\n * NOTE: This is not a thorough FeatureCollection check. It only checks that the\r\n * value is an object resembling a GeoJSON.FeatureCollection, enough for the\r\n * validator.\r\n */\r\nfunction isFeatureCollectionValue(value: any): value is FeatureCollection {\r\n if (value === undefined || value === null) {\r\n return false\r\n }\r\n return value.type === 'FeatureCollection' && Array.isArray(value.features)\r\n}\r\n","import area from '@turf/area'\nimport { convertArea, Feature, FeatureCollection, Geometry, Properties, Units } from '@turf/helpers'\nimport { GeoJSON } from 'geojson'\n\n/**\n *\n */\nexport function geoJsonToArea(\n geoJson: GeoJSON | Feature<any, Properties> | FeatureCollection<any, Properties> | Geometry,\n units: Units = 'acres'\n): number {\n const areaMSqr = area(geoJson as any)\n const acres = convertArea(areaMSqr, 'meters', units)\n return acres\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\r\n\r\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\r\nimport { coerceFeatureCollection } from './coerce-feature-collection'\r\n\r\nexport const IS_FEATURE_COLLECTION_VALIDATOR_NAME = 'is-feature-collection'\r\n\r\nexport function isFeatureCollectionValidator(): ValidatorFn {\r\n return (control: AbstractControl) => {\r\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\r\n if (isEmptyInputValue(control.value)) {\r\n return null // don't validate empty values to allow optional controls\r\n }\r\n\r\n const value = coerceFeatureCollection(control.value)\r\n\r\n if (value === null) {\r\n return {\r\n [IS_FEATURE_COLLECTION_VALIDATOR_NAME]: {\r\n reason: `Must be a FeatureCollection.`,\r\n }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n}\r\n","import { FeatureCollection, Geometry } from 'geojson'\r\n\r\n/**\r\n * Returns true if the GeoJSON is only specifies geometries.\r\n */\r\nexport function isOnlyGeometryTypes(featureCollection: FeatureCollection, types: Geometry['type'][]): boolean {\r\n if (types.length === 0) {\r\n if (featureCollection.features.length > 0) {\r\n // If no types are specified then there can't be any specified types found.\r\n return false\r\n } else {\r\n // If no types are specified and there are no features then there is\r\n // nothing to say a specified type isn't found.\r\n return true\r\n }\r\n }\r\n\r\n for (const f of featureCollection.features) {\r\n if (types.indexOf(f.geometry.type) === -1) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { Geometry } from 'geojson'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\nimport { isOnlyGeometryTypes } from './is-only-geometry-types'\n\nexport const IS_ONLY_GEOMETRY_TYPES_VALIDATOR_NAME = 'is-only-geometry-types'\n\nexport function isOnlyGeometryTypesValidator(types: Geometry['type'][]): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n // If there isn't a FeatureCollection then there is nothing to validate.\n // Use 'isFeatureCollection' to validate the value is a FeatureCollection.\n return null\n }\n\n if (!isOnlyGeometryTypes(value, types)) {\n const typesNotAllowed = value.features\n .map(f => f.geometry.type)\n .filter(t => types.indexOf(t) === -1)\n const distinctTypesNotAllowed = Array.from(new Set(typesNotAllowed))\n return {\n [IS_ONLY_GEOMETRY_TYPES_VALIDATOR_NAME]: {\n reason: `Only geometry type${(types.length === 1 ? '' : 's')} ${types.join(', ')} allowed.`,\n notAllowedGeometryTypesFound: distinctTypesNotAllowed,\n }\n }\n }\n\n return null\n }\n}\n","import {\r\n Feature,\r\n FeatureCollection,\r\n MultiPolygon,\r\n} from 'geojson'\r\n\r\n/**\r\n * Merge Polygon and MultiPolygon geometries into a single MultiPolygon. Any\r\n * properties, other than 'coordinates', of the Polygons and MultiPolygons will\r\n * be lost.\r\n *\r\n * NOTE: Polygons and MultPolygons in a GeometryCollection will not be merged.\r\n */\r\nexport function mergePolygons(featureCollection: FeatureCollection): void {\r\n const multiPolygon: MultiPolygon = {\r\n type: 'MultiPolygon',\r\n coordinates: [],\r\n }\r\n\r\n for (let i = 0; i < featureCollection.features.length; i++) {\r\n const f = featureCollection.features[i]\r\n if (f.geometry.type === 'Polygon') {\r\n multiPolygon.coordinates.push(f.geometry.coordinates)\r\n featureCollection.features.splice(i, 1)\r\n i--\r\n } else if (f.geometry.type === 'MultiPolygon') {\r\n multiPolygon.coordinates.push(...f.geometry.coordinates)\r\n featureCollection.features.splice(i, 1)\r\n i--\r\n }\r\n }\r\n\r\n if (multiPolygon.coordinates.length > 0) {\r\n const feature: Feature = {\r\n type: 'Feature',\r\n geometry: multiPolygon,\r\n properties: { },\r\n }\r\n featureCollection.features.push(feature)\r\n }\r\n}\r\n","export function notNullOrUndefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { FeatureCollection } from 'geojson'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { notNullOrUndefined } from '../not-null-or-undefined'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nexport const MIN_MAX_POINTS_VALIDATOR_NAME = 'min-max-points'\n\nexport function minMaxPointsValidator(min: number | undefined = 3, max?: number | undefined): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n return null\n }\n\n if (collectionViolatesMinMax(value, min, max)) {\n const reason = notNullOrUndefined(max)\n ? `A polygon must have between ${min} and ${max} points.`\n : `A polygon must have at least ${min} points.`\n return {\n [MIN_MAX_POINTS_VALIDATOR_NAME]: {\n reason\n }\n }\n }\n return null\n }\n}\n\n/**\n * Checks if a FeatureCollection contains any geometries with an incomplete polygon.\n *\n * NOTE: Does not consider GeometryCollection.\n */\n function collectionViolatesMinMax(featureCollection: FeatureCollection, min: number, max: number | undefined): boolean {\n for (const f of featureCollection.features) {\n if (f.geometry.type === 'Polygon') {\n if (polygonViolatesMinMax(f.geometry.coordinates[0].length, min, max)) {\n return true\n }\n } else if (f.geometry.type === 'MultiPolygon') {\n for (const coords of f.geometry.coordinates) {\n if (polygonViolatesMinMax(coords[0].length, min, max)) {\n return true\n }\n }\n }\n }\n\n return false\n}\n\nfunction polygonViolatesMinMax(coordinateLength: number, min: number, max: number | undefined): boolean {\n if (coordinateLength < min || (notNullOrUndefined(max) && max > min && coordinateLength > max)) {\n return true\n }\n\n return false\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nexport const NO_EMPTY_FEATURE_COLLECTION_VALIDATOR_NAME = 'no-empty-feature-collection'\n\nexport function noEmptyFeatureCollectionValidator(): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n return null\n }\n\n if (value.features.length === 0) {\n return {\n [NO_EMPTY_FEATURE_COLLECTION_VALIDATOR_NAME]: {\n reason: `FeatureCollection must have a value.`,\n }\n }\n }\n\n return null\n }\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\r\n\r\nimport { FeatureCollection } from 'geojson'\r\n\r\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\r\nimport { coerceFeatureCollection } from './coerce-feature-collection'\r\n\r\nexport const NO_INNER_RINGS_VALIDATOR_NAME = 'no-inner-rings'\r\n\r\n/**\r\n * Validates that a FeatureCollection does not contain any Polygon with inner\r\n * rings(\"holes\").\r\n *\r\n * NOTE: Only considers Polygon and MultiPolygon. Does not consider\r\n * GeometryCollection.\r\n */\r\nexport function noInnerRingsValidator(): ValidatorFn {\r\n return (control: AbstractControl) => {\r\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\r\n if (isEmptyInputValue(control.value)) {\r\n return null // don't validate empty values to allow optional controls\r\n }\r\n\r\n const value = coerceFeatureCollection(control.value)\r\n\r\n if (value === null) {\r\n // If there isn't a FeatureCollection then there is nothing to validate.\r\n // Use 'isFeatureCollection' to validate the value is a FeatureCollection.\r\n return null\r\n }\r\n\r\n if (hasInnerRing(value)) {\r\n return {\r\n [NO_INNER_RINGS_VALIDATOR_NAME]: {\r\n reason: `A shape cannot have an inner ring.`\r\n }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * Checks if a FeatureCollection contains any geometries with an inner\r\n * ring(\"hole\").\r\n *\r\n * NOTE: Does not consider GeometryCollection.\r\n */\r\nfunction hasInnerRing(featureCollection: FeatureCollection): boolean {\r\n for (const f of featureCollection.features) {\r\n // The spec says the right-hand rule must be followed, but also specifies\r\n // that tools should not reject polygons that do not follow the right-hand\r\n // rule. It does specify that the first ring must be the exterior ring and\r\n // the others must be the interior. So, this should be safe to just check\r\n // if there are multiple rings, instead of checking their winding orders.\r\n //\r\n // Polygon spec: https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6\r\n if (f.geometry.type === 'Polygon') {\r\n if (f.geometry.coordinates.length > 1) {\r\n return true\r\n }\r\n } else if (f.geometry.type === 'MultiPolygon') {\r\n for (const coords of f.geometry.coordinates) {\r\n if (coords.length > 1) {\r\n return true\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms'\n\nimport kinks from '@turf/kinks'\nimport { Feature, FeatureCollection } from 'geojson'\n\nimport { isEmptyInputValue } from '../form/is-empty-input-value'\nimport { coerceFeatureCollection } from './coerce-feature-collection'\n\nconst kinkableGeometryTypes = [ 'LineString', 'MultiLineString', 'MultiPolygon', 'Polygon' ]\n\nexport const NO_KINKS_VALIDATOR_NAME = 'no-kinks'\n\nexport function noKinksValidator(): ValidatorFn {\n return (control: AbstractControl) => {\n // Don't need to validate if there isn't a value. Use `Validators.required` for that.\n if (isEmptyInputValue(control.value)) {\n return null // don't validate empty values to allow optional controls\n }\n\n const value = coerceFeatureCollection(control.value)\n\n if (value === null) {\n return null\n }\n\n const kinksFound: { feature: Feature, kinks: FeatureCollection }[] = []\n for (const f of value.features) {\n if (kinkableGeometryTypes.indexOf(f.geometry.type) !== -1) {\n const _kinks = kinks(f as any)\n if (_kinks.features.length > 0) {\n kinksFound.push({\n feature: f,\n kinks: _kinks,\n })\n }\n }\n }\n\n if (kinksFound.length > 0) {\n return {\n [NO_KINKS_VALIDATOR_NAME]: {\n reason: 'Paths should not intersect themselves.',\n featuresWithKink: kinksFound,\n }\n }\n }\n\n return null\n }\n}\n","import fileType from '@marklb/file-type'\nimport { Buffer } from 'buffer/'\n\nexport function readFileAsync(file: any): Promise<ArrayBuffer | null> {\n return new Promise<ArrayBuffer | null>((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => {\n resolve(reader.result as ArrayBuffer | null)\n }\n reader.readAsArrayBuffer(file)\n })\n}\n\nexport async function readFileAsDataUrlAsync(file: Blob): Promise<string | null> {\n return new Promise<string | null>((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => {\n resolve(reader.result as string | null)\n }\n reader.readAsDataURL(file)\n })\n}\n\nexport async function fileBufferToBlob(\n fileBuffer: Buffer,\n defaultMime: string = 'application/octet-stream'\n): Promise<Blob> {\n const fType = fileType(fileBuffer)\n const mime = (fType) ? fType.mime : defaultMime\n const blob = new Blob([fileBuffer as any], { type: mime })\n return blob\n}\n\nexport async function fileBufferToObjectUrl(\n fileBuffer: Buffer,\n defaultMime: string = 'application/octet-stream'\n): Promise<string> {\n const file = await fileBufferToBlob(fileBuffer, defaultMime)\n const fileURL = URL.createObjectURL(file)\n return fileURL\n}\n\nexport interface IFileData {\n ext?: string\n mime?: string\n blob: Blob\n}\n\nexport async function fileDataFromBuffer(\n fileBuffer: Buffer | Uint8Array | ArrayBuffer,\n defaultMime: string = 'application/octet-stream'\n): Promise<IFileData> {\n const _fileBuffer = Buffer.from(fileBuffer)\n const fType = fileType(_fileBuffer as any)\n const ext = (fType && fType.ext) || undefined\n const mime = fType ? fType.mime : defaultMime\n const blob = new Blob([_fileBuffer as any], { type: mime })\n const fileData: IFileData = { ext, mime, blob }\n return fileData\n}\n\nexport function openBlob(blob: Blob, target?: string, filename?: string) {\n const url = URL.createObjectURL(blob)\n const win = window.open(url, target)\n // TODO: Consider if always setting opener to null is to restrictive\n // if (win && target && target.toLowerCase() === '_blank') {\n // win.opener = null\n // }\n}\n","/** Returns object without property */\nexport function withoutProperty<T, K extends keyof T>(obj: T, propName: K): Pick<T, Exclude<keyof T, K>> {\n const { [propName]: _, ...without } = obj\n return without\n}\n\n/** Returns object without properties */\nexport function withoutProperties<T, K extends keyof T>(obj: T, propNames: K[]): Pick<T, Exclude<keyof T, K>> {\n let without: any = obj\n for (const propName of propNames) {\n without = withoutProperty(without, propName)\n }\n return without\n}\n\n/** Delete property of object */\nexport function deleteProperty<T extends object, K extends keyof T>(obj: T, propName: K): void {\n if (Object.prototype.hasOwnProperty.call(obj, propName)) {\n delete obj[propName]\n }\n}\n\n/** Delete properties of object */\nexport function deleteProperties<T extends object, K extends keyof T>(obj: T, propNames: K[]): void {\n for (const propName of propNames) {\n deleteProperty(obj, propName)\n }\n}\n","import { isDevMode } from '@angular/core'\n\nimport fileType from '@marklb/file-type'\nimport { FeatureCollection } from 'geojson'\nimport { Buffer } from 'buffer/'\nimport shp from 'shpjs'\n\nimport { readFileAsync } from '../file-utils'\nimport { withoutProperty } from '../obj-utils'\n\n/**\n * Reads a File, or buffer of file content, in GeoJSON or ESRI Shapefile format\n * and returns a GeoJSON `FeatureCollection`.\n */\nexport async function readGeoFile(fileOrBuffer: File | ArrayBuffer | Buffer): Promise<FeatureCollection> {\n const buffer = await coerceFileOrBufferToBuffer(fileOrBuffer)\n\n if (isShpFile(buffer)) {\n return parseShpFile(buffer)\n } else if (fileType(buffer)?.mime === 'application/zip') {\n try {\n return await parseShpZip(buffer)\n } catch (e: any) {\n // NOTE: If 'shpjs' updates or we switch to a fork, where it doesn't use\n // node buffers, then we can remove this rethrow.\n if (isDevMode()) {\n if (e.message === 'nodebuffer is not supported by this platform') {\n // eslint-disable-next-line no-console\n console.warn(\n 'Try adding Buffer polyfill.\\n' +\n 'Install: npm install buffer\\n' +\n 'Add `global.Buffer = global.Buffer || require(\\'buffer\\').Buffer` to \"src/polyfills.ts\"'\n )\n }\n }\n throw e\n }\n }\n\n return parseGeoJson(buffer)\n}\n\nasync function coerceFileOrBufferToBuffer(fileOrBuffer: File | ArrayBuffer | Buffer): Promise<Buffer> {\n if (fileOrBuffer instanceof File) {\n const arrBuf = await readFileAsync(fileOrBuffer)\n if (arrBuf === null) {\n throw new Error('Could not read file.')\n }\n return Buffer.from(arrBuf)\n }\n\n return Buffer.from(fileOrBuffer)\n}\n\n// NOTE: Our current version of file-type does not detect shp files. We can\n// remove this function when file-types is upgraded.\nfunction isShpFile(buffer: Buffer): boolean {\n const header = [ 0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]\n const offset = 2\n\n if (buffer.length < (header.length + offset)) {\n return false\n }\n\n for (let i = 0; i < header.length; i++) {\n if (header[i] !== buffer[i + offset]) {\n return false\n }\n }\n\n return true\n}\n\nasync function parseShpFile(buffer: Buffer): Promise<FeatureCollection> {\n const geometries = await shp.parseShp(buffer, undefined as any)\n const featCollection: FeatureCollection = {\n type: 'FeatureCollection',\n features: geometries.map(geom => ({\n type: 'Feature',\n geometry: geom,\n properties: { }\n }))\n }\n return featCollection\n}\n\nasync function parseShpZip(buffer: Buffer): Promise<FeatureCollection> {\n let featCollection = await shp.parseZip(buffer, undefined as any)\n if (Array.isArray(featCollection)) {\n if (featCollection.length === 0) {\n throw Error(`Shape data not found.`)\n } else if (featCollection.length > 1) {\n throw Error(`Multiple shape files not supported.`)\n }\n featCollection = featCollection[0]\n }\n return withoutProperty(featCollection, 'fileName')\n}\n\nfunction parseGeoJson(buffer: Buffer): FeatureCollection {\n const json = JSON.parse(buffer.toString())\n\n if (json?.type === 'FeatureCollection' && Array.isArray(json?.features)) {\n return json as FeatureCollection\n }\n\n throw Error(`Unable to parse as GeoJSON.`)\n}\n","import { Polygon } from '@turf/helpers'\r\nimport {\r\n Feature,\r\n FeatureCollection,\r\n MultiPolygon,\r\n} from 'geojson'\r\n\r\n/**\r\n * Split all MultiPolygon into Polygon. Any properties, other than\r\n * 'coordinates', of the MultiPolygons will be lost.\r\n *\r\n * NOTE: MultiPolygons in a GeometryCollection will not be split.\r\n */\r\nexport function splitMultiPolygons(featureCollection: FeatureCollection): void {\r\n for (let i = 0; i < featureCollection.features.length; i++) {\r\n if (featureCollection.features[i]) {\r\n const geometry = featureCollection.features[i].geometry\r\n if (geometry.type === 'MultiPolygon') {\r\n const features = splitMultPolygon(geometry).map(p => ({\r\n type: 'Feature',\r\n geometry: p,\r\n properties: { },\r\n } as Feature))\r\n featureCollection.features.splice(i, 1, ...features)\r\n i += Math.max(features.length - 1, 0)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction splitMultPolygon(multiPolygon: MultiPolygon): Polygon[] {\r\n return multiPolygon.coordinates.map(c => ({\r\n type: 'Polygon',\r\n coordinates: c,\r\n }))\r\n}\r\n","import { Feature, FeatureCollection, MultiPolygon, Polygon } from 'geojson'\n\n/**\n * Close all polygons in the GeoJSON.\n *\n * Google Maps requires that polygons be closed, but not all libraries have that\n * requirement. This may add redundent points to the GeoJSON, but it will ensure\n * that the GeoJSON is valid for Google Maps.\n */\nexport function closePolygons(geoJson: FeatureCollection | Feature | Polygon | MultiPolygon) {\n if (geoJson.type === 'FeatureCollection') {\n for (const f of geoJson.features) {\n closePolygonsFeature(f)\n }\n } else if (geoJson.type === 'Feature') {\n closePolygonsFeature(geoJson)\n }\n}\n\nfunction closePolygonsFeature(feature: Feature): void {\n if (feature.geometry.type === 'Polygon') {\n closePolygon(feature.geometry)\n } else if (feature.geometry.type === 'MultiPolygon') {\n closeMultiPolygon(feature.geometry)\n }\n}\n\nfunction closePolygon(polygon: Polygon): void {\n for (const c of polygon.coordinates) {\n c.push(c[0])\n }\n}\n\nfunction closeMultiPolygon(multiPolygon: MultiPolygon): void {\n for (const p of multiPolygon.coordinates) {\n for (const c of p) {\n c.push(c[0])\n }\n }\n}\n","// Based on source: https://github.com/sindresorhus/array-move/blob/main/index.js\n\n/**\n Moves the item to the new position in the input array. Useful for huge arrays\n where absolute performance is needed.\n\n @param array - The array to modify.\n @param fromIndex - The index of item to move. If negative, it will begin that\n many elements from the end.\n @param toIndex - The index of where to move the item. If negative, it will\n begin that many elements from the end.\n @example\n ```\n import { arrayMoveMutable } from '@theseam/ui-common/utils';\n\n const input = ['a', 'b', 'c'];\n arrayMoveMutable(input, 1, 2);\n console.log(input);\n //=> ['a', 'c', 'b']\n ```\n*/\nexport function arrayMoveMutable(\n array: unknown[],\n fromIndex: number,\n toIndex: number\n): void {\n const startIndex = fromIndex < 0 ? array.length + fromIndex : fromIndex\n\n if (startIndex >= 0 && startIndex < array.length) {\n const endIndex = toIndex < 0 ? array.length + toIndex : toIndex\n\n const [item] = array.splice(fromIndex, 1)\n array.splice(endIndex, 0, item)\n }\n}\n\n/**\n Clones the given `array`, moves the item to a new position in the new array,\n and then returns the new array. The given `array` is not mutated.\n\n @param array - The array with the item to move.\n @param fromIndex - The index of item to move. If negative, it will begin that\n many elements from the end.\n @param toIndex - The index of where to move the item. If negative, it will\n begin that many elements from the end.\n @returns A new array with the item moved to the new position.\n @example\n ```\n import { arrayMoveImmutable } from '@theseam/ui-common/utils';\n\n const input = ['a', 'b', 'c'];\n const array1 = arrayMoveImmutable(input, 1, 2);\n console.log(array1);\n //=> ['a', 'c', 'b']\n\n const array2 = arrayMoveImmutable(input, -1, 0);\n console.log(array2);\n //=> ['c', 'a', 'b']\n\n const array3 = arrayMoveImmutable(input, -2, -3);\n console.log(array3);\n //=> ['b', 'a', 'c']\n ```\n*/\nexport function arrayMoveImmutable<ValueType>(\n array: readonly ValueType[],\n fromIndex: number,\n toIndex: number\n): ValueType[] {\n const newArray = [ ...array ]\n arrayMoveMutable(newArray, fromIndex, toIndex)\n return newArray\n}\n","export function calcPercentage(total: number, n: number) {\n return total && total > 0 ? (n / total) * 100 : 0\n}\n","/**\n * Polyfil for `Element.toggleAttribute`\n *\n * Toggles a value without a value. Useful for attributes, such as `disabled`,\n * `readonly`, and `hidden`, that only needs to exist on the `Element` without\n * requiring a value.\n *\n * Most browsers natively support this feature, but IE, which we still try to\n * support for at least the main parts of the app, has \"Unknown\" support of this\n * feature. Until IE support is dropped this polyfil should be used to toggle an\n * attribute.\n *\n * Source:\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute#Polyfill\n */\nexport function toggleAttribute(element: HTMLElement, name: string, force: boolean): boolean {\n let _force = force\n if (_force !== void 0) { _force = !!_force }\n\n if (element.getAttribute(name) !== null) {\n if (_force) { return true }\n\n element.removeAttribute(name)\n return false\n } else {\n if (_force === false) { return false }\n\n element.setAttribute(name, '')\n return true\n }\n}\n","export const phoneNumberMask = ['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/]\n","export function isNullOrUndefined<T>(value: T | null | undefined): value is (null | undefined) {\n return value === undefined || value === null\n}\n","export function isNullOrUndefinedOrEmpty(value: string | null | undefined, trim: boolean = true): value is (string | null | undefined) {\n return value === undefined || value === null || (trim ? value.trim() : value).length === 0\n}\n","export function loadStyle(content: string): Promise<HTMLStyleElement> {\n return new Promise((resolve, reject) => {\n const s = document.createElement('style')\n s.onload = () => resolve(s)\n s.onerror = e => {\n document.head.removeChild(s)\n reject(e)\n }\n s.innerHTML = content\n document.head.appendChild(s)\n })\n}\n","export function loadStyleSheet(path: string): Promise<HTMLLinkElement> {\n return new Promise((resolve, reject) => {\n const s = document.createElement('link')\n s.onload = () => resolve(s)\n s.onerror = e => {\n document.head.removeChild(s)\n reject(e)\n }\n s.rel = 'stylesheet'\n s.href = path\n document.head.appendChild(s)\n })\n}\n","export function notNullOrUndefinedOrEmpty(value: string | null | undefined, trim: boolean = true): value is string {\n return value !== null && value !== undefined && (trim ? value.trim() : value).length > 0\n}\n","export async function waitOnConditionAsync(\n condition: () => boolean,\n timeoutDuration: number = -1,\n throwOnTimeout: boolean = true\n): Promise<any> {\n const timeStart: any = new Date()\n\n const _waitFunc = (callbackFn: (boolean: boolean) => any) => {\n let conditionSuccess = false\n\n if (condition()) {\n callbackFn(true)\n conditionSuccess = true\n }\n\n if (!conditionSuccess) {\n const timeNow: any = new Date()\n const duration = timeNow - timeStart\n if (timeoutDuration > -1 && duration > timeoutDuration) {\n if (throwOnTimeout) {\n throw new Error('Timed out waiting on condition.')\n } else {\n callbackFn(false)\n }\n }\n\n setTimeout(() => { _waitFunc(callbackFn) }, 30)\n }\n }\n\n return new Promise((resolve, reject) => {\n const fn = (b: boolean) => {\n resolve(b)\n }\n _waitFunc(fn)\n })\n}\n","import { isObservable, Observable, Subscriber, Subscription } from 'rxjs'\n\nclass IntervalTimer {\n\n private _intervalTime: number\n private _intervalId: number | null = null\n\n constructor(\n private _callback: () => void,\n intervalTime: number,\n startOnInit: boolean = true\n ) {\n this._intervalTime = intervalTime\n if (startOnInit) {\n this.start()\n }\n }\n\n set intervalTime(time: number) {\n this._intervalTime = time\n }\n\n public start(): void {\n if (this._intervalId === null) {\n this._intervalId = window.setInterval(() => {\n this._callback()\n }, this._intervalTime)\n }\n }\n\n public stop(): void {\n if (this._intervalId !== null) {\n clearInterval(this._intervalId)\n this._intervalId = null\n }\n }\n\n public reset(newIntervalTime?: number): void {\n if (newIntervalTime) {\n this.intervalTime = newIntervalTime\n }\n this.stop()\n this.start()\n }\n\n}\n\nexport type PollingActionFn<R> = () => R | Observable<R>\n\n// tslint:disable:no-inferrable-types\nexport class PollingTickerOptions {\n emitOnInit?: boolean = true\n}\n// tslint:enable:no-inferrable-types\n\n// TODO: Simplify complexity.\n\n/**\n * Call an action and emits the result to its subscriber on an interval or when\n * ticker emits. When the ticker emits, the interval time will reset.\n *\n * When subscribed to, the action will be called and emitted right away unless\n * the `emitOnInit` option is set to false.\n */\nexport function pollingTicker<R>(\n action: PollingActionFn<R>,\n pollingInterval?: number,\n ticker?: Observable<number | void>,\n options?: PollingTickerOptions\n): Observable<R> {\n return new Observable((subscriber: Subscriber<R>) => {\n const _opts = { ...(new PollingTickerOptions()), ...(options || {}) }\n\n let timer: IntervalTimer | null = null\n let actionSub: Subscription | null = null\n let tickerSub: Subscription | null = null\n\n try {\n const handleAction = () => {\n if (timer) { timer.stop() }\n\n const actionResult = action()\n\n if (isObservable(actionResult)) {\n if (actionSub) {\n actionSub.unsubscribe()\n }\n actionSub = actionResult.subscribe(\n (v: R) => { subscriber.next(v); if (timer) { timer.reset() } },\n err => { subscriber.error(err) },\n () => {\n actionSub = null\n if (timer) { timer.start() }\n }\n )\n } else {\n subscriber.next(actionResult)\n }\n if (timer) { timer.start() }\n }\n\n if (_opts.emitOnInit) {\n handleAction()\n }\n\n if (pollingInterval) {\n timer = new IntervalTimer(() => {\n handleAction()\n }, pollingInterval)\n }\n\n if (ticker) {\n tickerSub = ticker.subscribe(newPollingInterval => {\n if (newPollingInterval && timer) {\n timer.stop()\n if (newPollingInterval) {\n timer.intervalTime = newPollingInterval\n }\n }\n handleAction()\n if (timer) { timer.reset() }\n })\n }\n } catch (err) {\n subscriber.error(err)\n }\n\n return () => {\n if (timer) {\n timer.stop()\n }\n if (actionSub) {\n actionSub.unsubscribe()\n }\n if (tickerSub) {\n tickerSub.unsubscribe()\n }\n }\n })\n}\n","import { BehaviorSubject, isObservable, Observable, Subject } from 'rxjs'\nimport { distinctUntilChanged, mapTo, publishReplay, refCount, shareReplay, skip, take, tap } from 'rxjs/operators'\n\nimport { tapFirst } from './operators/tap-first'\nimport { pollingTicker } from './polling-ticker'\n\nexport class Refreshable<T> {\n\n private _initialized = false\n private _pollingInterval = new BehaviorSubject<number>(0)\n private _ticker = new Subject<void>()\n private _pending = new BehaviorSubject<boolean>(false)\n\n public data$: Observable<T>\n public pending$: Observable<boolean>\n\n constructor(\n action: () => (T | Observable<T>),\n pollingInterval?: number\n ) {\n if (pollingInterval !== null && pollingInterval !== undefined) {\n this._pollingInterval.next(pollingInterval)\n }\n\n this.pending$ = this._pending.asObservable()\n .pipe(\n distinctUntilChanged(),\n shareReplay(1)\n )\n\n this.data$ = pollingTicker(this._actionHandler(action), pollingInterval, this._ticker)\n .pipe(\n tapFirst(() => this._initialized = true),\n publishReplay(),\n refCount()\n )\n }\n\n get initialized(): boolean { return this._initialized }\n\n /**\n * Intercepts the action call to monitor pending state\n */\n private _actionHandler = (action: () => (T | Observable<T>)) => {\n return () => {\n this._pending.next(true)\n\n const actionResult = action()\n if (isObservable(actionResult)) {\n return actionResult.pipe(tap(() => { this._pending.next(false) }))\n } else {\n this._pending.next(true)\n return actionResult\n }\n }\n }\n\n /**\n * Selects the data observable\n */\n public select(refresh?: boolean): Observable<T> {\n if (refresh && this._initialized && !this._pending.value) { this._ticker.next() }\n return this.data$\n }\n\n public refresh(): Observable<void> {\n let result$: Observable<any>\n\n if (this._initialized) {\n // TODO: Add a test and maybe refactor this to be more clear. It worked in\n // my manual tests, but there may be some situations where this doesn't\n // work, since the ticker isn't the only way to trigger a refresh. Right\n // now it should be fine, but if an async operator is added to be run\n // each time `data$` is subscribed to, then this could fail if the data\n // emits one extra time before the ticker is triggered.\n let _polled = false\n result$ = this.data$\n .pipe(\n tap(_ => !_polled && (_polled = true) && this._ticker.next()),\n skip(1)\n )\n } else {\n result$ = this.data$\n }\n\n return result$\n .pipe(\n take(1),\n mapTo(undefined)\n )\n }\n\n}\n","import { from, isObservable, Observable } from 'rxjs'\n\nexport function wrapIntoObservable<T>(value: T | Promise<T>| Observable<T>): Observable<T> {\n if (isObservable(value)) {\n return value\n }\n\n return from(Promise.resolve(value))\n}\n","\n/**\n * Explaination:\n * ^ - beginning of the string\n * (?: - beginning of a non-captured group\n * [a-z]+ - any character of 'a' to 'z' 1 or more times\n * : - string (colon character)\n * )? - end of the non-captured group. Group appearing 0 or 1 times\n * // - string (two forward slash characters)\n * 'i' - non case-sensitive flag\n *\n * source: https://stackoverflow.com/a/19709846\n */\nconst IS_ABSOLUTE_URL_REGEX = new RegExp('^(?:[a-z]+:)?//', 'i')\n\nexport function isAbsoluteUrl(url: string): boolean {\n return IS_ABSOLUTE_URL_REGEX.test(url)\n}\n","import { Observable, Subscriber } from 'rxjs'\n\nexport type SubscriberCountChangedFn = (description: string, count: number, reason: 'subscribed' | 'unsubscribed') => void\n\n/**\n * This is just for helping debug observables that aren't being unsubscribed\n * from correctly.\n *\n * If description is 'foo' then you can check the how many observers are\n * subscribed with the expression `__subscriberCounts['foo']`. In a debugger you\n * can add the expression to the \"Watch\" expressions or in Chrome Devtools\n * Console you can add it to the live expressions(Add live expressions by\n * clicking the eye the the left of the Console filter input).\n */\nexport function subscriberCount<T>(\n sourceObservable: Observable<T>,\n description: string,\n countChangedFn: SubscriberCountChangedFn | undefined | null = logOnChange\n) {\n let counter = 0\n return new Observable((subscriber: Subscriber<T>) => {\n const subscription = sourceObservable.subscribe(subscriber)\n counter++\n if (countChangedFn !== undefined && countChangedFn !== null) {\n countChangedFn(description, counter, 'subscribed')\n }\n setGlobalSubscriberCount(description, counter)\n\n return () => {\n subscription.unsubscribe()\n counter--\n if (countChangedFn !== undefined && countChangedFn !== null) {\n countChangedFn(description, counter, 'unsubscribed')\n }\n setGlobalSubscriberCount(description, counter)\n }\n })\n}\n\nconst logOnChange: SubscriberCountChangedFn = (description: string, count: number, reason: 'subscribed' | 'unsubscribed') => {\n // eslint-disable-next-line no-console\n console.log(`${description} subscriptions: ${count} [${reason}]`)\n}\n\nfunction getGlobalSubscriberCounts(): { [description: string]: number } {\n const w = window as any\n if (w.__subscriberCounts === undefined || w.__subscriberCounts === null) {\n w.__subscriberCounts = {}\n }\n return w.__subscriberCounts\n}\n\nfunction setGlobalSubscriberCount(description: string, count: number): void {\n getGlobalSubscriberCounts()[description] = count\n}\n","import { QueryList } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { map, startWith } from 'rxjs/operators'\n\nexport function observeQueryList<T>(queryList: QueryList<T>, emitCurrentValue = true): Observable<T[]> {\n return queryList.changes.pipe(\n startWith(queryList),\n map(v => v.toArray() as T[])\n )\n}\n","\nexport function createPadding(len: number, chars: string): string {\n // if (chars.length <= len) {\n // return chars\n // }\n\n if (chars.length === 0) {\n throw Error(`Padding characters must be at least 1 char length.`)\n }\n\n let str = chars\n while (str.length < len) {\n str += chars\n }\n\n if (str.length > len) {\n str = str.slice(0, len)\n }\n\n return str\n}\n","import { createPadding } from './create-padding'\n\nexport function padEnd(\n stringToPad: string,\n paddingLength: number | undefined = 0,\n paddingChars: string | undefined = ' '\n): string {\n const strLength = paddingLength ? stringToPad.length : 0\n\n if (!paddingLength || strLength >= paddingLength) {\n return stringToPad\n }\n\n return stringToPad + createPadding(paddingLength - strLength, paddingChars)\n}\n","import { createPadding } from './create-padding'\n\nexport function padStart(\n stringToPad: string,\n paddingLength: number | undefined = 0,\n paddingChars: string | undefined = ' '\n): string {\n const strLength = paddingLength ? stringToPad.length : 0\n\n if (!paddingLength || strLength >= paddingLength) {\n return stringToPad\n }\n\n return createPadding(paddingLength - strLength, paddingChars) + stringToPad\n}\n","export function isNumeric(value: any): boolean {\n return !isNaN(Number(value) - parseFloat(value))\n}\n","import { isNumeric } from './is-numeric'\n\n/**\n * Returns the number of fractional digits.\n *\n * NOTE: This is intended for input validation, so trailing 0's will be included\n * in the total. Also, localization is not considered, so '.' is assumed to be\n * the fractional separator.\n */\nexport function fractionalDigitsCount(value: string): number | null {\n if (!isNumeric(value)) {\n return null\n }\n\n const a = value.split('.')\n if (a.length !== 2) {\n return null\n }\n\n return a[1].length\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -72,9 +72,9 @@ class TheSeamVerticalListFilterComponent {
72
72
  this.filterValue = undefined;
73
73
  }
74
74
  }
75
- TheSeamVerticalListFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamVerticalListFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
- TheSeamVerticalListFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TheSeamVerticalListFilterComponent, isStandalone: true, selector: "seam-vertical-list-filter", inputs: { showClearOption: "showClearOption", filterValue: "filterValue" }, host: { properties: { "attr.data-filter-value": "this._filterValueAttr" } }, ngImport: i0, template: "<div class=\"vertical-list-filter--list\">\n <ng-container *ngIf=\"showClearOption\">\n <span class=\"text-primary vertical-list-filter--clear\"\n [class.border-primary]=\"!filterValue || filterValue === ''\"\n (click)=\"clearFilter()\">\n <svg class=\"vertical-list-filter--clear-icon\" viewBox=\"0 0 110 301\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"54.5\" cy=\"118.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"148.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"178.5\" r=\"7.5\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L45.816 65.12H65.832L63.672 56.48C62.328 51.776 61.032 46.784 59.784 41.504C58.536 36.224 57.288 31.136 56.04 26.24H55.464C54.312 31.232 53.112 36.368 51.864 41.648C50.712 46.832 49.464 51.776 48.12 56.48ZM75.912 104L70.152 81.68H41.496L35.736 104H14.136L43.512 10.112H69L98.376 104H75.912Z\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L43.3124 55.1064C43.3043 55.1348 43.2964 55.1632 43.2888 55.1917L48.12 56.48ZM45.816 65.12L40.9848 63.8317C40.5846 65.3326 40.9047 66.9344 41.8511 68.1662C42.7974 69.398 44.2626 70.12 45.816 70.12V65.12ZM65.832 65.12V70.12C67.3717 70.12 68.8255 69.4106 69.773 68.1971C70.7206 66.9835 71.0561 65.401 70.6827 63.9073L65.832 65.12ZM63.672 56.48L68.5227 55.2673C68.5092 55.2134 68.4949 55.1598 68.4796 55.1064L63.672 56.48ZM59.784 41.504L64.6499 40.3539L64.6499 40.3539L59.784 41.504ZM56.04 26.24L60.8851 25.005C60.3205 22.7901 58.3258 21.24 56.04 21.24V26.24ZM55.464 26.24V21.24C53.1357 21.24 51.1156 22.847 50.592 25.1157L55.464 26.24ZM51.864 41.648L46.9981 40.4979C46.9929 40.5197 46.9879 40.5415 46.9831 40.5633L51.864 41.648ZM75.912 104L71.0706 105.249C71.6404 107.457 73.6318 109 75.912 109V104ZM70.152 81.68L74.9934 80.4306C74.4236 78.2227 72.4322 76.68 70.152 76.68V81.68ZM41.496 81.68V76.68C39.2158 76.68 37.2244 78.2227 36.6546 80.4306L41.496 81.68ZM35.736 104V109C38.0162 109 40.0076 107.457 40.5774 105.249L35.736 104ZM14.136 104L9.36412 102.507C8.88907 104.025 9.16491 105.679 10.107 106.961C11.0492 108.243 12.5451 109 14.136 109L14.136 104ZM43.512 10.112V5.112C41.3257 5.112 39.393 6.53242 38.7401 8.61896L43.512 10.112ZM69 10.112L73.7719 8.61896C73.119 6.53242 71.1863 5.112 69 5.112V10.112ZM98.376 104V109C99.9669 109 101.463 108.243 102.405 106.961C103.347 105.679 103.623 104.025 103.148 102.507L98.376 104ZM43.2888 55.1917L40.9848 63.8317L50.6472 66.4083L52.9512 57.7683L43.2888 55.1917ZM45.816 70.12H65.832V60.12H45.816V70.12ZM70.6827 63.9073L68.5227 55.2673L58.8213 57.6927L60.9813 66.3327L70.6827 63.9073ZM68.4796 55.1064C67.1589 50.4839 65.8821 45.5669 64.6499 40.3539L54.9181 42.6541C56.1819 48.0011 57.4971 53.0681 58.8644 57.8536L68.4796 55.1064ZM64.6499 40.3539C63.3957 35.0476 62.1408 29.9312 60.8851 25.005L51.1949 27.475C52.4352 32.3408 53.6763 37.4004 54.9181 42.6541L64.6499 40.3539ZM56.04 21.24H55.464V31.24H56.04V21.24ZM50.592 25.1157C49.4421 30.0986 48.2442 35.226 46.9981 40.4979L56.7299 42.7981C57.9798 37.51 59.1819 32.3654 60.336 27.3643L50.592 25.1157ZM46.9831 40.5633C45.8508 45.6584 44.6269 50.5056 43.3124 55.1064L52.9276 57.8536C54.3011 53.0464 55.5732 48.0056 56.7449 42.7326L46.9831 40.5633ZM80.7534 102.751L74.9934 80.4306L65.3106 82.9294L71.0706 105.249L80.7534 102.751ZM70.152 76.68H41.496V86.68H70.152V76.68ZM36.6546 80.4306L30.8946 102.751L40.5774 105.249L46.3374 82.9294L36.6546 80.4306ZM35.736 99H14.136V109H35.736V99ZM18.9079 105.493L48.2839 11.605L38.7401 8.61896L9.36412 102.507L18.9079 105.493ZM43.512 15.112H69V5.112H43.512V15.112ZM64.2281 11.605L93.6041 105.493L103.148 102.507L73.7719 8.61896L64.2281 11.605ZM98.376 99H75.912V109H98.376V99Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290V277.184L59.656 213.968H22.072V196.112H85.72V208.928L44.248 272.144H86.152V290H18.184Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290H13.184C13.184 292.761 15.4226 295 18.184 295V290ZM18.184 277.184L14.0034 274.441C13.4688 275.256 13.184 276.209 13.184 277.184H18.184ZM59.656 213.968L63.8366 216.711C64.8445 215.174 64.9286 213.209 64.0556 211.592C63.1827 209.976 61.4933 208.968 59.656 208.968V213.968ZM22.072 213.968H17.072C17.072 216.729 19.3106 218.968 22.072 218.968V213.968ZM22.072 196.112V191.112C19.3106 191.112 17.072 193.351 17.072 196.112H22.072ZM85.72 196.112H90.72C90.72 193.351 88.4814 191.112 85.72 191.112V196.112ZM85.72 208.928L89.9006 211.671C90.4352 210.856 90.72 209.903 90.72 208.928H85.72ZM44.248 272.144L40.0674 269.401C39.0595 270.938 38.9754 272.903 39.8484 274.52C40.7213 276.136 42.4107 277.144 44.248 277.144V272.144ZM86.152 272.144H91.152C91.152 269.383 88.9134 267.144 86.152 267.144V272.144ZM86.152 290V295C88.9134 295 91.152 292.761 91.152 290H86.152ZM23.184 290V277.184H13.184V290H23.184ZM22.3646 279.927L63.8366 216.711L55.4754 211.225L14.0034 274.441L22.3646 279.927ZM59.656 208.968H22.072V218.968H59.656V208.968ZM27.072 213.968V196.112H17.072V213.968H27.072ZM22.072 201.112H85.72V191.112H22.072V201.112ZM80.72 196.112V208.928H90.72V196.112H80.72ZM81.5394 206.185L40.0674 269.401L48.4287 274.887L89.9006 211.671L81.5394 206.185ZM44.248 277.144H86.152V267.144H44.248V277.144ZM81.152 272.144V290H91.152V272.144H81.152ZM86.152 285H18.184V295H86.152V285Z\" fill=\"currentColor\"/>\n </svg>\n </span>\n </ng-container>\n <span *ngFor=\"let c of _values\"\n class=\"vertical-list-filter--item text-primary\"\n [class.border-primary]=\"c === filterValue\"\n [attr.data-value]=\"c\"\n [attr.data-selected]=\"c === filterValue\"\n (click)=\"characterClick(c)\">{{ c }}</span>\n</div>\n", styles: [".vertical-list-filter--list{display:flex;flex-direction:column;text-align:center;align-content:center}.vertical-list-filter--icon{cursor:pointer}.vertical-list-filter--item{cursor:pointer;padding-left:3px;padding-right:3px;border:2px solid transparent}.vertical-list-filter--item.is-selected{border-color:var(--primary)}.vertical-list-filter--clear{cursor:pointer;padding-top:3px;border:2px solid transparent}.vertical-list-filter--clear-icon{width:.875em;display:inline-block;font-size:inherit;height:1.5em;overflow:visible;vertical-align:-.125em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TheSeamVerticalListFilterComponent, decorators: [{
75
+ TheSeamVerticalListFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamVerticalListFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
+ TheSeamVerticalListFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TheSeamVerticalListFilterComponent, isStandalone: true, selector: "seam-vertical-list-filter", inputs: { showClearOption: "showClearOption", filterValue: "filterValue" }, host: { properties: { "attr.data-filter-value": "this._filterValueAttr" } }, ngImport: i0, template: "<div class=\"vertical-list-filter--list\">\n <ng-container *ngIf=\"showClearOption\">\n <span class=\"text-primary vertical-list-filter--clear\"\n [class.border-primary]=\"!filterValue || filterValue === ''\"\n (click)=\"clearFilter()\">\n <svg class=\"vertical-list-filter--clear-icon\" viewBox=\"0 0 110 301\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"54.5\" cy=\"118.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"148.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"178.5\" r=\"7.5\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L45.816 65.12H65.832L63.672 56.48C62.328 51.776 61.032 46.784 59.784 41.504C58.536 36.224 57.288 31.136 56.04 26.24H55.464C54.312 31.232 53.112 36.368 51.864 41.648C50.712 46.832 49.464 51.776 48.12 56.48ZM75.912 104L70.152 81.68H41.496L35.736 104H14.136L43.512 10.112H69L98.376 104H75.912Z\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L43.3124 55.1064C43.3043 55.1348 43.2964 55.1632 43.2888 55.1917L48.12 56.48ZM45.816 65.12L40.9848 63.8317C40.5846 65.3326 40.9047 66.9344 41.8511 68.1662C42.7974 69.398 44.2626 70.12 45.816 70.12V65.12ZM65.832 65.12V70.12C67.3717 70.12 68.8255 69.4106 69.773 68.1971C70.7206 66.9835 71.0561 65.401 70.6827 63.9073L65.832 65.12ZM63.672 56.48L68.5227 55.2673C68.5092 55.2134 68.4949 55.1598 68.4796 55.1064L63.672 56.48ZM59.784 41.504L64.6499 40.3539L64.6499 40.3539L59.784 41.504ZM56.04 26.24L60.8851 25.005C60.3205 22.7901 58.3258 21.24 56.04 21.24V26.24ZM55.464 26.24V21.24C53.1357 21.24 51.1156 22.847 50.592 25.1157L55.464 26.24ZM51.864 41.648L46.9981 40.4979C46.9929 40.5197 46.9879 40.5415 46.9831 40.5633L51.864 41.648ZM75.912 104L71.0706 105.249C71.6404 107.457 73.6318 109 75.912 109V104ZM70.152 81.68L74.9934 80.4306C74.4236 78.2227 72.4322 76.68 70.152 76.68V81.68ZM41.496 81.68V76.68C39.2158 76.68 37.2244 78.2227 36.6546 80.4306L41.496 81.68ZM35.736 104V109C38.0162 109 40.0076 107.457 40.5774 105.249L35.736 104ZM14.136 104L9.36412 102.507C8.88907 104.025 9.16491 105.679 10.107 106.961C11.0492 108.243 12.5451 109 14.136 109L14.136 104ZM43.512 10.112V5.112C41.3257 5.112 39.393 6.53242 38.7401 8.61896L43.512 10.112ZM69 10.112L73.7719 8.61896C73.119 6.53242 71.1863 5.112 69 5.112V10.112ZM98.376 104V109C99.9669 109 101.463 108.243 102.405 106.961C103.347 105.679 103.623 104.025 103.148 102.507L98.376 104ZM43.2888 55.1917L40.9848 63.8317L50.6472 66.4083L52.9512 57.7683L43.2888 55.1917ZM45.816 70.12H65.832V60.12H45.816V70.12ZM70.6827 63.9073L68.5227 55.2673L58.8213 57.6927L60.9813 66.3327L70.6827 63.9073ZM68.4796 55.1064C67.1589 50.4839 65.8821 45.5669 64.6499 40.3539L54.9181 42.6541C56.1819 48.0011 57.4971 53.0681 58.8644 57.8536L68.4796 55.1064ZM64.6499 40.3539C63.3957 35.0476 62.1408 29.9312 60.8851 25.005L51.1949 27.475C52.4352 32.3408 53.6763 37.4004 54.9181 42.6541L64.6499 40.3539ZM56.04 21.24H55.464V31.24H56.04V21.24ZM50.592 25.1157C49.4421 30.0986 48.2442 35.226 46.9981 40.4979L56.7299 42.7981C57.9798 37.51 59.1819 32.3654 60.336 27.3643L50.592 25.1157ZM46.9831 40.5633C45.8508 45.6584 44.6269 50.5056 43.3124 55.1064L52.9276 57.8536C54.3011 53.0464 55.5732 48.0056 56.7449 42.7326L46.9831 40.5633ZM80.7534 102.751L74.9934 80.4306L65.3106 82.9294L71.0706 105.249L80.7534 102.751ZM70.152 76.68H41.496V86.68H70.152V76.68ZM36.6546 80.4306L30.8946 102.751L40.5774 105.249L46.3374 82.9294L36.6546 80.4306ZM35.736 99H14.136V109H35.736V99ZM18.9079 105.493L48.2839 11.605L38.7401 8.61896L9.36412 102.507L18.9079 105.493ZM43.512 15.112H69V5.112H43.512V15.112ZM64.2281 11.605L93.6041 105.493L103.148 102.507L73.7719 8.61896L64.2281 11.605ZM98.376 99H75.912V109H98.376V99Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290V277.184L59.656 213.968H22.072V196.112H85.72V208.928L44.248 272.144H86.152V290H18.184Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290H13.184C13.184 292.761 15.4226 295 18.184 295V290ZM18.184 277.184L14.0034 274.441C13.4688 275.256 13.184 276.209 13.184 277.184H18.184ZM59.656 213.968L63.8366 216.711C64.8445 215.174 64.9286 213.209 64.0556 211.592C63.1827 209.976 61.4933 208.968 59.656 208.968V213.968ZM22.072 213.968H17.072C17.072 216.729 19.3106 218.968 22.072 218.968V213.968ZM22.072 196.112V191.112C19.3106 191.112 17.072 193.351 17.072 196.112H22.072ZM85.72 196.112H90.72C90.72 193.351 88.4814 191.112 85.72 191.112V196.112ZM85.72 208.928L89.9006 211.671C90.4352 210.856 90.72 209.903 90.72 208.928H85.72ZM44.248 272.144L40.0674 269.401C39.0595 270.938 38.9754 272.903 39.8484 274.52C40.7213 276.136 42.4107 277.144 44.248 277.144V272.144ZM86.152 272.144H91.152C91.152 269.383 88.9134 267.144 86.152 267.144V272.144ZM86.152 290V295C88.9134 295 91.152 292.761 91.152 290H86.152ZM23.184 290V277.184H13.184V290H23.184ZM22.3646 279.927L63.8366 216.711L55.4754 211.225L14.0034 274.441L22.3646 279.927ZM59.656 208.968H22.072V218.968H59.656V208.968ZM27.072 213.968V196.112H17.072V213.968H27.072ZM22.072 201.112H85.72V191.112H22.072V201.112ZM80.72 196.112V208.928H90.72V196.112H80.72ZM81.5394 206.185L40.0674 269.401L48.4287 274.887L89.9006 211.671L81.5394 206.185ZM44.248 277.144H86.152V267.144H44.248V277.144ZM81.152 272.144V290H91.152V272.144H81.152ZM86.152 285H18.184V295H86.152V285Z\" fill=\"currentColor\"/>\n </svg>\n </span>\n </ng-container>\n <span *ngFor=\"let c of _values\"\n class=\"vertical-list-filter--item text-primary\"\n [class.border-primary]=\"c === filterValue\"\n [attr.data-value]=\"c\"\n [attr.data-selected]=\"c === filterValue\"\n (click)=\"characterClick(c)\">{{ c }}</span>\n</div>\n", styles: [".vertical-list-filter--list{display:flex;flex-direction:column;text-align:center;align-content:center}.vertical-list-filter--icon{cursor:pointer}.vertical-list-filter--item{cursor:pointer;padding-left:3px;padding-right:3px;border:2px solid transparent}.vertical-list-filter--item.is-selected{border-color:var(--primary)}.vertical-list-filter--clear{cursor:pointer;padding-top:3px;border:2px solid transparent}.vertical-list-filter--clear-icon{width:.875em;display:inline-block;font-size:inherit;height:1.5em;overflow:visible;vertical-align:-.125em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TheSeamVerticalListFilterComponent, decorators: [{
78
78
  type: Component,
79
79
  args: [{ selector: 'seam-vertical-list-filter', standalone: true, imports: [
80
80
  CommonModule,
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-vertical-list-filter.mjs","sources":["../../../projects/ui-common/vertical-list-filter/testing/vertical-list-filter.harness.ts","../../../projects/ui-common/vertical-list-filter/vertical-list-filter.component.ts","../../../projects/ui-common/vertical-list-filter/vertical-list-filter.component.html","../../../projects/ui-common/vertical-list-filter/theseam-ui-common-vertical-list-filter.ts"],"sourcesContent":["import { ComponentHarness } from '@angular/cdk/testing'\n\nexport class TheSeamVerticalListFilterHarness extends ComponentHarness {\n static hostSelector = 'seam-vertical-list-filter'\n\n _clearOptionElement = this.locatorForOptional(`.vertical-list-filter--clear`)\n\n public async clickValue(value: string) {\n const element = await this.locatorFor(`.vertical-list-filter--item[data-value=\"${value}\"]`)()\n return element.click()\n }\n\n public async filterValue(): Promise<string | undefined> {\n const filterValue = await (await this.host()).getAttribute('data-filter-value')\n return filterValue ?? undefined\n }\n\n public async hasClearOption(): Promise<boolean> {\n const element = await this._clearOptionElement()\n return element !== null\n }\n\n public async clearFilter() {\n const element = await this._clearOptionElement()\n if (!element) {\n throw new Error('No clear option found.')\n }\n return element.click()\n }\n\n}\n","import { Component, Input, HostBinding } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { BehaviorSubject, Observable } from 'rxjs'\n\nexport const FILTER_VALUES: string[] = [\n 'A', 'B', 'C', 'D',\n 'E', 'F', 'G', 'H',\n 'I', 'J', 'K', 'L',\n 'M', 'N', 'O', 'P',\n 'Q', 'R', 'S', 'T',\n 'U', 'V', 'W', 'X',\n 'Y', 'Z'\n]\n\n@Component({\n selector: 'seam-vertical-list-filter',\n templateUrl: './vertical-list-filter.component.html',\n styleUrls: ['./vertical-list-filter.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n ]\n})\nexport class TheSeamVerticalListFilterComponent {\n\n readonly _values = FILTER_VALUES\n\n @Input() showClearOption = true\n\n @Input()\n get filterValue(): string | undefined { return this._filterValue.value }\n set filterValue(value: string | undefined) { this._filterValue.next(value) }\n private readonly _filterValue = new BehaviorSubject<string | undefined>(undefined)\n public readonly filterValue$: Observable<string | undefined>\n\n @HostBinding('attr.data-filter-value')\n get _filterValueAttr(): string | undefined { return this.filterValue }\n\n constructor() {\n this.filterValue$ = this._filterValue.asObservable()\n }\n\n characterClick(character: string) {\n if (this.filterValue === character) {\n this.filterValue = undefined\n } else {\n this.filterValue = character\n }\n }\n\n clearFilter() {\n this.filterValue = undefined\n }\n\n}\n","<div class=\"vertical-list-filter--list\">\n <ng-container *ngIf=\"showClearOption\">\n <span class=\"text-primary vertical-list-filter--clear\"\n [class.border-primary]=\"!filterValue || filterValue === ''\"\n (click)=\"clearFilter()\">\n <svg class=\"vertical-list-filter--clear-icon\" viewBox=\"0 0 110 301\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"54.5\" cy=\"118.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"148.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"178.5\" r=\"7.5\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L45.816 65.12H65.832L63.672 56.48C62.328 51.776 61.032 46.784 59.784 41.504C58.536 36.224 57.288 31.136 56.04 26.24H55.464C54.312 31.232 53.112 36.368 51.864 41.648C50.712 46.832 49.464 51.776 48.12 56.48ZM75.912 104L70.152 81.68H41.496L35.736 104H14.136L43.512 10.112H69L98.376 104H75.912Z\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L43.3124 55.1064C43.3043 55.1348 43.2964 55.1632 43.2888 55.1917L48.12 56.48ZM45.816 65.12L40.9848 63.8317C40.5846 65.3326 40.9047 66.9344 41.8511 68.1662C42.7974 69.398 44.2626 70.12 45.816 70.12V65.12ZM65.832 65.12V70.12C67.3717 70.12 68.8255 69.4106 69.773 68.1971C70.7206 66.9835 71.0561 65.401 70.6827 63.9073L65.832 65.12ZM63.672 56.48L68.5227 55.2673C68.5092 55.2134 68.4949 55.1598 68.4796 55.1064L63.672 56.48ZM59.784 41.504L64.6499 40.3539L64.6499 40.3539L59.784 41.504ZM56.04 26.24L60.8851 25.005C60.3205 22.7901 58.3258 21.24 56.04 21.24V26.24ZM55.464 26.24V21.24C53.1357 21.24 51.1156 22.847 50.592 25.1157L55.464 26.24ZM51.864 41.648L46.9981 40.4979C46.9929 40.5197 46.9879 40.5415 46.9831 40.5633L51.864 41.648ZM75.912 104L71.0706 105.249C71.6404 107.457 73.6318 109 75.912 109V104ZM70.152 81.68L74.9934 80.4306C74.4236 78.2227 72.4322 76.68 70.152 76.68V81.68ZM41.496 81.68V76.68C39.2158 76.68 37.2244 78.2227 36.6546 80.4306L41.496 81.68ZM35.736 104V109C38.0162 109 40.0076 107.457 40.5774 105.249L35.736 104ZM14.136 104L9.36412 102.507C8.88907 104.025 9.16491 105.679 10.107 106.961C11.0492 108.243 12.5451 109 14.136 109L14.136 104ZM43.512 10.112V5.112C41.3257 5.112 39.393 6.53242 38.7401 8.61896L43.512 10.112ZM69 10.112L73.7719 8.61896C73.119 6.53242 71.1863 5.112 69 5.112V10.112ZM98.376 104V109C99.9669 109 101.463 108.243 102.405 106.961C103.347 105.679 103.623 104.025 103.148 102.507L98.376 104ZM43.2888 55.1917L40.9848 63.8317L50.6472 66.4083L52.9512 57.7683L43.2888 55.1917ZM45.816 70.12H65.832V60.12H45.816V70.12ZM70.6827 63.9073L68.5227 55.2673L58.8213 57.6927L60.9813 66.3327L70.6827 63.9073ZM68.4796 55.1064C67.1589 50.4839 65.8821 45.5669 64.6499 40.3539L54.9181 42.6541C56.1819 48.0011 57.4971 53.0681 58.8644 57.8536L68.4796 55.1064ZM64.6499 40.3539C63.3957 35.0476 62.1408 29.9312 60.8851 25.005L51.1949 27.475C52.4352 32.3408 53.6763 37.4004 54.9181 42.6541L64.6499 40.3539ZM56.04 21.24H55.464V31.24H56.04V21.24ZM50.592 25.1157C49.4421 30.0986 48.2442 35.226 46.9981 40.4979L56.7299 42.7981C57.9798 37.51 59.1819 32.3654 60.336 27.3643L50.592 25.1157ZM46.9831 40.5633C45.8508 45.6584 44.6269 50.5056 43.3124 55.1064L52.9276 57.8536C54.3011 53.0464 55.5732 48.0056 56.7449 42.7326L46.9831 40.5633ZM80.7534 102.751L74.9934 80.4306L65.3106 82.9294L71.0706 105.249L80.7534 102.751ZM70.152 76.68H41.496V86.68H70.152V76.68ZM36.6546 80.4306L30.8946 102.751L40.5774 105.249L46.3374 82.9294L36.6546 80.4306ZM35.736 99H14.136V109H35.736V99ZM18.9079 105.493L48.2839 11.605L38.7401 8.61896L9.36412 102.507L18.9079 105.493ZM43.512 15.112H69V5.112H43.512V15.112ZM64.2281 11.605L93.6041 105.493L103.148 102.507L73.7719 8.61896L64.2281 11.605ZM98.376 99H75.912V109H98.376V99Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290V277.184L59.656 213.968H22.072V196.112H85.72V208.928L44.248 272.144H86.152V290H18.184Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290H13.184C13.184 292.761 15.4226 295 18.184 295V290ZM18.184 277.184L14.0034 274.441C13.4688 275.256 13.184 276.209 13.184 277.184H18.184ZM59.656 213.968L63.8366 216.711C64.8445 215.174 64.9286 213.209 64.0556 211.592C63.1827 209.976 61.4933 208.968 59.656 208.968V213.968ZM22.072 213.968H17.072C17.072 216.729 19.3106 218.968 22.072 218.968V213.968ZM22.072 196.112V191.112C19.3106 191.112 17.072 193.351 17.072 196.112H22.072ZM85.72 196.112H90.72C90.72 193.351 88.4814 191.112 85.72 191.112V196.112ZM85.72 208.928L89.9006 211.671C90.4352 210.856 90.72 209.903 90.72 208.928H85.72ZM44.248 272.144L40.0674 269.401C39.0595 270.938 38.9754 272.903 39.8484 274.52C40.7213 276.136 42.4107 277.144 44.248 277.144V272.144ZM86.152 272.144H91.152C91.152 269.383 88.9134 267.144 86.152 267.144V272.144ZM86.152 290V295C88.9134 295 91.152 292.761 91.152 290H86.152ZM23.184 290V277.184H13.184V290H23.184ZM22.3646 279.927L63.8366 216.711L55.4754 211.225L14.0034 274.441L22.3646 279.927ZM59.656 208.968H22.072V218.968H59.656V208.968ZM27.072 213.968V196.112H17.072V213.968H27.072ZM22.072 201.112H85.72V191.112H22.072V201.112ZM80.72 196.112V208.928H90.72V196.112H80.72ZM81.5394 206.185L40.0674 269.401L48.4287 274.887L89.9006 211.671L81.5394 206.185ZM44.248 277.144H86.152V267.144H44.248V277.144ZM81.152 272.144V290H91.152V272.144H81.152ZM86.152 285H18.184V295H86.152V285Z\" fill=\"currentColor\"/>\n </svg>\n </span>\n </ng-container>\n <span *ngFor=\"let c of _values\"\n class=\"vertical-list-filter--item text-primary\"\n [class.border-primary]=\"c === filterValue\"\n [attr.data-value]=\"c\"\n [attr.data-selected]=\"c === filterValue\"\n (click)=\"characterClick(c)\">{{ c }}</span>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-vertical-list-filter.mjs","sources":["../../../projects/ui-common/vertical-list-filter/testing/vertical-list-filter.harness.ts","../../../projects/ui-common/vertical-list-filter/vertical-list-filter.component.ts","../../../projects/ui-common/vertical-list-filter/vertical-list-filter.component.html","../../../projects/ui-common/vertical-list-filter/theseam-ui-common-vertical-list-filter.ts"],"sourcesContent":["import { ComponentHarness } from '@angular/cdk/testing'\n\nexport class TheSeamVerticalListFilterHarness extends ComponentHarness {\n static hostSelector = 'seam-vertical-list-filter'\n\n _clearOptionElement = this.locatorForOptional(`.vertical-list-filter--clear`)\n\n public async clickValue(value: string) {\n const element = await this.locatorFor(`.vertical-list-filter--item[data-value=\"${value}\"]`)()\n return element.click()\n }\n\n public async filterValue(): Promise<string | undefined> {\n const filterValue = await (await this.host()).getAttribute('data-filter-value')\n return filterValue ?? undefined\n }\n\n public async hasClearOption(): Promise<boolean> {\n const element = await this._clearOptionElement()\n return element !== null\n }\n\n public async clearFilter() {\n const element = await this._clearOptionElement()\n if (!element) {\n throw new Error('No clear option found.')\n }\n return element.click()\n }\n\n}\n","import { Component, Input, HostBinding } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { BehaviorSubject, Observable } from 'rxjs'\n\nexport const FILTER_VALUES: string[] = [\n 'A', 'B', 'C', 'D',\n 'E', 'F', 'G', 'H',\n 'I', 'J', 'K', 'L',\n 'M', 'N', 'O', 'P',\n 'Q', 'R', 'S', 'T',\n 'U', 'V', 'W', 'X',\n 'Y', 'Z'\n]\n\n@Component({\n selector: 'seam-vertical-list-filter',\n templateUrl: './vertical-list-filter.component.html',\n styleUrls: ['./vertical-list-filter.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n ]\n})\nexport class TheSeamVerticalListFilterComponent {\n\n readonly _values = FILTER_VALUES\n\n @Input() showClearOption = true\n\n @Input()\n get filterValue(): string | undefined { return this._filterValue.value }\n set filterValue(value: string | undefined) { this._filterValue.next(value) }\n private readonly _filterValue = new BehaviorSubject<string | undefined>(undefined)\n public readonly filterValue$: Observable<string | undefined>\n\n @HostBinding('attr.data-filter-value')\n get _filterValueAttr(): string | undefined { return this.filterValue }\n\n constructor() {\n this.filterValue$ = this._filterValue.asObservable()\n }\n\n characterClick(character: string) {\n if (this.filterValue === character) {\n this.filterValue = undefined\n } else {\n this.filterValue = character\n }\n }\n\n clearFilter() {\n this.filterValue = undefined\n }\n\n}\n","<div class=\"vertical-list-filter--list\">\n <ng-container *ngIf=\"showClearOption\">\n <span class=\"text-primary vertical-list-filter--clear\"\n [class.border-primary]=\"!filterValue || filterValue === ''\"\n (click)=\"clearFilter()\">\n <svg class=\"vertical-list-filter--clear-icon\" viewBox=\"0 0 110 301\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"54.5\" cy=\"118.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"148.5\" r=\"7.5\" fill=\"currentColor\"/>\n <circle cx=\"54.5\" cy=\"178.5\" r=\"7.5\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L45.816 65.12H65.832L63.672 56.48C62.328 51.776 61.032 46.784 59.784 41.504C58.536 36.224 57.288 31.136 56.04 26.24H55.464C54.312 31.232 53.112 36.368 51.864 41.648C50.712 46.832 49.464 51.776 48.12 56.48ZM75.912 104L70.152 81.68H41.496L35.736 104H14.136L43.512 10.112H69L98.376 104H75.912Z\" fill=\"currentColor\"/>\n <path d=\"M48.12 56.48L43.3124 55.1064C43.3043 55.1348 43.2964 55.1632 43.2888 55.1917L48.12 56.48ZM45.816 65.12L40.9848 63.8317C40.5846 65.3326 40.9047 66.9344 41.8511 68.1662C42.7974 69.398 44.2626 70.12 45.816 70.12V65.12ZM65.832 65.12V70.12C67.3717 70.12 68.8255 69.4106 69.773 68.1971C70.7206 66.9835 71.0561 65.401 70.6827 63.9073L65.832 65.12ZM63.672 56.48L68.5227 55.2673C68.5092 55.2134 68.4949 55.1598 68.4796 55.1064L63.672 56.48ZM59.784 41.504L64.6499 40.3539L64.6499 40.3539L59.784 41.504ZM56.04 26.24L60.8851 25.005C60.3205 22.7901 58.3258 21.24 56.04 21.24V26.24ZM55.464 26.24V21.24C53.1357 21.24 51.1156 22.847 50.592 25.1157L55.464 26.24ZM51.864 41.648L46.9981 40.4979C46.9929 40.5197 46.9879 40.5415 46.9831 40.5633L51.864 41.648ZM75.912 104L71.0706 105.249C71.6404 107.457 73.6318 109 75.912 109V104ZM70.152 81.68L74.9934 80.4306C74.4236 78.2227 72.4322 76.68 70.152 76.68V81.68ZM41.496 81.68V76.68C39.2158 76.68 37.2244 78.2227 36.6546 80.4306L41.496 81.68ZM35.736 104V109C38.0162 109 40.0076 107.457 40.5774 105.249L35.736 104ZM14.136 104L9.36412 102.507C8.88907 104.025 9.16491 105.679 10.107 106.961C11.0492 108.243 12.5451 109 14.136 109L14.136 104ZM43.512 10.112V5.112C41.3257 5.112 39.393 6.53242 38.7401 8.61896L43.512 10.112ZM69 10.112L73.7719 8.61896C73.119 6.53242 71.1863 5.112 69 5.112V10.112ZM98.376 104V109C99.9669 109 101.463 108.243 102.405 106.961C103.347 105.679 103.623 104.025 103.148 102.507L98.376 104ZM43.2888 55.1917L40.9848 63.8317L50.6472 66.4083L52.9512 57.7683L43.2888 55.1917ZM45.816 70.12H65.832V60.12H45.816V70.12ZM70.6827 63.9073L68.5227 55.2673L58.8213 57.6927L60.9813 66.3327L70.6827 63.9073ZM68.4796 55.1064C67.1589 50.4839 65.8821 45.5669 64.6499 40.3539L54.9181 42.6541C56.1819 48.0011 57.4971 53.0681 58.8644 57.8536L68.4796 55.1064ZM64.6499 40.3539C63.3957 35.0476 62.1408 29.9312 60.8851 25.005L51.1949 27.475C52.4352 32.3408 53.6763 37.4004 54.9181 42.6541L64.6499 40.3539ZM56.04 21.24H55.464V31.24H56.04V21.24ZM50.592 25.1157C49.4421 30.0986 48.2442 35.226 46.9981 40.4979L56.7299 42.7981C57.9798 37.51 59.1819 32.3654 60.336 27.3643L50.592 25.1157ZM46.9831 40.5633C45.8508 45.6584 44.6269 50.5056 43.3124 55.1064L52.9276 57.8536C54.3011 53.0464 55.5732 48.0056 56.7449 42.7326L46.9831 40.5633ZM80.7534 102.751L74.9934 80.4306L65.3106 82.9294L71.0706 105.249L80.7534 102.751ZM70.152 76.68H41.496V86.68H70.152V76.68ZM36.6546 80.4306L30.8946 102.751L40.5774 105.249L46.3374 82.9294L36.6546 80.4306ZM35.736 99H14.136V109H35.736V99ZM18.9079 105.493L48.2839 11.605L38.7401 8.61896L9.36412 102.507L18.9079 105.493ZM43.512 15.112H69V5.112H43.512V15.112ZM64.2281 11.605L93.6041 105.493L103.148 102.507L73.7719 8.61896L64.2281 11.605ZM98.376 99H75.912V109H98.376V99Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290V277.184L59.656 213.968H22.072V196.112H85.72V208.928L44.248 272.144H86.152V290H18.184Z\" fill=\"currentColor\"/>\n <path d=\"M18.184 290H13.184C13.184 292.761 15.4226 295 18.184 295V290ZM18.184 277.184L14.0034 274.441C13.4688 275.256 13.184 276.209 13.184 277.184H18.184ZM59.656 213.968L63.8366 216.711C64.8445 215.174 64.9286 213.209 64.0556 211.592C63.1827 209.976 61.4933 208.968 59.656 208.968V213.968ZM22.072 213.968H17.072C17.072 216.729 19.3106 218.968 22.072 218.968V213.968ZM22.072 196.112V191.112C19.3106 191.112 17.072 193.351 17.072 196.112H22.072ZM85.72 196.112H90.72C90.72 193.351 88.4814 191.112 85.72 191.112V196.112ZM85.72 208.928L89.9006 211.671C90.4352 210.856 90.72 209.903 90.72 208.928H85.72ZM44.248 272.144L40.0674 269.401C39.0595 270.938 38.9754 272.903 39.8484 274.52C40.7213 276.136 42.4107 277.144 44.248 277.144V272.144ZM86.152 272.144H91.152C91.152 269.383 88.9134 267.144 86.152 267.144V272.144ZM86.152 290V295C88.9134 295 91.152 292.761 91.152 290H86.152ZM23.184 290V277.184H13.184V290H23.184ZM22.3646 279.927L63.8366 216.711L55.4754 211.225L14.0034 274.441L22.3646 279.927ZM59.656 208.968H22.072V218.968H59.656V208.968ZM27.072 213.968V196.112H17.072V213.968H27.072ZM22.072 201.112H85.72V191.112H22.072V201.112ZM80.72 196.112V208.928H90.72V196.112H80.72ZM81.5394 206.185L40.0674 269.401L48.4287 274.887L89.9006 211.671L81.5394 206.185ZM44.248 277.144H86.152V267.144H44.248V277.144ZM81.152 272.144V290H91.152V272.144H81.152ZM86.152 285H18.184V295H86.152V285Z\" fill=\"currentColor\"/>\n </svg>\n </span>\n </ng-container>\n <span *ngFor=\"let c of _values\"\n class=\"vertical-list-filter--item text-primary\"\n [class.border-primary]=\"c === filterValue\"\n [attr.data-value]=\"c\"\n [attr.data-selected]=\"c === filterValue\"\n (click)=\"characterClick(c)\">{{ c }}</span>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}