@sitecore-jss/sitecore-jss-angular 21.2.2 → 21.2.3-canary.1

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 (67) 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/esm2020/components/data-resolver-factory.mjs +57 -57
  28. package/dist/esm2020/components/date.directive.mjs +59 -59
  29. package/dist/esm2020/components/editframe.component.mjs +65 -65
  30. package/dist/esm2020/components/file.directive.mjs +44 -44
  31. package/dist/esm2020/components/generic-link.directive.mjs +64 -64
  32. package/dist/esm2020/components/guard-resolver-factory.mjs +87 -87
  33. package/dist/esm2020/components/hidden-rendering.component.mjs +20 -20
  34. package/dist/esm2020/components/image.directive.mjs +137 -137
  35. package/dist/esm2020/components/link.directive.mjs +117 -117
  36. package/dist/esm2020/components/missing-component.component.mjs +15 -15
  37. package/dist/esm2020/components/placeholder-loading.directive.mjs +15 -15
  38. package/dist/esm2020/components/placeholder.component.mjs +250 -250
  39. package/dist/esm2020/components/placeholder.token.mjs +23 -23
  40. package/dist/esm2020/components/raw.component.mjs +35 -35
  41. package/dist/esm2020/components/render-component.component.mjs +90 -90
  42. package/dist/esm2020/components/render-each.directive.mjs +15 -15
  43. package/dist/esm2020/components/render-empty.directive.mjs +15 -15
  44. package/dist/esm2020/components/rendering-field.mjs +1 -1
  45. package/dist/esm2020/components/rendering.mjs +7 -7
  46. package/dist/esm2020/components/rich-text.directive.mjs +62 -62
  47. package/dist/esm2020/components/router-link.directive.mjs +47 -47
  48. package/dist/esm2020/components/text.directive.mjs +57 -57
  49. package/dist/esm2020/jss-component-factory.service.mjs +83 -83
  50. package/dist/esm2020/lib.module.mjs +167 -167
  51. package/dist/esm2020/public_api.mjs +24 -24
  52. package/dist/esm2020/sitecore-jss-sitecore-jss-angular.mjs +4 -4
  53. package/dist/esm2020/utils.mjs +16 -16
  54. package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.mjs +1415 -1415
  55. package/dist/fesm2020/sitecore-jss-sitecore-jss-angular.mjs +1422 -1422
  56. package/dist/index.d.ts +5 -5
  57. package/dist/jss-component-factory.service.d.ts +25 -25
  58. package/dist/lib.module.d.ts +46 -46
  59. package/dist/package.json +2 -2
  60. package/dist/public_api.d.ts +25 -25
  61. package/dist/typings/README.md +2 -2
  62. package/dist/utils.d.ts +7 -7
  63. package/ng-package.json +13 -13
  64. package/package.json +3 -3
  65. package/tsconfig.json +9 -9
  66. package/tsconfig.spec.json +16 -16
  67. 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
- set inputs(value: {
22
- [key: string]: unknown;
23
- });
24
- constructor(differs: KeyValueDiffers, componentFactory: JssComponentFactoryService, missingComponentComponent: Type<{
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": "rendering"; "outputs": "outputs"; "inputs": "inputs"; }, {}, never, never, false>;
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
+ set inputs(value: {
22
+ [key: string]: unknown;
23
+ });
24
+ constructor(differs: KeyValueDiffers, componentFactory: JssComponentFactoryService, missingComponentComponent: Type<{
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": "rendering"; "outputs": "outputs"; "inputs": "inputs"; }, {}, never, never, false>;
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>;
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>;
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>;
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>;
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": "scRichTextEditable"; "field": "scRichText"; }, {}, never, never, false>;
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": "scRichTextEditable"; "field": "scRichText"; }, {}, never, never, false>;
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": "scRouterLinkEditable"; "attrs": "scRouterLinkAttrs"; "field": "scRouterLink"; }, {}, never, never, false>;
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": "scRouterLinkEditable"; "attrs": "scRouterLinkAttrs"; "field": "scRouterLink"; }, {}, never, never, false>;
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": "scTextEditable"; "encode": "scTextEncode"; "field": "scText"; }, {}, never, never, false>;
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": "scTextEditable"; "encode": "scTextEncode"; "field": "scText"; }, {}, never, never, false>;
16
+ }
@@ -1,58 +1,58 @@
1
- import { take } from 'rxjs/operators';
2
- import { wrapIntoObservable } from '../utils';
3
- /**
4
- * @param {Injector} injector
5
- * @param {ActivatedRoute} activatedRoute
6
- * @param {Router} router
7
- * @returns resolved data
8
- */
9
- export function dataResolverFactory(injector, activatedRoute, router) {
10
- /**
11
- * @param {JssResolve<unknown> | Type<JssResolve<unknown>>} resolver
12
- * @returns resolver instance
13
- */
14
- function getResolverInstance(resolver) {
15
- return 'resolve' in resolver ? resolver : injector.get(resolver);
16
- }
17
- /**
18
- * @param {ComponentFactoryResult} factory
19
- * @returns {Array<[string, JssResolve<unknown>]>} resolver instances
20
- */
21
- function collectResolverInstances(factory) {
22
- if (factory.resolve) {
23
- const resolve = factory.resolve;
24
- return Object.keys(factory.resolve).map((key) => [
25
- key,
26
- getResolverInstance(resolve[key]),
27
- ]);
28
- }
29
- return [];
30
- }
31
- /**
32
- * @param {JssResolve<unknown>} resolver
33
- * @param {ComponentFactoryResult} factory
34
- * @returns data
35
- */
36
- function _resolveData(resolver, factory) {
37
- const data = resolver.resolve({
38
- activatedRoute: activatedRoute.snapshot,
39
- routerState: router.routerState.snapshot,
40
- rendering: factory.componentDefinition,
41
- });
42
- const data$ = wrapIntoObservable(data);
43
- return data$.pipe(take(1)).toPromise();
44
- }
45
- return function resolveData(factories) {
46
- return Promise.all(factories.map((factory) => {
47
- const resolvers = collectResolverInstances(factory);
48
- const pendingData = resolvers.map(([key, resolver]) => _resolveData(resolver, factory).then((data) => [key, data]));
49
- return Promise.all(pendingData)
50
- .then((allData) => allData.reduce((acc, [key, data]) => {
51
- acc[key] = data;
52
- return acc;
53
- }, {}))
54
- .then((data) => ({ factory, data }));
55
- }));
56
- };
57
- }
1
+ import { take } from 'rxjs/operators';
2
+ import { wrapIntoObservable } from '../utils';
3
+ /**
4
+ * @param {Injector} injector
5
+ * @param {ActivatedRoute} activatedRoute
6
+ * @param {Router} router
7
+ * @returns resolved data
8
+ */
9
+ export function dataResolverFactory(injector, activatedRoute, router) {
10
+ /**
11
+ * @param {JssResolve<unknown> | Type<JssResolve<unknown>>} resolver
12
+ * @returns resolver instance
13
+ */
14
+ function getResolverInstance(resolver) {
15
+ return 'resolve' in resolver ? resolver : injector.get(resolver);
16
+ }
17
+ /**
18
+ * @param {ComponentFactoryResult} factory
19
+ * @returns {Array<[string, JssResolve<unknown>]>} resolver instances
20
+ */
21
+ function collectResolverInstances(factory) {
22
+ if (factory.resolve) {
23
+ const resolve = factory.resolve;
24
+ return Object.keys(factory.resolve).map((key) => [
25
+ key,
26
+ getResolverInstance(resolve[key]),
27
+ ]);
28
+ }
29
+ return [];
30
+ }
31
+ /**
32
+ * @param {JssResolve<unknown>} resolver
33
+ * @param {ComponentFactoryResult} factory
34
+ * @returns data
35
+ */
36
+ function _resolveData(resolver, factory) {
37
+ const data = resolver.resolve({
38
+ activatedRoute: activatedRoute.snapshot,
39
+ routerState: router.routerState.snapshot,
40
+ rendering: factory.componentDefinition,
41
+ });
42
+ const data$ = wrapIntoObservable(data);
43
+ return data$.pipe(take(1)).toPromise();
44
+ }
45
+ return function resolveData(factories) {
46
+ return Promise.all(factories.map((factory) => {
47
+ const resolvers = collectResolverInstances(factory);
48
+ const pendingData = resolvers.map(([key, resolver]) => _resolveData(resolver, factory).then((data) => [key, data]));
49
+ return Promise.all(pendingData)
50
+ .then((allData) => allData.reduce((acc, [key, data]) => {
51
+ acc[key] = data;
52
+ return acc;
53
+ }, {}))
54
+ .then((data) => ({ factory, data }));
55
+ }));
56
+ };
57
+ }
58
58
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1yZXNvbHZlci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0YS1yZXNvbHZlci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHOUM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLE1BQWM7SUFFZDs7O09BR0c7SUFDSCxTQUFTLG1CQUFtQixDQUFDLFFBQXlEO1FBQ3BGLE9BQU8sU0FBUyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLHdCQUF3QixDQUMvQixPQUErQjtRQUUvQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNoQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBaUMsRUFBRSxDQUFDO2dCQUM5RSxHQUFHO2dCQUNILG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNsQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLFlBQVksQ0FBQyxRQUE2QixFQUFFLE9BQStCO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDNUIsY0FBYyxFQUFFLGNBQWMsQ0FBQyxRQUFRO1lBQ3ZDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVE7WUFDeEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxtQkFBeUM7U0FDN0QsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxPQUFPLFNBQVMsV0FBVyxDQUFDLFNBQW1DO1FBQzdELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQ3BELFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDM0UsQ0FBQztZQUVGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7aUJBQzVCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQXNCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNQO2lCQUNBLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyaW5nIH0gZnJvbSAnQHNpdGVjb3JlLWpzcy9zaXRlY29yZS1qc3MvbGF5b3V0JztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVJlc3VsdCB9IGZyb20gJy4uL2pzcy1jb21wb25lbnQtZmFjdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgd3JhcEludG9PYnNlcnZhYmxlIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5pbXBvcnQgeyBKc3NSZXNvbHZlIH0gZnJvbSAnLi9wbGFjZWhvbGRlci50b2tlbic7XHJcblxyXG4vKipcclxuICogQHBhcmFtIHtJbmplY3Rvcn0gaW5qZWN0b3JcclxuICogQHBhcmFtIHtBY3RpdmF0ZWRSb3V0ZX0gYWN0aXZhdGVkUm91dGVcclxuICogQHBhcmFtIHtSb3V0ZXJ9IHJvdXRlclxyXG4gKiBAcmV0dXJucyByZXNvbHZlZCBkYXRhXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGF0YVJlc29sdmVyRmFjdG9yeShcclxuICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gIHJvdXRlcjogUm91dGVyXHJcbikge1xyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSB7SnNzUmVzb2x2ZTx1bmtub3duPiB8IFR5cGU8SnNzUmVzb2x2ZTx1bmtub3duPj59IHJlc29sdmVyXHJcbiAgICogQHJldHVybnMgcmVzb2x2ZXIgaW5zdGFuY2VcclxuICAgKi9cclxuICBmdW5jdGlvbiBnZXRSZXNvbHZlckluc3RhbmNlKHJlc29sdmVyOiBKc3NSZXNvbHZlPHVua25vd24+IHwgVHlwZTxKc3NSZXNvbHZlPHVua25vd24+Pikge1xyXG4gICAgcmV0dXJuICdyZXNvbHZlJyBpbiByZXNvbHZlciA/IHJlc29sdmVyIDogaW5qZWN0b3IuZ2V0KHJlc29sdmVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSB7Q29tcG9uZW50RmFjdG9yeVJlc3VsdH0gZmFjdG9yeVxyXG4gICAqIEByZXR1cm5zIHtBcnJheTxbc3RyaW5nLCBKc3NSZXNvbHZlPHVua25vd24+XT59IHJlc29sdmVyIGluc3RhbmNlc1xyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNvbGxlY3RSZXNvbHZlckluc3RhbmNlcyhcclxuICAgIGZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnlSZXN1bHRcclxuICApOiBBcnJheTxbc3RyaW5nLCBKc3NSZXNvbHZlPHVua25vd24+XT4ge1xyXG4gICAgaWYgKGZhY3RvcnkucmVzb2x2ZSkge1xyXG4gICAgICBjb25zdCByZXNvbHZlID0gZmFjdG9yeS5yZXNvbHZlO1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZmFjdG9yeS5yZXNvbHZlKS5tYXAoKGtleSk6IFtzdHJpbmcsIEpzc1Jlc29sdmU8dW5rbm93bj5dID0+IFtcclxuICAgICAgICBrZXksXHJcbiAgICAgICAgZ2V0UmVzb2x2ZXJJbnN0YW5jZShyZXNvbHZlW2tleV0pLFxyXG4gICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0ge0pzc1Jlc29sdmU8dW5rbm93bj59IHJlc29sdmVyXHJcbiAgICogQHBhcmFtIHtDb21wb25lbnRGYWN0b3J5UmVzdWx0fSBmYWN0b3J5XHJcbiAgICogQHJldHVybnMgZGF0YVxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIF9yZXNvbHZlRGF0YShyZXNvbHZlcjogSnNzUmVzb2x2ZTx1bmtub3duPiwgZmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeVJlc3VsdCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHJlc29sdmVyLnJlc29sdmUoe1xyXG4gICAgICBhY3RpdmF0ZWRSb3V0ZTogYWN0aXZhdGVkUm91dGUuc25hcHNob3QsXHJcbiAgICAgIHJvdXRlclN0YXRlOiByb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QsXHJcbiAgICAgIHJlbmRlcmluZzogZmFjdG9yeS5jb21wb25lbnREZWZpbml0aW9uIGFzIENvbXBvbmVudFJlbmRlcmluZyxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZGF0YSQgPSB3cmFwSW50b09ic2VydmFibGUoZGF0YSk7XHJcblxyXG4gICAgcmV0dXJuIGRhdGEkLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZnVuY3Rpb24gcmVzb2x2ZURhdGEoZmFjdG9yaWVzOiBDb21wb25lbnRGYWN0b3J5UmVzdWx0W10pIHtcclxuICAgIHJldHVybiBQcm9taXNlLmFsbChcclxuICAgICAgZmFjdG9yaWVzLm1hcCgoZmFjdG9yeSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc29sdmVycyA9IGNvbGxlY3RSZXNvbHZlckluc3RhbmNlcyhmYWN0b3J5KTtcclxuICAgICAgICBjb25zdCBwZW5kaW5nRGF0YSA9IHJlc29sdmVycy5tYXAoKFtrZXksIHJlc29sdmVyXSkgPT5cclxuICAgICAgICAgIF9yZXNvbHZlRGF0YShyZXNvbHZlciwgZmFjdG9yeSkudGhlbigoZGF0YSk6IFtzdHJpbmcsIGFueV0gPT4gW2tleSwgZGF0YV0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBlbmRpbmdEYXRhKVxyXG4gICAgICAgICAgLnRoZW4oKGFsbERhdGEpID0+XHJcbiAgICAgICAgICAgIGFsbERhdGEucmVkdWNlPFJlY29yZDxzdHJpbmcsIGFueT4+KChhY2MsIFtrZXksIGRhdGFdKSA9PiB7XHJcbiAgICAgICAgICAgICAgYWNjW2tleV0gPSBkYXRhO1xyXG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIH0sIHt9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnRoZW4oKGRhdGEpID0+ICh7IGZhY3RvcnksIGRhdGEgfSkpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,60 +1,60 @@
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
- constructor(viewContainer, templateRef, datePipe) {
6
- this.viewContainer = viewContainer;
7
- this.templateRef = templateRef;
8
- this.datePipe = datePipe;
9
- this.editable = true;
10
- }
11
- ngOnChanges(changes) {
12
- if (changes.field || changes.format) {
13
- if (!this.viewRef) {
14
- this.viewContainer.clear();
15
- this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
16
- }
17
- this.updateView();
18
- }
19
- }
20
- updateView() {
21
- const field = this.field;
22
- if (!field || (!field.editable && !field.value)) {
23
- return;
24
- }
25
- const html = field.editable && this.editable ? field.editable : field.value;
26
- const setDangerously = field.editable && this.editable;
27
- this.viewRef.rootNodes.forEach((node) => {
28
- if (setDangerously) {
29
- node.innerHTML = html;
30
- }
31
- else {
32
- node.textContent = this.datePipe.transform(html, this.format, this.timezone, this.locale);
33
- }
34
- });
35
- }
36
- }
37
- DateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DateDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Directive });
38
- DateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.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 });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DateDirective, decorators: [{
40
- type: Directive,
41
- args: [{
42
- selector: '[scDate]',
43
- }]
44
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1.DatePipe }]; }, propDecorators: { format: [{
45
- type: Input,
46
- args: ['scDateFormat']
47
- }], timezone: [{
48
- type: Input,
49
- args: ['scDateTimezone']
50
- }], locale: [{
51
- type: Input,
52
- args: ['scDateLocale']
53
- }], editable: [{
54
- type: Input,
55
- args: ['scDateEditable']
56
- }], field: [{
57
- type: Input,
58
- args: ['scDate']
59
- }] } });
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
+ constructor(viewContainer, templateRef, datePipe) {
6
+ this.viewContainer = viewContainer;
7
+ this.templateRef = templateRef;
8
+ this.datePipe = datePipe;
9
+ this.editable = true;
10
+ }
11
+ ngOnChanges(changes) {
12
+ if (changes.field || changes.format) {
13
+ if (!this.viewRef) {
14
+ this.viewContainer.clear();
15
+ this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
16
+ }
17
+ this.updateView();
18
+ }
19
+ }
20
+ updateView() {
21
+ const field = this.field;
22
+ if (!field || (!field.editable && !field.value)) {
23
+ return;
24
+ }
25
+ const html = field.editable && this.editable ? field.editable : field.value;
26
+ const setDangerously = field.editable && this.editable;
27
+ this.viewRef.rootNodes.forEach((node) => {
28
+ if (setDangerously) {
29
+ node.innerHTML = html;
30
+ }
31
+ else {
32
+ node.textContent = this.datePipe.transform(html, this.format, this.timezone, this.locale);
33
+ }
34
+ });
35
+ }
36
+ }
37
+ DateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DateDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Directive });
38
+ DateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.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 });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DateDirective, decorators: [{
40
+ type: Directive,
41
+ args: [{
42
+ selector: '[scDate]',
43
+ }]
44
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1.DatePipe }]; }, propDecorators: { format: [{
45
+ type: Input,
46
+ args: ['scDateFormat']
47
+ }], timezone: [{
48
+ type: Input,
49
+ args: ['scDateTimezone']
50
+ }], locale: [{
51
+ type: Input,
52
+ args: ['scDateLocale']
53
+ }], editable: [{
54
+ type: Input,
55
+ args: ['scDateEditable']
56
+ }], field: [{
57
+ type: Input,
58
+ args: ['scDate']
59
+ }] } });
60
60
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQzs7O0FBTXZCLE1BQU0sT0FBTyxhQUFhO0lBYXhCLFlBQ1UsYUFBK0IsRUFDL0IsV0FBaUMsRUFDakMsUUFBa0I7UUFGbEIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUNqQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBVEgsYUFBUSxHQUFHLElBQUksQ0FBQztJQVV0QyxDQUFDO0lBRUosV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3hFO1lBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLFVBQVU7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV6QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9DLE9BQU87U0FDUjtRQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM1RSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxjQUFjLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDM0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzJHQS9DVSxhQUFhOytGQUFiLGFBQWE7NEZBQWIsYUFBYTtrQkFIekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtpQkFDckI7d0pBRXdCLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFFSSxRQUFRO3NCQUFoQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFFQSxNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBRUksUUFBUTtzQkFBaEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBRU4sS0FBSztzQkFBckIsS0FBSzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUZpZWxkIH0gZnJvbSAnLi9yZW5kZXJpbmctZmllbGQnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbc2NEYXRlXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoJ3NjRGF0ZUZvcm1hdCcpIGZvcm1hdD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdzY0RhdGVUaW1lem9uZScpIHRpbWV6b25lPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoJ3NjRGF0ZUxvY2FsZScpIGxvY2FsZT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdzY0RhdGVFZGl0YWJsZScpIGVkaXRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCdzY0RhdGUnKSBmaWVsZDogRGF0ZUZpZWxkO1xyXG5cclxuICBwcml2YXRlIHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5maWVsZCB8fCBjaGFuZ2VzLmZvcm1hdCkge1xyXG4gICAgICBpZiAoIXRoaXMudmlld1JlZikge1xyXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMudmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaWV3KCkge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkO1xyXG5cclxuICAgIGlmICghZmllbGQgfHwgKCFmaWVsZC5lZGl0YWJsZSAmJiAhZmllbGQudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBodG1sID0gZmllbGQuZWRpdGFibGUgJiYgdGhpcy5lZGl0YWJsZSA/IGZpZWxkLmVkaXRhYmxlIDogZmllbGQudmFsdWU7XHJcbiAgICBjb25zdCBzZXREYW5nZXJvdXNseSA9IGZpZWxkLmVkaXRhYmxlICYmIHRoaXMuZWRpdGFibGU7XHJcblxyXG4gICAgdGhpcy52aWV3UmVmLnJvb3ROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGlmIChzZXREYW5nZXJvdXNseSkge1xyXG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBub2RlLnRleHRDb250ZW50ID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oaHRtbCwgdGhpcy5mb3JtYXQsIHRoaXMudGltZXpvbmUsIHRoaXMubG9jYWxlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==