@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.
- package/README.md +47 -0
- package/esm2022/extensions/index.mjs +2 -0
- package/esm2022/extensions/lib/extensions.module.mjs +35 -0
- package/esm2022/extensions/lib/extensions.service.mjs +44 -0
- package/esm2022/extensions/lib/object-config.defaults.mjs +19 -0
- package/esm2022/extensions/yuuvis-app-drive-extensions.mjs +5 -0
- package/esm2022/index.mjs +5 -0
- package/esm2022/lib/actions/copy-link/copy-link.action.mjs +40 -0
- package/esm2022/lib/actions/index.mjs +7 -0
- package/esm2022/lib/actions/manage-versions/manage-versions.action.mjs +33 -0
- package/esm2022/lib/actions/manage-versions/manage-versions.component.mjs +105 -0
- package/esm2022/lib/actions/paste/paste.action.mjs +41 -0
- package/esm2022/lib/actions/rename/rename.action.mjs +31 -0
- package/esm2022/lib/actions/rename/rename.component.mjs +42 -0
- package/esm2022/lib/actions/rename/rename.validator.mjs +23 -0
- package/esm2022/lib/actions/updateContent/update.content.action.mjs +52 -0
- package/esm2022/lib/components/add-button/add-button-overlay/add-button-overlay.component.mjs +109 -0
- package/esm2022/lib/components/add-button/add-button.component.mjs +39 -0
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +74 -0
- package/esm2022/lib/components/folder-tree/folder-tree.component.mjs +89 -0
- package/esm2022/lib/components/index.mjs +10 -0
- package/esm2022/lib/components/object-name/object-name.component.mjs +60 -0
- package/esm2022/lib/components/overlay/create-folder/create-folder.component.mjs +48 -0
- package/esm2022/lib/components/paste-from-clipboard/paste-from-clipboard.component.mjs +28 -0
- package/esm2022/lib/components/ribbon/ribbon.component.mjs +102 -0
- package/esm2022/lib/components/search-filter/date-range-picker/date-range-picker.component.mjs +38 -0
- package/esm2022/lib/components/search-filter/search-filter.component.mjs +429 -0
- package/esm2022/lib/components/sort/sort.component.mjs +156 -0
- package/esm2022/lib/components/versions-list/tile/tile.component.mjs +60 -0
- package/esm2022/lib/components/versions-list/versions-list.component.mjs +94 -0
- package/esm2022/lib/container/drive/drive.component.mjs +116 -0
- package/esm2022/lib/drive.icons.mjs +16 -0
- package/esm2022/lib/drive.schema.mjs +49 -0
- package/esm2022/lib/lib.routes.mjs +17 -0
- package/esm2022/lib/pages/files/files.component.mjs +377 -0
- package/esm2022/lib/pages/object/object.component.mjs +200 -0
- package/esm2022/lib/services/drive/drive.interface.mjs +14 -0
- package/esm2022/lib/services/drive/drive.service.mjs +437 -0
- package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.mjs +158 -0
- package/esm2022/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.mjs +2 -0
- package/esm2022/lib/services/drive/versions/versions.mapping.mjs +42 -0
- package/esm2022/lib/services/index.mjs +5 -0
- package/esm2022/lib/services/providers/drive.providers.mjs +10 -0
- package/esm2022/lib/services/resolver/files.resolver.mjs +12 -0
- package/esm2022/lib/services/resolver/index.mjs +3 -0
- package/esm2022/lib/services/resolver/versions.route.resolver.mjs +10 -0
- package/esm2022/lib/services/stored-query/stored-query.data.mjs +25 -0
- package/esm2022/lib/services/stored-query/stored-query.interface.mjs +2 -0
- package/esm2022/lib/services/stored-query/stored-query.service.mjs +41 -0
- package/esm2022/lib/services/tokens/breadcrumb-max-depth.token.mjs +3 -0
- package/esm2022/lib/services/tokens/index.mjs +2 -0
- package/esm2022/yuuvis-app-drive.mjs +5 -0
- package/extensions/README.md +3 -0
- package/extensions/index.d.ts +1 -0
- package/extensions/lib/extensions.module.d.ts +6 -0
- package/extensions/lib/extensions.service.d.ts +7 -0
- package/extensions/lib/object-config.defaults.d.ts +2 -0
- package/fesm2022/yuuvis-app-drive-extensions.mjs +99 -0
- package/fesm2022/yuuvis-app-drive-extensions.mjs.map +1 -0
- package/fesm2022/yuuvis-app-drive.mjs +2945 -0
- package/fesm2022/yuuvis-app-drive.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/lib/actions/copy-link/copy-link.action.d.ts +18 -0
- package/lib/actions/index.d.ts +6 -0
- package/lib/actions/manage-versions/manage-versions.action.d.ts +17 -0
- package/lib/actions/manage-versions/manage-versions.component.d.ts +32 -0
- package/lib/actions/paste/paste.action.d.ts +17 -0
- package/lib/actions/rename/rename.action.d.ts +17 -0
- package/lib/actions/rename/rename.component.d.ts +12 -0
- package/lib/actions/rename/rename.validator.d.ts +5 -0
- package/lib/actions/updateContent/update.content.action.d.ts +18 -0
- package/lib/components/add-button/add-button-overlay/add-button-overlay.component.d.ts +26 -0
- package/lib/components/add-button/add-button.component.d.ts +12 -0
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +25 -0
- package/lib/components/folder-tree/folder-tree.component.d.ts +13 -0
- package/lib/components/index.d.ts +8 -0
- package/lib/components/object-name/object-name.component.d.ts +21 -0
- package/lib/components/overlay/create-folder/create-folder.component.d.ts +12 -0
- package/lib/components/paste-from-clipboard/paste-from-clipboard.component.d.ts +13 -0
- package/lib/components/ribbon/ribbon.component.d.ts +24 -0
- package/lib/components/search-filter/date-range-picker/date-range-picker.component.d.ts +13 -0
- package/lib/components/search-filter/search-filter.component.d.ts +23 -0
- package/lib/components/sort/sort.component.d.ts +31 -0
- package/lib/components/versions-list/tile/tile.component.d.ts +14 -0
- package/lib/components/versions-list/versions-list.component.d.ts +17 -0
- package/lib/container/drive/drive.component.d.ts +36 -0
- package/lib/drive.icons.d.ts +15 -0
- package/lib/drive.schema.d.ts +23 -0
- package/lib/lib.routes.d.ts +2 -0
- package/lib/pages/files/files.component.d.ts +101 -0
- package/lib/pages/object/object.component.d.ts +35 -0
- package/lib/services/drive/drive.interface.d.ts +62 -0
- package/lib/services/drive/drive.service.d.ts +64 -0
- package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.component.d.ts +31 -0
- package/lib/services/drive/resolve-name-conflicts/resolve-name-conflicts.interface.d.ts +8 -0
- package/lib/services/drive/versions/versions.mapping.d.ts +2 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/providers/drive.providers.d.ts +7 -0
- package/lib/services/resolver/files.resolver.d.ts +2 -0
- package/lib/services/resolver/index.d.ts +2 -0
- package/lib/services/resolver/versions.route.resolver.d.ts +2 -0
- package/lib/services/stored-query/stored-query.data.d.ts +5 -0
- package/lib/services/stored-query/stored-query.interface.d.ts +5 -0
- package/lib/services/stored-query/stored-query.service.d.ts +10 -0
- package/lib/services/tokens/breadcrumb-max-depth.token.d.ts +2 -0
- package/lib/services/tokens/index.d.ts +1 -0
- 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
|