@dotglitch/ngx-common 1.2.0 → 2.0.0
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/esm2022/components/command-palette/breadcrumb/breadcrumb.component.mjs +4 -4
- package/esm2022/components/command-palette/command-palette.component.mjs +4 -4
- package/esm2022/components/command-palette/shortcut/shortcut.component.mjs +4 -4
- package/esm2022/components/dynamic-html/dynamic-html.component.mjs +4 -4
- package/esm2022/components/dynamic-html/dynamic-html.module.mjs +5 -5
- package/esm2022/components/dynamic-html/dynamic-html.service.mjs +4 -4
- package/esm2022/components/filemanager/file-grid/file-grid.component.mjs +4 -4
- package/esm2022/components/filemanager/filemanager.component.mjs +4 -4
- package/esm2022/components/filemanager/folder-rename/folder-rename.component.mjs +4 -4
- package/esm2022/components/filemanager/toolbar/breadcrumb/breadcrumb.component.mjs +4 -4
- package/esm2022/components/filemanager/toolbar/icon-button/icon-button.component.mjs +4 -4
- package/esm2022/components/filemanager/toolbar/toolbar.component.mjs +4 -4
- package/esm2022/components/filemanager/tree-view/tree-view.component.mjs +4 -4
- package/esm2022/components/lazy-loader/lazy-loader.component.mjs +4 -4
- package/esm2022/components/lazy-loader/lazy-loader.module.mjs +5 -5
- package/esm2022/components/lazy-loader/lazy-loader.service.mjs +4 -4
- package/esm2022/components/menu/menu.component.mjs +4 -4
- package/esm2022/components/parallax-card/parallax-card.component.mjs +4 -4
- package/esm2022/components/tabulator/tabulator.component.mjs +5 -5
- package/esm2022/components/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/components/vscode/vscode.component.mjs +4 -4
- package/esm2022/directives/image-cache.directive.mjs +4 -4
- package/esm2022/directives/menu.directive.mjs +4 -4
- package/esm2022/directives/tooltip.directive.mjs +7 -7
- package/esm2022/pipes/html-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/resource-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/script-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/style-bypass.pipe.mjs +4 -4
- package/esm2022/pipes/url-bypass.pipe.mjs +4 -4
- package/esm2022/public-api.mjs +1 -4
- package/esm2022/services/command-palette.service.mjs +4 -4
- package/esm2022/services/dependency.service.mjs +4 -4
- package/esm2022/services/dialog.service.mjs +4 -4
- package/esm2022/services/fetch.service.mjs +4 -4
- package/esm2022/services/file.service.mjs +4 -4
- package/esm2022/services/keyboard.service.mjs +4 -4
- package/esm2022/services/navigation.service.mjs +4 -4
- package/esm2022/services/theme.service.mjs +50 -15
- package/fesm2022/{dotglitch-ngx-common-folder-rename.component-6j7OjwOo.mjs → dotglitch-ngx-common-folder-rename.component-Bh1IiRvd.mjs} +5 -7
- package/fesm2022/dotglitch-ngx-common-folder-rename.component-Bh1IiRvd.mjs.map +1 -0
- package/fesm2022/dotglitch-ngx-common.mjs +165 -286
- package/fesm2022/dotglitch-ngx-common.mjs.map +1 -1
- package/package.json +1 -5
- package/public-api.d.ts +0 -1
- package/services/theme.service.d.ts +12 -2
- package/components/react-magic-wrapper/react-magic-wrapper.component.d.ts +0 -63
- package/esm2022/components/react-magic-wrapper/react-magic-wrapper.component.mjs +0 -160
- package/fesm2022/dotglitch-ngx-common-folder-rename.component-6j7OjwOo.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotglitch/ngx-common",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/knackstedt/dotglitch-ngx/tree/main/packages/common"
|
|
7
7
|
},
|
|
@@ -28,13 +28,9 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"angular-split": ">=15.0.0",
|
|
31
|
-
"localforage": ">=1.10.0",
|
|
32
31
|
"monaco-editor": ">=0.40.0",
|
|
33
32
|
"ngx-scrollbar": ">=12.0.0",
|
|
34
33
|
"path-browserify": ">=1.0.0",
|
|
35
|
-
"react": ">=18.0.0",
|
|
36
|
-
"react-dom": ">=18.0.0",
|
|
37
|
-
"tabulator-tables": ">=5.5.0",
|
|
38
34
|
"tslib": "^2.6.2",
|
|
39
35
|
"ulidx": ">=2.0.0"
|
|
40
36
|
},
|
package/public-api.d.ts
CHANGED
|
@@ -49,7 +49,6 @@ export * from './components/filemanager/filemanager.component';
|
|
|
49
49
|
export * from './components/tabulator/tabulator.component';
|
|
50
50
|
export * from './components/vscode/vscode.component';
|
|
51
51
|
export * from './components/parallax-card/parallax-card.component';
|
|
52
|
-
export * from './components/react-magic-wrapper/react-magic-wrapper.component';
|
|
53
52
|
export * from './components/menu/menu.component';
|
|
54
53
|
export * from './components/types';
|
|
55
54
|
export { ConsoleLogger, LogIcon } from './utils/index';
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
type AppTheme = "light" | "dark";
|
|
4
|
-
export declare class ThemeService
|
|
3
|
+
type AppTheme = "light" | "dark" | 'auto';
|
|
4
|
+
export declare class ThemeService {
|
|
5
|
+
readonly themes: {
|
|
6
|
+
label: string;
|
|
7
|
+
id: string;
|
|
8
|
+
}[];
|
|
9
|
+
selectedTheme: any;
|
|
10
|
+
/**
|
|
11
|
+
* This theme will always only be 'dark' or 'light'.
|
|
12
|
+
* For use with canvases and similar libraries.
|
|
13
|
+
*/
|
|
14
|
+
theme: BehaviorSubject<"light" | "dark">;
|
|
5
15
|
constructor();
|
|
6
16
|
setTheme(t: AppTheme): void;
|
|
7
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { AfterViewInit, ApplicationRef, Injector, NgZone, OnChanges, OnDestroy, SimpleChanges, Type, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { ThemeService } from '../../services/theme.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* Extend this component to automatically generate
|
|
7
|
-
* bindings to a React component.
|
|
8
|
-
*
|
|
9
|
-
* ! You _must_ override the property `ngReactComponent`
|
|
10
|
-
* Failure to do so will result in errors
|
|
11
|
-
* `override readonly ngReactComponent = ReactFlowWrappableComponent;`
|
|
12
|
-
*/
|
|
13
|
-
export declare class ReactMagicWrapperComponent implements OnChanges, OnDestroy, AfterViewInit {
|
|
14
|
-
private readonly ngContainer;
|
|
15
|
-
private readonly ngTheme;
|
|
16
|
-
private readonly ngZone;
|
|
17
|
-
/**
|
|
18
|
-
* Wrap an angular component inside of a React memo object.
|
|
19
|
-
* Will attempt to bind @Input and @Output properties if provided,
|
|
20
|
-
* and will bind the react arguments directly as @Input properties.
|
|
21
|
-
*
|
|
22
|
-
* @experimental
|
|
23
|
-
* @param componentClass Angular component
|
|
24
|
-
* @param envInjector An `EnvironmentInjector` instance to be used for the component
|
|
25
|
-
* @param injector An `ElementInjector` instance
|
|
26
|
-
* @param _inputs
|
|
27
|
-
* @param _outputs
|
|
28
|
-
* @returns
|
|
29
|
-
*/
|
|
30
|
-
static WrapAngularComponent: ({ component, appRef, injector, ngZone, staticInputs, staticOutputs, preSiblings, postSiblings, additionalChildren, rootElementName, containerElementName }: {
|
|
31
|
-
component: Type<any>;
|
|
32
|
-
appRef: Omit<ApplicationRef, '_runningTick'>;
|
|
33
|
-
injector: Injector;
|
|
34
|
-
ngZone: NgZone;
|
|
35
|
-
staticInputs?: {
|
|
36
|
-
[key: string]: any;
|
|
37
|
-
};
|
|
38
|
-
staticOutputs?: {
|
|
39
|
-
[key: string]: Function;
|
|
40
|
-
};
|
|
41
|
-
preSiblings?: React.ReactNode[];
|
|
42
|
-
postSiblings?: React.ReactNode[];
|
|
43
|
-
additionalChildren?: React.ReactNode[];
|
|
44
|
-
rootElementName?: Parameters<typeof React.createElement>[0];
|
|
45
|
-
containerElementName?: string;
|
|
46
|
-
}) => React.NamedExoticComponent<object>;
|
|
47
|
-
/**
|
|
48
|
-
* The react component to be wrapped.
|
|
49
|
-
* ! Must be overridden for this wrapper to work
|
|
50
|
-
*/
|
|
51
|
-
ngReactComponent: React.FunctionComponent<any> | React.ComponentClass<any> | string;
|
|
52
|
-
private _root;
|
|
53
|
-
theme: string;
|
|
54
|
-
private ngSubscriptions;
|
|
55
|
-
constructor(ngContainer: ViewContainerRef, ngTheme: ThemeService, ngZone: NgZone);
|
|
56
|
-
ngOnInit(): void;
|
|
57
|
-
ngOnChanges(changes?: SimpleChanges): void;
|
|
58
|
-
ngAfterViewInit(): void;
|
|
59
|
-
ngOnDestroy(): void;
|
|
60
|
-
private _render;
|
|
61
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ReactMagicWrapperComponent, never>;
|
|
62
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ReactMagicWrapperComponent, "app-react-magic-wrapper", never, {}, {}, never, never, true, never>;
|
|
63
|
-
}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { Component, createComponent } from '@angular/core';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { createRoot } from 'react-dom/client';
|
|
4
|
-
import { ulid } from 'ulidx';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../services/theme.service";
|
|
7
|
-
/**
|
|
8
|
-
* Extend this component to automatically generate
|
|
9
|
-
* bindings to a React component.
|
|
10
|
-
*
|
|
11
|
-
* ! You _must_ override the property `ngReactComponent`
|
|
12
|
-
* Failure to do so will result in errors
|
|
13
|
-
* `override readonly ngReactComponent = ReactFlowWrappableComponent;`
|
|
14
|
-
*/
|
|
15
|
-
export class ReactMagicWrapperComponent {
|
|
16
|
-
/**
|
|
17
|
-
* Wrap an angular component inside of a React memo object.
|
|
18
|
-
* Will attempt to bind @Input and @Output properties if provided,
|
|
19
|
-
* and will bind the react arguments directly as @Input properties.
|
|
20
|
-
*
|
|
21
|
-
* @experimental
|
|
22
|
-
* @param componentClass Angular component
|
|
23
|
-
* @param envInjector An `EnvironmentInjector` instance to be used for the component
|
|
24
|
-
* @param injector An `ElementInjector` instance
|
|
25
|
-
* @param _inputs
|
|
26
|
-
* @param _outputs
|
|
27
|
-
* @returns
|
|
28
|
-
*/
|
|
29
|
-
static { this.WrapAngularComponent = ({ component, appRef, injector, ngZone, staticInputs, staticOutputs, preSiblings, postSiblings, additionalChildren, rootElementName, containerElementName }) => React.memo((args) => {
|
|
30
|
-
const id = ulid();
|
|
31
|
-
React.useEffect(() => {
|
|
32
|
-
try {
|
|
33
|
-
const componentInstance = createComponent(component, {
|
|
34
|
-
environmentInjector: appRef.injector,
|
|
35
|
-
elementInjector: injector,
|
|
36
|
-
hostElement: document.getElementById(id)
|
|
37
|
-
});
|
|
38
|
-
appRef.attachView(componentInstance.hostView);
|
|
39
|
-
// @ts-ignore
|
|
40
|
-
// component.hostView = hostView;
|
|
41
|
-
Object.assign(staticInputs, args);
|
|
42
|
-
const { inputs, outputs } = component['ɵcmp'];
|
|
43
|
-
// Returns a list of entries that need to be set
|
|
44
|
-
// This makes it so that unnecessary setters are not invoked.
|
|
45
|
-
const updated = Object.entries(inputs).filter(([parentKey, childKey]) => {
|
|
46
|
-
return componentInstance.instance[childKey] != staticInputs[parentKey];
|
|
47
|
-
});
|
|
48
|
-
updated.forEach(([parentKey, childKey]) => {
|
|
49
|
-
if (staticInputs.hasOwnProperty(parentKey))
|
|
50
|
-
componentInstance.instance[childKey] = staticInputs[parentKey];
|
|
51
|
-
});
|
|
52
|
-
const outputSubscriptions = {};
|
|
53
|
-
// Get a list of unregistered outputs
|
|
54
|
-
const newOutputs = Object.entries(outputs).filter(([parentKey, childKey]) => {
|
|
55
|
-
return !outputSubscriptions[parentKey];
|
|
56
|
-
});
|
|
57
|
-
// Reverse bind via subscription
|
|
58
|
-
newOutputs.forEach(([parentKey, childKey]) => {
|
|
59
|
-
if (!staticOutputs.hasOwnProperty(parentKey))
|
|
60
|
-
return;
|
|
61
|
-
const target = componentInstance.instance[childKey];
|
|
62
|
-
const outputs = staticOutputs;
|
|
63
|
-
const sub = target.subscribe((...args) => {
|
|
64
|
-
// Run the callback in the provided zone
|
|
65
|
-
ngZone.run(() => {
|
|
66
|
-
outputs[parentKey](...args);
|
|
67
|
-
});
|
|
68
|
-
}); // Subscription
|
|
69
|
-
outputSubscriptions[parentKey] = sub;
|
|
70
|
-
});
|
|
71
|
-
// Wrap the destroy method to safely release the subscriptions
|
|
72
|
-
const originalDestroy = componentInstance.onDestroy?.bind(componentInstance);
|
|
73
|
-
componentInstance.onDestroy = (cb) => {
|
|
74
|
-
Object.values(outputSubscriptions).forEach(s => s.unsubscribe());
|
|
75
|
-
originalDestroy?.(cb);
|
|
76
|
-
};
|
|
77
|
-
componentInstance.changeDetectorRef.detectChanges();
|
|
78
|
-
}
|
|
79
|
-
catch (err) {
|
|
80
|
-
console.error(err);
|
|
81
|
-
}
|
|
82
|
-
}, []);
|
|
83
|
-
const elements = [
|
|
84
|
-
...(preSiblings || []),
|
|
85
|
-
React.createElement(containerElementName || "div", { id }),
|
|
86
|
-
...(postSiblings || []),
|
|
87
|
-
...(additionalChildren || [])
|
|
88
|
-
].filter(e => e);
|
|
89
|
-
return React.createElement(rootElementName || "div", {}, ...elements);
|
|
90
|
-
}); }
|
|
91
|
-
constructor(ngContainer, ngTheme, ngZone) {
|
|
92
|
-
this.ngContainer = ngContainer;
|
|
93
|
-
this.ngTheme = ngTheme;
|
|
94
|
-
this.ngZone = ngZone;
|
|
95
|
-
this.ngSubscriptions = [
|
|
96
|
-
this.ngTheme.subscribe(t => {
|
|
97
|
-
this.theme = t;
|
|
98
|
-
this.ngOnChanges();
|
|
99
|
-
})
|
|
100
|
-
];
|
|
101
|
-
}
|
|
102
|
-
ngOnInit() {
|
|
103
|
-
if (!this.ngReactComponent) {
|
|
104
|
-
throw new Error("ReactMagicWrapperComponent cannot start without a provided ngReactComponent!");
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
ngOnChanges(changes) {
|
|
108
|
-
this._render();
|
|
109
|
-
}
|
|
110
|
-
ngAfterViewInit() {
|
|
111
|
-
this._render();
|
|
112
|
-
}
|
|
113
|
-
ngOnDestroy() {
|
|
114
|
-
this._root?.unmount();
|
|
115
|
-
this.ngSubscriptions.forEach(s => s.unsubscribe());
|
|
116
|
-
}
|
|
117
|
-
_render() {
|
|
118
|
-
if (!this.ngReactComponent) {
|
|
119
|
-
console.log("Render no component. May be context issue");
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
;
|
|
123
|
-
this.ngZone.runOutsideAngular(() => {
|
|
124
|
-
try {
|
|
125
|
-
this._root ??= createRoot(this.ngContainer.element.nativeElement);
|
|
126
|
-
// List all keys that do not start with `_` nor `ng`
|
|
127
|
-
const keys = Object.keys(this).filter(k => !/^(?:_|ng)/.test(k));
|
|
128
|
-
// Get all property keys from the class
|
|
129
|
-
const propKeys = keys.filter(k => !k.startsWith("on"));
|
|
130
|
-
// Get all event handler keys from the class
|
|
131
|
-
const evtKeys = keys.filter(k => k.startsWith("on"));
|
|
132
|
-
const props = {};
|
|
133
|
-
// Project all key properties onto `props`
|
|
134
|
-
propKeys.forEach(k => props[k] = this[k]);
|
|
135
|
-
// Attempt to ensure no zone is lost during the event emitter fires
|
|
136
|
-
this.ngZone.runGuarded(() => {
|
|
137
|
-
// Bind all event handlers.
|
|
138
|
-
// ! important Angular uses EventEmitter, React uses
|
|
139
|
-
// a different method of event binding
|
|
140
|
-
evtKeys.forEach(k => props[k] = (...args) => this[k].next(args));
|
|
141
|
-
});
|
|
142
|
-
this._root.render(React.createElement(this.ngReactComponent, { props: props }));
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
console.error(err);
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ReactMagicWrapperComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.ThemeService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ReactMagicWrapperComponent, isStandalone: true, selector: "app-react-magic-wrapper", usesOnChanges: true, ngImport: i0, template: ``, isInline: true }); }
|
|
151
|
-
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ReactMagicWrapperComponent, decorators: [{
|
|
153
|
-
type: Component,
|
|
154
|
-
args: [{
|
|
155
|
-
selector: 'app-react-magic-wrapper',
|
|
156
|
-
template: ``,
|
|
157
|
-
standalone: true
|
|
158
|
-
}]
|
|
159
|
-
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1.ThemeService }, { type: i0.NgZone }] });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtbWFnaWMtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvcmVhY3QtbWFnaWMtd3JhcHBlci9yZWFjdC1tYWdpYy13cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLFNBQVMsRUFBdUosZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9PLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUdwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDOzs7QUFHN0I7Ozs7Ozs7R0FPRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUFFbkM7Ozs7Ozs7Ozs7OztPQVlHO2FBQ0kseUJBQW9CLEdBQUcsQ0FBQyxFQUMzQixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUNaLGFBQWEsRUFDYixXQUFXLEVBQ1gsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixlQUFlLEVBQ2Ysb0JBQW9CLEVBYXZCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUV0QixNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFJLENBQUM7Z0JBRUQsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFO29CQUNqRCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsUUFBUTtvQkFDcEMsZUFBZSxFQUFFLFFBQVE7b0JBQ3pCLFdBQVcsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztpQkFDM0MsQ0FBQyxDQUFDO2dCQUVILE1B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Q0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFMUMsbUVBQW1FO2dCQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ3hCLDJCQUEyQjtvQkFDM0Isb0RBQW9EO29CQUNwRCxzQ0FBc0M7b0JBQ3RDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxDQUFDLENBQUMsQ0FBQTtnQkFFRixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0YsQ0FBQztZQUNELE9BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN0QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDOzhHQWxNUSwwQkFBMEI7a0dBQTFCLDBCQUEwQix3R0FIekIsRUFBRTs7MkZBR0gsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRW52aXJvbm1lbnRJbmplY3RvciwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgVHlwZSwgVmlld0NvbnRhaW5lclJlZiwgVmlld1JlZiwgY3JlYXRlQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVSb290LCBSb290IH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCc7XG5cbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgdWxpZCB9IGZyb20gJ3VsaWR4JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEV4dGVuZCB0aGlzIGNvbXBvbmVudCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlXG4gKiBiaW5kaW5ncyB0byBhIFJlYWN0IGNvbXBvbmVudC5cbiAqXG4gKiAhIFlvdSBfbXVzdF8gb3ZlcnJpZGUgdGhlIHByb3BlcnR5IGBuZ1JlYWN0Q29tcG9uZW50YFxuICogRmFpbHVyZSB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBlcnJvcnNcbiAqIGBvdmVycmlkZSByZWFkb25seSBuZ1JlYWN0Q29tcG9uZW50ID0gUmVhY3RGbG93V3JhcHBhYmxlQ29tcG9uZW50O2BcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcmVhY3QtbWFnaWMtd3JhcHBlcicsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUmVhY3RNYWdpY1dyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICAvKipcbiAgICAgKiBXcmFwIGFuIGFuZ3VsYXIgY29tcG9uZW50IGluc2lkZSBvZiBhIFJlYWN0IG1lbW8gb2JqZWN0LlxuICAgICAqIFdpbGwgYXR0ZW1wdCB0byBiaW5kIEBJbnB1dCBhbmQgQE91dHB1dCBwcm9wZXJ0aWVzIGlmIHByb3ZpZGVkLFxuICAgICAqIGFuZCB3aWxsIGJpbmQgdGhlIHJlYWN0IGFyZ3VtZW50cyBkaXJlY3RseSBhcyBASW5wdXQgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBleHBlcmltZW50YWxcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50Q2xhc3MgQW5ndWxhciBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gZW52SW5qZWN0b3IgICAgQW4gYEVudmlyb25tZW50SW5qZWN0b3JgIGluc3RhbmNlIHRvIGJlIHVzZWQgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgICAgICAgQW4gYEVsZW1lbnRJbmplY3RvcmAgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gX2lucHV0c1xuICAgICAqIEBwYXJhbSBfb3V0cHV0c1xuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgc3RhdGljIFdyYXBBbmd1bGFyQ29tcG9uZW50ID0gKHtcbiAgICAgICAgY29tcG9uZW50LFxuICAgICAgICBhcHBSZWYsXG4gICAgICAgIGluamVjdG9yLFxuICAgICAgICBuZ1pvbmUsXG4gICAgICAgIHN0YXRpY0lucHV0cyxcbiAgICAgICAgc3RhdGljT3V0cHV0cyxcbiAgICAgICAgcHJlU2libGluZ3MsXG4gICAgICAgIHBvc3RTaWJsaW5ncyxcbiAgICAgICAgYWRkaXRpb25hbENoaWxkcmVuLFxuICAgICAgICByb290RWxlbWVudE5hbWUsXG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnROYW1lXG4gICAgfToge1xuICAgICAgICBjb21wb25lbnQ6IFR5cGU8YW55PixcbiAgICAgICAgYXBwUmVmOiBPbWl0PEFwcGxpY2F0aW9uUmVmLCAnX3J1bm5pbmdUaWNrJz4sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHN0YXRpY0lucHV0cz86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgICAgIHN0YXRpY091dHB1dHM/OiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0sXG4gICAgICAgIHByZVNpYmxpbmdzPzogUmVhY3QuUmVhY3ROb2RlW10sXG4gICAgICAgIHBvc3RTaWJsaW5ncz86IFJlYWN0LlJlYWN0Tm9kZVtdLFxuICAgICAgICBhZGRpdGlvbmFsQ2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVbXSxcbiAgICAgICAgcm9vdEVsZW1lbnROYW1lPzogUGFyYW1ldGVyczx0eXBlb2YgUmVhY3QuY3JlYXRlRWxlbWVudD5bMF0sXG4gICAgICAgIGNvbnRhaW5lckVsZW1lbnROYW1lPzogc3RyaW5nXG4gICAgfSkgPT4gUmVhY3QubWVtbygoYXJncykgPT4ge1xuXG4gICAgICAgIGNvbnN0IGlkID0gdWxpZCgpO1xuICAgICAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBhcHBSZWYuaW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRJbmplY3RvcjogaW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgIGhvc3RFbGVtZW50OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZClcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudEluc3RhbmNlLmhvc3RWaWV3KTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgLy8gY29tcG9uZW50Lmhvc3RWaWV3ID0gaG9zdFZpZXc7XG5cbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHN0YXRpY0lucHV0cywgYXJncyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGlucHV0cywgb3V0cHV0cyB9ID0gY29tcG9uZW50WyfJtWNtcCddO1xuXG4gICAgICAgICAgICAgICAgLy8gUmV0dXJucyBhIGxpc3Qgb2YgZW50cmllcyB0aGF0IG5lZWQgdG8gYmUgc2V0XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyBpdCBzbyB0aGF0IHVubmVjZXNzYXJ5IHNldHRlcnMgYXJlIG5vdCBpbnZva2VkLlxuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBPYmplY3QuZW50cmllcyhpbnB1dHMpLmZpbHRlcigoW3BhcmVudEtleSwgY2hpbGRLZXldOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZS5pbnN0YW5jZVtjaGlsZEtleV0gIT0gc3RhdGljSW5wdXRzW3BhcmVudEtleV07XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVkLmZvckVhY2goKFtwYXJlbnRLZXksIGNoaWxkS2V5XTogW3N0cmluZywgc3RyaW5nXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljSW5wdXRzLmhhc093blByb3BlcnR5KHBhcmVudEtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJbnN0YW5jZS5pbnN0YW5jZVtjaGlsZEtleV0gPSBzdGF0aWNJbnB1dHNbcGFyZW50S2V5XTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dFN1YnNjcmlwdGlvbnM6IHsgW2tleTogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgICAgICAgICAgICAgICAvLyBHZXQgYSBsaXN0IG9mIHVucmVnaXN0ZXJlZCBvdXRwdXRzXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3T3V0cHV0cyA9IE9iamVjdC5lbnRyaWVzKG91dHB1dHMpLmZpbHRlcigoW3BhcmVudEtleSwgY2hpbGRLZXldOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhb3V0cHV0U3Vic2NyaXB0aW9uc1twYXJlbnRLZXldO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gUmV2ZXJzZSBiaW5kIHZpYSBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgICBuZXdPdXRwdXRzLmZvckVhY2goKFtwYXJlbnRLZXksIGNoaWxkS2V5XTogW3N0cmluZywgc3RyaW5nXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY091dHB1dHMuaGFzT3duUHJvcGVydHkocGFyZW50S2V5KSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldDogRXZlbnRFbWl0dGVyPHVua25vd24+ID0gY29tcG9uZW50SW5zdGFuY2UuaW5zdGFuY2VbY2hpbGRLZXldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRzID0gc3RhdGljT3V0cHV0cztcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWIgPSB0YXJnZXQuc3Vic2NyaWJlKCguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIGNhbGxiYWNrIGluIHRoZSBwcm92aWRlZCB6b25lXG4gICAgICAgICAgICAgICAgICAgICAgICBuZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRzW3BhcmVudEtleV0oLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9KTsgLy8gU3Vic2NyaXB0aW9uXG5cbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0U3Vic2NyaXB0aW9uc1twYXJlbnRLZXldID0gc3ViO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gV3JhcCB0aGUgZGVzdHJveSBtZXRob2QgdG8gc2FmZWx5IHJlbGVhc2UgdGhlIHN1YnNjcmlwdGlvbnNcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbERlc3Ryb3kgPSBjb21wb25lbnRJbnN0YW5jZS5vbkRlc3Ryb3k/LmJpbmQoY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudEluc3RhbmNlLm9uRGVzdHJveSA9IChjYikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKG91dHB1dFN1YnNjcmlwdGlvbnMpLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbERlc3Ryb3k/LihjYik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29tcG9uZW50SW5zdGFuY2UuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2goZXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtcbiAgICAgICAgICAgIC4uLihwcmVTaWJsaW5ncyB8fCBbXSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KGNvbnRhaW5lckVsZW1lbnROYW1lIHx8IFwiZGl2XCIsIHsgaWQgfSksXG4gICAgICAgICAgICAuLi4ocG9zdFNpYmxpbmdzIHx8IFtdKSxcbiAgICAgICAgICAgIC4uLihhZGRpdGlvbmFsQ2hpbGRyZW4gfHwgW10pXG4gICAgICAgIF0uZmlsdGVyKGUgPT4gZSk7XG5cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQocm9vdEVsZW1lbnROYW1lIHx8IFwiZGl2XCIsIHsgfSwgLi4uZWxlbWVudHMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHJlYWN0IGNvbXBvbmVudCB0byBiZSB3cmFwcGVkLlxuICAgICAqICEgTXVzdCBiZSBvdmVycmlkZGVuIGZvciB0aGlzIHdyYXBwZXIgdG8gd29ya1xuICAgICAqL1xuICAgIG5nUmVhY3RDb21wb25lbnQ6IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PGFueT4gfCBSZWFjdC5Db21wb25lbnRDbGFzczxhbnk+IHwgc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfcm9vdDogUm9vdDtcbiAgICBwdWJsaWMgdGhlbWU6IHN0cmluZztcbiAgICBwcml2YXRlIG5nU3Vic2NyaXB0aW9ucyA9IFtcbiAgICAgICAgdGhpcy5uZ1RoZW1lLnN1YnNjcmliZSh0ID0+IHtcbiAgICAgICAgICAgIHRoaXMudGhlbWUgPSB0O1xuICAgICAgICAgICAgdGhpcy5uZ09uQ2hhbmdlcygpO1xuICAgICAgICB9KVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuZ0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuZ1RoZW1lOiBUaGVtZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5nUmVhY3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWN0TWFnaWNXcmFwcGVyQ29tcG9uZW50IGNhbm5vdCBzdGFydCB3aXRob3V0IGEgcHJvdmlkZWQgbmdSZWFjdENvbXBvbmVudCFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzPzogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW5kZXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9yb290Py51bm1vdW50KCk7XG4gICAgICAgIHRoaXMubmdTdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbmRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5nUmVhY3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVuZGVyIG5vIGNvbXBvbmVudC4gTWF5IGJlIGNvbnRleHQgaXNzdWVcIilcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcm9vdCA/Pz0gY3JlYXRlUm9vdCh0aGlzLm5nQ29udGFpbmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAvLyBMaXN0IGFsbCBrZXlzIHRoYXQgZG8gbm90IHN0YXJ0IHdpdGggYF9gIG5vciBgbmdgXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMpLmZpbHRlcihrID0+ICEvXig/Ol98bmcpLy50ZXN0KGspKTtcblxuICAgICAgICAgICAgICAgIC8vIEdldCBhbGwgcHJvcGVydHkga2V5cyBmcm9tIHRoZSBjbGFzc1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3BLZXlzID0ga2V5cy5maWx0ZXIoayA9PiAhay5zdGFydHNXaXRoKFwib25cIikpO1xuICAgICAgICAgICAgICAgIC8vIEdldCBhbGwgZXZlbnQgaGFuZGxlciBrZXlzIGZyb20gdGhlIGNsYXNzXG4gICAgICAgICAgICAgICAgY29uc3QgZXZ0S2V5cyA9IGtleXMuZmlsdGVyKGsgPT4gay5zdGFydHNXaXRoKFwib25cIikpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvcHMgPSB7fTtcbiAgICAgICAgICAgICAgICAvLyBQcm9qZWN0IGFsbCBrZXkgcHJvcGVydGllcyBvbnRvIGBwcm9wc2BcbiAgICAgICAgICAgICAgICBwcm9wS2V5cy5mb3JFYWNoKGsgPT4gcHJvcHNba10gPSB0aGlzW2tdKTtcblxuICAgICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gZW5zdXJlIG5vIHpvbmUgaXMgbG9zdCBkdXJpbmcgdGhlIGV2ZW50IGVtaXR0ZXIgZmlyZXNcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5HdWFyZGVkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQmluZCBhbGwgZXZlbnQgaGFuZGxlcnMuXG4gICAgICAgICAgICAgICAgICAgIC8vICEgaW1wb3J0YW50IEFuZ3VsYXIgdXNlcyBFdmVudEVtaXR0ZXIsIFJlYWN0IHVzZXNcbiAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgbWV0aG9kIG9mIGV2ZW50IGJpbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgZXZ0S2V5cy5mb3JFYWNoKGsgPT4gcHJvcHNba10gPSAoLi4uYXJncykgPT4gdGhpc1trXS5uZXh0KGFyZ3MpKTtcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fcm9vdC5yZW5kZXIoUmVhY3QuY3JlYXRlRWxlbWVudCh0aGlzLm5nUmVhY3RDb21wb25lbnQsIHsgcHJvcHM6IHByb3BzIGFzIGFueSB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dotglitch-ngx-common-folder-rename.component-6j7OjwOo.mjs","sources":["../../../packages/common/src/components/filemanager/folder-rename/folder-rename.component.ts","../../../packages/common/src/components/filemanager/folder-rename/folder-rename.component.html"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxFileManagerConfiguration } from '../filemanager.component';\nimport { Fetch } from '../../../public-api';\n\n@Component({\n selector: 'app-folder-rename',\n templateUrl: './folder-rename.component.html',\n styleUrls: ['./folder-rename.component.scss'],\n imports: [\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n FormsModule\n ],\n standalone: true\n})\nexport class FolderRenameComponent implements OnInit {\n\n @Input() path: string;\n @Input() name: string = '';\n @Input() config: NgxFileManagerConfiguration;\n\n isRename = false;\n\n constructor(\n public dialog: MatDialogRef<any>,\n private fetch: Fetch\n ) { }\n\n ngOnInit() {\n this.isRename = this.name.length > 0;\n }\n\n onSave() {\n if (this.isRename) {\n const url = this.config.apiSettings.renameEntryUrlTemplate\n ? this.config.apiSettings.renameEntryUrlTemplate(this.path + this.name)\n : this.config.apiSettings.renameEntryUrl\n\n this.fetch.post(url, { path: this.path + '/' + this.name });\n }\n else {\n const url = this.config.apiSettings.createDirectoryUrlTemplate\n ? this.config.apiSettings.createDirectoryUrlTemplate(this.path + this.name)\n : this.config.apiSettings.createDirectoryUrl\n\n this.fetch.post(url, {path: this.path +'/'+ this.name});\n }\n this.dialog.close(true);\n }\n}\n","<mat-form-field style=\"width: 280px;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"name\" (keyup)=\"$event.key == 'Enter' && onSave()\">\n</mat-form-field>\n\n<div style=\"align-self: end;\">\n <button mat-flat-button (click)=\"onSave()\"><mat-icon>check</mat-icon>Ok</button>\n <button mat-flat-button (click)=\"dialog.close()\"><mat-icon>cancel</mat-icon>Cancel</button>\n</div>\n"],"names":["i2.Fetch","i5","i6"],"mappings":"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"}
|