@acorex/cdk 21.0.2-next.23 → 21.0.2-next.24
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.
|
@@ -224,11 +224,11 @@ class AXResizableDirective {
|
|
|
224
224
|
onMouseUp() {
|
|
225
225
|
if (!this.isResizing() || !this.resizeHandle)
|
|
226
226
|
return;
|
|
227
|
-
this.isResizing.set(false);
|
|
228
227
|
this.document.body.style.cursor = '';
|
|
229
228
|
this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;
|
|
230
229
|
const currentWidth = this.hostElement.offsetWidth;
|
|
231
230
|
this.zone.run(() => {
|
|
231
|
+
this.width.set(currentWidth);
|
|
232
232
|
this.onResizingEnded.emit({
|
|
233
233
|
component: this,
|
|
234
234
|
htmlElement: this.hostElement,
|
|
@@ -238,6 +238,7 @@ class AXResizableDirective {
|
|
|
238
238
|
oldValue: this.startMoveWidth,
|
|
239
239
|
});
|
|
240
240
|
});
|
|
241
|
+
this.isResizing.set(false);
|
|
241
242
|
}
|
|
242
243
|
onMouseEnter() {
|
|
243
244
|
if (!this.isResizing() && this.resizeHandle) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-resizable.mjs","sources":["../tmp-esm2022/resizable/lib/resize.directive.js","../tmp-esm2022/resizable/acorex-cdk-resizable.js"],"sourcesContent":["import { AXPlatform } from '@acorex/core/platform';\nimport { AXHtmlUtil } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Directive, DOCUMENT, effect, ElementRef, inject, model, NgZone, output, PLATFORM_ID, signal, } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXResizableDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.platformService = inject(AXPlatform);\n this.zone = inject(NgZone);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.isResizing = signal(false, ...(ngDevMode ? [{ debugName: \"isResizing\" }] : []));\n this.initialElementWidth = 0;\n this.startMoveWidth = 0;\n this.subscriptions = new Subscription();\n // Bound event handlers to maintain reference for cleanup\n this.boundMouseDown = this.onMouseDown.bind(this);\n this.boundMouseMove = this.onMouseMove.bind(this);\n this.boundMouseUp = this.onMouseUp.bind(this);\n this.boundMouseEnter = this.onMouseEnter.bind(this);\n this.boundMouseLeave = this.onMouseLeave.bind(this);\n this.boundDoubleClick = this.onDoubleClick.bind(this);\n this.resizeObserver = new ResizeObserver((entries) => {\n const parentElement = this.hostElement.parentElement;\n if (!parentElement)\n return;\n for (const entry of entries) {\n if (entry.target === parentElement && this.maxWidth() === Infinity) {\n this.maxWidth.set(entry.contentRect.width);\n break;\n }\n }\n });\n /** Define if directive is active or not */\n this.axResizable = model(true, ...(ngDevMode ? [{ debugName: \"axResizable\" }] : []));\n /** Minimum width for the resizable element. */\n this.minWidth = model(100, ...(ngDevMode ? [{ debugName: \"minWidth\" }] : []));\n /** Maximum width for the resizable element. Defaults to parent width if not provided. */\n this.maxWidth = model(Infinity, ...(ngDevMode ? [{ debugName: \"maxWidth\" }] : []));\n /** Behavior on double-click: 'reset' or 'maximize'. */\n this.dblClickAction = model('reset', ...(ngDevMode ? [{ debugName: \"dblClickAction\" }] : []));\n /** Define initial width for the element. */\n this.width = model(null, ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n /** Define reset width for the element. */\n this.defaultWidth = model(null, ...(ngDevMode ? [{ debugName: \"defaultWidth\" }] : []));\n /** Event emitted when resizing starts. */\n this.onResizingStarted = output();\n /** Event emitted when resizing ends. */\n this.onResizingEnded = output();\n /** Event emitted on double-click. */\n this.onResizingDblClick = output();\n this.isRTL = signal(AXHtmlUtil.isRtl(this.document.documentElement), ...(ngDevMode ? [{ debugName: \"isRTL\" }] : []));\n this.isBrowser = isPlatformBrowser(this.platformID);\n this.hostElement = this.el.nativeElement;\n this.subscriptions.add(this.platformService.directionChange.subscribe((i) => {\n this.isRTL.set(i.data === 'rtl');\n if (this.resizeHandle) {\n this.updateHandlePosition();\n }\n }));\n if (this.isBrowser) {\n effect(() => {\n if (this.isResizing()) {\n return;\n }\n const resolvedWidth = this.width() ?? this.defaultWidth();\n if (resolvedWidth !== null) {\n this.applyElementWidth(resolvedWidth);\n }\n });\n }\n }\n ngAfterViewInit() {\n if (!this.isBrowser)\n return;\n this.initialElementWidth = this.hostElement.offsetWidth;\n this.applyWidthFromModel();\n if (this.maxWidth() === Infinity) {\n const parentWidth = this.hostElement.parentElement?.offsetWidth;\n if (parentWidth) {\n this.maxWidth.set(parentWidth);\n }\n }\n const parentElement = this.hostElement.parentElement;\n if (parentElement) {\n this.resizeObserver.observe(parentElement);\n }\n this.createResizeHandle();\n this.setupResizableState();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.resizeObserver.disconnect();\n this.cleanupEventListeners();\n }\n setupResizableState() {\n this.subscriptions.add(this.axResizable.subscribe((isActive) => {\n if (!isActive) {\n this.applyWidthFromModel();\n this.cleanupEventListeners();\n }\n else {\n this.applyWidthFromModel();\n this.createResizeHandle();\n }\n }));\n }\n applyWidthFromModel() {\n const width = this.width();\n if (width !== null) {\n this.applyElementWidth(width);\n return;\n }\n const defaultWidth = this.defaultWidth();\n if (defaultWidth !== null) {\n this.applyElementWidth(defaultWidth);\n }\n }\n applyElementWidth(width) {\n this.hostElement.style.width = `${width}px`;\n }\n createResizeHandle() {\n if (!this.axResizable() || this.resizeHandle)\n return;\n this.hostElement.style.position = 'relative';\n this.resizeHandle = this.document.createElement('div');\n this.resizeHandle.classList.add('ax-resizable-handler');\n this.hostElement.appendChild(this.resizeHandle);\n this.applyHandleStyles();\n this.attachEventListeners();\n }\n applyHandleStyles() {\n if (!this.resizeHandle)\n return;\n Object.assign(this.resizeHandle.style, {\n width: STYLES.handlerWidth,\n backgroundColor: STYLES.backgroundColor,\n position: 'absolute',\n top: '0',\n bottom: '0',\n cursor: STYLES.cursor,\n zIndex: STYLES.zIndex,\n transition: STYLES.transition,\n borderRadius: STYLES.borderRadius,\n userSelect: 'none',\n });\n this.updateHandlePosition();\n }\n updateHandlePosition() {\n if (!this.resizeHandle)\n return;\n const isRTL = this.isRTL();\n if (isRTL) {\n this.resizeHandle.style.left = '0';\n this.resizeHandle.style.right = '';\n }\n else {\n this.resizeHandle.style.right = '0';\n this.resizeHandle.style.left = '';\n }\n }\n attachEventListeners() {\n if (!this.resizeHandle)\n return;\n const handle = this.resizeHandle;\n this.zone.runOutsideAngular(() => {\n handle.addEventListener('mousedown', this.boundMouseDown);\n handle.addEventListener('mouseenter', this.boundMouseEnter);\n handle.addEventListener('mouseleave', this.boundMouseLeave);\n handle.addEventListener('dblclick', this.boundDoubleClick);\n this.document.addEventListener('mousemove', this.boundMouseMove);\n this.document.addEventListener('mouseup', this.boundMouseUp);\n });\n }\n cleanupEventListeners() {\n if (this.resizeHandle) {\n this.resizeHandle.removeEventListener('mousedown', this.boundMouseDown);\n this.resizeHandle.removeEventListener('mouseenter', this.boundMouseEnter);\n this.resizeHandle.removeEventListener('mouseleave', this.boundMouseLeave);\n this.resizeHandle.removeEventListener('dblclick', this.boundDoubleClick);\n this.resizeHandle.remove();\n this.resizeHandle = undefined;\n }\n this.document.removeEventListener('mousemove', this.boundMouseMove);\n this.document.removeEventListener('mouseup', this.boundMouseUp);\n this.document.body.style.cursor = '';\n }\n onMouseDown(event) {\n if (!this.resizeHandle)\n return;\n const handleRect = this.resizeHandle.getBoundingClientRect();\n if (event.clientX < handleRect.left || event.clientX > handleRect.right)\n return;\n event.preventDefault();\n this.isResizing.set(true);\n this.document.body.style.cursor = STYLES.cursorActive;\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColorActive;\n this.startMoveWidth = this.hostElement.offsetWidth;\n this.zone.run(() => {\n this.onResizingStarted.emit({\n component: this,\n htmlElement: this.hostElement,\n isUserInteraction: true,\n name: 'resizingStarted',\n value: this.startMoveWidth,\n oldValue: this.startMoveWidth,\n });\n });\n }\n onMouseMove(event) {\n if (!this.isResizing())\n return;\n const rect = this.hostElement.getBoundingClientRect();\n const isRTL = this.isRTL();\n let newWidth = isRTL ? rect.right - event.clientX : event.clientX - rect.left;\n newWidth = Math.max(this.minWidth(), Math.min(newWidth, this.maxWidth()));\n if (newWidth !== this.hostElement.offsetWidth) {\n this.hostElement.style.width = `${newWidth}px`;\n }\n }\n onMouseUp() {\n if (!this.isResizing() || !this.resizeHandle)\n return;\n this.isResizing.set(false);\n this.document.body.style.cursor = '';\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;\n const currentWidth = this.hostElement.offsetWidth;\n this.zone.run(() => {\n this.onResizingEnded.emit({\n component: this,\n htmlElement: this.hostElement,\n isUserInteraction: true,\n name: 'resizingEnded',\n value: currentWidth,\n oldValue: this.startMoveWidth,\n });\n });\n }\n onMouseEnter() {\n if (!this.isResizing() && this.resizeHandle) {\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColorHover;\n }\n }\n onMouseLeave() {\n if (!this.isResizing() && this.resizeHandle) {\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;\n }\n }\n onDoubleClick() {\n const elementWidth = this.hostElement.offsetWidth;\n const action = this.dblClickAction();\n let newWidth;\n switch (action) {\n case 'reset':\n newWidth = this.resetToInitialWidth();\n break;\n case 'maximize':\n newWidth = this.maximizeToMaxWidth();\n break;\n case 'fit':\n newWidth = this.fitToContent();\n break;\n default:\n newWidth = elementWidth;\n }\n this.zone.run(() => {\n this.onResizingDblClick.emit({\n component: this,\n htmlElement: this.hostElement,\n isUserInteraction: true,\n name: 'onResizingDblClick',\n oldValue: elementWidth,\n value: newWidth,\n });\n });\n }\n resetToInitialWidth() {\n const defaultWidth = this.defaultWidth();\n if (defaultWidth !== null) {\n this.applyElementWidth(defaultWidth);\n return defaultWidth;\n }\n const initialWidth = this.width();\n if (initialWidth !== null) {\n this.applyElementWidth(initialWidth);\n return initialWidth;\n }\n this.applyElementWidth(this.initialElementWidth);\n return this.initialElementWidth;\n }\n maximizeToMaxWidth() {\n const maxWidth = this.maxWidth();\n if (maxWidth !== Infinity) {\n this.applyElementWidth(maxWidth);\n }\n return maxWidth;\n }\n fitToContent() {\n this.hostElement.style.width = 'fit-content';\n return this.hostElement.clientWidth;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXResizableDirective, isStandalone: true, selector: \"[axResizable]\", inputs: { axResizable: { classPropertyName: \"axResizable\", publicName: \"axResizable\", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: \"minWidth\", publicName: \"minWidth\", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: \"maxWidth\", publicName: \"maxWidth\", isSignal: true, isRequired: false, transformFunction: null }, dblClickAction: { classPropertyName: \"dblClickAction\", publicName: \"dblClickAction\", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: \"defaultWidth\", publicName: \"defaultWidth\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { axResizable: \"axResizableChange\", minWidth: \"minWidthChange\", maxWidth: \"maxWidthChange\", dblClickAction: \"dblClickActionChange\", width: \"widthChange\", defaultWidth: \"defaultWidthChange\", onResizingStarted: \"onResizingStarted\", onResizingEnded: \"onResizingEnded\", onResizingDblClick: \"onResizingDblClick\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXResizableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axResizable]',\n }]\n }], ctorParameters: () => [] });\nconst STYLES = {\n handlerWidth: 'var(--ax-comp-resizable-handler-width, 4px)',\n backgroundColor: 'rgba(var(--ax-comp-resizable-background-color))',\n backgroundColorActive: 'rgba(var(--ax-comp-resizable-background-color-active, var(--ax-sys-color-primary-surface)))',\n backgroundColorHover: 'rgba(var(--ax-comp-resizable-background-color-hover, var(--ax-sys-color-primary-light-surface)))',\n cursor: 'var(--ax-comp-resizable-cursor, ew-resize)',\n cursorActive: 'var(--ax-comp-resizable-cursor-active, ew-resize)',\n zIndex: 'var(--ax-comp-resizable-z-index, 999)',\n transition: 'var(--ax-comp-resizable-transition, background-color --ax-sys-transition-duration --ax-sys-transition-timing-function)',\n borderRadius: 'var(--ax-comp-resizable-border-radius, --ax-sys-border-radius)',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9yZXNpemFibGUvc3JjL2xpYi9yZXNpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUtwQyxNQUFNLE9BQU8sb0JBQW9CO0lBOEQvQjtRQTdEaUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUsxQyxlQUFVLEdBQTRCLE1BQU0sQ0FBQyxLQUFLLHNEQUFDLENBQUM7UUFDcEQsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzQyx5REFBeUQ7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJ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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhIdG1sVXRpbCB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgbW9kZWwsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBvdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXhSZXNpemFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhSZXNpemFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtU2VydmljZSA9IGluamVjdChBWFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbjtcbiAgXG4gIHByaXZhdGUgaG9zdEVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSByZXNpemVIYW5kbGU/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBpc1Jlc2l6aW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgaW5pdGlhbEVsZW1lbnRXaWR0aCA9IDA7XG4gIHByaXZhdGUgc3RhcnRNb3ZlV2lkdGggPSAwO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIFxuICAvLyBCb3VuZCBldmVudCBoYW5kbGVycyB0byBtYWludGFpbiByZWZlcmVuY2UgZm9yIGNsZWFudXBcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZE1vdXNlRG93biA9IHRoaXMub25Nb3VzZURvd24uYmluZCh0aGlzKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZE1vdXNlTW92ZSA9IHRoaXMub25Nb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZE1vdXNlVXAgPSB0aGlzLm9uTW91c2VVcC5iaW5kKHRoaXMpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kTW91c2VFbnRlciA9IHRoaXMub25Nb3VzZUVudGVyLmJpbmQodGhpcyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYm91bmRNb3VzZUxlYXZlID0gdGhpcy5vbk1vdXNlTGVhdmUuYmluZCh0aGlzKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZERvdWJsZUNsaWNrID0gdGhpcy5vbkRvdWJsZUNsaWNrLmJpbmQodGhpcyk7XG4gIFxuICBwcml2YXRlIHJlYWRvbmx5IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuaG9zdEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICBpZiAoIXBhcmVudEVsZW1lbnQpIHJldHVybjtcbiAgICBcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyeS50YXJnZXQgPT09IHBhcmVudEVsZW1lbnQgJiYgdGhpcy5tYXhXaWR0aCgpID09PSBJbmZpbml0eSkge1xuICAgICAgICB0aGlzLm1heFdpZHRoLnNldChlbnRyeS5jb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLyoqIERlZmluZSBpZiBkaXJlY3RpdmUgaXMgYWN0aXZlIG9yIG5vdCAqL1xuICBheFJlc2l6YWJsZSA9IG1vZGVsKHRydWUpO1xuXG4gIC8qKiBNaW5pbXVtIHdpZHRoIGZvciB0aGUgcmVzaXphYmxlIGVsZW1lbnQuICovXG4gIG1pbldpZHRoID0gbW9kZWwoMTAwKTtcblxuICAvKiogTWF4aW11bSB3aWR0aCBmb3IgdGhlIHJlc2l6YWJsZSBlbGVtZW50LiBEZWZhdWx0cyB0byBwYXJlbnQgd2lkdGggaWYgbm90IHByb3ZpZGVkLiAqL1xuICBtYXhXaWR0aCA9IG1vZGVsKEluZmluaXR5KTtcblxuICAvKiogQmVoYXZpb3Igb24gZG91YmxlLWNsaWNrOiAncmVzZXQnIG9yICdtYXhpbWl6ZScuICovXG4gIGRibENsaWNrQWN0aW9uID0gbW9kZWw8J3Jlc2V0JyB8ICdtYXhpbWl6ZScgfCAnZml0Jz4oJ3Jlc2V0Jyk7XG5cbiAgLyoqIERlZmluZSBpbml0aWFsIHdpZHRoIGZvciB0aGUgZWxlbWVudC4gKi9cbiAgd2lkdGggPSBtb2RlbDxudWxsIHwgbnVtYmVyPihudWxsKTtcblxuICAvKiogRGVmaW5lIHJlc2V0IHdpZHRoIGZvciB0aGUgZWxlbWVudC4gKi9cbiAgZGVmYXVsdFdpZHRoID0gbW9kZWw8bnVsbCB8IG51bWJlcj4obnVsbCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiByZXNpemluZyBzdGFydHMuICovXG4gIG9uUmVzaXppbmdTdGFydGVkID0gb3V0cHV0PEFYVmFsdWVDaGFuZ2VkRXZlbnQ8bnVtYmVyPj4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHJlc2l6aW5nIGVuZHMuICovXG4gIG9uUmVzaXppbmdFbmRlZCA9IG91dHB1dDxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gZG91YmxlLWNsaWNrLiAqL1xuICBvblJlc2l6aW5nRGJsQ2xpY2sgPSBvdXRwdXQ8QVhWYWx1ZUNoYW5nZWRFdmVudDxudW1iZXI+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIFxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnBsYXRmb3JtU2VydmljZS5kaXJlY3Rpb25DaGFuZ2Uuc3Vic2NyaWJlKChpKSA9PiB7XG4gICAgICAgIHRoaXMuaXNSVEwuc2V0KGkuZGF0YSA9PT0gJ3J0bCcpO1xuICAgICAgICBpZiAodGhpcy5yZXNpemVIYW5kbGUpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNpemluZygpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc29sdmVkV2lkdGggPSB0aGlzLndpZHRoKCkgPz8gdGhpcy5kZWZhdWx0V2lkdGgoKTtcbiAgICAgICAgaWYgKHJlc29sdmVkV2lkdGggIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RWxlbWVudFdpZHRoKHJlc29sdmVkV2lkdGgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMuaW5pdGlhbEVsZW1lbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG5cbiAgICB0aGlzLmFwcGx5V2lkdGhGcm9tTW9kZWwoKTtcblxuICAgIGlmICh0aGlzLm1heFdpZHRoKCkgPT09IEluZmluaXR5KSB7XG4gICAgICBjb25zdCBwYXJlbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgICBpZiAocGFyZW50V2lkdGgpIHtcbiAgICAgICAgdGhpcy5tYXhXaWR0aC5zZXQocGFyZW50V2lkdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUocGFyZW50RWxlbWVudCk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY3JlYXRlUmVzaXplSGFuZGxlKCk7XG4gICAgdGhpcy5zZXR1cFJlc2l6YWJsZVN0YXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmNsZWFudXBFdmVudExpc3RlbmVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlc2l6YWJsZVN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmF4UmVzaXphYmxlLnN1YnNjcmliZSgoaXNBY3RpdmUpID0+IHtcbiAgICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICAgIHRoaXMuYXBwbHlXaWR0aEZyb21Nb2RlbCgpO1xuICAgICAgICAgIHRoaXMuY2xlYW51cEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hcHBseVdpZHRoRnJvbU1vZGVsKCk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVSZXNpemVIYW5kbGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVdpZHRoRnJvbU1vZGVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aWR0aCgpO1xuICAgIGlmICh3aWR0aCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5hcHBseUVsZW1lbnRXaWR0aCh3aWR0aCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRXaWR0aCA9IHRoaXMuZGVmYXVsdFdpZHRoKCk7XG4gICAgaWYgKGRlZmF1bHRXaWR0aCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5hcHBseUVsZW1lbnRXaWR0aChkZWZhdWx0V2lkdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50V2lkdGgod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlc2l6ZUhhbmRsZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXhSZXNpemFibGUoKSB8fCB0aGlzLnJlc2l6ZUhhbmRsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5ob3N0RWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG5cbiAgICB0aGlzLnJlc2l6ZUhhbmRsZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZXNpemVIYW5kbGUuY2xhc3NMaXN0LmFkZCgnYXgtcmVzaXphYmxlLWhhbmRsZXInKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucmVzaXplSGFuZGxlKTtcblxuICAgIHRoaXMuYXBwbHlIYW5kbGVTdHlsZXMoKTtcbiAgICB0aGlzLmF0dGFjaEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgYXBwbHlIYW5kbGVTdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc2l6ZUhhbmRsZSkgcmV0dXJuO1xuICAgIFxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZXNpemVIYW5kbGUuc3R5bGUsIHtcbiAgICAgIHdpZHRoOiBTVFlMRVMuaGFuZGxlcldpZHRoLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBTVFlMRVMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIGJvdHRvbTogJzAnLFxuICAgICAgY3Vyc29yOiBTVFlMRVMuY3Vyc29yLFxuICAgICAgekluZGV4OiBTVFlMRVMuekluZGV4LFxuICAgICAgdHJhbnNpdGlvbjogU1RZTEVTLnRyYW5zaXRpb24sXG4gICAgICBib3JkZXJSYWRpdXM6IFNUWUxFUy5ib3JkZXJSYWRpdXMsXG4gICAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy51cGRhdGVIYW5kbGVQb3NpdGlvbigpO1xuICB9XG4gIFxuICBwcml2YXRlIHVwZGF0ZUhhbmRsZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNpemVIYW5kbGUpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBpc1JUTCA9IHRoaXMuaXNSVEwoKTtcbiAgICBpZiAoaXNSVEwpIHtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5zdHlsZS5yaWdodCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5zdHlsZS5yaWdodCA9ICcwJztcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmxlZnQgPSAnJztcbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgYXR0YWNoRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc2l6ZUhhbmRsZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IGhhbmRsZSA9IHRoaXMucmVzaXplSGFuZGxlO1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBoYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5ib3VuZE1vdXNlRG93bik7XG4gICAgICBoYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuYm91bmRNb3VzZUVudGVyKTtcbiAgICAgIGhhbmRsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5ib3VuZE1vdXNlTGVhdmUpO1xuICAgICAgaGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgdGhpcy5ib3VuZERvdWJsZUNsaWNrKTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5ib3VuZE1vdXNlTW92ZSk7XG4gICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmJvdW5kTW91c2VVcCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNpemVIYW5kbGUpIHtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuYm91bmRNb3VzZURvd24pO1xuICAgICAgdGhpcy5yZXNpemVIYW5kbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuYm91bmRNb3VzZUVudGVyKTtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLmJvdW5kTW91c2VMZWF2ZSk7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIHRoaXMuYm91bmREb3VibGVDbGljayk7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5yZW1vdmUoKTtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5ib3VuZE1vdXNlTW92ZSk7XG4gICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5ib3VuZE1vdXNlVXApO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgaXNSVEwgPSBzaWduYWwoQVhIdG1sVXRpbC5pc1J0bCh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpO1xuXG4gIHByaXZhdGUgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzaXplSGFuZGxlKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgaGFuZGxlUmVjdCA9IHRoaXMucmVzaXplSGFuZGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChldmVudC5jbGllbnRYIDwgaGFuZGxlUmVjdC5sZWZ0IHx8IGV2ZW50LmNsaWVudFggPiBoYW5kbGVSZWN0LnJpZ2h0KSByZXR1cm47XG4gICAgXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBcbiAgICB0aGlzLmlzUmVzaXppbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBTVFlMRVMuY3Vyc29yQWN0aXZlO1xuICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFNUWUxFUy5iYWNrZ3JvdW5kQ29sb3JBY3RpdmU7XG4gICAgdGhpcy5zdGFydE1vdmVXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVzaXppbmdTdGFydGVkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmhvc3RFbGVtZW50LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3Jlc2l6aW5nU3RhcnRlZCcsXG4gICAgICAgIHZhbHVlOiB0aGlzLnN0YXJ0TW92ZVdpZHRoLFxuICAgICAgICBvbGRWYWx1ZTogdGhpcy5zdGFydE1vdmVXaWR0aCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKCkpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCByZWN0ID0gdGhpcy5ob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBpc1JUTCA9IHRoaXMuaXNSVEwoKTtcbiAgICBcbiAgICBsZXQgbmV3V2lkdGggPSBpc1JUTCA/IHJlY3QucmlnaHQgLSBldmVudC5jbGllbnRYIDogZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgICBuZXdXaWR0aCA9IE1hdGgubWF4KHRoaXMubWluV2lkdGgoKSwgTWF0aC5taW4obmV3V2lkdGgsIHRoaXMubWF4V2lkdGgoKSkpO1xuXG4gICAgaWYgKG5ld1dpZHRoICE9PSB0aGlzLmhvc3RFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmhvc3RFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZVVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKCkgfHwgIXRoaXMucmVzaXplSGFuZGxlKSByZXR1cm47XG4gICAgXG4gICAgdGhpcy5pc1Jlc2l6aW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICcnO1xuICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFNUWUxFUy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgXG4gICAgY29uc3QgY3VycmVudFdpZHRoID0gdGhpcy5ob3N0RWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMub25SZXNpemluZ0VuZGVkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmhvc3RFbGVtZW50LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3Jlc2l6aW5nRW5kZWQnLFxuICAgICAgICB2YWx1ZTogY3VycmVudFdpZHRoLFxuICAgICAgICBvbGRWYWx1ZTogdGhpcy5zdGFydE1vdmVXaWR0aCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVzaXppbmcoKSAmJiB0aGlzLnJlc2l6ZUhhbmRsZSkge1xuICAgICAgdGhpcy5yZXNpemVIYW5kbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gU1RZTEVTLmJhY2tncm91bmRDb2xvckhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKCkgJiYgdGhpcy5yZXNpemVIYW5kbGUpIHtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFNUWUxFUy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkRvdWJsZUNsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5kYmxDbGlja0FjdGlvbigpO1xuICAgIFxuICAgIGxldCBuZXdXaWR0aDogbnVtYmVyO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIG5ld1dpZHRoID0gdGhpcy5yZXNldFRvSW5pdGlhbFdpZHRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWF4aW1pemUnOlxuICAgICAgICBuZXdXaWR0aCA9IHRoaXMubWF4aW1pemVUb01heFdpZHRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZml0JzpcbiAgICAgICAgbmV3V2lkdGggPSB0aGlzLmZpdFRvQ29udGVudCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG5ld1dpZHRoID0gZWxlbWVudFdpZHRoO1xuICAgIH1cblxuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5vblJlc2l6aW5nRGJsQ2xpY2suZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuaG9zdEVsZW1lbnQsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICBuYW1lOiAnb25SZXNpemluZ0RibENsaWNrJyxcbiAgICAgICAgb2xkVmFsdWU6IGVsZW1lbnRXaWR0aCxcbiAgICAgICAgdmFsdWU6IG5ld1dpZHRoLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VG9Jbml0aWFsV2lkdGgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBkZWZhdWx0V2lkdGggPSB0aGlzLmRlZmF1bHRXaWR0aCgpO1xuICAgIGlmIChkZWZhdWx0V2lkdGggIT09IG51bGwpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50V2lkdGgoZGVmYXVsdFdpZHRoKTtcbiAgICAgIHJldHVybiBkZWZhdWx0V2lkdGg7XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbFdpZHRoID0gdGhpcy53aWR0aCgpO1xuICAgIGlmIChpbml0aWFsV2lkdGggIT09IG51bGwpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50V2lkdGgoaW5pdGlhbFdpZHRoKTtcbiAgICAgIHJldHVybiBpbml0aWFsV2lkdGg7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBseUVsZW1lbnRXaWR0aCh0aGlzLmluaXRpYWxFbGVtZW50V2lkdGgpO1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxFbGVtZW50V2lkdGg7XG4gIH1cblxuICBwcml2YXRlIG1heGltaXplVG9NYXhXaWR0aCgpOiBudW1iZXIge1xuICAgIGNvbnN0IG1heFdpZHRoID0gdGhpcy5tYXhXaWR0aCgpO1xuICAgIGlmIChtYXhXaWR0aCAhPT0gSW5maW5pdHkpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50V2lkdGgobWF4V2lkdGgpO1xuICAgIH1cbiAgICByZXR1cm4gbWF4V2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGZpdFRvQ29udGVudCgpOiBudW1iZXIge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc3R5bGUud2lkdGggPSAnZml0LWNvbnRlbnQnO1xuICAgIHJldHVybiB0aGlzLmhvc3RFbGVtZW50LmNsaWVudFdpZHRoO1xuICB9XG59XG5cbmludGVyZmFjZSBBWFZhbHVlQ2hhbmdlZEV2ZW50PFQ+IHtcbiAgY29tcG9uZW50OiB1bmtub3duO1xuICBodG1sRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBpc1VzZXJJbnRlcmFjdGlvbj86IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogVDtcbiAgb2xkVmFsdWU/OiBUO1xufVxuXG5jb25zdCBTVFlMRVMgPSB7XG4gIGhhbmRsZXJXaWR0aDogJ3ZhcigtLWF4LWNvbXAtcmVzaXphYmxlLWhhbmRsZXItd2lkdGgsIDRweCknLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKHZhcigtLWF4LWNvbXAtcmVzaXphYmxlLWJhY2tncm91bmQtY29sb3IpKScsXG4gIGJhY2tncm91bmRDb2xvckFjdGl2ZTogJ3JnYmEodmFyKC0tYXgtY29tcC1yZXNpemFibGUtYmFja2dyb3VuZC1jb2xvci1hY3RpdmUsIHZhcigtLWF4LXN5cy1jb2xvci1wcmltYXJ5LXN1cmZhY2UpKSknLFxuICBiYWNrZ3JvdW5kQ29sb3JIb3ZlcjpcbiAgICAncmdiYSh2YXIoLS1heC1jb21wLXJlc2l6YWJsZS1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyLCB2YXIoLS1heC1zeXMtY29sb3ItcHJpbWFyeS1saWdodC1zdXJmYWNlKSkpJyxcbiAgY3Vyc29yOiAndmFyKC0tYXgtY29tcC1yZXNpemFibGUtY3Vyc29yLCBldy1yZXNpemUpJyxcbiAgY3Vyc29yQWN0aXZlOiAndmFyKC0tYXgtY29tcC1yZXNpemFibGUtY3Vyc29yLWFjdGl2ZSwgZXctcmVzaXplKScsXG4gIHpJbmRleDogJ3ZhcigtLWF4LWNvbXAtcmVzaXphYmxlLXotaW5kZXgsIDk5OSknLFxuICB0cmFuc2l0aW9uOlxuICAgICd2YXIoLS1heC1jb21wLXJlc2l6YWJsZS10cmFuc2l0aW9uLCBiYWNrZ3JvdW5kLWNvbG9yIC0tYXgtc3lzLXRyYW5zaXRpb24tZHVyYXRpb24gLS1heC1zeXMtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pJyxcbiAgYm9yZGVyUmFkaXVzOiAndmFyKC0tYXgtY29tcC1yZXNpemFibGUtYm9yZGVyLXJhZGl1cywgLS1heC1zeXMtYm9yZGVyLXJhZGl1cyknLFxufTtcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1yZXNpemFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvcmVzaXphYmxlL3NyYy9hY29yZXgtY2RrLXJlc2l6YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-resizable.mjs","sources":["../tmp-esm2022/resizable/lib/resize.directive.js","../tmp-esm2022/resizable/acorex-cdk-resizable.js"],"sourcesContent":["import { AXPlatform } from '@acorex/core/platform';\nimport { AXHtmlUtil } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Directive, DOCUMENT, effect, ElementRef, inject, model, NgZone, output, PLATFORM_ID, signal, } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXResizableDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.platformService = inject(AXPlatform);\n this.zone = inject(NgZone);\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.isResizing = signal(false, ...(ngDevMode ? [{ debugName: \"isResizing\" }] : []));\n this.initialElementWidth = 0;\n this.startMoveWidth = 0;\n this.subscriptions = new Subscription();\n // Bound event handlers to maintain reference for cleanup\n this.boundMouseDown = this.onMouseDown.bind(this);\n this.boundMouseMove = this.onMouseMove.bind(this);\n this.boundMouseUp = this.onMouseUp.bind(this);\n this.boundMouseEnter = this.onMouseEnter.bind(this);\n this.boundMouseLeave = this.onMouseLeave.bind(this);\n this.boundDoubleClick = this.onDoubleClick.bind(this);\n this.resizeObserver = new ResizeObserver((entries) => {\n const parentElement = this.hostElement.parentElement;\n if (!parentElement)\n return;\n for (const entry of entries) {\n if (entry.target === parentElement && this.maxWidth() === Infinity) {\n this.maxWidth.set(entry.contentRect.width);\n break;\n }\n }\n });\n /** Define if directive is active or not */\n this.axResizable = model(true, ...(ngDevMode ? [{ debugName: \"axResizable\" }] : []));\n /** Minimum width for the resizable element. */\n this.minWidth = model(100, ...(ngDevMode ? [{ debugName: \"minWidth\" }] : []));\n /** Maximum width for the resizable element. Defaults to parent width if not provided. */\n this.maxWidth = model(Infinity, ...(ngDevMode ? [{ debugName: \"maxWidth\" }] : []));\n /** Behavior on double-click: 'reset' or 'maximize'. */\n this.dblClickAction = model('reset', ...(ngDevMode ? [{ debugName: \"dblClickAction\" }] : []));\n /** Define initial width for the element. */\n this.width = model(null, ...(ngDevMode ? [{ debugName: \"width\" }] : []));\n /** Define reset width for the element. */\n this.defaultWidth = model(null, ...(ngDevMode ? [{ debugName: \"defaultWidth\" }] : []));\n /** Event emitted when resizing starts. */\n this.onResizingStarted = output();\n /** Event emitted when resizing ends. */\n this.onResizingEnded = output();\n /** Event emitted on double-click. */\n this.onResizingDblClick = output();\n this.isRTL = signal(AXHtmlUtil.isRtl(this.document.documentElement), ...(ngDevMode ? [{ debugName: \"isRTL\" }] : []));\n this.isBrowser = isPlatformBrowser(this.platformID);\n this.hostElement = this.el.nativeElement;\n this.subscriptions.add(this.platformService.directionChange.subscribe((i) => {\n this.isRTL.set(i.data === 'rtl');\n if (this.resizeHandle) {\n this.updateHandlePosition();\n }\n }));\n if (this.isBrowser) {\n effect(() => {\n if (this.isResizing()) {\n return;\n }\n const resolvedWidth = this.width() ?? this.defaultWidth();\n if (resolvedWidth !== null) {\n this.applyElementWidth(resolvedWidth);\n }\n });\n }\n }\n ngAfterViewInit() {\n if (!this.isBrowser)\n return;\n this.initialElementWidth = this.hostElement.offsetWidth;\n this.applyWidthFromModel();\n if (this.maxWidth() === Infinity) {\n const parentWidth = this.hostElement.parentElement?.offsetWidth;\n if (parentWidth) {\n this.maxWidth.set(parentWidth);\n }\n }\n const parentElement = this.hostElement.parentElement;\n if (parentElement) {\n this.resizeObserver.observe(parentElement);\n }\n this.createResizeHandle();\n this.setupResizableState();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.resizeObserver.disconnect();\n this.cleanupEventListeners();\n }\n setupResizableState() {\n this.subscriptions.add(this.axResizable.subscribe((isActive) => {\n if (!isActive) {\n this.applyWidthFromModel();\n this.cleanupEventListeners();\n }\n else {\n this.applyWidthFromModel();\n this.createResizeHandle();\n }\n }));\n }\n applyWidthFromModel() {\n const width = this.width();\n if (width !== null) {\n this.applyElementWidth(width);\n return;\n }\n const defaultWidth = this.defaultWidth();\n if (defaultWidth !== null) {\n this.applyElementWidth(defaultWidth);\n }\n }\n applyElementWidth(width) {\n this.hostElement.style.width = `${width}px`;\n }\n createResizeHandle() {\n if (!this.axResizable() || this.resizeHandle)\n return;\n this.hostElement.style.position = 'relative';\n this.resizeHandle = this.document.createElement('div');\n this.resizeHandle.classList.add('ax-resizable-handler');\n this.hostElement.appendChild(this.resizeHandle);\n this.applyHandleStyles();\n this.attachEventListeners();\n }\n applyHandleStyles() {\n if (!this.resizeHandle)\n return;\n Object.assign(this.resizeHandle.style, {\n width: STYLES.handlerWidth,\n backgroundColor: STYLES.backgroundColor,\n position: 'absolute',\n top: '0',\n bottom: '0',\n cursor: STYLES.cursor,\n zIndex: STYLES.zIndex,\n transition: STYLES.transition,\n borderRadius: STYLES.borderRadius,\n userSelect: 'none',\n });\n this.updateHandlePosition();\n }\n updateHandlePosition() {\n if (!this.resizeHandle)\n return;\n const isRTL = this.isRTL();\n if (isRTL) {\n this.resizeHandle.style.left = '0';\n this.resizeHandle.style.right = '';\n }\n else {\n this.resizeHandle.style.right = '0';\n this.resizeHandle.style.left = '';\n }\n }\n attachEventListeners() {\n if (!this.resizeHandle)\n return;\n const handle = this.resizeHandle;\n this.zone.runOutsideAngular(() => {\n handle.addEventListener('mousedown', this.boundMouseDown);\n handle.addEventListener('mouseenter', this.boundMouseEnter);\n handle.addEventListener('mouseleave', this.boundMouseLeave);\n handle.addEventListener('dblclick', this.boundDoubleClick);\n this.document.addEventListener('mousemove', this.boundMouseMove);\n this.document.addEventListener('mouseup', this.boundMouseUp);\n });\n }\n cleanupEventListeners() {\n if (this.resizeHandle) {\n this.resizeHandle.removeEventListener('mousedown', this.boundMouseDown);\n this.resizeHandle.removeEventListener('mouseenter', this.boundMouseEnter);\n this.resizeHandle.removeEventListener('mouseleave', this.boundMouseLeave);\n this.resizeHandle.removeEventListener('dblclick', this.boundDoubleClick);\n this.resizeHandle.remove();\n this.resizeHandle = undefined;\n }\n this.document.removeEventListener('mousemove', this.boundMouseMove);\n this.document.removeEventListener('mouseup', this.boundMouseUp);\n this.document.body.style.cursor = '';\n }\n onMouseDown(event) {\n if (!this.resizeHandle)\n return;\n const handleRect = this.resizeHandle.getBoundingClientRect();\n if (event.clientX < handleRect.left || event.clientX > handleRect.right)\n return;\n event.preventDefault();\n this.isResizing.set(true);\n this.document.body.style.cursor = STYLES.cursorActive;\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColorActive;\n this.startMoveWidth = this.hostElement.offsetWidth;\n this.zone.run(() => {\n this.onResizingStarted.emit({\n component: this,\n htmlElement: this.hostElement,\n isUserInteraction: true,\n name: 'resizingStarted',\n value: this.startMoveWidth,\n oldValue: this.startMoveWidth,\n });\n });\n }\n onMouseMove(event) {\n if (!this.isResizing())\n return;\n const rect = this.hostElement.getBoundingClientRect();\n const isRTL = this.isRTL();\n let newWidth = isRTL ? rect.right - event.clientX : event.clientX - rect.left;\n newWidth = Math.max(this.minWidth(), Math.min(newWidth, this.maxWidth()));\n if (newWidth !== this.hostElement.offsetWidth) {\n this.hostElement.style.width = `${newWidth}px`;\n }\n }\n onMouseUp() {\n if (!this.isResizing() || !this.resizeHandle)\n return;\n this.document.body.style.cursor = '';\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;\n const currentWidth = this.hostElement.offsetWidth;\n this.zone.run(() => {\n this.width.set(currentWidth);\n this.onResizingEnded.emit({\n component: this,\n htmlElement: this.hostElement,\n isUserInteraction: true,\n name: 'resizingEnded',\n value: currentWidth,\n oldValue: this.startMoveWidth,\n });\n });\n this.isResizing.set(false);\n }\n onMouseEnter() {\n if (!this.isResizing() && this.resizeHandle) {\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColorHover;\n }\n }\n onMouseLeave() {\n if (!this.isResizing() && this.resizeHandle) {\n this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;\n }\n }\n onDoubleClick() {\n const elementWidth = this.hostElement.offsetWidth;\n const action = this.dblClickAction();\n let newWidth;\n switch (action) {\n case 'reset':\n newWidth = this.resetToInitialWidth();\n break;\n case 'maximize':\n newWidth = this.maximizeToMaxWidth();\n break;\n case 'fit':\n newWidth = this.fitToContent();\n break;\n default:\n newWidth = elementWidth;\n }\n this.zone.run(() => {\n this.onResizingDblClick.emit({\n component: this,\n htmlElement: this.hostElement,\n isUserInteraction: true,\n name: 'onResizingDblClick',\n oldValue: elementWidth,\n value: newWidth,\n });\n });\n }\n resetToInitialWidth() {\n const defaultWidth = this.defaultWidth();\n if (defaultWidth !== null) {\n this.applyElementWidth(defaultWidth);\n return defaultWidth;\n }\n const initialWidth = this.width();\n if (initialWidth !== null) {\n this.applyElementWidth(initialWidth);\n return initialWidth;\n }\n this.applyElementWidth(this.initialElementWidth);\n return this.initialElementWidth;\n }\n maximizeToMaxWidth() {\n const maxWidth = this.maxWidth();\n if (maxWidth !== Infinity) {\n this.applyElementWidth(maxWidth);\n }\n return maxWidth;\n }\n fitToContent() {\n this.hostElement.style.width = 'fit-content';\n return this.hostElement.clientWidth;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXResizableDirective, isStandalone: true, selector: \"[axResizable]\", inputs: { axResizable: { classPropertyName: \"axResizable\", publicName: \"axResizable\", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: \"minWidth\", publicName: \"minWidth\", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: \"maxWidth\", publicName: \"maxWidth\", isSignal: true, isRequired: false, transformFunction: null }, dblClickAction: { classPropertyName: \"dblClickAction\", publicName: \"dblClickAction\", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: \"width\", publicName: \"width\", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: \"defaultWidth\", publicName: \"defaultWidth\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { axResizable: \"axResizableChange\", minWidth: \"minWidthChange\", maxWidth: \"maxWidthChange\", dblClickAction: \"dblClickActionChange\", width: \"widthChange\", defaultWidth: \"defaultWidthChange\", onResizingStarted: \"onResizingStarted\", onResizingEnded: \"onResizingEnded\", onResizingDblClick: \"onResizingDblClick\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXResizableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axResizable]',\n }]\n }], ctorParameters: () => [] });\nconst STYLES = {\n handlerWidth: 'var(--ax-comp-resizable-handler-width, 4px)',\n backgroundColor: 'rgba(var(--ax-comp-resizable-background-color))',\n backgroundColorActive: 'rgba(var(--ax-comp-resizable-background-color-active, var(--ax-sys-color-primary-surface)))',\n backgroundColorHover: 'rgba(var(--ax-comp-resizable-background-color-hover, var(--ax-sys-color-primary-light-surface)))',\n cursor: 'var(--ax-comp-resizable-cursor, ew-resize)',\n cursorActive: 'var(--ax-comp-resizable-cursor-active, ew-resize)',\n zIndex: 'var(--ax-comp-resizable-z-index, 999)',\n transition: 'var(--ax-comp-resizable-transition, background-color --ax-sys-transition-duration --ax-sys-transition-timing-function)',\n borderRadius: 'var(--ax-comp-resizable-border-radius, --ax-sys-border-radius)',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9yZXNpemFibGUvc3JjL2xpYi9yZXNpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUtwQyxNQUFNLE9BQU8sb0JBQW9CO0lBOEQvQjtRQTdEaUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUsxQyxlQUFVLEdBQTRCLE1BQU0sQ0FBQyxLQUFLLHNEQUFDLENBQUM7UUFDcEQsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzQyx5REFBeUQ7UUFDeEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJ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QUMvQyxVQUFVLEVBQ1Isd0hBQXdIO0lBQzFILFlBQVksRUFBRSxnRUFBZ0U7Q0FDL0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhIdG1sVXRpbCB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgbW9kZWwsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBvdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXhSZXNpemFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhSZXNpemFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtU2VydmljZSA9IGluamVjdChBWFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbjtcbiAgXG4gIHByaXZhdGUgaG9zdEVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSByZXNpemVIYW5kbGU/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBpc1Jlc2l6aW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgaW5pdGlhbEVsZW1lbnRXaWR0aCA9IDA7XG4gIHByaXZhdGUgc3RhcnRNb3ZlV2lkdGggPSAwO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIFxuICAvLyBCb3VuZCBldmVudCBoYW5kbGVycyB0byBtYWludGFpbiByZWZlcmVuY2UgZm9yIGNsZWFudXBcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZE1vdXNlRG93biA9IHRoaXMub25Nb3VzZURvd24uYmluZCh0aGlzKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZE1vdXNlTW92ZSA9IHRoaXMub25Nb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZE1vdXNlVXAgPSB0aGlzLm9uTW91c2VVcC5iaW5kKHRoaXMpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvdW5kTW91c2VFbnRlciA9IHRoaXMub25Nb3VzZUVudGVyLmJpbmQodGhpcyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYm91bmRNb3VzZUxlYXZlID0gdGhpcy5vbk1vdXNlTGVhdmUuYmluZCh0aGlzKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3VuZERvdWJsZUNsaWNrID0gdGhpcy5vbkRvdWJsZUNsaWNrLmJpbmQodGhpcyk7XG4gIFxuICBwcml2YXRlIHJlYWRvbmx5IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuaG9zdEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICBpZiAoIXBhcmVudEVsZW1lbnQpIHJldHVybjtcbiAgICBcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyeS50YXJnZXQgPT09IHBhcmVudEVsZW1lbnQgJiYgdGhpcy5tYXhXaWR0aCgpID09PSBJbmZpbml0eSkge1xuICAgICAgICB0aGlzLm1heFdpZHRoLnNldChlbnRyeS5jb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLyoqIERlZmluZSBpZiBkaXJlY3RpdmUgaXMgYWN0aXZlIG9yIG5vdCAqL1xuICBheFJlc2l6YWJsZSA9IG1vZGVsKHRydWUpO1xuXG4gIC8qKiBNaW5pbXVtIHdpZHRoIGZvciB0aGUgcmVzaXphYmxlIGVsZW1lbnQuICovXG4gIG1pbldpZHRoID0gbW9kZWwoMTAwKTtcblxuICAvKiogTWF4aW11bSB3aWR0aCBmb3IgdGhlIHJlc2l6YWJsZSBlbGVtZW50LiBEZWZhdWx0cyB0byBwYXJlbnQgd2lkdGggaWYgbm90IHByb3ZpZGVkLiAqL1xuICBtYXhXaWR0aCA9IG1vZGVsKEluZmluaXR5KTtcblxuICAvKiogQmVoYXZpb3Igb24gZG91YmxlLWNsaWNrOiAncmVzZXQnIG9yICdtYXhpbWl6ZScuICovXG4gIGRibENsaWNrQWN0aW9uID0gbW9kZWw8J3Jlc2V0JyB8ICdtYXhpbWl6ZScgfCAnZml0Jz4oJ3Jlc2V0Jyk7XG5cbiAgLyoqIERlZmluZSBpbml0aWFsIHdpZHRoIGZvciB0aGUgZWxlbWVudC4gKi9cbiAgd2lkdGggPSBtb2RlbDxudWxsIHwgbnVtYmVyPihudWxsKTtcblxuICAvKiogRGVmaW5lIHJlc2V0IHdpZHRoIGZvciB0aGUgZWxlbWVudC4gKi9cbiAgZGVmYXVsdFdpZHRoID0gbW9kZWw8bnVsbCB8IG51bWJlcj4obnVsbCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiByZXNpemluZyBzdGFydHMuICovXG4gIG9uUmVzaXppbmdTdGFydGVkID0gb3V0cHV0PEFYVmFsdWVDaGFuZ2VkRXZlbnQ8bnVtYmVyPj4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHJlc2l6aW5nIGVuZHMuICovXG4gIG9uUmVzaXppbmdFbmRlZCA9IG91dHB1dDxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgb24gZG91YmxlLWNsaWNrLiAqL1xuICBvblJlc2l6aW5nRGJsQ2xpY2sgPSBvdXRwdXQ8QVhWYWx1ZUNoYW5nZWRFdmVudDxudW1iZXI+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIFxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnBsYXRmb3JtU2VydmljZS5kaXJlY3Rpb25DaGFuZ2Uuc3Vic2NyaWJlKChpKSA9PiB7XG4gICAgICAgIHRoaXMuaXNSVEwuc2V0KGkuZGF0YSA9PT0gJ3J0bCcpO1xuICAgICAgICBpZiAodGhpcy5yZXNpemVIYW5kbGUpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNpemluZygpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc29sdmVkV2lkdGggPSB0aGlzLndpZHRoKCkgPz8gdGhpcy5kZWZhdWx0V2lkdGgoKTtcbiAgICAgICAgaWYgKHJlc29sdmVkV2lkdGggIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5RWxlbWVudFdpZHRoKHJlc29sdmVkV2lkdGgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMuaW5pdGlhbEVsZW1lbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG5cbiAgICB0aGlzLmFwcGx5V2lkdGhGcm9tTW9kZWwoKTtcblxuICAgIGlmICh0aGlzLm1heFdpZHRoKCkgPT09IEluZmluaXR5KSB7XG4gICAgICBjb25zdCBwYXJlbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQucGFyZW50RWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgICBpZiAocGFyZW50V2lkdGgpIHtcbiAgICAgICAgdGhpcy5tYXhXaWR0aC5zZXQocGFyZW50V2lkdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUocGFyZW50RWxlbWVudCk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuY3JlYXRlUmVzaXplSGFuZGxlKCk7XG4gICAgdGhpcy5zZXR1cFJlc2l6YWJsZVN0YXRlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLmNsZWFudXBFdmVudExpc3RlbmVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlc2l6YWJsZVN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmF4UmVzaXphYmxlLnN1YnNjcmliZSgoaXNBY3RpdmUpID0+IHtcbiAgICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICAgIHRoaXMuYXBwbHlXaWR0aEZyb21Nb2RlbCgpO1xuICAgICAgICAgIHRoaXMuY2xlYW51cEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hcHBseVdpZHRoRnJvbU1vZGVsKCk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVSZXNpemVIYW5kbGUoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVdpZHRoRnJvbU1vZGVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aWR0aCgpO1xuICAgIGlmICh3aWR0aCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5hcHBseUVsZW1lbnRXaWR0aCh3aWR0aCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRXaWR0aCA9IHRoaXMuZGVmYXVsdFdpZHRoKCk7XG4gICAgaWYgKGRlZmF1bHRXaWR0aCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5hcHBseUVsZW1lbnRXaWR0aChkZWZhdWx0V2lkdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50V2lkdGgod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlc2l6ZUhhbmRsZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXhSZXNpemFibGUoKSB8fCB0aGlzLnJlc2l6ZUhhbmRsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5ob3N0RWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG5cbiAgICB0aGlzLnJlc2l6ZUhhbmRsZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZXNpemVIYW5kbGUuY2xhc3NMaXN0LmFkZCgnYXgtcmVzaXphYmxlLWhhbmRsZXInKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucmVzaXplSGFuZGxlKTtcblxuICAgIHRoaXMuYXBwbHlIYW5kbGVTdHlsZXMoKTtcbiAgICB0aGlzLmF0dGFjaEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgYXBwbHlIYW5kbGVTdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc2l6ZUhhbmRsZSkgcmV0dXJuO1xuICAgIFxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZXNpemVIYW5kbGUuc3R5bGUsIHtcbiAgICAgIHdpZHRoOiBTVFlMRVMuaGFuZGxlcldpZHRoLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBTVFlMRVMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIGJvdHRvbTogJzAnLFxuICAgICAgY3Vyc29yOiBTVFlMRVMuY3Vyc29yLFxuICAgICAgekluZGV4OiBTVFlMRVMuekluZGV4LFxuICAgICAgdHJhbnNpdGlvbjogU1RZTEVTLnRyYW5zaXRpb24sXG4gICAgICBib3JkZXJSYWRpdXM6IFNUWUxFUy5ib3JkZXJSYWRpdXMsXG4gICAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy51cGRhdGVIYW5kbGVQb3NpdGlvbigpO1xuICB9XG4gIFxuICBwcml2YXRlIHVwZGF0ZUhhbmRsZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNpemVIYW5kbGUpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBpc1JUTCA9IHRoaXMuaXNSVEwoKTtcbiAgICBpZiAoaXNSVEwpIHtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5zdHlsZS5yaWdodCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5zdHlsZS5yaWdodCA9ICcwJztcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmxlZnQgPSAnJztcbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgYXR0YWNoRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc2l6ZUhhbmRsZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IGhhbmRsZSA9IHRoaXMucmVzaXplSGFuZGxlO1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBoYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5ib3VuZE1vdXNlRG93bik7XG4gICAgICBoYW5kbGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuYm91bmRNb3VzZUVudGVyKTtcbiAgICAgIGhhbmRsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5ib3VuZE1vdXNlTGVhdmUpO1xuICAgICAgaGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgdGhpcy5ib3VuZERvdWJsZUNsaWNrKTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5ib3VuZE1vdXNlTW92ZSk7XG4gICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmJvdW5kTW91c2VVcCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXNpemVIYW5kbGUpIHtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuYm91bmRNb3VzZURvd24pO1xuICAgICAgdGhpcy5yZXNpemVIYW5kbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuYm91bmRNb3VzZUVudGVyKTtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLmJvdW5kTW91c2VMZWF2ZSk7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkYmxjbGljaycsIHRoaXMuYm91bmREb3VibGVDbGljayk7XG4gICAgICB0aGlzLnJlc2l6ZUhhbmRsZS5yZW1vdmUoKTtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5ib3VuZE1vdXNlTW92ZSk7XG4gICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5ib3VuZE1vdXNlVXApO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgaXNSVEwgPSBzaWduYWwoQVhIdG1sVXRpbC5pc1J0bCh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpO1xuXG4gIHByaXZhdGUgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzaXplSGFuZGxlKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgaGFuZGxlUmVjdCA9IHRoaXMucmVzaXplSGFuZGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChldmVudC5jbGllbnRYIDwgaGFuZGxlUmVjdC5sZWZ0IHx8IGV2ZW50LmNsaWVudFggPiBoYW5kbGVSZWN0LnJpZ2h0KSByZXR1cm47XG4gICAgXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBcbiAgICB0aGlzLmlzUmVzaXppbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBTVFlMRVMuY3Vyc29yQWN0aXZlO1xuICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFNUWUxFUy5iYWNrZ3JvdW5kQ29sb3JBY3RpdmU7XG4gICAgdGhpcy5zdGFydE1vdmVXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVzaXppbmdTdGFydGVkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmhvc3RFbGVtZW50LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgICAgICAgbmFtZTogJ3Jlc2l6aW5nU3RhcnRlZCcsXG4gICAgICAgIHZhbHVlOiB0aGlzLnN0YXJ0TW92ZVdpZHRoLFxuICAgICAgICBvbGRWYWx1ZTogdGhpcy5zdGFydE1vdmVXaWR0aCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKCkpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCByZWN0ID0gdGhpcy5ob3N0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBpc1JUTCA9IHRoaXMuaXNSVEwoKTtcbiAgICBcbiAgICBsZXQgbmV3V2lkdGggPSBpc1JUTCA/IHJlY3QucmlnaHQgLSBldmVudC5jbGllbnRYIDogZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgICBuZXdXaWR0aCA9IE1hdGgubWF4KHRoaXMubWluV2lkdGgoKSwgTWF0aC5taW4obmV3V2lkdGgsIHRoaXMubWF4V2lkdGgoKSkpO1xuXG4gICAgaWYgKG5ld1dpZHRoICE9PSB0aGlzLmhvc3RFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmhvc3RFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZVVwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKCkgfHwgIXRoaXMucmVzaXplSGFuZGxlKSByZXR1cm47XG5cbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJyc7XG4gICAgdGhpcy5yZXNpemVIYW5kbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gU1RZTEVTLmJhY2tncm91bmRDb2xvcjtcblxuICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG5cbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMud2lkdGguc2V0KGN1cnJlbnRXaWR0aCk7XG4gICAgICB0aGlzLm9uUmVzaXppbmdFbmRlZC5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5ob3N0RWxlbWVudCxcbiAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICAgIG5hbWU6ICdyZXNpemluZ0VuZGVkJyxcbiAgICAgICAgdmFsdWU6IGN1cnJlbnRXaWR0aCxcbiAgICAgICAgb2xkVmFsdWU6IHRoaXMuc3RhcnRNb3ZlV2lkdGgsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuaXNSZXNpemluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVzaXppbmcoKSAmJiB0aGlzLnJlc2l6ZUhhbmRsZSkge1xuICAgICAgdGhpcy5yZXNpemVIYW5kbGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gU1RZTEVTLmJhY2tncm91bmRDb2xvckhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1Jlc2l6aW5nKCkgJiYgdGhpcy5yZXNpemVIYW5kbGUpIHtcbiAgICAgIHRoaXMucmVzaXplSGFuZGxlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFNUWUxFUy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkRvdWJsZUNsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnRXaWR0aCA9IHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5kYmxDbGlja0FjdGlvbigpO1xuICAgIFxuICAgIGxldCBuZXdXaWR0aDogbnVtYmVyO1xuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIG5ld1dpZHRoID0gdGhpcy5yZXNldFRvSW5pdGlhbFdpZHRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWF4aW1pemUnOlxuICAgICAgICBuZXdXaWR0aCA9IHRoaXMubWF4aW1pemVUb01heFdpZHRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZml0JzpcbiAgICAgICAgbmV3V2lkdGggPSB0aGlzLmZpdFRvQ29udGVudCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG5ld1dpZHRoID0gZWxlbWVudFdpZHRoO1xuICAgIH1cblxuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5vblJlc2l6aW5nRGJsQ2xpY2suZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuaG9zdEVsZW1lbnQsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICBuYW1lOiAnb25SZXNpemluZ0RibENsaWNrJyxcbiAgICAgICAgb2xkVmFsdWU6IGVsZW1lbnRXaWR0aCxcbiAgICAgICAgdmFsdWU6IG5ld1dpZHRoLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VG9Jbml0aWFsV2lkdGgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBkZWZhdWx0V2lkdGggPSB0aGlzLmRlZmF1bHRXaWR0aCgpO1xuICAgIGlmIChkZWZhdWx0V2lkdGggIT09IG51bGwpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50V2lkdGgoZGVmYXVsdFdpZHRoKTtcbiAgICAgIHJldHVybiBkZWZhdWx0V2lkdGg7XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbFdpZHRoID0gdGhpcy53aWR0aCgpO1xuICAgIGlmIChpbml0aWFsV2lkdGggIT09IG51bGwpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50V2lkdGgoaW5pdGlhbFdpZHRoKTtcbiAgICAgIHJldHVybiBpbml0aWFsV2lkdGg7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBseUVsZW1lbnRXaWR0aCh0aGlzLmluaXRpYWxFbGVtZW50V2lkdGgpO1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxFbGVtZW50V2lkdGg7XG4gIH1cblxuICBwcml2YXRlIG1heGltaXplVG9NYXhXaWR0aCgpOiBudW1iZXIge1xuICAgIGNvbnN0IG1heFdpZHRoID0gdGhpcy5tYXhXaWR0aCgpO1xuICAgIGlmIChtYXhXaWR0aCAhPT0gSW5maW5pdHkpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50V2lkdGgobWF4V2lkdGgpO1xuICAgIH1cbiAgICByZXR1cm4gbWF4V2lkdGg7XG4gIH1cblxuICBwcml2YXRlIGZpdFRvQ29udGVudCgpOiBudW1iZXIge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc3R5bGUud2lkdGggPSAnZml0LWNvbnRlbnQnO1xuICAgIHJldHVybiB0aGlzLmhvc3RFbGVtZW50LmNsaWVudFdpZHRoO1xuICB9XG59XG5cbmludGVyZmFjZSBBWFZhbHVlQ2hhbmdlZEV2ZW50PFQ+IHtcbiAgY29tcG9uZW50OiB1bmtub3duO1xuICBodG1sRWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBpc1VzZXJJbnRlcmFjdGlvbj86IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZhbHVlPzogVDtcbiAgb2xkVmFsdWU/OiBUO1xufVxuXG5jb25zdCBTVFlMRVMgPSB7XG4gIGhhbmRsZXJXaWR0aDogJ3ZhcigtLWF4LWNvbXAtcmVzaXphYmxlLWhhbmRsZXItd2lkdGgsIDRweCknLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKHZhcigtLWF4LWNvbXAtcmVzaXphYmxlLWJhY2tncm91bmQtY29sb3IpKScsXG4gIGJhY2tncm91bmRDb2xvckFjdGl2ZTogJ3JnYmEodmFyKC0tYXgtY29tcC1yZXNpemFibGUtYmFja2dyb3VuZC1jb2xvci1hY3RpdmUsIHZhcigtLWF4LXN5cy1jb2xvci1wcmltYXJ5LXN1cmZhY2UpKSknLFxuICBiYWNrZ3JvdW5kQ29sb3JIb3ZlcjpcbiAgICAncmdiYSh2YXIoLS1heC1jb21wLXJlc2l6YWJsZS1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyLCB2YXIoLS1heC1zeXMtY29sb3ItcHJpbWFyeS1saWdodC1zdXJmYWNlKSkpJyxcbiAgY3Vyc29yOiAndmFyKC0tYXgtY29tcC1yZXNpemFibGUtY3Vyc29yLCBldy1yZXNpemUpJyxcbiAgY3Vyc29yQWN0aXZlOiAndmFyKC0tYXgtY29tcC1yZXNpemFibGUtY3Vyc29yLWFjdGl2ZSwgZXctcmVzaXplKScsXG4gIHpJbmRleDogJ3ZhcigtLWF4LWNvbXAtcmVzaXphYmxlLXotaW5kZXgsIDk5OSknLFxuICB0cmFuc2l0aW9uOlxuICAgICd2YXIoLS1heC1jb21wLXJlc2l6YWJsZS10cmFuc2l0aW9uLCBiYWNrZ3JvdW5kLWNvbG9yIC0tYXgtc3lzLXRyYW5zaXRpb24tZHVyYXRpb24gLS1heC1zeXMtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pJyxcbiAgYm9yZGVyUmFkaXVzOiAndmFyKC0tYXgtY29tcC1yZXNpemFibGUtYm9yZGVyLXJhZGl1cywgLS1heC1zeXMtYm9yZGVyLXJhZGl1cyknLFxufTtcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1yZXNpemFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvcmVzaXphYmxlL3NyYy9hY29yZXgtY2RrLXJlc2l6YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -242,20 +242,24 @@ class AXUploaderService {
|
|
|
242
242
|
return list;
|
|
243
243
|
}
|
|
244
244
|
/**
|
|
245
|
-
* Opens the file dialog and returns
|
|
245
|
+
* Opens the file dialog and returns selected files without enqueueing uploads.
|
|
246
|
+
* With `fileType`, applies catalog validation; otherwise uses legacy accept-only selection.
|
|
246
247
|
*/
|
|
247
248
|
async chooseFiles(options = {}) {
|
|
248
249
|
try {
|
|
249
|
-
if (
|
|
250
|
-
|
|
251
|
-
return {
|
|
250
|
+
if (options.fileType) {
|
|
251
|
+
const accept = options.accept ?? (await this.fileService.getAcceptAttribute(options.fileType));
|
|
252
|
+
return this.fileService.chooseValidated({
|
|
253
|
+
fileType: options.fileType,
|
|
254
|
+
multiple: options.multiple ?? false,
|
|
255
|
+
accept,
|
|
256
|
+
});
|
|
252
257
|
}
|
|
253
|
-
const
|
|
254
|
-
|
|
255
|
-
fileType: options.fileType,
|
|
258
|
+
const accepted = await this.fileService.choose({
|
|
259
|
+
accept: options.accept,
|
|
256
260
|
multiple: options.multiple ?? false,
|
|
257
|
-
accept,
|
|
258
261
|
});
|
|
262
|
+
return { accepted, rejected: [] };
|
|
259
263
|
}
|
|
260
264
|
catch (error) {
|
|
261
265
|
console.error('File choose failed:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-uploader.mjs","sources":["../tmp-esm2022/uploader/lib/uploader-zone-host.js","../tmp-esm2022/uploader/lib/uploader.models.js","../tmp-esm2022/uploader/lib/uploader.service.js","../tmp-esm2022/uploader/lib/uploader-zone.directive.js","../tmp-esm2022/uploader/lib/uploader-browse-handle.directive.js","../tmp-esm2022/uploader/acorex-cdk-uploader.js"],"sourcesContent":["/** DOM marker so browse handles can find a zone across content projection. */\nexport const AX_UPLOADER_ZONE_HOST = Symbol('AX_UPLOADER_ZONE_HOST');\nexport function bindUploaderZoneHost(element, zone) {\n element[AX_UPLOADER_ZONE_HOST] = zone;\n}\nexport function unbindUploaderZoneHost(element) {\n delete element[AX_UPLOADER_ZONE_HOST];\n}\n/** Walk ancestors to resolve the zone (works with projected browse handles). */\nexport function findUploaderZoneFromDom(start) {\n let el = start;\n while (el) {\n const zone = el[AX_UPLOADER_ZONE_HOST];\n if (zone) {\n return zone;\n }\n el = el.parentElement;\n }\n return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXItem9uZS1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3VwbG9hZGVyL3NyYy9saWIvdXBsb2FkZXItem9uZS1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQU1yRSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxJQUE2QjtJQUNyRixPQUFxQyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBb0I7SUFDekQsT0FBUSxPQUFxQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsS0FBa0I7SUFDeEQsSUFBSSxFQUFFLEdBQXVCLEtBQUssQ0FBQztJQUNuQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEdBQUksRUFBZ0MsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVhVcGxvYWRlclpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL3VwbG9hZGVyLXpvbmUuZGlyZWN0aXZlJztcblxuLyoqIERPTSBtYXJrZXIgc28gYnJvd3NlIGhhbmRsZXMgY2FuIGZpbmQgYSB6b25lIGFjcm9zcyBjb250ZW50IHByb2plY3Rpb24uICovXG5leHBvcnQgY29uc3QgQVhfVVBMT0FERVJfWk9ORV9IT1NUID0gU3ltYm9sKCdBWF9VUExPQURFUl9aT05FX0hPU1QnKTtcblxuZXhwb3J0IHR5cGUgQVhVcGxvYWRlclpvbmVIb3N0RWxlbWVudCA9IEhUTUxFbGVtZW50ICYge1xuICBbQVhfVVBMT0FERVJfWk9ORV9IT1NUXT86IEFYVXBsb2FkZXJab25lRGlyZWN0aXZlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRVcGxvYWRlclpvbmVIb3N0KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB6b25lOiBBWFVwbG9hZGVyWm9uZURpcmVjdGl2ZSk6IHZvaWQge1xuICAoZWxlbWVudCBhcyBBWFVwbG9hZGVyWm9uZUhvc3RFbGVtZW50KVtBWF9VUExPQURFUl9aT05FX0hPU1RdID0gem9uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuYmluZFVwbG9hZGVyWm9uZUhvc3QoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgZGVsZXRlIChlbGVtZW50IGFzIEFYVXBsb2FkZXJab25lSG9zdEVsZW1lbnQpW0FYX1VQTE9BREVSX1pPTkVfSE9TVF07XG59XG5cbi8qKiBXYWxrIGFuY2VzdG9ycyB0byByZXNvbHZlIHRoZSB6b25lICh3b3JrcyB3aXRoIHByb2plY3RlZCBicm93c2UgaGFuZGxlcykuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFVwbG9hZGVyWm9uZUZyb21Eb20oc3RhcnQ6IEhUTUxFbGVtZW50KTogQVhVcGxvYWRlclpvbmVEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICBsZXQgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IHN0YXJ0O1xuICB3aGlsZSAoZWwpIHtcbiAgICBjb25zdCB6b25lID0gKGVsIGFzIEFYVXBsb2FkZXJab25lSG9zdEVsZW1lbnQpW0FYX1VQTE9BREVSX1pPTkVfSE9TVF07XG4gICAgaWYgKHpvbmUpIHtcbiAgICAgIHJldHVybiB6b25lO1xuICAgIH1cbiAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==","import { computed, signal } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nexport class AXUploadRequest {\n get name() {\n return this.file.name;\n }\n get ext() {\n const parts = this.name.split('.');\n if (parts.length > 1) {\n return parts[parts.length - 1];\n }\n else {\n // No extension found\n return '';\n }\n }\n get size() {\n return this.file.size;\n }\n get file() {\n return this.uploadFile;\n }\n constructor(uploadFile) {\n this.uploadFile = uploadFile;\n this._progress = signal(0, ...(ngDevMode ? [{ debugName: \"_progress\" }] : []));\n this.progress = computed(() => this._progress(), ...(ngDevMode ? [{ debugName: \"progress\" }] : []));\n this._estimateTime = signal(0, ...(ngDevMode ? [{ debugName: \"_estimateTime\" }] : []));\n this.estimateTime = computed(() => this._estimateTime(), ...(ngDevMode ? [{ debugName: \"estimateTime\" }] : []));\n this._status = signal('new', ...(ngDevMode ? [{ debugName: \"_status\" }] : []));\n this.status = computed(() => this._status(), ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n this._message = signal(null, ...(ngDevMode ? [{ debugName: \"_message\" }] : []));\n this.message = computed(() => this._message(), ...(ngDevMode ? [{ debugName: \"message\" }] : []));\n this._isDetermined = signal(false, ...(ngDevMode ? [{ debugName: \"_isDetermined\" }] : []));\n this.isDetermined = computed(() => this._isDetermined(), ...(ngDevMode ? [{ debugName: \"isDetermined\" }] : []));\n this.bytesTransferred = 0;\n this.onCancel = new Subject();\n this.onStart = new Subject();\n this.onFailed = new Subject();\n this.onComplete = new BehaviorSubject(null);\n }\n estimateTimeRemaining(bytesTransferred) {\n const now = Date.now();\n const elapsed = now - this.startTime; // Time in milliseconds\n if (isNaN(elapsed) || elapsed === 0) {\n return null; // Avoid division by zero\n }\n const speed = (bytesTransferred || 1) / elapsed; // Bytes per millisecond\n const remainingBytes = this.size - bytesTransferred;\n const estimatedTime = Math.ceil(remainingBytes / speed); // Time in milliseconds\n return estimatedTime; // Return the estimated time in milliseconds\n }\n setTransferredBytes(value) {\n this.bytesTransferred = value;\n if (value > 0 && !this._isDetermined() && (this.status() == 'new' || this.status() == 'inprogress')) {\n this._isDetermined.set(true);\n }\n this.updateEstimateTime();\n }\n updateEstimateTime() {\n this._estimateTime.set(this.estimateTimeRemaining(this.bytesTransferred));\n const progress = Math.floor((this.bytesTransferred / this.size) * 100);\n this._progress.set(progress);\n }\n async upload() {\n this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this.onStart.next();\n }\n cancel() {\n this._status.set('canceled');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this.onCancel.next();\n }\n redo() {\n // this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this._message.set(null);\n this.onStart.next();\n }\n error(message) {\n this._status.set('failed');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this._message.set(message);\n this.onFailed.next();\n }\n finish(data) {\n this._status.set('completed');\n this.bytesTransferred = this.size;\n this._estimateTime.set(0);\n this._progress.set(100);\n this.onComplete.next(data);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3VwbG9hZGVyL3NyYy9saWIvdXBsb2FkZXIubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBbUNoRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLHFCQUFxQjtZQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUEyQkQsWUFBb0IsVUFBZ0I7UUFBaEIsZUFBVSxHQUFWLFVBQVUsQ0FBTTtRQXpCbkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLHFEQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9EQUFDLENBQUM7UUFFM0Isa0JBQWEs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Q0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQVU7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFVwbG9hZGVyQ2hvb3NlRmlsZXNSZXN1bHQge1xuICBhY2NlcHRlZDogRmlsZVtdO1xuICByZWplY3RlZDogeyBmaWxlOiBGaWxlOyBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlckZpbGVDaGFuZ2VFdmVudCB7XG4gIGV2ZW50OiBFdmVudDtcbiAgZmlsZXM6IEZpbGVbXTtcbiAgcmVqZWN0ZWQ/OiB7IGZpbGU6IEZpbGU7IGVycm9yczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdIH1bXTtcbn1cblxuZXhwb3J0IHR5cGUgQVhVcGxvYWRTdGF0dXMgPSAnbmV3JyB8ICdpbnByb2dyZXNzJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgcmVxdWVzdHM6IEFYVXBsb2FkUmVxdWVzdFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJGaWxlU3RhcnRFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICB1cGxvYWRlZEZpbGU6IEFYVXBsb2FkUmVxdWVzdDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlckZpbGVDb21wbGV0ZUV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIHVwbG9hZGVkRmlsZTogQVhVcGxvYWRSZXF1ZXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJGaWxlc0NvbXBsZXRlRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgdXBsb2FkZWRGaWxlczogQVhVcGxvYWRSZXF1ZXN0W107XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlckZpbGVDYW5jZWxFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICB1cGxvYWRlZEZpbGU6IEFYVXBsb2FkUmVxdWVzdDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVXBsb2FkUmVxdWVzdCB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZS5uYW1lO1xuICB9XG5cbiAgZ2V0IGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5uYW1lLnNwbGl0KCcuJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gZXh0ZW5zaW9uIGZvdW5kXG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWxlLnNpemU7XG4gIH1cblxuICBnZXQgZmlsZSgpOiBGaWxlIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvZ3Jlc3MgPSBzaWduYWwoMCk7XG4gIHByb2dyZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fcHJvZ3Jlc3MoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVUaW1lID0gc2lnbmFsKDApO1xuICBlc3RpbWF0ZVRpbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9lc3RpbWF0ZVRpbWUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdHVzID0gc2lnbmFsPEFYVXBsb2FkU3RhdHVzPignbmV3Jyk7XG4gIHN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXR1cygpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBtZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbWVzc2FnZSgpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RldGVybWluZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0RldGVybWluZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9pc0RldGVybWluZWQoKSk7XG5cbiAgcHJpdmF0ZSBzdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBieXRlc1RyYW5zZmVycmVkID0gMDtcblxuICBwdWJsaWMgbWV0YURhdGE6IGFueTtcblxuICBwdWJsaWMgb25DYW5jZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgb25TdGFydCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBvbkZhaWxlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBvbkNvbXBsZXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVwbG9hZEZpbGU6IEZpbGUpIHt9XG5cbiAgcHJpdmF0ZSBlc3RpbWF0ZVRpbWVSZW1haW5pbmcoYnl0ZXNUcmFuc2ZlcnJlZDogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBlbGFwc2VkID0gbm93IC0gdGhpcy5zdGFydFRpbWU7IC8vIFRpbWUgaW4gbWlsbGlzZWNvbmRzXG5cbiAgICBpZiAoaXNOYU4oZWxhcHNlZCkgfHwgZWxhcHNlZCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIEF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICB9XG5cbiAgICBjb25zdCBzcGVlZCA9IChieXRlc1RyYW5zZmVycmVkIHx8IDEpIC8gZWxhcHNlZDsgLy8gQnl0ZXMgcGVyIG1pbGxpc2Vjb25kXG4gICAgY29uc3QgcmVtYWluaW5nQnl0ZXMgPSB0aGlzLnNpemUgLSBieXRlc1RyYW5zZmVycmVkO1xuICAgIGNvbnN0IGVzdGltYXRlZFRpbWUgPSBNYXRoLmNlaWwocmVtYWluaW5nQnl0ZXMgLyBzcGVlZCk7IC8vIFRpbWUgaW4gbWlsbGlzZWNvbmRzXG4gICAgcmV0dXJuIGVzdGltYXRlZFRpbWU7IC8vIFJldHVybiB0aGUgZXN0aW1hdGVkIHRpbWUgaW4gbWlsbGlzZWNvbmRzXG4gIH1cblxuICBwdWJsaWMgc2V0VHJhbnNmZXJyZWRCeXRlcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5ieXRlc1RyYW5zZmVycmVkID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlID4gMCAmJiAhdGhpcy5faXNEZXRlcm1pbmVkKCkgJiYgKHRoaXMuc3RhdHVzKCkgPT0gJ25ldycgfHwgdGhpcy5zdGF0dXMoKSA9PSAnaW5wcm9ncmVzcycpKSB7XG4gICAgICB0aGlzLl9pc0RldGVybWluZWQuc2V0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUVzdGltYXRlVGltZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFc3RpbWF0ZVRpbWUoKSB7XG4gICAgdGhpcy5fZXN0aW1hdGVUaW1lLnNldCh0aGlzLmVzdGltYXRlVGltZVJlbWFpbmluZyh0aGlzLmJ5dGVzVHJhbnNmZXJyZWQpKTtcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGguZmxvb3IoKHRoaXMuYnl0ZXNUcmFuc2ZlcnJlZCAvIHRoaXMuc2l6ZSkgKiAxMDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldChwcm9ncmVzcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wcm9ncmVzcy5zZXQoMCk7XG4gICAgdGhpcy5fc3RhdHVzLnNldCgnaW5wcm9ncmVzcycpO1xuICAgIHRoaXMub25TdGFydC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cy5zZXQoJ2NhbmNlbGVkJyk7XG4gICAgdGhpcy5ieXRlc1RyYW5zZmVycmVkID0gMDtcbiAgICB0aGlzLl9lc3RpbWF0ZVRpbWUuc2V0KDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldCgwKTtcbiAgICB0aGlzLm9uQ2FuY2VsLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWRvKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wcm9ncmVzcy5zZXQoMCk7XG4gICAgdGhpcy5fc3RhdHVzLnNldCgnaW5wcm9ncmVzcycpO1xuICAgIHRoaXMuX21lc3NhZ2Uuc2V0KG51bGwpO1xuICAgIHRoaXMub25TdGFydC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdHVzLnNldCgnZmFpbGVkJyk7XG4gICAgdGhpcy5ieXRlc1RyYW5zZmVycmVkID0gMDtcbiAgICB0aGlzLl9lc3RpbWF0ZVRpbWUuc2V0KDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldCgwKTtcbiAgICB0aGlzLl9tZXNzYWdlLnNldChtZXNzYWdlKTtcbiAgICB0aGlzLm9uRmFpbGVkLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5pc2goZGF0YT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cy5zZXQoJ2NvbXBsZXRlZCcpO1xuICAgIHRoaXMuYnl0ZXNUcmFuc2ZlcnJlZCA9IHRoaXMuc2l6ZTtcbiAgICB0aGlzLl9lc3RpbWF0ZVRpbWUuc2V0KDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldCgxMDApO1xuICAgIHRoaXMub25Db21wbGV0ZS5uZXh0KGRhdGEpO1xuICB9XG59XG4iXX0=","import { AXFileService } from '@acorex/core/file';\nimport { Injectable, inject } from '@angular/core';\nimport { sumBy } from 'lodash-es';\nimport { BehaviorSubject, Subject, map } from 'rxjs';\nimport { AXUploadRequest, } from './uploader.models';\nimport * as i0 from \"@angular/core\";\n/**\n * File upload queue and validation via {@link AXFileService}.\n * Storage is implemented by subscribing to upload/resolve/delete events.\n * @category Services\n */\nexport class AXUploaderService {\n constructor() {\n this.fileService = inject(AXFileService);\n this._files$ = new BehaviorSubject([]);\n this.files = this._files$.asObservable();\n this.onFileUploadStart = new Subject();\n this.onFileUploadComplete = new Subject();\n this.onFilesUploadComplete = new Subject();\n this.onFileUploadCanceled = new Subject();\n /** Subscribe to perform uploads (e.g. HTTP, IndexedDB). */\n this.onUpload = new Subject();\n /** Subscribe to resolve a stored reference to a playback URL. */\n this.onResolveUrl = new Subject();\n /** Subscribe to delete stored media. */\n this.onDeleteMedia = new Subject();\n this.totalEstimateTime = this._files$.pipe(map((files) => sumBy(files, (file) => (file.status() === 'inprogress' ? file.estimateTime() : 0))));\n }\n isAnyDetermined() {\n return this._files$.value.some((file) => file.isDetermined());\n }\n validateFiles(files, fileType) {\n return this.fileService.validateMany(files, fileType);\n }\n async getAcceptAttribute(fileType) {\n return this.fileService.getAcceptAttribute(fileType);\n }\n upload(options) {\n return new Promise((resolve, reject) => {\n if (!this.hasUploadHandler()) {\n reject(new Error('No upload handler subscribed to AXUploaderService.onUpload. Provide a service that handles upload events.'));\n return;\n }\n this.onUpload.next({\n component: this,\n options,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n resolveUrl(reference, signal) {\n return new Promise((resolve, reject) => {\n if (!this.hasResolveUrlHandler()) {\n reject(new Error('No handler subscribed to AXUploaderService.onResolveUrl. Provide a service that handles resolve events.'));\n return;\n }\n this.onResolveUrl.next({\n component: this,\n reference,\n signal,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n async resolvePlaybackUrl(reference, signal) {\n const direct = reference.url?.trim();\n if (direct && !reference.mediaId) {\n return direct;\n }\n if (direct && reference.mediaId) {\n try {\n return await this.resolveUrl(reference, signal);\n }\n catch {\n return direct;\n }\n }\n if (reference.mediaId) {\n return this.resolveUrl(reference, signal);\n }\n if (direct) {\n return direct;\n }\n throw new Error('Upload reference has no url or mediaId');\n }\n deleteMedia(reference) {\n return new Promise((resolve, reject) => {\n if (!this.hasDeleteMediaHandler()) {\n reject(new Error('No handler subscribed to AXUploaderService.onDeleteMedia. Provide a service that handles delete events.'));\n return;\n }\n this.onDeleteMedia.next({\n component: this,\n reference,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n hasUploadHandler() {\n return this.onUpload.observers.length > 0;\n }\n hasResolveUrlHandler() {\n return this.onResolveUrl.observers.length > 0;\n }\n hasDeleteMediaHandler() {\n return this.onDeleteMedia.observers.length > 0;\n }\n async add(files, options) {\n const list = Array.from(files).map((f) => new AXUploadRequest(f));\n await this.applyFileTypeValidation(list, options?.fileType);\n const newFiles = [...this._files$.value, ...list];\n this._files$.next(newFiles);\n void this.startUpload();\n return list;\n }\n /**\n * Opens the file dialog and returns validated files without enqueueing uploads.\n */\n async chooseFiles(options = {}) {\n try {\n if (!options.fileType) {\n console.warn('AXUploaderService.chooseFiles: fileType is required for validated file selection.');\n return { accepted: [], rejected: [] };\n }\n const accept = options.accept ?? (await this.fileService.getAcceptAttribute(options.fileType));\n return this.fileService.chooseValidated({\n fileType: options.fileType,\n multiple: options.multiple ?? false,\n accept,\n });\n }\n catch (error) {\n console.error('File choose failed:', error);\n return { accepted: [], rejected: [] };\n }\n }\n async browse(options = { multiple: false }) {\n const { accepted } = await this.chooseFiles(options);\n if (!accepted.length) {\n return [];\n }\n return this.add(accepted, { fileType: options.fileType });\n }\n async cancelAll() {\n await Promise.all(this._files$.value.filter((c) => c.status() !== 'completed').map((c) => c.cancel()));\n }\n clearAll() {\n const remainingFiles = this._files$.value.filter((c) => c.status() === 'inprogress');\n this._files$.next(remainingFiles);\n }\n remove(item) {\n const updatedFiles = this._files$.value.filter((c) => c !== item);\n this._files$.next(updatedFiles);\n }\n async startUpload() {\n const newFiles = this._files$.value.filter((c) => c.status() === 'new');\n for (const file of newFiles) {\n await this.bindEvents(file);\n }\n }\n async bindEvents(c) {\n c.onStart.subscribe(() => {\n this.onFileUploadStart.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n c.onComplete.subscribe((data) => {\n Object.assign(c, { metaData: data });\n this.onFileUploadComplete.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n const isAllDone = this._files$.value.every((f) => f.status() === 'completed' || f.status() === 'canceled' || f.status() === 'failed');\n if (isAllDone) {\n this.onFilesUploadComplete.next({\n component: this,\n uploadedFiles: this._files$.value,\n isUserInteraction: false,\n });\n }\n });\n c.onCancel.subscribe(() => {\n this.onFileUploadCanceled.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n }\n async applyFileTypeValidation(requests, fileType) {\n if (!fileType) {\n return requests;\n }\n for (const request of requests) {\n const errors = await this.fileService.validate(request.file, fileType);\n if (errors.length > 0) {\n request.error(errors[0]?.message ?? 'Invalid file');\n }\n }\n return requests;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay91cGxvYWRlci9zcmMvbGliL3VwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxlQUFlLEdBTWhCLE1BQU0sbUJBQW1CLENBQUM7O0FBK0QzQjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVtQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVwQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRXRELFVBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUE0QixDQUFDO1FBRTVELHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUErQixDQUFDO1FBRWxFLDBCQUFxQixHQUFHLElBQUksT0FBTyxFQUFnQyxDQUFDO1FBRXBFLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUE2QixDQUFDO1FBRWhGLDJEQUEyRDtRQUMzQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFFaEUsaUVBQWlFO1FBQ2pELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFFeEUsd0NBQXdDO1FBQ3hCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7UUFFMUQs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LFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWEZpbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHR5cGUgeyBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzdW1CeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQVhVcGxvYWRSZXF1ZXN0LFxuICBBWFVwbG9hZGVyRmlsZUNhbmNlbEV2ZW50LFxuICBBWFVwbG9hZGVyRmlsZUNvbXBsZXRlRXZlbnQsXG4gIEFYVXBsb2FkZXJGaWxlU3RhcnRFdmVudCxcbiAgQVhVcGxvYWRlckZpbGVzQ29tcGxldGVFdmVudCxcbiAgdHlwZSBBWFVwbG9hZGVyQ2hvb3NlRmlsZXNSZXN1bHQsXG59IGZyb20gJy4vdXBsb2FkZXIubW9kZWxzJztcblxuLyoqIFJlZmVyZW5jZSB0byBzdG9yZWQgZmlsZS9tZWRpYSAodXJsIGFuZC9vciBtZWRpYUlkKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRSZWZlcmVuY2Uge1xuICB1cmw/OiBzdHJpbmc7XG4gIG1lZGlhSWQ/OiBzdHJpbmc7XG4gIG1pbWVUeXBlPzogc3RyaW5nO1xuICBzaXplPzogbnVtYmVyO1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlVXBsb2FkT3B0aW9ucyB7XG4gIHNvdXJjZTogRmlsZSB8IEJsb2I7XG4gIGZpbGVOYW1lPzogc3RyaW5nO1xuICBtaW1lVHlwZT86IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgb25Qcm9ncmVzcz86IChwZXJjZW50OiBudW1iZXIpID0+IHZvaWQ7XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkUmVzdWx0IHtcbiAgdXJsOiBzdHJpbmc7XG4gIHRodW1ibmFpbFVybD86IHN0cmluZztcbiAgbWVkaWFJZD86IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICBtaW1lVHlwZTogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKiogRW1pdHRlZCB3aGVuIHtAbGluayBBWFVwbG9hZGVyU2VydmljZS51cGxvYWR9IGlzIGNhbGxlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlclVwbG9hZEV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIG9wdGlvbnM6IEFYRmlsZVVwbG9hZE9wdGlvbnM7XG4gIHJlc29sdmU6IChyZXN1bHQ6IEFYVXBsb2FkUmVzdWx0KSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb246IHVua25vd24pID0+IHZvaWQ7XG59XG5cbi8qKiBFbWl0dGVkIHdoZW4ge0BsaW5rIEFYVXBsb2FkZXJTZXJ2aWNlLnJlc29sdmVVcmx9IGlzIGNhbGxlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlclJlc29sdmVVcmxFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICByZWZlcmVuY2U6IEFYVXBsb2FkUmVmZXJlbmNlO1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgcmVzb2x2ZTogKHVybDogc3RyaW5nKSA9PiB2b2lkO1xuICByZWplY3Q6IChyZWFzb246IHVua25vd24pID0+IHZvaWQ7XG59XG5cbi8qKiBFbWl0dGVkIHdoZW4ge0BsaW5rIEFYVXBsb2FkZXJTZXJ2aWNlLmRlbGV0ZU1lZGlhfSBpcyBjYWxsZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJEZWxldGVNZWRpYUV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIHJlZmVyZW5jZTogQVhVcGxvYWRSZWZlcmVuY2U7XG4gIHJlc29sdmU6ICgpID0+IHZvaWQ7XG4gIHJlamVjdDogKHJlYXNvbjogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFVwbG9hZGVyQnJvd3NlT3B0aW9ucyB7XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgYWNjZXB0Pzogc3RyaW5nO1xuICAvKiogTG9naWNhbCBmaWxlIHR5cGUgbmFtZShzKSByZWdpc3RlcmVkIGluIHtAbGluayBBWEZpbGVTZXJ2aWNlfS4gKi9cbiAgZmlsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFVwbG9hZGVyQWRkT3B0aW9ucyB7XG4gIGZpbGVUeXBlPzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbi8qKlxuICogRmlsZSB1cGxvYWQgcXVldWUgYW5kIHZhbGlkYXRpb24gdmlhIHtAbGluayBBWEZpbGVTZXJ2aWNlfS5cbiAqIFN0b3JhZ2UgaXMgaW1wbGVtZW50ZWQgYnkgc3Vic2NyaWJpbmcgdG8gdXBsb2FkL3Jlc29sdmUvZGVsZXRlIGV2ZW50cy5cbiAqIEBjYXRlZ29yeSBTZXJ2aWNlc1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYVXBsb2FkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYVXBsb2FkUmVxdWVzdFtdPihbXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpbGVzID0gdGhpcy5fZmlsZXMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkZpbGVVcGxvYWRTdGFydCA9IG5ldyBTdWJqZWN0PEFYVXBsb2FkZXJGaWxlU3RhcnRFdmVudD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25GaWxlVXBsb2FkQ29tcGxldGUgPSBuZXcgU3ViamVjdDxBWFVwbG9hZGVyRmlsZUNvbXBsZXRlRXZlbnQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRmlsZXNVcGxvYWRDb21wbGV0ZSA9IG5ldyBTdWJqZWN0PEFYVXBsb2FkZXJGaWxlc0NvbXBsZXRlRXZlbnQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRmlsZVVwbG9hZENhbmNlbGVkID0gbmV3IFN1YmplY3Q8QVhVcGxvYWRlckZpbGVDYW5jZWxFdmVudD4oKTtcblxuICAvKiogU3Vic2NyaWJlIHRvIHBlcmZvcm0gdXBsb2FkcyAoZS5nLiBIVFRQLCBJbmRleGVkREIpLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25VcGxvYWQgPSBuZXcgU3ViamVjdDxBWFVwbG9hZGVyVXBsb2FkRXZlbnQ+KCk7XG5cbiAgLyoqIFN1YnNjcmliZSB0byByZXNvbHZlIGEgc3RvcmVkIHJlZmVyZW5jZSB0byBhIHBsYXliYWNrIFVSTC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uUmVzb2x2ZVVybCA9IG5ldyBTdWJqZWN0PEFYVXBsb2FkZXJSZXNvbHZlVXJsRXZlbnQ+KCk7XG5cbiAgLyoqIFN1YnNjcmliZSB0byBkZWxldGUgc3RvcmVkIG1lZGlhLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25EZWxldGVNZWRpYSA9IG5ldyBTdWJqZWN0PEFYVXBsb2FkZXJEZWxldGVNZWRpYUV2ZW50PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSB0b3RhbEVzdGltYXRlVGltZSA9IHRoaXMuX2ZpbGVzJC5waXBlKFxuICAgIG1hcCgoZmlsZXMpID0+IHN1bUJ5KGZpbGVzLCAoZmlsZSkgPT4gKGZpbGUuc3RhdHVzKCkgPT09ICdpbnByb2dyZXNzJyA/IGZpbGUuZXN0aW1hdGVUaW1lKCkgOiAwKSkpLFxuICApO1xuXG4gIGlzQW55RGV0ZXJtaW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXMkLnZhbHVlLnNvbWUoKGZpbGUpID0+IGZpbGUuaXNEZXRlcm1pbmVkKCkpO1xuICB9XG5cbiAgdmFsaWRhdGVGaWxlcyhcbiAgICBmaWxlczogRmlsZVtdLFxuICAgIGZpbGVUeXBlOiBzdHJpbmcsXG4gICk6IFByb21pc2U8eyBhY2NlcHRlZDogRmlsZVtdOyByZWplY3RlZDogeyBmaWxlOiBGaWxlOyBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSB9W10gfT4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlLnZhbGlkYXRlTWFueShmaWxlcywgZmlsZVR5cGUpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWNjZXB0QXR0cmlidXRlKGZpbGVUeXBlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2UuZ2V0QWNjZXB0QXR0cmlidXRlKGZpbGVUeXBlKTtcbiAgfVxuXG4gIHVwbG9hZChvcHRpb25zOiBBWEZpbGVVcGxvYWRPcHRpb25zKTogUHJvbWlzZTxBWFVwbG9hZFJlc3VsdD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxBWFVwbG9hZFJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmhhc1VwbG9hZEhhbmRsZXIoKSkge1xuICAgICAgICByZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ05vIHVwbG9hZCBoYW5kbGVyIHN1YnNjcmliZWQgdG8gQVhVcGxvYWRlclNlcnZpY2Uub25VcGxvYWQuIFByb3ZpZGUgYSBzZXJ2aWNlIHRoYXQgaGFuZGxlcyB1cGxvYWQgZXZlbnRzLicsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5vblVwbG9hZC5uZXh0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICByZXNvbHZlLFxuICAgICAgICByZWplY3QsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzb2x2ZVVybChyZWZlcmVuY2U6IEFYVXBsb2FkUmVmZXJlbmNlLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmhhc1Jlc29sdmVVcmxIYW5kbGVyKCkpIHtcbiAgICAgICAgcmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICdObyBoYW5kbGVyIHN1YnNjcmliZWQgdG8gQVhVcGxvYWRlclNlcnZpY2Uub25SZXNvbHZlVXJsLiBQcm92aWRlIGEgc2VydmljZSB0aGF0IGhhbmRsZXMgcmVzb2x2ZSBldmVudHMuJyxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm9uUmVzb2x2ZVVybC5uZXh0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIHNpZ25hbCxcbiAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgcmVqZWN0LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmVQbGF5YmFja1VybChyZWZlcmVuY2U6IEFYVXBsb2FkUmVmZXJlbmNlLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgZGlyZWN0ID0gcmVmZXJlbmNlLnVybD8udHJpbSgpO1xuICAgIGlmIChkaXJlY3QgJiYgIXJlZmVyZW5jZS5tZWRpYUlkKSB7XG4gICAgICByZXR1cm4gZGlyZWN0O1xuICAgIH1cbiAgICBpZiAoZGlyZWN0ICYmIHJlZmVyZW5jZS5tZWRpYUlkKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXNvbHZlVXJsKHJlZmVyZW5jZSwgc2lnbmFsKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZGlyZWN0O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVmZXJlbmNlLm1lZGlhSWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmVVcmwocmVmZXJlbmNlLCBzaWduYWwpO1xuICAgIH1cbiAgICBpZiAoZGlyZWN0KSB7XG4gICAgICByZXR1cm4gZGlyZWN0O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VwbG9hZCByZWZlcmVuY2UgaGFzIG5vIHVybCBvciBtZWRpYUlkJyk7XG4gIH1cblxuICBkZWxldGVNZWRpYShyZWZlcmVuY2U6IEFYVXBsb2FkUmVmZXJlbmNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5oYXNEZWxldGVNZWRpYUhhbmRsZXIoKSkge1xuICAgICAgICByZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ05vIGhhbmRsZXIgc3Vic2NyaWJlZCB0byBBWFVwbG9hZGVyU2VydmljZS5vbkRlbGV0ZU1lZGlhLiBQcm92aWRlIGEgc2VydmljZSB0aGF0IGhhbmRsZXMgZGVsZXRlIGV2ZW50cy4nLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub25EZWxldGVNZWRpYS5uZXh0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIHJlc29sdmUsXG4gICAgICAgIHJlamVjdCxcbiAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhc1VwbG9hZEhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub25VcGxvYWQub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGhhc1Jlc29sdmVVcmxIYW5kbGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9uUmVzb2x2ZVVybC5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRGVsZXRlTWVkaWFIYW5kbGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9uRGVsZXRlTWVkaWEub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBhc3luYyBhZGQoZmlsZXM6IEZpbGVMaXN0IHwgRmlsZVtdLCBvcHRpb25zPzogQVhVcGxvYWRlckFkZE9wdGlvbnMpOiBQcm9taXNlPEFYVXBsb2FkUmVxdWVzdFtdPiB7XG4gICAgY29uc3QgbGlzdCA9IEFycmF5LmZyb20oZmlsZXMpLm1hcCgoZikgPT4gbmV3IEFYVXBsb2FkUmVxdWVzdChmKSk7XG4gICAgYXdhaXQgdGhpcy5hcHBseUZpbGVUeXBlVmFsaWRhdGlvbihsaXN0LCBvcHRpb25zPy5maWxlVHlwZSk7XG5cbiAgICBjb25zdCBuZXdGaWxlcyA9IFsuLi50aGlzLl9maWxlcyQudmFsdWUsIC4uLmxpc3RdO1xuICAgIHRoaXMuX2ZpbGVzJC5uZXh0KG5ld0ZpbGVzKTtcbiAgICB2b2lkIHRoaXMuc3RhcnRVcGxvYWQoKTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgZmlsZSBkaWFsb2cgYW5kIHJldHVybnMgdmFsaWRhdGVkIGZpbGVzIHdpdGhvdXQgZW5xdWV1ZWluZyB1cGxvYWRzLlxuICAgKi9cbiAgYXN5bmMgY2hvb3NlRmlsZXMob3B0aW9uczogQVhVcGxvYWRlckJyb3dzZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8QVhVcGxvYWRlckNob29zZUZpbGVzUmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy5maWxlVHlwZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0FYVXBsb2FkZXJTZXJ2aWNlLmNob29zZUZpbGVzOiBmaWxlVHlwZSBpcyByZXF1aXJlZCBmb3IgdmFsaWRhdGVkIGZpbGUgc2VsZWN0aW9uLicpO1xuICAgICAgICByZXR1cm4geyBhY2NlcHRlZDogW10sIHJlamVjdGVkOiBbXSB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhY2NlcHQgPVxuICAgICAgICBvcHRpb25zLmFjY2VwdCA/PyAoYXdhaXQgdGhpcy5maWxlU2VydmljZS5nZXRBY2NlcHRBdHRyaWJ1dGUob3B0aW9ucy5maWxlVHlwZSkpO1xuXG4gICAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS5jaG9vc2VWYWxpZGF0ZWQoe1xuICAgICAgICBmaWxlVHlwZTogb3B0aW9ucy5maWxlVHlwZSxcbiAgICAgICAgbXVsdGlwbGU6IG9wdGlvbnMubXVsdGlwbGUgPz8gZmFsc2UsXG4gICAgICAgIGFjY2VwdCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGaWxlIGNob29zZSBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIHsgYWNjZXB0ZWQ6IFtdLCByZWplY3RlZDogW10gfTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBicm93c2Uob3B0aW9uczogQVhVcGxvYWRlckJyb3dzZU9wdGlvbnMgPSB7IG11bHRpcGxlOiBmYWxzZSB9KTogUHJvbWlzZTxBWFVwbG9hZFJlcXVlc3RbXT4ge1xuICAgIGNvbnN0IHsgYWNjZXB0ZWQgfSA9IGF3YWl0IHRoaXMuY2hvb3NlRmlsZXMob3B0aW9ucyk7XG4gICAgaWYgKCFhY2NlcHRlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWRkKGFjY2VwdGVkLCB7IGZpbGVUeXBlOiBvcHRpb25zLmZpbGVUeXBlIH0pO1xuICB9XG5cbiAgYXN5bmMgY2FuY2VsQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuX2ZpbGVzJC52YWx1ZS5maWx0ZXIoKGMpID0+IGMuc3RhdHVzKCkgIT09ICdjb21wbGV0ZWQnKS5tYXAoKGMpID0+IGMuY2FuY2VsKCkpKTtcbiAgfVxuXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlbWFpbmluZ0ZpbGVzID0gdGhpcy5fZmlsZXMkLnZhbHVlLmZpbHRlcigoYykgPT4gYy5zdGF0dXMoKSA9PT0gJ2lucHJvZ3Jlc3MnKTtcbiAgICB0aGlzLl9maWxlcyQubmV4dChyZW1haW5pbmdGaWxlcyk7XG4gIH1cblxuICByZW1vdmUoaXRlbTogQVhVcGxvYWRSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlZEZpbGVzID0gdGhpcy5fZmlsZXMkLnZhbHVlLmZpbHRlcigoYykgPT4gYyAhPT0gaXRlbSk7XG4gICAgdGhpcy5fZmlsZXMkLm5leHQodXBkYXRlZEZpbGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RhcnRVcGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmV3RmlsZXMgPSB0aGlzLl9maWxlcyQudmFsdWUuZmlsdGVyKChjKSA9PiBjLnN0YXR1cygpID09PSAnbmV3Jyk7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIG5ld0ZpbGVzKSB7XG4gICAgICBhd2FpdCB0aGlzLmJpbmRFdmVudHMoZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBiaW5kRXZlbnRzKGM6IEFYVXBsb2FkUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGMub25TdGFydC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkZpbGVVcGxvYWRTdGFydC5uZXh0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICB1cGxvYWRlZEZpbGU6IGMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgYy5vbkNvbXBsZXRlLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihjLCB7IG1ldGFEYXRhOiBkYXRhIH0pO1xuICAgICAgdGhpcy5vbkZpbGVVcGxvYWRDb21wbGV0ZS5uZXh0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICB1cGxvYWRlZEZpbGU6IGMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpc0FsbERvbmUgPSB0aGlzLl9maWxlcyQudmFsdWUuZXZlcnkoXG4gICAgICAgIChmKSA9PiBmLnN0YXR1cygpID09PSAnY29tcGxldGVkJyB8fCBmLnN0YXR1cygpID09PSAnY2FuY2VsZWQnIHx8IGYuc3RhdHVzKCkgPT09ICdmYWlsZWQnLFxuICAgICAgKTtcblxuICAgICAgaWYgKGlzQWxsRG9uZSkge1xuICAgICAgICB0aGlzLm9uRmlsZXNVcGxvYWRDb21wbGV0ZS5uZXh0KHtcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgICAgdXBsb2FkZWRGaWxlczogdGhpcy5fZmlsZXMkLnZhbHVlLFxuICAgICAgICAgIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjLm9uQ2FuY2VsLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm9uRmlsZVVwbG9hZENhbmNlbGVkLm5leHQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHVwbG9hZGVkRmlsZTogYyxcbiAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5RmlsZVR5cGVWYWxpZGF0aW9uKFxuICAgIHJlcXVlc3RzOiBBWFVwbG9hZFJlcXVlc3RbXSxcbiAgICBmaWxlVHlwZT86IHN0cmluZyB8IHN0cmluZ1tdLFxuICApOiBQcm9taXNlPEFYVXBsb2FkUmVxdWVzdFtdPiB7XG4gICAgaWYgKCFmaWxlVHlwZSkge1xuICAgICAgcmV0dXJuIHJlcXVlc3RzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVxdWVzdCBvZiByZXF1ZXN0cykge1xuICAgICAgY29uc3QgZXJyb3JzID0gYXdhaXQgdGhpcy5maWxlU2VydmljZS52YWxpZGF0ZShyZXF1ZXN0LmZpbGUsIGZpbGVUeXBlKTtcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXF1ZXN0LmVycm9yKGVycm9yc1swXT8ubWVzc2FnZSA/PyAnSW52YWxpZCBmaWxlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3RzO1xuICB9XG59XG4iXX0=","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, DOCUMENT, Directive, ElementRef, PLATFORM_ID, ViewContainerRef, inject, input, output, signal, } from '@angular/core';\nimport { bindUploaderZoneHost, unbindUploaderZoneHost } from './uploader-zone-host';\nimport { AXUploaderService } from './uploader.service';\nimport * as i0 from \"@angular/core\";\n/**\n * A directive that provides drag-and-drop and file upload functionality.\n * When applied to an element, it enables drag-and-drop file uploads and file browsing.\n * @category Directives\n */\nexport class AXUploaderZoneDirective {\n /**\n * Initializes the directive with event listeners and service subscriptions.\n */\n constructor() {\n /**\n * The element reference for the directive host.\n * @ignore\n */\n this.elementRef = inject(ElementRef);\n /**\n * View container reference for rendering custom templates.\n * @ignore\n */\n this.viewContainerRef = inject(ViewContainerRef);\n /**\n * Whether multiple files can be selected.\n * @defaultValue true\n */\n this.multiple = input(true, ...(ngDevMode ? [{ debugName: \"multiple\" }] : []));\n /**\n * File types that are accepted for upload.\n * @defaultValue null\n */\n this.accept = input(null, ...(ngDevMode ? [{ debugName: \"accept\" }] : []));\n /**\n * Logical file type name from {@link AXFileService} (e.g. `conversation-image`).\n * Required for browse handles and validated selection.\n */\n this.fileType = input(null, ...(ngDevMode ? [{ debugName: \"fileType\" }] : []));\n /**\n * Custom template for the drag overlay. If provided, this will be used instead of the default overlay.\n */\n this.overlayTemplate = input(...(ngDevMode ? [undefined, { debugName: \"overlayTemplate\" }] : []));\n /**\n * Whether browsing files by clicking on the container is disabled.\n * @defaultValue false\n */\n this.disableBrowse = input(false, ...(ngDevMode ? [{ debugName: \"disableBrowse\" }] : []));\n /**\n * Whether drag and drop functionality is disabled.\n * @defaultValue false\n */\n this.disableDragDrop = input(false, ...(ngDevMode ? [{ debugName: \"disableDragDrop\" }] : []));\n /**\n * Change detector reference.\n * @ignore\n */\n this.cdr = inject(ChangeDetectorRef);\n /**\n * Document reference.\n * @ignore\n */\n this.document = inject(DOCUMENT);\n /**\n * Platform ID for browser detection.\n * @ignore\n */\n this.platformID = inject(PLATFORM_ID);\n /**\n * Upload service instance.\n * @ignore\n */\n this.uploadService = inject(AXUploaderService);\n /**\n * Unsubscriber service instance.\n * @ignore\n */\n this.unsubscriber = inject(AXUnsubscriber);\n /**\n * Translation service instance.\n * @ignore\n */\n this.translateService = inject(AXTranslationService);\n /**\n * Embedded view reference for custom template.\n * @ignore\n */\n this.templateViewRef = null;\n /**\n * Emitted when files are selected or dropped (like HTML file input).\n * Emits an event with files property containing the selected files.\n */\n this.fileChange = output();\n /**\n * Emitted when files are changed (added, removed, etc.).\n * @deprecated Use fileChange instead for simpler file input-like behavior\n */\n this.onChanged = output();\n /**\n * Emitted on drag enter event.\n */\n this.dragEnter = output();\n /**\n * Emitted on drag leave event.\n */\n this.dragLeave = output();\n /**\n * Emitted on drag over event.\n */\n this.dragOver = output();\n /**\n * Emitted when a single file upload is completed.\n */\n this.onFileUploadComplete = output();\n /**\n * Emitted when all files upload is completed.\n */\n this.onFilesUploadComplete = output();\n /**\n * CSS class for the overlay state.\n * @ignore\n */\n this.stateClass = 'ax-uploader-overlay-state';\n /**\n * The overlay element for drag and drop visual feedback.\n * @ignore\n */\n this.overlayElement = null;\n /**\n * Flag to track if dragOver has been emitted for the current drag session.\n * @ignore\n */\n this.dragOverEmitted = signal(false, ...(ngDevMode ? [{ debugName: \"dragOverEmitted\" }] : []));\n /**\n * Counter to track drag enter/leave depth to prevent false dragleave events.\n * When moving from parent to child, dragleave fires even though we're still inside.\n * @ignore\n */\n this.dragDepth = signal(0, ...(ngDevMode ? [{ debugName: \"dragDepth\" }] : []));\n /**\n * Animation end handler for cleanup.\n * @ignore\n */\n this.animationEndHandler = null;\n this.element = this.elementRef.nativeElement;\n this.element.style.position = 'relative';\n bindUploaderZoneHost(this.element, this);\n //\n this.uploadService.onFileUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFileUploadComplete.emit(c);\n });\n this.uploadService.onFilesUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFilesUploadComplete.emit(c);\n });\n //\n setTimeout(() => {\n const browseHandlers = this.element.querySelectorAll('[data-ax-uploader-browse-handle=\"true\"]');\n if (browseHandlers.length <= 0 && !this.disableBrowse()) {\n this.element.addEventListener('click', this.browser.bind(this), true);\n }\n });\n if (!this.disableDragDrop()) {\n this.element.addEventListener('dragenter', this.handleDragEnter.bind(this), true);\n this.element.addEventListener('dragover', this.handleDragOver.bind(this), true);\n this.element.addEventListener('drop', this.handleOnDrop.bind(this), true);\n this.element.addEventListener('dragleave', (e) => this.removeZone(e), true);\n }\n }\n /**\n * Cleans up event listeners when the directive is destroyed.\n */\n ngOnDestroy() {\n unbindUploaderZoneHost(this.element);\n this.element.removeEventListener('click', this.browser.bind(this));\n this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.removeEventListener('drop', this.handleOnDrop.bind(this));\n this.element.removeEventListener('dragover', this.handleDragOver.bind(this));\n this.element.removeEventListener('dragleave', this.removeZone.bind(this));\n }\n /**\n * Handles drag enter events to show the upload overlay.\n * @private\n */\n async handleDragEnter(event) {\n if (this.disableDragDrop())\n return;\n this.dragOverEmitted.set(false); // Reset flag when entering\n this.dragDepth.update((depth) => depth + 1); // Increment depth counter\n // Only create overlay on first enter (when depth is 1)\n if (this.dragDepth() === 1) {\n // Cancel any pending exit animation\n this.cancelExitAnimation();\n await this.createZone();\n this.dragEnter.emit(event);\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n /**\n * Handles drop events to process dropped files.\n * @private\n */\n async handleOnDrop(event) {\n if (this.disableDragDrop())\n return;\n event.preventDefault();\n event.stopImmediatePropagation();\n // Reset drag depth on drop\n this.dragDepth.set(0);\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n let files = Array.from(event.dataTransfer.files);\n let rejected;\n const catalog = this.fileType();\n if (catalog) {\n const result = await this.uploadService.validateFiles(files, catalog);\n files = result.accepted;\n rejected = result.rejected;\n }\n this.fileChange.emit({ event, files, rejected });\n if (!this.disableBrowse()) {\n const requests = await this.uploadService.add(files, { fileType: catalog ?? undefined });\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n }\n this.removeZone();\n this.cdr.detectChanges();\n }\n /**\n * Handles drag over events to allow dropping.\n * @private\n */\n handleDragOver(event) {\n if (this.disableDragDrop())\n return;\n // Only emit dragOver once per drag session to avoid spam\n if (!this.dragOverEmitted()) {\n this.dragOverEmitted.set(true);\n this.dragOver.emit(event);\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n /**\n * Creates the visual overlay for drag and drop feedback.\n * @private\n */\n async createZone() {\n if (isPlatformBrowser(this.platformID)) {\n // Check if overlay already exists (might be exiting)\n let existingOverlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n // Verify the overlay is actually in the DOM (not removed after animation)\n if (existingOverlay && existingOverlay.parentNode === this.element) {\n // Remove exiting class to cancel exit animation and show overlay again\n existingOverlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up any pending animation handler\n if (this.animationEndHandler) {\n existingOverlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n // Reset overlayElement reference if it was cleared\n if (!this.overlayElement && existingOverlay) {\n this.overlayElement = existingOverlay;\n }\n return;\n }\n else if (existingOverlay && existingOverlay.parentNode !== this.element) {\n // Overlay exists but is not in the DOM, clear the reference\n this.overlayElement = null;\n existingOverlay = null;\n }\n // Check if custom template is provided\n const template = this.overlayTemplate();\n if (template) {\n // Create container for template\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n // Create embedded view from template (will be inserted at directive anchor)\n this.viewContainerRef.clear();\n this.templateViewRef = this.viewContainerRef.createEmbeddedView(template);\n this.templateViewRef.detectChanges();\n // Get root nodes and move them to overlay element\n const rootNodes = this.templateViewRef.rootNodes;\n for (const node of rootNodes) {\n // Remove from current location if it has a parent\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n this.overlayElement.appendChild(node);\n }\n // Detach the view since we've moved the nodes\n this.templateViewRef.detach();\n this.element.appendChild(this.overlayElement);\n this.cdr.detectChanges();\n return;\n }\n // Use default overlay\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n const icon = this.document.createElement('span');\n icon.classList.add('ax-icon', 'ax-icon-upload');\n const text = this.document.createElement('span');\n text.innerText = await this.translateService.translateAsync('@acorex:uploader.zone.text');\n this.overlayElement.appendChild(icon);\n this.overlayElement.appendChild(text);\n this.element.appendChild(this.overlayElement);\n }\n }\n /**\n * Cancels any pending exit animation and cleans up handlers.\n * @private\n */\n cancelExitAnimation() {\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n if (overlay && this.animationEndHandler) {\n // Remove exiting class to cancel animation\n overlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up the handler\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n }\n }\n /**\n * Removes the visual overlay for drag and drop feedback.\n * @private\n */\n removeZone(event) {\n if (this.disableDragDrop())\n return;\n this.dragDepth.update((depth) => Math.max(0, depth - 1)); // Decrement depth counter, ensure non-negative\n // Only remove overlay when we've truly left the drop zone (depth reaches 0)\n if (this.dragDepth() <= 0) {\n this.dragDepth.set(0); // Ensure it's exactly 0\n this.dragOverEmitted.set(false); // Reset flag when leaving\n if (event) {\n this.dragLeave.emit(event);\n }\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n if (overlay) {\n // Clean up any existing handler first\n if (this.animationEndHandler) {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n }\n // Add exiting class to trigger CSS animation\n overlay.classList.add('ax-uploader-overlay-exiting');\n // Wait for CSS animation to complete\n this.animationEndHandler = (e) => {\n if (e.target === overlay && e.animationName === 'fadeOutScale') {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n if (overlay.parentNode === this.element) {\n this.element.removeChild(overlay);\n }\n if (this.overlayElement && this.overlayElement.parentNode) {\n this.overlayElement.remove();\n }\n // Clear the overlay element reference\n this.overlayElement = null;\n // Remove custom template view if it exists\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n };\n overlay.addEventListener('animationend', this.animationEndHandler);\n }\n else {\n // If overlay doesn't exist, just clean up template view\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n }\n }\n }\n /**\n * Opens the file browser dialog and processes selected files.\n * @returns Promise that resolves when files are processed\n */\n async browser() {\n const catalog = this.fileType();\n let selected = [];\n let rejected;\n if (catalog) {\n const accept = this.accept() ?? (await this.uploadService.getAcceptAttribute(catalog));\n const result = await this.uploadService.chooseFiles({\n fileType: catalog,\n multiple: this.multiple(),\n accept,\n });\n selected = result.accepted;\n rejected = result.rejected;\n }\n else if (!this.disableBrowse()) {\n const requests = await this.uploadService.browse({\n accept: this.accept() ?? undefined,\n multiple: this.multiple(),\n });\n selected = requests.map((r) => r.file);\n }\n else {\n console.warn('AXUploaderZone.browser: fileType is required when disableBrowse is enabled (use axUploaderBrowseHandle).');\n return;\n }\n if (selected.length === 0 && !(rejected?.length ?? 0)) {\n return;\n }\n const syntheticEvent = new Event('change');\n const target = Object.create(EventTarget.prototype);\n target.files = selected;\n Object.defineProperty(syntheticEvent, 'target', { value: target, writable: false });\n this.fileChange.emit({\n event: syntheticEvent,\n files: selected,\n rejected,\n });\n if (this.disableBrowse()) {\n return;\n }\n const requests = catalog\n ? await this.uploadService.add(selected, { fileType: catalog })\n : await this.uploadService.add(selected);\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderZoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXUploaderZoneDirective, isStandalone: true, selector: \"[axUploaderZone]\", inputs: { multiple: { classPropertyName: \"multiple\", publicName: \"multiple\", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: \"accept\", publicName: \"accept\", isSignal: true, isRequired: false, transformFunction: null }, fileType: { classPropertyName: \"fileType\", publicName: \"fileType\", isSignal: true, isRequired: false, transformFunction: null }, overlayTemplate: { classPropertyName: \"overlayTemplate\", publicName: \"overlayTemplate\", isSignal: true, isRequired: false, transformFunction: null }, disableBrowse: { classPropertyName: \"disableBrowse\", publicName: \"disableBrowse\", isSignal: true, isRequired: false, transformFunction: null }, disableDragDrop: { classPropertyName: \"disableDragDrop\", publicName: \"disableDragDrop\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileChange: \"fileChange\", onChanged: \"onChanged\", dragEnter: \"dragEnter\", dragLeave: \"dragLeave\", dragOver: \"dragOver\", onFileUploadComplete: \"onFileUploadComplete\", onFilesUploadComplete: \"onFilesUploadComplete\" }, host: { classAttribute: \"ax-drop-zone\" }, providers: [AXUnsubscriber], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderZoneDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axUploaderZone]',\n providers: [AXUnsubscriber],\n host: {\n class: 'ax-drop-zone',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXItem9uZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdXBsb2FkZXIvc3JjL2xpYi91cGxvYWRlci16b25lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFHVixXQUFXLEVBRVgsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFdkQ7Ozs7R0FJRztBQVFILE1BQU0sT0FBTyx1QkFBdUI7SUFvS2xDOztPQUVHO0lBQ0g7UUF0S0E7OztXQUdHO1FBQ0ssZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4Qzs7O1dBR0c7UUFDSyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVwRDs7O1dBR0c7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksb0RBQUMsQ0FBQztRQUV2Qjs7O1dBR0c7UUFDSCxXQUFNLEdBQUcsS0FBSyxDQUFnQixJQUFJLGtEQUFDLENBQUM7UUFFcEM7OztXQUdHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxvREFBQyxDQUFDO1FBRXRDOztXQUVHO1FBQ0gsb0JBQWUs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LEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXBGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLEtBQUssRUFBRSxjQUFjO1lBQ3JCLEtBQUssRUFBRSxRQUFRO1lBQ2YsUUFBUTtTQUNULENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPO1lBQ3RCLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMvRCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVE7Z0JBQ1IsaUJBQWlCLEVBQUUsSUFBSTthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0E1ZlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsaXBDQUx2QixDQUFDLGNBQWMsQ0FBQzs7MkZBS2hCLHVCQUF1QjtrQkFQbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzNCLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsY0FBYztxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRE9DVU1FTlQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBPbkRlc3Ryb3ksXG4gIFBMQVRGT1JNX0lELFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhVcGxvYWRlckNoYW5nZWRFdmVudCxcbiAgQVhVcGxvYWRlckZpbGVDaGFuZ2VFdmVudCxcbiAgQVhVcGxvYWRlckZpbGVDb21wbGV0ZUV2ZW50LFxuICBBWFVwbG9hZGVyRmlsZXNDb21wbGV0ZUV2ZW50LFxufSBmcm9tICcuL3VwbG9hZGVyLm1vZGVscyc7XG5pbXBvcnQgeyBiaW5kVXBsb2FkZXJab25lSG9zdCwgdW5iaW5kVXBsb2FkZXJab25lSG9zdCB9IGZyb20gJy4vdXBsb2FkZXItem9uZS1ob3N0JztcbmltcG9ydCB7IEFYVXBsb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi91cGxvYWRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHByb3ZpZGVzIGRyYWctYW5kLWRyb3AgYW5kIGZpbGUgdXBsb2FkIGZ1bmN0aW9uYWxpdHkuXG4gKiBXaGVuIGFwcGxpZWQgdG8gYW4gZWxlbWVudCwgaXQgZW5hYmxlcyBkcmFnLWFuZC1kcm9wIGZpbGUgdXBsb2FkcyBhbmQgZmlsZSBicm93c2luZy5cbiAqIEBjYXRlZ29yeSBEaXJlY3RpdmVzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theFVwbG9hZGVyWm9uZV0nLFxuICBwcm92aWRlcnM6IFtBWFVuc3Vic2NyaWJlcl0sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2F4LWRyb3Atem9uZScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYVXBsb2FkZXJab25lRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHJlZmVyZW5jZSBmb3IgdGhlIGRpcmVjdGl2ZSBob3N0LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLyoqXG4gICAqIFZpZXcgY29udGFpbmVyIHJlZmVyZW5jZSBmb3IgcmVuZGVyaW5nIGN1c3RvbSB0ZW1wbGF0ZXMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICAvKipcbiAgICogV2hldGhlciBtdWx0aXBsZSBmaWxlcyBjYW4gYmUgc2VsZWN0ZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgbXVsdGlwbGUgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogRmlsZSB0eXBlcyB0aGF0IGFyZSBhY2NlcHRlZCBmb3IgdXBsb2FkLlxuICAgKiBAZGVmYXVsdFZhbHVlIG51bGxcbiAgICovXG4gIGFjY2VwdCA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGZpbGUgdHlwZSBuYW1lIGZyb20ge0BsaW5rIEFYRmlsZVNlcnZpY2V9IChlLmcuIGBjb252ZXJzYXRpb24taW1hZ2VgKS5cbiAgICogUmVxdWlyZWQgZm9yIGJyb3dzZSBoYW5kbGVzIGFuZCB2YWxpZGF0ZWQgc2VsZWN0aW9uLlxuICAgKi9cbiAgZmlsZVR5cGUgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgZHJhZyBvdmVybGF5LiBJZiBwcm92aWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvdmVybGF5LlxuICAgKi9cbiAgb3ZlcmxheVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYnJvd3NpbmcgZmlsZXMgYnkgY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUJyb3dzZSA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogV2hldGhlciBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9uYWxpdHkgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIGRpc2FibGVEcmFnRHJvcCA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQ2hhbmdlIGRldGVjdG9yIHJlZmVyZW5jZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudCByZWZlcmVuY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8qKlxuICAgKiBQbGF0Zm9ybSBJRCBmb3IgYnJvd3NlciBkZXRlY3Rpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqIFVwbG9hZCBzZXJ2aWNlIGluc3RhbmNlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHVwbG9hZFNlcnZpY2UgPSBpbmplY3QoQVhVcGxvYWRlclNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZXIgc2VydmljZSBpbnN0YW5jZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGlvbiBzZXJ2aWNlIGluc3RhbmNlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdCBlbGVtZW50LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBFbWJlZGRlZCB2aWV3IHJlZmVyZW5jZSBmb3IgY3VzdG9tIHRlbXBsYXRlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHRlbXBsYXRlVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBmaWxlcyBhcmUgc2VsZWN0ZWQgb3IgZHJvcHBlZCAobGlrZSBIVE1MIGZpbGUgaW5wdXQpLlxuICAgKiBFbWl0cyBhbiBldmVudCB3aXRoIGZpbGVzIHByb3BlcnR5IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIGZpbGVzLlxuICAgKi9cbiAgZmlsZUNoYW5nZSA9IG91dHB1dDxBWFVwbG9hZGVyRmlsZUNoYW5nZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gZmlsZXMgYXJlIGNoYW5nZWQgKGFkZGVkLCByZW1vdmVkLCBldGMuKS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGZpbGVDaGFuZ2UgaW5zdGVhZCBmb3Igc2ltcGxlciBmaWxlIGlucHV0LWxpa2UgYmVoYXZpb3JcbiAgICovXG4gIG9uQ2hhbmdlZCA9IG91dHB1dDxBWFVwbG9hZGVyQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGRyYWcgZW50ZXIgZXZlbnQuXG4gICAqL1xuICBkcmFnRW50ZXIgPSBvdXRwdXQ8RHJhZ0V2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGRyYWcgbGVhdmUgZXZlbnQuXG4gICAqL1xuICBkcmFnTGVhdmUgPSBvdXRwdXQ8RHJhZ0V2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGRyYWcgb3ZlciBldmVudC5cbiAgICovXG4gIGRyYWdPdmVyID0gb3V0cHV0PERyYWdFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgc2luZ2xlIGZpbGUgdXBsb2FkIGlzIGNvbXBsZXRlZC5cbiAgICovXG4gIG9uRmlsZVVwbG9hZENvbXBsZXRlID0gb3V0cHV0PEFYVXBsb2FkZXJGaWxlQ29tcGxldGVFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFsbCBmaWxlcyB1cGxvYWQgaXMgY29tcGxldGVkLlxuICAgKi9cbiAgb25GaWxlc1VwbG9hZENvbXBsZXRlID0gb3V0cHV0PEFYVXBsb2FkZXJGaWxlc0NvbXBsZXRlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyBmb3IgdGhlIG92ZXJsYXkgc3RhdGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHN0YXRlQ2xhc3MgPSAnYXgtdXBsb2FkZXItb3ZlcmxheS1zdGF0ZSc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdmVybGF5IGVsZW1lbnQgZm9yIGRyYWcgYW5kIGRyb3AgdmlzdWFsIGZlZWRiYWNrLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvdmVybGF5RWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogRmxhZyB0byB0cmFjayBpZiBkcmFnT3ZlciBoYXMgYmVlbiBlbWl0dGVkIGZvciB0aGUgY3VycmVudCBkcmFnIHNlc3Npb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZHJhZ092ZXJFbWl0dGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogQ291bnRlciB0byB0cmFjayBkcmFnIGVudGVyL2xlYXZlIGRlcHRoIHRvIHByZXZlbnQgZmFsc2UgZHJhZ2xlYXZlIGV2ZW50cy5cbiAgICogV2hlbiBtb3ZpbmcgZnJvbSBwYXJlbnQgdG8gY2hpbGQsIGRyYWdsZWF2ZSBmaXJlcyBldmVuIHRob3VnaCB3ZSdyZSBzdGlsbCBpbnNpZGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZHJhZ0RlcHRoID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiBBbmltYXRpb24gZW5kIGhhbmRsZXIgZm9yIGNsZWFudXAuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgYW5pbWF0aW9uRW5kSGFuZGxlcjogKChlOiBBbmltYXRpb25FdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGRpcmVjdGl2ZSB3aXRoIGV2ZW50IGxpc3RlbmVycyBhbmQgc2VydmljZSBzdWJzY3JpcHRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICBiaW5kVXBsb2FkZXJab25lSG9zdCh0aGlzLmVsZW1lbnQsIHRoaXMpO1xuXG4gICAgLy9cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2Uub25GaWxlVXBsb2FkQ29tcGxldGUucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIHRoaXMub25GaWxlVXBsb2FkQ29tcGxldGUuZW1pdChjKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5vbkZpbGVzVXBsb2FkQ29tcGxldGUucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIHRoaXMub25GaWxlc1VwbG9hZENvbXBsZXRlLmVtaXQoYyk7XG4gICAgfSk7XG4gICAgLy9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGJyb3dzZUhhbmRsZXJzID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWF4LXVwbG9hZGVyLWJyb3dzZS1oYW5kbGU9XCJ0cnVlXCJdJyk7XG4gICAgICBpZiAoYnJvd3NlSGFuZGxlcnMubGVuZ3RoIDw9IDAgJiYgIXRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuYnJvd3Nlci5iaW5kKHRoaXMpLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlRHJhZ0Ryb3AoKSkge1xuICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuaGFuZGxlRHJhZ0VudGVyLmJpbmQodGhpcyksIHRydWUpO1xuICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5oYW5kbGVEcmFnT3Zlci5iaW5kKHRoaXMpLCB0cnVlKTtcbiAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5oYW5kbGVPbkRyb3AuYmluZCh0aGlzKSwgdHJ1ZSk7XG4gICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGUpID0+IHRoaXMucmVtb3ZlWm9uZShlIGFzIERyYWdFdmVudCksIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnMgdXAgZXZlbnQgbGlzdGVuZXJzIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBkZXN0cm95ZWQuXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB1bmJpbmRVcGxvYWRlclpvbmVIb3N0KHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5icm93c2VyLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuaGFuZGxlRHJhZ0VudGVyLmJpbmQodGhpcykpO1xuICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5oYW5kbGVPbkRyb3AuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5oYW5kbGVEcmFnT3Zlci5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5yZW1vdmVab25lLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZHJhZyBlbnRlciBldmVudHMgdG8gc2hvdyB0aGUgdXBsb2FkIG92ZXJsYXkuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGhhbmRsZURyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZURyYWdEcm9wKCkpIHJldHVybjtcbiAgICB0aGlzLmRyYWdPdmVyRW1pdHRlZC5zZXQoZmFsc2UpOyAvLyBSZXNldCBmbGFnIHdoZW4gZW50ZXJpbmdcbiAgICB0aGlzLmRyYWdEZXB0aC51cGRhdGUoKGRlcHRoKSA9PiBkZXB0aCArIDEpOyAvLyBJbmNyZW1lbnQgZGVwdGggY291bnRlclxuXG4gICAgLy8gT25seSBjcmVhdGUgb3ZlcmxheSBvbiBmaXJzdCBlbnRlciAod2hlbiBkZXB0aCBpcyAxKVxuICAgIGlmICh0aGlzLmRyYWdEZXB0aCgpID09PSAxKSB7XG4gICAgICAvLyBDYW5jZWwgYW55IHBlbmRpbmcgZXhpdCBhbmltYXRpb25cbiAgICAgIHRoaXMuY2FuY2VsRXhpdEFuaW1hdGlvbigpO1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVab25lKCk7XG4gICAgICB0aGlzLmRyYWdFbnRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZHJvcCBldmVudHMgdG8gcHJvY2VzcyBkcm9wcGVkIGZpbGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVPbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnRHJvcCgpKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIFJlc2V0IGRyYWcgZGVwdGggb24gZHJvcFxuICAgIHRoaXMuZHJhZ0RlcHRoLnNldCgwKTtcblxuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgZmlsZXMgPSBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgICBsZXQgcmVqZWN0ZWQ6IEFYVXBsb2FkZXJGaWxlQ2hhbmdlRXZlbnRbJ3JlamVjdGVkJ107XG4gICAgICBjb25zdCBjYXRhbG9nID0gdGhpcy5maWxlVHlwZSgpO1xuXG4gICAgICBpZiAoY2F0YWxvZykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UudmFsaWRhdGVGaWxlcyhmaWxlcywgY2F0YWxvZyk7XG4gICAgICAgIGZpbGVzID0gcmVzdWx0LmFjY2VwdGVkO1xuICAgICAgICByZWplY3RlZCA9IHJlc3VsdC5yZWplY3RlZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQoeyBldmVudCwgZmlsZXMsIHJlamVjdGVkIH0pO1xuXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RzID0gYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLmFkZChmaWxlcywgeyBmaWxlVHlwZTogY2F0YWxvZyA/PyB1bmRlZmluZWQgfSk7XG4gICAgICAgIGlmIChyZXF1ZXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgICAgICByZXF1ZXN0cyxcbiAgICAgICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVab25lKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZHJhZyBvdmVyIGV2ZW50cyB0byBhbGxvdyBkcm9wcGluZy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnRHJvcCgpKSByZXR1cm47XG4gICAgLy8gT25seSBlbWl0IGRyYWdPdmVyIG9uY2UgcGVyIGRyYWcgc2Vzc2lvbiB0byBhdm9pZCBzcGFtXG4gICAgaWYgKCF0aGlzLmRyYWdPdmVyRW1pdHRlZCgpKSB7XG4gICAgICB0aGlzLmRyYWdPdmVyRW1pdHRlZC5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmRyYWdPdmVyLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHZpc3VhbCBvdmVybGF5IGZvciBkcmFnIGFuZCBkcm9wIGZlZWRiYWNrLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVab25lKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAvLyBDaGVjayBpZiBvdmVybGF5IGFscmVhZHkgZXhpc3RzIChtaWdodCBiZSBleGl0aW5nKVxuICAgICAgbGV0IGV4aXN0aW5nT3ZlcmxheSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F4LXVwbG9hZGVyLW92ZXJsYXktc3RhdGUnKSB8fCB0aGlzLm92ZXJsYXlFbGVtZW50O1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIG92ZXJsYXkgaXMgYWN0dWFsbHkgaW4gdGhlIERPTSAobm90IHJlbW92ZWQgYWZ0ZXIgYW5pbWF0aW9uKVxuICAgICAgaWYgKGV4aXN0aW5nT3ZlcmxheSAmJiBleGlzdGluZ092ZXJsYXkucGFyZW50Tm9kZSA9PT0gdGhpcy5lbGVtZW50KSB7XG4gICAgICAgIC8vIFJlbW92ZSBleGl0aW5nIGNsYXNzIHRvIGNhbmNlbCBleGl0IGFuaW1hdGlvbiBhbmQgc2hvdyBvdmVybGF5IGFnYWluXG4gICAgICAgIGV4aXN0aW5nT3ZlcmxheS5jbGFzc0xpc3QucmVtb3ZlKCdheC11cGxvYWRlci1vdmVybGF5LWV4aXRpbmcnKTtcbiAgICAgICAgLy8gQ2xlYW4gdXAgYW55IHBlbmRpbmcgYW5pbWF0aW9uIGhhbmRsZXJcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRW5kSGFuZGxlcikge1xuICAgICAgICAgIGV4aXN0aW5nT3ZlcmxheS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIpO1xuICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRW5kSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzZXQgb3ZlcmxheUVsZW1lbnQgcmVmZXJlbmNlIGlmIGl0IHdhcyBjbGVhcmVkXG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5RWxlbWVudCAmJiBleGlzdGluZ092ZXJsYXkpIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlFbGVtZW50ID0gZXhpc3RpbmdPdmVybGF5IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoZXhpc3RpbmdPdmVybGF5ICYmIGV4aXN0aW5nT3ZlcmxheS5wYXJlbnROb2RlICE9PSB0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgLy8gT3ZlcmxheSBleGlzdHMgYnV0IGlzIG5vdCBpbiB0aGUgRE9NLCBjbGVhciB0aGUgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBleGlzdGluZ092ZXJsYXkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXN0b20gdGVtcGxhdGUgaXMgcHJvdmlkZWRcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5vdmVybGF5VGVtcGxhdGUoKTtcbiAgICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICAvLyBDcmVhdGUgY29udGFpbmVyIGZvciB0ZW1wbGF0ZVxuICAgICAgICB0aGlzLm92ZXJsYXlFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJywgJy1heC16LTEnKTtcbiAgICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5pZCA9ICdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJztcblxuICAgICAgICAvLyBDcmVhdGUgZW1iZWRkZWQgdmlldyBmcm9tIHRlbXBsYXRlICh3aWxsIGJlIGluc2VydGVkIGF0IGRpcmVjdGl2ZSBhbmNob3IpXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGUpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgLy8gR2V0IHJvb3Qgbm9kZXMgYW5kIG1vdmUgdGhlbSB0byBvdmVybGF5IGVsZW1lbnRcbiAgICAgICAgY29uc3Qgcm9vdE5vZGVzID0gdGhpcy50ZW1wbGF0ZVZpZXdSZWYucm9vdE5vZGVzO1xuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygcm9vdE5vZGVzKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGZyb20gY3VycmVudCBsb2NhdGlvbiBpZiBpdCBoYXMgYSBwYXJlbnRcbiAgICAgICAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRhY2ggdGhlIHZpZXcgc2luY2Ugd2UndmUgbW92ZWQgdGhlIG5vZGVzXG4gICAgICAgIHRoaXMudGVtcGxhdGVWaWV3UmVmLmRldGFjaCgpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXlFbGVtZW50KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFVzZSBkZWZhdWx0IG92ZXJsYXlcbiAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJywgJy1heC16LTEnKTtcbiAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQuaWQgPSAnYXgtdXBsb2FkZXItb3ZlcmxheS1zdGF0ZSc7XG5cbiAgICAgIGNvbnN0IGljb246IEhUTUxTcGFuRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdheC1pY29uJywgJ2F4LWljb24tdXBsb2FkJyk7XG5cbiAgICAgIGNvbnN0IHRleHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHRleHQuaW5uZXJUZXh0ID0gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OnVwbG9hZGVyLnpvbmUudGV4dCcpO1xuXG4gICAgICB0aGlzLm92ZXJsYXlFbGVtZW50LmFwcGVuZENoaWxkKGljb24pO1xuICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0KTtcblxuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIGFueSBwZW5kaW5nIGV4aXQgYW5pbWF0aW9uIGFuZCBjbGVhbnMgdXAgaGFuZGxlcnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNhbmNlbEV4aXRBbmltYXRpb24oKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJykgfHwgdGhpcy5vdmVybGF5RWxlbWVudDtcblxuICAgICAgaWYgKG92ZXJsYXkgJiYgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKSB7XG4gICAgICAgIC8vIFJlbW92ZSBleGl0aW5nIGNsYXNzIHRvIGNhbmNlbCBhbmltYXRpb25cbiAgICAgICAgb3ZlcmxheS5jbGFzc0xpc3QucmVtb3ZlKCdheC11cGxvYWRlci1vdmVybGF5LWV4aXRpbmcnKTtcbiAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIGhhbmRsZXJcbiAgICAgICAgb3ZlcmxheS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIpO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSB2aXN1YWwgb3ZlcmxheSBmb3IgZHJhZyBhbmQgZHJvcCBmZWVkYmFjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlWm9uZShldmVudD86IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnRHJvcCgpKSByZXR1cm47XG4gICAgdGhpcy5kcmFnRGVwdGgudXBkYXRlKChkZXB0aCkgPT4gTWF0aC5tYXgoMCwgZGVwdGggLSAxKSk7IC8vIERlY3JlbWVudCBkZXB0aCBjb3VudGVyLCBlbnN1cmUgbm9uLW5lZ2F0aXZlXG5cbiAgICAvLyBPbmx5IHJlbW92ZSBvdmVybGF5IHdoZW4gd2UndmUgdHJ1bHkgbGVmdCB0aGUgZHJvcCB6b25lIChkZXB0aCByZWFjaGVzIDApXG4gICAgaWYgKHRoaXMuZHJhZ0RlcHRoKCkgPD0gMCkge1xuICAgICAgdGhpcy5kcmFnRGVwdGguc2V0KDApOyAvLyBFbnN1cmUgaXQncyBleGFjdGx5IDBcbiAgICAgIHRoaXMuZHJhZ092ZXJFbWl0dGVkLnNldChmYWxzZSk7IC8vIFJlc2V0IGZsYWcgd2hlbiBsZWF2aW5nXG5cbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICB0aGlzLmRyYWdMZWF2ZS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F4LXVwbG9hZGVyLW92ZXJsYXktc3RhdGUnKSB8fCB0aGlzLm92ZXJsYXlFbGVtZW50O1xuXG4gICAgICAgIGlmIChvdmVybGF5KSB7XG4gICAgICAgICAgLy8gQ2xlYW4gdXAgYW55IGV4aXN0aW5nIGhhbmRsZXIgZmlyc3RcbiAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKSB7XG4gICAgICAgICAgICBvdmVybGF5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uRW5kSGFuZGxlcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWRkIGV4aXRpbmcgY2xhc3MgdG8gdHJpZ2dlciBDU1MgYW5pbWF0aW9uXG4gICAgICAgICAgb3ZlcmxheS5jbGFzc0xpc3QuYWRkKCdheC11cGxvYWRlci1vdmVybGF5LWV4aXRpbmcnKTtcblxuICAgICAgICAgIC8vIFdhaXQgZm9yIENTUyBhbmltYXRpb24gdG8gY29tcGxldGVcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIgPSAoZTogQW5pbWF0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChlLnRhcmdldCA9PT0gb3ZlcmxheSAmJiBlLmFuaW1hdGlvbk5hbWUgPT09ICdmYWRlT3V0U2NhbGUnKSB7XG4gICAgICAgICAgICAgIG92ZXJsYXkucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKTtcbiAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyID0gbnVsbDtcblxuICAgICAgICAgICAgICBpZiAob3ZlcmxheS5wYXJlbnROb2RlID09PSB0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheUVsZW1lbnQgJiYgdGhpcy5vdmVybGF5RWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBvdmVybGF5IGVsZW1lbnQgcmVmZXJlbmNlXG4gICAgICAgICAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSBudWxsO1xuXG4gICAgICAgICAgICAgIC8vIFJlbW92ZSBjdXN0b20gdGVtcGxhdGUgdmlldyBpZiBpdCBleGlzdHNcbiAgICAgICAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVZpZXdSZWYgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIG92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBvdmVybGF5IGRvZXNuJ3QgZXhpc3QsIGp1c3QgY2xlYW4gdXAgdGVtcGxhdGUgdmlld1xuICAgICAgICAgIGlmICh0aGlzLnRlbXBsYXRlVmlld1JlZikge1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBmaWxlIGJyb3dzZXIgZGlhbG9nIGFuZCBwcm9jZXNzZXMgc2VsZWN0ZWQgZmlsZXMuXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGZpbGVzIGFyZSBwcm9jZXNzZWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBicm93c2VyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhdGFsb2cgPSB0aGlzLmZpbGVUeXBlKCk7XG4gICAgbGV0IHNlbGVjdGVkOiBGaWxlW10gPSBbXTtcbiAgICBsZXQgcmVqZWN0ZWQ6IEFYVXBsb2FkZXJGaWxlQ2hhbmdlRXZlbnRbJ3JlamVjdGVkJ107XG5cbiAgICBpZiAoY2F0YWxvZykge1xuICAgICAgY29uc3QgYWNjZXB0ID0gdGhpcy5hY2NlcHQoKSA/PyAoYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLmdldEFjY2VwdEF0dHJpYnV0ZShjYXRhbG9nKSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UuY2hvb3NlRmlsZXMoe1xuICAgICAgICBmaWxlVHlwZTogY2F0YWxvZyxcbiAgICAgICAgbXVsdGlwbGU6IHRoaXMubXVsdGlwbGUoKSxcbiAgICAgICAgYWNjZXB0LFxuICAgICAgfSk7XG4gICAgICBzZWxlY3RlZCA9IHJlc3VsdC5hY2NlcHRlZDtcbiAgICAgIHJlamVjdGVkID0gcmVzdWx0LnJlamVjdGVkO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICBjb25zdCByZXF1ZXN0cyA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS5icm93c2Uoe1xuICAgICAgICBhY2NlcHQ6IHRoaXMuYWNjZXB0KCkgPz8gdW5kZWZpbmVkLFxuICAgICAgICBtdWx0aXBsZTogdGhpcy5tdWx0aXBsZSgpLFxuICAgICAgfSk7XG4gICAgICBzZWxlY3RlZCA9IHJlcXVlc3RzLm1hcCgocikgPT4gci5maWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnQVhVcGxvYWRlclpvbmUuYnJvd3NlcjogZmlsZVR5cGUgaXMgcmVxdWlyZWQgd2hlbiBkaXNhYmxlQnJvd3NlIGlzIGVuYWJsZWQgKHVzZSBheFVwbG9hZGVyQnJvd3NlSGFuZGxlKS4nLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwICYmICEocmVqZWN0ZWQ/Lmxlbmd0aCA/PyAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnKTtcbiAgICBjb25zdCB0YXJnZXQgPSBPYmplY3QuY3JlYXRlKEV2ZW50VGFyZ2V0LnByb3RvdHlwZSkgYXMgRXZlbnRUYXJnZXQgJiB7IGZpbGVzOiBGaWxlW10gfTtcbiAgICB0YXJnZXQuZmlsZXMgPSBzZWxlY3RlZDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ludGhldGljRXZlbnQsICd0YXJnZXQnLCB7IHZhbHVlOiB0YXJnZXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcblxuICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHtcbiAgICAgIGV2ZW50OiBzeW50aGV0aWNFdmVudCxcbiAgICAgIGZpbGVzOiBzZWxlY3RlZCxcbiAgICAgIHJlamVjdGVkLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdHMgPSBjYXRhbG9nXG4gICAgICA/IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS5hZGQoc2VsZWN0ZWQsIHsgZmlsZVR5cGU6IGNhdGFsb2cgfSlcbiAgICAgIDogYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLmFkZChzZWxlY3RlZCk7XG5cbiAgICBpZiAocmVxdWVzdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgcmVxdWVzdHMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, PLATFORM_ID, inject } from '@angular/core';\nimport { findUploaderZoneFromDom } from './uploader-zone-host';\nimport { AXUploaderZoneDirective } from './uploader-zone.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * Triggers the nearest {@link AXUploaderZoneDirective} file dialog on click.\n * Resolves the zone via DI when possible, otherwise walks the DOM (supports content projection).\n * @category Directives\n */\nexport class AXUploaderBrowseDirective {\n constructor() {\n this.elementRef = inject(ElementRef);\n this.platformID = inject(PLATFORM_ID);\n /** When browse + zone share the same host element. */\n this.zoneFromInjector = inject(AXUploaderZoneDirective, { optional: true, self: true });\n this.onClick = () => {\n void this.handleClick();\n };\n }\n ngOnInit() {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const element = this.elementRef.nativeElement;\n element.addEventListener('click', this.onClick);\n if (element.dataset) {\n element.dataset['axUploaderBrowseHandle'] = 'true';\n }\n else {\n element.setAttribute('data-ax-uploader-browse-handle', 'true');\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformID)) {\n this.elementRef.nativeElement.removeEventListener('click', this.onClick);\n }\n }\n resolveZone() {\n return (this.zoneFromInjector ??\n findUploaderZoneFromDom(this.elementRef.nativeElement) ??\n undefined);\n }\n async handleClick() {\n const zone = this.resolveZone();\n if (!zone) {\n console.warn('[axUploaderBrowseHandle] No axUploaderZone found. Place axUploaderBrowseHandle inside an axUploaderZone.');\n return;\n }\n await zone.browser();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderBrowseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXUploaderBrowseDirective, isStandalone: true, selector: \"[axUploaderBrowseHandle]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderBrowseDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axUploaderBrowseHandle]' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXItYnJvd3NlLWhhbmRsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdXBsb2FkZXIvc3JjL2xpYi91cGxvYWRlci1icm93c2UtaGFuZGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFcEU7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDekQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxzREFBc0Q7UUFDckMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVuRixZQUFPLEdBQUcsR0FBUyxFQUFFO1lBQ3BDLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztLQXVDSDtJQXJDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLENBQ0wsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUN0RCxTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVztRQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLElBQUksQ0FDViwwR0FBMEcsQ0FDM0csQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs4R0E5Q1UseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRHJDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBQTEFURk9STV9JRCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaW5kVXBsb2FkZXJab25lRnJvbURvbSB9IGZyb20gJy4vdXBsb2FkZXItem9uZS1ob3N0JztcbmltcG9ydCB7IEFYVXBsb2FkZXJab25lRGlyZWN0aXZlIH0gZnJvbSAnLi91cGxvYWRlci16b25lLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogVHJpZ2dlcnMgdGhlIG5lYXJlc3Qge0BsaW5rIEFYVXBsb2FkZXJab25lRGlyZWN0aXZlfSBmaWxlIGRpYWxvZyBvbiBjbGljay5cbiAqIFJlc29sdmVzIHRoZSB6b25lIHZpYSBESSB3aGVuIHBvc3NpYmxlLCBvdGhlcndpc2Ugd2Fsa3MgdGhlIERPTSAoc3VwcG9ydHMgY29udGVudCBwcm9qZWN0aW9uKS5cbiAqIEBjYXRlZ29yeSBEaXJlY3RpdmVzXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theFVwbG9hZGVyQnJvd3NlSGFuZGxlXScgfSlcbmV4cG9ydCBjbGFzcyBBWFVwbG9hZGVyQnJvd3NlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAvKiogV2hlbiBicm93c2UgKyB6b25lIHNoYXJlIHRoZSBzYW1lIGhvc3QgZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSB6b25lRnJvbUluamVjdG9yID0gaW5qZWN0KEFYVXBsb2FkZXJab25lRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb25DbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICB2b2lkIHRoaXMuaGFuZGxlQ2xpY2soKTtcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uQ2xpY2spO1xuICAgIGlmIChlbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgIGVsZW1lbnQuZGF0YXNldFsnYXhVcGxvYWRlckJyb3dzZUhhbmRsZSddID0gJ3RydWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1heC11cGxvYWRlci1icm93c2UtaGFuZGxlJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uQ2xpY2spO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVpvbmUoKTogQVhVcGxvYWRlclpvbmVEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnpvbmVGcm9tSW5qZWN0b3IgPz9cbiAgICAgIGZpbmRVcGxvYWRlclpvbmVGcm9tRG9tKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSA/P1xuICAgICAgdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgem9uZSA9IHRoaXMucmVzb2x2ZVpvbmUoKTtcbiAgICBpZiAoIXpvbmUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1theFVwbG9hZGVyQnJvd3NlSGFuZGxlXSBObyBheFVwbG9hZGVyWm9uZSBmb3VuZC4gUGxhY2UgYXhVcGxvYWRlckJyb3dzZUhhbmRsZSBpbnNpZGUgYW4gYXhVcGxvYWRlclpvbmUuJyxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHpvbmUuYnJvd3NlcigpO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay11cGxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay91cGxvYWRlci9zcmMvYWNvcmV4LWNkay11cGxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-uploader.mjs","sources":["../tmp-esm2022/uploader/lib/uploader-zone-host.js","../tmp-esm2022/uploader/lib/uploader.models.js","../tmp-esm2022/uploader/lib/uploader.service.js","../tmp-esm2022/uploader/lib/uploader-zone.directive.js","../tmp-esm2022/uploader/lib/uploader-browse-handle.directive.js","../tmp-esm2022/uploader/acorex-cdk-uploader.js"],"sourcesContent":["/** DOM marker so browse handles can find a zone across content projection. */\nexport const AX_UPLOADER_ZONE_HOST = Symbol('AX_UPLOADER_ZONE_HOST');\nexport function bindUploaderZoneHost(element, zone) {\n element[AX_UPLOADER_ZONE_HOST] = zone;\n}\nexport function unbindUploaderZoneHost(element) {\n delete element[AX_UPLOADER_ZONE_HOST];\n}\n/** Walk ancestors to resolve the zone (works with projected browse handles). */\nexport function findUploaderZoneFromDom(start) {\n let el = start;\n while (el) {\n const zone = el[AX_UPLOADER_ZONE_HOST];\n if (zone) {\n return zone;\n }\n el = el.parentElement;\n }\n return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXItem9uZS1ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3VwbG9hZGVyL3NyYy9saWIvdXBsb2FkZXItem9uZS1ob3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQU1yRSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxJQUE2QjtJQUNyRixPQUFxQyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FBb0I7SUFDekQsT0FBUSxPQUFxQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsdUJBQXVCLENBQUMsS0FBa0I7SUFDeEQsSUFBSSxFQUFFLEdBQXVCLEtBQUssQ0FBQztJQUNuQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEdBQUksRUFBZ0MsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVhVcGxvYWRlclpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL3VwbG9hZGVyLXpvbmUuZGlyZWN0aXZlJztcblxuLyoqIERPTSBtYXJrZXIgc28gYnJvd3NlIGhhbmRsZXMgY2FuIGZpbmQgYSB6b25lIGFjcm9zcyBjb250ZW50IHByb2plY3Rpb24uICovXG5leHBvcnQgY29uc3QgQVhfVVBMT0FERVJfWk9ORV9IT1NUID0gU3ltYm9sKCdBWF9VUExPQURFUl9aT05FX0hPU1QnKTtcblxuZXhwb3J0IHR5cGUgQVhVcGxvYWRlclpvbmVIb3N0RWxlbWVudCA9IEhUTUxFbGVtZW50ICYge1xuICBbQVhfVVBMT0FERVJfWk9ORV9IT1NUXT86IEFYVXBsb2FkZXJab25lRGlyZWN0aXZlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRVcGxvYWRlclpvbmVIb3N0KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB6b25lOiBBWFVwbG9hZGVyWm9uZURpcmVjdGl2ZSk6IHZvaWQge1xuICAoZWxlbWVudCBhcyBBWFVwbG9hZGVyWm9uZUhvc3RFbGVtZW50KVtBWF9VUExPQURFUl9aT05FX0hPU1RdID0gem9uZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuYmluZFVwbG9hZGVyWm9uZUhvc3QoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgZGVsZXRlIChlbGVtZW50IGFzIEFYVXBsb2FkZXJab25lSG9zdEVsZW1lbnQpW0FYX1VQTE9BREVSX1pPTkVfSE9TVF07XG59XG5cbi8qKiBXYWxrIGFuY2VzdG9ycyB0byByZXNvbHZlIHRoZSB6b25lICh3b3JrcyB3aXRoIHByb2plY3RlZCBicm93c2UgaGFuZGxlcykuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFVwbG9hZGVyWm9uZUZyb21Eb20oc3RhcnQ6IEhUTUxFbGVtZW50KTogQVhVcGxvYWRlclpvbmVEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICBsZXQgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IHN0YXJ0O1xuICB3aGlsZSAoZWwpIHtcbiAgICBjb25zdCB6b25lID0gKGVsIGFzIEFYVXBsb2FkZXJab25lSG9zdEVsZW1lbnQpW0FYX1VQTE9BREVSX1pPTkVfSE9TVF07XG4gICAgaWYgKHpvbmUpIHtcbiAgICAgIHJldHVybiB6b25lO1xuICAgIH1cbiAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==","import { computed, signal } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nexport class AXUploadRequest {\n get name() {\n return this.file.name;\n }\n get ext() {\n const parts = this.name.split('.');\n if (parts.length > 1) {\n return parts[parts.length - 1];\n }\n else {\n // No extension found\n return '';\n }\n }\n get size() {\n return this.file.size;\n }\n get file() {\n return this.uploadFile;\n }\n constructor(uploadFile) {\n this.uploadFile = uploadFile;\n this._progress = signal(0, ...(ngDevMode ? [{ debugName: \"_progress\" }] : []));\n this.progress = computed(() => this._progress(), ...(ngDevMode ? [{ debugName: \"progress\" }] : []));\n this._estimateTime = signal(0, ...(ngDevMode ? [{ debugName: \"_estimateTime\" }] : []));\n this.estimateTime = computed(() => this._estimateTime(), ...(ngDevMode ? [{ debugName: \"estimateTime\" }] : []));\n this._status = signal('new', ...(ngDevMode ? [{ debugName: \"_status\" }] : []));\n this.status = computed(() => this._status(), ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n this._message = signal(null, ...(ngDevMode ? [{ debugName: \"_message\" }] : []));\n this.message = computed(() => this._message(), ...(ngDevMode ? [{ debugName: \"message\" }] : []));\n this._isDetermined = signal(false, ...(ngDevMode ? [{ debugName: \"_isDetermined\" }] : []));\n this.isDetermined = computed(() => this._isDetermined(), ...(ngDevMode ? [{ debugName: \"isDetermined\" }] : []));\n this.bytesTransferred = 0;\n this.onCancel = new Subject();\n this.onStart = new Subject();\n this.onFailed = new Subject();\n this.onComplete = new BehaviorSubject(null);\n }\n estimateTimeRemaining(bytesTransferred) {\n const now = Date.now();\n const elapsed = now - this.startTime; // Time in milliseconds\n if (isNaN(elapsed) || elapsed === 0) {\n return null; // Avoid division by zero\n }\n const speed = (bytesTransferred || 1) / elapsed; // Bytes per millisecond\n const remainingBytes = this.size - bytesTransferred;\n const estimatedTime = Math.ceil(remainingBytes / speed); // Time in milliseconds\n return estimatedTime; // Return the estimated time in milliseconds\n }\n setTransferredBytes(value) {\n this.bytesTransferred = value;\n if (value > 0 && !this._isDetermined() && (this.status() == 'new' || this.status() == 'inprogress')) {\n this._isDetermined.set(true);\n }\n this.updateEstimateTime();\n }\n updateEstimateTime() {\n this._estimateTime.set(this.estimateTimeRemaining(this.bytesTransferred));\n const progress = Math.floor((this.bytesTransferred / this.size) * 100);\n this._progress.set(progress);\n }\n async upload() {\n this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this.onStart.next();\n }\n cancel() {\n this._status.set('canceled');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this.onCancel.next();\n }\n redo() {\n // this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this._message.set(null);\n this.onStart.next();\n }\n error(message) {\n this._status.set('failed');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this._message.set(message);\n this.onFailed.next();\n }\n finish(data) {\n this._status.set('completed');\n this.bytesTransferred = this.size;\n this._estimateTime.set(0);\n this._progress.set(100);\n this.onComplete.next(data);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3VwbG9hZGVyL3NyYy9saWIvdXBsb2FkZXIubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBbUNoRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLHFCQUFxQjtZQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUEyQkQsWUFBb0IsVUFBZ0I7UUFBaEIsZUFBVSxHQUFWLFVBQVUsQ0FBTTtRQXpCbkIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLHFEQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9EQUFDLENBQUM7UUFFM0Isa0JBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyx5REFBQyxDQUFDO1FBQzNDLGlCQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsd0RBQUMsQ0FBQztRQUVuQyxZQUFPLEdBQUcsTUFBTSxDQUFpQixLQUFLLG1EQUFDLENBQUM7UUFDekQsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGtEQUFDLENBQUM7UUFFdkIsYUFBUSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxvREFBQyxDQUFDO1FBQ3hELFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxtREFBQyxDQUFDO1FBRXpCLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUsseURBQUMsQ0FBQztRQUN4RCxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLHdEQUFDLENBQUM7UUFHNUMscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBSXRCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQy9CLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzlCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQy9CLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBTyxJQUFJLENBQUMsQ0FBQztJQUViLENBQUM7SUFFaEMscUJBQXFCLENBQUMsZ0JBQXdCO1FBQ3BELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLHVCQUF1QjtRQUU3RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7UUFDeEMsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsd0JBQXdCO1FBQ3pFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7UUFDcEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7UUFDaEYsT0FBTyxhQUFhLENBQUMsQ0FBQyw0Q0FBNEM7SUFDcEUsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3BHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTTtRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxJQUFJO1FBQ1QsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQVU7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFVwbG9hZGVyQ2hvb3NlRmlsZXNSZXN1bHQge1xuICBhY2NlcHRlZDogRmlsZVtdO1xuICByZWplY3RlZDogeyBmaWxlOiBGaWxlOyBlcnJvcnM6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHRbXSB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlckZpbGVDaGFuZ2VFdmVudCB7XG4gIGV2ZW50OiBFdmVudDtcbiAgZmlsZXM6IEZpbGVbXTtcbiAgcmVqZWN0ZWQ/OiB7IGZpbGU6IEZpbGU7IGVycm9yczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdIH1bXTtcbn1cblxuZXhwb3J0IHR5cGUgQVhVcGxvYWRTdGF0dXMgPSAnbmV3JyB8ICdpbnByb2dyZXNzJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCcgfCAnY2FuY2VsZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgcmVxdWVzdHM6IEFYVXBsb2FkUmVxdWVzdFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJGaWxlU3RhcnRFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICB1cGxvYWRlZEZpbGU6IEFYVXBsb2FkUmVxdWVzdDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlckZpbGVDb21wbGV0ZUV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIHVwbG9hZGVkRmlsZTogQVhVcGxvYWRSZXF1ZXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJGaWxlc0NvbXBsZXRlRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgdXBsb2FkZWRGaWxlczogQVhVcGxvYWRSZXF1ZXN0W107XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlckZpbGVDYW5jZWxFdmVudCBleHRlbmRzIEFYRXZlbnQge1xuICB1cGxvYWRlZEZpbGU6IEFYVXBsb2FkUmVxdWVzdDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVXBsb2FkUmVxdWVzdCB7XG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZS5uYW1lO1xuICB9XG5cbiAgZ2V0IGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5uYW1lLnNwbGl0KCcuJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gZXh0ZW5zaW9uIGZvdW5kXG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWxlLnNpemU7XG4gIH1cblxuICBnZXQgZmlsZSgpOiBGaWxlIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvZ3Jlc3MgPSBzaWduYWwoMCk7XG4gIHByb2dyZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fcHJvZ3Jlc3MoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVUaW1lID0gc2lnbmFsKDApO1xuICBlc3RpbWF0ZVRpbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9lc3RpbWF0ZVRpbWUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdHVzID0gc2lnbmFsPEFYVXBsb2FkU3RhdHVzPignbmV3Jyk7XG4gIHN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXR1cygpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBtZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbWVzc2FnZSgpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pc0RldGVybWluZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0RldGVybWluZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9pc0RldGVybWluZWQoKSk7XG5cbiAgcHJpdmF0ZSBzdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBieXRlc1RyYW5zZmVycmVkID0gMDtcblxuICBwdWJsaWMgbWV0YURhdGE6IGFueTtcblxuICBwdWJsaWMgb25DYW5jZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgb25TdGFydCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBvbkZhaWxlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBvbkNvbXBsZXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVwbG9hZEZpbGU6IEZpbGUpIHt9XG5cbiAgcHJpdmF0ZSBlc3RpbWF0ZVRpbWVSZW1haW5pbmcoYnl0ZXNUcmFuc2ZlcnJlZDogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBlbGFwc2VkID0gbm93IC0gdGhpcy5zdGFydFRpbWU7IC8vIFRpbWUgaW4gbWlsbGlzZWNvbmRzXG5cbiAgICBpZiAoaXNOYU4oZWxhcHNlZCkgfHwgZWxhcHNlZCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIEF2b2lkIGRpdmlzaW9uIGJ5IHplcm9cbiAgICB9XG5cbiAgICBjb25zdCBzcGVlZCA9IChieXRlc1RyYW5zZmVycmVkIHx8IDEpIC8gZWxhcHNlZDsgLy8gQnl0ZXMgcGVyIG1pbGxpc2Vjb25kXG4gICAgY29uc3QgcmVtYWluaW5nQnl0ZXMgPSB0aGlzLnNpemUgLSBieXRlc1RyYW5zZmVycmVkO1xuICAgIGNvbnN0IGVzdGltYXRlZFRpbWUgPSBNYXRoLmNlaWwocmVtYWluaW5nQnl0ZXMgLyBzcGVlZCk7IC8vIFRpbWUgaW4gbWlsbGlzZWNvbmRzXG4gICAgcmV0dXJuIGVzdGltYXRlZFRpbWU7IC8vIFJldHVybiB0aGUgZXN0aW1hdGVkIHRpbWUgaW4gbWlsbGlzZWNvbmRzXG4gIH1cblxuICBwdWJsaWMgc2V0VHJhbnNmZXJyZWRCeXRlcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5ieXRlc1RyYW5zZmVycmVkID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlID4gMCAmJiAhdGhpcy5faXNEZXRlcm1pbmVkKCkgJiYgKHRoaXMuc3RhdHVzKCkgPT0gJ25ldycgfHwgdGhpcy5zdGF0dXMoKSA9PSAnaW5wcm9ncmVzcycpKSB7XG4gICAgICB0aGlzLl9pc0RldGVybWluZWQuc2V0KHRydWUpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUVzdGltYXRlVGltZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVFc3RpbWF0ZVRpbWUoKSB7XG4gICAgdGhpcy5fZXN0aW1hdGVUaW1lLnNldCh0aGlzLmVzdGltYXRlVGltZVJlbWFpbmluZyh0aGlzLmJ5dGVzVHJhbnNmZXJyZWQpKTtcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGguZmxvb3IoKHRoaXMuYnl0ZXNUcmFuc2ZlcnJlZCAvIHRoaXMuc2l6ZSkgKiAxMDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldChwcm9ncmVzcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wcm9ncmVzcy5zZXQoMCk7XG4gICAgdGhpcy5fc3RhdHVzLnNldCgnaW5wcm9ncmVzcycpO1xuICAgIHRoaXMub25TdGFydC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cy5zZXQoJ2NhbmNlbGVkJyk7XG4gICAgdGhpcy5ieXRlc1RyYW5zZmVycmVkID0gMDtcbiAgICB0aGlzLl9lc3RpbWF0ZVRpbWUuc2V0KDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldCgwKTtcbiAgICB0aGlzLm9uQ2FuY2VsLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWRvKCk6IHZvaWQge1xuICAgIC8vIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wcm9ncmVzcy5zZXQoMCk7XG4gICAgdGhpcy5fc3RhdHVzLnNldCgnaW5wcm9ncmVzcycpO1xuICAgIHRoaXMuX21lc3NhZ2Uuc2V0KG51bGwpO1xuICAgIHRoaXMub25TdGFydC5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdHVzLnNldCgnZmFpbGVkJyk7XG4gICAgdGhpcy5ieXRlc1RyYW5zZmVycmVkID0gMDtcbiAgICB0aGlzLl9lc3RpbWF0ZVRpbWUuc2V0KDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldCgwKTtcbiAgICB0aGlzLl9tZXNzYWdlLnNldChtZXNzYWdlKTtcbiAgICB0aGlzLm9uRmFpbGVkLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5pc2goZGF0YT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cy5zZXQoJ2NvbXBsZXRlZCcpO1xuICAgIHRoaXMuYnl0ZXNUcmFuc2ZlcnJlZCA9IHRoaXMuc2l6ZTtcbiAgICB0aGlzLl9lc3RpbWF0ZVRpbWUuc2V0KDApO1xuICAgIHRoaXMuX3Byb2dyZXNzLnNldCgxMDApO1xuICAgIHRoaXMub25Db21wbGV0ZS5uZXh0KGRhdGEpO1xuICB9XG59XG4iXX0=","import { AXFileService } from '@acorex/core/file';\nimport { Injectable, inject } from '@angular/core';\nimport { sumBy } from 'lodash-es';\nimport { BehaviorSubject, Subject, map } from 'rxjs';\nimport { AXUploadRequest, } from './uploader.models';\nimport * as i0 from \"@angular/core\";\n/**\n * File upload queue and validation via {@link AXFileService}.\n * Storage is implemented by subscribing to upload/resolve/delete events.\n * @category Services\n */\nexport class AXUploaderService {\n constructor() {\n this.fileService = inject(AXFileService);\n this._files$ = new BehaviorSubject([]);\n this.files = this._files$.asObservable();\n this.onFileUploadStart = new Subject();\n this.onFileUploadComplete = new Subject();\n this.onFilesUploadComplete = new Subject();\n this.onFileUploadCanceled = new Subject();\n /** Subscribe to perform uploads (e.g. HTTP, IndexedDB). */\n this.onUpload = new Subject();\n /** Subscribe to resolve a stored reference to a playback URL. */\n this.onResolveUrl = new Subject();\n /** Subscribe to delete stored media. */\n this.onDeleteMedia = new Subject();\n this.totalEstimateTime = this._files$.pipe(map((files) => sumBy(files, (file) => (file.status() === 'inprogress' ? file.estimateTime() : 0))));\n }\n isAnyDetermined() {\n return this._files$.value.some((file) => file.isDetermined());\n }\n validateFiles(files, fileType) {\n return this.fileService.validateMany(files, fileType);\n }\n async getAcceptAttribute(fileType) {\n return this.fileService.getAcceptAttribute(fileType);\n }\n upload(options) {\n return new Promise((resolve, reject) => {\n if (!this.hasUploadHandler()) {\n reject(new Error('No upload handler subscribed to AXUploaderService.onUpload. Provide a service that handles upload events.'));\n return;\n }\n this.onUpload.next({\n component: this,\n options,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n resolveUrl(reference, signal) {\n return new Promise((resolve, reject) => {\n if (!this.hasResolveUrlHandler()) {\n reject(new Error('No handler subscribed to AXUploaderService.onResolveUrl. Provide a service that handles resolve events.'));\n return;\n }\n this.onResolveUrl.next({\n component: this,\n reference,\n signal,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n async resolvePlaybackUrl(reference, signal) {\n const direct = reference.url?.trim();\n if (direct && !reference.mediaId) {\n return direct;\n }\n if (direct && reference.mediaId) {\n try {\n return await this.resolveUrl(reference, signal);\n }\n catch {\n return direct;\n }\n }\n if (reference.mediaId) {\n return this.resolveUrl(reference, signal);\n }\n if (direct) {\n return direct;\n }\n throw new Error('Upload reference has no url or mediaId');\n }\n deleteMedia(reference) {\n return new Promise((resolve, reject) => {\n if (!this.hasDeleteMediaHandler()) {\n reject(new Error('No handler subscribed to AXUploaderService.onDeleteMedia. Provide a service that handles delete events.'));\n return;\n }\n this.onDeleteMedia.next({\n component: this,\n reference,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n hasUploadHandler() {\n return this.onUpload.observers.length > 0;\n }\n hasResolveUrlHandler() {\n return this.onResolveUrl.observers.length > 0;\n }\n hasDeleteMediaHandler() {\n return this.onDeleteMedia.observers.length > 0;\n }\n async add(files, options) {\n const list = Array.from(files).map((f) => new AXUploadRequest(f));\n await this.applyFileTypeValidation(list, options?.fileType);\n const newFiles = [...this._files$.value, ...list];\n this._files$.next(newFiles);\n void this.startUpload();\n return list;\n }\n /**\n * Opens the file dialog and returns selected files without enqueueing uploads.\n * With `fileType`, applies catalog validation; otherwise uses legacy accept-only selection.\n */\n async chooseFiles(options = {}) {\n try {\n if (options.fileType) {\n const accept = options.accept ?? (await this.fileService.getAcceptAttribute(options.fileType));\n return this.fileService.chooseValidated({\n fileType: options.fileType,\n multiple: options.multiple ?? false,\n accept,\n });\n }\n const accepted = await this.fileService.choose({\n accept: options.accept,\n multiple: options.multiple ?? false,\n });\n return { accepted, rejected: [] };\n }\n catch (error) {\n console.error('File choose failed:', error);\n return { accepted: [], rejected: [] };\n }\n }\n async browse(options = { multiple: false }) {\n const { accepted } = await this.chooseFiles(options);\n if (!accepted.length) {\n return [];\n }\n return this.add(accepted, { fileType: options.fileType });\n }\n async cancelAll() {\n await Promise.all(this._files$.value.filter((c) => c.status() !== 'completed').map((c) => c.cancel()));\n }\n clearAll() {\n const remainingFiles = this._files$.value.filter((c) => c.status() === 'inprogress');\n this._files$.next(remainingFiles);\n }\n remove(item) {\n const updatedFiles = this._files$.value.filter((c) => c !== item);\n this._files$.next(updatedFiles);\n }\n async startUpload() {\n const newFiles = this._files$.value.filter((c) => c.status() === 'new');\n for (const file of newFiles) {\n await this.bindEvents(file);\n }\n }\n async bindEvents(c) {\n c.onStart.subscribe(() => {\n this.onFileUploadStart.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n c.onComplete.subscribe((data) => {\n Object.assign(c, { metaData: data });\n this.onFileUploadComplete.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n const isAllDone = this._files$.value.every((f) => f.status() === 'completed' || f.status() === 'canceled' || f.status() === 'failed');\n if (isAllDone) {\n this.onFilesUploadComplete.next({\n component: this,\n uploadedFiles: this._files$.value,\n isUserInteraction: false,\n });\n }\n });\n c.onCancel.subscribe(() => {\n this.onFileUploadCanceled.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n }\n async applyFileTypeValidation(requests, fileType) {\n if (!fileType) {\n return requests;\n }\n for (const request of requests) {\n const errors = await this.fileService.validate(request.file, fileType);\n if (errors.length > 0) {\n request.error(errors[0]?.message ?? 'Invalid file');\n }\n }\n return requests;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay91cGxvYWRlci9zcmMvbGliL3VwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFDTCxlQUFlLEdBTWhCLE1BQU0sbUJBQW1CLENBQUM7O0FBK0QzQjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVtQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVwQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRXRELFVBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUE0QixDQUFDO1FBRTVELHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUErQixDQUFDO1FBRWxFLDBCQUFxQixHQUFHLElBQUksT0FBTyxFQUFnQyxDQUFDO1FBRXBFLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUE2QixDQUFDO1FBRWhGLDJEQUEyRDtRQUMzQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFFaEUsaUVBQWlFO1FBQ2pELGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQTZCLENBQUM7UUFFeEUsd0NBQXdDO1FBQ3hCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7UUFFMUQs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QUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OEdBblFVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQgdHlwZSB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHN1bUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBWFVwbG9hZFJlcXVlc3QsXG4gIEFYVXBsb2FkZXJGaWxlQ2FuY2VsRXZlbnQsXG4gIEFYVXBsb2FkZXJGaWxlQ29tcGxldGVFdmVudCxcbiAgQVhVcGxvYWRlckZpbGVTdGFydEV2ZW50LFxuICBBWFVwbG9hZGVyRmlsZXNDb21wbGV0ZUV2ZW50LFxuICB0eXBlIEFYVXBsb2FkZXJDaG9vc2VGaWxlc1Jlc3VsdCxcbn0gZnJvbSAnLi91cGxvYWRlci5tb2RlbHMnO1xuXG4vKiogUmVmZXJlbmNlIHRvIHN0b3JlZCBmaWxlL21lZGlhICh1cmwgYW5kL29yIG1lZGlhSWQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFVwbG9hZFJlZmVyZW5jZSB7XG4gIHVybD86IHN0cmluZztcbiAgbWVkaWFJZD86IHN0cmluZztcbiAgbWltZVR5cGU/OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG4gIGV4cGlyZXNBdD86IG51bWJlcjtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWEZpbGVVcGxvYWRPcHRpb25zIHtcbiAgc291cmNlOiBGaWxlIHwgQmxvYjtcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gIG1pbWVUeXBlPzogc3RyaW5nO1xuICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBvblByb2dyZXNzPzogKHBlcmNlbnQ6IG51bWJlcikgPT4gdm9pZDtcbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRSZXN1bHQge1xuICB1cmw6IHN0cmluZztcbiAgdGh1bWJuYWlsVXJsPzogc3RyaW5nO1xuICBtZWRpYUlkPzogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIG1pbWVUeXBlOiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBFbWl0dGVkIHdoZW4ge0BsaW5rIEFYVXBsb2FkZXJTZXJ2aWNlLnVwbG9hZH0gaXMgY2FsbGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFVwbG9hZGVyVXBsb2FkRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgb3B0aW9uczogQVhGaWxlVXBsb2FkT3B0aW9ucztcbiAgcmVzb2x2ZTogKHJlc3VsdDogQVhVcGxvYWRSZXN1bHQpID0+IHZvaWQ7XG4gIHJlamVjdDogKHJlYXNvbjogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuLyoqIEVtaXR0ZWQgd2hlbiB7QGxpbmsgQVhVcGxvYWRlclNlcnZpY2UucmVzb2x2ZVVybH0gaXMgY2FsbGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFVwbG9hZGVyUmVzb2x2ZVVybEV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIHJlZmVyZW5jZTogQVhVcGxvYWRSZWZlcmVuY2U7XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICByZXNvbHZlOiAodXJsOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlamVjdDogKHJlYXNvbjogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuLyoqIEVtaXR0ZWQgd2hlbiB7QGxpbmsgQVhVcGxvYWRlclNlcnZpY2UuZGVsZXRlTWVkaWF9IGlzIGNhbGxlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhVcGxvYWRlckRlbGV0ZU1lZGlhRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgcmVmZXJlbmNlOiBBWFVwbG9hZFJlZmVyZW5jZTtcbiAgcmVzb2x2ZTogKCkgPT4gdm9pZDtcbiAgcmVqZWN0OiAocmVhc29uOiB1bmtub3duKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJCcm93c2VPcHRpb25zIHtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICBhY2NlcHQ/OiBzdHJpbmc7XG4gIC8qKiBMb2dpY2FsIGZpbGUgdHlwZSBuYW1lKHMpIHJlZ2lzdGVyZWQgaW4ge0BsaW5rIEFYRmlsZVNlcnZpY2V9LiAqL1xuICBmaWxlVHlwZT86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVXBsb2FkZXJBZGRPcHRpb25zIHtcbiAgZmlsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBGaWxlIHVwbG9hZCBxdWV1ZSBhbmQgdmFsaWRhdGlvbiB2aWEge0BsaW5rIEFYRmlsZVNlcnZpY2V9LlxuICogU3RvcmFnZSBpcyBpbXBsZW1lbnRlZCBieSBzdWJzY3JpYmluZyB0byB1cGxvYWQvcmVzb2x2ZS9kZWxldGUgZXZlbnRzLlxuICogQGNhdGVnb3J5IFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhVcGxvYWRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVTZXJ2aWNlID0gaW5qZWN0KEFYRmlsZVNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhVcGxvYWRSZXF1ZXN0W10+KFtdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmlsZXMgPSB0aGlzLl9maWxlcyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uRmlsZVVwbG9hZFN0YXJ0ID0gbmV3IFN1YmplY3Q8QVhVcGxvYWRlckZpbGVTdGFydEV2ZW50PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkZpbGVVcGxvYWRDb21wbGV0ZSA9IG5ldyBTdWJqZWN0PEFYVXBsb2FkZXJGaWxlQ29tcGxldGVFdmVudD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25GaWxlc1VwbG9hZENvbXBsZXRlID0gbmV3IFN1YmplY3Q8QVhVcGxvYWRlckZpbGVzQ29tcGxldGVFdmVudD4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25GaWxlVXBsb2FkQ2FuY2VsZWQgPSBuZXcgU3ViamVjdDxBWFVwbG9hZGVyRmlsZUNhbmNlbEV2ZW50PigpO1xuXG4gIC8qKiBTdWJzY3JpYmUgdG8gcGVyZm9ybSB1cGxvYWRzIChlLmcuIEhUVFAsIEluZGV4ZWREQikuICovXG4gIHB1YmxpYyByZWFkb25seSBvblVwbG9hZCA9IG5ldyBTdWJqZWN0PEFYVXBsb2FkZXJVcGxvYWRFdmVudD4oKTtcblxuICAvKiogU3Vic2NyaWJlIHRvIHJlc29sdmUgYSBzdG9yZWQgcmVmZXJlbmNlIHRvIGEgcGxheWJhY2sgVVJMLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25SZXNvbHZlVXJsID0gbmV3IFN1YmplY3Q8QVhVcGxvYWRlclJlc29sdmVVcmxFdmVudD4oKTtcblxuICAvKiogU3Vic2NyaWJlIHRvIGRlbGV0ZSBzdG9yZWQgbWVkaWEuICovXG4gIHB1YmxpYyByZWFkb25seSBvbkRlbGV0ZU1lZGlhID0gbmV3IFN1YmplY3Q8QVhVcGxvYWRlckRlbGV0ZU1lZGlhRXZlbnQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRvdGFsRXN0aW1hdGVUaW1lID0gdGhpcy5fZmlsZXMkLnBpcGUoXG4gICAgbWFwKChmaWxlcykgPT4gc3VtQnkoZmlsZXMsIChmaWxlKSA9PiAoZmlsZS5zdGF0dXMoKSA9PT0gJ2lucHJvZ3Jlc3MnID8gZmlsZS5lc3RpbWF0ZVRpbWUoKSA6IDApKSksXG4gICk7XG5cbiAgaXNBbnlEZXRlcm1pbmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWxlcyQudmFsdWUuc29tZSgoZmlsZSkgPT4gZmlsZS5pc0RldGVybWluZWQoKSk7XG4gIH1cblxuICB2YWxpZGF0ZUZpbGVzKFxuICAgIGZpbGVzOiBGaWxlW10sXG4gICAgZmlsZVR5cGU6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7IGFjY2VwdGVkOiBGaWxlW107IHJlamVjdGVkOiB7IGZpbGU6IEZpbGU7IGVycm9yczogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdFtdIH1bXSB9PiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2UudmFsaWRhdGVNYW55KGZpbGVzLCBmaWxlVHlwZSk7XG4gIH1cblxuICBhc3luYyBnZXRBY2NlcHRBdHRyaWJ1dGUoZmlsZVR5cGU6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS5nZXRBY2NlcHRBdHRyaWJ1dGUoZmlsZVR5cGUpO1xuICB9XG5cbiAgdXBsb2FkKG9wdGlvbnM6IEFYRmlsZVVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPEFYVXBsb2FkUmVzdWx0PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEFYVXBsb2FkUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaGFzVXBsb2FkSGFuZGxlcigpKSB7XG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnTm8gdXBsb2FkIGhhbmRsZXIgc3Vic2NyaWJlZCB0byBBWFVwbG9hZGVyU2VydmljZS5vblVwbG9hZC4gUHJvdmlkZSBhIHNlcnZpY2UgdGhhdCBoYW5kbGVzIHVwbG9hZCBldmVudHMuJyxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm9uVXBsb2FkLm5leHQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHJlc29sdmUsXG4gICAgICAgIHJlamVjdCxcbiAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXNvbHZlVXJsKHJlZmVyZW5jZTogQVhVcGxvYWRSZWZlcmVuY2UsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaGFzUmVzb2x2ZVVybEhhbmRsZXIoKSkge1xuICAgICAgICByZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ05vIGhhbmRsZXIgc3Vic2NyaWJlZCB0byBBWFVwbG9hZGVyU2VydmljZS5vblJlc29sdmVVcmwuIFByb3ZpZGUgYSBzZXJ2aWNlIHRoYXQgaGFuZGxlcyByZXNvbHZlIGV2ZW50cy4nLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMub25SZXNvbHZlVXJsLm5leHQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgc2lnbmFsLFxuICAgICAgICByZXNvbHZlLFxuICAgICAgICByZWplY3QsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZVBsYXliYWNrVXJsKHJlZmVyZW5jZTogQVhVcGxvYWRSZWZlcmVuY2UsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkaXJlY3QgPSByZWZlcmVuY2UudXJsPy50cmltKCk7XG4gICAgaWYgKGRpcmVjdCAmJiAhcmVmZXJlbmNlLm1lZGlhSWQpIHtcbiAgICAgIHJldHVybiBkaXJlY3Q7XG4gICAgfVxuICAgIGlmIChkaXJlY3QgJiYgcmVmZXJlbmNlLm1lZGlhSWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlc29sdmVVcmwocmVmZXJlbmNlLCBzaWduYWwpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBkaXJlY3Q7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZWZlcmVuY2UubWVkaWFJZCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZVVybChyZWZlcmVuY2UsIHNpZ25hbCk7XG4gICAgfVxuICAgIGlmIChkaXJlY3QpIHtcbiAgICAgIHJldHVybiBkaXJlY3Q7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignVXBsb2FkIHJlZmVyZW5jZSBoYXMgbm8gdXJsIG9yIG1lZGlhSWQnKTtcbiAgfVxuXG4gIGRlbGV0ZU1lZGlhKHJlZmVyZW5jZTogQVhVcGxvYWRSZWZlcmVuY2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmhhc0RlbGV0ZU1lZGlhSGFuZGxlcigpKSB7XG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnTm8gaGFuZGxlciBzdWJzY3JpYmVkIHRvIEFYVXBsb2FkZXJTZXJ2aWNlLm9uRGVsZXRlTWVkaWEuIFByb3ZpZGUgYSBzZXJ2aWNlIHRoYXQgaGFuZGxlcyBkZWxldGUgZXZlbnRzLicsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5vbkRlbGV0ZU1lZGlhLm5leHQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgcmVqZWN0LFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzVXBsb2FkSGFuZGxlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vblVwbG9hZC5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzUmVzb2x2ZVVybEhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub25SZXNvbHZlVXJsLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEZWxldGVNZWRpYUhhbmRsZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub25EZWxldGVNZWRpYS5vYnNlcnZlcnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGFzeW5jIGFkZChmaWxlczogRmlsZUxpc3QgfCBGaWxlW10sIG9wdGlvbnM/OiBBWFVwbG9hZGVyQWRkT3B0aW9ucyk6IFByb21pc2U8QVhVcGxvYWRSZXF1ZXN0W10+IHtcbiAgICBjb25zdCBsaXN0ID0gQXJyYXkuZnJvbShmaWxlcykubWFwKChmKSA9PiBuZXcgQVhVcGxvYWRSZXF1ZXN0KGYpKTtcbiAgICBhd2FpdCB0aGlzLmFwcGx5RmlsZVR5cGVWYWxpZGF0aW9uKGxpc3QsIG9wdGlvbnM/LmZpbGVUeXBlKTtcblxuICAgIGNvbnN0IG5ld0ZpbGVzID0gWy4uLnRoaXMuX2ZpbGVzJC52YWx1ZSwgLi4ubGlzdF07XG4gICAgdGhpcy5fZmlsZXMkLm5leHQobmV3RmlsZXMpO1xuICAgIHZvaWQgdGhpcy5zdGFydFVwbG9hZCgpO1xuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBmaWxlIGRpYWxvZyBhbmQgcmV0dXJucyBzZWxlY3RlZCBmaWxlcyB3aXRob3V0IGVucXVldWVpbmcgdXBsb2Fkcy5cbiAgICogV2l0aCBgZmlsZVR5cGVgLCBhcHBsaWVzIGNhdGFsb2cgdmFsaWRhdGlvbjsgb3RoZXJ3aXNlIHVzZXMgbGVnYWN5IGFjY2VwdC1vbmx5IHNlbGVjdGlvbi5cbiAgICovXG4gIGFzeW5jIGNob29zZUZpbGVzKG9wdGlvbnM6IEFYVXBsb2FkZXJCcm93c2VPcHRpb25zID0ge30pOiBQcm9taXNlPEFYVXBsb2FkZXJDaG9vc2VGaWxlc1Jlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAob3B0aW9ucy5maWxlVHlwZSkge1xuICAgICAgICBjb25zdCBhY2NlcHQgPSBvcHRpb25zLmFjY2VwdCA/PyAoYXdhaXQgdGhpcy5maWxlU2VydmljZS5nZXRBY2NlcHRBdHRyaWJ1dGUob3B0aW9ucy5maWxlVHlwZSkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlLmNob29zZVZhbGlkYXRlZCh7XG4gICAgICAgICAgZmlsZVR5cGU6IG9wdGlvbnMuZmlsZVR5cGUsXG4gICAgICAgICAgbXVsdGlwbGU6IG9wdGlvbnMubXVsdGlwbGUgPz8gZmFsc2UsXG4gICAgICAgICAgYWNjZXB0LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWNjZXB0ZWQgPSBhd2FpdCB0aGlzLmZpbGVTZXJ2aWNlLmNob29zZSh7XG4gICAgICAgIGFjY2VwdDogb3B0aW9ucy5hY2NlcHQsXG4gICAgICAgIG11bHRpcGxlOiBvcHRpb25zLm11bHRpcGxlID8/IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IGFjY2VwdGVkLCByZWplY3RlZDogW10gfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmlsZSBjaG9vc2UgZmFpbGVkOicsIGVycm9yKTtcbiAgICAgIHJldHVybiB7IGFjY2VwdGVkOiBbXSwgcmVqZWN0ZWQ6IFtdIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYnJvd3NlKG9wdGlvbnM6IEFYVXBsb2FkZXJCcm93c2VPcHRpb25zID0geyBtdWx0aXBsZTogZmFsc2UgfSk6IFByb21pc2U8QVhVcGxvYWRSZXF1ZXN0W10+IHtcbiAgICBjb25zdCB7IGFjY2VwdGVkIH0gPSBhd2FpdCB0aGlzLmNob29zZUZpbGVzKG9wdGlvbnMpO1xuICAgIGlmICghYWNjZXB0ZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFkZChhY2NlcHRlZCwgeyBmaWxlVHlwZTogb3B0aW9ucy5maWxlVHlwZSB9KTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbEFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLl9maWxlcyQudmFsdWUuZmlsdGVyKChjKSA9PiBjLnN0YXR1cygpICE9PSAnY29tcGxldGVkJykubWFwKChjKSA9PiBjLmNhbmNlbCgpKSk7XG4gIH1cblxuICBjbGVhckFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCByZW1haW5pbmdGaWxlcyA9IHRoaXMuX2ZpbGVzJC52YWx1ZS5maWx0ZXIoKGMpID0+IGMuc3RhdHVzKCkgPT09ICdpbnByb2dyZXNzJyk7XG4gICAgdGhpcy5fZmlsZXMkLm5leHQocmVtYWluaW5nRmlsZXMpO1xuICB9XG5cbiAgcmVtb3ZlKGl0ZW06IEFYVXBsb2FkUmVxdWVzdCk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRGaWxlcyA9IHRoaXMuX2ZpbGVzJC52YWx1ZS5maWx0ZXIoKGMpID0+IGMgIT09IGl0ZW0pO1xuICAgIHRoaXMuX2ZpbGVzJC5uZXh0KHVwZGF0ZWRGaWxlcyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN0YXJ0VXBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5ld0ZpbGVzID0gdGhpcy5fZmlsZXMkLnZhbHVlLmZpbHRlcigoYykgPT4gYy5zdGF0dXMoKSA9PT0gJ25ldycpO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBuZXdGaWxlcykge1xuICAgICAgYXdhaXQgdGhpcy5iaW5kRXZlbnRzKGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYmluZEV2ZW50cyhjOiBBWFVwbG9hZFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjLm9uU3RhcnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMub25GaWxlVXBsb2FkU3RhcnQubmV4dCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdXBsb2FkZWRGaWxlOiBjLFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGMub25Db21wbGV0ZS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYywgeyBtZXRhRGF0YTogZGF0YSB9KTtcbiAgICAgIHRoaXMub25GaWxlVXBsb2FkQ29tcGxldGUubmV4dCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdXBsb2FkZWRGaWxlOiBjLFxuICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaXNBbGxEb25lID0gdGhpcy5fZmlsZXMkLnZhbHVlLmV2ZXJ5KFxuICAgICAgICAoZikgPT4gZi5zdGF0dXMoKSA9PT0gJ2NvbXBsZXRlZCcgfHwgZi5zdGF0dXMoKSA9PT0gJ2NhbmNlbGVkJyB8fCBmLnN0YXR1cygpID09PSAnZmFpbGVkJyxcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc0FsbERvbmUpIHtcbiAgICAgICAgdGhpcy5vbkZpbGVzVXBsb2FkQ29tcGxldGUubmV4dCh7XG4gICAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICAgIHVwbG9hZGVkRmlsZXM6IHRoaXMuX2ZpbGVzJC52YWx1ZSxcbiAgICAgICAgICBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYy5vbkNhbmNlbC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkZpbGVVcGxvYWRDYW5jZWxlZC5uZXh0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICB1cGxvYWRlZEZpbGU6IGMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseUZpbGVUeXBlVmFsaWRhdGlvbihcbiAgICByZXF1ZXN0czogQVhVcGxvYWRSZXF1ZXN0W10sXG4gICAgZmlsZVR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTxBWFVwbG9hZFJlcXVlc3RbXT4ge1xuICAgIGlmICghZmlsZVR5cGUpIHtcbiAgICAgIHJldHVybiByZXF1ZXN0cztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlcXVlc3Qgb2YgcmVxdWVzdHMpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UudmFsaWRhdGUocmVxdWVzdC5maWxlLCBmaWxlVHlwZSk7XG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVxdWVzdC5lcnJvcihlcnJvcnNbMF0/Lm1lc3NhZ2UgPz8gJ0ludmFsaWQgZmlsZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0cztcbiAgfVxufVxuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, DOCUMENT, Directive, ElementRef, PLATFORM_ID, ViewContainerRef, inject, input, output, signal, } from '@angular/core';\nimport { bindUploaderZoneHost, unbindUploaderZoneHost } from './uploader-zone-host';\nimport { AXUploaderService } from './uploader.service';\nimport * as i0 from \"@angular/core\";\n/**\n * A directive that provides drag-and-drop and file upload functionality.\n * When applied to an element, it enables drag-and-drop file uploads and file browsing.\n * @category Directives\n */\nexport class AXUploaderZoneDirective {\n /**\n * Initializes the directive with event listeners and service subscriptions.\n */\n constructor() {\n /**\n * The element reference for the directive host.\n * @ignore\n */\n this.elementRef = inject(ElementRef);\n /**\n * View container reference for rendering custom templates.\n * @ignore\n */\n this.viewContainerRef = inject(ViewContainerRef);\n /**\n * Whether multiple files can be selected.\n * @defaultValue true\n */\n this.multiple = input(true, ...(ngDevMode ? [{ debugName: \"multiple\" }] : []));\n /**\n * File types that are accepted for upload.\n * @defaultValue null\n */\n this.accept = input(null, ...(ngDevMode ? [{ debugName: \"accept\" }] : []));\n /**\n * Logical file type name from {@link AXFileService} (e.g. `conversation-image`).\n * Required for browse handles and validated selection.\n */\n this.fileType = input(null, ...(ngDevMode ? [{ debugName: \"fileType\" }] : []));\n /**\n * Custom template for the drag overlay. If provided, this will be used instead of the default overlay.\n */\n this.overlayTemplate = input(...(ngDevMode ? [undefined, { debugName: \"overlayTemplate\" }] : []));\n /**\n * Whether browsing files by clicking on the container is disabled.\n * @defaultValue false\n */\n this.disableBrowse = input(false, ...(ngDevMode ? [{ debugName: \"disableBrowse\" }] : []));\n /**\n * Whether drag and drop functionality is disabled.\n * @defaultValue false\n */\n this.disableDragDrop = input(false, ...(ngDevMode ? [{ debugName: \"disableDragDrop\" }] : []));\n /**\n * Change detector reference.\n * @ignore\n */\n this.cdr = inject(ChangeDetectorRef);\n /**\n * Document reference.\n * @ignore\n */\n this.document = inject(DOCUMENT);\n /**\n * Platform ID for browser detection.\n * @ignore\n */\n this.platformID = inject(PLATFORM_ID);\n /**\n * Upload service instance.\n * @ignore\n */\n this.uploadService = inject(AXUploaderService);\n /**\n * Unsubscriber service instance.\n * @ignore\n */\n this.unsubscriber = inject(AXUnsubscriber);\n /**\n * Translation service instance.\n * @ignore\n */\n this.translateService = inject(AXTranslationService);\n /**\n * Embedded view reference for custom template.\n * @ignore\n */\n this.templateViewRef = null;\n /**\n * Emitted when files are selected or dropped (like HTML file input).\n * Emits an event with files property containing the selected files.\n */\n this.fileChange = output();\n /**\n * Emitted when files are changed (added, removed, etc.).\n * @deprecated Use fileChange instead for simpler file input-like behavior\n */\n this.onChanged = output();\n /**\n * Emitted on drag enter event.\n */\n this.dragEnter = output();\n /**\n * Emitted on drag leave event.\n */\n this.dragLeave = output();\n /**\n * Emitted on drag over event.\n */\n this.dragOver = output();\n /**\n * Emitted when a single file upload is completed.\n */\n this.onFileUploadComplete = output();\n /**\n * Emitted when all files upload is completed.\n */\n this.onFilesUploadComplete = output();\n /**\n * CSS class for the overlay state.\n * @ignore\n */\n this.stateClass = 'ax-uploader-overlay-state';\n /**\n * The overlay element for drag and drop visual feedback.\n * @ignore\n */\n this.overlayElement = null;\n /**\n * Flag to track if dragOver has been emitted for the current drag session.\n * @ignore\n */\n this.dragOverEmitted = signal(false, ...(ngDevMode ? [{ debugName: \"dragOverEmitted\" }] : []));\n /**\n * Counter to track drag enter/leave depth to prevent false dragleave events.\n * When moving from parent to child, dragleave fires even though we're still inside.\n * @ignore\n */\n this.dragDepth = signal(0, ...(ngDevMode ? [{ debugName: \"dragDepth\" }] : []));\n /**\n * Animation end handler for cleanup.\n * @ignore\n */\n this.animationEndHandler = null;\n this.element = this.elementRef.nativeElement;\n this.element.style.position = 'relative';\n bindUploaderZoneHost(this.element, this);\n //\n this.uploadService.onFileUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFileUploadComplete.emit(c);\n });\n this.uploadService.onFilesUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFilesUploadComplete.emit(c);\n });\n //\n setTimeout(() => {\n const browseHandlers = this.element.querySelectorAll('[data-ax-uploader-browse-handle=\"true\"]');\n if (browseHandlers.length <= 0 && !this.disableBrowse()) {\n this.element.addEventListener('click', this.browser.bind(this), true);\n }\n });\n if (!this.disableDragDrop()) {\n this.element.addEventListener('dragenter', this.handleDragEnter.bind(this), true);\n this.element.addEventListener('dragover', this.handleDragOver.bind(this), true);\n this.element.addEventListener('drop', this.handleOnDrop.bind(this), true);\n this.element.addEventListener('dragleave', (e) => this.removeZone(e), true);\n }\n }\n /**\n * Cleans up event listeners when the directive is destroyed.\n */\n ngOnDestroy() {\n unbindUploaderZoneHost(this.element);\n this.element.removeEventListener('click', this.browser.bind(this));\n this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.removeEventListener('drop', this.handleOnDrop.bind(this));\n this.element.removeEventListener('dragover', this.handleDragOver.bind(this));\n this.element.removeEventListener('dragleave', this.removeZone.bind(this));\n }\n /**\n * Handles drag enter events to show the upload overlay.\n * @private\n */\n async handleDragEnter(event) {\n if (this.disableDragDrop())\n return;\n this.dragOverEmitted.set(false); // Reset flag when entering\n this.dragDepth.update((depth) => depth + 1); // Increment depth counter\n // Only create overlay on first enter (when depth is 1)\n if (this.dragDepth() === 1) {\n // Cancel any pending exit animation\n this.cancelExitAnimation();\n await this.createZone();\n this.dragEnter.emit(event);\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n /**\n * Handles drop events to process dropped files.\n * @private\n */\n async handleOnDrop(event) {\n if (this.disableDragDrop())\n return;\n event.preventDefault();\n event.stopImmediatePropagation();\n // Reset drag depth on drop\n this.dragDepth.set(0);\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n let files = Array.from(event.dataTransfer.files);\n let rejected;\n const catalog = this.fileType();\n if (catalog) {\n const result = await this.uploadService.validateFiles(files, catalog);\n files = result.accepted;\n rejected = result.rejected;\n }\n this.fileChange.emit({ event, files, rejected });\n if (!this.disableBrowse()) {\n const requests = await this.uploadService.add(files, { fileType: catalog ?? undefined });\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n }\n this.removeZone();\n this.cdr.detectChanges();\n }\n /**\n * Handles drag over events to allow dropping.\n * @private\n */\n handleDragOver(event) {\n if (this.disableDragDrop())\n return;\n // Only emit dragOver once per drag session to avoid spam\n if (!this.dragOverEmitted()) {\n this.dragOverEmitted.set(true);\n this.dragOver.emit(event);\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n /**\n * Creates the visual overlay for drag and drop feedback.\n * @private\n */\n async createZone() {\n if (isPlatformBrowser(this.platformID)) {\n // Check if overlay already exists (might be exiting)\n let existingOverlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n // Verify the overlay is actually in the DOM (not removed after animation)\n if (existingOverlay && existingOverlay.parentNode === this.element) {\n // Remove exiting class to cancel exit animation and show overlay again\n existingOverlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up any pending animation handler\n if (this.animationEndHandler) {\n existingOverlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n // Reset overlayElement reference if it was cleared\n if (!this.overlayElement && existingOverlay) {\n this.overlayElement = existingOverlay;\n }\n return;\n }\n else if (existingOverlay && existingOverlay.parentNode !== this.element) {\n // Overlay exists but is not in the DOM, clear the reference\n this.overlayElement = null;\n existingOverlay = null;\n }\n // Check if custom template is provided\n const template = this.overlayTemplate();\n if (template) {\n // Create container for template\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n // Create embedded view from template (will be inserted at directive anchor)\n this.viewContainerRef.clear();\n this.templateViewRef = this.viewContainerRef.createEmbeddedView(template);\n this.templateViewRef.detectChanges();\n // Get root nodes and move them to overlay element\n const rootNodes = this.templateViewRef.rootNodes;\n for (const node of rootNodes) {\n // Remove from current location if it has a parent\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n this.overlayElement.appendChild(node);\n }\n // Detach the view since we've moved the nodes\n this.templateViewRef.detach();\n this.element.appendChild(this.overlayElement);\n this.cdr.detectChanges();\n return;\n }\n // Use default overlay\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n const icon = this.document.createElement('span');\n icon.classList.add('ax-icon', 'ax-icon-upload');\n const text = this.document.createElement('span');\n text.innerText = await this.translateService.translateAsync('@acorex:uploader.zone.text');\n this.overlayElement.appendChild(icon);\n this.overlayElement.appendChild(text);\n this.element.appendChild(this.overlayElement);\n }\n }\n /**\n * Cancels any pending exit animation and cleans up handlers.\n * @private\n */\n cancelExitAnimation() {\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n if (overlay && this.animationEndHandler) {\n // Remove exiting class to cancel animation\n overlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up the handler\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n }\n }\n /**\n * Removes the visual overlay for drag and drop feedback.\n * @private\n */\n removeZone(event) {\n if (this.disableDragDrop())\n return;\n this.dragDepth.update((depth) => Math.max(0, depth - 1)); // Decrement depth counter, ensure non-negative\n // Only remove overlay when we've truly left the drop zone (depth reaches 0)\n if (this.dragDepth() <= 0) {\n this.dragDepth.set(0); // Ensure it's exactly 0\n this.dragOverEmitted.set(false); // Reset flag when leaving\n if (event) {\n this.dragLeave.emit(event);\n }\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n if (overlay) {\n // Clean up any existing handler first\n if (this.animationEndHandler) {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n }\n // Add exiting class to trigger CSS animation\n overlay.classList.add('ax-uploader-overlay-exiting');\n // Wait for CSS animation to complete\n this.animationEndHandler = (e) => {\n if (e.target === overlay && e.animationName === 'fadeOutScale') {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n if (overlay.parentNode === this.element) {\n this.element.removeChild(overlay);\n }\n if (this.overlayElement && this.overlayElement.parentNode) {\n this.overlayElement.remove();\n }\n // Clear the overlay element reference\n this.overlayElement = null;\n // Remove custom template view if it exists\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n };\n overlay.addEventListener('animationend', this.animationEndHandler);\n }\n else {\n // If overlay doesn't exist, just clean up template view\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n }\n }\n }\n /**\n * Opens the file browser dialog and processes selected files.\n * @returns Promise that resolves when files are processed\n */\n async browser() {\n const catalog = this.fileType();\n let selected = [];\n let rejected;\n if (catalog) {\n const accept = this.accept() ?? (await this.uploadService.getAcceptAttribute(catalog));\n const result = await this.uploadService.chooseFiles({\n fileType: catalog,\n multiple: this.multiple(),\n accept,\n });\n selected = result.accepted;\n rejected = result.rejected;\n }\n else if (!this.disableBrowse()) {\n const requests = await this.uploadService.browse({\n accept: this.accept() ?? undefined,\n multiple: this.multiple(),\n });\n selected = requests.map((r) => r.file);\n }\n else {\n console.warn('AXUploaderZone.browser: fileType is required when disableBrowse is enabled (use axUploaderBrowseHandle).');\n return;\n }\n if (selected.length === 0 && !(rejected?.length ?? 0)) {\n return;\n }\n const syntheticEvent = new Event('change');\n const target = Object.create(EventTarget.prototype);\n target.files = selected;\n Object.defineProperty(syntheticEvent, 'target', { value: target, writable: false });\n this.fileChange.emit({\n event: syntheticEvent,\n files: selected,\n rejected,\n });\n if (this.disableBrowse()) {\n return;\n }\n const requests = catalog\n ? await this.uploadService.add(selected, { fileType: catalog })\n : await this.uploadService.add(selected);\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderZoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.3\", type: AXUploaderZoneDirective, isStandalone: true, selector: \"[axUploaderZone]\", inputs: { multiple: { classPropertyName: \"multiple\", publicName: \"multiple\", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: \"accept\", publicName: \"accept\", isSignal: true, isRequired: false, transformFunction: null }, fileType: { classPropertyName: \"fileType\", publicName: \"fileType\", isSignal: true, isRequired: false, transformFunction: null }, overlayTemplate: { classPropertyName: \"overlayTemplate\", publicName: \"overlayTemplate\", isSignal: true, isRequired: false, transformFunction: null }, disableBrowse: { classPropertyName: \"disableBrowse\", publicName: \"disableBrowse\", isSignal: true, isRequired: false, transformFunction: null }, disableDragDrop: { classPropertyName: \"disableDragDrop\", publicName: \"disableDragDrop\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileChange: \"fileChange\", onChanged: \"onChanged\", dragEnter: \"dragEnter\", dragLeave: \"dragLeave\", dragOver: \"dragOver\", onFileUploadComplete: \"onFileUploadComplete\", onFilesUploadComplete: \"onFilesUploadComplete\" }, host: { classAttribute: \"ax-drop-zone\" }, providers: [AXUnsubscriber], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderZoneDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axUploaderZone]',\n providers: [AXUnsubscriber],\n host: {\n class: 'ax-drop-zone',\n },\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXItem9uZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdXBsb2FkZXIvc3JjL2xpYi91cGxvYWRlci16b25lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFHVixXQUFXLEVBRVgsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFdkQ7Ozs7R0FJRztBQVFILE1BQU0sT0FBTyx1QkFBdUI7SUFvS2xDOztPQUVHO0lBQ0g7UUF0S0E7OztXQUdHO1FBQ0ssZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4Qzs7O1dBR0c7UUFDSyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVwRDs7O1dBR0c7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksb0RBQUMsQ0FBQztRQUV2Qjs7O1dBR0c7UUFDSCxXQUFNLEdBQUcsS0FBSyxDQUFnQixJQUFJLGtEQUFDLENBQUM7UUFFcEM7OztXQUdHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxvREFBQyxDQUFDO1FBRXRDOztXQUVHO1FBQ0gsb0JBQWUs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LEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXBGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLEtBQUssRUFBRSxjQUFjO1lBQ3JCLEtBQUssRUFBRSxRQUFRO1lBQ2YsUUFBUTtTQUNULENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPO1lBQ3RCLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMvRCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVE7Z0JBQ1IsaUJBQWlCLEVBQUUsSUFBSTthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0E1ZlUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsaXBDQUx2QixDQUFDLGNBQWMsQ0FBQzs7MkZBS2hCLHVCQUF1QjtrQkFQbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzNCLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsY0FBYztxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRE9DVU1FTlQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBPbkRlc3Ryb3ksXG4gIFBMQVRGT1JNX0lELFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhVcGxvYWRlckNoYW5nZWRFdmVudCxcbiAgQVhVcGxvYWRlckZpbGVDaGFuZ2VFdmVudCxcbiAgQVhVcGxvYWRlckZpbGVDb21wbGV0ZUV2ZW50LFxuICBBWFVwbG9hZGVyRmlsZXNDb21wbGV0ZUV2ZW50LFxufSBmcm9tICcuL3VwbG9hZGVyLm1vZGVscyc7XG5pbXBvcnQgeyBiaW5kVXBsb2FkZXJab25lSG9zdCwgdW5iaW5kVXBsb2FkZXJab25lSG9zdCB9IGZyb20gJy4vdXBsb2FkZXItem9uZS1ob3N0JztcbmltcG9ydCB7IEFYVXBsb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi91cGxvYWRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIGRpcmVjdGl2ZSB0aGF0IHByb3ZpZGVzIGRyYWctYW5kLWRyb3AgYW5kIGZpbGUgdXBsb2FkIGZ1bmN0aW9uYWxpdHkuXG4gKiBXaGVuIGFwcGxpZWQgdG8gYW4gZWxlbWVudCwgaXQgZW5hYmxlcyBkcmFnLWFuZC1kcm9wIGZpbGUgdXBsb2FkcyBhbmQgZmlsZSBicm93c2luZy5cbiAqIEBjYXRlZ29yeSBEaXJlY3RpdmVzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theFVwbG9hZGVyWm9uZV0nLFxuICBwcm92aWRlcnM6IFtBWFVuc3Vic2NyaWJlcl0sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2F4LWRyb3Atem9uZScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYVXBsb2FkZXJab25lRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHJlZmVyZW5jZSBmb3IgdGhlIGRpcmVjdGl2ZSBob3N0LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLyoqXG4gICAqIFZpZXcgY29udGFpbmVyIHJlZmVyZW5jZSBmb3IgcmVuZGVyaW5nIGN1c3RvbSB0ZW1wbGF0ZXMuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICAvKipcbiAgICogV2hldGhlciBtdWx0aXBsZSBmaWxlcyBjYW4gYmUgc2VsZWN0ZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgbXVsdGlwbGUgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogRmlsZSB0eXBlcyB0aGF0IGFyZSBhY2NlcHRlZCBmb3IgdXBsb2FkLlxuICAgKiBAZGVmYXVsdFZhbHVlIG51bGxcbiAgICovXG4gIGFjY2VwdCA9IGlucHV0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGZpbGUgdHlwZSBuYW1lIGZyb20ge0BsaW5rIEFYRmlsZVNlcnZpY2V9IChlLmcuIGBjb252ZXJzYXRpb24taW1hZ2VgKS5cbiAgICogUmVxdWlyZWQgZm9yIGJyb3dzZSBoYW5kbGVzIGFuZCB2YWxpZGF0ZWQgc2VsZWN0aW9uLlxuICAgKi9cbiAgZmlsZVR5cGUgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgZHJhZyBvdmVybGF5LiBJZiBwcm92aWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvdmVybGF5LlxuICAgKi9cbiAgb3ZlcmxheVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYnJvd3NpbmcgZmlsZXMgYnkgY2xpY2tpbmcgb24gdGhlIGNvbnRhaW5lciBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUJyb3dzZSA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogV2hldGhlciBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9uYWxpdHkgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIGRpc2FibGVEcmFnRHJvcCA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQ2hhbmdlIGRldGVjdG9yIHJlZmVyZW5jZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudCByZWZlcmVuY2UuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8qKlxuICAgKiBQbGF0Zm9ybSBJRCBmb3IgYnJvd3NlciBkZXRlY3Rpb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgLyoqXG4gICAqIFVwbG9hZCBzZXJ2aWNlIGluc3RhbmNlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHVwbG9hZFNlcnZpY2UgPSBpbmplY3QoQVhVcGxvYWRlclNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZXIgc2VydmljZSBpbnN0YW5jZS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGlvbiBzZXJ2aWNlIGluc3RhbmNlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgaG9zdCBlbGVtZW50LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBFbWJlZGRlZCB2aWV3IHJlZmVyZW5jZSBmb3IgY3VzdG9tIHRlbXBsYXRlLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHRlbXBsYXRlVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBmaWxlcyBhcmUgc2VsZWN0ZWQgb3IgZHJvcHBlZCAobGlrZSBIVE1MIGZpbGUgaW5wdXQpLlxuICAgKiBFbWl0cyBhbiBldmVudCB3aXRoIGZpbGVzIHByb3BlcnR5IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIGZpbGVzLlxuICAgKi9cbiAgZmlsZUNoYW5nZSA9IG91dHB1dDxBWFVwbG9hZGVyRmlsZUNoYW5nZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gZmlsZXMgYXJlIGNoYW5nZWQgKGFkZGVkLCByZW1vdmVkLCBldGMuKS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGZpbGVDaGFuZ2UgaW5zdGVhZCBmb3Igc2ltcGxlciBmaWxlIGlucHV0LWxpa2UgYmVoYXZpb3JcbiAgICovXG4gIG9uQ2hhbmdlZCA9IG91dHB1dDxBWFVwbG9hZGVyQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGRyYWcgZW50ZXIgZXZlbnQuXG4gICAqL1xuICBkcmFnRW50ZXIgPSBvdXRwdXQ8RHJhZ0V2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGRyYWcgbGVhdmUgZXZlbnQuXG4gICAqL1xuICBkcmFnTGVhdmUgPSBvdXRwdXQ8RHJhZ0V2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGRyYWcgb3ZlciBldmVudC5cbiAgICovXG4gIGRyYWdPdmVyID0gb3V0cHV0PERyYWdFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgc2luZ2xlIGZpbGUgdXBsb2FkIGlzIGNvbXBsZXRlZC5cbiAgICovXG4gIG9uRmlsZVVwbG9hZENvbXBsZXRlID0gb3V0cHV0PEFYVXBsb2FkZXJGaWxlQ29tcGxldGVFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFsbCBmaWxlcyB1cGxvYWQgaXMgY29tcGxldGVkLlxuICAgKi9cbiAgb25GaWxlc1VwbG9hZENvbXBsZXRlID0gb3V0cHV0PEFYVXBsb2FkZXJGaWxlc0NvbXBsZXRlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyBmb3IgdGhlIG92ZXJsYXkgc3RhdGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHN0YXRlQ2xhc3MgPSAnYXgtdXBsb2FkZXItb3ZlcmxheS1zdGF0ZSc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdmVybGF5IGVsZW1lbnQgZm9yIGRyYWcgYW5kIGRyb3AgdmlzdWFsIGZlZWRiYWNrLlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvdmVybGF5RWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogRmxhZyB0byB0cmFjayBpZiBkcmFnT3ZlciBoYXMgYmVlbiBlbWl0dGVkIGZvciB0aGUgY3VycmVudCBkcmFnIHNlc3Npb24uXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZHJhZ092ZXJFbWl0dGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKipcbiAgICogQ291bnRlciB0byB0cmFjayBkcmFnIGVudGVyL2xlYXZlIGRlcHRoIHRvIHByZXZlbnQgZmFsc2UgZHJhZ2xlYXZlIGV2ZW50cy5cbiAgICogV2hlbiBtb3ZpbmcgZnJvbSBwYXJlbnQgdG8gY2hpbGQsIGRyYWdsZWF2ZSBmaXJlcyBldmVuIHRob3VnaCB3ZSdyZSBzdGlsbCBpbnNpZGUuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZHJhZ0RlcHRoID0gc2lnbmFsKDApO1xuXG4gIC8qKlxuICAgKiBBbmltYXRpb24gZW5kIGhhbmRsZXIgZm9yIGNsZWFudXAuXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgYW5pbWF0aW9uRW5kSGFuZGxlcjogKChlOiBBbmltYXRpb25FdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGRpcmVjdGl2ZSB3aXRoIGV2ZW50IGxpc3RlbmVycyBhbmQgc2VydmljZSBzdWJzY3JpcHRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICBiaW5kVXBsb2FkZXJab25lSG9zdCh0aGlzLmVsZW1lbnQsIHRoaXMpO1xuXG4gICAgLy9cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2Uub25GaWxlVXBsb2FkQ29tcGxldGUucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIHRoaXMub25GaWxlVXBsb2FkQ29tcGxldGUuZW1pdChjKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5vbkZpbGVzVXBsb2FkQ29tcGxldGUucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIHRoaXMub25GaWxlc1VwbG9hZENvbXBsZXRlLmVtaXQoYyk7XG4gICAgfSk7XG4gICAgLy9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGJyb3dzZUhhbmRsZXJzID0gdGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWF4LXVwbG9hZGVyLWJyb3dzZS1oYW5kbGU9XCJ0cnVlXCJdJyk7XG4gICAgICBpZiAoYnJvd3NlSGFuZGxlcnMubGVuZ3RoIDw9IDAgJiYgIXRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuYnJvd3Nlci5iaW5kKHRoaXMpLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlRHJhZ0Ryb3AoKSkge1xuICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuaGFuZGxlRHJhZ0VudGVyLmJpbmQodGhpcyksIHRydWUpO1xuICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5oYW5kbGVEcmFnT3Zlci5iaW5kKHRoaXMpLCB0cnVlKTtcbiAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5oYW5kbGVPbkRyb3AuYmluZCh0aGlzKSwgdHJ1ZSk7XG4gICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgKGUpID0+IHRoaXMucmVtb3ZlWm9uZShlIGFzIERyYWdFdmVudCksIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnMgdXAgZXZlbnQgbGlzdGVuZXJzIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBkZXN0cm95ZWQuXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB1bmJpbmRVcGxvYWRlclpvbmVIb3N0KHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5icm93c2VyLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIHRoaXMuaGFuZGxlRHJhZ0VudGVyLmJpbmQodGhpcykpO1xuICAgIHRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5oYW5kbGVPbkRyb3AuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgdGhpcy5oYW5kbGVEcmFnT3Zlci5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ2xlYXZlJywgdGhpcy5yZW1vdmVab25lLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZHJhZyBlbnRlciBldmVudHMgdG8gc2hvdyB0aGUgdXBsb2FkIG92ZXJsYXkuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGhhbmRsZURyYWdFbnRlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZURyYWdEcm9wKCkpIHJldHVybjtcbiAgICB0aGlzLmRyYWdPdmVyRW1pdHRlZC5zZXQoZmFsc2UpOyAvLyBSZXNldCBmbGFnIHdoZW4gZW50ZXJpbmdcbiAgICB0aGlzLmRyYWdEZXB0aC51cGRhdGUoKGRlcHRoKSA9PiBkZXB0aCArIDEpOyAvLyBJbmNyZW1lbnQgZGVwdGggY291bnRlclxuXG4gICAgLy8gT25seSBjcmVhdGUgb3ZlcmxheSBvbiBmaXJzdCBlbnRlciAod2hlbiBkZXB0aCBpcyAxKVxuICAgIGlmICh0aGlzLmRyYWdEZXB0aCgpID09PSAxKSB7XG4gICAgICAvLyBDYW5jZWwgYW55IHBlbmRpbmcgZXhpdCBhbmltYXRpb25cbiAgICAgIHRoaXMuY2FuY2VsRXhpdEFuaW1hdGlvbigpO1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVab25lKCk7XG4gICAgICB0aGlzLmRyYWdFbnRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZHJvcCBldmVudHMgdG8gcHJvY2VzcyBkcm9wcGVkIGZpbGVzLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVPbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnRHJvcCgpKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIFJlc2V0IGRyYWcgZGVwdGggb24gZHJvcFxuICAgIHRoaXMuZHJhZ0RlcHRoLnNldCgwKTtcblxuICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgZmlsZXMgPSBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgICBsZXQgcmVqZWN0ZWQ6IEFYVXBsb2FkZXJGaWxlQ2hhbmdlRXZlbnRbJ3JlamVjdGVkJ107XG4gICAgICBjb25zdCBjYXRhbG9nID0gdGhpcy5maWxlVHlwZSgpO1xuXG4gICAgICBpZiAoY2F0YWxvZykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UudmFsaWRhdGVGaWxlcyhmaWxlcywgY2F0YWxvZyk7XG4gICAgICAgIGZpbGVzID0gcmVzdWx0LmFjY2VwdGVkO1xuICAgICAgICByZWplY3RlZCA9IHJlc3VsdC5yZWplY3RlZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQoeyBldmVudCwgZmlsZXMsIHJlamVjdGVkIH0pO1xuXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RzID0gYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLmFkZChmaWxlcywgeyBmaWxlVHlwZTogY2F0YWxvZyA/PyB1bmRlZmluZWQgfSk7XG4gICAgICAgIGlmIChyZXF1ZXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgICAgICByZXF1ZXN0cyxcbiAgICAgICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdmVab25lKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZHJhZyBvdmVyIGV2ZW50cyB0byBhbGxvdyBkcm9wcGluZy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnRHJvcCgpKSByZXR1cm47XG4gICAgLy8gT25seSBlbWl0IGRyYWdPdmVyIG9uY2UgcGVyIGRyYWcgc2Vzc2lvbiB0byBhdm9pZCBzcGFtXG4gICAgaWYgKCF0aGlzLmRyYWdPdmVyRW1pdHRlZCgpKSB7XG4gICAgICB0aGlzLmRyYWdPdmVyRW1pdHRlZC5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmRyYWdPdmVyLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHZpc3VhbCBvdmVybGF5IGZvciBkcmFnIGFuZCBkcm9wIGZlZWRiYWNrLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVab25lKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICAvLyBDaGVjayBpZiBvdmVybGF5IGFscmVhZHkgZXhpc3RzIChtaWdodCBiZSBleGl0aW5nKVxuICAgICAgbGV0IGV4aXN0aW5nT3ZlcmxheSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F4LXVwbG9hZGVyLW92ZXJsYXktc3RhdGUnKSB8fCB0aGlzLm92ZXJsYXlFbGVtZW50O1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIG92ZXJsYXkgaXMgYWN0dWFsbHkgaW4gdGhlIERPTSAobm90IHJlbW92ZWQgYWZ0ZXIgYW5pbWF0aW9uKVxuICAgICAgaWYgKGV4aXN0aW5nT3ZlcmxheSAmJiBleGlzdGluZ092ZXJsYXkucGFyZW50Tm9kZSA9PT0gdGhpcy5lbGVtZW50KSB7XG4gICAgICAgIC8vIFJlbW92ZSBleGl0aW5nIGNsYXNzIHRvIGNhbmNlbCBleGl0IGFuaW1hdGlvbiBhbmQgc2hvdyBvdmVybGF5IGFnYWluXG4gICAgICAgIGV4aXN0aW5nT3ZlcmxheS5jbGFzc0xpc3QucmVtb3ZlKCdheC11cGxvYWRlci1vdmVybGF5LWV4aXRpbmcnKTtcbiAgICAgICAgLy8gQ2xlYW4gdXAgYW55IHBlbmRpbmcgYW5pbWF0aW9uIGhhbmRsZXJcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uRW5kSGFuZGxlcikge1xuICAgICAgICAgIGV4aXN0aW5nT3ZlcmxheS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIpO1xuICAgICAgICAgIHRoaXMuYW5pbWF0aW9uRW5kSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzZXQgb3ZlcmxheUVsZW1lbnQgcmVmZXJlbmNlIGlmIGl0IHdhcyBjbGVhcmVkXG4gICAgICAgIGlmICghdGhpcy5vdmVybGF5RWxlbWVudCAmJiBleGlzdGluZ092ZXJsYXkpIHtcbiAgICAgICAgICB0aGlzLm92ZXJsYXlFbGVtZW50ID0gZXhpc3RpbmdPdmVybGF5IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoZXhpc3RpbmdPdmVybGF5ICYmIGV4aXN0aW5nT3ZlcmxheS5wYXJlbnROb2RlICE9PSB0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgLy8gT3ZlcmxheSBleGlzdHMgYnV0IGlzIG5vdCBpbiB0aGUgRE9NLCBjbGVhciB0aGUgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSBudWxsO1xuICAgICAgICBleGlzdGluZ092ZXJsYXkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXN0b20gdGVtcGxhdGUgaXMgcHJvdmlkZWRcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5vdmVybGF5VGVtcGxhdGUoKTtcbiAgICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICAvLyBDcmVhdGUgY29udGFpbmVyIGZvciB0ZW1wbGF0ZVxuICAgICAgICB0aGlzLm92ZXJsYXlFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJywgJy1heC16LTEnKTtcbiAgICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5pZCA9ICdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJztcblxuICAgICAgICAvLyBDcmVhdGUgZW1iZWRkZWQgdmlldyBmcm9tIHRlbXBsYXRlICh3aWxsIGJlIGluc2VydGVkIGF0IGRpcmVjdGl2ZSBhbmNob3IpXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGUpO1xuICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgLy8gR2V0IHJvb3Qgbm9kZXMgYW5kIG1vdmUgdGhlbSB0byBvdmVybGF5IGVsZW1lbnRcbiAgICAgICAgY29uc3Qgcm9vdE5vZGVzID0gdGhpcy50ZW1wbGF0ZVZpZXdSZWYucm9vdE5vZGVzO1xuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygcm9vdE5vZGVzKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGZyb20gY3VycmVudCBsb2NhdGlvbiBpZiBpdCBoYXMgYSBwYXJlbnRcbiAgICAgICAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRhY2ggdGhlIHZpZXcgc2luY2Ugd2UndmUgbW92ZWQgdGhlIG5vZGVzXG4gICAgICAgIHRoaXMudGVtcGxhdGVWaWV3UmVmLmRldGFjaCgpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXlFbGVtZW50KTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFVzZSBkZWZhdWx0IG92ZXJsYXlcbiAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJywgJy1heC16LTEnKTtcbiAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQuaWQgPSAnYXgtdXBsb2FkZXItb3ZlcmxheS1zdGF0ZSc7XG5cbiAgICAgIGNvbnN0IGljb246IEhUTUxTcGFuRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdheC1pY29uJywgJ2F4LWljb24tdXBsb2FkJyk7XG5cbiAgICAgIGNvbnN0IHRleHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHRleHQuaW5uZXJUZXh0ID0gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OnVwbG9hZGVyLnpvbmUudGV4dCcpO1xuXG4gICAgICB0aGlzLm92ZXJsYXlFbGVtZW50LmFwcGVuZENoaWxkKGljb24pO1xuICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0KTtcblxuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIGFueSBwZW5kaW5nIGV4aXQgYW5pbWF0aW9uIGFuZCBjbGVhbnMgdXAgaGFuZGxlcnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNhbmNlbEV4aXRBbmltYXRpb24oKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdheC11cGxvYWRlci1vdmVybGF5LXN0YXRlJykgfHwgdGhpcy5vdmVybGF5RWxlbWVudDtcblxuICAgICAgaWYgKG92ZXJsYXkgJiYgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKSB7XG4gICAgICAgIC8vIFJlbW92ZSBleGl0aW5nIGNsYXNzIHRvIGNhbmNlbCBhbmltYXRpb25cbiAgICAgICAgb3ZlcmxheS5jbGFzc0xpc3QucmVtb3ZlKCdheC11cGxvYWRlci1vdmVybGF5LWV4aXRpbmcnKTtcbiAgICAgICAgLy8gQ2xlYW4gdXAgdGhlIGhhbmRsZXJcbiAgICAgICAgb3ZlcmxheS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIpO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSB2aXN1YWwgb3ZlcmxheSBmb3IgZHJhZyBhbmQgZHJvcCBmZWVkYmFjay5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlWm9uZShldmVudD86IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVEcmFnRHJvcCgpKSByZXR1cm47XG4gICAgdGhpcy5kcmFnRGVwdGgudXBkYXRlKChkZXB0aCkgPT4gTWF0aC5tYXgoMCwgZGVwdGggLSAxKSk7IC8vIERlY3JlbWVudCBkZXB0aCBjb3VudGVyLCBlbnN1cmUgbm9uLW5lZ2F0aXZlXG5cbiAgICAvLyBPbmx5IHJlbW92ZSBvdmVybGF5IHdoZW4gd2UndmUgdHJ1bHkgbGVmdCB0aGUgZHJvcCB6b25lIChkZXB0aCByZWFjaGVzIDApXG4gICAgaWYgKHRoaXMuZHJhZ0RlcHRoKCkgPD0gMCkge1xuICAgICAgdGhpcy5kcmFnRGVwdGguc2V0KDApOyAvLyBFbnN1cmUgaXQncyBleGFjdGx5IDBcbiAgICAgIHRoaXMuZHJhZ092ZXJFbWl0dGVkLnNldChmYWxzZSk7IC8vIFJlc2V0IGZsYWcgd2hlbiBsZWF2aW5nXG5cbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICB0aGlzLmRyYWdMZWF2ZS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F4LXVwbG9hZGVyLW92ZXJsYXktc3RhdGUnKSB8fCB0aGlzLm92ZXJsYXlFbGVtZW50O1xuXG4gICAgICAgIGlmIChvdmVybGF5KSB7XG4gICAgICAgICAgLy8gQ2xlYW4gdXAgYW55IGV4aXN0aW5nIGhhbmRsZXIgZmlyc3RcbiAgICAgICAgICBpZiAodGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKSB7XG4gICAgICAgICAgICBvdmVybGF5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYW5pbWF0aW9uRW5kSGFuZGxlcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQWRkIGV4aXRpbmcgY2xhc3MgdG8gdHJpZ2dlciBDU1MgYW5pbWF0aW9uXG4gICAgICAgICAgb3ZlcmxheS5jbGFzc0xpc3QuYWRkKCdheC11cGxvYWRlci1vdmVybGF5LWV4aXRpbmcnKTtcblxuICAgICAgICAgIC8vIFdhaXQgZm9yIENTUyBhbmltYXRpb24gdG8gY29tcGxldGVcbiAgICAgICAgICB0aGlzLmFuaW1hdGlvbkVuZEhhbmRsZXIgPSAoZTogQW5pbWF0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChlLnRhcmdldCA9PT0gb3ZlcmxheSAmJiBlLmFuaW1hdGlvbk5hbWUgPT09ICdmYWRlT3V0U2NhbGUnKSB7XG4gICAgICAgICAgICAgIG92ZXJsYXkucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKTtcbiAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyID0gbnVsbDtcblxuICAgICAgICAgICAgICBpZiAob3ZlcmxheS5wYXJlbnROb2RlID09PSB0aGlzLmVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQob3ZlcmxheSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHRoaXMub3ZlcmxheUVsZW1lbnQgJiYgdGhpcy5vdmVybGF5RWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5RWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBvdmVybGF5IGVsZW1lbnQgcmVmZXJlbmNlXG4gICAgICAgICAgICAgIHRoaXMub3ZlcmxheUVsZW1lbnQgPSBudWxsO1xuXG4gICAgICAgICAgICAgIC8vIFJlbW92ZSBjdXN0b20gdGVtcGxhdGUgdmlldyBpZiBpdCBleGlzdHNcbiAgICAgICAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVWaWV3UmVmKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVZpZXdSZWYgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIG92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgdGhpcy5hbmltYXRpb25FbmRIYW5kbGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBvdmVybGF5IGRvZXNuJ3QgZXhpc3QsIGp1c3QgY2xlYW4gdXAgdGVtcGxhdGUgdmlld1xuICAgICAgICAgIGlmICh0aGlzLnRlbXBsYXRlVmlld1JlZikge1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBmaWxlIGJyb3dzZXIgZGlhbG9nIGFuZCBwcm9jZXNzZXMgc2VsZWN0ZWQgZmlsZXMuXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGZpbGVzIGFyZSBwcm9jZXNzZWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBicm93c2VyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhdGFsb2cgPSB0aGlzLmZpbGVUeXBlKCk7XG4gICAgbGV0IHNlbGVjdGVkOiBGaWxlW10gPSBbXTtcbiAgICBsZXQgcmVqZWN0ZWQ6IEFYVXBsb2FkZXJGaWxlQ2hhbmdlRXZlbnRbJ3JlamVjdGVkJ107XG5cbiAgICBpZiAoY2F0YWxvZykge1xuICAgICAgY29uc3QgYWNjZXB0ID0gdGhpcy5hY2NlcHQoKSA/PyAoYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLmdldEFjY2VwdEF0dHJpYnV0ZShjYXRhbG9nKSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UuY2hvb3NlRmlsZXMoe1xuICAgICAgICBmaWxlVHlwZTogY2F0YWxvZyxcbiAgICAgICAgbXVsdGlwbGU6IHRoaXMubXVsdGlwbGUoKSxcbiAgICAgICAgYWNjZXB0LFxuICAgICAgfSk7XG4gICAgICBzZWxlY3RlZCA9IHJlc3VsdC5hY2NlcHRlZDtcbiAgICAgIHJlamVjdGVkID0gcmVzdWx0LnJlamVjdGVkO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICBjb25zdCByZXF1ZXN0cyA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS5icm93c2Uoe1xuICAgICAgICBhY2NlcHQ6IHRoaXMuYWNjZXB0KCkgPz8gdW5kZWZpbmVkLFxuICAgICAgICBtdWx0aXBsZTogdGhpcy5tdWx0aXBsZSgpLFxuICAgICAgfSk7XG4gICAgICBzZWxlY3RlZCA9IHJlcXVlc3RzLm1hcCgocikgPT4gci5maWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnQVhVcGxvYWRlclpvbmUuYnJvd3NlcjogZmlsZVR5cGUgaXMgcmVxdWlyZWQgd2hlbiBkaXNhYmxlQnJvd3NlIGlzIGVuYWJsZWQgKHVzZSBheFVwbG9hZGVyQnJvd3NlSGFuZGxlKS4nLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwICYmICEocmVqZWN0ZWQ/Lmxlbmd0aCA/PyAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnKTtcbiAgICBjb25zdCB0YXJnZXQgPSBPYmplY3QuY3JlYXRlKEV2ZW50VGFyZ2V0LnByb3RvdHlwZSkgYXMgRXZlbnRUYXJnZXQgJiB7IGZpbGVzOiBGaWxlW10gfTtcbiAgICB0YXJnZXQuZmlsZXMgPSBzZWxlY3RlZDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ludGhldGljRXZlbnQsICd0YXJnZXQnLCB7IHZhbHVlOiB0YXJnZXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcblxuICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHtcbiAgICAgIGV2ZW50OiBzeW50aGV0aWNFdmVudCxcbiAgICAgIGZpbGVzOiBzZWxlY3RlZCxcbiAgICAgIHJlamVjdGVkLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZUJyb3dzZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdHMgPSBjYXRhbG9nXG4gICAgICA/IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS5hZGQoc2VsZWN0ZWQsIHsgZmlsZVR5cGU6IGNhdGFsb2cgfSlcbiAgICAgIDogYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLmFkZChzZWxlY3RlZCk7XG5cbiAgICBpZiAocmVxdWVzdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgcmVxdWVzdHMsXG4gICAgICAgIGlzVXNlckludGVyYWN0aW9uOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, PLATFORM_ID, inject } from '@angular/core';\nimport { findUploaderZoneFromDom } from './uploader-zone-host';\nimport { AXUploaderZoneDirective } from './uploader-zone.directive';\nimport * as i0 from \"@angular/core\";\n/**\n * Triggers the nearest {@link AXUploaderZoneDirective} file dialog on click.\n * Resolves the zone via DI when possible, otherwise walks the DOM (supports content projection).\n * @category Directives\n */\nexport class AXUploaderBrowseDirective {\n constructor() {\n this.elementRef = inject(ElementRef);\n this.platformID = inject(PLATFORM_ID);\n /** When browse + zone share the same host element. */\n this.zoneFromInjector = inject(AXUploaderZoneDirective, { optional: true, self: true });\n this.onClick = () => {\n void this.handleClick();\n };\n }\n ngOnInit() {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const element = this.elementRef.nativeElement;\n element.addEventListener('click', this.onClick);\n if (element.dataset) {\n element.dataset['axUploaderBrowseHandle'] = 'true';\n }\n else {\n element.setAttribute('data-ax-uploader-browse-handle', 'true');\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformID)) {\n this.elementRef.nativeElement.removeEventListener('click', this.onClick);\n }\n }\n resolveZone() {\n return (this.zoneFromInjector ??\n findUploaderZoneFromDom(this.elementRef.nativeElement) ??\n undefined);\n }\n async handleClick() {\n const zone = this.resolveZone();\n if (!zone) {\n console.warn('[axUploaderBrowseHandle] No axUploaderZone found. Place axUploaderBrowseHandle inside an axUploaderZone.');\n return;\n }\n await zone.browser();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderBrowseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXUploaderBrowseDirective, isStandalone: true, selector: \"[axUploaderBrowseHandle]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXUploaderBrowseDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axUploaderBrowseHandle]' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXItYnJvd3NlLWhhbmRsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdXBsb2FkZXIvc3JjL2xpYi91cGxvYWRlci1icm93c2UtaGFuZGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFcEU7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDekQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxzREFBc0Q7UUFDckMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVuRixZQUFPLEdBQUcsR0FBUyxFQUFFO1lBQ3BDLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztLQXVDSDtJQXJDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLENBQ0wsSUFBSSxDQUFDLGdCQUFnQjtZQUNyQix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUN0RCxTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVztRQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLElBQUksQ0FDViwwR0FBMEcsQ0FDM0csQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs4R0E5Q1UseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRHJDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBQTEFURk9STV9JRCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaW5kVXBsb2FkZXJab25lRnJvbURvbSB9IGZyb20gJy4vdXBsb2FkZXItem9uZS1ob3N0JztcbmltcG9ydCB7IEFYVXBsb2FkZXJab25lRGlyZWN0aXZlIH0gZnJvbSAnLi91cGxvYWRlci16b25lLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogVHJpZ2dlcnMgdGhlIG5lYXJlc3Qge0BsaW5rIEFYVXBsb2FkZXJab25lRGlyZWN0aXZlfSBmaWxlIGRpYWxvZyBvbiBjbGljay5cbiAqIFJlc29sdmVzIHRoZSB6b25lIHZpYSBESSB3aGVuIHBvc3NpYmxlLCBvdGhlcndpc2Ugd2Fsa3MgdGhlIERPTSAoc3VwcG9ydHMgY29udGVudCBwcm9qZWN0aW9uKS5cbiAqIEBjYXRlZ29yeSBEaXJlY3RpdmVzXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theFVwbG9hZGVyQnJvd3NlSGFuZGxlXScgfSlcbmV4cG9ydCBjbGFzcyBBWFVwbG9hZGVyQnJvd3NlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAvKiogV2hlbiBicm93c2UgKyB6b25lIHNoYXJlIHRoZSBzYW1lIGhvc3QgZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSB6b25lRnJvbUluamVjdG9yID0gaW5qZWN0KEFYVXBsb2FkZXJab25lRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb25DbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICB2b2lkIHRoaXMuaGFuZGxlQ2xpY2soKTtcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uQ2xpY2spO1xuICAgIGlmIChlbGVtZW50LmRhdGFzZXQpIHtcbiAgICAgIGVsZW1lbnQuZGF0YXNldFsnYXhVcGxvYWRlckJyb3dzZUhhbmRsZSddID0gJ3RydWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1heC11cGxvYWRlci1icm93c2UtaGFuZGxlJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uQ2xpY2spO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVpvbmUoKTogQVhVcGxvYWRlclpvbmVEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnpvbmVGcm9tSW5qZWN0b3IgPz9cbiAgICAgIGZpbmRVcGxvYWRlclpvbmVGcm9tRG9tKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSA/P1xuICAgICAgdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgem9uZSA9IHRoaXMucmVzb2x2ZVpvbmUoKTtcbiAgICBpZiAoIXpvbmUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1theFVwbG9hZGVyQnJvd3NlSGFuZGxlXSBObyBheFVwbG9hZGVyWm9uZSBmb3VuZC4gUGxhY2UgYXhVcGxvYWRlckJyb3dzZUhhbmRsZSBpbnNpZGUgYW4gYXhVcGxvYWRlclpvbmUuJyxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHpvbmUuYnJvd3NlcigpO1xuICB9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay11cGxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay91cGxvYWRlci9zcmMvYWNvcmV4LWNkay11cGxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/cdk",
|
|
3
|
-
"version": "21.0.2-next.
|
|
3
|
+
"version": "21.0.2-next.24",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "21.0.2-next.
|
|
5
|
+
"@acorex/core": "21.0.2-next.24",
|
|
6
6
|
"quill": ">=2.0.2",
|
|
7
7
|
"qrcode": ">=1.5.4",
|
|
8
8
|
"swiper": ">=11.1.15",
|
|
@@ -19,10 +19,6 @@
|
|
|
19
19
|
"types": "./index.d.ts",
|
|
20
20
|
"default": "./fesm2022/acorex-cdk.mjs"
|
|
21
21
|
},
|
|
22
|
-
"./accordion": {
|
|
23
|
-
"types": "./accordion/index.d.ts",
|
|
24
|
-
"default": "./fesm2022/acorex-cdk-accordion.mjs"
|
|
25
|
-
},
|
|
26
22
|
"./carousel": {
|
|
27
23
|
"types": "./carousel/index.d.ts",
|
|
28
24
|
"default": "./fesm2022/acorex-cdk-carousel.mjs"
|
|
@@ -31,14 +27,18 @@
|
|
|
31
27
|
"types": "./clipboard/index.d.ts",
|
|
32
28
|
"default": "./fesm2022/acorex-cdk-clipboard.mjs"
|
|
33
29
|
},
|
|
34
|
-
"./
|
|
35
|
-
"types": "./
|
|
36
|
-
"default": "./fesm2022/acorex-cdk-
|
|
30
|
+
"./accordion": {
|
|
31
|
+
"types": "./accordion/index.d.ts",
|
|
32
|
+
"default": "./fesm2022/acorex-cdk-accordion.mjs"
|
|
37
33
|
},
|
|
38
34
|
"./dom": {
|
|
39
35
|
"types": "./dom/index.d.ts",
|
|
40
36
|
"default": "./fesm2022/acorex-cdk-dom.mjs"
|
|
41
37
|
},
|
|
38
|
+
"./common": {
|
|
39
|
+
"types": "./common/index.d.ts",
|
|
40
|
+
"default": "./fesm2022/acorex-cdk-common.mjs"
|
|
41
|
+
},
|
|
42
42
|
"./double-click": {
|
|
43
43
|
"types": "./double-click/index.d.ts",
|
|
44
44
|
"default": "./fesm2022/acorex-cdk-double-click.mjs"
|
|
@@ -47,6 +47,10 @@
|
|
|
47
47
|
"types": "./drag-drop/index.d.ts",
|
|
48
48
|
"default": "./fesm2022/acorex-cdk-drag-drop.mjs"
|
|
49
49
|
},
|
|
50
|
+
"./drawer": {
|
|
51
|
+
"types": "./drawer/index.d.ts",
|
|
52
|
+
"default": "./fesm2022/acorex-cdk-drawer.mjs"
|
|
53
|
+
},
|
|
50
54
|
"./focus-trap": {
|
|
51
55
|
"types": "./focus-trap/index.d.ts",
|
|
52
56
|
"default": "./fesm2022/acorex-cdk-focus-trap.mjs"
|
|
@@ -55,10 +59,6 @@
|
|
|
55
59
|
"types": "./full-screen/index.d.ts",
|
|
56
60
|
"default": "./fesm2022/acorex-cdk-full-screen.mjs"
|
|
57
61
|
},
|
|
58
|
-
"./drawer": {
|
|
59
|
-
"types": "./drawer/index.d.ts",
|
|
60
|
-
"default": "./fesm2022/acorex-cdk-drawer.mjs"
|
|
61
|
-
},
|
|
62
62
|
"./input-mask": {
|
|
63
63
|
"types": "./input-mask/index.d.ts",
|
|
64
64
|
"default": "./fesm2022/acorex-cdk-input-mask.mjs"
|
package/uploader/index.d.ts
CHANGED
|
@@ -369,7 +369,8 @@ declare class AXUploaderService {
|
|
|
369
369
|
private hasDeleteMediaHandler;
|
|
370
370
|
add(files: FileList | File[], options?: AXUploaderAddOptions): Promise<AXUploadRequest[]>;
|
|
371
371
|
/**
|
|
372
|
-
* Opens the file dialog and returns
|
|
372
|
+
* Opens the file dialog and returns selected files without enqueueing uploads.
|
|
373
|
+
* With `fileType`, applies catalog validation; otherwise uses legacy accept-only selection.
|
|
373
374
|
*/
|
|
374
375
|
chooseFiles(options?: AXUploaderBrowseOptions): Promise<AXUploaderChooseFilesResult>;
|
|
375
376
|
browse(options?: AXUploaderBrowseOptions): Promise<AXUploadRequest[]>;
|