{"version":3,"file":"angular-extensions-core-material.mjs","sources":["../../../projects/angular-extensions/core/material/src/mat-table.extensions.ts","../../../projects/angular-extensions/core/material/src/router.extensions.ts","../../../projects/angular-extensions/core/material/src/tooltip.extensions.ts","../../../projects/angular-extensions/core/material/src/angular-extensions-core-material.ts"],"sourcesContent":["import type { MatSort } from \"@angular/material/sort\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { overrideFunction } from \"angular-extensions/core\";\r\n\r\n/**\r\n * Extends MatDataSource with custom filter function\r\n */\r\nexport type CustomFilterPredicate<T> = (\r\n  data: T,\r\n  filter: string,\r\n  defaultFilterPredicate: ((data: T, filter: string) => boolean),\r\n) => boolean;\r\n\r\n/**\r\n * Extends MatDataSource with data sort function\r\n */\r\nexport type CustomSortData<T> = (\r\n  data: T[],\r\n  sort: MatSort,\r\n  defaultSortData: (data: T[], sort: MatSort) => T[],\r\n) => T[];\r\n\r\n/**\r\n * Extends MatTableDataSource with custom filter function\r\n */\r\nexport class CustomMatTableDataSource<T> extends MatTableDataSource<T> {\r\n\r\n  constructor(\r\n    initialData?: T[],\r\n    options?: {\r\n      customSortData?: CustomSortData<T>;\r\n      customFilterPredicate?: CustomFilterPredicate<T>;\r\n    },\r\n  ) {\r\n    super(initialData);\r\n\r\n    overrideFunction(\r\n      this,\r\n      dataSource => dataSource._filterData,\r\n      (_, dataSource, data) => {\r\n        dataSource.filteredData = data.filter((item: T) => dataSource.filterPredicate(item, dataSource.filter));\r\n\r\n        if (dataSource.paginator) {\r\n          dataSource._updatePaginator(dataSource.filteredData.length);\r\n        }\r\n\r\n        return dataSource.filteredData;\r\n      });\r\n\r\n    if (options) {\r\n      Object.assign(this, options);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Forces data source to refresh {@link filteredData} field based on {@link customFilterPredicate}\r\n   */\r\n  public filterData() {\r\n    this.filter = this.filter;\r\n  }\r\n\r\n  /**\r\n   * Sets custom data sort function\r\n   */\r\n  public set customSortData(sortData: CustomSortData<T>) {\r\n    let defaultSortData = this.sortData;\r\n\r\n    this.sortData = (data, sort) => sortData(data, sort, defaultSortData);\r\n  }\r\n\r\n  /**\r\n   * Sets custom filter predicate\r\n   */\r\n  public set customFilterPredicate(filterPredicate: CustomFilterPredicate<T>) {\r\n    let defaultFilterPredicate = this.filterPredicate;\r\n\r\n    this.filterPredicate = (data, filter) => filterPredicate(data, filter, defaultFilterPredicate);\r\n  }\r\n}\r\n","import { of } from \"rxjs\";\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from \"@angular/material/dialog\";\r\nimport { ApplicationRef, Injector, NgModuleRef, Type, ViewContainerRef } from \"@angular/core\";\r\nimport {\r\n  ActivatedRoute, ActivationEnd, Router, IsActiveMatchOptions, GuardsCheckEnd, Route, Data,\r\n} from \"@angular/router\";\r\n\r\nimport { flatten } from \"angular-extensions/core\";\r\n\r\nlet routeInjectors: Map<Route, Injector>;\r\n\r\nconst routeMatchOptions: IsActiveMatchOptions = {\r\n  paths: \"exact\",\r\n  matrixParams: \"exact\",\r\n  queryParams: \"ignored\",\r\n  fragment: \"ignored\"\r\n};\r\n\r\ninterface ModalNavigationExtras {\r\n  shouldOpenModal?: boolean;\r\n}\r\n\r\ninterface LazyLoadedRoute extends Route {\r\n  _loadedInjector: Injector;\r\n\r\n  _loadedRoutes: Route[];\r\n}\r\n\r\nfunction isLazyLoadedRoute(route: Route): route is LazyLoadedRoute {\r\n  return (route as LazyLoadedRoute)._loadedInjector != undefined;\r\n}\r\n\r\nfunction isRouteModalData(data: Data | null): data is RouteModalData {\r\n  return (data as RouteModalData)?.modalComponent != undefined;\r\n}\r\n\r\nexport interface RouteModalData extends Data {\r\n  modalComponent: Type<any>;\r\n\r\n  modalOptions?: MatDialogConfig;\r\n}\r\n\r\n/**\r\n * Extends router config with stateful modals support.\r\n *\r\n * @example Route config:\r\n * {\r\n      path: \"..\",\r\n      data: { modalComponent: ModalComponent }\r\n   }\r\n * @param router Angular Router\r\n */\r\nexport function extendRouterConfigWithStatefulModals(router: Router) {\r\n  let dialogRef: MatDialogRef<any, any>;\r\n\r\n  if (!routeInjectors) {\r\n    routeInjectors = new Map<Route, Injector>();\r\n\r\n    router.events.subscribe(event => {\r\n      if (event instanceof GuardsCheckEnd) {\r\n        let shouldOpenModal = router.getLastSuccessfulNavigation() == null ||\r\n          !router.isActive(router.getCurrentNavigation().initialUrl, routeMatchOptions);\r\n\r\n        (router.getCurrentNavigation().extras as ModalNavigationExtras).shouldOpenModal = shouldOpenModal;\r\n      }\r\n      else if (event instanceof ActivationEnd && isRouteModalData(event.snapshot.data)) {\r\n        if ((router.getCurrentNavigation().extras as ModalNavigationExtras).shouldOpenModal === false) {\r\n          return;\r\n        }\r\n\r\n        let component = event.snapshot.data.modalComponent;\r\n        let scopedInjector = getActivatedRouteInjector(router, event.snapshot.routeConfig);\r\n        let activatedRoute = scopedInjector.get<ActivatedRoute>(ActivatedRoute);\r\n        let dialog = scopedInjector.get<MatDialog>(MatDialog);\r\n\r\n        let viewContainerRef = scopedInjector.get<ApplicationRef>(ApplicationRef)\r\n          .components\r\n          .first()\r\n          .injector\r\n          .get<ViewContainerRef>(ViewContainerRef);\r\n\r\n        if (dialogRef) {\r\n          dialogRef.close();\r\n        }\r\n\r\n        dialogRef = dialog.open(\r\n          component,\r\n          Object.assign<MatDialogConfig<any>, MatDialogConfig<any>>(event.snapshot.data.modalOptions || {}, {\r\n            closeOnNavigation: false,\r\n            viewContainerRef: {\r\n              createComponent: viewContainerRef.createComponent.bind(viewContainerRef),\r\n              injector: Injector.create({\r\n                parent: (dialog as any)._injector,\r\n                providers: [\r\n                  {\r\n                    provide: ActivatedRoute,\r\n                    useValue: flatten(activatedRoute.children, route => route.children)\r\n                      .find(route => route.snapshot.data.modalComponent == component)\r\n                  },\r\n                ]\r\n              })\r\n            } as ViewContainerRef,\r\n          }));\r\n\r\n        let subscription = router.events.subscribe(routerEvent => {\r\n          if (!router.getCurrentNavigation()) {\r\n            return;\r\n          }\r\n\r\n          let shouldCloseModal = !router.isActive(router.getCurrentNavigation().extractedUrl, routeMatchOptions);\r\n\r\n          if (routerEvent instanceof GuardsCheckEnd && routerEvent.shouldActivate && shouldCloseModal) {\r\n            dialogRef?.close();\r\n            subscription?.unsubscribe();\r\n\r\n            dialogRef = null;\r\n          }\r\n        });\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\nfunction getActivatedRouteInjector(router: Router, route: Route): Injector | undefined {\r\n  let injector = routeInjectors.get(route);\r\n\r\n  if (!injector) {\r\n    setRouteInjectors(router.config, ((router as any).ngModule as NgModuleRef<any>).injector);\r\n\r\n    injector = routeInjectors.get(route);\r\n  }\r\n\r\n  return injector;\r\n}\r\n\r\nfunction setRouteInjectors(routes: Route[], injector: Injector) {\r\n  routes.forEach(route => {\r\n    if (isRouteModalData(route.data)) {\r\n      routeInjectors.set(route, injector);\r\n    }\r\n\r\n    if (isLazyLoadedRoute(route)) {\r\n      setRouteInjectors(route._loadedRoutes, route._loadedInjector);\r\n    }\r\n    else if (route.children?.length > 0) {\r\n      setRouteInjectors(route.children, injector);\r\n    }\r\n  });\r\n}\r\n","import { delay, fromEvent, merge, of, sampleTime, switchMap } from \"rxjs\";\r\nimport { MatTooltip, MatTooltipDefaultOptions } from \"@angular/material/tooltip\";\r\n\r\nimport { overrideFunction } from \"angular-extensions/core\";\r\n\r\ninterface AppMatTooltip extends Omit<MatTooltip, \"_touchstartTimeout\"> {\r\n  _touchstartTimeout: number;\r\n\r\n  _defaultOptions: MatTooltipDefaultOptions;\r\n}\r\n\r\nlet enhancedTooltipDisplayEnabled = false;\r\n\r\n/**\r\n * Enables tooltip show behavior when tooltip \"showDelay\" is executed on mouse idle\r\n * rather than on \"mouseenter\" event of a tooltip area. This behavior reduces amount\r\n * of cases when tooltip is shown during the mouse is moved over the tooltip area and\r\n * tooltip is shown when it was not intended. This behavior is not affecting touch-based triggers.\r\n *\r\n * @param [defaultShowDelay] Default show delay. Default value: 150 ms\r\n */\r\nexport function enableEnhancedTooltipDisplay(defaultShowDelay = 150) {\r\n  if (!enhancedTooltipDisplayEnabled) {\r\n    enhancedTooltipDisplayEnabled = true;\r\n\r\n    let pendingTootlips = new Map<AppMatTooltip, number>();\r\n\r\n    fromEvent(document, \"mousemove\")\r\n      .pipe(\r\n        sampleTime(50),\r\n        switchMap(() => merge(...Array\r\n          .from(pendingTootlips)\r\n          .map(([tooltip, showDelay]) => of(tooltip).pipe(delay(showDelay))))))\r\n      .subscribe(tooltip => {\r\n        if (pendingTootlips.has(tooltip)) {\r\n          tooltip.show(0);\r\n        }\r\n      });\r\n\r\n    overrideFunction(\r\n      MatTooltip.prototype as any as AppMatTooltip,\r\n      tooltip => tooltip.show,\r\n      (show, tooltip, delayTime) => {\r\n        if (tooltip._touchstartTimeout || delayTime == 0 || pendingTootlips.has(tooltip)) {\r\n          pendingTootlips.delete(tooltip);\r\n\r\n          show(delayTime);\r\n        }\r\n        else {\r\n          pendingTootlips.set(tooltip, delayTime || Math.max(tooltip._defaultOptions.showDelay || 0, defaultShowDelay));\r\n        }\r\n      });\r\n\r\n    overrideFunction(\r\n      MatTooltip.prototype as any as AppMatTooltip,\r\n      tooltip => tooltip.hide,\r\n      (hide, tooltip, delayTime) => {\r\n        pendingTootlips.delete(tooltip);\r\n\r\n        hide(delayTime);\r\n      });\r\n\r\n    overrideFunction(\r\n      MatTooltip.prototype as any as AppMatTooltip,\r\n      tooltip => tooltip.ngOnDestroy,\r\n      (ngOnDestroy, tooltip) => {\r\n        ngOnDestroy();\r\n\r\n        pendingTootlips.delete(tooltip);\r\n      });\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}