@yuuvis/app-drive 0.7.3

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 (107) hide show
  1. package/README.md +47 -0
  2. package/esm2022/extensions/index.mjs +2 -0
  3. package/esm2022/extensions/lib/extensions.module.mjs +35 -0
  4. package/esm2022/extensions/lib/extensions.service.mjs +44 -0
  5. package/esm2022/extensions/lib/object-config.defaults.mjs +19 -0
  6. package/esm2022/extensions/yuuvis-app-drive-extensions.mjs +5 -0
  7. package/esm2022/index.mjs +5 -0
  8. package/esm2022/lib/actions/copy-link/copy-link.action.mjs +40 -0
  9. package/esm2022/lib/actions/index.mjs +7 -0
  10. package/esm2022/lib/actions/manage-versions/manage-versions.action.mjs +33 -0
  11. package/esm2022/lib/actions/manage-versions/manage-versions.component.mjs +105 -0
  12. package/esm2022/lib/actions/paste/paste.action.mjs +41 -0
  13. package/esm2022/lib/actions/rename/rename.action.mjs +31 -0
  14. package/esm2022/lib/actions/rename/rename.component.mjs +42 -0
  15. package/esm2022/lib/actions/rename/rename.validator.mjs +23 -0
  16. package/esm2022/lib/actions/updateContent/update.content.action.mjs +52 -0
  17. package/esm2022/lib/components/add-button/add-button-overlay/add-button-overlay.component.mjs +109 -0
  18. package/esm2022/lib/components/add-button/add-button.component.mjs +39 -0
  19. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +74 -0
  20. package/esm2022/lib/components/folder-tree/folder-tree.component.mjs +89 -0
  21. package/esm2022/lib/components/index.mjs +10 -0
  22. package/esm2022/lib/components/object-name/object-name.component.mjs +60 -0
  23. package/esm2022/lib/components/overlay/create-folder/create-folder.component.mjs +48 -0
  24. package/esm2022/lib/components/paste-from-clipboard/paste-from-clipboard.component.mjs +28 -0
  25. package/esm2022/lib/components/ribbon/ribbon.component.mjs +102 -0
  26. package/esm2022/lib/components/search-filter/date-range-picker/date-range-picker.component.mjs +38 -0
  27. package/esm2022/lib/components/search-filter/search-filter.component.mjs +429 -0
  28. package/esm2022/lib/components/sort/sort.component.mjs +156 -0
  29. package/esm2022/lib/components/versions-list/tile/tile.component.mjs +60 -0
  30. package/esm2022/lib/components/versions-list/versions-list.component.mjs +94 -0
  31. package/esm2022/lib/container/drive/drive.component.mjs +116 -0
  32. package/esm2022/lib/drive.icons.mjs +16 -0
  33. package/esm2022/lib/drive.schema.mjs +49 -0
  34. package/esm2022/lib/lib.routes.mjs +17 -0
  35. package/esm2022/lib/pages/files/files.component.mjs +377 -0
  36. package/esm2022/lib/pages/object/object.component.mjs +200 -0
  37. package/esm2022/lib/services/drive/drive.interface.mjs +14 -0
  38. package/esm2022/lib/services/drive/drive.service.mjs +437 -0
  39. package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.mjs +158 -0
  40. package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.mjs +2 -0
  41. package/esm2022/lib/services/drive/versions/versions.mapping.mjs +42 -0
  42. package/esm2022/lib/services/index.mjs +5 -0
  43. package/esm2022/lib/services/providers/drive.providers.mjs +10 -0
  44. package/esm2022/lib/services/resolver/files.resolver.mjs +12 -0
  45. package/esm2022/lib/services/resolver/index.mjs +3 -0
  46. package/esm2022/lib/services/resolver/versions.route.resolver.mjs +10 -0
  47. package/esm2022/lib/services/stored-query/stored-query.data.mjs +25 -0
  48. package/esm2022/lib/services/stored-query/stored-query.interface.mjs +2 -0
  49. package/esm2022/lib/services/stored-query/stored-query.service.mjs +41 -0
  50. package/esm2022/lib/services/tokens/breadcrumb-max-depth.token.mjs +3 -0
  51. package/esm2022/lib/services/tokens/index.mjs +2 -0
  52. package/esm2022/yuuvis-app-drive.mjs +5 -0
  53. package/extensions/README.md +3 -0
  54. package/extensions/index.d.ts +1 -0
  55. package/extensions/lib/extensions.module.d.ts +6 -0
  56. package/extensions/lib/extensions.service.d.ts +7 -0
  57. package/extensions/lib/object-config.defaults.d.ts +2 -0
  58. package/fesm2022/yuuvis-app-drive-extensions.mjs +99 -0
  59. package/fesm2022/yuuvis-app-drive-extensions.mjs.map +1 -0
  60. package/fesm2022/yuuvis-app-drive.mjs +2945 -0
  61. package/fesm2022/yuuvis-app-drive.mjs.map +1 -0
  62. package/index.d.ts +4 -0
  63. package/lib/actions/copy-link/copy-link.action.d.ts +18 -0
  64. package/lib/actions/index.d.ts +6 -0
  65. package/lib/actions/manage-versions/manage-versions.action.d.ts +17 -0
  66. package/lib/actions/manage-versions/manage-versions.component.d.ts +32 -0
  67. package/lib/actions/paste/paste.action.d.ts +17 -0
  68. package/lib/actions/rename/rename.action.d.ts +17 -0
  69. package/lib/actions/rename/rename.component.d.ts +12 -0
  70. package/lib/actions/rename/rename.validator.d.ts +5 -0
  71. package/lib/actions/updateContent/update.content.action.d.ts +18 -0
  72. package/lib/components/add-button/add-button-overlay/add-button-overlay.component.d.ts +26 -0
  73. package/lib/components/add-button/add-button.component.d.ts +12 -0
  74. package/lib/components/breadcrumb/breadcrumb.component.d.ts +25 -0
  75. package/lib/components/folder-tree/folder-tree.component.d.ts +13 -0
  76. package/lib/components/index.d.ts +8 -0
  77. package/lib/components/object-name/object-name.component.d.ts +21 -0
  78. package/lib/components/overlay/create-folder/create-folder.component.d.ts +12 -0
  79. package/lib/components/paste-from-clipboard/paste-from-clipboard.component.d.ts +13 -0
  80. package/lib/components/ribbon/ribbon.component.d.ts +24 -0
  81. package/lib/components/search-filter/date-range-picker/date-range-picker.component.d.ts +13 -0
  82. package/lib/components/search-filter/search-filter.component.d.ts +23 -0
  83. package/lib/components/sort/sort.component.d.ts +31 -0
  84. package/lib/components/versions-list/tile/tile.component.d.ts +14 -0
  85. package/lib/components/versions-list/versions-list.component.d.ts +17 -0
  86. package/lib/container/drive/drive.component.d.ts +36 -0
  87. package/lib/drive.icons.d.ts +15 -0
  88. package/lib/drive.schema.d.ts +23 -0
  89. package/lib/lib.routes.d.ts +2 -0
  90. package/lib/pages/files/files.component.d.ts +101 -0
  91. package/lib/pages/object/object.component.d.ts +35 -0
  92. package/lib/services/drive/drive.interface.d.ts +62 -0
  93. package/lib/services/drive/drive.service.d.ts +64 -0
  94. package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.d.ts +31 -0
  95. package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.d.ts +8 -0
  96. package/lib/services/drive/versions/versions.mapping.d.ts +2 -0
  97. package/lib/services/index.d.ts +4 -0
  98. package/lib/services/providers/drive.providers.d.ts +7 -0
  99. package/lib/services/resolver/files.resolver.d.ts +2 -0
  100. package/lib/services/resolver/index.d.ts +2 -0
  101. package/lib/services/resolver/versions.route.resolver.d.ts +2 -0
  102. package/lib/services/stored-query/stored-query.data.d.ts +5 -0
  103. package/lib/services/stored-query/stored-query.interface.d.ts +5 -0
  104. package/lib/services/stored-query/stored-query.service.d.ts +10 -0
  105. package/lib/services/tokens/breadcrumb-max-depth.token.d.ts +2 -0
  106. package/lib/services/tokens/index.d.ts +1 -0
  107. package/package.json +41 -0
@@ -0,0 +1,200 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, computed, effect, inject, signal } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { ActivatedRoute, Router } from '@angular/router';
5
+ import { DeviceService, DmsService, EventService, ObjectConfigService, TranslateModule, TranslateService, YuvEventType } from '@yuuvis/client-core';
6
+ import { BASE_ACTION } from '@yuuvis/client-framework/actions';
7
+ import { ContainerSizeDirective, FileDropZoneDirective } from '@yuuvis/client-framework/common';
8
+ import { YUV_ICONS } from '@yuuvis/client-framework/icons';
9
+ import { ObjectAuditComponent, ObjectMetadataComponent } from '@yuuvis/client-framework/object-details';
10
+ import { ObjectFlavorComponent } from '@yuuvis/client-framework/object-flavor';
11
+ import { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';
12
+ import { RendererDirective } from '@yuuvis/client-framework/renderer';
13
+ import { ShellService } from '@yuuvis/client-shell-core';
14
+ import { YvcIconModule } from '@yuuvis/components/icon';
15
+ import { YvcSplitViewModule } from '@yuuvis/components/split-view';
16
+ import { YvcTabsModule } from '@yuuvis/components/tabs';
17
+ import { finalize } from 'rxjs';
18
+ import { RibbonComponent } from '../../components/ribbon/ribbon.component';
19
+ import { APP_ACTIONS, APP_ID, APP_SCHEMA } from '../../drive.schema';
20
+ import { DRIVE_ROOT_FOLDER_ID, DriveService } from '../../services';
21
+ import * as i0 from "@angular/core";
22
+ import * as i1 from "@yuuvis/components/icon";
23
+ import * as i2 from "@yuuvis/components/split-view";
24
+ import * as i3 from "@yuuvis/client-core";
25
+ import * as i4 from "@yuuvis/components/tabs";
26
+ export class ObjectPageComponent {
27
+ #dmsService;
28
+ #eventService;
29
+ #shellService;
30
+ #route;
31
+ #router;
32
+ #objectConfig;
33
+ #drive;
34
+ #device;
35
+ #dmsObjectEffect;
36
+ constructor() {
37
+ this.#dmsService = inject(DmsService);
38
+ this.#eventService = inject(EventService);
39
+ this.#shellService = inject(ShellService);
40
+ this.#route = inject(ActivatedRoute);
41
+ this.#router = inject(Router);
42
+ this.#objectConfig = inject(ObjectConfigService);
43
+ this.translate = inject(TranslateService);
44
+ this.#drive = inject(DriveService);
45
+ this.#device = inject(DeviceService);
46
+ this.busy = this.#drive.state$.busy;
47
+ this.smallScreenLayout = signal(false);
48
+ this.dmsObject = signal(undefined);
49
+ this.#dmsObjectEffect = effect(() => this.#setHeaderData());
50
+ this.fileDropReplaceDisabled = computed(() => !this.dmsObject()?.permissions?.writeContent);
51
+ this.flavoredDmsObject = computed(() => {
52
+ const o = this.dmsObject();
53
+ return o
54
+ ? {
55
+ object: o,
56
+ flavors: [
57
+ // {
58
+ // id: APP_SCHEMA.types['file']['id'],
59
+ // icon: APP_SCHEMA.types['file']['icon'],
60
+ // sot: FS_SOTS.object
61
+ // },
62
+ ...this.#shellService.getAppliedObjectFlavors(o).applied
63
+ ]
64
+ }
65
+ : undefined;
66
+ });
67
+ this.versionsLink = computed(() => {
68
+ const o = this.dmsObject();
69
+ return o ? `../../versions/${o.id}` : '';
70
+ });
71
+ this.icons = {
72
+ back: YUV_ICONS.back,
73
+ error: YUV_ICONS.attention,
74
+ refresh: YUV_ICONS.refresh
75
+ };
76
+ this.layoutSettingIdBase = 'app.drive.object.';
77
+ this.excludeActions = [APP_ACTIONS.paste, APP_ACTIONS.contentUpdate, BASE_ACTION.copy, BASE_ACTION.cut];
78
+ this.#route.paramMap.pipe(takeUntilDestroyed()).subscribe((p) => {
79
+ this._loadDetails(p.get('id'));
80
+ });
81
+ this.#device.screenChange$.pipe(takeUntilDestroyed()).subscribe({
82
+ next: (s) => {
83
+ const ssl = s.size === 's' && s.orientation === 'portrait';
84
+ this.smallScreenLayout.set(ssl);
85
+ }
86
+ });
87
+ this.#eventService
88
+ .on(YuvEventType.DMS_OBJECT_UPDATED)
89
+ .pipe(takeUntilDestroyed())
90
+ .subscribe((e) => {
91
+ if (e.data.id === this.dmsObject()?.id)
92
+ this.dmsObject.set(e.data);
93
+ });
94
+ this.#eventService
95
+ .on(YuvEventType.DMS_OBJECT_DELETED)
96
+ .pipe(takeUntilDestroyed())
97
+ .subscribe((e) => {
98
+ if (e.data.id === this.dmsObject()?.id)
99
+ if (e.data.id === this.dmsObject()?.id)
100
+ // navigate to parent folder
101
+ this.openParent();
102
+ });
103
+ }
104
+ refresh() {
105
+ const o = this.dmsObject();
106
+ if (o)
107
+ this.#dmsService.getDmsObject(o.id).subscribe((o) => {
108
+ this.dmsObject.set(o);
109
+ });
110
+ if (o)
111
+ this.#dmsService.getDmsObject(o.id).subscribe((o) => {
112
+ this.dmsObject.set(o);
113
+ });
114
+ }
115
+ openParent() {
116
+ const pid = this.dmsObject()?.parentId || DRIVE_ROOT_FOLDER_ID;
117
+ this.#router.navigate(['../..', 'files', pid], {
118
+ relativeTo: this.#route
119
+ });
120
+ }
121
+ onIndexdataSaved(updatedObject) {
122
+ this.dmsObject.set(updatedObject);
123
+ }
124
+ #setHeaderData() {
125
+ const o = this.dmsObject();
126
+ if (!o) {
127
+ this.headerData = undefined;
128
+ }
129
+ else {
130
+ const roc = this.#objectConfig.getResolvedObjectConfig(o.data, APP_SCHEMA.types['file'], APP_ID);
131
+ this.headerData = {
132
+ title: roc.title,
133
+ description: roc.description,
134
+ icon: roc.icon?.value
135
+ };
136
+ }
137
+ }
138
+ onFileDrop(file) {
139
+ this.#drive.setBusy(true);
140
+ const dmsObject = this.dmsObject();
141
+ dmsObject &&
142
+ this.#drive
143
+ .uploadContent(dmsObject.id, file[0])
144
+ .pipe(finalize(() => this.#drive.setBusy(false)))
145
+ .subscribe();
146
+ }
147
+ versionSelected(version) {
148
+ const dmsObject = this.dmsObject();
149
+ dmsObject && this.#router.navigate(['../..', 'versions', dmsObject.id], { queryParams: { version }, relativeTo: this.#route });
150
+ }
151
+ _loadDetails(id) {
152
+ if (!id) {
153
+ this.dmsObject.set(undefined);
154
+ this.headerData = undefined;
155
+ }
156
+ else {
157
+ this.#shellService.addBusy();
158
+ // load the dms object
159
+ this.#dmsService.getDmsObject(id).subscribe({
160
+ next: (o) => {
161
+ this.dmsObject.set(o);
162
+ },
163
+ error: (e) => {
164
+ this.dmsObject.set(undefined);
165
+ switch (e.status) {
166
+ case 404:
167
+ this.errorMessage = this.translate.instant('yuv.app.drive.page.object.error.404');
168
+ break;
169
+ default:
170
+ this.errorMessage = this.translate.instant('yuv.app.drive.page.object.error.default');
171
+ }
172
+ },
173
+ complete: () => this.#shellService.removeBusy()
174
+ });
175
+ }
176
+ }
177
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
178
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ObjectPageComponent, isStandalone: true, selector: "ymd-object", host: { attributes: { "class.smallScreenLayout": "smallScreenLayout()" } }, ngImport: i0, template: "@let object = dmsObject();\n@if (object) {\n <div\n class=\"object\"\n yuvContainerSize\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropReplaceDisabled()\"\n (fileDrop)=\"onFileDrop($event)\"\n >\n <ymd-ribbon [objects]=\"[object]\" [excludeActions]=\"excludeActions\">\n <ng-template #primaryActions>\n <div class=\"nav\">\n <button class=\"back\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.page.object.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n </ng-template>\n <!-- <ng-template #secondaryActions></ng-template> -->\n </ymd-ribbon>\n\n @let ssl = smallScreenLayout();\n @if (ssl) {\n <yvc-tabs [layoutSettingsID]=\"layoutSettingIdBase + 'tabs.small'\" [cacheViews]=\"false\">\n <ng-template [yvcTab]=\"{ id: 'content_s', label: 'yuv.app.drive.object-metadata.tabs.content.title' | translate }\">\n @if (object && object?.content) {\n <yuv-object-preview [dmsObject]=\"object\"></yuv-object-preview>\n }\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'indexdata_s', label: 'yuv.app.drive.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'history_s', label: 'yuv.app.drive.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"object\"></yuv-object-audit>\n </ng-template>\n </yvc-tabs>\n } @else {\n <yvc-split-view [layoutSettingsID]=\"layoutSettingIdBase + 'splitview'\" [gutterSize]=\"1\">\n <ng-template yvcSplitArea [size]=\"40\">\n <section class=\"meta\">\n <header>\n <yuv-object-flavor disableSelection=\"true\" [dmsObject]=\"object\"></yuv-object-flavor>\n\n @if (headerData) {\n <yvc-icon class=\"object-icon\" [svg]=\"headerData.icon\"></yvc-icon>\n <h1><ng-container *yuvRenderer=\"headerData.title\"></ng-container></h1>\n <div class=\"description\"><ng-container *yuvRenderer=\"headerData.description\"></ng-container></div>\n }\n </header>\n\n <yvc-tabs [layoutSettingsID]=\"layoutSettingIdBase + 'tabs'\">\n <ng-template [yvcTab]=\"{ id: 'indexdata', label: 'yuv.app.drive.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'history', label: 'yuv.app.drive.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"object\" [versionsLink]=\"versionsLink()\"></yuv-object-audit>\n </ng-template>\n </yvc-tabs>\n </section>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"60\">\n @if (object && object?.content) {\n <yuv-object-preview [dmsObject]=\"object\"></yuv-object-preview>\n }\n </ng-template>\n </yvc-split-view>\n }\n </div>\n} @else if (errorMessage) {\n <!-- object could not be loaded -->\n <div class=\"error state\">\n <yvc-icon [svg]=\"icons.error\"></yvc-icon>\n <p>{{ errorMessage }}</p>\n </div>\n} @else {\n <!-- object is loading -->\n <div class=\"loading state\">\n <div class=\"yuv-loader\"></div>\n </div>\n}\n", styles: [":host{--button-gap: calc(var(--app-pane-padding) / 4);display:flex;flex-flow:column;height:100%;overflow:hidden}:host .state{display:flex;flex-flow:column;height:100%;align-items:center;justify-content:center;border-block-start:1px solid var(--panel-divider-color)}:host .error yvc-icon{--icon-size: 48px;color:rgb(from var(--text-color-body) r g b/.1)}:host .error p{margin:var(--app-pane-padding);max-width:35ch;color:var(--text-color-caption)}:host .state,:host .object{animation:fade-in .3s ease-in-out}:host .object{height:100%;display:flex;flex-flow:column}:host .object ymd-ribbon{background-color:var(--app-drive-header-background);border-block-end:1px solid var(--panel-divider-color);flex:0 0 auto}:host .object ymd-ribbon button{padding:var(--ribbon-button-padding);border-radius:var(--ribbon-button-border-radius)}:host .object ymd-ribbon button yvc-icon{--icon-size: var(--ribbon-icon-size)}:host .object ymd-ribbon .nav{display:flex;align-items:center;gap:var(--button-gap)}:host .object yvc-tabs{flex:1;background-color:var(--app-drive-header-background)}:host .object yvc-split-view{flex:1}:host .meta{background-color:var(--panel-background);display:flex;flex-flow:column;height:100%}:host .meta header{flex:0 0 auto;display:grid;grid-template-rows:auto calc(var(--app-pane-padding) / 2) auto auto var(--app-pane-padding);grid-template-columns:calc(var(--app-pane-padding) / 2) auto 1fr auto calc(var(--app-pane-padding) / 2);grid-template-areas:\"flavor flavor flavor flavor flavor\" \". . . . .\" \". icon title actions .\" \". . description description .\" \". . . . .\";gap:calc(var(--app-pane-padding) / 2)}:host .meta header yuv-object-flavor{grid-area:flavor;border-block-end:1px solid var(--panel-divider-color)}:host .meta header yvc-icon.object-icon{color:var(--text-color-caption);grid-area:icon}:host .meta header h1{grid-area:title;margin:0;padding:0;font-size:var(--font-title);font-weight:400}:host .meta header .description{grid-area:description}:host .meta yvc-tabs{flex:1}@keyframes fade-in{0%{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ObjectMetadataComponent, selector: "yuv-object-metadata", inputs: ["situation", "formDisabled", "dmsObject", "flavoredDmsObject"], outputs: ["indexDataSaved", "statusChanged"] }, { kind: "component", type: ObjectAuditComponent, selector: "yuv-object-audit", inputs: ["dmsObject", "skipActions", "allActions", "versionsLink"] }, { kind: "component", type: ObjectFlavorComponent, selector: "yuv-object-flavor", inputs: ["dmsObject"], outputs: ["flavorClick"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i1.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: YvcSplitViewModule }, { kind: "component", type: i2.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i2.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "directive", type: RendererDirective, selector: "[yuvRenderer]", inputs: ["yuvRenderer"] }, { kind: "directive", type: ContainerSizeDirective, selector: "[yuvContainerSize]", outputs: ["containerHeight", "containerWidth"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: RibbonComponent, selector: "ymd-ribbon", inputs: ["busy", "enableClipboard", "objects", "excludeActions"] }, { kind: "ngmodule", type: YvcTabsModule }, { kind: "component", type: i4.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i4.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: ObjectPreviewComponent, selector: "yuv-object-preview", inputs: ["objectId", "dmsObject", "version"] }, { kind: "directive", type: FileDropZoneDirective, selector: "[yuvFileDropZone]", inputs: ["yuvFileDropZone", "fileDropDisabled"], outputs: ["fileDrop", "fileDropOver"] }] }); }
179
+ }
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ObjectPageComponent, decorators: [{
181
+ type: Component,
182
+ args: [{ selector: 'ymd-object', standalone: true, imports: [
183
+ CommonModule,
184
+ ObjectMetadataComponent,
185
+ ObjectAuditComponent,
186
+ ObjectFlavorComponent,
187
+ YvcIconModule,
188
+ YvcSplitViewModule,
189
+ RendererDirective,
190
+ ContainerSizeDirective,
191
+ TranslateModule,
192
+ RibbonComponent,
193
+ YvcTabsModule,
194
+ ObjectPreviewComponent,
195
+ FileDropZoneDirective
196
+ ], host: {
197
+ ['class.smallScreenLayout']: 'smallScreenLayout()'
198
+ }, template: "@let object = dmsObject();\n@if (object) {\n <div\n class=\"object\"\n yuvContainerSize\n [yuvFileDropZone]=\"{ label: 'yuv.app.drive.files.dropzone.content.replace.label' | translate }\"\n [fileDropDisabled]=\"fileDropReplaceDisabled()\"\n (fileDrop)=\"onFileDrop($event)\"\n >\n <ymd-ribbon [objects]=\"[object]\" [excludeActions]=\"excludeActions\">\n <ng-template #primaryActions>\n <div class=\"nav\">\n <button class=\"back\" (click)=\"openParent()\">\n <yvc-icon [svg]=\"icons.back\"></yvc-icon>\n </button>\n <button class=\"refresh\" title=\"{{ 'yuv.app.drive.page.object.refresh.tooltip' | translate }}\" (click)=\"refresh()\">\n <yvc-icon [svg]=\"icons.refresh\"></yvc-icon>\n </button>\n </div>\n </ng-template>\n <!-- <ng-template #secondaryActions></ng-template> -->\n </ymd-ribbon>\n\n @let ssl = smallScreenLayout();\n @if (ssl) {\n <yvc-tabs [layoutSettingsID]=\"layoutSettingIdBase + 'tabs.small'\" [cacheViews]=\"false\">\n <ng-template [yvcTab]=\"{ id: 'content_s', label: 'yuv.app.drive.object-metadata.tabs.content.title' | translate }\">\n @if (object && object?.content) {\n <yuv-object-preview [dmsObject]=\"object\"></yuv-object-preview>\n }\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'indexdata_s', label: 'yuv.app.drive.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'history_s', label: 'yuv.app.drive.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"object\"></yuv-object-audit>\n </ng-template>\n </yvc-tabs>\n } @else {\n <yvc-split-view [layoutSettingsID]=\"layoutSettingIdBase + 'splitview'\" [gutterSize]=\"1\">\n <ng-template yvcSplitArea [size]=\"40\">\n <section class=\"meta\">\n <header>\n <yuv-object-flavor disableSelection=\"true\" [dmsObject]=\"object\"></yuv-object-flavor>\n\n @if (headerData) {\n <yvc-icon class=\"object-icon\" [svg]=\"headerData.icon\"></yvc-icon>\n <h1><ng-container *yuvRenderer=\"headerData.title\"></ng-container></h1>\n <div class=\"description\"><ng-container *yuvRenderer=\"headerData.description\"></ng-container></div>\n }\n </header>\n\n <yvc-tabs [layoutSettingsID]=\"layoutSettingIdBase + 'tabs'\">\n <ng-template [yvcTab]=\"{ id: 'indexdata', label: 'yuv.app.drive.object-metadata.tabs.indexdata.title' | translate }\">\n <yuv-object-metadata [flavoredDmsObject]=\"flavoredDmsObject()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n <ng-template [yvcTab]=\"{ id: 'history', label: 'yuv.app.drive.object-metadata.tabs.history.title' | translate }\">\n <yuv-object-audit [dmsObject]=\"object\" [versionsLink]=\"versionsLink()\"></yuv-object-audit>\n </ng-template>\n </yvc-tabs>\n </section>\n </ng-template>\n <ng-template yvcSplitArea [size]=\"60\">\n @if (object && object?.content) {\n <yuv-object-preview [dmsObject]=\"object\"></yuv-object-preview>\n }\n </ng-template>\n </yvc-split-view>\n }\n </div>\n} @else if (errorMessage) {\n <!-- object could not be loaded -->\n <div class=\"error state\">\n <yvc-icon [svg]=\"icons.error\"></yvc-icon>\n <p>{{ errorMessage }}</p>\n </div>\n} @else {\n <!-- object is loading -->\n <div class=\"loading state\">\n <div class=\"yuv-loader\"></div>\n </div>\n}\n", styles: [":host{--button-gap: calc(var(--app-pane-padding) / 4);display:flex;flex-flow:column;height:100%;overflow:hidden}:host .state{display:flex;flex-flow:column;height:100%;align-items:center;justify-content:center;border-block-start:1px solid var(--panel-divider-color)}:host .error yvc-icon{--icon-size: 48px;color:rgb(from var(--text-color-body) r g b/.1)}:host .error p{margin:var(--app-pane-padding);max-width:35ch;color:var(--text-color-caption)}:host .state,:host .object{animation:fade-in .3s ease-in-out}:host .object{height:100%;display:flex;flex-flow:column}:host .object ymd-ribbon{background-color:var(--app-drive-header-background);border-block-end:1px solid var(--panel-divider-color);flex:0 0 auto}:host .object ymd-ribbon button{padding:var(--ribbon-button-padding);border-radius:var(--ribbon-button-border-radius)}:host .object ymd-ribbon button yvc-icon{--icon-size: var(--ribbon-icon-size)}:host .object ymd-ribbon .nav{display:flex;align-items:center;gap:var(--button-gap)}:host .object yvc-tabs{flex:1;background-color:var(--app-drive-header-background)}:host .object yvc-split-view{flex:1}:host .meta{background-color:var(--panel-background);display:flex;flex-flow:column;height:100%}:host .meta header{flex:0 0 auto;display:grid;grid-template-rows:auto calc(var(--app-pane-padding) / 2) auto auto var(--app-pane-padding);grid-template-columns:calc(var(--app-pane-padding) / 2) auto 1fr auto calc(var(--app-pane-padding) / 2);grid-template-areas:\"flavor flavor flavor flavor flavor\" \". . . . .\" \". icon title actions .\" \". . description description .\" \". . . . .\";gap:calc(var(--app-pane-padding) / 2)}:host .meta header yuv-object-flavor{grid-area:flavor;border-block-end:1px solid var(--panel-divider-color)}:host .meta header yvc-icon.object-icon{color:var(--text-color-caption);grid-area:icon}:host .meta header h1{grid-area:title;margin:0;padding:0;font-size:var(--font-title);font-weight:400}:host .meta header .description{grid-area:description}:host .meta yvc-tabs{flex:1}@keyframes fade-in{0%{opacity:0}}\n"] }]
199
+ }], ctorParameters: () => [] });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBwcy9kcml2ZS9zcmMvbGliL3BhZ2VzL29iamVjdC9vYmplY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvcGFnZXMvb2JqZWN0L29iamVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBRUwsYUFBYSxFQUViLFVBQVUsRUFDVixZQUFZLEVBRVosbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJB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LENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7NEJBQ2xGLE1BQU07d0JBQ1I7NEJBQ0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO29CQUMxRixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFO2FBQ2hELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOytHQW5LVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixrSkN6RGhDLGswSEFrRkEsbWpFRDdDSSxZQUFZLCtCQUNaLHVCQUF1Qix1TEFDdkIsb0JBQW9CLGlJQUNwQixxQkFBcUIsOEdBQ3JCLGFBQWEsOEhBQ2Isa0JBQWtCLG9kQUNsQixpQkFBaUIsbUZBQ2pCLHNCQUFzQiw4R0FDdEIsZUFBZSw0RkFDZixlQUFlLHdIQUNmLGFBQWEsZ1hBQ2Isc0JBQXNCLDZHQUN0QixxQkFBcUI7OzRGQVFaLG1CQUFtQjtrQkF4Qi9CLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7d0JBQ2Isc0JBQXNCO3dCQUN0QixxQkFBcUI7cUJBQ3RCLFFBR0s7d0JBQ0osQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLHFCQUFxQjtxQkFDbkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBEZXZpY2VTY3JlZW4sXG4gIERldmljZVNlcnZpY2UsXG4gIERtc09iamVjdCxcbiAgRG1zU2VydmljZSxcbiAgRXZlbnRTZXJ2aWNlLFxuICBGbGF2b3JlZERtc09iamVjdCxcbiAgT2JqZWN0Q29uZmlnU2VydmljZSxcbiAgVHJhbnNsYXRlTW9kdWxlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBZdXZFdmVudFR5cGVcbn0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBCQVNFX0FDVElPTiB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9hY3Rpb25zJztcbmltcG9ydCB7IENvbnRhaW5lclNpemVEaXJlY3RpdmUsIEZpbGVEcm9wWm9uZURpcmVjdGl2ZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9jb21tb24nO1xuaW1wb3J0IHsgWVVWX0lDT05TIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2ljb25zJztcbmltcG9ydCB7IE9iamVjdEF1ZGl0Q29tcG9uZW50LCBPYmplY3RNZXRhZGF0YUNvbXBvbmVudCB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay9vYmplY3QtZGV0YWlscyc7XG5pbXBvcnQgeyBPYmplY3RGbGF2b3JDb21wb25lbnQgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvb2JqZWN0LWZsYXZvcic7XG5pbXBvcnQgeyBPYmplY3RQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL29iamVjdC1wcmV2aWV3JztcbmltcG9ydCB7IFJlbmRlcmVyRGlyZWN0aXZlLCBSZW5kZXJlckRpcmVjdGl2ZUlucHV0IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL3JlbmRlcmVyJztcbmltcG9ydCB7IFNoZWxsU2VydmljZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LXNoZWxsLWNvcmUnO1xuaW1wb3J0IHsgWXZjSWNvbk1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IFl2Y1NwbGl0Vmlld01vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9zcGxpdC12aWV3JztcbmltcG9ydCB7IFl2Y1RhYnNNb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUmliYm9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9yaWJib24vcmliYm9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBUFBfQUNUSU9OUywgQVBQX0lELCBBUFBfU0NIRU1BIH0gZnJvbSAnLi4vLi4vZHJpdmUuc2NoZW1hJztcbmltcG9ydCB7IERSSVZFX1JPT1RfRk9MREVSX0lELCBEcml2ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ltZC1vYmplY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE9iamVjdE1ldGFkYXRhQ29tcG9uZW50LFxuICAgIE9iamVjdEF1ZGl0Q29tcG9uZW50LFxuICAgIE9iamVjdEZsYXZvckNvbXBvbmVudCxcbiAgICBZdmNJY29uTW9kdWxlLFxuICAgIFl2Y1NwbGl0Vmlld01vZHVsZSxcbiAgICBSZW5kZXJlckRpcmVjdGl2ZSxcbiAgICBDb250YWluZXJTaXplRGlyZWN0aXZlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBSaWJib25Db21wb25lbnQsXG4gICAgWXZjVGFic01vZHVsZSxcbiAgICBPYmplY3RQcmV2aWV3Q29tcG9uZW50LFxuICAgIEZpbGVEcm9wWm9uZURpcmVjdGl2ZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL29iamVjdC5jb21wb25lbnQuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICBbJ2NsYXNzLnNtYWxsU2NyZWVuTGF5b3V0J106ICdzbWFsbFNjcmVlbkxheW91dCgpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdFBhZ2VDb21wb25lbnQge1xuICAjZG1zU2VydmljZSA9IGluamVjdChEbXNTZXJ2aWNlKTtcbiAgI2V2ZW50U2VydmljZSA9IGluamVjdChFdmVudFNlcnZpY2UpO1xuICAjc2hlbGxTZXJ2aWNlID0gaW5qZWN0KFNoZWxsU2VydmljZSk7XG4gICNyb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICNyb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgI29iamVjdENvbmZpZyA9IGluamVjdChPYmplY3RDb25maWdTZXJ2aWNlKTtcbiAgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAjZHJpdmUgPSBpbmplY3QoRHJpdmVTZXJ2aWNlKTtcbiAgI2RldmljZSA9IGluamVjdChEZXZpY2VTZXJ2aWNlKTtcblxuICBidXN5ID0gdGhpcy4jZHJpdmUuc3RhdGUkLmJ1c3k7XG4gIHNtYWxsU2NyZWVuTGF5b3V0ID0gc2lnbmFsKGZhbHNlKTtcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuXG4gIGRtc09iamVjdCA9IHNpZ25hbDxEbXNPYmplY3QgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICNkbXNPYmplY3RFZmZlY3QgPSBlZmZlY3QoKCkgPT4gdGhpcy4jc2V0SGVhZGVyRGF0YSgpKTtcbiAgZmlsZURyb3BSZXBsYWNlRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5kbXNPYmplY3QoKT8ucGVybWlzc2lvbnM/LndyaXRlQ29udGVudCk7XG4gIGZsYXZvcmVkRG1zT2JqZWN0ID0gY29tcHV0ZWQ8Rmxhdm9yZWREbXNPYmplY3QgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICBjb25zdCBvID0gdGhpcy5kbXNPYmplY3QoKTtcbiAgICByZXR1cm4gb1xuICAgICAgPyB7XG4gICAgICAgICAgb2JqZWN0OiBvLFxuICAgICAgICAgIGZsYXZvcnM6IFtcbiAgICAgICAgICAgIC8vICAge1xuICAgICAgICAgICAgLy8gICBpZDogQVBQX1NDSEVNQS50eXBlc1snZmlsZSddWydpZCddLFxuICAgICAgICAgICAgLy8gICBpY29uOiBBUFBfU0NIRU1BLnR5cGVzWydmaWxlJ11bJ2ljb24nXSxcbiAgICAgICAgICAgIC8vICAgc290OiBGU19TT1RTLm9iamVjdFxuICAgICAgICAgICAgLy8gfSxcbiAgICAgICAgICAgIC4uLnRoaXMuI3NoZWxsU2VydmljZS5nZXRBcHBsaWVkT2JqZWN0Rmxhdm9ycyhvKS5hcHBsaWVkXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfSk7XG5cbiAgdmVyc2lvbnNMaW5rID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG8gPSB0aGlzLmRtc09iamVjdCgpO1xuICAgIHJldHVybiBvID8gYC4uLy4uL3ZlcnNpb25zLyR7by5pZH1gIDogJyc7XG4gIH0pO1xuXG4gIGljb25zID0ge1xuICAgIGJhY2s6IFlVVl9JQ09OUy5iYWNrLFxuICAgIGVycm9yOiBZVVZfSUNPTlMuYXR0ZW50aW9uLFxuICAgIHJlZnJlc2g6IFlVVl9JQ09OUy5yZWZyZXNoXG4gIH07XG5cbiAgbGF5b3V0U2V0dGluZ0lkQmFzZSA9ICdhcHAuZHJpdmUub2JqZWN0Lic7XG5cbiAgaGVhZGVyRGF0YT86IHtcbiAgICB0aXRsZTogUmVuZGVyZXJEaXJlY3RpdmVJbnB1dDtcbiAgICBkZXNjcmlwdGlvbj86IFJlbmRlcmVyRGlyZWN0aXZlSW5wdXQ7XG4gICAgaWNvbjogc3RyaW5nO1xuICB9O1xuXG4gIGV4Y2x1ZGVBY3Rpb25zID0gW0FQUF9BQ1RJT05TLnBhc3RlLCBBUFBfQUNUSU9OUy5jb250ZW50VXBkYXRlLCBCQVNFX0FDVElPTi5jb3B5LCBCQVNFX0FDVElPTi5jdXRdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI3JvdXRlLnBhcmFtTWFwLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgocDogUGFyYW1NYXApID0+IHtcbiAgICAgIHRoaXMuX2xvYWREZXRhaWxzKHAuZ2V0KCdpZCcpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2RldmljZS5zY3JlZW5DaGFuZ2UkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoczogRGV2aWNlU2NyZWVuKSA9PiB7XG4gICAgICAgIGNvbnN0IHNzbCA9IHMuc2l6ZSA9PT0gJ3MnICYmIHMub3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCc7XG4gICAgICAgIHRoaXMuc21hbGxTY3JlZW5MYXlvdXQuc2V0KHNzbCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLiNldmVudFNlcnZpY2VcbiAgICAgIC5vbihZdXZFdmVudFR5cGUuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgIGlmIChlLmRhdGEuaWQgPT09IHRoaXMuZG1zT2JqZWN0KCk/LmlkKSB0aGlzLmRtc09iamVjdC5zZXQoZS5kYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZXZlbnRTZXJ2aWNlXG4gICAgICAub24oWXV2RXZlbnRUeXBlLkRNU19PQkpFQ1RfREVMRVRFRClcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICBpZiAoZS5kYXRhLmlkID09PSB0aGlzLmRtc09iamVjdCgpPy5pZClcbiAgICAgICAgICBpZiAoZS5kYXRhLmlkID09PSB0aGlzLmRtc09iamVjdCgpPy5pZClcbiAgICAgICAgICAgIC8vIG5hdmlnYXRlIHRvIHBhcmVudCBmb2xkZXJcbiAgICAgICAgICAgIHRoaXMub3BlblBhcmVudCgpO1xuICAgICAgfSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIGNvbnN0IG8gPSB0aGlzLmRtc09iamVjdCgpO1xuICAgIGlmIChvKVxuICAgICAgdGhpcy4jZG1zU2VydmljZS5nZXREbXNPYmplY3Qoby5pZCkuc3Vic2NyaWJlKChvKSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0LnNldChvKTtcbiAgICAgIH0pO1xuICAgIGlmIChvKVxuICAgICAgdGhpcy4jZG1zU2VydmljZS5nZXREbXNPYmplY3Qoby5pZCkuc3Vic2NyaWJlKChvKSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0LnNldChvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb3BlblBhcmVudCgpIHtcbiAgICBjb25zdCBwaWQgPSB0aGlzLmRtc09iamVjdCgpPy5wYXJlbnRJZCB8fCBEUklWRV9ST09UX0ZPTERFUl9JRDtcbiAgICB0aGlzLiNyb3V0ZXIubmF2aWdhdGUoWycuLi8uLicsICdmaWxlcycsIHBpZF0sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuI3JvdXRlXG4gICAgfSk7XG4gIH1cblxuICBvbkluZGV4ZGF0YVNhdmVkKHVwZGF0ZWRPYmplY3Q6IERtc09iamVjdCkge1xuICAgIHRoaXMuZG1zT2JqZWN0LnNldCh1cGRhdGVkT2JqZWN0KTtcbiAgfVxuXG4gICNzZXRIZWFkZXJEYXRhKCkge1xuICAgIGNvbnN0IG8gPSB0aGlzLmRtc09iamVjdCgpO1xuICAgIGlmICghbykge1xuICAgICAgdGhpcy5oZWFkZXJEYXRhID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByb2MgPSB0aGlzLiNvYmplY3RDb25maWcuZ2V0UmVzb2x2ZWRPYmplY3RDb25maWcoby5kYXRhLCBBUFBfU0NIRU1BLnR5cGVzWydmaWxlJ10sIEFQUF9JRCk7XG4gICAgICB0aGlzLmhlYWRlckRhdGEgPSB7XG4gICAgICAgIHRpdGxlOiByb2MudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiByb2MuZGVzY3JpcHRpb24sXG4gICAgICAgIGljb246IHJvYy5pY29uPy52YWx1ZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBvbkZpbGVEcm9wKGZpbGU6IEZpbGVbXSkge1xuICAgIHRoaXMuI2RyaXZlLnNldEJ1c3kodHJ1ZSk7XG4gICAgY29uc3QgZG1zT2JqZWN0ID0gdGhpcy5kbXNPYmplY3QoKTtcblxuICAgIGRtc09iamVjdCAmJlxuICAgICAgdGhpcy4jZHJpdmVcbiAgICAgICAgLnVwbG9hZENvbnRlbnQoZG1zT2JqZWN0LmlkLCBmaWxlWzBdKVxuICAgICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLiNkcml2ZS5zZXRCdXN5KGZhbHNlKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHZlcnNpb25TZWxlY3RlZCh2ZXJzaW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCBkbXNPYmplY3QgPSB0aGlzLmRtc09iamVjdCgpO1xuICAgIGRtc09iamVjdCAmJiB0aGlzLiNyb3V0ZXIubmF2aWdhdGUoWycuLi8uLicsICd2ZXJzaW9ucycsIGRtc09iamVjdC5pZF0sIHsgcXVlcnlQYXJhbXM6IHsgdmVyc2lvbiB9LCByZWxhdGl2ZVRvOiB0aGlzLiNyb3V0ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWREZXRhaWxzKGlkOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgdGhpcy5kbXNPYmplY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLmhlYWRlckRhdGEgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI3NoZWxsU2VydmljZS5hZGRCdXN5KCk7XG4gICAgICAvLyBsb2FkIHRoZSBkbXMgb2JqZWN0XG4gICAgICB0aGlzLiNkbXNTZXJ2aWNlLmdldERtc09iamVjdChpZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKG86IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgIHRoaXMuZG1zT2JqZWN0LnNldChvKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZG1zT2JqZWN0LnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgIHN3aXRjaCAoZS5zdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgNDA0OlxuICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5hcHAuZHJpdmUucGFnZS5vYmplY3QuZXJyb3IuNDA0Jyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuYXBwLmRyaXZlLnBhZ2Uub2JqZWN0LmVycm9yLmRlZmF1bHQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLiNzaGVsbFNlcnZpY2UucmVtb3ZlQnVzeSgpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBsZXQgb2JqZWN0ID0gZG1zT2JqZWN0KCk7XG5AaWYgKG9iamVjdCkge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJvYmplY3RcIlxuICAgIHl1dkNvbnRhaW5lclNpemVcbiAgICBbeXV2RmlsZURyb3Bab25lXT1cInsgbGFiZWw6ICd5dXYuYXBwLmRyaXZlLmZpbGVzLmRyb3B6b25lLmNvbnRlbnQucmVwbGFjZS5sYWJlbCcgfCB0cmFuc2xhdGUgfVwiXG4gICAgW2ZpbGVEcm9wRGlzYWJsZWRdPVwiZmlsZURyb3BSZXBsYWNlRGlzYWJsZWQoKVwiXG4gICAgKGZpbGVEcm9wKT1cIm9uRmlsZURyb3AoJGV2ZW50KVwiXG4gID5cbiAgICA8eW1kLXJpYmJvbiBbb2JqZWN0c109XCJbb2JqZWN0XVwiIFtleGNsdWRlQWN0aW9uc109XCJleGNsdWRlQWN0aW9uc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlICNwcmltYXJ5QWN0aW9ucz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdlwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJiYWNrXCIgKGNsaWNrKT1cIm9wZW5QYXJlbnQoKVwiPlxuICAgICAgICAgICAgPHl2Yy1pY29uIFtzdmddPVwiaWNvbnMuYmFja1wiPjwveXZjLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlZnJlc2hcIiB0aXRsZT1cInt7ICd5dXYuYXBwLmRyaXZlLnBhZ2Uub2JqZWN0LnJlZnJlc2gudG9vbHRpcCcgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwicmVmcmVzaCgpXCI+XG4gICAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy5yZWZyZXNoXCI+PC95dmMtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSA8bmctdGVtcGxhdGUgI3NlY29uZGFyeUFjdGlvbnM+PC9uZy10ZW1wbGF0ZT4gLS0+XG4gICAgPC95bWQtcmliYm9uPlxuXG4gICAgQGxldCBzc2wgPSBzbWFsbFNjcmVlbkxheW91dCgpO1xuICAgIEBpZiAoc3NsKSB7XG4gICAgICA8eXZjLXRhYnMgW2xheW91dFNldHRpbmdzSURdPVwibGF5b3V0U2V0dGluZ0lkQmFzZSArICd0YWJzLnNtYWxsJ1wiIFtjYWNoZVZpZXdzXT1cImZhbHNlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cInsgaWQ6ICdjb250ZW50X3MnLCBsYWJlbDogJ3l1di5hcHAuZHJpdmUub2JqZWN0LW1ldGFkYXRhLnRhYnMuY29udGVudC50aXRsZScgfCB0cmFuc2xhdGUgfVwiPlxuICAgICAgICAgIEBpZiAob2JqZWN0ICYmIG9iamVjdD8uY29udGVudCkge1xuICAgICAgICAgICAgPHl1di1vYmplY3QtcHJldmlldyBbZG1zT2JqZWN0XT1cIm9iamVjdFwiPjwveXV2LW9iamVjdC1wcmV2aWV3PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwieyBpZDogJ2luZGV4ZGF0YV9zJywgbGFiZWw6ICd5dXYuYXBwLmRyaXZlLm9iamVjdC1tZXRhZGF0YS50YWJzLmluZGV4ZGF0YS50aXRsZScgfCB0cmFuc2xhdGUgfVwiPlxuICAgICAgICAgIDx5dXYtb2JqZWN0LW1ldGFkYXRhIFtmbGF2b3JlZERtc09iamVjdF09XCJmbGF2b3JlZERtc09iamVjdCgpXCIgKGluZGV4RGF0YVNhdmVkKT1cIm9uSW5kZXhkYXRhU2F2ZWQoJGV2ZW50KVwiPiA8L3l1di1vYmplY3QtbWV0YWRhdGE+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cInsgaWQ6ICdoaXN0b3J5X3MnLCBsYWJlbDogJ3l1di5hcHAuZHJpdmUub2JqZWN0LW1ldGFkYXRhLnRhYnMuaGlzdG9yeS50aXRsZScgfCB0cmFuc2xhdGUgfVwiPlxuICAgICAgICAgIDx5dXYtb2JqZWN0LWF1ZGl0IFtkbXNPYmplY3RdPVwib2JqZWN0XCI+PC95dXYtb2JqZWN0LWF1ZGl0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC95dmMtdGFicz5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDx5dmMtc3BsaXQtdmlldyBbbGF5b3V0U2V0dGluZ3NJRF09XCJsYXlvdXRTZXR0aW5nSWRCYXNlICsgJ3NwbGl0dmlldydcIiBbZ3V0dGVyU2l6ZV09XCIxXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNDBcIj5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1ldGFcIj5cbiAgICAgICAgICAgIDxoZWFkZXI+XG4gICAgICAgICAgICAgIDx5dXYtb2JqZWN0LWZsYXZvciBkaXNhYmxlU2VsZWN0aW9uPVwidHJ1ZVwiIFtkbXNPYmplY3RdPVwib2JqZWN0XCI+PC95dXYtb2JqZWN0LWZsYXZvcj5cblxuICAgICAgICAgICAgICBAaWYgKGhlYWRlckRhdGEpIHtcbiAgICAgICAgICAgICAgICA8eXZjLWljb24gY2xhc3M9XCJvYmplY3QtaWNvblwiIFtzdmddPVwiaGVhZGVyRGF0YS5pY29uXCI+PC95dmMtaWNvbj5cbiAgICAgICAgICAgICAgICA8aDE+PG5nLWNvbnRhaW5lciAqeXV2UmVuZGVyZXI9XCJoZWFkZXJEYXRhLnRpdGxlXCI+PC9uZy1jb250YWluZXI+PC9oMT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj48bmctY29udGFpbmVyICp5dXZSZW5kZXJlcj1cImhlYWRlckRhdGEuZGVzY3JpcHRpb25cIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgIDx5dmMtdGFicyBbbGF5b3V0U2V0dGluZ3NJRF09XCJsYXlvdXRTZXR0aW5nSWRCYXNlICsgJ3RhYnMnXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cInsgaWQ6ICdpbmRleGRhdGEnLCBsYWJlbDogJ3l1di5hcHAuZHJpdmUub2JqZWN0LW1ldGFkYXRhLnRhYnMuaW5kZXhkYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZSB9XCI+XG4gICAgICAgICAgICAgICAgPHl1di1vYmplY3QtbWV0YWRhdGEgW2ZsYXZvcmVkRG1zT2JqZWN0XT1cImZsYXZvcmVkRG1zT2JqZWN0KClcIiAoaW5kZXhEYXRhU2F2ZWQpPVwib25JbmRleGRhdGFTYXZlZCgkZXZlbnQpXCI+IDwveXV2LW9iamVjdC1tZXRhZGF0YT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwieyBpZDogJ2hpc3RvcnknLCBsYWJlbDogJ3l1di5hcHAuZHJpdmUub2JqZWN0LW1ldGFkYXRhLnRhYnMuaGlzdG9yeS50aXRsZScgfCB0cmFuc2xhdGUgfVwiPlxuICAgICAgICAgICAgICAgIDx5dXYtb2JqZWN0LWF1ZGl0IFtkbXNPYmplY3RdPVwib2JqZWN0XCIgW3ZlcnNpb25zTGlua109XCJ2ZXJzaW9uc0xpbmsoKVwiPjwveXV2LW9iamVjdC1hdWRpdD5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwveXZjLXRhYnM+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjYwXCI+XG4gICAgICAgICAgICBAaWYgKG9iamVjdCAmJiBvYmplY3Q/LmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgPHl1di1vYmplY3QtcHJldmlldyBbZG1zT2JqZWN0XT1cIm9iamVjdFwiPjwveXV2LW9iamVjdC1wcmV2aWV3PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC95dmMtc3BsaXQtdmlldz5cbiAgICB9XG4gIDwvZGl2PlxufSBAZWxzZSBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gIDwhLS0gb2JqZWN0IGNvdWxkIG5vdCBiZSBsb2FkZWQgLS0+XG4gIDxkaXYgY2xhc3M9XCJlcnJvciBzdGF0ZVwiPlxuICAgIDx5dmMtaWNvbiBbc3ZnXT1cImljb25zLmVycm9yXCI+PC95dmMtaWNvbj5cbiAgICA8cD57eyBlcnJvck1lc3NhZ2UgfX08L3A+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIDwhLS0gb2JqZWN0IGlzIGxvYWRpbmcgLS0+XG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nIHN0YXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cInl1di1sb2FkZXJcIj48L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ // ID representing the root folder
2
+ export const DRIVE_ROOT_FOLDER_ID = 'root';
3
+ // ID representing a custom view like 'recently edited documents'
4
+ export const DRIVE_QUERY_FOLDER_ID = 'query';
5
+ export var DRIVE_EVENT;
6
+ (function (DRIVE_EVENT) {
7
+ DRIVE_EVENT["refresh"] = "refresh";
8
+ })(DRIVE_EVENT || (DRIVE_EVENT = {}));
9
+ export var DRIVE_ACTION_MODE;
10
+ (function (DRIVE_ACTION_MODE) {
11
+ DRIVE_ACTION_MODE["CUT"] = "cut";
12
+ DRIVE_ACTION_MODE["COPY"] = "copy";
13
+ })(DRIVE_ACTION_MODE || (DRIVE_ACTION_MODE = {}));
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcHBzL2RyaXZlL3NyYy9saWIvc2VydmljZXMvZHJpdmUvZHJpdmUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRDQSxrQ0FBa0M7QUFDbEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0FBQzNDLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUM7QUFJN0MsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQixrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBRlcsV0FBVyxLQUFYLFdBQVcsUUFFdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLGdDQUFXLENBQUE7SUFDWCxrQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFHNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEbXNPYmplY3QsIFNlYXJjaFF1ZXJ5IH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvYWN0aW9ucyc7XG5pbXBvcnQgeyBUaWxlRGF0YSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWZyYW1ld29yay90aWxlLWxpc3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkQ3J1bWIge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIERyaXZlU3RhdGUge1xuICBjdXJyZW50Rm9sZGVyOiBzdHJpbmcgfCBudWxsO1xuICBxdWVyeTogU2VhcmNoUXVlcnkgfCBudWxsO1xuICBxdWVyeVRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICBzZWxlY3Rpb246IERtc09iamVjdFtdO1xuICBhY3Rpb25zOiBBY3Rpb25bXTtcbiAgYnVzeTogYm9vbGVhbjtcbiAgc29ydDoge1xuICAgIHByb3BlcnR5OiBzdHJpbmc7XG4gICAgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnO1xuICB9IHwgbnVsbDtcbiAgYnJlYWRjcnVtYjoge1xuICAgIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgcGFydGlhbDogYm9vbGVhbjtcbiAgICBpdGVtczogQnJlYWRDcnVtYltdO1xuICAgIGZvbGRlcjogeyBmb2xkZXJJZDogc3RyaW5nIHwgbnVsbDsgZW50cnk6IEJyZWFkQ3J1bWJbXTsgbG9hZGluZzogYm9vbGVhbiB9IHwgbnVsbDtcbiAgfTtcbiAgdmVyc2lvbnM6IHtcbiAgICB2ZXJzaW9uc0xpc3Q6IFRpbGVEYXRhW107XG4gICAgc2VsZWN0ZWRWZXJzaW9uOiBEbXNPYmplY3RbXSB8IG51bGw7XG4gIH07XG4gIHNlbGVjdGVkRG1zT2JqZWN0OiBEbXNPYmplY3QgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyaXZlVmFsaWRhdGVQYXlsb2FkIHtcbiAgYXBwOiBzdHJpbmc7XG4gIGZpbGVOYW1lczogc3RyaW5nW107XG4gIHRhcmdldEZvbGRlcklkPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBEcml2ZVZhbGlkYXRlUmVzcG9uc2Uge1xuICBlcnJvcnM6IFt7IG1lc3NhZ2U6IHN0cmluZ1tdIH1dO1xuICBleGlzdGluZ0ZpbGVOYW1lczogc3RyaW5nW107XG4gIGludmFsaWRGaWxlTmFtZXM6IHN0cmluZ1tdO1xuICB2YWxpZDogYm9vbGVhbjtcbn1cblxuLy8gSUQgcmVwcmVzZW50aW5nIHRoZSByb290IGZvbGRlclxuZXhwb3J0IGNvbnN0IERSSVZFX1JPT1RfRk9MREVSX0lEID0gJ3Jvb3QnO1xuLy8gSUQgcmVwcmVzZW50aW5nIGEgY3VzdG9tIHZpZXcgbGlrZSAncmVjZW50bHkgZWRpdGVkIGRvY3VtZW50cydcbmV4cG9ydCBjb25zdCBEUklWRV9RVUVSWV9GT0xERVJfSUQgPSAncXVlcnknO1xuXG5leHBvcnQgdHlwZSBEcml2ZUZvbGRlcklkID0gdHlwZW9mIERSSVZFX1JPT1RfRk9MREVSX0lEIHwgdHlwZW9mIERSSVZFX1FVRVJZX0ZPTERFUl9JRDtcblxuZXhwb3J0IGVudW0gRFJJVkVfRVZFTlQge1xuICByZWZyZXNoID0gJ3JlZnJlc2gnXG59XG5cbmV4cG9ydCBlbnVtIERSSVZFX0FDVElPTl9NT0RFIHtcbiAgQ1VUID0gJ2N1dCcsXG4gIENPUFkgPSAnY29weSdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVSZXN1bHQge1xuICBpZD86IHN0cmluZztcbiAgZXJyb3I/OiBDcmVhdGVFcnJvcjtcbn1cbmV4cG9ydCB0eXBlIENyZWF0ZUVycm9yID0gJ2RlZmF1bHQnIHwgJ25hbWVFeGlzdHMnO1xuIl19