{"version":3,"file":"ng-doc-app-providers-type-control.mjs","sources":["../../../../libs/app/providers/type-control/provide-type-control.ts","../../../../libs/app/providers/type-control/ng-doc-app-providers-type-control.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport {\n  NgDocProvidedTypeControl,\n  NgDocTypeControl,\n  NgDocTypeControlProviderOptions,\n} from '@ng-doc/app/interfaces';\nimport { Constructor } from '@ng-doc/core/types';\n\nconst tokenStore: Map<string, InjectionToken<NgDocProvidedTypeControl>> = new Map<\n  string,\n  InjectionToken<NgDocProvidedTypeControl>\n>();\n\n/**\n *\n * @param type\n * @param control\n * @param options\n */\nexport function provideTypeControl(\n  type: string,\n  control: Constructor<NgDocTypeControl>,\n  options?: NgDocTypeControlProviderOptions,\n): Provider {\n  const token: InjectionToken<NgDocProvidedTypeControl> =\n    new InjectionToken<NgDocProvidedTypeControl>(`NG_DOC_TYPE_CONTROL_${type}`, {\n      providedIn: 'root',\n      factory: () => {\n        return {\n          control,\n          options,\n        };\n      },\n    });\n  tokenStore.set(type, token);\n\n  return {\n    provide: 'nothing',\n    useValue: null,\n  };\n}\n\n/**\n * Returns token for type control based on provided type\n * @param type - type for searched control (e.g. `string`)\n */\nexport function getTokenForType(\n  type: string,\n): InjectionToken<NgDocProvidedTypeControl> | undefined {\n  return tokenStore.get(type);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAQA,MAAM,UAAU,GAA0D,IAAI,GAAG,EAG9E;AAEH;;;;;AAKG;SACa,kBAAkB,CAChC,IAAY,EACZ,OAAsC,EACtC,OAAyC,EAAA;IAEzC,MAAM,KAAK,GACT,IAAI,cAAc,CAA2B,CAAA,oBAAA,EAAuB,IAAI,EAAE,EAAE;AAC1E,QAAA,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,MAAK;YACZ,OAAO;gBACL,OAAO;gBACP,OAAO;aACR;QACH,CAAC;AACF,KAAA,CAAC;AACJ,IAAA,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;IAE3B,OAAO;AACL,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,QAAQ,EAAE,IAAI;KACf;AACH;AAEA;;;AAGG;AACG,SAAU,eAAe,CAC7B,IAAY,EAAA;AAEZ,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B;;AClDA;;AAEG;;;;"}