@bootkit/ng0 0.0.0-alpha.40 → 0.0.0-alpha.42

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 (75) hide show
  1. package/README.md +2 -2
  2. package/components/accordion/index.d.ts +4 -4
  3. package/components/button/index.d.ts +6 -7
  4. package/components/card/index.d.ts +2 -2
  5. package/components/code/index.d.ts +2 -4
  6. package/components/collapse/index.d.ts +5 -6
  7. package/components/form-field/index.d.ts +1 -1
  8. package/components/pagination/index.d.ts +2 -2
  9. package/components/select/index.d.ts +2 -2
  10. package/components/sidenav/index.d.ts +1 -1
  11. package/components/tooltip/index.d.ts +20 -11
  12. package/components/vertical-menu/index.d.ts +13 -17
  13. package/data/index.d.ts +1 -6
  14. package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
  15. package/fesm2022/bootkit-ng0-components-accordion.mjs +7 -9
  16. package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
  17. package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -1
  18. package/fesm2022/bootkit-ng0-components-button.mjs +9 -13
  19. package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -1
  20. package/fesm2022/bootkit-ng0-components-card.mjs +8 -10
  21. package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -1
  22. package/fesm2022/bootkit-ng0-components-code.mjs +8 -12
  23. package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -1
  24. package/fesm2022/bootkit-ng0-components-collapse.mjs +12 -16
  25. package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
  26. package/fesm2022/bootkit-ng0-components-confirmation.mjs +2 -2
  27. package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -1
  28. package/fesm2022/bootkit-ng0-components-dropdown.mjs +6 -6
  29. package/fesm2022/bootkit-ng0-components-dropdown.mjs.map +1 -1
  30. package/fesm2022/bootkit-ng0-components-form-field.mjs +2 -2
  31. package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
  32. package/fesm2022/bootkit-ng0-components-list.mjs +2 -2
  33. package/fesm2022/bootkit-ng0-components-list.mjs.map +1 -1
  34. package/fesm2022/bootkit-ng0-components-modal.mjs +2 -2
  35. package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
  36. package/fesm2022/bootkit-ng0-components-nav.mjs +2 -2
  37. package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
  38. package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
  39. package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -1
  40. package/fesm2022/bootkit-ng0-components-pagination.mjs +9 -9
  41. package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
  42. package/fesm2022/bootkit-ng0-components-popover.mjs +2 -2
  43. package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
  44. package/fesm2022/bootkit-ng0-components-select.mjs +4 -3
  45. package/fesm2022/bootkit-ng0-components-select.mjs.map +1 -1
  46. package/fesm2022/bootkit-ng0-components-sidenav.mjs +3 -3
  47. package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
  48. package/fesm2022/bootkit-ng0-components-stepper.mjs +2 -2
  49. package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -1
  50. package/fesm2022/bootkit-ng0-components-table.mjs +3 -4
  51. package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -1
  52. package/fesm2022/bootkit-ng0-components-toast.mjs +2 -2
  53. package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
  54. package/fesm2022/bootkit-ng0-components-tooltip.mjs +35 -16
  55. package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
  56. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +23 -36
  57. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -1
  58. package/fesm2022/bootkit-ng0-data.mjs +1 -1
  59. package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
  60. package/fesm2022/bootkit-ng0-date.mjs.map +1 -1
  61. package/fesm2022/bootkit-ng0-file.mjs.map +1 -1
  62. package/fesm2022/bootkit-ng0-form.mjs.map +1 -1
  63. package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
  64. package/fesm2022/bootkit-ng0-layouts-layout1.mjs +2 -2
  65. package/fesm2022/bootkit-ng0-layouts-layout1.mjs.map +1 -1
  66. package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -1
  67. package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
  68. package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -1
  69. package/fesm2022/bootkit-ng0-routing.mjs.map +1 -1
  70. package/fesm2022/bootkit-ng0-script.mjs.map +1 -1
  71. package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
  72. package/fesm2022/bootkit-ng0-utils.mjs.map +1 -1
  73. package/fesm2022/bootkit-ng0.mjs.map +1 -1
  74. package/package.json +21 -21
  75. package/platform/browser/index.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-http.mjs","sources":["../../../projects/ng0/http/provide.ts","../../../projects/ng0/http/http.service.ts","../../../projects/ng0/http/types.ts","../../../projects/ng0/http/data-request-resolvers/http-data-request-resolver-1.ts","../../../projects/ng0/http/bootkit-ng0-http.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from \"@angular/core\";\r\nimport { HttpDataRequestResolver } from \"./types\";\r\nimport { HttpService } from \"./http.service\";\r\n\r\nexport const HTTP_SERVICE_CONFIG = new InjectionToken<HttpServiceConfig>('HttpServiceConfig');\r\n\r\n/**\r\n * Configuration for the HttpService.\r\n */\r\nexport interface HttpServiceConfig {\r\n /**\r\n * Base URL for the HTTP requests.\r\n * This is prepended to all request URLs.\r\n */\r\n baseUrl?: string;\r\n\r\n /**\r\n * A Resolver function to convert DataRequest to DataResult.\r\n */\r\n dataRequestResolver?: HttpDataRequestResolver;\r\n}\r\n\r\nexport interface HttpServiceFeature { \r\n ɵproviders: Array<Provider | EnvironmentProviders>;\r\n}\r\n\r\n/**\r\n * Provides the configuration for the HttpService.\r\n * @param config \r\n * @returns \r\n */\r\nexport function provideHttpService(config?: HttpServiceConfig, ...features: Partial<HttpServiceFeature>[]) {\r\n // const mergedfeatures = Object.assign({}, ...features);\r\n return makeEnvironmentProviders([\r\n HttpService,\r\n { provide: HTTP_SERVICE_CONFIG, useValue: config || {} },\r\n features.map((feature) => feature.ɵproviders),\r\n ]);\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, of, Subject, tap } from 'rxjs';\r\nimport { HttpRequestOptions, HttpRequestEvent } from './types';\r\nimport { inject, Inject, Injectable, Injector, makeStateKey, PLATFORM_ID, runInInjectionContext, TransferState } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { HTTP_SERVICE_CONFIG } from './provide';\r\n\r\n/**\r\n * HttpService provides a simple HTTP client for making requests.\r\n * It supports GET, POST, PUT, DELETE methods and can handle DataRequest objects.\r\n * It also supports transfer state for server-side rendering.\r\n * It emits events for request lifecycle: Send, Progress, Complete and Error.\r\n * It can be configured with a base URL and a default DataRequest resolver.\r\n * It can also handle multipart/form-data requests.\r\n */\r\n@Injectable()\r\nexport class HttpService {\r\n private _eventsSubject = new Subject<HttpRequestEvent>();\r\n private _baseUrl?: string;\r\n\r\n public events = this._eventsSubject.asObservable();\r\n public defaultHeaders?: HttpHeaders;\r\n\r\n private readonly _config = inject(HTTP_SERVICE_CONFIG);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private transferState: TransferState,\r\n private injector: Injector,\r\n @Inject(PLATFORM_ID) private platformId: object,\r\n ) {\r\n this._baseUrl = this._config.baseUrl ?? '';\r\n }\r\n\r\n /**\r\n * Sends a GET request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public get<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<T>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.get<T>(this._makeUrl(url, options), options as any).pipe(\r\n tap(result => {\r\n if (isPlatformServer(this.platformId) && options?.transferState) {\r\n const key = makeStateKey<T>(options.id);\r\n this.transferState.set(key, result as T);\r\n }\r\n })\r\n );\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n\r\n /**\r\n * Sends a DataRequest to the specified URL and returns a DataResult.\r\n * This method is used for paginated or filtered data requests.\r\n * It uses the configured DataRequestResolver to handle the request. \r\n * @param url The URL to send the request to.\r\n * @param request The DataRequest object containing the request parameters.\r\n * @param options The options for the request.\r\n * @returns An observable of DataResult<T>.\r\n */\r\n public getDataResult<T>(url: string, request: DataRequest, options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<DataResult<T>>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let resolver = this._config.dataRequestResolver;\r\n if (!resolver) {\r\n throw new Error('No HttpDataRequestResolver provided.');\r\n }\r\n\r\n const URL = this._makeUrl(url, options);\r\n let obs = runInInjectionContext<Observable<DataResult<T>>>(this.injector, resolver.bind(null, URL, request, options));\r\n if (!(obs instanceof Observable)) {\r\n throw Error('HttpDataRequestResolver should return an observable.');\r\n }\r\n\r\n return this._handleEvents(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a POST request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public post<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.post(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a PUT request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public put<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.put(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a DELETE request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public delete<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.delete(this._makeUrl(url, options), options as any)\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n private _makeUrl(url: string, options?: HttpRequestOptions) {\r\n return (options?.pathType === 'absolute') ? url : (this._baseUrl + url);\r\n }\r\n\r\n private _makeBody(body: any, options?: HttpRequestOptions) {\r\n if (options?.contentType === 'multipart/form-data') {\r\n const formData = new FormData();\r\n for (const key in body) {\r\n if (body.hasOwnProperty(key)) {\r\n const field = body[key];\r\n let value;\r\n\r\n if (typeof field === 'string' || field instanceof File || field instanceof Blob) {\r\n value = field;\r\n } else if (typeof field === 'number') {\r\n value = field.toString();\r\n } else if (typeof field === 'object') {\r\n value = JSON.stringify(field);\r\n }\r\n\r\n if (value) {\r\n formData.append(key, value);\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n return body;\r\n }\r\n\r\n private _handleEvents<T>(o: Observable<any>, url: string, options?: HttpRequestOptions): Observable<T> {\r\n return o.pipe(\r\n tap({\r\n next: r => {\r\n this._eventsSubject.next({ type: 'Complete', url, options, response: r });\r\n },\r\n error: e => {\r\n this._eventsSubject.next({ type: 'Error', url, options, error: e });\r\n }\r\n })\r\n )\r\n }\r\n\r\n private _verifyOptions(options?: HttpRequestOptions) {\r\n if (options) {\r\n if (options.transferState && !options.id) {\r\n throw Error('To use transferState, set request id')\r\n }\r\n\r\n if (this.transferState && (options.observe == 'events' || options.observe == 'response')) {\r\n throw Error('TransferState is only supported with observe == body.');\r\n }\r\n }\r\n }\r\n\r\n private _findInTransferState<T>(options?: HttpRequestOptions): { found: boolean, data: T | undefined } {\r\n if (!options?.transferState || isPlatformServer(this.platformId)) {\r\n return { found: false, data: undefined };\r\n }\r\n\r\n const key = makeStateKey<T>(options.id);\r\n if (this.transferState.hasKey(key)) {\r\n const data = this.transferState.get<T>(key, null!);\r\n if ((options.transferState as any)?.['clearAfterUse']) {\r\n this.transferState.remove(key); // Free memory\r\n }\r\n\r\n return { found: true, data: data };\r\n }\r\n\r\n return { found: false, data: undefined };\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpRequestOptions {\r\n /** Http request ID */\r\n id?: any;\r\n params?: HttpParams | Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n headers?: HttpHeaders | Record<string, string | string[]>;\r\n pathType?: 'relative' | 'absolute';\r\n responseType?: 'json' | 'blob' | 'text';\r\n contentType?: 'json' | 'multipart/form-data';\r\n reportProgress?: boolean;\r\n observe?: 'response' | 'body' | 'events';\r\n\r\n /**\r\n * Additional data to associate with this object.\r\n */\r\n tag?: Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n\r\n /** \r\n * Save response in transfer state \r\n * \r\n */\r\n transferState?: boolean | {\r\n /**\r\n * Clear transfer state after first read.\r\n */\r\n clearAfterUse?: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * HttpDataRequestResolver is a function that takes a URL, a DataRequest, and options,\r\n * and returns an Observable that emits a DataResult.\r\n * This is used to convert a DataRequest into query parameters or request body for an HTTP request.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param options Additional options for the request, such as headers.\r\n */\r\nexport type HttpDataRequestResolver<T = any> = (url: string, dataRequest: DataRequest, options?: HttpRequestOptions) => Observable<DataResult<T>>;\r\n\r\nexport interface HttpRequestEventBase {\r\n type: 'Send' | 'Complete' | 'Progress' | 'Error';\r\n url: string;\r\n options?: HttpRequestOptions\r\n}\r\n\r\nexport interface HttpRequestSendEvent extends HttpRequestEventBase {\r\n type: 'Send';\r\n}\r\n\r\nexport interface HttpRequestCompleteEvent extends HttpRequestEventBase {\r\n type: 'Complete';\r\n response?: any;\r\n}\r\n\r\nexport interface HttpRequestProgressEvent extends HttpRequestEventBase {\r\n type: 'Progress';\r\n}\r\n\r\nexport interface HttpRequestErrorEvent extends HttpRequestEventBase {\r\n type: 'Error';\r\n error: any;\r\n}\r\n\r\nexport type HttpRequestEvent = HttpRequestSendEvent | HttpRequestCompleteEvent | HttpRequestProgressEvent | HttpRequestErrorEvent;\r\n\r\n/**\r\n * HttpDataRequestWriter is a function that takes an HTTP request and a DataRequest\r\n * and writes the DataRequest parameters to the HTTP request.\r\n * This is used to convert a DataRequest into query parameters or request body.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param httpClient The HttpClient to use for the request.\r\n * @param options Additional options for the request, such as headers.\r\n * @template T data item type\r\n * @returns An Observable that emits the DataResult.\r\n */\r\n","import { DataRequest, DataResult } from \"@bootkit/ng0/data\";\r\nimport { HttpRequestOptions } from \"../types\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\n\r\n/**\r\n * Default implementation of httpDataRequestResolver1.\r\n * It adds DataRequest parameters as query string to the HTTP request.\r\n * @param url \r\n * @param dataRequest \r\n * @param options\r\n * @template T data item type\r\n * @returns \r\n */\r\nexport function httpDataRequestResolver1<T = any>(\r\n url: string,\r\n dataRequest: DataRequest,\r\n options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n var query: Record<string, any> = {};\r\n\r\n const httpClient = inject(HttpClient);\r\n\r\n if (dataRequest.page) {\r\n query['page[size]'] = dataRequest.page.size;\r\n query['page[index]'] = dataRequest.page.index;\r\n }\r\n\r\n if (dataRequest.sort) {\r\n query['sort[field]'] = dataRequest.sort.field;\r\n query['sort[asc]'] = dataRequest.sort.asc;\r\n }\r\n\r\n if (Array.isArray(dataRequest.filters)) {\r\n for (let i = 0; i < dataRequest.filters.length; i++) {\r\n const filter = dataRequest.filters[i];\r\n query[`filters[${i}].field`] = filter.field;\r\n query[`filters[${i}].operator`] = filter.operator;\r\n query[`filters[${i}].value`] = filter.value;\r\n }\r\n }\r\n\r\n if (typeof dataRequest.computeTotal == 'boolean') {\r\n query['computeTotal'] = dataRequest.computeTotal;\r\n }\r\n\r\n return httpClient.get<{ data: T[], total?: number }>(url, {\r\n params: query,\r\n headers: options?.headers,\r\n }).pipe(\r\n map(result => {\r\n return new DataResult<T>(result.data, result.total)\r\n })\r\n );\r\n}\r\n\r\n// /**\r\n// * Provides httpDataRequestResolver1.\r\n// * This is used to convert a DataRequest into query parameters for the HTTP (GET) request.\r\n// * @returns \r\n// */\r\n// export function withHttpDataRequestResolver1(): HttpServiceFeature {\r\n// return {\r\n// ɵproviders: [\r\n// { provide: DEFAULT_DATA_REQUEST_RESOLVER, useValue: HttpDataRequestResolver1 }\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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"}
1
+ {"version":3,"file":"bootkit-ng0-http.mjs","sources":["../../../projects/ng0/http/provide.ts","../../../projects/ng0/http/http.service.ts","../../../projects/ng0/http/types.ts","../../../projects/ng0/http/data-request-resolvers/http-data-request-resolver-1.ts","../../../projects/ng0/http/bootkit-ng0-http.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from \"@angular/core\";\nimport { HttpDataRequestResolver } from \"./types\";\nimport { HttpService } from \"./http.service\";\n\nexport const HTTP_SERVICE_CONFIG = new InjectionToken<HttpServiceConfig>('HttpServiceConfig');\n\n/**\n * Configuration for the HttpService.\n */\nexport interface HttpServiceConfig {\n /**\n * Base URL for the HTTP requests.\n * This is prepended to all request URLs.\n */\n baseUrl?: string;\n\n /**\n * A Resolver function to convert DataRequest to DataResult.\n */\n dataRequestResolver?: HttpDataRequestResolver;\n}\n\nexport interface HttpServiceFeature { \n ɵproviders: Array<Provider | EnvironmentProviders>;\n}\n\n/**\n * Provides the configuration for the HttpService.\n * @param config \n * @returns \n */\nexport function provideHttpService(config?: HttpServiceConfig, ...features: Partial<HttpServiceFeature>[]) {\n // const mergedfeatures = Object.assign({}, ...features);\n return makeEnvironmentProviders([\n HttpService,\n { provide: HTTP_SERVICE_CONFIG, useValue: config || {} },\n features.map((feature) => feature.ɵproviders),\n ]);\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, of, Subject, tap } from 'rxjs';\nimport { HttpRequestOptions, HttpRequestEvent } from './types';\nimport { inject, Inject, Injectable, Injector, makeStateKey, PLATFORM_ID, runInInjectionContext, TransferState } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\nimport { HTTP_SERVICE_CONFIG } from './provide';\n\n/**\n * HttpService provides a simple HTTP client for making requests.\n * It supports GET, POST, PUT, DELETE methods and can handle DataRequest objects.\n * It also supports transfer state for server-side rendering.\n * It emits events for request lifecycle: Send, Progress, Complete and Error.\n * It can be configured with a base URL and a default DataRequest resolver.\n * It can also handle multipart/form-data requests.\n */\n@Injectable()\nexport class HttpService {\n private _eventsSubject = new Subject<HttpRequestEvent>();\n private _baseUrl?: string;\n\n public events = this._eventsSubject.asObservable();\n public defaultHeaders?: HttpHeaders;\n\n private readonly _config = inject(HTTP_SERVICE_CONFIG);\n\n constructor(\n private http: HttpClient,\n private transferState: TransferState,\n private injector: Injector,\n @Inject(PLATFORM_ID) private platformId: object,\n ) {\n this._baseUrl = this._config.baseUrl ?? '';\n }\n\n /**\n * Sends a GET request to the specified URL.\n * @param url The URL to send the request to.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public get<T>(url: string, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n const transferStateData = this._findInTransferState<T>(options);\n if (transferStateData.found) {\n return of(transferStateData.data!);\n }\n\n this._eventsSubject.next({ type: 'Send', url, options });\n let obs = this.http.get<T>(this._makeUrl(url, options), options as any).pipe(\n tap(result => {\n if (isPlatformServer(this.platformId) && options?.transferState) {\n const key = makeStateKey<T>(options.id);\n this.transferState.set(key, result as T);\n }\n })\n );\n return this._handleEvents<T>(obs, url, options);\n }\n\n\n /**\n * Sends a DataRequest to the specified URL and returns a DataResult.\n * This method is used for paginated or filtered data requests.\n * It uses the configured DataRequestResolver to handle the request. \n * @param url The URL to send the request to.\n * @param request The DataRequest object containing the request parameters.\n * @param options The options for the request.\n * @returns An observable of DataResult<T>.\n */\n public getDataResult<T>(url: string, request: DataRequest, options?: HttpRequestOptions): Observable<DataResult<T>> {\n this._verifyOptions(options);\n const transferStateData = this._findInTransferState<DataResult<T>>(options);\n if (transferStateData.found) {\n return of(transferStateData.data!);\n }\n\n this._eventsSubject.next({ type: 'Send', url, options });\n let resolver = this._config.dataRequestResolver;\n if (!resolver) {\n throw new Error('No HttpDataRequestResolver provided.');\n }\n\n const URL = this._makeUrl(url, options);\n let obs = runInInjectionContext<Observable<DataResult<T>>>(this.injector, resolver.bind(null, URL, request, options));\n if (!(obs instanceof Observable)) {\n throw Error('HttpDataRequestResolver should return an observable.');\n }\n\n return this._handleEvents(obs, url, options);\n }\n\n /**\n * Sends a POST request to the specified URL with the given body.\n * @param url The URL to send the request to.\n * @param body The body of the request.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public post<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n this._eventsSubject.next({ type: 'Send', url, options });\n const BODY = this._makeBody(body, options);\n let obs = this.http.post(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\n return this._handleEvents<T>(obs, url, options);\n }\n\n /**\n * Sends a PUT request to the specified URL with the given body.\n * @param url The URL to send the request to.\n * @param body The body of the request.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public put<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n this._eventsSubject.next({ type: 'Send', url, options });\n const BODY = this._makeBody(body, options);\n let obs = this.http.put(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\n return this._handleEvents<T>(obs, url, options);\n }\n\n /**\n * Sends a DELETE request to the specified URL.\n * @param url The URL to send the request to.\n * @param options The options for the request.\n * @returns An observable of the response.\n */\n public delete<T>(url: string, options?: HttpRequestOptions): Observable<T> {\n this._verifyOptions(options);\n this._eventsSubject.next({ type: 'Send', url, options });\n let obs = this.http.delete(this._makeUrl(url, options), options as any)\n return this._handleEvents<T>(obs, url, options);\n }\n\n private _makeUrl(url: string, options?: HttpRequestOptions) {\n return (options?.pathType === 'absolute') ? url : (this._baseUrl + url);\n }\n\n private _makeBody(body: any, options?: HttpRequestOptions) {\n if (options?.contentType === 'multipart/form-data') {\n const formData = new FormData();\n for (const key in body) {\n if (body.hasOwnProperty(key)) {\n const field = body[key];\n let value;\n\n if (typeof field === 'string' || field instanceof File || field instanceof Blob) {\n value = field;\n } else if (typeof field === 'number') {\n value = field.toString();\n } else if (typeof field === 'object') {\n value = JSON.stringify(field);\n }\n\n if (value) {\n formData.append(key, value);\n }\n }\n }\n\n return formData;\n }\n\n return body;\n }\n\n private _handleEvents<T>(o: Observable<any>, url: string, options?: HttpRequestOptions): Observable<T> {\n return o.pipe(\n tap({\n next: r => {\n this._eventsSubject.next({ type: 'Complete', url, options, response: r });\n },\n error: e => {\n this._eventsSubject.next({ type: 'Error', url, options, error: e });\n }\n })\n )\n }\n\n private _verifyOptions(options?: HttpRequestOptions) {\n if (options) {\n if (options.transferState && !options.id) {\n throw Error('To use transferState, set request id')\n }\n\n if (this.transferState && (options.observe == 'events' || options.observe == 'response')) {\n throw Error('TransferState is only supported with observe == body.');\n }\n }\n }\n\n private _findInTransferState<T>(options?: HttpRequestOptions): { found: boolean, data: T | undefined } {\n if (!options?.transferState || isPlatformServer(this.platformId)) {\n return { found: false, data: undefined };\n }\n\n const key = makeStateKey<T>(options.id);\n if (this.transferState.hasKey(key)) {\n const data = this.transferState.get<T>(key, null!);\n if ((options.transferState as any)?.['clearAfterUse']) {\n this.transferState.remove(key); // Free memory\n }\n\n return { found: true, data: data };\n }\n\n return { found: false, data: undefined };\n }\n}\n","import { HttpClient, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\nimport { Observable } from 'rxjs';\n\nexport interface HttpRequestOptions {\n /** Http request ID */\n id?: any;\n params?: HttpParams | Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\n headers?: HttpHeaders | Record<string, string | string[]>;\n pathType?: 'relative' | 'absolute';\n responseType?: 'json' | 'blob' | 'text';\n contentType?: 'json' | 'multipart/form-data';\n reportProgress?: boolean;\n observe?: 'response' | 'body' | 'events';\n\n /**\n * Additional data to associate with this object.\n */\n tag?: Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\n\n /** \n * Save response in transfer state \n * \n */\n transferState?: boolean | {\n /**\n * Clear transfer state after first read.\n */\n clearAfterUse?: boolean;\n };\n}\n\n/**\n * HttpDataRequestResolver is a function that takes a URL, a DataRequest, and options,\n * and returns an Observable that emits a DataResult.\n * This is used to convert a DataRequest into query parameters or request body for an HTTP request.\n * @param url The URL to send the request to.\n * @param dataRequest The DataRequest to convert.\n * @param options Additional options for the request, such as headers.\n */\nexport type HttpDataRequestResolver<T = any> = (url: string, dataRequest: DataRequest, options?: HttpRequestOptions) => Observable<DataResult<T>>;\n\nexport interface HttpRequestEventBase {\n type: 'Send' | 'Complete' | 'Progress' | 'Error';\n url: string;\n options?: HttpRequestOptions\n}\n\nexport interface HttpRequestSendEvent extends HttpRequestEventBase {\n type: 'Send';\n}\n\nexport interface HttpRequestCompleteEvent extends HttpRequestEventBase {\n type: 'Complete';\n response?: any;\n}\n\nexport interface HttpRequestProgressEvent extends HttpRequestEventBase {\n type: 'Progress';\n}\n\nexport interface HttpRequestErrorEvent extends HttpRequestEventBase {\n type: 'Error';\n error: any;\n}\n\nexport type HttpRequestEvent = HttpRequestSendEvent | HttpRequestCompleteEvent | HttpRequestProgressEvent | HttpRequestErrorEvent;\n\n/**\n * HttpDataRequestWriter is a function that takes an HTTP request and a DataRequest\n * and writes the DataRequest parameters to the HTTP request.\n * This is used to convert a DataRequest into query parameters or request body.\n * @param url The URL to send the request to.\n * @param dataRequest The DataRequest to convert.\n * @param httpClient The HttpClient to use for the request.\n * @param options Additional options for the request, such as headers.\n * @template T data item type\n * @returns An Observable that emits the DataResult.\n */\n","import { DataRequest, DataResult } from \"@bootkit/ng0/data\";\nimport { HttpRequestOptions } from \"../types\";\nimport { map, Observable } from \"rxjs\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { inject } from \"@angular/core\";\n\n/**\n * Default implementation of httpDataRequestResolver1.\n * It adds DataRequest parameters as query string to the HTTP request.\n * @param url \n * @param dataRequest \n * @param options\n * @template T data item type\n * @returns \n */\nexport function httpDataRequestResolver1<T = any>(\n url: string,\n dataRequest: DataRequest,\n options?: HttpRequestOptions): Observable<DataResult<T>> {\n var query: Record<string, any> = {};\n\n const httpClient = inject(HttpClient);\n\n if (dataRequest.page) {\n query['page[size]'] = dataRequest.page.size;\n query['page[index]'] = dataRequest.page.index;\n }\n\n if (dataRequest.sort) {\n query['sort[field]'] = dataRequest.sort.field;\n query['sort[asc]'] = dataRequest.sort.asc;\n }\n\n if (Array.isArray(dataRequest.filters)) {\n for (let i = 0; i < dataRequest.filters.length; i++) {\n const filter = dataRequest.filters[i];\n query[`filters[${i}].field`] = filter.field;\n query[`filters[${i}].operator`] = filter.operator;\n query[`filters[${i}].value`] = filter.value;\n }\n }\n\n if (typeof dataRequest.computeTotal == 'boolean') {\n query['computeTotal'] = dataRequest.computeTotal;\n }\n\n return httpClient.get<{ data: T[], total?: number }>(url, {\n params: query,\n headers: options?.headers,\n }).pipe(\n map(result => {\n return new DataResult<T>(result.data, result.total)\n })\n );\n}\n\n// /**\n// * Provides httpDataRequestResolver1.\n// * This is used to convert a DataRequest into query parameters for the HTTP (GET) request.\n// * @returns \n// */\n// export function withHttpDataRequestResolver1(): HttpServiceFeature {\n// return {\n// ɵproviders: [\n// { provide: DEFAULT_DATA_REQUEST_RESOLVER, useValue: HttpDataRequestResolver1 }\n// ]\n// };\n// }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -235,11 +235,11 @@ class Layout1Component {
235
235
  }
236
236
  }
237
237
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: Layout1Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
238
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: Layout1Component, isStandalone: true, selector: "ng0-layout1", inputs: { defaultSidenavPosition: { classPropertyName: "defaultSidenavPosition", publicName: "defaultSidenavPosition", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavSize: { classPropertyName: "defaultSidenavSize", publicName: "defaultSidenavSize", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavMode: { classPropertyName: "defaultSidenavMode", publicName: "defaultSidenavMode", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavHasBackdrop: { classPropertyName: "defaultSidenavHasBackdrop", publicName: "defaultSidenavHasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavCloseOnBackdropClick: { classPropertyName: "defaultSidenavCloseOnBackdropClick", publicName: "defaultSidenavCloseOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_sidenavs", predicate: Layout1SidenavDirective }], ngImport: i0, template: "<ng0-sidenav-container>\r\n <ng0-sidenav-content>\r\n <ng-content select=\"ng0-layout1-header\" />\r\n <ng-content select=\"ng0-layout1-content\" />\r\n </ng0-sidenav-content>\r\n\r\n @for (sidenav of _sidenavs; track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"sidenav.open()\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n @for (sidenav of _secondarySidenavs(); track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\r\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n</ng0-sidenav-container>", styles: ["ng0-layout1{display:flex;flex-direction:column;min-height:100vh;width:100%}ng0-layout1 ng0-layout1-header{display:block;z-index:1}ng0-layout1 ng0-layout1-header.ng0-layout1-header-sticky{position:sticky;top:0}ng0-layout1 ng0-layout1-content{display:block}ng0-layout1 ng0-sidenav-container{overflow:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SidenavModule }, { kind: "component", type: i2.SidenavContainerComponent, selector: "ng0-sidenav-container", outputs: ["backdropClick"] }, { kind: "component", type: i2.SidenavComponent, selector: "ng0-sidenav", inputs: ["open", "mode", "hasBackdrop", "zIndex", "position", "size", "fixedInViewport"], outputs: ["backdropClick"] }, { kind: "component", type: i2.SidenavContentComponent, selector: "ng0-sidenav-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
238
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: Layout1Component, isStandalone: true, selector: "ng0-layout1", inputs: { defaultSidenavPosition: { classPropertyName: "defaultSidenavPosition", publicName: "defaultSidenavPosition", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavSize: { classPropertyName: "defaultSidenavSize", publicName: "defaultSidenavSize", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavMode: { classPropertyName: "defaultSidenavMode", publicName: "defaultSidenavMode", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavHasBackdrop: { classPropertyName: "defaultSidenavHasBackdrop", publicName: "defaultSidenavHasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavCloseOnBackdropClick: { classPropertyName: "defaultSidenavCloseOnBackdropClick", publicName: "defaultSidenavCloseOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_sidenavs", predicate: Layout1SidenavDirective }], ngImport: i0, template: "<ng0-sidenav-container>\n <ng0-sidenav-content>\n <ng-content select=\"ng0-layout1-header\" />\n <ng-content select=\"ng0-layout1-content\" />\n </ng0-sidenav-content>\n\n @for (sidenav of _sidenavs; track $index) {\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"sidenav.open()\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n @for (sidenav of _secondarySidenavs(); track $index) {\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n</ng0-sidenav-container>", styles: ["ng0-layout1{display:flex;flex-direction:column;min-height:100vh;width:100%}ng0-layout1 ng0-layout1-header{display:block;z-index:1}ng0-layout1 ng0-layout1-header.ng0-layout1-header-sticky{position:sticky;top:0}ng0-layout1 ng0-layout1-content{display:block}ng0-layout1>ng0-sidenav-container{overflow:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SidenavModule }, { kind: "component", type: i2.SidenavContainerComponent, selector: "ng0-sidenav-container", outputs: ["backdropClick"] }, { kind: "component", type: i2.SidenavComponent, selector: "ng0-sidenav", inputs: ["open", "mode", "hasBackdrop", "zIndex", "position", "size", "fixedInViewport"], outputs: ["backdropClick"] }, { kind: "component", type: i2.SidenavContentComponent, selector: "ng0-sidenav-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
239
239
  }
240
240
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: Layout1Component, decorators: [{
241
241
  type: Component,
242
- args: [{ selector: 'ng0-layout1', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, SidenavModule], template: "<ng0-sidenav-container>\r\n <ng0-sidenav-content>\r\n <ng-content select=\"ng0-layout1-header\" />\r\n <ng-content select=\"ng0-layout1-content\" />\r\n </ng0-sidenav-content>\r\n\r\n @for (sidenav of _sidenavs; track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"sidenav.open()\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n @for (sidenav of _secondarySidenavs(); track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\r\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n</ng0-sidenav-container>", styles: ["ng0-layout1{display:flex;flex-direction:column;min-height:100vh;width:100%}ng0-layout1 ng0-layout1-header{display:block;z-index:1}ng0-layout1 ng0-layout1-header.ng0-layout1-header-sticky{position:sticky;top:0}ng0-layout1 ng0-layout1-content{display:block}ng0-layout1 ng0-sidenav-container{overflow:unset!important}\n"] }]
242
+ args: [{ selector: 'ng0-layout1', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, SidenavModule], template: "<ng0-sidenav-container>\n <ng0-sidenav-content>\n <ng-content select=\"ng0-layout1-header\" />\n <ng-content select=\"ng0-layout1-content\" />\n </ng0-sidenav-content>\n\n @for (sidenav of _sidenavs; track $index) {\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"sidenav.open()\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n @for (sidenav of _secondarySidenavs(); track $index) {\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n</ng0-sidenav-container>", styles: ["ng0-layout1{display:flex;flex-direction:column;min-height:100vh;width:100%}ng0-layout1 ng0-layout1-header{display:block;z-index:1}ng0-layout1 ng0-layout1-header.ng0-layout1-header-sticky{position:sticky;top:0}ng0-layout1 ng0-layout1-content{display:block}ng0-layout1>ng0-sidenav-container{overflow:unset!important}\n"] }]
243
243
  }], ctorParameters: () => [], propDecorators: { _sidenavs: [{
244
244
  type: ContentChildren,
245
245
  args: [Layout1SidenavDirective]
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-layouts-layout1.mjs","sources":["../../../projects/ng0/layouts/layout1/layout1-manager.ts","../../../projects/ng0/layouts/layout1/layout1-sidenav.directive.ts","../../../projects/ng0/layouts/layout1/secondary-sidenav.ts","../../../projects/ng0/layouts/layout1/layout1.component.ts","../../../projects/ng0/layouts/layout1/layout1.component.html","../../../projects/ng0/layouts/layout1/layout1-header.component.ts","../../../projects/ng0/layouts/layout1/layout1-content.component.ts","../../../projects/ng0/layouts/layout1/layout1.module.ts","../../../projects/ng0/layouts/layout1/bootkit-ng0-layouts-layout1.ts"],"sourcesContent":["import { Injectable, TemplateRef } from '@angular/core';\r\nimport { Layout1SecondarySidenav, Layout1SecondarySidenavOptions } from './secondary-sidenav';\r\nimport { Layout1Component } from './layout1.component';\r\n\r\n/**\r\n * Service to manage the configuration and state of Layout1Component.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Layout1Manager {\r\n /**\r\n * The Layout1Component instance associated with this manager.\r\n */\r\n public component!: Layout1Component;\r\n\r\n /**\r\n * Push a secondary sidenav.\r\n * @param content The template for the secondary sidenav.\r\n * @param options Options for the secondary sidenav.\r\n * @returns The reference to the pushed secondary sidenav.\r\n */\r\n public pushSidenav(content: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\r\n return this.component.pushSidenav(content, options);\r\n }\r\n\r\n /**\r\n * Close the last secondary sidenav and dispose it.\r\n */\r\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\r\n return this.component.popSidenav(result);\r\n }\r\n\r\n /**\r\n * Get the list of secondary sidenavs.\r\n */\r\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\r\n return this.component.secondarySidenavs;\r\n }\r\n\r\n /**\r\n * Get the last secondary sidenav.\r\n */\r\n public get last(): Layout1SecondarySidenav | undefined {\r\n return this.component.secondarySidenavs.at(-1);\r\n }\r\n}\r\n","import { booleanAttribute, Directive, EventEmitter, inject, input, Output, TemplateRef } from '@angular/core';\r\nimport { SidenavMode, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\r\nimport { CssClass } from '@bootkit/ng0/common';\r\n\r\n/** \r\n * Directive to define a sidenav within Layout1Component.\r\n */\r\n@Directive({\r\n selector: '[ng0Layout1Sidenav]',\r\n exportAs: 'ng0Layout1Sidenav',\r\n standalone: true,\r\n})\r\nexport class Layout1SidenavDirective {\r\n public readonly template = inject(TemplateRef<any>);\r\n public readonly open = input(true, { transform: booleanAttribute });\r\n public readonly mode = input<SidenavMode>('push');\r\n public readonly hasBackdrop = input(true, { transform: booleanAttribute });\r\n public readonly zIndex = input<number | undefined>(undefined);\r\n public readonly position = input<SidenavPosition>('start');\r\n public readonly size = input<SidenavSize>();\r\n public readonly css = input<CssClass>();\r\n @Output() public backdropClick = new EventEmitter<PointerEvent>();\r\n}\r\n","import { signal, TemplateRef, WritableSignal } from \"@angular/core\";\r\nimport { CssClass } from \"@bootkit/ng0/common\";\r\nimport { SidenavMode, SidenavPosition, SidenavSize } from \"@bootkit/ng0/components/sidenav\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n/**\r\n * Represents a secondary sidenav options in the Layout1Component.\r\n */\r\nexport interface Layout1SecondarySidenavOptions {\r\n size?: SidenavSize;\r\n zIndex?: number;\r\n position?: SidenavPosition;\r\n mode?: SidenavMode;\r\n fixedInViewport?: boolean;\r\n hasBackdrop?: boolean;\r\n css?: CssClass;\r\n closeOnBackdropClick?: boolean\r\n}\r\n\r\n/**\r\n * Reference to a secondary sidenav in the Layout1Component.\r\n */\r\nexport class Layout1SecondarySidenav {\r\n private _disposedSubject = new Subject<any>();\r\n private _isDisposed = false;\r\n\r\n /**\r\n * Observable that emits when the sidenav is disposed.\r\n */\r\n public readonly disposed = this._disposedSubject.asObservable();\r\n\r\n /**\r\n * template of the sidenav content.\r\n */\r\n public readonly template: TemplateRef<any>;\r\n\r\n /**\r\n * Z-Index of the sidenav.\r\n */\r\n public readonly zIndex: WritableSignal<number | undefined>;\r\n\r\n /**\r\n * Sidenav css classes.\r\n */\r\n public readonly css: WritableSignal<CssClass>;\r\n\r\n /**\r\n * Size of the sidenav.\r\n */\r\n public readonly size: WritableSignal<SidenavSize>;\r\n\r\n /**\r\n * Position of the sidenav.\r\n */\r\n public readonly position: WritableSignal<SidenavPosition>;\r\n\r\n /**\r\n * Mode of the sidenav.\r\n */\r\n public readonly mode: WritableSignal<SidenavMode>;\r\n\r\n /**\r\n * Whether the sidenav has a backdrop.\r\n */\r\n public readonly hasBackdrop: WritableSignal<boolean>;\r\n\r\n /**\r\n * Whether the sidenav should close on backdrop click.\r\n */\r\n public readonly closeOnBackdropClick: WritableSignal<boolean>;\r\n\r\n /**\r\n * Whether the sidenav is disposed.\r\n */\r\n public get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n\r\n constructor(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions) {\r\n this.template = template;\r\n this.zIndex = signal(options?.zIndex);\r\n this.css = signal(options?.css);\r\n this.size = signal(options?.size);\r\n this.position = signal(options?.position ?? 'start');\r\n this.mode = signal(options?.mode ?? 'over');\r\n this.hasBackdrop = signal(options?.hasBackdrop ?? true);\r\n this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false);\r\n }\r\n\r\n /**\r\n * Close and dispose the sidenav.\r\n * @param result Optional result to emit when the sidenav is closed.\r\n */\r\n public dispose(result?: any): void {\r\n if (!this._isDisposed) {\r\n this._isDisposed = true;\r\n this._disposedSubject.next(result);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, input, QueryList, signal, TemplateRef, ViewEncapsulation } from '@angular/core';\r\nimport { SidenavMode, SidenavModule, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Layout1Manager } from './layout1-manager';\r\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\r\nimport { Layout1SecondarySidenavOptions, Layout1SecondarySidenav } from './secondary-sidenav';\r\n\r\n/**\r\n * Layout1 component that provides a layout with sidenavs.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1',\r\n templateUrl: './layout1.component.html',\r\n styleUrls: ['./layout1.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule, SidenavModule]\r\n})\r\nexport class Layout1Component {\r\n private _zIndexCounter = 1000;\r\n private readonly _manager = inject(Layout1Manager);\r\n @ContentChildren(Layout1SidenavDirective) protected readonly _sidenavs?: QueryList<Layout1SidenavDirective>;\r\n protected readonly _secondarySidenavs = signal<Layout1SecondarySidenav[]>([]);\r\n protected readonly _openSecondarySidenavs = new Set<Layout1SecondarySidenav>();\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * Default position for secondary sidenavs.\r\n */\r\n defaultSidenavPosition = input<SidenavPosition>('start');\r\n\r\n /**\r\n * Default size for secondary sidenavs.\r\n */\r\n defaultSidenavSize = input<SidenavSize>();\r\n\r\n /**\r\n * Default mode for secondary sidenavs.\r\n */\r\n defaultSidenavMode = input<SidenavMode>('over');\r\n\r\n /**\r\n * Default hasBackdrop value for secondary sidenavs.\r\n */\r\n defaultSidenavHasBackdrop = input(true);\r\n\r\n /**\r\n * Default closeOnBackdropClick value for secondary sidenavs.\r\n */\r\n defaultSidenavCloseOnBackdropClick = input(false);\r\n\r\n\r\n constructor() {\r\n this._manager.component = this;\r\n }\r\n\r\n /**\r\n * Push a secondary sidenav.\r\n * @param template The template for the secondary sidenav.\r\n * @param options Options for the secondary sidenav.\r\n * @returns The reference to the pushed secondary sidenav.\r\n */\r\n public pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\r\n options = options || {};\r\n options.zIndex = options.zIndex ?? this._zIndexCounter++;\r\n options.mode = options.mode ?? this.defaultSidenavMode();\r\n options.position = options.position ?? this.defaultSidenavPosition();\r\n options.size = options.size ?? this.defaultSidenavSize();\r\n options.hasBackdrop = options.hasBackdrop ?? this.defaultSidenavHasBackdrop();\r\n options.closeOnBackdropClick = options.closeOnBackdropClick ?? this.defaultSidenavCloseOnBackdropClick();\r\n\r\n const sidenavRef = new Layout1SecondarySidenav(template, options);\r\n this._secondarySidenavs().push(sidenavRef);\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.\r\n setTimeout(() => {\r\n this._openSecondarySidenavs.add(sidenavRef);\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n sidenavRef.disposed.subscribe((result?: any) => {\r\n // Close the sidenav first. After the transition ends, it will be removed from DOM.\r\n this._openSecondarySidenavs.delete(sidenavRef);\r\n });\r\n\r\n return sidenavRef;\r\n }\r\n\r\n /**\r\n * Close the last secondary sidenav and dispose it.\r\n * @param result The result to pass when closing the sidenav.\r\n * @return The reference to the closed secondary sidenav.\r\n */\r\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\r\n const last = this._secondarySidenavs().at(-1);\r\n if (last) {\r\n last.dispose(result);\r\n return last;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Get the list of secondary sidenavs.\r\n */\r\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\r\n return this._secondarySidenavs();\r\n }\r\n\r\n protected _onSecondarySidenavTransitionEnd(sidenav: Layout1SecondarySidenav) {\r\n if (sidenav.isDisposed) {\r\n const index = this._secondarySidenavs().findIndex(x => x === sidenav);\r\n this._secondarySidenavs().splice(index, 1);\r\n }\r\n }\r\n}\r\n","<ng0-sidenav-container>\r\n <ng0-sidenav-content>\r\n <ng-content select=\"ng0-layout1-header\" />\r\n <ng-content select=\"ng0-layout1-content\" />\r\n </ng0-sidenav-content>\r\n\r\n @for (sidenav of _sidenavs; track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"sidenav.open()\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n @for (sidenav of _secondarySidenavs(); track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\r\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n</ng0-sidenav-container>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Layout1 header component.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1-header',\r\n template: `<ng-content></ng-content>`,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class Layout1HeaderComponent {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Layout1 content component.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1-content',\r\n template: `<ng-content></ng-content>`,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class Layout1ContentComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Layout1Component } from './layout1.component';\r\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\r\nimport { Layout1HeaderComponent } from './layout1-header.component';\r\nimport { Layout1ContentComponent } from './public-api';\r\n\r\nconst items = [\r\n Layout1Component,\r\n Layout1SidenavDirective,\r\n Layout1HeaderComponent,\r\n Layout1ContentComponent\r\n];\r\n\r\n/**\r\n * Layout1Module\r\n */\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class Layout1Module { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAIA;;AAEG;MAIU,cAAc,CAAA;AACzB;;AAEG;AACI,IAAA,SAAS;AAEhB;;;;;AAKG;IACI,WAAW,CAAC,OAAyB,EAAE,OAAwC,EAAA;QACpF,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;IACrD;AAEA;;AAEG;AACI,IAAA,UAAU,CAAC,MAAY,EAAA;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;IAC1C;AAEA;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB;IACzC;AAEA;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD;wGAnCW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACLD;;AAEG;MAMU,uBAAuB,CAAA;AAChB,IAAA,QAAQ,GAAG,MAAM,EAAC,WAAgB,EAAC;AACnC,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,wCAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACnD,IAAA,IAAI,GAAG,KAAK,CAAc,MAAM,gDAAC;AACjC,IAAA,WAAW,GAAG,KAAK,CAAC,IAAI,+CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAC1D,IAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,kDAAC;AAC7C,IAAA,QAAQ,GAAG,KAAK,CAAkB,OAAO,oDAAC;IAC1C,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;IAC3B,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;AACtB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAgB;wGATxD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;sBAUI;;;ACFL;;AAEG;MACU,uBAAuB,CAAA;AACxB,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAO;IACrC,WAAW,GAAG,KAAK;AAE3B;;AAEG;AACa,IAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAE/D;;AAEG;AACa,IAAA,QAAQ;AAExB;;AAEG;AACa,IAAA,MAAM;AAEtB;;AAEG;AACa,IAAA,GAAG;AAEnB;;AAEG;AACa,IAAA,IAAI;AAEpB;;AAEG;AACa,IAAA,QAAQ;AAExB;;AAEG;AACa,IAAA,IAAI;AAEpB;;AAEG;AACa,IAAA,WAAW;AAE3B;;AAEG;AACa,IAAA,oBAAoB;AAEpC;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEA,WAAA,CAAY,QAA0B,EAAE,OAAwC,EAAA;AAC5E,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,OAAO,EAAE,oBAAoB,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC9E;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,MAAY,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC;IACJ;AACH;;AC5FD;;AAEG;MAUU,gBAAgB,CAAA;IACnB,cAAc,GAAG,IAAI;AACZ,IAAA,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;AACW,IAAA,SAAS;AACnD,IAAA,kBAAkB,GAAG,MAAM,CAA4B,EAAE,8DAAC;AAC1D,IAAA,sBAAsB,GAAG,IAAI,GAAG,EAA2B;AAC7D,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE/D;;AAEG;AACH,IAAA,sBAAsB,GAAG,KAAK,CAAkB,OAAO,kEAAC;AAExD;;AAEG;IACH,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;AAEzC;;AAEG;AACH,IAAA,kBAAkB,GAAG,KAAK,CAAc,MAAM,8DAAC;AAE/C;;AAEG;AACH,IAAA,yBAAyB,GAAG,KAAK,CAAC,IAAI,qEAAC;AAEvC;;AAEG;AACH,IAAA,kCAAkC,GAAG,KAAK,CAAC,KAAK,8EAAC;AAGjD,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI;IAChC;AAEA;;;;;AAKG;IACI,WAAW,CAAC,QAA0B,EAAE,OAAwC,EAAA;AACrF,QAAA,OAAO,GAAG,OAAO,IAAI,EAAE;QACvB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;QACxD,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;QACxD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE;QACpE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;QACxD,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,yBAAyB,EAAE;QAC7E,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,IAAI,CAAC,kCAAkC,EAAE;QAExG,MAAM,UAAU,GAAG,IAAI,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC;QACjE,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;QAGtC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3C,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;QAEF,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAY,KAAI;;AAE7C,YAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC;AAChD,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,UAAU;IACnB;AAEA;;;;AAIE;AACK,IAAA,UAAU,CAAC,MAAY,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,SAAS;IAClB;AAEA;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;IAClC;AAEU,IAAA,gCAAgC,CAAC,OAAgC,EAAA;AACzE,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;YACrE,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5C;IACF;wGAlGW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,y9BAGV,uBAAuB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB1C,snDAqCwB,EAAA,MAAA,EAAA,CAAA,8TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBZ,YAAY,mSAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAE1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,snDAAA,EAAA,MAAA,EAAA,CAAA,8TAAA,CAAA,EAAA;;sBAKrC,eAAe;uBAAC,uBAAuB;;;AEpB1C;;AAEG;MAQU,sBAAsB,CAAA;wGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8EALvB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAK1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACTD;;AAEG;MAQU,uBAAuB,CAAA;wGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+EALxB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAK1B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACLD,MAAM,KAAK,GAAG;IACV,gBAAgB;IAChB,uBAAuB;IACvB,sBAAsB;IACtB;CACH;AAED;;AAEG;MAKU,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAbtB,gBAAgB;YAChB,uBAAuB;YACvB,sBAAsB;AACtB,YAAA,uBAAuB,aAHvB,gBAAgB;YAChB,uBAAuB;YACvB,sBAAsB;YACtB,uBAAuB,CAAA,EAAA,CAAA;AAUd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAbtB,gBAAgB,CAAA,EAAA,CAAA;;4FAaP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;AACZ,iBAAA;;;ACnBD;;AAEG;;;;"}
1
+ {"version":3,"file":"bootkit-ng0-layouts-layout1.mjs","sources":["../../../projects/ng0/layouts/layout1/layout1-manager.ts","../../../projects/ng0/layouts/layout1/layout1-sidenav.directive.ts","../../../projects/ng0/layouts/layout1/secondary-sidenav.ts","../../../projects/ng0/layouts/layout1/layout1.component.ts","../../../projects/ng0/layouts/layout1/layout1.component.html","../../../projects/ng0/layouts/layout1/layout1-header.component.ts","../../../projects/ng0/layouts/layout1/layout1-content.component.ts","../../../projects/ng0/layouts/layout1/layout1.module.ts","../../../projects/ng0/layouts/layout1/bootkit-ng0-layouts-layout1.ts"],"sourcesContent":["import { Injectable, TemplateRef } from '@angular/core';\nimport { Layout1SecondarySidenav, Layout1SecondarySidenavOptions } from './secondary-sidenav';\nimport { Layout1Component } from './layout1.component';\n\n/**\n * Service to manage the configuration and state of Layout1Component.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Layout1Manager {\n /**\n * The Layout1Component instance associated with this manager.\n */\n public component!: Layout1Component;\n\n /**\n * Push a secondary sidenav.\n * @param content The template for the secondary sidenav.\n * @param options Options for the secondary sidenav.\n * @returns The reference to the pushed secondary sidenav.\n */\n public pushSidenav(content: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\n return this.component.pushSidenav(content, options);\n }\n\n /**\n * Close the last secondary sidenav and dispose it.\n */\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\n return this.component.popSidenav(result);\n }\n\n /**\n * Get the list of secondary sidenavs.\n */\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\n return this.component.secondarySidenavs;\n }\n\n /**\n * Get the last secondary sidenav.\n */\n public get last(): Layout1SecondarySidenav | undefined {\n return this.component.secondarySidenavs.at(-1);\n }\n}\n","import { booleanAttribute, Directive, EventEmitter, inject, input, Output, TemplateRef } from '@angular/core';\nimport { SidenavMode, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\nimport { CssClass } from '@bootkit/ng0/common';\n\n/** \n * Directive to define a sidenav within Layout1Component.\n */\n@Directive({\n selector: '[ng0Layout1Sidenav]',\n exportAs: 'ng0Layout1Sidenav',\n standalone: true,\n})\nexport class Layout1SidenavDirective {\n public readonly template = inject(TemplateRef<any>);\n public readonly open = input(true, { transform: booleanAttribute });\n public readonly mode = input<SidenavMode>('push');\n public readonly hasBackdrop = input(true, { transform: booleanAttribute });\n public readonly zIndex = input<number | undefined>(undefined);\n public readonly position = input<SidenavPosition>('start');\n public readonly size = input<SidenavSize>();\n public readonly css = input<CssClass>();\n @Output() public backdropClick = new EventEmitter<PointerEvent>();\n}\n","import { signal, TemplateRef, WritableSignal } from \"@angular/core\";\nimport { CssClass } from \"@bootkit/ng0/common\";\nimport { SidenavMode, SidenavPosition, SidenavSize } from \"@bootkit/ng0/components/sidenav\";\nimport { Subject } from \"rxjs\";\n\n/**\n * Represents a secondary sidenav options in the Layout1Component.\n */\nexport interface Layout1SecondarySidenavOptions {\n size?: SidenavSize;\n zIndex?: number;\n position?: SidenavPosition;\n mode?: SidenavMode;\n fixedInViewport?: boolean;\n hasBackdrop?: boolean;\n css?: CssClass;\n closeOnBackdropClick?: boolean\n}\n\n/**\n * Reference to a secondary sidenav in the Layout1Component.\n */\nexport class Layout1SecondarySidenav {\n private _disposedSubject = new Subject<any>();\n private _isDisposed = false;\n\n /**\n * Observable that emits when the sidenav is disposed.\n */\n public readonly disposed = this._disposedSubject.asObservable();\n\n /**\n * template of the sidenav content.\n */\n public readonly template: TemplateRef<any>;\n\n /**\n * Z-Index of the sidenav.\n */\n public readonly zIndex: WritableSignal<number | undefined>;\n\n /**\n * Sidenav css classes.\n */\n public readonly css: WritableSignal<CssClass>;\n\n /**\n * Size of the sidenav.\n */\n public readonly size: WritableSignal<SidenavSize>;\n\n /**\n * Position of the sidenav.\n */\n public readonly position: WritableSignal<SidenavPosition>;\n\n /**\n * Mode of the sidenav.\n */\n public readonly mode: WritableSignal<SidenavMode>;\n\n /**\n * Whether the sidenav has a backdrop.\n */\n public readonly hasBackdrop: WritableSignal<boolean>;\n\n /**\n * Whether the sidenav should close on backdrop click.\n */\n public readonly closeOnBackdropClick: WritableSignal<boolean>;\n\n /**\n * Whether the sidenav is disposed.\n */\n public get isDisposed() {\n return this._isDisposed;\n }\n\n constructor(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions) {\n this.template = template;\n this.zIndex = signal(options?.zIndex);\n this.css = signal(options?.css);\n this.size = signal(options?.size);\n this.position = signal(options?.position ?? 'start');\n this.mode = signal(options?.mode ?? 'over');\n this.hasBackdrop = signal(options?.hasBackdrop ?? true);\n this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false);\n }\n\n /**\n * Close and dispose the sidenav.\n * @param result Optional result to emit when the sidenav is closed.\n */\n public dispose(result?: any): void {\n if (!this._isDisposed) {\n this._isDisposed = true;\n this._disposedSubject.next(result);\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, input, QueryList, signal, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { SidenavMode, SidenavModule, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\nimport { CommonModule } from '@angular/common';\nimport { Layout1Manager } from './layout1-manager';\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\nimport { Layout1SecondarySidenavOptions, Layout1SecondarySidenav } from './secondary-sidenav';\n\n/**\n * Layout1 component that provides a layout with sidenavs.\n */\n@Component({\n selector: 'ng0-layout1',\n templateUrl: './layout1.component.html',\n styleUrls: ['./layout1.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, SidenavModule]\n})\nexport class Layout1Component {\n private _zIndexCounter = 1000;\n private readonly _manager = inject(Layout1Manager);\n @ContentChildren(Layout1SidenavDirective) protected readonly _sidenavs?: QueryList<Layout1SidenavDirective>;\n protected readonly _secondarySidenavs = signal<Layout1SecondarySidenav[]>([]);\n protected readonly _openSecondarySidenavs = new Set<Layout1SecondarySidenav>();\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Default position for secondary sidenavs.\n */\n defaultSidenavPosition = input<SidenavPosition>('start');\n\n /**\n * Default size for secondary sidenavs.\n */\n defaultSidenavSize = input<SidenavSize>();\n\n /**\n * Default mode for secondary sidenavs.\n */\n defaultSidenavMode = input<SidenavMode>('over');\n\n /**\n * Default hasBackdrop value for secondary sidenavs.\n */\n defaultSidenavHasBackdrop = input(true);\n\n /**\n * Default closeOnBackdropClick value for secondary sidenavs.\n */\n defaultSidenavCloseOnBackdropClick = input(false);\n\n\n constructor() {\n this._manager.component = this;\n }\n\n /**\n * Push a secondary sidenav.\n * @param template The template for the secondary sidenav.\n * @param options Options for the secondary sidenav.\n * @returns The reference to the pushed secondary sidenav.\n */\n public pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\n options = options || {};\n options.zIndex = options.zIndex ?? this._zIndexCounter++;\n options.mode = options.mode ?? this.defaultSidenavMode();\n options.position = options.position ?? this.defaultSidenavPosition();\n options.size = options.size ?? this.defaultSidenavSize();\n options.hasBackdrop = options.hasBackdrop ?? this.defaultSidenavHasBackdrop();\n options.closeOnBackdropClick = options.closeOnBackdropClick ?? this.defaultSidenavCloseOnBackdropClick();\n\n const sidenavRef = new Layout1SecondarySidenav(template, options);\n this._secondarySidenavs().push(sidenavRef);\n this._changeDetectorRef.markForCheck();\n\n // Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.\n setTimeout(() => {\n this._openSecondarySidenavs.add(sidenavRef);\n this._changeDetectorRef.markForCheck();\n });\n\n sidenavRef.disposed.subscribe((result?: any) => {\n // Close the sidenav first. After the transition ends, it will be removed from DOM.\n this._openSecondarySidenavs.delete(sidenavRef);\n });\n\n return sidenavRef;\n }\n\n /**\n * Close the last secondary sidenav and dispose it.\n * @param result The result to pass when closing the sidenav.\n * @return The reference to the closed secondary sidenav.\n */\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\n const last = this._secondarySidenavs().at(-1);\n if (last) {\n last.dispose(result);\n return last;\n }\n\n return undefined;\n }\n\n /**\n * Get the list of secondary sidenavs.\n */\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\n return this._secondarySidenavs();\n }\n\n protected _onSecondarySidenavTransitionEnd(sidenav: Layout1SecondarySidenav) {\n if (sidenav.isDisposed) {\n const index = this._secondarySidenavs().findIndex(x => x === sidenav);\n this._secondarySidenavs().splice(index, 1);\n }\n }\n}\n","<ng0-sidenav-container>\n <ng0-sidenav-content>\n <ng-content select=\"ng0-layout1-header\" />\n <ng-content select=\"ng0-layout1-content\" />\n </ng0-sidenav-content>\n\n @for (sidenav of _sidenavs; track $index) {\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"sidenav.open()\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n @for (sidenav of _secondarySidenavs(); track $index) {\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n</ng0-sidenav-container>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Layout1 header component.\n */\n@Component({\n selector: 'ng0-layout1-header',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Layout1HeaderComponent {\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Layout1 content component.\n */\n@Component({\n selector: 'ng0-layout1-content',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Layout1ContentComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { Layout1Component } from './layout1.component';\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\nimport { Layout1HeaderComponent } from './layout1-header.component';\nimport { Layout1ContentComponent } from './public-api';\n\nconst items = [\n Layout1Component,\n Layout1SidenavDirective,\n Layout1HeaderComponent,\n Layout1ContentComponent\n];\n\n/**\n * Layout1Module\n */\n@NgModule({\n imports: items,\n exports: items\n})\nexport class Layout1Module { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-localization-locales.mjs","sources":["../../../projects/ng0/localization/locales/en-us.ts","../../../projects/ng0/localization/locales/fa-ir.ts","../../../projects/ng0/localization/locales/bootkit-ng0-localization-locales.ts"],"sourcesContent":["import { Locale } from '@bootkit/ng0/localization';\r\n\r\nconst formatNumber = (n: number) => n.toLocaleString();\r\n\r\nexport const EN_US_LOCALE = new Locale({\r\n name: 'en-US',\r\n rtl: false,\r\n dictionary: {\r\n ok: 'Ok',\r\n cancel: 'Cancel',\r\n warning: 'Warning',\r\n areYouSure: 'Are you sure?',\r\n noRecords: 'No records.',\r\n first: 'First',\r\n last: 'Last',\r\n next: 'Next',\r\n previous: 'Previous',\r\n pageXofY: 'Page {0} of {1}',\r\n },\r\n form: {\r\n validation: {\r\n errors: {\r\n '*': (e) => 'Invalid',\r\n required: (e) => `Required`,\r\n min: (e) => `Minimum: ${formatNumber(e.min)}`,\r\n max: (e) => `Maximum: ${formatNumber(e.max)}`,\r\n minlength: (e) => `Minimum length: ${e.requiredLength}`,\r\n maxlength: (e) => `Maximum length: ${e.requiredLength}`,\r\n email: (e) => `Invalid email`,\r\n }\r\n }\r\n },\r\n formatters: {\r\n 'boolean': ['No', 'Yes'],\r\n },\r\n components: {\r\n table: {\r\n noRecords: 'No records found.',\r\n pagingInfo: (info) => `Showingsdsd ${formatNumber(info.firstRecord)}-${formatNumber(info.lastRecord)} of ${formatNumber(info.totalRecords!)} records`\r\n }\r\n }\r\n});\r\n","import { Locale } from '@bootkit/ng0/localization';\r\n\r\nconst formatNumber = (n: number) => n.toLocaleString();\r\n\r\nexport const FA_IR_LOCALE = new Locale({\r\n name: 'fa-IR',\r\n rtl: true,\r\n dictionary: {\r\n ok: 'تایید',\r\n cancel: 'لغو',\r\n warning: 'هشدار',\r\n areYouSure: 'آیا مطمئن هستید?',\r\n noRecords: 'بدون رکورد',\r\n first: 'اولین',\r\n last: 'آخرین',\r\n next: 'بعدی',\r\n previous: 'قبلی',\r\n pageXofY: 'صفحه {0} از {1}',\r\n },\r\n form: {\r\n validation: {\r\n errors: {\r\n '*': (e) => 'نامعتبر',\r\n required: (e) => `الزامی`,\r\n min: (e) => `حداقل: ${formatNumber(e.min)}`,\r\n max: (e) => `حداکثر: ${formatNumber(e.max)}`,\r\n minlength: (e) => `حداقل ${e.requiredLength} کاراکتر`,\r\n maxlength: (e) => `حداکثر ${e.requiredLength} کاراکتر`,\r\n email: (e) => `ایمیل نامعتبر است`,\r\n }\r\n }\r\n },\r\n formatters: {\r\n 'boolean': ['خیر', 'بله'],\r\n },\r\n components: {\r\n table: {\r\n noRecords: 'رکوردی وجود ندارد',\r\n pagingInfo: (info) => `نمایش ${formatNumber(info.firstRecord)}-${formatNumber(info.lastRecord)} از ${formatNumber(info.totalRecords!)} رکورد`\r\n }\r\n },\r\n data: {\r\n logicalOperators: {\r\n contains: 'شامل',\r\n startsWith: 'شروع',\r\n endsWith: 'پایان',\r\n eq: 'مساوی',\r\n gt: 'بزرگتر',\r\n gte: 'بزرگتر یا مساوی',\r\n lt: 'کوچکتر',\r\n lte: 'کوچکتر یا مساوی',\r\n ne: 'مخالف',\r\n\r\n }\r\n }\r\n});\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["formatNumber"],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-localization-locales.mjs","sources":["../../../projects/ng0/localization/locales/en-us.ts","../../../projects/ng0/localization/locales/fa-ir.ts","../../../projects/ng0/localization/locales/bootkit-ng0-localization-locales.ts"],"sourcesContent":["import { Locale } from '@bootkit/ng0/localization';\n\nconst formatNumber = (n: number) => n.toLocaleString();\n\nexport const EN_US_LOCALE = new Locale({\n name: 'en-US',\n rtl: false,\n dictionary: {\n ok: 'Ok',\n cancel: 'Cancel',\n warning: 'Warning',\n areYouSure: 'Are you sure?',\n noRecords: 'No records.',\n first: 'First',\n last: 'Last',\n next: 'Next',\n previous: 'Previous',\n pageXofY: 'Page {0} of {1}',\n },\n form: {\n validation: {\n errors: {\n '*': (e) => 'Invalid',\n required: (e) => `Required`,\n min: (e) => `Minimum: ${formatNumber(e.min)}`,\n max: (e) => `Maximum: ${formatNumber(e.max)}`,\n minlength: (e) => `Minimum length: ${e.requiredLength}`,\n maxlength: (e) => `Maximum length: ${e.requiredLength}`,\n email: (e) => `Invalid email`,\n }\n }\n },\n formatters: {\n 'boolean': ['No', 'Yes'],\n },\n components: {\n table: {\n noRecords: 'No records found.',\n pagingInfo: (info) => `Showingsdsd ${formatNumber(info.firstRecord)}-${formatNumber(info.lastRecord)} of ${formatNumber(info.totalRecords!)} records`\n }\n }\n});\n","import { Locale } from '@bootkit/ng0/localization';\n\nconst formatNumber = (n: number) => n.toLocaleString();\n\nexport const FA_IR_LOCALE = new Locale({\n name: 'fa-IR',\n rtl: true,\n dictionary: {\n ok: 'تایید',\n cancel: 'لغو',\n warning: 'هشدار',\n areYouSure: 'آیا مطمئن هستید?',\n noRecords: 'بدون رکورد',\n first: 'اولین',\n last: 'آخرین',\n next: 'بعدی',\n previous: 'قبلی',\n pageXofY: 'صفحه {0} از {1}',\n },\n form: {\n validation: {\n errors: {\n '*': (e) => 'نامعتبر',\n required: (e) => `الزامی`,\n min: (e) => `حداقل: ${formatNumber(e.min)}`,\n max: (e) => `حداکثر: ${formatNumber(e.max)}`,\n minlength: (e) => `حداقل ${e.requiredLength} کاراکتر`,\n maxlength: (e) => `حداکثر ${e.requiredLength} کاراکتر`,\n email: (e) => `ایمیل نامعتبر است`,\n }\n }\n },\n formatters: {\n 'boolean': ['خیر', 'بله'],\n },\n components: {\n table: {\n noRecords: 'رکوردی وجود ندارد',\n pagingInfo: (info) => `نمایش ${formatNumber(info.firstRecord)}-${formatNumber(info.lastRecord)} از ${formatNumber(info.totalRecords!)} رکورد`\n }\n },\n data: {\n logicalOperators: {\n contains: 'شامل',\n startsWith: 'شروع',\n endsWith: 'پایان',\n eq: 'مساوی',\n gt: 'بزرگتر',\n gte: 'بزرگتر یا مساوی',\n lt: 'کوچکتر',\n lte: 'کوچکتر یا مساوی',\n ne: 'مخالف',\n\n }\n }\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["formatNumber"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/locale-definition.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/translate-enum.pipe.ts","../../../projects/ng0/localization/translate-boolean-pipe.ts","../../../projects/ng0/localization/formatter.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localize.pipe.ts","../../../projects/ng0/localization/localize-enum.pipe.ts","../../../projects/ng0/localization/localize-boolean-pipe.ts","../../../projects/ng0/localization/localize-date.pipe.ts","../../../projects/ng0/localization/format.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinition } from \"./locale-definition\";\r\nimport { TranslatedValidationError } from \"./types\";\r\nimport { ObjectFormatter } from \"./formatter\";\r\n\r\n/** Locale */\r\nexport class Locale {\r\n constructor(public readonly definition: LocaleDefinition) {\r\n }\r\n\r\n /** \r\n * Returns the name of the locale\r\n * @returns The name of the locale\r\n */\r\n get name(): string {\r\n return this.definition.name;\r\n }\r\n\r\n /** \r\n * Translates a key in the dictionary\r\n * @param key The key to look up\r\n * @param fallback Optional fallback value if the key is not found\r\n * @returns The translated string or the fallbackValue if not found\r\n */\r\n translate(key: string, fallback?: string): string | undefined {\r\n return this.definition.dictionary?.[key] ?? fallback;\r\n }\r\n\r\n /**\r\n * Translates an enum value \r\n * @param enumName The name of the enum \r\n * @param enumValue The value of the enum to translate \r\n * @param fallback\r\n * @returns The translated string or the enum value itself if not found \r\n */\r\n\r\n translateEnum(enumName: string, enumValue: string | number | null | undefined, fallback?: string): string | undefined {\r\n let e = this.definition.enums?.[enumName];\r\n\r\n if (!e) {\r\n return fallback || enumValue?.toString();\r\n }\r\n\r\n if (enumValue === null) {\r\n return e['[null]'] || e['[empty]'];\r\n } else if (enumValue === undefined) {\r\n return e['[undefined]'] || e['[empty]'];\r\n } else if (enumValue === '') {\r\n return e['empty'];\r\n } else {\r\n return e[enumValue] || e['[?]'] || fallback || enumValue?.toString();\r\n }\r\n }\r\n\r\n /** \r\n * Translates a form validation error\r\n * @param errorKey The key of the error to translate\r\n * @param error The error object\r\n */\r\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\r\n const errors = this.definition?.form?.validation?.errors;\r\n\r\n if (!errors) {\r\n return fallbackMessage;\r\n }\r\n\r\n const translatorFunc = errors[errorKey] ?? errors['*'];\r\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\r\n }\r\n\r\n /** \r\n * Translates validation errors \r\n * @param errors Validation errors object\r\n * @returns Array of translated validation errors\r\n */\r\n translateErrors(errors: any): TranslatedValidationError[] {\r\n const result: TranslatedValidationError[] = [];\r\n for (const key in errors) {\r\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\r\n result.push({\r\n key: key,\r\n value: errors[key],\r\n text: this.translateError(key, errors[key])\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /** \r\n * Translates the first error in the validation errors object \r\n * @param errors Validation errors object\r\n * @returns TranslatedValidationError or undefined if no errors\r\n */\r\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\r\n const keys = Object.keys(errors);\r\n if (keys.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const key = keys[0];\r\n const value = errors[key];\r\n return {\r\n key,\r\n value,\r\n text: this.translateError(key, value, fallbackMessage)\r\n };\r\n }\r\n\r\n /**\r\n * Clones and extends this object and returns a new Locale (without modifying this object).\r\n */\r\n extend(definition?: Omit<LocaleDefinition, 'name' | 'rtl'>): Locale {\r\n return new Locale({ ...this.definition, ...definition });\r\n }\r\n\r\n /**\r\n * \r\n * @param date Date string or timestamp\r\n * @returns Formatted date string based on the locale \r\n */\r\n formatDate(date: Date | string | number, format?: string): string {\r\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\r\n }\r\n\r\n format(object: any, formatterName: string, ...params: any[]): string {\r\n let formatter = this.definition.formatters?.[formatterName];\r\n\r\n if (!formatter) {\r\n throw Error(`The formatter \"${formatterName}\" is not defined in locale ${this.definition.name}`);\r\n }\r\n\r\n let formatterType = typeof formatter;\r\n if (formatterType === 'function') {\r\n return (formatter as ObjectFormatter)(object, ...params);\r\n } else if (Array.isArray(formatter)) {\r\n return formatter[+object];\r\n } else if (formatterType == 'object' && formatter != null) {\r\n return (formatter as any)[object] || '';\r\n } else {\r\n throw Error(`Invalid locale formatter: ${formatterName}`);\r\n }\r\n }\r\n}\r\n","import { ObjectFormatter } from \"./formatter\";\r\n\r\n/** Locale dictionary */\r\nexport type LocaleDictionary = { [key: string]: string; };\r\nexport type LocaleEnums = { [enumName: string]: { [enumValue: string]: string } };\r\n\r\n/** Locale Error Translator */\r\nexport type LocaleValidationErrorTranslator = (error: any) => string;\r\n\r\n\r\n/** Locale validation error translator functions */\r\nexport type LocaleValidationErrorTranslators = {\r\n [key: string]: LocaleValidationErrorTranslator;\r\n};\r\n\r\n/**\r\n * A function to format the paging info of a table.\r\n * \r\n */\r\nexport type TableComponentPagingFormatter = (info: {\r\n /**\r\n * The first record in the current page.\r\n */\r\n firstRecord: number,\r\n\r\n /**\r\n * The last record in the current page.\r\n */\r\n lastRecord: number,\r\n\r\n /**\r\n * The total number of records.\r\n */\r\n totalRecords?: number,\r\n\r\n /**\r\n * The current page index.\r\n */\r\n currentPage: number\r\n}) => string;\r\n\r\n/** \r\n * Locale definition\r\n */\r\nexport interface LocaleDefinition {\r\n /** Locale name */\r\n readonly name: string;\r\n\r\n /** Does this locale belongs to a RTL language */\r\n readonly rtl?: boolean;\r\n\r\n /** Locale dictionary */\r\n dictionary?: LocaleDictionary;\r\n enums?: LocaleEnums,\r\n form?: {\r\n validation?: {\r\n /** Form validation error translators. */\r\n errors?: LocaleValidationErrorTranslators\r\n }\r\n },\r\n data?: {\r\n logicalOperators?: {\r\n [operator: string]: string\r\n }\r\n },\r\n components?: {\r\n table?: {\r\n /**\r\n * No records found message.\r\n */\r\n noRecords?: string;\r\n\r\n /** \r\n * Error message displayed when loading data fails. \r\n */\r\n loadError?: string;\r\n\r\n /**\r\n * A format function to format the paging info.\r\n */\r\n pagingInfo?: TableComponentPagingFormatter;\r\n },\r\n select?: {\r\n placeholder?: string;\r\n }\r\n },\r\n\r\n formatters?: {\r\n // boolean?: {\r\n // [booleanKind: string]: string[] // [false, true]\r\n // },\r\n // enum?: {\r\n // [enumName: string]: { [enumValue: string]: string }\r\n // }\r\n // custom?: {\r\n [formatterName: string]: ObjectFormatter | string[] | {\r\n [value: string]: string\r\n }\r\n // },\r\n // date?: {\r\n // calendars?: {\r\n // [calendar: string]: {\r\n // days: string[],\r\n // daysShort: string[],\r\n // months: string[],\r\n // monthsShort: string[],\r\n // }\r\n // }\r\n // };\r\n // }\r\n }\r\n};\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Locale } from './locale';\r\nimport { LocaleChangeEvent } from './types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalizationService {\r\n private _locales: Locale[] = [];\r\n private _activeLocale?: Locale;\r\n private _changeSubject = new Subject<LocaleChangeEvent>();\r\n readonly change = this._changeSubject.asObservable();\r\n\r\n constructor() {\r\n }\r\n\r\n /** \r\n * Adds a Locale \r\n */\r\n add(locale: Locale): void;\r\n /** Adds an array of Locales to this LocaleProvider */\r\n add(locales: Locale[]): void;\r\n add(l: any): void {\r\n if (l instanceof Locale) {\r\n this._locales.push(l);\r\n } else if (Array.isArray(l)) {\r\n l.forEach(x => this.add(x));\r\n } else {\r\n throw Error('Invalid locale');\r\n }\r\n\r\n if (this._locales.length == 1) {\r\n this._activeLocale = this._locales[0];\r\n }\r\n }\r\n\r\n /** Changes the active locale */\r\n set(localeName: string): void {\r\n const locale = this._locales.find(x => x.name === localeName);\r\n if (locale) {\r\n this._changeSubject.next({ old: this._activeLocale, new: locale });\r\n this._activeLocale = locale;\r\n return;\r\n }\r\n\r\n throw Error('Locale not found.');\r\n }\r\n\r\n /** Gets the active locale */\r\n get(): Locale | undefined {\r\n return this._activeLocale;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n\r\n/**\r\n * Pipe to translate a dictionary key into a localized string.\r\n * It uses the LocalizationService to fetch the translation.\r\n * If the translation is not found, it returns the fallback string if provided.\r\n */\r\n@Pipe({\r\n name: 'ng0Translate',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(dictionaryKey: string, fallback?: string) {\r\n return this._ls.get()?.translate(dictionaryKey, fallback) || dictionaryKey;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0TranslateEnum',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslateEnumPipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n /**\r\n * \r\n * @param enumValue \r\n * @param enumName \r\n * @param nullValueKey \r\n * @param returnEnumAsFallback\r\n * @param fallbackKey \r\n * @returns \r\n */\r\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\r\n return this._ls.get()?.translateEnum(enumName, enumValue, fallback);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0TranslateBool',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class TranslateBooleanPipe implements PipeTransform {\r\n\r\n constructor(private localeProvider: LocalizationService) {\r\n }\r\n\r\n transform(value: any, falseKey: string = 'true', trueKey: string = 'false'): any {\r\n return this.localeProvider.get()?.translate(value ? trueKey : falseKey);\r\n }\r\n}\r\n","import { EnvironmentInjector, inject, runInInjectionContext } from \"@angular/core\";\r\nimport { Locale } from \"./locale\";\r\nimport { LocalizationService } from \"./localization.service\";\r\n\r\n/**\r\n * Object formatter function type.\r\n * @param obj The object to format.\r\n * @param params Additional parameters for formatting.\r\n * @returns The formatted value.\r\n */\r\nexport type ObjectFormatter = (obj: any, ...params: any[]) => any;\r\n\r\n/**\r\n * Object formatter-like types. \r\n */\r\nexport type ObjectFormatterLike = ObjectFormatter | string | number | Array<any>;\r\n\r\n/**\r\n * Default object formatter function.\r\n * @param value The item to format.\r\n * @returns The formatted string.\r\n */\r\nexport function defaultFormatter(obj: any): string {\r\n return obj?.toString() || '';\r\n}\r\n\r\n/**\r\n * Creates a field formatter that retrieves the value of a specified field from an object.\r\n * @param field The field name to retrieve.\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createFieldFormatter(field: string): ObjectFormatter {\r\n return (obj: any) => obj?.[field];\r\n}\r\n\r\n/**\r\n * Creates an index formatter that retrieves the value at a specified index from an array.\r\n * @param index The index to retrieve (number or boolean).\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createIndexFormatter(index: number | boolean): ObjectFormatter {\r\n return (obj: any) => {\r\n if (Array.isArray(obj)) {\r\n return obj[+index]; // use + to cast boolean values to numbers\r\n }\r\n\r\n throw Error('Object is not an array');\r\n }\r\n}\r\n\r\n/**\r\n * Creates a number formatter.\r\n * @param minimumIntegerDigits \r\n * @param minimumFractionDigits \r\n * @param maximumFractionDigits \r\n * @param useGrouping \r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createNumberFormatter(\r\n minimumIntegerDigits?: number,\r\n minimumFractionDigits?: number,\r\n maximumFractionDigits?: number,\r\n useGrouping = true): ObjectFormatter {\r\n let locale = inject(LocalizationService, { optional: true })?.get();\r\n const localeName = locale?.definition.name || 'en-US';\r\n\r\n const f = new Intl.NumberFormat(localeName, {\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n useGrouping,\r\n })\r\n\r\n return (n: number) => Number.isFinite(n) ? f.format(n) : '';\r\n}\r\n\r\n/**\r\n * Creates a currency formatter.\r\n * @param minFractions \r\n * @param maxFractions \r\n * @returns \r\n */\r\nexport function createCurrencyFormatter(minFractions = 1, maxFractions = 2): ObjectFormatter {\r\n return (n: number, minFractions, maxFractions) => Number.isFinite(n) ? n.toString() : '';\r\n}\r\n\r\n/**\r\n * Creates a date formatter.\r\n */\r\nexport function createDateFormatter(\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\r\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\r\n zone?: string[], // zone[0]: name, zone[1]: display ('long' | 'short' | 'shortOffset' | 'longOffset' | 'narrowOffset' | 'longGeneric' | 'shortGeneric')\r\n calendar?: string\r\n): ObjectFormatter;\r\nexport function createDateFormatter(options?: Intl.DateTimeFormatOptions): ObjectFormatter;\r\nexport function createDateFormatter(options?: any): ObjectFormatter {\r\n let intlOptions: Intl.DateTimeFormatOptions;\r\n\r\n if (options && (typeof options === 'object')) {\r\n intlOptions = options;\r\n } else {\r\n intlOptions = {\r\n dateStyle: arguments[0],\r\n timeStyle: arguments[1],\r\n timeZone: arguments[2]?.[0],\r\n timeZoneName: arguments[2]?.[1],\r\n calendar: arguments[3]\r\n }\r\n }\r\n\r\n const locale = inject(LocalizationService, { optional: true })?.get();\r\n let intlFormatter: Intl.DateTimeFormat;\r\n\r\n try {\r\n intlFormatter = new Intl.DateTimeFormat(locale?.name, intlOptions as Intl.DateTimeFormatOptions);\r\n return (d: string | number | Date) => intlFormatter.format(new Date(d));\r\n } catch (err) {\r\n console.warn('Invalid date format options:', intlOptions, err);\r\n // Return a fallback formatter\r\n return (d: string | number | Date) => new Date(d).toLocaleString()\r\n }\r\n}\r\n\r\n/**\r\n * Creates a locale-based formatter.\r\n * @param locale The Locale object.\r\n * @param formatterName The format string in the form of \"formatterName:param1:param2:...\"\r\n * @returns A ValueFormatterFunction\r\n * @private\r\n */\r\nexport function createLocaleFormatter(formatterName: string): ObjectFormatter {\r\n let locale = inject(LocalizationService, { optional: true })?.get();\r\n\r\n if (locale == null) {\r\n throw Error('For using locale formatters, provide a Locale object.')\r\n }\r\n\r\n let formatter = locale.definition.formatters?.[formatterName];\r\n let formatterType = typeof formatter;\r\n\r\n if (!formatter) {\r\n console.warn(`The formatter \"${formatterName}\" is not defined in locale ${locale.definition.name}`);\r\n return defaultFormatter;\r\n }\r\n\r\n if (formatterType === 'function') {\r\n return formatter as ObjectFormatter;\r\n } else if (Array.isArray(formatter)) {\r\n return (index: number | boolean) => formatter[+index];\r\n } else if (formatterType == 'object' && formatter != null) {\r\n return (value: string) => (formatter as any)[value] || '';\r\n } else {\r\n throw Error(`Invalid locale formatter: ${formatterName}`);\r\n }\r\n}\r\n\r\n/**\r\n * Creates a composite formatter that applies multiple formatters in sequence. \r\n * @param formatters The list of ObjectFormatterLike values to compose.\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createCompositeFormatter(...formatters: ObjectFormatterLike[]): ObjectFormatter {\r\n const formattersFuncs = formatters.map(item => createObjectFormatter(item as any));\r\n return (obj: any) => formattersFuncs.reduce(\r\n (previous, current, index) => index == 0 ? current(obj) : current(previous)\r\n );\r\n}\r\n\r\n/**\r\n * Creates an ObjectFormatter from various ObjectFormatterLike types.\r\n * @param formatter The ObjectFormatterLike value to convert. \r\n * @param locale Optional locale object for locale-based formatting.\r\n * @param params Additional parameters for the formatter.\r\n * @returns An ObjectFormatter function.\r\n */\r\nexport function createObjectFormatter(formatter: ObjectFormatterLike, ...params: any[]): ObjectFormatter {\r\n switch (typeof formatter) {\r\n case 'function':\r\n return formatter.bind(null, ...params);\r\n case 'number':\r\n return createIndexFormatter(formatter);\r\n case 'string':\r\n switch (formatter[0]) {\r\n case '#':\r\n return createNumberFormatter(...params);\r\n case '$':\r\n return createCurrencyFormatter(...params);\r\n case '@':\r\n return createDateFormatter(...params);\r\n case '*':\r\n return createLocaleFormatter(formatter.substring(1));\r\n default:\r\n return createFieldFormatter(formatter);\r\n }\r\n case 'object':\r\n if (Array.isArray(formatter) && formatter.length > 0) {\r\n if (formatter[0] == 'C') {\r\n return createCompositeFormatter(formatter.slice(1))\r\n } else {\r\n return createObjectFormatter(formatter[0] as string, ...formatter.slice(1));\r\n }\r\n }\r\n break;\r\n }\r\n\r\n throw Error('invalid formatter', { cause: formatter });\r\n}\r\n\r\n/**\r\n * Creates a transform function that converts a ObjectFormatterLike value into a ObjectFormatter.\r\n * @param injector The EnvironmentInjector to use for dependency injection.\r\n * @returns A function that takes a ObjectFormatterLike and returns a ObjectFormatter.\r\n */\r\nexport function objectFormatterAttribute(injector: EnvironmentInjector): ((v: ObjectFormatterLike) => ObjectFormatter) {\r\n return (x: ObjectFormatterLike) => runInInjectionContext(injector, createObjectFormatter.bind(null, x));\r\n};\r\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\r\nimport { createDateFormatter } from './formatter';\r\n\r\n@Pipe({\r\n name: 'ng0Date',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class DatePipe implements PipeTransform {\r\n private _injector = inject(EnvironmentInjector);\r\n\r\n transform(value: Date | string | number,\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\r\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\r\n zone?: string[],\r\n calendar?: string): string;\r\n transform(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;\r\n transform(value: Date | string | number, ...options: any[]): string {\r\n const formatter = runInInjectionContext(this._injector, createDateFormatter.bind(null, ...options));\r\n return formatter(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0Localize',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizePipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(dictionaryKey: string) {\r\n return this._ls.get()?.translate(dictionaryKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeEnum',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeEnumPipe implements PipeTransform {\r\n private _recompute = true;\r\n private _value?: string;\r\n\r\n constructor(private _ls: LocalizationService) {\r\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\r\n }\r\n\r\n /**\r\n * \r\n * @param enumValue \r\n * @param enumName \r\n * @param nullValueKey \r\n * @param returnEnumAsFallback\r\n * @param fallbackKey \r\n * @returns \r\n */\r\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\r\n if (this._recompute) {\r\n this._value = this._ls.get()?.translateEnum(enumName, enumValue, fallback);\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeBool',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeBooleanPipe implements PipeTransform {\r\n constructor(private _ls: LocalizationService) {\r\n }\r\n\r\n transform(value: any, falseKey = 'true', trueKey: 'false') {\r\n return this._ls.get()?.translate(value ? trueKey : falseKey);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Locale } from './locale';\r\nimport { LocalizationService } from './localization.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Pipe({\r\n name: 'ng0LocalizeDate',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class LocalizeDatePipe implements PipeTransform {\r\n private _value?: string;\r\n private _recompute = true;\r\n\r\n constructor(private _ls: LocalizationService) {\r\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\r\n }\r\n\r\n transform(value: number | string, format?: string) {\r\n if (this._recompute) {\r\n this._value = this._ls.get()?.formatDate(value, format);\r\n this._recompute = false;\r\n }\r\n\r\n return this._value;\r\n }\r\n}\r\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\r\nimport { createObjectFormatter, ObjectFormatterLike } from './formatter';\r\n\r\n/**\r\n * Format pipe to format objects using various formatter types.\r\n */\r\n@Pipe({\r\n name: 'ng0Format',\r\n standalone: true,\r\n pure: true\r\n})\r\nexport class FormatPipe implements PipeTransform {\r\n private _injector = inject(EnvironmentInjector);\r\n \r\n transform(obj: any, formatter: ObjectFormatterLike, ...params: any[]): any {\r\n const frmtFunc = runInInjectionContext(this._injector, createObjectFormatter.bind(null, formatter, ...params));\r\n return frmtFunc(obj);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TranslatePipe } from './translate.pipe';\r\nimport { TranslateEnumPipe } from './translate-enum.pipe';\r\nimport { TranslateBooleanPipe } from './translate-boolean-pipe';\r\nimport { DatePipe } from './date.pipe';\r\nimport { LocalizePipe } from './localize.pipe';\r\nimport { LocalizeEnumPipe } from './localize-enum.pipe';\r\nimport { LocalizeBooleanPipe } from './localize-boolean-pipe';\r\nimport { LocalizeDatePipe } from './localize-date.pipe';\r\nimport { FormatPipe } from './format.pipe';\r\n\r\nconst Declares = [\r\n // Pure pipes\r\n TranslatePipe,\r\n TranslateEnumPipe,\r\n TranslateBooleanPipe,\r\n DatePipe,\r\n FormatPipe,\r\n\r\n // Impure pipes\r\n LocalizePipe,\r\n LocalizeEnumPipe,\r\n LocalizeBooleanPipe,\r\n LocalizeDatePipe\r\n];\r\n\r\n@NgModule({\r\n imports: Declares,\r\n exports: Declares\r\n})\r\nexport class LocalizationModule {\r\n}\r\n\r\n","import { InjectionToken } from '@angular/core';\r\nimport { LocalizationService } from './localization.service';\r\nimport { Locale } from './locale';\r\n\r\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\r\n\r\nexport interface TranslatedValidationError {\r\n /** Error key */\r\n key: string;\r\n \r\n /** Error object */\r\n value: any;\r\n \r\n /** localized error text */\r\n text?: string;\r\n }\r\n \r\n export interface LocaleChangeEvent {\r\n old?: Locale;\r\n new: Locale;\r\n }\r\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-localization.mjs","sources":["../../../projects/ng0/localization/locale.ts","../../../projects/ng0/localization/locale-definition.ts","../../../projects/ng0/localization/localization.service.ts","../../../projects/ng0/localization/translate.pipe.ts","../../../projects/ng0/localization/translate-enum.pipe.ts","../../../projects/ng0/localization/translate-boolean-pipe.ts","../../../projects/ng0/localization/formatter.ts","../../../projects/ng0/localization/date.pipe.ts","../../../projects/ng0/localization/localize.pipe.ts","../../../projects/ng0/localization/localize-enum.pipe.ts","../../../projects/ng0/localization/localize-boolean-pipe.ts","../../../projects/ng0/localization/localize-date.pipe.ts","../../../projects/ng0/localization/format.pipe.ts","../../../projects/ng0/localization/localization.module.ts","../../../projects/ng0/localization/types.ts","../../../projects/ng0/localization/bootkit-ng0-localization.ts"],"sourcesContent":["import { LocaleDefinition } from \"./locale-definition\";\nimport { TranslatedValidationError } from \"./types\";\nimport { ObjectFormatter } from \"./formatter\";\n\n/** Locale */\nexport class Locale {\n constructor(public readonly definition: LocaleDefinition) {\n }\n\n /** \n * Returns the name of the locale\n * @returns The name of the locale\n */\n get name(): string {\n return this.definition.name;\n }\n\n /** \n * Translates a key in the dictionary\n * @param key The key to look up\n * @param fallback Optional fallback value if the key is not found\n * @returns The translated string or the fallbackValue if not found\n */\n translate(key: string, fallback?: string): string | undefined {\n return this.definition.dictionary?.[key] ?? fallback;\n }\n\n /**\n * Translates an enum value \n * @param enumName The name of the enum \n * @param enumValue The value of the enum to translate \n * @param fallback\n * @returns The translated string or the enum value itself if not found \n */\n\n translateEnum(enumName: string, enumValue: string | number | null | undefined, fallback?: string): string | undefined {\n let e = this.definition.enums?.[enumName];\n\n if (!e) {\n return fallback || enumValue?.toString();\n }\n\n if (enumValue === null) {\n return e['[null]'] || e['[empty]'];\n } else if (enumValue === undefined) {\n return e['[undefined]'] || e['[empty]'];\n } else if (enumValue === '') {\n return e['empty'];\n } else {\n return e[enumValue] || e['[?]'] || fallback || enumValue?.toString();\n }\n }\n\n /** \n * Translates a form validation error\n * @param errorKey The key of the error to translate\n * @param error The error object\n */\n translateError(errorKey: string, error: any, fallbackMessage: string | undefined = undefined): string | undefined {\n const errors = this.definition?.form?.validation?.errors;\n\n if (!errors) {\n return fallbackMessage;\n }\n\n const translatorFunc = errors[errorKey] ?? errors['*'];\n return typeof translatorFunc === 'function' ? translatorFunc(error) : fallbackMessage;\n }\n\n /** \n * Translates validation errors \n * @param errors Validation errors object\n * @returns Array of translated validation errors\n */\n translateErrors(errors: any): TranslatedValidationError[] {\n const result: TranslatedValidationError[] = [];\n for (const key in errors) {\n if (Object.prototype.hasOwnProperty.call(errors, key)) {\n result.push({\n key: key,\n value: errors[key],\n text: this.translateError(key, errors[key])\n });\n }\n }\n\n return result;\n }\n\n /** \n * Translates the first error in the validation errors object \n * @param errors Validation errors object\n * @returns TranslatedValidationError or undefined if no errors\n */\n translateFirstError(errors: any, fallbackMessage: string | undefined = undefined): TranslatedValidationError | undefined {\n const keys = Object.keys(errors);\n if (keys.length === 0) {\n return undefined;\n }\n\n const key = keys[0];\n const value = errors[key];\n return {\n key,\n value,\n text: this.translateError(key, value, fallbackMessage)\n };\n }\n\n /**\n * Clones and extends this object and returns a new Locale (without modifying this object).\n */\n extend(definition?: Omit<LocaleDefinition, 'name' | 'rtl'>): Locale {\n return new Locale({ ...this.definition, ...definition });\n }\n\n /**\n * \n * @param date Date string or timestamp\n * @returns Formatted date string based on the locale \n */\n formatDate(date: Date | string | number, format?: string): string {\n return date ? new Date(date).toLocaleDateString(this.definition.name, { hour: '2-digit', minute: '2-digit' }) : '';\n }\n\n format(object: any, formatterName: string, ...params: any[]): string {\n let formatter = this.definition.formatters?.[formatterName];\n\n if (!formatter) {\n throw Error(`The formatter \"${formatterName}\" is not defined in locale ${this.definition.name}`);\n }\n\n let formatterType = typeof formatter;\n if (formatterType === 'function') {\n return (formatter as ObjectFormatter)(object, ...params);\n } else if (Array.isArray(formatter)) {\n return formatter[+object];\n } else if (formatterType == 'object' && formatter != null) {\n return (formatter as any)[object] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n }\n}\n","import { ObjectFormatter } from \"./formatter\";\n\n/** Locale dictionary */\nexport type LocaleDictionary = { [key: string]: string; };\nexport type LocaleEnums = { [enumName: string]: { [enumValue: string]: string } };\n\n/** Locale Error Translator */\nexport type LocaleValidationErrorTranslator = (error: any) => string;\n\n\n/** Locale validation error translator functions */\nexport type LocaleValidationErrorTranslators = {\n [key: string]: LocaleValidationErrorTranslator;\n};\n\n/**\n * A function to format the paging info of a table.\n * \n */\nexport type TableComponentPagingFormatter = (info: {\n /**\n * The first record in the current page.\n */\n firstRecord: number,\n\n /**\n * The last record in the current page.\n */\n lastRecord: number,\n\n /**\n * The total number of records.\n */\n totalRecords?: number,\n\n /**\n * The current page index.\n */\n currentPage: number\n}) => string;\n\n/** \n * Locale definition\n */\nexport interface LocaleDefinition {\n /** Locale name */\n readonly name: string;\n\n /** Does this locale belongs to a RTL language */\n readonly rtl?: boolean;\n\n /** Locale dictionary */\n dictionary?: LocaleDictionary;\n enums?: LocaleEnums,\n form?: {\n validation?: {\n /** Form validation error translators. */\n errors?: LocaleValidationErrorTranslators\n }\n },\n data?: {\n logicalOperators?: {\n [operator: string]: string\n }\n },\n components?: {\n table?: {\n /**\n * No records found message.\n */\n noRecords?: string;\n\n /** \n * Error message displayed when loading data fails. \n */\n loadError?: string;\n\n /**\n * A format function to format the paging info.\n */\n pagingInfo?: TableComponentPagingFormatter;\n },\n select?: {\n placeholder?: string;\n }\n },\n\n formatters?: {\n // boolean?: {\n // [booleanKind: string]: string[] // [false, true]\n // },\n // enum?: {\n // [enumName: string]: { [enumValue: string]: string }\n // }\n // custom?: {\n [formatterName: string]: ObjectFormatter | string[] | {\n [value: string]: string\n }\n // },\n // date?: {\n // calendars?: {\n // [calendar: string]: {\n // days: string[],\n // daysShort: string[],\n // months: string[],\n // monthsShort: string[],\n // }\n // }\n // };\n // }\n }\n};\n\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Locale } from './locale';\nimport { LocaleChangeEvent } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizationService {\n private _locales: Locale[] = [];\n private _activeLocale?: Locale;\n private _changeSubject = new Subject<LocaleChangeEvent>();\n readonly change = this._changeSubject.asObservable();\n\n constructor() {\n }\n\n /** \n * Adds a Locale \n */\n add(locale: Locale): void;\n /** Adds an array of Locales to this LocaleProvider */\n add(locales: Locale[]): void;\n add(l: any): void {\n if (l instanceof Locale) {\n this._locales.push(l);\n } else if (Array.isArray(l)) {\n l.forEach(x => this.add(x));\n } else {\n throw Error('Invalid locale');\n }\n\n if (this._locales.length == 1) {\n this._activeLocale = this._locales[0];\n }\n }\n\n /** Changes the active locale */\n set(localeName: string): void {\n const locale = this._locales.find(x => x.name === localeName);\n if (locale) {\n this._changeSubject.next({ old: this._activeLocale, new: locale });\n this._activeLocale = locale;\n return;\n }\n\n throw Error('Locale not found.');\n }\n\n /** Gets the active locale */\n get(): Locale | undefined {\n return this._activeLocale;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n\n/**\n * Pipe to translate a dictionary key into a localized string.\n * It uses the LocalizationService to fetch the translation.\n * If the translation is not found, it returns the fallback string if provided.\n */\n@Pipe({\n name: 'ng0Translate',\n standalone: true,\n pure: true\n})\nexport class TranslatePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string, fallback?: string) {\n return this._ls.get()?.translate(dictionaryKey, fallback) || dictionaryKey;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateEnum',\n standalone: true,\n pure: true\n})\nexport class TranslateEnumPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n return this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0TranslateBool',\n standalone: true,\n pure: true\n})\nexport class TranslateBooleanPipe implements PipeTransform {\n\n constructor(private localeProvider: LocalizationService) {\n }\n\n transform(value: any, falseKey: string = 'true', trueKey: string = 'false'): any {\n return this.localeProvider.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { EnvironmentInjector, inject, runInInjectionContext } from \"@angular/core\";\nimport { Locale } from \"./locale\";\nimport { LocalizationService } from \"./localization.service\";\n\n/**\n * Object formatter function type.\n * @param obj The object to format.\n * @param params Additional parameters for formatting.\n * @returns The formatted value.\n */\nexport type ObjectFormatter = (obj: any, ...params: any[]) => any;\n\n/**\n * Object formatter-like types. \n */\nexport type ObjectFormatterLike = ObjectFormatter | string | number | Array<any>;\n\n/**\n * Default object formatter function.\n * @param value The item to format.\n * @returns The formatted string.\n */\nexport function defaultFormatter(obj: any): string {\n return obj?.toString() || '';\n}\n\n/**\n * Creates a field formatter that retrieves the value of a specified field from an object.\n * @param field The field name to retrieve.\n * @returns An ObjectFormatter function.\n */\nexport function createFieldFormatter(field: string): ObjectFormatter {\n return (obj: any) => obj?.[field];\n}\n\n/**\n * Creates an index formatter that retrieves the value at a specified index from an array.\n * @param index The index to retrieve (number or boolean).\n * @returns An ObjectFormatter function.\n */\nexport function createIndexFormatter(index: number | boolean): ObjectFormatter {\n return (obj: any) => {\n if (Array.isArray(obj)) {\n return obj[+index]; // use + to cast boolean values to numbers\n }\n\n throw Error('Object is not an array');\n }\n}\n\n/**\n * Creates a number formatter.\n * @param minimumIntegerDigits \n * @param minimumFractionDigits \n * @param maximumFractionDigits \n * @param useGrouping \n * @returns An ObjectFormatter function.\n */\nexport function createNumberFormatter(\n minimumIntegerDigits?: number,\n minimumFractionDigits?: number,\n maximumFractionDigits?: number,\n useGrouping = true): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n const localeName = locale?.definition.name || 'en-US';\n\n const f = new Intl.NumberFormat(localeName, {\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n useGrouping,\n })\n\n return (n: number) => Number.isFinite(n) ? f.format(n) : '';\n}\n\n/**\n * Creates a currency formatter.\n * @param minFractions \n * @param maxFractions \n * @returns \n */\nexport function createCurrencyFormatter(minFractions = 1, maxFractions = 2): ObjectFormatter {\n return (n: number, minFractions, maxFractions) => Number.isFinite(n) ? n.toString() : '';\n}\n\n/**\n * Creates a date formatter.\n */\nexport function createDateFormatter(\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[], // zone[0]: name, zone[1]: display ('long' | 'short' | 'shortOffset' | 'longOffset' | 'narrowOffset' | 'longGeneric' | 'shortGeneric')\n calendar?: string\n): ObjectFormatter;\nexport function createDateFormatter(options?: Intl.DateTimeFormatOptions): ObjectFormatter;\nexport function createDateFormatter(options?: any): ObjectFormatter {\n let intlOptions: Intl.DateTimeFormatOptions;\n\n if (options && (typeof options === 'object')) {\n intlOptions = options;\n } else {\n intlOptions = {\n dateStyle: arguments[0],\n timeStyle: arguments[1],\n timeZone: arguments[2]?.[0],\n timeZoneName: arguments[2]?.[1],\n calendar: arguments[3]\n }\n }\n\n const locale = inject(LocalizationService, { optional: true })?.get();\n let intlFormatter: Intl.DateTimeFormat;\n\n try {\n intlFormatter = new Intl.DateTimeFormat(locale?.name, intlOptions as Intl.DateTimeFormatOptions);\n return (d: string | number | Date) => intlFormatter.format(new Date(d));\n } catch (err) {\n console.warn('Invalid date format options:', intlOptions, err);\n // Return a fallback formatter\n return (d: string | number | Date) => new Date(d).toLocaleString()\n }\n}\n\n/**\n * Creates a locale-based formatter.\n * @param locale The Locale object.\n * @param formatterName The format string in the form of \"formatterName:param1:param2:...\"\n * @returns A ValueFormatterFunction\n * @private\n */\nexport function createLocaleFormatter(formatterName: string): ObjectFormatter {\n let locale = inject(LocalizationService, { optional: true })?.get();\n\n if (locale == null) {\n throw Error('For using locale formatters, provide a Locale object.')\n }\n\n let formatter = locale.definition.formatters?.[formatterName];\n let formatterType = typeof formatter;\n\n if (!formatter) {\n console.warn(`The formatter \"${formatterName}\" is not defined in locale ${locale.definition.name}`);\n return defaultFormatter;\n }\n\n if (formatterType === 'function') {\n return formatter as ObjectFormatter;\n } else if (Array.isArray(formatter)) {\n return (index: number | boolean) => formatter[+index];\n } else if (formatterType == 'object' && formatter != null) {\n return (value: string) => (formatter as any)[value] || '';\n } else {\n throw Error(`Invalid locale formatter: ${formatterName}`);\n }\n}\n\n/**\n * Creates a composite formatter that applies multiple formatters in sequence. \n * @param formatters The list of ObjectFormatterLike values to compose.\n * @returns An ObjectFormatter function.\n */\nexport function createCompositeFormatter(...formatters: ObjectFormatterLike[]): ObjectFormatter {\n const formattersFuncs = formatters.map(item => createObjectFormatter(item as any));\n return (obj: any) => formattersFuncs.reduce(\n (previous, current, index) => index == 0 ? current(obj) : current(previous)\n );\n}\n\n/**\n * Creates an ObjectFormatter from various ObjectFormatterLike types.\n * @param formatter The ObjectFormatterLike value to convert. \n * @param locale Optional locale object for locale-based formatting.\n * @param params Additional parameters for the formatter.\n * @returns An ObjectFormatter function.\n */\nexport function createObjectFormatter(formatter: ObjectFormatterLike, ...params: any[]): ObjectFormatter {\n switch (typeof formatter) {\n case 'function':\n return formatter.bind(null, ...params);\n case 'number':\n return createIndexFormatter(formatter);\n case 'string':\n switch (formatter[0]) {\n case '#':\n return createNumberFormatter(...params);\n case '$':\n return createCurrencyFormatter(...params);\n case '@':\n return createDateFormatter(...params);\n case '*':\n return createLocaleFormatter(formatter.substring(1));\n default:\n return createFieldFormatter(formatter);\n }\n case 'object':\n if (Array.isArray(formatter) && formatter.length > 0) {\n if (formatter[0] == 'C') {\n return createCompositeFormatter(formatter.slice(1))\n } else {\n return createObjectFormatter(formatter[0] as string, ...formatter.slice(1));\n }\n }\n break;\n }\n\n throw Error('invalid formatter', { cause: formatter });\n}\n\n/**\n * Creates a transform function that converts a ObjectFormatterLike value into a ObjectFormatter.\n * @param injector The EnvironmentInjector to use for dependency injection.\n * @returns A function that takes a ObjectFormatterLike and returns a ObjectFormatter.\n */\nexport function objectFormatterAttribute(injector: EnvironmentInjector): ((v: ObjectFormatterLike) => ObjectFormatter) {\n return (x: ObjectFormatterLike) => runInInjectionContext(injector, createObjectFormatter.bind(null, x));\n};\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createDateFormatter } from './formatter';\n\n@Pipe({\n name: 'ng0Date',\n standalone: true,\n pure: true\n})\nexport class DatePipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n\n transform(value: Date | string | number,\n dateStyle?: 'short' | 'medium' | 'long' | 'full',\n timeStyle?: 'short' | 'medium' | 'long' | 'full',\n zone?: string[],\n calendar?: string): string;\n transform(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;\n transform(value: Date | string | number, ...options: any[]): string {\n const formatter = runInInjectionContext(this._injector, createDateFormatter.bind(null, ...options));\n return formatter(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0Localize',\n standalone: true,\n pure: false\n})\nexport class LocalizePipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(dictionaryKey: string) {\n return this._ls.get()?.translate(dictionaryKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeEnum',\n standalone: true,\n pure: false\n})\nexport class LocalizeEnumPipe implements PipeTransform {\n private _recompute = true;\n private _value?: string;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n /**\n * \n * @param enumValue \n * @param enumName \n * @param nullValueKey \n * @param returnEnumAsFallback\n * @param fallbackKey \n * @returns \n */\n transform(enumValue: string | number | null | undefined, enumName: string, fallback?: string): any {\n if (this._recompute) {\n this._value = this._ls.get()?.translateEnum(enumName, enumValue, fallback);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LocalizationService } from './localization.service';\n\n@Pipe({\n name: 'ng0LocalizeBool',\n standalone: true,\n pure: false\n})\nexport class LocalizeBooleanPipe implements PipeTransform {\n constructor(private _ls: LocalizationService) {\n }\n\n transform(value: any, falseKey = 'true', trueKey: 'false') {\n return this._ls.get()?.translate(value ? trueKey : falseKey);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Locale } from './locale';\nimport { LocalizationService } from './localization.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Pipe({\n name: 'ng0LocalizeDate',\n standalone: true,\n pure: false\n})\nexport class LocalizeDatePipe implements PipeTransform {\n private _value?: string;\n private _recompute = true;\n\n constructor(private _ls: LocalizationService) {\n _ls.change.pipe(takeUntilDestroyed()).subscribe(x => this._recompute = true);\n }\n\n transform(value: number | string, format?: string) {\n if (this._recompute) {\n this._value = this._ls.get()?.formatDate(value, format);\n this._recompute = false;\n }\n\n return this._value;\n }\n}\n","import { EnvironmentInjector, inject, Pipe, PipeTransform, runInInjectionContext } from '@angular/core';\nimport { createObjectFormatter, ObjectFormatterLike } from './formatter';\n\n/**\n * Format pipe to format objects using various formatter types.\n */\n@Pipe({\n name: 'ng0Format',\n standalone: true,\n pure: true\n})\nexport class FormatPipe implements PipeTransform {\n private _injector = inject(EnvironmentInjector);\n \n transform(obj: any, formatter: ObjectFormatterLike, ...params: any[]): any {\n const frmtFunc = runInInjectionContext(this._injector, createObjectFormatter.bind(null, formatter, ...params));\n return frmtFunc(obj);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslatePipe } from './translate.pipe';\nimport { TranslateEnumPipe } from './translate-enum.pipe';\nimport { TranslateBooleanPipe } from './translate-boolean-pipe';\nimport { DatePipe } from './date.pipe';\nimport { LocalizePipe } from './localize.pipe';\nimport { LocalizeEnumPipe } from './localize-enum.pipe';\nimport { LocalizeBooleanPipe } from './localize-boolean-pipe';\nimport { LocalizeDatePipe } from './localize-date.pipe';\nimport { FormatPipe } from './format.pipe';\n\nconst Declares = [\n // Pure pipes\n TranslatePipe,\n TranslateEnumPipe,\n TranslateBooleanPipe,\n DatePipe,\n FormatPipe,\n\n // Impure pipes\n LocalizePipe,\n LocalizeEnumPipe,\n LocalizeBooleanPipe,\n LocalizeDatePipe\n];\n\n@NgModule({\n imports: Declares,\n exports: Declares\n})\nexport class LocalizationModule {\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { LocalizationService } from './localization.service';\nimport { Locale } from './locale';\n\nexport const LOCALE = new InjectionToken<Locale | LocalizationService>('LOCALE');\n\nexport interface TranslatedValidationError {\n /** Error key */\n key: string;\n \n /** Error object */\n value: any;\n \n /** localized error text */\n text?: string;\n }\n \n export interface LocaleChangeEvent {\n old?: Locale;\n new: Locale;\n }\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocalizationService"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-platform-browser.mjs","sources":["../../../projects/ng0/platform/browser/clipboard/clipboard.service.ts","../../../projects/ng0/platform/browser/clipboard/clipboard-copy.directive.ts","../../../projects/ng0/platform/browser/intersection-observer.directive.ts","../../../projects/ng0/platform/browser/bootkit-ng0-platform-browser.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ClipboardService {\r\n private _writeSubject = new Subject<any>;\r\n public readonly write = this._writeSubject.asObservable();\r\n\r\n constructor() { }\r\n\r\n public writeText(text: string) {\r\n window.navigator.clipboard.writeText(text);\r\n this._writeSubject.next(text);\r\n }\r\n}\r\n","import { Directive, HostListener, input } from '@angular/core';\r\nimport { ClipboardService } from './clipboard.service';\r\n\r\n@Directive({\r\n selector: '[ng0-clipboard-copy]',\r\n standalone: true\r\n})\r\nexport class ClipboardCopyDirective {\r\n public value = input<string>(undefined, {alias: 'ng0-clipboard-copy'})\r\n\r\n constructor(private clipboardService: ClipboardService) {\r\n }\r\n\r\n \r\n\r\n @HostListener('click') private _onHostClick() {\r\n this.clipboardService.writeText(this.value()!);\r\n }\r\n}\r\n","import { ElementRef, input, OnInit, PLATFORM_ID, Directive, OnDestroy, Output, EventEmitter, inject, Renderer2, booleanAttribute } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\n\r\n/**\r\n * Directive that observes the intersection of an element with the viewport and optionally applies CSS classes when the element enters or leaves the viewport.\r\n * It uses the Intersection Observer API to monitor visibility changes.\r\n * It can be used to trigger animate-on-scroll (AOS) animations, lazy loading, or other actions based on element visibility.\r\n */\r\n@Directive({\r\n selector: '[ng0IntersectionObserver]',\r\n exportAs: 'ng0IntersectionObserver',\r\n standalone: true\r\n})\r\nexport class IntersectionObserverDirective implements OnInit, OnDestroy {\r\n private readonly _platformId = inject(PLATFORM_ID);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _renderer = inject(Renderer2);\r\n private _entered?: boolean;\r\n private _observer?: IntersectionObserver;\r\n private _addClass(c: string) { this._renderer.addClass(this._elementRef.nativeElement, c) };\r\n private _removeClass(c: string) { this._renderer.removeClass(this._elementRef.nativeElement, c) };\r\n\r\n /**\r\n * Threshold(s) at which to trigger the intersection callback.\r\n * Can be a single number or an array of numbers between 0 and 1.\r\n * For example, 0.5 means the callback will be triggered when 50% of the element is visible in the viewport.\r\n */\r\n public readonly threshold = input<number | number[] | undefined>();\r\n\r\n /**\r\n * Root element to use for intersection observation. \r\n * If not provided, the viewport (browser window) is used as the root.\r\n */\r\n public readonly root = input<Element | Document | null | undefined>();\r\n\r\n /**\r\n * Root margin to apply to the intersection observer.\r\n * This can be a string similar to the CSS margin property, e.g., '10px 20px 30px 40px'.\r\n * It defines the margin around the root element (viewport) to consider for intersection.\r\n */\r\n public readonly rootMargin = input<string | undefined>();\r\n\r\n /**\r\n * Css class to apply when the element enters the viewport.\r\n */\r\n public readonly enterClass = input<string | undefined>();\r\n\r\n /**\r\n * Css class to apply when the element leaves the viewport.\r\n */\r\n public readonly leaveClass = input<string | undefined>();\r\n\r\n /**\r\n * Whether to observe only once (true) or continuously (false).\r\n * If true, the observer will disconnect after the first intersection event.\r\n * @default true\r\n */\r\n public readonly once = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * Event emitted when the element enters the viewport.\r\n */\r\n @Output() public readonly enter = new EventEmitter<IntersectionObserverEntry>();\r\n\r\n /**\r\n * Event emitted when the element leaves the viewport.\r\n * This event will only be emitted if the element has previously entered the viewport.\r\n */\r\n @Output() public readonly leave = new EventEmitter<IntersectionObserverEntry>();\r\n\r\n\r\n ngOnInit(): void {\r\n if (isPlatformServer(this._platformId)) {\r\n return;\r\n }\r\n\r\n this._setupObserver();\r\n }\r\n\r\n private _setupObserver() {\r\n this._observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n if (this.enterClass()) {\r\n this._addClass(this.enterClass()!);\r\n\r\n if (this._entered === false && this.leaveClass()) {\r\n this._removeClass(this.leaveClass()!);\r\n }\r\n }\r\n\r\n this._entered = true;\r\n this.enter.emit(entry);\r\n\r\n if (this.once()) {\r\n this.disconnect();\r\n }\r\n } else {\r\n if (this._entered) {\r\n if (this.leaveClass()) {\r\n this._addClass(this.leaveClass()!);\r\n\r\n if (this.enterClass()) {\r\n this._removeClass(this.enterClass()!);\r\n }\r\n }\r\n\r\n this._entered = false;\r\n this.leave.emit(entry);\r\n\r\n if (this.once()) {\r\n this.disconnect();\r\n }\r\n }\r\n }\r\n });\r\n },\r\n {\r\n root: this.root(),\r\n threshold: this.threshold(),\r\n rootMargin: this.rootMargin()\r\n }\r\n );\r\n\r\n this._observer.takeRecords(); // Clear initial records\r\n this._observer.observe(this._elementRef.nativeElement);\r\n }\r\n\r\n /**\r\n * Disconnects the intersection observer.\r\n * This stops all observation and releases resources.\r\n */\r\n public disconnect(): void {\r\n this._observer?.disconnect();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disconnect();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClipboardService"],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-platform-browser.mjs","sources":["../../../projects/ng0/platform/browser/clipboard/clipboard.service.ts","../../../projects/ng0/platform/browser/clipboard/clipboard-copy.directive.ts","../../../projects/ng0/platform/browser/intersection-observer.directive.ts","../../../projects/ng0/platform/browser/bootkit-ng0-platform-browser.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClipboardService {\n private _writeSubject = new Subject<any>;\n public readonly write = this._writeSubject.asObservable();\n\n constructor() { }\n\n public writeText(text: string) {\n window.navigator.clipboard.writeText(text);\n this._writeSubject.next(text);\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\nimport { ClipboardService } from './clipboard.service';\n\n@Directive({\n selector: '[ng0-clipboard-copy]',\n standalone: true\n})\nexport class ClipboardCopyDirective {\n public value = input<string>(undefined, {alias: 'ng0-clipboard-copy'})\n\n constructor(private clipboardService: ClipboardService) {\n }\n\n \n\n @HostListener('click') private _onHostClick() {\n this.clipboardService.writeText(this.value()!);\n }\n}\n","import { ElementRef, input, OnInit, PLATFORM_ID, Directive, OnDestroy, Output, EventEmitter, inject, Renderer2, booleanAttribute } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\n\n/**\n * Directive that observes the intersection of an element with the viewport and optionally applies CSS classes when the element enters or leaves the viewport.\n * It uses the Intersection Observer API to monitor visibility changes.\n * It can be used to trigger animate-on-scroll (AOS) animations, lazy loading, or other actions based on element visibility.\n */\n@Directive({\n selector: '[ng0IntersectionObserver]',\n exportAs: 'ng0IntersectionObserver',\n standalone: true\n})\nexport class IntersectionObserverDirective implements OnInit, OnDestroy {\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n private _entered?: boolean;\n private _observer?: IntersectionObserver;\n private _addClass(c: string) { this._renderer.addClass(this._elementRef.nativeElement, c) };\n private _removeClass(c: string) { this._renderer.removeClass(this._elementRef.nativeElement, c) };\n\n /**\n * Threshold(s) at which to trigger the intersection callback.\n * Can be a single number or an array of numbers between 0 and 1.\n * For example, 0.5 means the callback will be triggered when 50% of the element is visible in the viewport.\n */\n public readonly threshold = input<number | number[] | undefined>();\n\n /**\n * Root element to use for intersection observation. \n * If not provided, the viewport (browser window) is used as the root.\n */\n public readonly root = input<Element | Document | null | undefined>();\n\n /**\n * Root margin to apply to the intersection observer.\n * This can be a string similar to the CSS margin property, e.g., '10px 20px 30px 40px'.\n * It defines the margin around the root element (viewport) to consider for intersection.\n */\n public readonly rootMargin = input<string | undefined>();\n\n /**\n * Css class to apply when the element enters the viewport.\n */\n public readonly enterClass = input<string | undefined>();\n\n /**\n * Css class to apply when the element leaves the viewport.\n */\n public readonly leaveClass = input<string | undefined>();\n\n /**\n * Whether to observe only once (true) or continuously (false).\n * If true, the observer will disconnect after the first intersection event.\n * @default true\n */\n public readonly once = input(true, { transform: booleanAttribute });\n\n /**\n * Event emitted when the element enters the viewport.\n */\n @Output() public readonly enter = new EventEmitter<IntersectionObserverEntry>();\n\n /**\n * Event emitted when the element leaves the viewport.\n * This event will only be emitted if the element has previously entered the viewport.\n */\n @Output() public readonly leave = new EventEmitter<IntersectionObserverEntry>();\n\n\n ngOnInit(): void {\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this._setupObserver();\n }\n\n private _setupObserver() {\n this._observer = new IntersectionObserver(\n (entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n if (this.enterClass()) {\n this._addClass(this.enterClass()!);\n\n if (this._entered === false && this.leaveClass()) {\n this._removeClass(this.leaveClass()!);\n }\n }\n\n this._entered = true;\n this.enter.emit(entry);\n\n if (this.once()) {\n this.disconnect();\n }\n } else {\n if (this._entered) {\n if (this.leaveClass()) {\n this._addClass(this.leaveClass()!);\n\n if (this.enterClass()) {\n this._removeClass(this.enterClass()!);\n }\n }\n\n this._entered = false;\n this.leave.emit(entry);\n\n if (this.once()) {\n this.disconnect();\n }\n }\n }\n });\n },\n {\n root: this.root(),\n threshold: this.threshold(),\n rootMargin: this.rootMargin()\n }\n );\n\n this._observer.takeRecords(); // Clear initial records\n this._observer.observe(this._elementRef.nativeElement);\n }\n\n /**\n * Disconnects the intersection observer.\n * This stops all observation and releases resources.\n */\n public disconnect(): void {\n this._observer?.disconnect();\n }\n\n ngOnDestroy(): void {\n this.disconnect();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClipboardService"],"mappings":"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"}