@o3r/components 12.0.0-next.6 → 12.0.0-next.8

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 (82) hide show
  1. package/builders/component-extractor/helpers/component/component.extractor.d.ts.map +1 -1
  2. package/builders/component-extractor/helpers/component/component.extractor.js +3 -0
  3. package/builders/component-extractor/helpers/component/component.extractor.js.map +1 -1
  4. package/builders/component-extractor/index.d.ts.map +1 -1
  5. package/builders/component-extractor/index.js +1 -0
  6. package/builders/component-extractor/index.js.map +1 -1
  7. package/builders/metadata-check/helpers/config-metadata-comparison.helper.d.ts.map +1 -1
  8. package/builders/metadata-check/helpers/config-metadata-comparison.helper.js +1 -3
  9. package/builders/metadata-check/helpers/config-metadata-comparison.helper.js.map +1 -1
  10. package/builders/package.json +3 -0
  11. package/fesm2022/o3r-components-rules-engine.mjs +10 -10
  12. package/fesm2022/o3r-components-rules-engine.mjs.map +1 -1
  13. package/fesm2022/o3r-components.mjs +61 -58
  14. package/fesm2022/o3r-components.mjs.map +1 -1
  15. package/package.json +25 -29
  16. package/rules-engine/package.json +3 -0
  17. package/rules-engine/placeholder.rules-engine.effect.d.ts +2 -2
  18. package/rules-engine/placeholder.rules-engine.effect.d.ts.map +1 -1
  19. package/schematics/package.json +3 -0
  20. package/tools/component-replacement/c11n.directive.d.ts.map +1 -1
  21. package/tools/component-replacement/c11n.mock.module.d.ts.map +1 -1
  22. package/tools/pipes/keep-white-space/keep-white-space.pipe.d.ts.map +1 -1
  23. package/tools/placeholder/placeholder.component.d.ts.map +1 -1
  24. package/esm2022/core/component.output.mjs +0 -2
  25. package/esm2022/core/index.mjs +0 -3
  26. package/esm2022/core/rendering/helpers.mjs +0 -31
  27. package/esm2022/core/rendering/index.mjs +0 -2
  28. package/esm2022/devkit/components-devkit.interface.mjs +0 -13
  29. package/esm2022/devkit/components-devtools.message.service.mjs +0 -115
  30. package/esm2022/devkit/components-devtools.module.mjs +0 -43
  31. package/esm2022/devkit/components-devtools.token.mjs +0 -6
  32. package/esm2022/devkit/index.mjs +0 -6
  33. package/esm2022/devkit/inspector/index.mjs +0 -4
  34. package/esm2022/devkit/inspector/ng/index.mjs +0 -2
  35. package/esm2022/devkit/inspector/ng/ng.mjs +0 -2
  36. package/esm2022/devkit/inspector/otter-inspector.helpers.mjs +0 -114
  37. package/esm2022/devkit/inspector/otter-inspector.service.mjs +0 -166
  38. package/esm2022/o3r-components.mjs +0 -5
  39. package/esm2022/public_api.mjs +0 -5
  40. package/esm2022/rules-engine/o3r-components-rules-engine.mjs +0 -5
  41. package/esm2022/rules-engine/placeholder.action-handler.mjs +0 -156
  42. package/esm2022/rules-engine/placeholder.interfaces.mjs +0 -3
  43. package/esm2022/rules-engine/placeholder.rules-engine.effect.mjs +0 -136
  44. package/esm2022/rules-engine/placeholder.rules-engine.module.mjs +0 -31
  45. package/esm2022/rules-engine/public_api.mjs +0 -4
  46. package/esm2022/stores/index.mjs +0 -3
  47. package/esm2022/stores/placeholder-request/index.mjs +0 -7
  48. package/esm2022/stores/placeholder-request/placeholder-request.actions.mjs +0 -18
  49. package/esm2022/stores/placeholder-request/placeholder-request.module.mjs +0 -39
  50. package/esm2022/stores/placeholder-request/placeholder-request.reducer.mjs +0 -71
  51. package/esm2022/stores/placeholder-request/placeholder-request.selectors.mjs +0 -15
  52. package/esm2022/stores/placeholder-request/placeholder-request.state.mjs +0 -5
  53. package/esm2022/stores/placeholder-request/placeholder-request.sync.mjs +0 -18
  54. package/esm2022/stores/placeholder-template/index.mjs +0 -7
  55. package/esm2022/stores/placeholder-template/placeholder-template.actions.mjs +0 -10
  56. package/esm2022/stores/placeholder-template/placeholder-template.module.mjs +0 -39
  57. package/esm2022/stores/placeholder-template/placeholder-template.reducer.mjs +0 -39
  58. package/esm2022/stores/placeholder-template/placeholder-template.selectors.mjs +0 -70
  59. package/esm2022/stores/placeholder-template/placeholder-template.state.mjs +0 -5
  60. package/esm2022/stores/placeholder-template/placeholder-template.sync.mjs +0 -15
  61. package/esm2022/tools/component-replacement/c11n.directive.mjs +0 -159
  62. package/esm2022/tools/component-replacement/c11n.helpers.mjs +0 -11
  63. package/esm2022/tools/component-replacement/c11n.mock.module.mjs +0 -46
  64. package/esm2022/tools/component-replacement/c11n.module.mjs +0 -47
  65. package/esm2022/tools/component-replacement/c11n.service.mjs +0 -37
  66. package/esm2022/tools/component-replacement/c11n.token.mjs +0 -6
  67. package/esm2022/tools/component-replacement/index.mjs +0 -7
  68. package/esm2022/tools/index.mjs +0 -4
  69. package/esm2022/tools/pipes/capitalize/capitalize.pipe.mjs +0 -16
  70. package/esm2022/tools/pipes/capitalize/index.mjs +0 -2
  71. package/esm2022/tools/pipes/duration/duration.model.mjs +0 -20
  72. package/esm2022/tools/pipes/duration/duration.pipe.mjs +0 -66
  73. package/esm2022/tools/pipes/duration/index.mjs +0 -2
  74. package/esm2022/tools/pipes/index.mjs +0 -5
  75. package/esm2022/tools/pipes/keep-white-space/index.mjs +0 -2
  76. package/esm2022/tools/pipes/keep-white-space/keep-white-space.pipe.mjs +0 -16
  77. package/esm2022/tools/pipes/replace-with-bold/index.mjs +0 -2
  78. package/esm2022/tools/pipes/replace-with-bold/replace-with-bold.pipe.mjs +0 -24
  79. package/esm2022/tools/placeholder/index.mjs +0 -3
  80. package/esm2022/tools/placeholder/placeholder.component.mjs +0 -83
  81. package/esm2022/tools/placeholder/placeholder.interface.mjs +0 -2
  82. package/esm2022/tools/placeholder/placeholder.module.mjs +0 -32
@@ -1,83 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, Input, ViewEncapsulation, } from '@angular/core';
2
- import { takeUntilDestroyed, } from '@angular/core/rxjs-interop';
3
- import { Store, } from '@ngrx/store';
4
- import { sendOtterMessage, } from '@o3r/core';
5
- import { BehaviorSubject, ReplaySubject, sample, Subject, } from 'rxjs';
6
- import { distinctUntilChanged, filter, map, switchMap, } from 'rxjs/operators';
7
- import { selectPlaceholderTemplateMode, selectSortedTemplates, } from '../../stores/placeholder-template';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@ngrx/store";
10
- import * as i2 from "@angular/common";
11
- /**
12
- * Placeholder component that is bind to the PlaceholderTemplateStore to display a template based on its ID
13
- * A loading indication can be provided via projection
14
- * @example
15
- * <o3r-placeholder id="my-template-id">Is loading ...</o3r-placeholder>
16
- */
17
- export class PlaceholderComponent {
18
- /** template identify */
19
- set id(value) {
20
- this.id$.next(value);
21
- }
22
- constructor(store, cd) {
23
- this.store = store;
24
- this.cd = cd;
25
- this.id$ = new BehaviorSubject(undefined);
26
- this.afterViewInit$ = new Subject();
27
- this.messages$ = new ReplaySubject(1);
28
- this.destroyRef = inject(DestroyRef);
29
- this.mode = this.store.selectSignal(selectPlaceholderTemplateMode);
30
- }
31
- /** @inheritdoc */
32
- ngOnInit() {
33
- this.id$.pipe(filter((id) => !!id), distinctUntilChanged(), switchMap((id) => this.store.select(selectSortedTemplates(id)).pipe(map((placeholders) => ({
34
- id,
35
- orderedTemplates: placeholders?.orderedTemplates,
36
- isPending: placeholders?.isPending
37
- })), distinctUntilChanged((previous, current) => previous.id === current.id
38
- && previous.isPending === current.isPending
39
- && previous.orderedTemplates?.map((placeholder) => placeholder.renderedTemplate).join('')
40
- === current.orderedTemplates?.map((placeholder) => placeholder.renderedTemplate).join(''))))).subscribe(({ id, orderedTemplates, isPending }) => {
41
- this.isPending = isPending;
42
- this.template = orderedTemplates?.length
43
- // Concatenates the list of templates
44
- ? orderedTemplates.map((placeholder) => placeholder.renderedTemplate).join('')
45
- : undefined;
46
- if (this.isPending === false) {
47
- this.messages$.next({
48
- templateIds: this.isPending ? [] : (orderedTemplates || []).map((placeholder) => placeholder.resolvedUrl),
49
- placeholderId: id
50
- });
51
- }
52
- this.cd.markForCheck();
53
- });
54
- this.messages$.pipe(takeUntilDestroyed(this.destroyRef), sample(this.afterViewInit$), distinctUntilChanged((previous, current) => JSON.stringify(current) === JSON.stringify(previous))).subscribe({
55
- next: (data) => sendOtterMessage('placeholder-loading-status', data, false),
56
- complete: () => sendOtterMessage('placeholder-loading-status', {
57
- placeholderId: this.id$.value,
58
- templateIds: []
59
- }, false)
60
- });
61
- }
62
- ngAfterViewChecked() {
63
- // Make sure the view is rendered before posting the status
64
- this.afterViewInit$.next();
65
- }
66
- /** @inheritdoc */
67
- ngOnDestroy() {
68
- this.id$.complete();
69
- this.messages$.complete();
70
- this.afterViewInit$.complete();
71
- }
72
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PlaceholderComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
73
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PlaceholderComponent, selector: "o3r-placeholder", inputs: { id: "id" }, host: { properties: { "class.debug": "mode() === 'debug'" } }, ngImport: i0, template: "<ng-template #projection>\n <ng-content></ng-content>\n</ng-template>\n@switch (mode()) {\n @case ('debug') {\n <span class=\"placehoder-id\">{{ id$ | async }}</span>\n }\n @case ('pending') {\n <ng-container *ngTemplateOutlet=\"projection\" />\n }\n @case ('normal') {\n @if (isPending) {\n <ng-container *ngTemplateOutlet=\"projection\" />\n } @else {\n <div [innerHTML]=\"template\"></div>\n }\n }\n}\n", styles: [".debug{padding:15px;text-align:center;border:2px dashed var(--o3r-placeholder-debug-color, #a65c27);border-radius:10px;width:100%;background:var(--o3r-placeholder-background, #fff2ea);border-style:dashed;color:var(--o3r-placeholder-debug-color, #a65c27);font-size:larger}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
74
- }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PlaceholderComponent, decorators: [{
76
- type: Component,
77
- args: [{ selector: 'o3r-placeholder', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
78
- '[class.debug]': `mode() === 'debug'`
79
- }, template: "<ng-template #projection>\n <ng-content></ng-content>\n</ng-template>\n@switch (mode()) {\n @case ('debug') {\n <span class=\"placehoder-id\">{{ id$ | async }}</span>\n }\n @case ('pending') {\n <ng-container *ngTemplateOutlet=\"projection\" />\n }\n @case ('normal') {\n @if (isPending) {\n <ng-container *ngTemplateOutlet=\"projection\" />\n } @else {\n <div [innerHTML]=\"template\"></div>\n }\n }\n}\n", styles: [".debug{padding:15px;text-align:center;border:2px dashed var(--o3r-placeholder-debug-color, #a65c27);border-radius:10px;width:100%;background:var(--o3r-placeholder-background, #fff2ea);border-style:dashed;color:var(--o3r-placeholder-debug-color, #a65c27);font-size:larger}\n"] }]
80
- }], ctorParameters: () => [{ type: i1.Store }, { type: i0.ChangeDetectorRef }], propDecorators: { id: [{
81
- type: Input
82
- }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xzL3BsYWNlaG9sZGVyL3BsYWNlaG9sZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90b29scy9wbGFjZWhvbGRlci9wbGFjZWhvbGRlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFJTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGtCQUFrQixHQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxLQUFLLEdBQ04sTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLGdCQUFnQixHQUNqQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFHTCw2QkFBNkIsRUFDN0IscUJBQXFCLEdBQ3RCLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFNM0M7Ozs7O0dBS0c7QUFXSCxNQUFNLE9BQU8sb0JBQW9CO0lBaUIvQix3QkFBd0I7SUFDeEIsSUFDVyxFQUFFLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBNkIsS0FBc0MsRUFBbUIsRUFBcUI7UUFBOUUsVUFBSyxHQUFMLEtBQUssQ0FBaUM7UUFBbUIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUF0QjNGLFFB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QUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUNsRyxDQUFDLFNBQVMsQ0FBQztZQUNWLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2IsZ0JBQWdCLENBQWtDLDRCQUE0QixFQUFFLElBQUksRUFBRSxLQUFLLENBQUM7WUFDOUYsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUNiLGdCQUFnQixDQUFrQyw0QkFBNEIsRUFBRTtnQkFDOUUsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztnQkFDN0IsV0FBVyxFQUFFLEVBQUU7YUFDaEIsRUFBRSxLQUFLLENBQUM7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxXQUFXO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7a0lBdEZVLG9CQUFvQjtzSEFBcEIsb0JBQW9CLDRJQzdEakMsdWJBa0JBOzs0RkQyQ2Esb0JBQW9CO2tCQVZoQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLGVBQWUsRUFBRSxvQkFBb0I7cUJBQ3RDOzBHQXFCVSxFQUFFO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIHR5cGUgU2lnbmFsLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICB0YWtlVW50aWxEZXN0cm95ZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIFN0b3JlLFxufSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBzZW5kT3R0ZXJNZXNzYWdlLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBSZXBsYXlTdWJqZWN0LFxuICBzYW1wbGUsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIHR5cGUgUGxhY2Vob2xkZXJNb2RlLFxuICBQbGFjZWhvbGRlclRlbXBsYXRlU3RvcmUsXG4gIHNlbGVjdFBsYWNlaG9sZGVyVGVtcGxhdGVNb2RlLFxuICBzZWxlY3RTb3J0ZWRUZW1wbGF0ZXMsXG59IGZyb20gJy4uLy4uL3N0b3Jlcy9wbGFjZWhvbGRlci10ZW1wbGF0ZSc7XG5pbXBvcnQge1xuICBQbGFjZWhvbGRlckxvYWRpbmdTdGF0dXMsXG4gIFBsYWNlaG9sZGVyTG9hZGluZ1N0YXR1c01lc3NhZ2UsXG59IGZyb20gJy4vcGxhY2Vob2xkZXIuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBQbGFjZWhvbGRlciBjb21wb25lbnQgdGhhdCBpcyBiaW5kIHRvIHRoZSBQbGFjZWhvbGRlclRlbXBsYXRlU3RvcmUgdG8gZGlzcGxheSBhIHRlbXBsYXRlIGJhc2VkIG9uIGl0cyBJRFxuICogQSBsb2FkaW5nIGluZGljYXRpb24gY2FuIGJlIHByb3ZpZGVkIHZpYSBwcm9qZWN0aW9uXG4gKiBAZXhhbXBsZVxuICogIDxvM3ItcGxhY2Vob2xkZXIgaWQ9XCJteS10ZW1wbGF0ZS1pZFwiPklzIGxvYWRpbmcgLi4uPC9vM3ItcGxhY2Vob2xkZXI+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28zci1wbGFjZWhvbGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wbGFjZWhvbGRlci50ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BsYWNlaG9sZGVyLnN0eWxlLnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuZGVidWddJzogYG1vZGUoKSA9PT0gJ2RlYnVnJ2BcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBQbGFjZWhvbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgcHVibGljIHJlYWRvbmx5IGlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWZ0ZXJWaWV3SW5pdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZXMkID0gbmV3IFJlcGxheVN1YmplY3Q8UGxhY2Vob2xkZXJMb2FkaW5nU3RhdHVzPigxKTtcblxuICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBwbGFjZWhvbGRlciBjb250ZW50IGlzIHBlbmRpbmcgKi9cbiAgcHVibGljIGlzUGVuZGluZz86IGJvb2xlYW47XG5cbiAgLyoqIEdlbmVyYXRlZCBIVE1MIHRlbXBsYXRlICovXG4gIHB1YmxpYyB0ZW1wbGF0ZT86IHN0cmluZztcblxuICBwdWJsaWMgbW9kZTogU2lnbmFsPFBsYWNlaG9sZGVyTW9kZT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8qKiB0ZW1wbGF0ZSBpZGVudGlmeSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPFBsYWNlaG9sZGVyVGVtcGxhdGVTdG9yZT4sIHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5tb2RlID0gdGhpcy5zdG9yZS5zZWxlY3RTaWduYWwoc2VsZWN0UGxhY2Vob2xkZXJUZW1wbGF0ZU1vZGUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlkJC5waXBlKFxuICAgICAgZmlsdGVyKChpZCk6IGlkIGlzIHN0cmluZyA9PiAhIWlkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdFNvcnRlZFRlbXBsYXRlcyhpZCkpLnBpcGUoXG4gICAgICAgICAgbWFwKChwbGFjZWhvbGRlcnMpID0+ICh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIG9yZGVyZWRUZW1wbGF0ZXM6IHBsYWNlaG9sZGVycz8ub3JkZXJlZFRlbXBsYXRlcyxcbiAgICAgICAgICAgIGlzUGVuZGluZzogcGxhY2Vob2xkZXJzPy5pc1BlbmRpbmdcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgcHJldmlvdXMuaWQgPT09IGN1cnJlbnQuaWRcbiAgICAgICAgICAgICYmIHByZXZpb3VzLmlzUGVuZGluZyA9PT0gY3VycmVudC5pc1BlbmRpbmdcbiAgICAgICAgICAgICYmIHByZXZpb3VzLm9yZGVyZWRUZW1wbGF0ZXM/Lm1hcCgocGxhY2Vob2xkZXIpID0+IHBsYWNlaG9sZGVyLnJlbmRlcmVkVGVtcGxhdGUpLmpvaW4oJycpXG4gICAgICAgICAgICA9PT0gY3VycmVudC5vcmRlcmVkVGVtcGxhdGVzPy5tYXAoKHBsYWNlaG9sZGVyKSA9PiBwbGFjZWhvbGRlci5yZW5kZXJlZFRlbXBsYXRlKS5qb2luKCcnKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKCh7IGlkLCBvcmRlcmVkVGVtcGxhdGVzLCBpc1BlbmRpbmcgfSkgPT4ge1xuICAgICAgdGhpcy5pc1BlbmRpbmcgPSBpc1BlbmRpbmc7XG4gICAgICB0aGlzLnRlbXBsYXRlID0gb3JkZXJlZFRlbXBsYXRlcz8ubGVuZ3RoXG4gICAgICAgIC8vIENvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiB0ZW1wbGF0ZXNcbiAgICAgICAgPyBvcmRlcmVkVGVtcGxhdGVzLm1hcCgocGxhY2Vob2xkZXIpID0+IHBsYWNlaG9sZGVyLnJlbmRlcmVkVGVtcGxhdGUpLmpvaW4oJycpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKHRoaXMuaXNQZW5kaW5nID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzJC5uZXh0KHtcbiAgICAgICAgICB0ZW1wbGF0ZUlkczogdGhpcy5pc1BlbmRpbmcgPyBbXSA6IChvcmRlcmVkVGVtcGxhdGVzIHx8IFtdKS5tYXAoKHBsYWNlaG9sZGVyKSA9PiBwbGFjZWhvbGRlci5yZXNvbHZlZFVybCksXG4gICAgICAgICAgcGxhY2Vob2xkZXJJZDogaWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICAgIHRoaXMubWVzc2FnZXMkLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgIHNhbXBsZSh0aGlzLmFmdGVyVmlld0luaXQkKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91cywgY3VycmVudCkgPT4gSlNPTi5zdHJpbmdpZnkoY3VycmVudCkgPT09IEpTT04uc3RyaW5naWZ5KHByZXZpb3VzKSlcbiAgICApLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YSkgPT5cbiAgICAgICAgc2VuZE90dGVyTWVzc2FnZTxQbGFjZWhvbGRlckxvYWRpbmdTdGF0dXNNZXNzYWdlPigncGxhY2Vob2xkZXItbG9hZGluZy1zdGF0dXMnLCBkYXRhLCBmYWxzZSksXG4gICAgICBjb21wbGV0ZTogKCkgPT5cbiAgICAgICAgc2VuZE90dGVyTWVzc2FnZTxQbGFjZWhvbGRlckxvYWRpbmdTdGF0dXNNZXNzYWdlPigncGxhY2Vob2xkZXItbG9hZGluZy1zdGF0dXMnLCB7XG4gICAgICAgICAgcGxhY2Vob2xkZXJJZDogdGhpcy5pZCQudmFsdWUsXG4gICAgICAgICAgdGVtcGxhdGVJZHM6IFtdXG4gICAgICAgIH0sIGZhbHNlKVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIHZpZXcgaXMgcmVuZGVyZWQgYmVmb3JlIHBvc3RpbmcgdGhlIHN0YXR1c1xuICAgIHRoaXMuYWZ0ZXJWaWV3SW5pdCQubmV4dCgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmlkJC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubWVzc2FnZXMkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5hZnRlclZpZXdJbml0JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3Byb2plY3Rpb24+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5Ac3dpdGNoIChtb2RlKCkpIHtcbiAgQGNhc2UgKCdkZWJ1ZycpIHtcbiAgICA8c3BhbiBjbGFzcz1cInBsYWNlaG9kZXItaWRcIj57eyBpZCQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgfVxuICBAY2FzZSAoJ3BlbmRpbmcnKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb2plY3Rpb25cIiAvPlxuICB9XG4gIEBjYXNlICgnbm9ybWFsJykge1xuICAgIEBpZiAoaXNQZW5kaW5nKSB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvamVjdGlvblwiIC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwidGVtcGxhdGVcIj48L2Rpdj5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xzL3BsYWNlaG9sZGVyL3BsYWNlaG9sZGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBPdHRlck1lc3NhZ2VDb250ZW50LFxufSBmcm9tICdAbzNyL2NvcmUnO1xuXG4vKipcbiAqIFBheWxvYWQgb2YgdGhlIHtAc2VlIFBsYWNlaG9sZGVyTG9hZGluZ1N0YXR1c01lc3NhZ2V9XG4gKlxuICogRGVzY3JpYmUgdGhlIHN0YXRlIG9mIGFuIGlkZW50aWZpZWQgcGxhY2Vob2xkZXI6IHdoYXQgdGVtcGxhdGUgaXMgYmVpbmcgbG9hZGVkIGFuZCB3aGV0aGVyIHRoZSBsb2FkIGlzIGRvbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZWhvbGRlckxvYWRpbmdTdGF0dXMge1xuICAvKipcbiAgICogSWRzIG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBsb2FkZWQgaW4gdGhlIHBsYWNlaG9sZGVyXG4gICAqL1xuICB0ZW1wbGF0ZUlkcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogSWRlbnRpZnkgdGhlIHBsYWNlaG9sZGVyIHVuZGVyIGNvbnNpZGVyYXRpb25cbiAgICovXG4gIHBsYWNlaG9sZGVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWVzc2FnZSB0byBkZXNjcmliZSBhIHBsYWNlaG9sZGVyJ3MgbG9hZGluZyBzdGF0dXM6IHRoZSB0ZW1wbGF0ZXMgdG8gYmUgbG9hZGVkIGFuZCB0aGUgcGVuZGluZyBzdGF0dXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2Vob2xkZXJMb2FkaW5nU3RhdHVzTWVzc2FnZSBleHRlbmRzIFBsYWNlaG9sZGVyTG9hZGluZ1N0YXR1cyxcbiAgT3R0ZXJNZXNzYWdlQ29udGVudDwncGxhY2Vob2xkZXItbG9hZGluZy1zdGF0dXMnPiB7fVxuIl19
@@ -1,32 +0,0 @@
1
- import { CommonModule, } from '@angular/common';
2
- import { NgModule, } from '@angular/core';
3
- import { StoreModule, } from '@ngrx/store';
4
- import { PlaceholderRequestStoreModule, } from '../../stores/placeholder-request/index';
5
- import { PlaceholderTemplateStoreModule, } from '../../stores/placeholder-template/index';
6
- import { PlaceholderComponent, } from './placeholder.component';
7
- import * as i0 from "@angular/core";
8
- export class PlaceholderModule {
9
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PlaceholderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: PlaceholderModule, declarations: [PlaceholderComponent], imports: [CommonModule,
11
- StoreModule,
12
- PlaceholderTemplateStoreModule,
13
- PlaceholderRequestStoreModule], exports: [PlaceholderComponent] }); }
14
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PlaceholderModule, imports: [CommonModule,
15
- StoreModule,
16
- PlaceholderTemplateStoreModule,
17
- PlaceholderRequestStoreModule] }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PlaceholderModule, decorators: [{
20
- type: NgModule,
21
- args: [{
22
- imports: [
23
- CommonModule,
24
- StoreModule,
25
- PlaceholderTemplateStoreModule,
26
- PlaceholderRequestStoreModule
27
- ],
28
- declarations: [PlaceholderComponent],
29
- exports: [PlaceholderComponent]
30
- }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xzL3BsYWNlaG9sZGVyL3BsYWNlaG9sZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxHQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCw2QkFBNkIsR0FDOUIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsOEJBQThCLEdBQy9CLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUNMLG9CQUFvQixHQUNyQixNQUFNLHlCQUF5QixDQUFDOztBQVlqQyxNQUFNLE9BQU8saUJBQWlCO2tJQUFqQixpQkFBaUI7bUlBQWpCLGlCQUFpQixpQkFIYixvQkFBb0IsYUFMakMsWUFBWTtZQUNaLFdBQVc7WUFDWCw4QkFBOEI7WUFDOUIsNkJBQTZCLGFBR3JCLG9CQUFvQjttSUFFbkIsaUJBQWlCLFlBUjFCLFlBQVk7WUFDWixXQUFXO1lBQ1gsOEJBQThCO1lBQzlCLDZCQUE2Qjs7NEZBS3BCLGlCQUFpQjtrQkFWN0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3FCQUM5QjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tbW9uTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgTmdNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU3RvcmVNb2R1bGUsXG59IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIFBsYWNlaG9sZGVyUmVxdWVzdFN0b3JlTW9kdWxlLFxufSBmcm9tICcuLi8uLi9zdG9yZXMvcGxhY2Vob2xkZXItcmVxdWVzdC9pbmRleCc7XG5pbXBvcnQge1xuICBQbGFjZWhvbGRlclRlbXBsYXRlU3RvcmVNb2R1bGUsXG59IGZyb20gJy4uLy4uL3N0b3Jlcy9wbGFjZWhvbGRlci10ZW1wbGF0ZS9pbmRleCc7XG5pbXBvcnQge1xuICBQbGFjZWhvbGRlckNvbXBvbmVudCxcbn0gZnJvbSAnLi9wbGFjZWhvbGRlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFN0b3JlTW9kdWxlLFxuICAgIFBsYWNlaG9sZGVyVGVtcGxhdGVTdG9yZU1vZHVsZSxcbiAgICBQbGFjZWhvbGRlclJlcXVlc3RTdG9yZU1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtQbGFjZWhvbGRlckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtQbGFjZWhvbGRlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2Vob2xkZXJNb2R1bGUge31cbiJdfQ==