@sitecore-jss/sitecore-jss-angular 21.6.2-canary.2 → 21.6.2

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 (65) hide show
  1. package/LICENSE.txt +202 -202
  2. package/README.md +7 -7
  3. package/angular.json +48 -48
  4. package/dist/README.md +7 -7
  5. package/dist/components/data-resolver-factory.d.ts +13 -13
  6. package/dist/components/date.directive.d.ts +20 -20
  7. package/dist/components/editframe.component.d.ts +22 -22
  8. package/dist/components/file.directive.d.ts +17 -17
  9. package/dist/components/generic-link.directive.d.ts +20 -20
  10. package/dist/components/guard-resolver-factory.d.ts +11 -11
  11. package/dist/components/hidden-rendering.component.d.ts +7 -7
  12. package/dist/components/image.directive.d.ts +35 -35
  13. package/dist/components/link.directive.d.ts +26 -26
  14. package/dist/components/missing-component.component.d.ts +7 -7
  15. package/dist/components/placeholder-loading.directive.d.ts +8 -8
  16. package/dist/components/placeholder.component.d.ts +59 -59
  17. package/dist/components/placeholder.token.d.ts +64 -64
  18. package/dist/components/raw.component.d.ts +12 -12
  19. package/dist/components/render-component.component.d.ts +33 -33
  20. package/dist/components/render-each.directive.d.ts +8 -8
  21. package/dist/components/render-empty.directive.d.ts +8 -8
  22. package/dist/components/rendering-field.d.ts +41 -41
  23. package/dist/components/rendering.d.ts +5 -5
  24. package/dist/components/rich-text.directive.d.ts +18 -18
  25. package/dist/components/router-link.directive.d.ts +19 -19
  26. package/dist/components/text.directive.d.ts +16 -16
  27. package/dist/esm2022/components/data-resolver-factory.mjs +58 -58
  28. package/dist/esm2022/components/date.directive.mjs +67 -67
  29. package/dist/esm2022/components/editframe.component.mjs +70 -70
  30. package/dist/esm2022/components/file.directive.mjs +48 -48
  31. package/dist/esm2022/components/generic-link.directive.mjs +67 -67
  32. package/dist/esm2022/components/guard-resolver-factory.mjs +85 -85
  33. package/dist/esm2022/components/hidden-rendering.component.mjs +20 -20
  34. package/dist/esm2022/components/image.directive.mjs +150 -150
  35. package/dist/esm2022/components/link.directive.mjs +122 -122
  36. package/dist/esm2022/components/missing-component.component.mjs +16 -16
  37. package/dist/esm2022/components/placeholder-loading.directive.mjs +16 -16
  38. package/dist/esm2022/components/placeholder.component.mjs +271 -271
  39. package/dist/esm2022/components/placeholder.token.mjs +27 -27
  40. package/dist/esm2022/components/raw.component.mjs +38 -38
  41. package/dist/esm2022/components/render-component.component.mjs +98 -98
  42. package/dist/esm2022/components/render-each.directive.mjs +16 -16
  43. package/dist/esm2022/components/render-empty.directive.mjs +16 -16
  44. package/dist/esm2022/components/rendering-field.mjs +1 -1
  45. package/dist/esm2022/components/rendering.mjs +7 -7
  46. package/dist/esm2022/components/rich-text.directive.mjs +68 -68
  47. package/dist/esm2022/components/router-link.directive.mjs +49 -49
  48. package/dist/esm2022/components/text.directive.mjs +61 -61
  49. package/dist/esm2022/jss-component-factory.service.mjs +87 -87
  50. package/dist/esm2022/lib.module.mjs +160 -160
  51. package/dist/esm2022/public_api.mjs +24 -24
  52. package/dist/esm2022/sitecore-jss-sitecore-jss-angular.mjs +4 -4
  53. package/dist/esm2022/utils.mjs +16 -16
  54. package/dist/fesm2022/sitecore-jss-sitecore-jss-angular.mjs +1507 -1507
  55. package/dist/index.d.ts +5 -5
  56. package/dist/jss-component-factory.service.d.ts +25 -25
  57. package/dist/lib.module.d.ts +46 -46
  58. package/dist/package.json +2 -2
  59. package/dist/public_api.d.ts +25 -25
  60. package/dist/utils.d.ts +6 -6
  61. package/ng-package.json +13 -13
  62. package/package.json +3 -3
  63. package/tsconfig.json +9 -9
  64. package/tsconfig.spec.json +17 -17
  65. package/typings/README.md +2 -2
@@ -1,33 +1,33 @@
1
- import { KeyValueDiffers, OnChanges, SimpleChanges, Type } from '@angular/core';
2
- import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss/layout';
3
- import { JssComponentFactoryService } from '../jss-component-factory.service';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Renders a single JSS component given a rendering definition.
7
- * Useful inside templated placeholders.
8
- */
9
- export declare class RenderComponentComponent implements OnChanges {
10
- private differs;
11
- private componentFactory;
12
- private missingComponentComponent;
13
- rendering: ComponentRendering | HtmlElementRendering;
14
- outputs: {
15
- [k: string]: (eventType: unknown) => void;
16
- };
17
- private view;
18
- private _inputs;
19
- private _differ;
20
- private destroyed;
21
- constructor(differs: KeyValueDiffers, componentFactory: JssComponentFactoryService, missingComponentComponent: Type<{
22
- [key: string]: unknown;
23
- }>);
24
- set inputs(value: {
25
- [key: string]: unknown;
26
- });
27
- ngOnChanges(changes: SimpleChanges): void;
28
- private _setComponentInputs;
29
- private _subscribeComponentOutputs;
30
- private _render;
31
- static ɵfac: i0.ɵɵFactoryDeclaration<RenderComponentComponent, never>;
32
- static ɵcmp: i0.ɵɵComponentDeclaration<RenderComponentComponent, "sc-render-component", never, { "rendering": { "alias": "rendering"; "required": false; }; "outputs": { "alias": "outputs"; "required": false; }; "inputs": { "alias": "inputs"; "required": false; }; }, {}, never, never, false, never>;
33
- }
1
+ import { KeyValueDiffers, OnChanges, SimpleChanges, Type } from '@angular/core';
2
+ import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss/layout';
3
+ import { JssComponentFactoryService } from '../jss-component-factory.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Renders a single JSS component given a rendering definition.
7
+ * Useful inside templated placeholders.
8
+ */
9
+ export declare class RenderComponentComponent implements OnChanges {
10
+ private differs;
11
+ private componentFactory;
12
+ private missingComponentComponent;
13
+ rendering: ComponentRendering | HtmlElementRendering;
14
+ outputs: {
15
+ [k: string]: (eventType: unknown) => void;
16
+ };
17
+ private view;
18
+ private _inputs;
19
+ private _differ;
20
+ private destroyed;
21
+ constructor(differs: KeyValueDiffers, componentFactory: JssComponentFactoryService, missingComponentComponent: Type<{
22
+ [key: string]: unknown;
23
+ }>);
24
+ set inputs(value: {
25
+ [key: string]: unknown;
26
+ });
27
+ ngOnChanges(changes: SimpleChanges): void;
28
+ private _setComponentInputs;
29
+ private _subscribeComponentOutputs;
30
+ private _render;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<RenderComponentComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<RenderComponentComponent, "sc-render-component", never, { "rendering": { "alias": "rendering"; "required": false; }; "outputs": { "alias": "outputs"; "required": false; }; "inputs": { "alias": "inputs"; "required": false; }; }, {}, never, never, false, never>;
33
+ }
@@ -1,8 +1,8 @@
1
- import { TemplateRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class RenderEachDirective {
4
- templateRef: TemplateRef<unknown>;
5
- constructor(templateRef: TemplateRef<unknown>);
6
- static ɵfac: i0.ɵɵFactoryDeclaration<RenderEachDirective, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<RenderEachDirective, "[renderEach]", never, {}, {}, never, never, false, never>;
8
- }
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RenderEachDirective {
4
+ templateRef: TemplateRef<unknown>;
5
+ constructor(templateRef: TemplateRef<unknown>);
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<RenderEachDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RenderEachDirective, "[renderEach]", never, {}, {}, never, never, false, never>;
8
+ }
@@ -1,8 +1,8 @@
1
- import { TemplateRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class RenderEmptyDirective {
4
- templateRef: TemplateRef<unknown>;
5
- constructor(templateRef: TemplateRef<unknown>);
6
- static ɵfac: i0.ɵɵFactoryDeclaration<RenderEmptyDirective, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<RenderEmptyDirective, "[renderEmpty]", never, {}, {}, never, never, false, never>;
8
- }
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RenderEmptyDirective {
4
+ templateRef: TemplateRef<unknown>;
5
+ constructor(templateRef: TemplateRef<unknown>);
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<RenderEmptyDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RenderEmptyDirective, "[renderEmpty]", never, {}, {}, never, never, false, never>;
8
+ }
@@ -1,41 +1,41 @@
1
- export interface RenderingField<V = unknown> {
2
- value?: V;
3
- editable?: string;
4
- }
5
- export interface DateField {
6
- value?: string | number | Date;
7
- editable?: string;
8
- }
9
- export interface FileFieldValue {
10
- src?: string;
11
- title?: string;
12
- displayName?: string;
13
- }
14
- export interface FileField extends FileFieldValue, RenderingField {
15
- value?: FileFieldValue;
16
- }
17
- export interface ImageFieldValue {
18
- [key: string]: unknown;
19
- src?: string;
20
- srcSet?: {
21
- [key: string]: string | number | undefined;
22
- }[];
23
- }
24
- export interface ImageField extends ImageFieldValue, RenderingField {
25
- value?: ImageFieldValue;
26
- }
27
- export interface LinkFieldValue {
28
- [key: string]: unknown;
29
- href?: string;
30
- text?: string;
31
- anchor?: string;
32
- }
33
- export interface LinkField extends LinkFieldValue, RenderingField {
34
- value?: LinkFieldValue;
35
- editableFirstPart?: string;
36
- editableLastPart?: string;
37
- }
38
- export interface RichTextField extends RenderingField<string> {
39
- }
40
- export interface TextField extends RenderingField<string> {
41
- }
1
+ export interface RenderingField<V = unknown> {
2
+ value?: V;
3
+ editable?: string;
4
+ }
5
+ export interface DateField {
6
+ value?: string | number | Date;
7
+ editable?: string;
8
+ }
9
+ export interface FileFieldValue {
10
+ src?: string;
11
+ title?: string;
12
+ displayName?: string;
13
+ }
14
+ export interface FileField extends FileFieldValue, RenderingField {
15
+ value?: FileFieldValue;
16
+ }
17
+ export interface ImageFieldValue {
18
+ [key: string]: unknown;
19
+ src?: string;
20
+ srcSet?: {
21
+ [key: string]: string | number | undefined;
22
+ }[];
23
+ }
24
+ export interface ImageField extends ImageFieldValue, RenderingField {
25
+ value?: ImageFieldValue;
26
+ }
27
+ export interface LinkFieldValue {
28
+ [key: string]: unknown;
29
+ href?: string;
30
+ text?: string;
31
+ anchor?: string;
32
+ }
33
+ export interface LinkField extends LinkFieldValue, RenderingField {
34
+ value?: LinkFieldValue;
35
+ editableFirstPart?: string;
36
+ editableLastPart?: string;
37
+ }
38
+ export interface RichTextField extends RenderingField<string> {
39
+ }
40
+ export interface TextField extends RenderingField<string> {
41
+ }
@@ -1,5 +1,5 @@
1
- import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss/layout';
2
- /**
3
- * @param {HtmlElementRendering | ComponentRendering} rendering
4
- */
5
- export declare function isRawRendering(rendering: HtmlElementRendering | ComponentRendering): rendering is HtmlElementRendering;
1
+ import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss/layout';
2
+ /**
3
+ * @param {HtmlElementRendering | ComponentRendering} rendering
4
+ */
5
+ export declare function isRawRendering(rendering: HtmlElementRendering | ComponentRendering): rendering is HtmlElementRendering;
@@ -1,18 +1,18 @@
1
- import { OnChanges, SimpleChanges, TemplateRef, ViewContainerRef, Renderer2 } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { RichTextField } from './rendering-field';
4
- import * as i0 from "@angular/core";
5
- export declare class RichTextDirective implements OnChanges {
6
- private viewContainer;
7
- private templateRef;
8
- private renderer;
9
- private router;
10
- editable: boolean;
11
- field: RichTextField;
12
- private viewRef;
13
- constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<unknown>, renderer: Renderer2, router: Router);
14
- ngOnChanges(changes: SimpleChanges): void;
15
- private updateView;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<RichTextDirective, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<RichTextDirective, "[scRichText]", never, { "editable": { "alias": "scRichTextEditable"; "required": false; }; "field": { "alias": "scRichText"; "required": false; }; }, {}, never, never, false, never>;
18
- }
1
+ import { OnChanges, SimpleChanges, TemplateRef, ViewContainerRef, Renderer2 } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { RichTextField } from './rendering-field';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RichTextDirective implements OnChanges {
6
+ private viewContainer;
7
+ private templateRef;
8
+ private renderer;
9
+ private router;
10
+ editable: boolean;
11
+ field: RichTextField;
12
+ private viewRef;
13
+ constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<unknown>, renderer: Renderer2, router: Router);
14
+ ngOnChanges(changes: SimpleChanges): void;
15
+ private updateView;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<RichTextDirective, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RichTextDirective, "[scRichText]", never, { "editable": { "alias": "scRichTextEditable"; "required": false; }; "field": { "alias": "scRichText"; "required": false; }; }, {}, never, never, false, never>;
18
+ }
@@ -1,19 +1,19 @@
1
- import { ElementRef, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { LinkDirective } from './link.directive';
4
- import { LinkField } from './rendering-field';
5
- import * as i0 from "@angular/core";
6
- export declare class RouterLinkDirective extends LinkDirective {
7
- private router;
8
- editable: boolean;
9
- attrs: {
10
- [attr: string]: string;
11
- };
12
- field: LinkField;
13
- constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<unknown>, renderer: Renderer2, elementRef: ElementRef, router: Router);
14
- protected renderTemplate(props: {
15
- [prop: string]: string;
16
- }, linkText: string): void;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<RouterLinkDirective, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<RouterLinkDirective, "[scRouterLink]", never, { "editable": { "alias": "scRouterLinkEditable"; "required": false; }; "attrs": { "alias": "scRouterLinkAttrs"; "required": false; }; "field": { "alias": "scRouterLink"; "required": false; }; }, {}, never, never, false, never>;
19
- }
1
+ import { ElementRef, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { LinkDirective } from './link.directive';
4
+ import { LinkField } from './rendering-field';
5
+ import * as i0 from "@angular/core";
6
+ export declare class RouterLinkDirective extends LinkDirective {
7
+ private router;
8
+ editable: boolean;
9
+ attrs: {
10
+ [attr: string]: string;
11
+ };
12
+ field: LinkField;
13
+ constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<unknown>, renderer: Renderer2, elementRef: ElementRef, router: Router);
14
+ protected renderTemplate(props: {
15
+ [prop: string]: string;
16
+ }, linkText: string): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<RouterLinkDirective, never>;
18
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RouterLinkDirective, "[scRouterLink]", never, { "editable": { "alias": "scRouterLinkEditable"; "required": false; }; "attrs": { "alias": "scRouterLinkAttrs"; "required": false; }; "field": { "alias": "scRouterLink"; "required": false; }; }, {}, never, never, false, never>;
19
+ }
@@ -1,16 +1,16 @@
1
- import { OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';
2
- import { TextField } from './rendering-field';
3
- import * as i0 from "@angular/core";
4
- export declare class TextDirective implements OnChanges {
5
- private viewContainer;
6
- private templateRef;
7
- editable: boolean;
8
- encode: boolean;
9
- field: TextField;
10
- private viewRef;
11
- constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<unknown>);
12
- ngOnChanges(changes: SimpleChanges): void;
13
- private updateView;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<TextDirective, never>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<TextDirective, "[scText]", never, { "editable": { "alias": "scTextEditable"; "required": false; }; "encode": { "alias": "scTextEncode"; "required": false; }; "field": { "alias": "scText"; "required": false; }; }, {}, never, never, false, never>;
16
- }
1
+ import { OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { TextField } from './rendering-field';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TextDirective implements OnChanges {
5
+ private viewContainer;
6
+ private templateRef;
7
+ editable: boolean;
8
+ encode: boolean;
9
+ field: TextField;
10
+ private viewRef;
11
+ constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<unknown>);
12
+ ngOnChanges(changes: SimpleChanges): void;
13
+ private updateView;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<TextDirective, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TextDirective, "[scText]", never, { "editable": { "alias": "scTextEditable"; "required": false; }; "encode": { "alias": "scTextEncode"; "required": false; }; "field": { "alias": "scText"; "required": false; }; }, {}, never, never, false, never>;
16
+ }
@@ -1,59 +1,59 @@
1
- import { take } from 'rxjs/operators';
2
- import { wrapIntoObservable } from '../utils';
3
- import { lastValueFrom } from 'rxjs';
4
- /**
5
- * @param {Injector} injector
6
- * @param {ActivatedRoute} activatedRoute
7
- * @param {Router} router
8
- * @returns resolved data
9
- */
10
- export function dataResolverFactory(injector, activatedRoute, router) {
11
- /**
12
- * @param {JssResolve<unknown> | Type<JssResolve<unknown>>} resolver
13
- * @returns resolver instance
14
- */
15
- function getResolverInstance(resolver) {
16
- return 'resolve' in resolver ? resolver : injector.get(resolver);
17
- }
18
- /**
19
- * @param {ComponentFactoryResult} factory
20
- * @returns {Array<[string, JssResolve<unknown>]>} resolver instances
21
- */
22
- function collectResolverInstances(factory) {
23
- if (factory.resolve) {
24
- const resolve = factory.resolve;
25
- return Object.keys(factory.resolve).map((key) => [
26
- key,
27
- getResolverInstance(resolve[key]),
28
- ]);
29
- }
30
- return [];
31
- }
32
- /**
33
- * @param {JssResolve<unknown>} resolver
34
- * @param {ComponentFactoryResult} factory
35
- * @returns data
36
- */
37
- function _resolveData(resolver, factory) {
38
- const data = resolver.resolve({
39
- activatedRoute: activatedRoute.snapshot,
40
- routerState: router.routerState.snapshot,
41
- rendering: factory.componentDefinition,
42
- });
43
- const data$ = wrapIntoObservable(data);
44
- return lastValueFrom(data$.pipe(take(1)));
45
- }
46
- return function resolveData(factories) {
47
- return Promise.all(factories.map((factory) => {
48
- const resolvers = collectResolverInstances(factory);
49
- const pendingData = resolvers.map(([key, resolver]) => _resolveData(resolver, factory).then((data) => [key, data]));
50
- return Promise.all(pendingData)
51
- .then((allData) => allData.reduce((acc, [key, data]) => {
52
- acc[key] = data;
53
- return acc;
54
- }, {}))
55
- .then((data) => ({ factory, data }));
56
- }));
57
- };
58
- }
1
+ import { take } from 'rxjs/operators';
2
+ import { wrapIntoObservable } from '../utils';
3
+ import { lastValueFrom } from 'rxjs';
4
+ /**
5
+ * @param {Injector} injector
6
+ * @param {ActivatedRoute} activatedRoute
7
+ * @param {Router} router
8
+ * @returns resolved data
9
+ */
10
+ export function dataResolverFactory(injector, activatedRoute, router) {
11
+ /**
12
+ * @param {JssResolve<unknown> | Type<JssResolve<unknown>>} resolver
13
+ * @returns resolver instance
14
+ */
15
+ function getResolverInstance(resolver) {
16
+ return 'resolve' in resolver ? resolver : injector.get(resolver);
17
+ }
18
+ /**
19
+ * @param {ComponentFactoryResult} factory
20
+ * @returns {Array<[string, JssResolve<unknown>]>} resolver instances
21
+ */
22
+ function collectResolverInstances(factory) {
23
+ if (factory.resolve) {
24
+ const resolve = factory.resolve;
25
+ return Object.keys(factory.resolve).map((key) => [
26
+ key,
27
+ getResolverInstance(resolve[key]),
28
+ ]);
29
+ }
30
+ return [];
31
+ }
32
+ /**
33
+ * @param {JssResolve<unknown>} resolver
34
+ * @param {ComponentFactoryResult} factory
35
+ * @returns data
36
+ */
37
+ function _resolveData(resolver, factory) {
38
+ const data = resolver.resolve({
39
+ activatedRoute: activatedRoute.snapshot,
40
+ routerState: router.routerState.snapshot,
41
+ rendering: factory.componentDefinition,
42
+ });
43
+ const data$ = wrapIntoObservable(data);
44
+ return lastValueFrom(data$.pipe(take(1)));
45
+ }
46
+ return function resolveData(factories) {
47
+ return Promise.all(factories.map((factory) => {
48
+ const resolvers = collectResolverInstances(factory);
49
+ const pendingData = resolvers.map(([key, resolver]) => _resolveData(resolver, factory).then((data) => [key, data]));
50
+ return Promise.all(pendingData)
51
+ .then((allData) => allData.reduce((acc, [key, data]) => {
52
+ acc[key] = data;
53
+ return acc;
54
+ }, {}))
55
+ .then((data) => ({ factory, data }));
56
+ }));
57
+ };
58
+ }
59
59
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1yZXNvbHZlci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0YS1yZXNvbHZlci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsUUFBa0IsRUFDbEIsY0FBOEIsRUFDOUIsTUFBYztJQUVkOzs7T0FHRztJQUNILFNBQVMsbUJBQW1CLENBQUMsUUFBeUQ7UUFDcEYsT0FBTyxTQUFTLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsd0JBQXdCLENBQy9CLE9BQStCO1FBRS9CLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ2hDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFpQyxFQUFFLENBQUM7Z0JBQzlFLEdBQUc7Z0JBQ0gsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsWUFBWSxDQUFDLFFBQTZCLEVBQUUsT0FBK0I7UUFDbEYsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUM1QixjQUFjLEVBQUUsY0FBYyxDQUFDLFFBQVE7WUFDdkMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUTtZQUN4QyxTQUFTLEVBQUUsT0FBTyxDQUFDLG1CQUF5QztTQUM3RCxDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sU0FBUyxXQUFXLENBQUMsU0FBbUM7UUFDN0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNoQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxTQUFTLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEQsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FDcEQsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQWlCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUMzRSxDQUFDO1lBRUYsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztpQkFDNUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDdkQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDaEIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ1A7aUJBQ0EsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDb21wb25lbnRSZW5kZXJpbmcgfSBmcm9tICdAc2l0ZWNvcmUtanNzL3NpdGVjb3JlLWpzcy9sYXlvdXQnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzdWx0IH0gZnJvbSAnLi4vanNzLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyB3cmFwSW50b09ic2VydmFibGUgfSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IEpzc1Jlc29sdmUgfSBmcm9tICcuL3BsYWNlaG9sZGVyLnRva2VuJztcclxuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIEBwYXJhbSB7SW5qZWN0b3J9IGluamVjdG9yXHJcbiAqIEBwYXJhbSB7QWN0aXZhdGVkUm91dGV9IGFjdGl2YXRlZFJvdXRlXHJcbiAqIEBwYXJhbSB7Um91dGVyfSByb3V0ZXJcclxuICogQHJldHVybnMgcmVzb2x2ZWQgZGF0YVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFSZXNvbHZlckZhY3RvcnkoXHJcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICByb3V0ZXI6IFJvdXRlclxyXG4pIHtcclxuICAvKipcclxuICAgKiBAcGFyYW0ge0pzc1Jlc29sdmU8dW5rbm93bj4gfCBUeXBlPEpzc1Jlc29sdmU8dW5rbm93bj4+fSByZXNvbHZlclxyXG4gICAqIEByZXR1cm5zIHJlc29sdmVyIGluc3RhbmNlXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gZ2V0UmVzb2x2ZXJJbnN0YW5jZShyZXNvbHZlcjogSnNzUmVzb2x2ZTx1bmtub3duPiB8IFR5cGU8SnNzUmVzb2x2ZTx1bmtub3duPj4pIHtcclxuICAgIHJldHVybiAncmVzb2x2ZScgaW4gcmVzb2x2ZXIgPyByZXNvbHZlciA6IGluamVjdG9yLmdldChyZXNvbHZlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0ge0NvbXBvbmVudEZhY3RvcnlSZXN1bHR9IGZhY3RvcnlcclxuICAgKiBAcmV0dXJucyB7QXJyYXk8W3N0cmluZywgSnNzUmVzb2x2ZTx1bmtub3duPl0+fSByZXNvbHZlciBpbnN0YW5jZXNcclxuICAgKi9cclxuICBmdW5jdGlvbiBjb2xsZWN0UmVzb2x2ZXJJbnN0YW5jZXMoXHJcbiAgICBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5UmVzdWx0XHJcbiAgKTogQXJyYXk8W3N0cmluZywgSnNzUmVzb2x2ZTx1bmtub3duPl0+IHtcclxuICAgIGlmIChmYWN0b3J5LnJlc29sdmUpIHtcclxuICAgICAgY29uc3QgcmVzb2x2ZSA9IGZhY3RvcnkucmVzb2x2ZTtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZhY3RvcnkucmVzb2x2ZSkubWFwKChrZXkpOiBbc3RyaW5nLCBKc3NSZXNvbHZlPHVua25vd24+XSA9PiBbXHJcbiAgICAgICAga2V5LFxyXG4gICAgICAgIGdldFJlc29sdmVySW5zdGFuY2UocmVzb2x2ZVtrZXldKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtKc3NSZXNvbHZlPHVua25vd24+fSByZXNvbHZlclxyXG4gICAqIEBwYXJhbSB7Q29tcG9uZW50RmFjdG9yeVJlc3VsdH0gZmFjdG9yeVxyXG4gICAqIEByZXR1cm5zIGRhdGFcclxuICAgKi9cclxuICBmdW5jdGlvbiBfcmVzb2x2ZURhdGEocmVzb2x2ZXI6IEpzc1Jlc29sdmU8dW5rbm93bj4sIGZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnlSZXN1bHQpIHtcclxuICAgIGNvbnN0IGRhdGEgPSByZXNvbHZlci5yZXNvbHZlKHtcclxuICAgICAgYWN0aXZhdGVkUm91dGU6IGFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LFxyXG4gICAgICByb3V0ZXJTdGF0ZTogcm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LFxyXG4gICAgICByZW5kZXJpbmc6IGZhY3RvcnkuY29tcG9uZW50RGVmaW5pdGlvbiBhcyBDb21wb25lbnRSZW5kZXJpbmcsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGRhdGEkID0gd3JhcEludG9PYnNlcnZhYmxlKGRhdGEpO1xyXG5cclxuICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKGRhdGEkLnBpcGUodGFrZSgxKSkpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlc29sdmVEYXRhKGZhY3RvcmllczogQ29tcG9uZW50RmFjdG9yeVJlc3VsdFtdKSB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXHJcbiAgICAgIGZhY3Rvcmllcy5tYXAoKGZhY3RvcnkpID0+IHtcclxuICAgICAgICBjb25zdCByZXNvbHZlcnMgPSBjb2xsZWN0UmVzb2x2ZXJJbnN0YW5jZXMoZmFjdG9yeSk7XHJcbiAgICAgICAgY29uc3QgcGVuZGluZ0RhdGEgPSByZXNvbHZlcnMubWFwKChba2V5LCByZXNvbHZlcl0pID0+XHJcbiAgICAgICAgICBfcmVzb2x2ZURhdGEocmVzb2x2ZXIsIGZhY3RvcnkpLnRoZW4oKGRhdGEpOiBbc3RyaW5nLCBhbnldID0+IFtrZXksIGRhdGFdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwZW5kaW5nRGF0YSlcclxuICAgICAgICAgIC50aGVuKChhbGxEYXRhKSA9PlxyXG4gICAgICAgICAgICBhbGxEYXRhLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PigoYWNjLCBba2V5LCBkYXRhXSkgPT4ge1xyXG4gICAgICAgICAgICAgIGFjY1trZXldID0gZGF0YTtcclxuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICB9LCB7fSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC50aGVuKChkYXRhKSA9PiAoeyBmYWN0b3J5LCBkYXRhIH0pKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfTtcclxufVxyXG4iXX0=
@@ -1,68 +1,68 @@
1
- import { Directive, Input, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class DateDirective {
5
- viewContainer;
6
- templateRef;
7
- datePipe;
8
- format;
9
- timezone;
10
- locale;
11
- editable = true;
12
- field;
13
- viewRef;
14
- constructor(viewContainer, templateRef, datePipe) {
15
- this.viewContainer = viewContainer;
16
- this.templateRef = templateRef;
17
- this.datePipe = datePipe;
18
- }
19
- ngOnChanges(changes) {
20
- if (changes.field || changes.format) {
21
- if (!this.viewRef) {
22
- this.viewContainer.clear();
23
- this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
24
- }
25
- this.updateView();
26
- }
27
- }
28
- updateView() {
29
- const field = this.field;
30
- if (!field || (!field.editable && !field.value)) {
31
- return;
32
- }
33
- const html = field.editable && this.editable ? field.editable : field.value;
34
- const setDangerously = field.editable && this.editable;
35
- this.viewRef.rootNodes.forEach((node) => {
36
- if (setDangerously) {
37
- node.innerHTML = html;
38
- }
39
- else {
40
- node.textContent = this.datePipe.transform(html, this.format, this.timezone, this.locale);
41
- }
42
- });
43
- }
44
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Directive });
45
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DateDirective, selector: "[scDate]", inputs: { format: ["scDateFormat", "format"], timezone: ["scDateTimezone", "timezone"], locale: ["scDateLocale", "locale"], editable: ["scDateEditable", "editable"], field: ["scDate", "field"] }, usesOnChanges: true, ngImport: i0 });
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateDirective, decorators: [{
48
- type: Directive,
49
- args: [{
50
- selector: '[scDate]',
51
- }]
52
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1.DatePipe }]; }, propDecorators: { format: [{
53
- type: Input,
54
- args: ['scDateFormat']
55
- }], timezone: [{
56
- type: Input,
57
- args: ['scDateTimezone']
58
- }], locale: [{
59
- type: Input,
60
- args: ['scDateLocale']
61
- }], editable: [{
62
- type: Input,
63
- args: ['scDateEditable']
64
- }], field: [{
65
- type: Input,
66
- args: ['scDate']
67
- }] } });
1
+ import { Directive, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class DateDirective {
5
+ viewContainer;
6
+ templateRef;
7
+ datePipe;
8
+ format;
9
+ timezone;
10
+ locale;
11
+ editable = true;
12
+ field;
13
+ viewRef;
14
+ constructor(viewContainer, templateRef, datePipe) {
15
+ this.viewContainer = viewContainer;
16
+ this.templateRef = templateRef;
17
+ this.datePipe = datePipe;
18
+ }
19
+ ngOnChanges(changes) {
20
+ if (changes.field || changes.format) {
21
+ if (!this.viewRef) {
22
+ this.viewContainer.clear();
23
+ this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
24
+ }
25
+ this.updateView();
26
+ }
27
+ }
28
+ updateView() {
29
+ const field = this.field;
30
+ if (!field || (!field.editable && !field.value)) {
31
+ return;
32
+ }
33
+ const html = field.editable && this.editable ? field.editable : field.value;
34
+ const setDangerously = field.editable && this.editable;
35
+ this.viewRef.rootNodes.forEach((node) => {
36
+ if (setDangerously) {
37
+ node.innerHTML = html;
38
+ }
39
+ else {
40
+ node.textContent = this.datePipe.transform(html, this.format, this.timezone, this.locale);
41
+ }
42
+ });
43
+ }
44
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Directive });
45
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DateDirective, selector: "[scDate]", inputs: { format: ["scDateFormat", "format"], timezone: ["scDateTimezone", "timezone"], locale: ["scDateLocale", "locale"], editable: ["scDateEditable", "editable"], field: ["scDate", "field"] }, usesOnChanges: true, ngImport: i0 });
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateDirective, decorators: [{
48
+ type: Directive,
49
+ args: [{
50
+ selector: '[scDate]',
51
+ }]
52
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1.DatePipe }]; }, propDecorators: { format: [{
53
+ type: Input,
54
+ args: ['scDateFormat']
55
+ }], timezone: [{
56
+ type: Input,
57
+ args: ['scDateTimezone']
58
+ }], locale: [{
59
+ type: Input,
60
+ args: ['scDateLocale']
61
+ }], editable: [{
62
+ type: Input,
63
+ args: ['scDateEditable']
64
+ }], field: [{
65
+ type: Input,
66
+ args: ['scDate']
67
+ }] } });
68
68
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQzs7O0FBTXZCLE1BQU0sT0FBTyxhQUFhO0lBY2Q7SUFDQTtJQUNBO0lBZmEsTUFBTSxDQUFVO0lBRWQsUUFBUSxDQUFVO0lBRXBCLE1BQU0sQ0FBVTtJQUVkLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFeEIsS0FBSyxDQUFZO0lBRTFCLE9BQU8sQ0FBMkI7SUFFMUMsWUFDVSxhQUErQixFQUMvQixXQUFpQyxFQUNqQyxRQUFrQjtRQUZsQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDekIsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN4RTtZQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFekIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUUsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXZELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RDLElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQS9DVSxhQUFhOzRGQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCO3dKQUV3QixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBRUksUUFBUTtzQkFBaEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBRUEsTUFBTTtzQkFBNUIsS0FBSzt1QkFBQyxjQUFjO2dCQUVJLFFBQVE7c0JBQWhDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUVOLEtBQUs7c0JBQXJCLEtBQUs7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVGaWVsZCB9IGZyb20gJy4vcmVuZGVyaW5nLWZpZWxkJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NjRGF0ZV0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCdzY0RhdGVGb3JtYXQnKSBmb3JtYXQ/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgnc2NEYXRlVGltZXpvbmUnKSB0aW1lem9uZT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdzY0RhdGVMb2NhbGUnKSBsb2NhbGU/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgnc2NEYXRlRWRpdGFibGUnKSBlZGl0YWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgnc2NEYXRlJykgZmllbGQ6IERhdGVGaWVsZDtcclxuXHJcbiAgcHJpdmF0ZSB2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4sXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuZmllbGQgfHwgY2hhbmdlcy5mb3JtYXQpIHtcclxuICAgICAgaWYgKCF0aGlzLnZpZXdSZWYpIHtcclxuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmlldygpIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZDtcclxuXHJcbiAgICBpZiAoIWZpZWxkIHx8ICghZmllbGQuZWRpdGFibGUgJiYgIWZpZWxkLnZhbHVlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaHRtbCA9IGZpZWxkLmVkaXRhYmxlICYmIHRoaXMuZWRpdGFibGUgPyBmaWVsZC5lZGl0YWJsZSA6IGZpZWxkLnZhbHVlO1xyXG4gICAgY29uc3Qgc2V0RGFuZ2Vyb3VzbHkgPSBmaWVsZC5lZGl0YWJsZSAmJiB0aGlzLmVkaXRhYmxlO1xyXG5cclxuICAgIHRoaXMudmlld1JlZi5yb290Tm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBpZiAoc2V0RGFuZ2Vyb3VzbHkpIHtcclxuICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGh0bWwsIHRoaXMuZm9ybWF0LCB0aGlzLnRpbWV6b25lLCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=