@dereekb/dbx-web 13.10.3 → 13.10.5
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.
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, input, inject, effect, Directive, NgModule, ChangeDetectionStrategy, Component, output, computed, HostListener, forwardRef, InjectionToken, viewChild, ElementRef, makeEnvironmentProviders, ApplicationRef, Injector, EnvironmentInjector, createComponent, DestroyRef, signal, TemplateRef, model, SecurityContext, ViewContainerRef, booleanAttribute, Renderer2 } from '@angular/core';
|
|
3
|
-
import { asPromise, isDefinedAndNotFalse, DASH_CHARACTER_PREFIX_INSTANCE, cssTokenVar, spaceSeparatedCssClasses, cssClassesSet, objectHasNoKeys, getValueFromGetter, firstValue, filterUndefinedValues, separateValues, splitFront, asDecisionFunction, SLASH_PATH_FILE_TYPE_SEPARATOR, filterMaybeArrayValues, mapIterable, toReadableError, isDefaultReadableError, MS_IN_SECOND, mergeObjects, build, ServerErrorResponse, UnauthorizedServerErrorResponse, makeTimer, MS_IN_MINUTE, toggleTimerRunning, unixDateTimeSecondsNumberForNow, ModelRelationUtility, encodeModelKeyTypePair, useIterableOrValue, safeCompareEquality, addMilliseconds, isPast, asArray, slashPathDetails, mimeTypeForFileExtension, slashPathDirectoryTree, isMaybeNot, isNotFalse, modifier, combineMaps, addModifiers, removeModifiers, applyBestFit, findNext, maybeModifierMapToFunction, makeValuesGroupMap, compareWithMappedValuesFunction, invertMaybeBoolean, splitCommaSeparatedStringToSet, ZIP_FILE_MIME_TYPE, cachedGetter, sortByNumberFunction } from '@dereekb/util';
|
|
3
|
+
import { asPromise, isDefinedAndNotFalse, DASH_CHARACTER_PREFIX_INSTANCE, cssTokenVar, spaceSeparatedCssClasses, cssClassesSet, objectHasNoKeys, getValueFromGetter, firstValue, filterUndefinedValues, separateValues, splitFront, asDecisionFunction, SLASH_PATH_FILE_TYPE_SEPARATOR, filterMaybeArrayValues, mapIterable, toReadableError, isDefaultReadableError, MS_IN_SECOND, mergeObjects, build, ServerErrorResponse, UnauthorizedServerErrorResponse, makeTimer, MS_IN_MINUTE, toggleTimerRunning, unixDateTimeSecondsNumberForNow, ModelRelationUtility, encodeModelKeyTypePair, useIterableOrValue, safeCompareEquality, addMilliseconds, isPast, asArray, slashPathDetails, mimeTypeForFileExtension, slashPathDirectoryTree, isMaybeNot, isNotFalse, modifier, combineMaps, addModifiers, removeModifiers, applyBestFit, findNext, maybeModifierMapToFunction, makeValuesGroupMap, compareWithMappedValuesFunction, invertMaybeBoolean, splitCommaSeparatedStringToSet, ZIP_FILE_MIME_TYPE, cachedGetter, sortByNumberFunction, PDF_MIME_TYPE, PNG_MIME_TYPE, JPEG_MIME_TYPE, JPEG_MIME_TYPES, sequentialIncrementingNumberStringModelIdFactory, PDF_HEADER, PDF_EOF_MARKER, PDF_ENCRYPT_MARKER } from '@dereekb/util';
|
|
4
4
|
import * as i1$2 from '@dereekb/dbx-core';
|
|
5
5
|
import { completeOnDestroy, clean, AbstractTransitionWatcherDirective, DbxInjectionComponent, dbxActionWorkProgress, AbstractDbxButtonDirective, hasNonTrivialChildNodes, provideDbxButton, DbxCoreButtonModule, createInjectorForInjectionComponentConfig, initInjectionComponent, AbstractDbxActionValueGetterDirective, cleanSubscription, AbstractDbxActionHandlerDirective, FilterSourceDirective, provideActionStoreSource, isClickableFilterPreset, AbstractDbxAnchorDirective, expandClickableAnchorLinkTrees, DbxCoreFilterModule, DbxButton, DbxActionContextStoreSourceInstance, cleanSubscriptionWithLockSet, DBX_INJECTION_COMPONENT_DATA, checkNgContentWrapperHasContent, cleanLoadingContext, DbxActionSourceDirective, DbxActionSuccessHandlerDirective, DbxActionDirective, transformEmptyStringInputToUndefined, isIdleActionState, canTriggerAction, DbxCoreActionModule, DbxActionButtonDirective, onDbxAppAuth, SimpleStorageAccessorFactory, mergeStaticProviders, asSegueRef, AbstractTransitionDirective, DbxRouterService, AbstractIfDirective, isSegueRefActive, anchorTypeForAnchor } from '@dereekb/dbx-core';
|
|
6
6
|
import { NgPopoverRef, NgOverlayContainerService } from 'ng-overlay-container';
|
|
7
7
|
import { of, map, BehaviorSubject, distinctUntilChanged, shareReplay, delay, Subject, first, startWith, filter, throttleTime, skip, defaultIfEmpty, combineLatest, switchMap, delayWhen, timer, asyncScheduler, from, firstValueFrom, mergeMap, race, tap, catchError, distinct, merge, exhaustMap } from 'rxjs';
|
|
8
8
|
import { LockSet, distinctUntilItemsHaveDifferentValues, filterMaybe, skipAllInitialMaybe, maybeValueFromObservableOrValue, switchMapMaybeLoadingContextStream, LoadingStateType, loadingStateType, successResult, valueFromFinishedLoadingState, loadingStateContext, initialize, asObservable, isNot, mapForEach, SubscriptionObject, switchMapMaybe, listLoadingStateContext, isLoadingStateFinishedLoading, startWithBeginLoading, loadingStateFromObs, errorResult, beginLoading, distinctUntilHasDifferentValues } from '@dereekb/rxjs';
|
|
9
9
|
import { ComponentStore } from '@ngrx/component-store';
|
|
10
|
-
import { toSignal, toObservable } from '@angular/core/rxjs-interop';
|
|
10
|
+
import { toSignal, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
11
11
|
import * as i1 from '@angular/material/button';
|
|
12
12
|
import { MatButtonModule, MatIconButton } from '@angular/material/button';
|
|
13
13
|
import * as i1$1 from '@angular/material/icon';
|
|
14
14
|
import { MatIconModule, MatIcon } from '@angular/material/icon';
|
|
15
15
|
import { MatProgressBar } from '@angular/material/progress-bar';
|
|
16
|
-
import { NgClass, NgStyle, NgTemplateOutlet, JsonPipe, DatePipe } from '@angular/common';
|
|
17
|
-
import
|
|
16
|
+
import { NgClass, NgStyle, NgTemplateOutlet, JsonPipe, DatePipe, AsyncPipe } from '@angular/common';
|
|
17
|
+
import * as i3 from '@angular/material/progress-spinner';
|
|
18
|
+
import { MatProgressSpinner, MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
18
19
|
import { GlobalPositionStrategy, Overlay } from '@angular/cdk/overlay';
|
|
19
20
|
import { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog';
|
|
20
21
|
import { MatDivider } from '@angular/material/divider';
|
|
@@ -51,6 +52,8 @@ import * as i1$8 from '@angular/material/chips';
|
|
|
51
52
|
import { MatChipsModule } from '@angular/material/chips';
|
|
52
53
|
import * as i2$1 from '@angular/material/tooltip';
|
|
53
54
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
55
|
+
import { PDFDocument } from '@cantoo/pdf-lib';
|
|
56
|
+
import { moveItemInArray, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';
|
|
54
57
|
|
|
55
58
|
/**
|
|
56
59
|
* Creates a flexible connected position strategy for popovers with multiple fallback positions.
|
|
@@ -5626,7 +5629,7 @@ class DbxFileUploadButtonComponent extends AbstractDbxFileUploadComponent {
|
|
|
5626
5629
|
<dbx-button [buttonStyle]="buttonStyle()" [text]="text()" [icon]="icon()" [ariaLabel]="ariaLabel() || text() || 'Upload file'" (buttonClick)="openInput()" [disabled]="disabledSignal()" [working]="workingSignal()">
|
|
5627
5630
|
<ng-content></ng-content>
|
|
5628
5631
|
</dbx-button>
|
|
5629
|
-
<input #fileInput hidden type="file" [attr.accept]="buttonAcceptSignal() ?? null" [attr.multiple]="multipleAttributeSignal()
|
|
5632
|
+
<input #fileInput hidden type="file" [attr.accept]="buttonAcceptSignal() ?? null" [attr.multiple]="multipleAttributeSignal()" (change)="fileInputChanged()" />
|
|
5630
5633
|
`, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5631
5634
|
}
|
|
5632
5635
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxFileUploadButtonComponent, decorators: [{
|
|
@@ -5637,7 +5640,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
5637
5640
|
<dbx-button [buttonStyle]="buttonStyle()" [text]="text()" [icon]="icon()" [ariaLabel]="ariaLabel() || text() || 'Upload file'" (buttonClick)="openInput()" [disabled]="disabledSignal()" [working]="workingSignal()">
|
|
5638
5641
|
<ng-content></ng-content>
|
|
5639
5642
|
</dbx-button>
|
|
5640
|
-
<input #fileInput hidden type="file" [attr.accept]="buttonAcceptSignal() ?? null" [attr.multiple]="multipleAttributeSignal()
|
|
5643
|
+
<input #fileInput hidden type="file" [attr.accept]="buttonAcceptSignal() ?? null" [attr.multiple]="multipleAttributeSignal()" (change)="fileInputChanged()" />
|
|
5641
5644
|
`,
|
|
5642
5645
|
providers: provideDbxFileUploadActionCompatable(DbxFileUploadButtonComponent),
|
|
5643
5646
|
imports: [DbxButtonComponent],
|
|
@@ -8349,7 +8352,8 @@ class DbxDownloadBlobButtonComponent {
|
|
|
8349
8352
|
}, ...(ngDevMode ? [{ debugName: "downloadReadySignal" }] : /* istanbul ignore next */ []));
|
|
8350
8353
|
buttonDisplaySignal = computed(() => {
|
|
8351
8354
|
const config = this.config();
|
|
8352
|
-
|
|
8355
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8356
|
+
const buttonDisplay = config?.buttonStylePair?.display ?? config?.buttonDisplay;
|
|
8353
8357
|
const display = buttonDisplay ?? {
|
|
8354
8358
|
icon: 'download',
|
|
8355
8359
|
text: 'Download'
|
|
@@ -8357,7 +8361,9 @@ class DbxDownloadBlobButtonComponent {
|
|
|
8357
8361
|
return display;
|
|
8358
8362
|
}, ...(ngDevMode ? [{ debugName: "buttonDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
8359
8363
|
buttonStyleSignal = computed(() => {
|
|
8360
|
-
const
|
|
8364
|
+
const config = this.config();
|
|
8365
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
8366
|
+
const buttonStyle = config?.buttonStylePair?.style ?? config?.buttonStyle;
|
|
8361
8367
|
const style = buttonStyle ?? {
|
|
8362
8368
|
type: 'raised'
|
|
8363
8369
|
};
|
|
@@ -15590,12 +15596,14 @@ class DbxZipPreviewEntryListViewItemComponent extends AbstractDbxValueListViewIt
|
|
|
15590
15596
|
return {
|
|
15591
15597
|
loadBlob: this.itemValue.value.getBlob,
|
|
15592
15598
|
fileName: this.itemValue.value.slashPathDetails.fileName,
|
|
15593
|
-
|
|
15594
|
-
|
|
15595
|
-
|
|
15596
|
-
|
|
15597
|
-
|
|
15598
|
-
|
|
15599
|
+
buttonStylePair: {
|
|
15600
|
+
display: {
|
|
15601
|
+
icon: 'download',
|
|
15602
|
+
text: 'Download'
|
|
15603
|
+
},
|
|
15604
|
+
style: {
|
|
15605
|
+
type: 'stroked'
|
|
15606
|
+
}
|
|
15599
15607
|
}
|
|
15600
15608
|
};
|
|
15601
15609
|
}
|
|
@@ -15671,12 +15679,14 @@ class DbxZipBlobPreviewComponent {
|
|
|
15671
15679
|
result = {
|
|
15672
15680
|
blob,
|
|
15673
15681
|
fileName: fileName ?? 'download.zip',
|
|
15674
|
-
|
|
15675
|
-
|
|
15676
|
-
|
|
15677
|
-
|
|
15678
|
-
|
|
15679
|
-
|
|
15682
|
+
buttonStylePair: {
|
|
15683
|
+
display: {
|
|
15684
|
+
icon: 'download_for_offline',
|
|
15685
|
+
text: 'Download Zip'
|
|
15686
|
+
},
|
|
15687
|
+
style: {
|
|
15688
|
+
type: 'stroked'
|
|
15689
|
+
}
|
|
15680
15690
|
}
|
|
15681
15691
|
};
|
|
15682
15692
|
}
|
|
@@ -16765,6 +16775,560 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
16765
16775
|
}]
|
|
16766
16776
|
}], propDecorators: { buttonElement: [{ type: i0.ViewChild, args: ['button', { ...{ read: ElementRef }, isSignal: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }] } });
|
|
16767
16777
|
|
|
16778
|
+
/**
|
|
16779
|
+
* MIME types accepted by the PDF merge editor by default: PDF documents and PNG/JPEG images.
|
|
16780
|
+
*/
|
|
16781
|
+
const PDF_MERGE_DEFAULT_ACCEPT = [PDF_MIME_TYPE, PNG_MIME_TYPE, JPEG_MIME_TYPE];
|
|
16782
|
+
/**
|
|
16783
|
+
* MIME type emitted by the merged result blob.
|
|
16784
|
+
*/
|
|
16785
|
+
const PDF_MERGE_RESULT_MIME_TYPE = PDF_MIME_TYPE;
|
|
16786
|
+
|
|
16787
|
+
const TEXT_DECODER = new TextDecoder('latin1');
|
|
16788
|
+
/**
|
|
16789
|
+
* Returns the {@link PdfMergeEntryKind} for a file based on its MIME type, with a small fallback to file-extension matching when the browser provided no MIME type.
|
|
16790
|
+
*
|
|
16791
|
+
* @param file - File picked from the upload component.
|
|
16792
|
+
* @returns The classified kind, or `null` if the file is not a supported PDF/PNG/JPEG.
|
|
16793
|
+
*/
|
|
16794
|
+
function classifyPdfMergeFile(file) {
|
|
16795
|
+
const mimeType = (file.type ?? '').toLowerCase();
|
|
16796
|
+
const lower = file.name.toLowerCase();
|
|
16797
|
+
let kind;
|
|
16798
|
+
if (mimeType === PDF_MIME_TYPE || lower.endsWith('.pdf')) {
|
|
16799
|
+
kind = 'pdf';
|
|
16800
|
+
}
|
|
16801
|
+
else if (mimeType === PNG_MIME_TYPE || JPEG_MIME_TYPES.includes(mimeType) || lower.endsWith('.png') || lower.endsWith('.jpg') || lower.endsWith('.jpeg')) {
|
|
16802
|
+
kind = 'image';
|
|
16803
|
+
}
|
|
16804
|
+
else {
|
|
16805
|
+
kind = null;
|
|
16806
|
+
}
|
|
16807
|
+
return kind;
|
|
16808
|
+
}
|
|
16809
|
+
/**
|
|
16810
|
+
* Returns the resolved MIME type for a file, falling back to a kind-derived default when the browser supplied no `type`.
|
|
16811
|
+
*
|
|
16812
|
+
* @param file - File whose MIME type should be resolved.
|
|
16813
|
+
* @param kind - Classification used as the basis for fallback resolution.
|
|
16814
|
+
* @returns The MIME type string the merge editor should use for this file.
|
|
16815
|
+
*/
|
|
16816
|
+
function resolvePdfMergeMimeType(file, kind) {
|
|
16817
|
+
let mimeType;
|
|
16818
|
+
if (file.type) {
|
|
16819
|
+
mimeType = file.type;
|
|
16820
|
+
}
|
|
16821
|
+
else {
|
|
16822
|
+
const { typedFileExtension } = slashPathDetails(file.name.toLowerCase());
|
|
16823
|
+
mimeType = mimeTypeForFileExtension(typedFileExtension) ?? (kind === 'pdf' ? PDF_MIME_TYPE : JPEG_MIME_TYPE);
|
|
16824
|
+
}
|
|
16825
|
+
return mimeType;
|
|
16826
|
+
}
|
|
16827
|
+
/**
|
|
16828
|
+
* Default factory used to generate stable per-instance entry IDs.
|
|
16829
|
+
*/
|
|
16830
|
+
const DEFAULT_ENTRY_ID_FACTORY = sequentialIncrementingNumberStringModelIdFactory();
|
|
16831
|
+
/**
|
|
16832
|
+
* Builds a {@link PdfMergeEntry} from a user-provided file, classifying its kind and assigning a fresh id. Returns `null` for unsupported file types so the caller can drop them.
|
|
16833
|
+
*
|
|
16834
|
+
* @param file - File the user added.
|
|
16835
|
+
* @param idFactory - Optional id factory override (used by tests for deterministic ids).
|
|
16836
|
+
* @returns The new entry with `validating` status, or `null` when the file is not a supported PDF/PNG/JPEG.
|
|
16837
|
+
*/
|
|
16838
|
+
function buildPdfMergeEntry(file, idFactory = DEFAULT_ENTRY_ID_FACTORY) {
|
|
16839
|
+
const kind = classifyPdfMergeFile(file);
|
|
16840
|
+
let entry;
|
|
16841
|
+
if (kind == null) {
|
|
16842
|
+
entry = null;
|
|
16843
|
+
}
|
|
16844
|
+
else {
|
|
16845
|
+
const nextEntry = {
|
|
16846
|
+
id: idFactory(),
|
|
16847
|
+
file,
|
|
16848
|
+
name: file.name,
|
|
16849
|
+
mimeType: resolvePdfMergeMimeType(file, kind),
|
|
16850
|
+
size: file.size,
|
|
16851
|
+
kind,
|
|
16852
|
+
status: 'validating'
|
|
16853
|
+
};
|
|
16854
|
+
nextEntry.validation = validatePdfMergeEntry(nextEntry);
|
|
16855
|
+
entry = nextEntry;
|
|
16856
|
+
}
|
|
16857
|
+
return entry;
|
|
16858
|
+
}
|
|
16859
|
+
/**
|
|
16860
|
+
* Lightly inspects a file's bytes to confirm the entry can participate in a merge. PDFs are checked for the standard `%PDF-` header, the `%%EOF` marker, and absence of an `/Encrypt` dictionary. Images are accepted as-is — the actual decode happens during merge.
|
|
16861
|
+
*
|
|
16862
|
+
* @param entry - Entry to validate.
|
|
16863
|
+
* @returns Result indicating whether the entry can be merged plus an error message when validation fails.
|
|
16864
|
+
*/
|
|
16865
|
+
async function validatePdfMergeEntry(entry) {
|
|
16866
|
+
let result;
|
|
16867
|
+
if (entry.kind === 'image') {
|
|
16868
|
+
if (entry.file.size <= 0) {
|
|
16869
|
+
result = { ok: false, errorMessage: 'Image file is empty.' };
|
|
16870
|
+
}
|
|
16871
|
+
else {
|
|
16872
|
+
result = { ok: true };
|
|
16873
|
+
}
|
|
16874
|
+
}
|
|
16875
|
+
else {
|
|
16876
|
+
try {
|
|
16877
|
+
const buffer = await entry.file.arrayBuffer();
|
|
16878
|
+
const text = TEXT_DECODER.decode(buffer);
|
|
16879
|
+
if (!text.startsWith(PDF_HEADER) || !text.includes(PDF_EOF_MARKER)) {
|
|
16880
|
+
result = { ok: false, errorMessage: 'File does not appear to be a valid PDF.' };
|
|
16881
|
+
}
|
|
16882
|
+
else if (text.includes(PDF_ENCRYPT_MARKER)) {
|
|
16883
|
+
result = { ok: false, errorMessage: 'Password-protected PDFs cannot be merged.' };
|
|
16884
|
+
}
|
|
16885
|
+
else {
|
|
16886
|
+
result = { ok: true };
|
|
16887
|
+
}
|
|
16888
|
+
}
|
|
16889
|
+
catch (e) {
|
|
16890
|
+
result = { ok: false, errorMessage: e?.message ?? 'Failed to read PDF.' };
|
|
16891
|
+
}
|
|
16892
|
+
}
|
|
16893
|
+
return result;
|
|
16894
|
+
}
|
|
16895
|
+
async function appendPdfPages(target, entry) {
|
|
16896
|
+
const bytes = await entry.file.arrayBuffer();
|
|
16897
|
+
const source = await PDFDocument.load(bytes);
|
|
16898
|
+
const pages = await target.copyPages(source, source.getPageIndices());
|
|
16899
|
+
pages.forEach((page) => target.addPage(page));
|
|
16900
|
+
}
|
|
16901
|
+
async function appendImagePage(target, entry) {
|
|
16902
|
+
const bytes = await entry.file.arrayBuffer();
|
|
16903
|
+
const isPng = entry.mimeType === PNG_MIME_TYPE || entry.name.toLowerCase().endsWith('.png');
|
|
16904
|
+
const image = isPng ? await target.embedPng(bytes) : await target.embedJpg(bytes);
|
|
16905
|
+
const page = target.addPage([image.width, image.height]);
|
|
16906
|
+
page.drawImage(image, { x: 0, y: 0, width: image.width, height: image.height });
|
|
16907
|
+
}
|
|
16908
|
+
/**
|
|
16909
|
+
* Merges every `ready` entry in the provided array order into a single PDF and returns it as a `Blob`. PDF entries contribute their full set of pages in order; image entries contribute one page sized to the image. Throws if no `ready` entries are provided.
|
|
16910
|
+
*
|
|
16911
|
+
* @param entries - Ordered entries to merge.
|
|
16912
|
+
* @returns A Blob with `application/pdf` MIME type.
|
|
16913
|
+
*/
|
|
16914
|
+
async function mergePdfMergeEntries(entries) {
|
|
16915
|
+
const ready = entries.filter((entry) => entry.status === 'ready');
|
|
16916
|
+
if (ready.length === 0) {
|
|
16917
|
+
throw new Error('No ready entries to merge.');
|
|
16918
|
+
}
|
|
16919
|
+
const target = await PDFDocument.create();
|
|
16920
|
+
for (const entry of ready) {
|
|
16921
|
+
if (entry.kind === 'pdf') {
|
|
16922
|
+
await appendPdfPages(target, entry);
|
|
16923
|
+
}
|
|
16924
|
+
else {
|
|
16925
|
+
await appendImagePage(target, entry);
|
|
16926
|
+
}
|
|
16927
|
+
}
|
|
16928
|
+
const bytes = await target.save();
|
|
16929
|
+
return new Blob([bytes], { type: PDF_MERGE_RESULT_MIME_TYPE });
|
|
16930
|
+
}
|
|
16931
|
+
|
|
16932
|
+
/**
|
|
16933
|
+
* Initial state used by {@link DbxPdfMergeEditorStore} — no entries.
|
|
16934
|
+
*/
|
|
16935
|
+
const DBX_PDF_MERGE_EDITOR_INITIAL_STATE = {
|
|
16936
|
+
rawEntries: []
|
|
16937
|
+
};
|
|
16938
|
+
/**
|
|
16939
|
+
* Component-scoped {@link ComponentStore} that owns the list of files staged for merging in the PDF merge editor. Each {@link PdfMergeEntry} carries its own validation promise from the moment it is built; {@link entries$} composes those promises into a live stream — emitting the entry first in `validating` state and then again as each promise resolves to `ready` or `error`. {@link mergeOutput$} emits the merged PDF blob once every entry has finished validating and at least one is `ready`.
|
|
16940
|
+
*/
|
|
16941
|
+
class DbxPdfMergeEditorStore extends ComponentStore {
|
|
16942
|
+
constructor() {
|
|
16943
|
+
super(DBX_PDF_MERGE_EDITOR_INITIAL_STATE);
|
|
16944
|
+
}
|
|
16945
|
+
// MARK: Selectors
|
|
16946
|
+
/**
|
|
16947
|
+
* Live entry list. Each raw entry's {@link PdfMergeEntry.validation} promise is mapped onto its status: while pending, the entry is emitted with status `validating`; once resolved, the entry is mutated to `ready`/`error` and re-emitted. Subsequent emissions of the underlying state pass already-resolved entries through unchanged.
|
|
16948
|
+
*/
|
|
16949
|
+
entries$ = this.select((state) => state.rawEntries).pipe(switchMap((rawEntries) => combineLatest(rawEntries.map((entry) => {
|
|
16950
|
+
let entry$;
|
|
16951
|
+
if (entry.status === 'validating') {
|
|
16952
|
+
entry$ = from(entry.validation).pipe(map((validationResult) => {
|
|
16953
|
+
let status;
|
|
16954
|
+
if (validationResult.ok) {
|
|
16955
|
+
status = 'ready';
|
|
16956
|
+
}
|
|
16957
|
+
else {
|
|
16958
|
+
status = 'error';
|
|
16959
|
+
}
|
|
16960
|
+
entry.status = status;
|
|
16961
|
+
entry.errorMessage = validationResult.errorMessage;
|
|
16962
|
+
return entry;
|
|
16963
|
+
}), startWith(entry));
|
|
16964
|
+
}
|
|
16965
|
+
else {
|
|
16966
|
+
entry$ = of(entry);
|
|
16967
|
+
}
|
|
16968
|
+
return entry$;
|
|
16969
|
+
})).pipe(defaultIfEmpty([]))), shareReplay(1));
|
|
16970
|
+
entryCount$ = this.entries$.pipe(map((entries) => entries.length), distinctUntilChanged(), shareReplay(1));
|
|
16971
|
+
hasReadyEntries$ = this.entries$.pipe(map((entries) => entries.some((entry) => entry.status === 'ready')), distinctUntilChanged(), shareReplay(1));
|
|
16972
|
+
/**
|
|
16973
|
+
* Emits `true` while any entry's validation promise has not yet resolved (i.e. one or more entries are still in `validating` status).
|
|
16974
|
+
*/
|
|
16975
|
+
isValidating$ = this.entries$.pipe(map((entries) => entries.some((entry) => entry.status === 'validating')), distinctUntilChanged(), shareReplay(1));
|
|
16976
|
+
/**
|
|
16977
|
+
* Emits the merged PDF blob whenever every entry has finished validating (see {@link isValidating$}) and at least one is `ready`. Emits `undefined` while validation is in flight, when the list is empty, or when the most recent merge failed. Multicast via {@link shareReplay} so multiple subscribers share a single merge.
|
|
16978
|
+
*/
|
|
16979
|
+
currentMergeOutput$ = combineLatest([this.entries$, this.isValidating$]).pipe(switchMap(([entries, isValidating]) => {
|
|
16980
|
+
const hasReady = entries.some((entry) => entry.status === 'ready');
|
|
16981
|
+
let next$;
|
|
16982
|
+
if (isValidating || !hasReady) {
|
|
16983
|
+
next$ = of(undefined);
|
|
16984
|
+
}
|
|
16985
|
+
else {
|
|
16986
|
+
next$ = from(mergePdfMergeEntries(entries)).pipe(catchError(() => of(undefined)));
|
|
16987
|
+
}
|
|
16988
|
+
return next$;
|
|
16989
|
+
}), shareReplay(1));
|
|
16990
|
+
mergeOutput$ = this.currentMergeOutput$.pipe(filterMaybe());
|
|
16991
|
+
// MARK: Updaters
|
|
16992
|
+
/**
|
|
16993
|
+
* Builds {@link PdfMergeEntry} objects from the supplied files (skipping unsupported types) and appends them to state. Each entry's validation promise starts when the entry is built; {@link entries$} reflects each result as it resolves.
|
|
16994
|
+
*/
|
|
16995
|
+
addFiles = this.updater((state, files) => {
|
|
16996
|
+
const newEntries = files.map((file) => buildPdfMergeEntry(file)).filter((entry) => entry != null);
|
|
16997
|
+
return newEntries.length > 0 ? { ...state, rawEntries: [...state.rawEntries, ...newEntries] } : state;
|
|
16998
|
+
});
|
|
16999
|
+
removeEntry = this.updater((state, id) => ({ ...state, rawEntries: state.rawEntries.filter((entry) => entry.id !== id) }));
|
|
17000
|
+
moveEntry = this.updater((state, move) => {
|
|
17001
|
+
if (move.previousIndex === move.currentIndex) {
|
|
17002
|
+
return state;
|
|
17003
|
+
}
|
|
17004
|
+
const next = [...state.rawEntries];
|
|
17005
|
+
moveItemInArray(next, move.previousIndex, move.currentIndex);
|
|
17006
|
+
return { ...state, rawEntries: next };
|
|
17007
|
+
});
|
|
17008
|
+
clearAll = this.updater((state) => ({ ...state, rawEntries: [] }));
|
|
17009
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeEditorStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17010
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeEditorStore });
|
|
17011
|
+
}
|
|
17012
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeEditorStore, decorators: [{
|
|
17013
|
+
type: Injectable
|
|
17014
|
+
}], ctorParameters: () => [] });
|
|
17015
|
+
|
|
17016
|
+
const PDF_ICON = 'picture_as_pdf';
|
|
17017
|
+
const IMAGE_ICON = 'image';
|
|
17018
|
+
const ERROR_ICON = 'error';
|
|
17019
|
+
const KILOBYTE = 1024;
|
|
17020
|
+
const MEGABYTE = KILOBYTE * 1024;
|
|
17021
|
+
function formatPdfMergeEntrySize(size) {
|
|
17022
|
+
let result;
|
|
17023
|
+
if (size >= MEGABYTE) {
|
|
17024
|
+
result = `${(size / MEGABYTE).toFixed(1)} MB`;
|
|
17025
|
+
}
|
|
17026
|
+
else if (size >= KILOBYTE) {
|
|
17027
|
+
result = `${(size / KILOBYTE).toFixed(1)} KB`;
|
|
17028
|
+
}
|
|
17029
|
+
else {
|
|
17030
|
+
result = `${size} B`;
|
|
17031
|
+
}
|
|
17032
|
+
return result;
|
|
17033
|
+
}
|
|
17034
|
+
/**
|
|
17035
|
+
* Single row inside the {@link DbxPdfMergeListComponent}: shows the file's icon, name, formatted size, status, drag handle, and a remove button. The component's template is itself a `cdkDrag` element so each row can be reordered inside the parent's `cdkDropList`.
|
|
17036
|
+
*/
|
|
17037
|
+
class DbxPdfMergeEntryComponent {
|
|
17038
|
+
store = inject(DbxPdfMergeEditorStore);
|
|
17039
|
+
entry = input.required(...(ngDevMode ? [{ debugName: "entry" }] : /* istanbul ignore next */ []));
|
|
17040
|
+
iconSignal = computed(() => {
|
|
17041
|
+
const entry = this.entry();
|
|
17042
|
+
let icon;
|
|
17043
|
+
if (entry.status === 'error') {
|
|
17044
|
+
icon = ERROR_ICON;
|
|
17045
|
+
}
|
|
17046
|
+
else if (entry.kind === 'pdf') {
|
|
17047
|
+
icon = PDF_ICON;
|
|
17048
|
+
}
|
|
17049
|
+
else {
|
|
17050
|
+
icon = IMAGE_ICON;
|
|
17051
|
+
}
|
|
17052
|
+
return icon;
|
|
17053
|
+
}, ...(ngDevMode ? [{ debugName: "iconSignal" }] : /* istanbul ignore next */ []));
|
|
17054
|
+
sizeSignal = computed(() => formatPdfMergeEntrySize(this.entry().size), ...(ngDevMode ? [{ debugName: "sizeSignal" }] : /* istanbul ignore next */ []));
|
|
17055
|
+
isValidatingSignal = computed(() => this.entry().status === 'validating', ...(ngDevMode ? [{ debugName: "isValidatingSignal" }] : /* istanbul ignore next */ []));
|
|
17056
|
+
isErrorSignal = computed(() => this.entry().status === 'error', ...(ngDevMode ? [{ debugName: "isErrorSignal" }] : /* istanbul ignore next */ []));
|
|
17057
|
+
statusLabelSignal = computed(() => {
|
|
17058
|
+
const entry = this.entry();
|
|
17059
|
+
let label;
|
|
17060
|
+
if (entry.status === 'validating') {
|
|
17061
|
+
label = 'Checking…';
|
|
17062
|
+
}
|
|
17063
|
+
else if (entry.status === 'error') {
|
|
17064
|
+
label = entry.errorMessage ?? 'Cannot merge';
|
|
17065
|
+
}
|
|
17066
|
+
else {
|
|
17067
|
+
label = null;
|
|
17068
|
+
}
|
|
17069
|
+
return label;
|
|
17070
|
+
}, ...(ngDevMode ? [{ debugName: "statusLabelSignal" }] : /* istanbul ignore next */ []));
|
|
17071
|
+
onRemove() {
|
|
17072
|
+
this.store.removeEntry(this.entry().id);
|
|
17073
|
+
}
|
|
17074
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeEntryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17075
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: DbxPdfMergeEntryComponent, isStandalone: true, selector: "dbx-pdf-merge-entry", inputs: { entry: { classPropertyName: "entry", publicName: "entry", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.dbx-pdf-merge-entry--error": "isErrorSignal()", "class.dbx-pdf-merge-entry--validating": "isValidatingSignal()" }, classAttribute: "dbx-pdf-merge-entry" }, ngImport: i0, template: `
|
|
17076
|
+
<div class="dbx-pdf-merge-entry-row" cdkDrag cdkDragLockAxis="y">
|
|
17077
|
+
<ng-template cdkDragPlaceholder>
|
|
17078
|
+
<div class="dbx-pdf-merge-entry-placeholder"></div>
|
|
17079
|
+
</ng-template>
|
|
17080
|
+
<button mat-icon-button type="button" cdkDragHandle class="dbx-pdf-merge-entry-handle" aria-label="Drag to reorder">
|
|
17081
|
+
<mat-icon>drag_indicator</mat-icon>
|
|
17082
|
+
</button>
|
|
17083
|
+
<mat-icon class="dbx-pdf-merge-entry-icon" [class.dbx-pdf-merge-entry-icon-error]="isErrorSignal()">{{ iconSignal() }}</mat-icon>
|
|
17084
|
+
<div class="dbx-pdf-merge-entry-info">
|
|
17085
|
+
<div class="dbx-pdf-merge-entry-name" [title]="entry().name">{{ entry().name }}</div>
|
|
17086
|
+
<div class="dbx-pdf-merge-entry-meta dbx-hint dbx-small">
|
|
17087
|
+
<span>{{ sizeSignal() }}</span>
|
|
17088
|
+
@if (statusLabelSignal(); as label) {
|
|
17089
|
+
<span class="dbx-pdf-merge-entry-status">{{ label }}</span>
|
|
17090
|
+
}
|
|
17091
|
+
</div>
|
|
17092
|
+
</div>
|
|
17093
|
+
@if (isValidatingSignal()) {
|
|
17094
|
+
<mat-progress-spinner mode="indeterminate" diameter="20"></mat-progress-spinner>
|
|
17095
|
+
}
|
|
17096
|
+
<button mat-icon-button type="button" class="dbx-pdf-merge-entry-remove" (click)="onRemove()" aria-label="Remove file">
|
|
17097
|
+
<mat-icon>close</mat-icon>
|
|
17098
|
+
</button>
|
|
17099
|
+
</div>
|
|
17100
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17101
|
+
}
|
|
17102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeEntryComponent, decorators: [{
|
|
17103
|
+
type: Component,
|
|
17104
|
+
args: [{
|
|
17105
|
+
selector: 'dbx-pdf-merge-entry',
|
|
17106
|
+
template: `
|
|
17107
|
+
<div class="dbx-pdf-merge-entry-row" cdkDrag cdkDragLockAxis="y">
|
|
17108
|
+
<ng-template cdkDragPlaceholder>
|
|
17109
|
+
<div class="dbx-pdf-merge-entry-placeholder"></div>
|
|
17110
|
+
</ng-template>
|
|
17111
|
+
<button mat-icon-button type="button" cdkDragHandle class="dbx-pdf-merge-entry-handle" aria-label="Drag to reorder">
|
|
17112
|
+
<mat-icon>drag_indicator</mat-icon>
|
|
17113
|
+
</button>
|
|
17114
|
+
<mat-icon class="dbx-pdf-merge-entry-icon" [class.dbx-pdf-merge-entry-icon-error]="isErrorSignal()">{{ iconSignal() }}</mat-icon>
|
|
17115
|
+
<div class="dbx-pdf-merge-entry-info">
|
|
17116
|
+
<div class="dbx-pdf-merge-entry-name" [title]="entry().name">{{ entry().name }}</div>
|
|
17117
|
+
<div class="dbx-pdf-merge-entry-meta dbx-hint dbx-small">
|
|
17118
|
+
<span>{{ sizeSignal() }}</span>
|
|
17119
|
+
@if (statusLabelSignal(); as label) {
|
|
17120
|
+
<span class="dbx-pdf-merge-entry-status">{{ label }}</span>
|
|
17121
|
+
}
|
|
17122
|
+
</div>
|
|
17123
|
+
</div>
|
|
17124
|
+
@if (isValidatingSignal()) {
|
|
17125
|
+
<mat-progress-spinner mode="indeterminate" diameter="20"></mat-progress-spinner>
|
|
17126
|
+
}
|
|
17127
|
+
<button mat-icon-button type="button" class="dbx-pdf-merge-entry-remove" (click)="onRemove()" aria-label="Remove file">
|
|
17128
|
+
<mat-icon>close</mat-icon>
|
|
17129
|
+
</button>
|
|
17130
|
+
</div>
|
|
17131
|
+
`,
|
|
17132
|
+
host: {
|
|
17133
|
+
class: 'dbx-pdf-merge-entry',
|
|
17134
|
+
'[class.dbx-pdf-merge-entry--error]': 'isErrorSignal()',
|
|
17135
|
+
'[class.dbx-pdf-merge-entry--validating]': 'isValidatingSignal()'
|
|
17136
|
+
},
|
|
17137
|
+
imports: [CdkDrag, CdkDragHandle, CdkDragPlaceholder, MatIconModule, MatButtonModule, MatProgressSpinnerModule],
|
|
17138
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
17139
|
+
standalone: true
|
|
17140
|
+
}]
|
|
17141
|
+
}], propDecorators: { entry: [{ type: i0.Input, args: [{ isSignal: true, alias: "entry", required: true }] }] } });
|
|
17142
|
+
|
|
17143
|
+
/**
|
|
17144
|
+
* Renders the staged entries inside a CDK drop list. Each row is a {@link DbxPdfMergeEntryComponent} that hosts its own `cdkDrag`, so reordering events bubble up here as `cdkDropListDropped` and forward to the store's `moveEntry` updater.
|
|
17145
|
+
*/
|
|
17146
|
+
class DbxPdfMergeListComponent {
|
|
17147
|
+
store = inject(DbxPdfMergeEditorStore);
|
|
17148
|
+
entries$ = this.store.entries$;
|
|
17149
|
+
onDrop(event) {
|
|
17150
|
+
this.store.moveEntry({ previousIndex: event.previousIndex, currentIndex: event.currentIndex });
|
|
17151
|
+
}
|
|
17152
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17153
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: DbxPdfMergeListComponent, isStandalone: true, selector: "dbx-pdf-merge-list", host: { classAttribute: "dbx-pdf-merge-list" }, ngImport: i0, template: `
|
|
17154
|
+
@if (entries$ | async; as entries) {
|
|
17155
|
+
@if (entries.length === 0) {
|
|
17156
|
+
<div class="dbx-pdf-merge-list-empty dbx-hint">No files added yet.</div>
|
|
17157
|
+
} @else {
|
|
17158
|
+
<div class="dbx-pdf-merge-list-items" cdkDropList (cdkDropListDropped)="onDrop($event)">
|
|
17159
|
+
@for (entry of entries; track entry.id) {
|
|
17160
|
+
<dbx-pdf-merge-entry [entry]="entry"></dbx-pdf-merge-entry>
|
|
17161
|
+
}
|
|
17162
|
+
</div>
|
|
17163
|
+
}
|
|
17164
|
+
}
|
|
17165
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: DbxPdfMergeEntryComponent, selector: "dbx-pdf-merge-entry", inputs: ["entry"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17166
|
+
}
|
|
17167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeListComponent, decorators: [{
|
|
17168
|
+
type: Component,
|
|
17169
|
+
args: [{
|
|
17170
|
+
selector: 'dbx-pdf-merge-list',
|
|
17171
|
+
template: `
|
|
17172
|
+
@if (entries$ | async; as entries) {
|
|
17173
|
+
@if (entries.length === 0) {
|
|
17174
|
+
<div class="dbx-pdf-merge-list-empty dbx-hint">No files added yet.</div>
|
|
17175
|
+
} @else {
|
|
17176
|
+
<div class="dbx-pdf-merge-list-items" cdkDropList (cdkDropListDropped)="onDrop($event)">
|
|
17177
|
+
@for (entry of entries; track entry.id) {
|
|
17178
|
+
<dbx-pdf-merge-entry [entry]="entry"></dbx-pdf-merge-entry>
|
|
17179
|
+
}
|
|
17180
|
+
</div>
|
|
17181
|
+
}
|
|
17182
|
+
}
|
|
17183
|
+
`,
|
|
17184
|
+
host: {
|
|
17185
|
+
class: 'dbx-pdf-merge-list'
|
|
17186
|
+
},
|
|
17187
|
+
imports: [AsyncPipe, CdkDropList, DbxPdfMergeEntryComponent],
|
|
17188
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
17189
|
+
standalone: true
|
|
17190
|
+
}]
|
|
17191
|
+
}] });
|
|
17192
|
+
|
|
17193
|
+
/**
|
|
17194
|
+
* Renders a PDF in a fixed-height embed container. Accepts either a URL or a `Blob` source.
|
|
17195
|
+
*
|
|
17196
|
+
* @example
|
|
17197
|
+
* ```html
|
|
17198
|
+
* <dbx-pdf-preview [blob]="mergedBlob"></dbx-pdf-preview>
|
|
17199
|
+
* ```
|
|
17200
|
+
*/
|
|
17201
|
+
class DbxPdfPreviewComponent {
|
|
17202
|
+
blob = model(...(ngDevMode ? [undefined, { debugName: "blob" }] : /* istanbul ignore next */ []));
|
|
17203
|
+
srcUrl = model(...(ngDevMode ? [undefined, { debugName: "srcUrl" }] : /* istanbul ignore next */ []));
|
|
17204
|
+
downloadFileName = model(...(ngDevMode ? [undefined, { debugName: "downloadFileName" }] : /* istanbul ignore next */ []));
|
|
17205
|
+
mimeType = PDF_MERGE_RESULT_MIME_TYPE;
|
|
17206
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17207
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.10", type: DbxPdfPreviewComponent, isStandalone: true, selector: "dbx-pdf-preview", inputs: { blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null }, srcUrl: { classPropertyName: "srcUrl", publicName: "srcUrl", isSignal: true, isRequired: false, transformFunction: null }, downloadFileName: { classPropertyName: "downloadFileName", publicName: "downloadFileName", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { blob: "blobChange", srcUrl: "srcUrlChange", downloadFileName: "downloadFileNameChange" }, host: { classAttribute: "dbx-pdf-preview" }, ngImport: i0, template: `
|
|
17208
|
+
<dbx-embed class="dbx-pdf-preview-frame" [blob]="blob()" [srcUrl]="srcUrl()" [type]="'application/pdf'"></dbx-embed>
|
|
17209
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxEmbedComponent, selector: "dbx-embed", inputs: ["embedElement", "sanitizeUrl", "srcUrl", "type", "blob"], outputs: ["embedElementChange", "sanitizeUrlChange", "srcUrlChange", "typeChange", "blobChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17210
|
+
}
|
|
17211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfPreviewComponent, decorators: [{
|
|
17212
|
+
type: Component,
|
|
17213
|
+
args: [{
|
|
17214
|
+
selector: 'dbx-pdf-preview',
|
|
17215
|
+
template: `
|
|
17216
|
+
<dbx-embed class="dbx-pdf-preview-frame" [blob]="blob()" [srcUrl]="srcUrl()" [type]="'application/pdf'"></dbx-embed>
|
|
17217
|
+
`,
|
|
17218
|
+
host: {
|
|
17219
|
+
class: 'dbx-pdf-preview'
|
|
17220
|
+
},
|
|
17221
|
+
imports: [DbxEmbedComponent],
|
|
17222
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
17223
|
+
standalone: true
|
|
17224
|
+
}]
|
|
17225
|
+
}], propDecorators: { blob: [{ type: i0.Input, args: [{ isSignal: true, alias: "blob", required: false }] }, { type: i0.Output, args: ["blobChange"] }], srcUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "srcUrl", required: false }] }, { type: i0.Output, args: ["srcUrlChange"] }], downloadFileName: [{ type: i0.Input, args: [{ isSignal: true, alias: "downloadFileName", required: false }] }, { type: i0.Output, args: ["downloadFileNameChange"] }] } });
|
|
17226
|
+
|
|
17227
|
+
/**
|
|
17228
|
+
* Opens a dialog containing a {@link DbxPdfPreviewComponent} for previewing a PDF blob or URL.
|
|
17229
|
+
*
|
|
17230
|
+
* @param matDialog The {@link MatDialog} instance to use.
|
|
17231
|
+
* @param config Source (blob or URL) and Material dialog options.
|
|
17232
|
+
* @returns The {@link MatDialogRef} for the opened dialog.
|
|
17233
|
+
*/
|
|
17234
|
+
function openPdfPreviewDialog(matDialog, config) {
|
|
17235
|
+
return DbxInjectionDialogComponent.openDialog(matDialog, {
|
|
17236
|
+
...config,
|
|
17237
|
+
showCloseButton: false,
|
|
17238
|
+
componentConfig: {
|
|
17239
|
+
componentClass: DbxPdfPreviewComponent,
|
|
17240
|
+
init: (x) => {
|
|
17241
|
+
const { blob, srcUrl, downloadFileName } = config;
|
|
17242
|
+
if (blob != null) {
|
|
17243
|
+
x.blob.set(blob);
|
|
17244
|
+
}
|
|
17245
|
+
if (srcUrl != null) {
|
|
17246
|
+
x.srcUrl.set(srcUrl);
|
|
17247
|
+
}
|
|
17248
|
+
if (downloadFileName != null) {
|
|
17249
|
+
x.downloadFileName.set(downloadFileName);
|
|
17250
|
+
}
|
|
17251
|
+
}
|
|
17252
|
+
}
|
|
17253
|
+
});
|
|
17254
|
+
}
|
|
17255
|
+
|
|
17256
|
+
const DEFAULT_MERGED_FILE_NAME = 'merged.pdf';
|
|
17257
|
+
const DEFAULT_DOWNLOAD_BUTTON = {
|
|
17258
|
+
display: { icon: 'download', text: 'Download' },
|
|
17259
|
+
style: { type: 'stroked' }
|
|
17260
|
+
};
|
|
17261
|
+
/**
|
|
17262
|
+
* Editor that lets the user collect PDFs and images, reorder them via drag-and-drop, and produce a single merged PDF for preview/download. Reads from an ancestor-provided {@link DbxPdfMergeEditorStore}. Optionally embeds a {@link DbxDownloadBlobButtonComponent} to offer a download affordance for the most recent merge.
|
|
17263
|
+
*
|
|
17264
|
+
* The parent view (or another directive) is responsible for providing {@link DbxPdfMergeEditorStore} so the editor and its peer components ({@link DbxPdfMergeListComponent}, {@link DbxPdfMergeEntryComponent}) share the same instance. Subscribe to the store's {@link DbxPdfMergeEditorStore.mergeOutput$} directly for downstream merge consumers.
|
|
17265
|
+
*
|
|
17266
|
+
* @example
|
|
17267
|
+
* ```html
|
|
17268
|
+
* <dbx-pdf-merge-editor [showDownloadButton]="true" fileName="receipts.pdf" [downloadButton]="{ display: { icon: 'cloud_download', text: 'Save' }, style: { type: 'flat', color: 'primary' } }"></dbx-pdf-merge-editor>
|
|
17269
|
+
* ```
|
|
17270
|
+
*/
|
|
17271
|
+
class DbxPdfMergeEditorComponent {
|
|
17272
|
+
store = inject(DbxPdfMergeEditorStore);
|
|
17273
|
+
_matDialog = inject(MatDialog);
|
|
17274
|
+
_destroyRef = inject(DestroyRef);
|
|
17275
|
+
accept = input(PDF_MERGE_DEFAULT_ACCEPT, ...(ngDevMode ? [{ debugName: "accept" }] : /* istanbul ignore next */ []));
|
|
17276
|
+
multiple = input(true, ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
17277
|
+
fileName = input(DEFAULT_MERGED_FILE_NAME, ...(ngDevMode ? [{ debugName: "fileName" }] : /* istanbul ignore next */ []));
|
|
17278
|
+
showDownloadButton = input(false, ...(ngDevMode ? [{ debugName: "showDownloadButton" }] : /* istanbul ignore next */ []));
|
|
17279
|
+
showPreviewButton = input(true, ...(ngDevMode ? [{ debugName: "showPreviewButton" }] : /* istanbul ignore next */ []));
|
|
17280
|
+
downloadButton = input(DEFAULT_DOWNLOAD_BUTTON, ...(ngDevMode ? [{ debugName: "downloadButton" }] : /* istanbul ignore next */ []));
|
|
17281
|
+
entriesChanged = output();
|
|
17282
|
+
hasReadyEntriesSignal = toSignal(this.store.hasReadyEntries$, { initialValue: false });
|
|
17283
|
+
entryCountSignal = toSignal(this.store.entryCount$, { initialValue: 0 });
|
|
17284
|
+
/**
|
|
17285
|
+
* Latest merged blob (or `undefined` while validation/merge is in flight or no entries are ready). Sourced from {@link DbxPdfMergeEditorStore.currentMergeOutput$} so the download button always reflects the current merge without needing the user to click Preview first.
|
|
17286
|
+
*/
|
|
17287
|
+
mergeBlobSignal = toSignal(this.store.currentMergeOutput$, { initialValue: undefined });
|
|
17288
|
+
downloadConfigSignal = computed(() => ({
|
|
17289
|
+
blob: this.mergeBlobSignal(),
|
|
17290
|
+
fileName: this.fileName(),
|
|
17291
|
+
buttonStylePair: this.downloadButton() ?? DEFAULT_DOWNLOAD_BUTTON
|
|
17292
|
+
}), ...(ngDevMode ? [{ debugName: "downloadConfigSignal" }] : /* istanbul ignore next */ []));
|
|
17293
|
+
constructor() {
|
|
17294
|
+
this.store.entries$.pipe(takeUntilDestroyed()).subscribe((entries) => this.entriesChanged.emit(entries));
|
|
17295
|
+
}
|
|
17296
|
+
onFiles(event) {
|
|
17297
|
+
if (event.matchResult.accepted.length > 0) {
|
|
17298
|
+
this.store.addFiles(event.matchResult.accepted);
|
|
17299
|
+
}
|
|
17300
|
+
}
|
|
17301
|
+
onClear() {
|
|
17302
|
+
this.store.clearAll();
|
|
17303
|
+
}
|
|
17304
|
+
onPreview() {
|
|
17305
|
+
const blob = this.mergeBlobSignal();
|
|
17306
|
+
if (blob != null) {
|
|
17307
|
+
this.openPreviewDialog(blob);
|
|
17308
|
+
}
|
|
17309
|
+
else {
|
|
17310
|
+
this.store.mergeOutput$.pipe(first(), takeUntilDestroyed(this._destroyRef)).subscribe((merged) => this.openPreviewDialog(merged));
|
|
17311
|
+
}
|
|
17312
|
+
}
|
|
17313
|
+
openPreviewDialog(blob) {
|
|
17314
|
+
openPdfPreviewDialog(this._matDialog, {
|
|
17315
|
+
blob,
|
|
17316
|
+
downloadFileName: this.fileName(),
|
|
17317
|
+
width: '90vw',
|
|
17318
|
+
maxWidth: '1200px',
|
|
17319
|
+
height: '90vh'
|
|
17320
|
+
});
|
|
17321
|
+
}
|
|
17322
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17323
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: DbxPdfMergeEditorComponent, isStandalone: true, selector: "dbx-pdf-merge-editor", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, showDownloadButton: { classPropertyName: "showDownloadButton", publicName: "showDownloadButton", isSignal: true, isRequired: false, transformFunction: null }, showPreviewButton: { classPropertyName: "showPreviewButton", publicName: "showPreviewButton", isSignal: true, isRequired: false, transformFunction: null }, downloadButton: { classPropertyName: "downloadButton", publicName: "downloadButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { entriesChanged: "entriesChanged" }, host: { classAttribute: "dbx-pdf-merge-editor" }, ngImport: i0, template: "<div class=\"dbx-pdf-merge-editor-upload\">\n <dbx-file-upload [accept]=\"accept()\" [multiple]=\"multiple()\" (filesChanged)=\"onFiles($event)\" [hint]=\"'Drop PDFs or images here, or click to browse'\" [text]=\"'Add files'\" icon=\"upload_file\"></dbx-file-upload>\n</div>\n<dbx-pdf-merge-list></dbx-pdf-merge-list>\n<div class=\"dbx-pdf-merge-editor-actions\">\n <span class=\"dbx-pdf-merge-editor-count dbx-hint dbx-small\">{{ entryCountSignal() }} file(s)</span>\n <span class=\"dbx-pdf-merge-editor-spacer\"></span>\n <dbx-button text=\"Clear\" icon=\"delete\" [disabled]=\"entryCountSignal() === 0\" (buttonClick)=\"onClear()\"></dbx-button>\n @if (showPreviewButton()) {\n <dbx-button text=\"Preview\" icon=\"picture_as_pdf\" [disabled]=\"!hasReadyEntriesSignal()\" (buttonClick)=\"onPreview()\"></dbx-button>\n }\n @if (showDownloadButton() && hasReadyEntriesSignal()) {\n <dbx-download-blob-button [config]=\"downloadConfigSignal()\"></dbx-download-blob-button>\n }\n</div>\n", dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }, { kind: "component", type: DbxFileUploadComponent, selector: "dbx-file-upload", inputs: ["config", "buttonStyle", "buttonDisplay", "mode", "text", "icon", "hint", "clickAreaToUpload"], outputs: ["filesChanged"] }, { kind: "component", type: DbxDownloadBlobButtonComponent, selector: "dbx-download-blob-button", inputs: ["config"] }, { kind: "component", type: DbxPdfMergeListComponent, selector: "dbx-pdf-merge-list" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17324
|
+
}
|
|
17325
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DbxPdfMergeEditorComponent, decorators: [{
|
|
17326
|
+
type: Component,
|
|
17327
|
+
args: [{ selector: 'dbx-pdf-merge-editor', host: {
|
|
17328
|
+
class: 'dbx-pdf-merge-editor'
|
|
17329
|
+
}, imports: [DbxButtonComponent, DbxFileUploadComponent, DbxDownloadBlobButtonComponent, DbxPdfMergeListComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"dbx-pdf-merge-editor-upload\">\n <dbx-file-upload [accept]=\"accept()\" [multiple]=\"multiple()\" (filesChanged)=\"onFiles($event)\" [hint]=\"'Drop PDFs or images here, or click to browse'\" [text]=\"'Add files'\" icon=\"upload_file\"></dbx-file-upload>\n</div>\n<dbx-pdf-merge-list></dbx-pdf-merge-list>\n<div class=\"dbx-pdf-merge-editor-actions\">\n <span class=\"dbx-pdf-merge-editor-count dbx-hint dbx-small\">{{ entryCountSignal() }} file(s)</span>\n <span class=\"dbx-pdf-merge-editor-spacer\"></span>\n <dbx-button text=\"Clear\" icon=\"delete\" [disabled]=\"entryCountSignal() === 0\" (buttonClick)=\"onClear()\"></dbx-button>\n @if (showPreviewButton()) {\n <dbx-button text=\"Preview\" icon=\"picture_as_pdf\" [disabled]=\"!hasReadyEntriesSignal()\" (buttonClick)=\"onPreview()\"></dbx-button>\n }\n @if (showDownloadButton() && hasReadyEntriesSignal()) {\n <dbx-download-blob-button [config]=\"downloadConfigSignal()\"></dbx-download-blob-button>\n }\n</div>\n" }]
|
|
17330
|
+
}], ctorParameters: () => [], propDecorators: { accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], fileName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileName", required: false }] }], showDownloadButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDownloadButton", required: false }] }], showPreviewButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPreviewButton", required: false }] }], downloadButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "downloadButton", required: false }] }], entriesChanged: [{ type: i0.Output, args: ["entriesChanged"] }] } });
|
|
17331
|
+
|
|
16768
17332
|
// export * from './calendar'; // nothing to export
|
|
16769
17333
|
|
|
16770
17334
|
/**
|
|
@@ -16841,5 +17405,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
|
|
|
16841
17405
|
* Generated bundle index. Do not edit.
|
|
16842
17406
|
*/
|
|
16843
17407
|
|
|
16844
|
-
export { APP_POPUP_MINIMIZED_WIDTH, APP_POPUP_NORMAL_HEIGHT, APP_POPUP_NORMAL_WIDTH, AbstractDbxClipboardDirective, AbstractDbxErrorWidgetComponent, AbstractDbxFileUploadComponent, AbstractDbxHelpWidgetDirective, AbstractDbxListAccordionViewDirective, AbstractDbxListGridViewDirective, AbstractDbxListViewDirective, AbstractDbxListWrapperDirective, AbstractDbxPartialPresetFilterMenuDirective, AbstractDbxSegueAnchorDirective, AbstractDbxSelectionListViewDirective, AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListItemModifierDirective, AbstractDbxValueListViewDirective, AbstractDbxValueListViewItemComponent, AbstractDbxWidgetComponent, AbstractDialogDirective, AbstractFilterPopoverButtonDirective, AbstractPopoverDirective, AbstractPopoverRefDirective, AbstractPopoverRefWithEventsDirective, AbstractPopupDirective, AbstractPromptConfirmDirective, CompactContextStore, CompactMode, DBX_ACTION_SNACKBAR_DEFAULTS, DBX_ACTION_SNACKBAR_SERVICE_CONFIG, DBX_AVATAR_CONTEXT_DATA_TOKEN, DBX_CHIP_DEFAULT_TONE, DBX_DARK_STYLE_CLASS_SUFFIX, DBX_DETACH_DEFAULT_KEY, DBX_HELP_WIDGET_ENTRY_DATA_TOKEN, DBX_LIST_ACCORDION_VIEW_COMPONENT_IMPORTS_AND_EXPORTS, DBX_LIST_DEFAULT_SCROLL_DISTANCE, DBX_LIST_DEFAULT_THROTTLE_SCROLL, DBX_LIST_GRID_VIEW_COMPONENT_IMPORTS_AND_EXPORTS, DBX_LIST_ITEM_DEFAULT_DISABLE_FUNCTION, DBX_LIST_ITEM_DISABLE_RIPPLE_LIST_ITEM_MODIFIER_KEY, DBX_LIST_ITEM_IS_SELECTED_ITEM_MODIFIER_KEY, DBX_LIST_VIEW_DEFAULT_META_ICON, DBX_MODEL_VIEW_TRACKER_STORAGE_ACCESSOR_TOKEN, DBX_PROGRESS_BUTTON_GLOBAL_CONFIG, DBX_ROUTER_ANCHOR_COMPONENTS, DBX_ROUTER_VALUE_LIST_ITEM_MODIFIER_KEY, DBX_STYLE_DEFAULT_CONFIG_TOKEN, DBX_THEME_COLORS, DBX_THEME_COLORS_EXTRA, DBX_THEME_COLORS_EXTRA_SECONDARY, DBX_THEME_COLORS_MAIN, DBX_VALUE_LIST_VIEW_ITEM, DBX_WEB_FILE_PREVIEW_SERVICE_DEFAULT_DIALOG_WITH_COMPONENT_FUNCTION, DBX_WEB_FILE_PREVIEW_SERVICE_DEFAULT_PREVIEW_COMPONENT_FUNCTION, DBX_WEB_FILE_PREVIEW_SERVICE_ENTRIES_TOKEN, DBX_WEB_FILE_PREVIEW_SERVICE_ZIP_COMPONENT_PRESET, DBX_WEB_FILE_PREVIEW_SERVICE_ZIP_PRESET_ENTRY, DEFAULT_DBX_ERROR_SNACKBAR_CONFIG, DEFAULT_DBX_HELP_VIEW_POPOVER_KEY, DEFAULT_DBX_LINKIFY_STRING_TYPE, DEFAULT_DBX_LIST_ACCORDION_VIEW_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_DBX_LIST_GRID_VIEW_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_DBX_LIST_ITEM_IS_SELECTED_FUNCTION, DEFAULT_DBX_PROMPT_CONFIRM_DIALOG_CONFIG, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_DBX_SIDENAV_MENU_ICON, DEFAULT_DBX_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_ERROR_POPOVER_KEY, DEFAULT_ERROR_WIDGET_CODE, DEFAULT_FILTER_POPOVER_KEY, DEFAULT_LIST_GRID_SIZE_CONFIG, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_LOADING_PROGRESS_DIAMETER, DEFAULT_SCREEN_MEDIA_SERVICE_CONFIG, DEFAULT_SNACKBAR_DIRECTIVE_DURATION, DEFAULT_TWO_COLUMNS_MIN_RIGHT_WIDTH, DEFAULT_VALUE_LIST_VIEW_CONTENT_COMPONENT_TRACK_BY_FUNCTION, DbxAccordionHeaderHeightDirective, DbxActionConfirmDirective, DbxActionDialogDirective, DbxActionErrorDirective, DbxActionKeyTriggerDirective, DbxActionLoadingContextDirective, DbxActionModule, DbxActionPopoverDirective, DbxActionSnackbarComponent, DbxActionSnackbarDirective, DbxActionSnackbarErrorDirective, DbxActionSnackbarModule, DbxActionSnackbarService, DbxActionTransitionSafetyDirective, DbxActionUIRouterTransitionSafetyDialogComponent, DbxAnchorComponent, DbxAnchorContentComponent, DbxAnchorIconComponent, DbxAnchorListComponent, DbxAngularRouterSegueAnchorComponent, DbxAvatarComponent, DbxAvatarViewService, DbxAvatarViewServiceConfig, DbxBarDirective, DbxBarHeaderComponent, DbxBarLayoutModule, DbxBasicLoadingComponent, DbxBodyDirective, DbxButtonComponent, DbxButtonModule, DbxButtonSpacerDirective, DbxCardBoxComponent, DbxCardBoxContainerDirective, DbxCardBoxLayoutModule, DbxChipDirective, DbxChipListComponent, DbxClickToCopyTextComponent, DbxClickToCopyTextDirective, DbxColorDirective, DbxColumnLayoutModule, DbxCompactDirective, DbxCompactLayoutModule, DbxContentBorderDirective, DbxContentBoxDirective, DbxContentContainerDirective, DbxContentDirective, DbxContentElevateDirective, DbxContentLayoutModule, DbxContentPageDirective, DbxContentPitDirective, DbxDetachContentComponent, DbxDetachControlButtonsComponent, DbxDetachController, DbxDetachControlsComponent, DbxDetachInitDirective, DbxDetachInteractionModule, DbxDetachOutletComponent, DbxDetachOverlayComponent, DbxDetachService, DbxDetachWindowState, DbxDetailBlockComponent, DbxDetailBlockHeaderComponent, DbxDialogContentCloseComponent, DbxDialogContentDirective, DbxDialogContentFooterComponent, DbxDialogInteractionModule, DbxDialogModule, DbxDownloadBlobButtonComponent, DbxDownloadTextViewComponent, DbxEmbedComponent, DbxErrorComponent, DbxErrorDefaultErrorWidgetComponent, DbxErrorDetailsComponent, DbxErrorPopoverComponent, DbxErrorSnackbarComponent, DbxErrorSnackbarService, DbxErrorViewComponent, DbxErrorWidgetService, DbxErrorWidgetViewComponent, DbxFileUploadActionCompatable, DbxFileUploadActionSyncDirective, DbxFileUploadAreaComponent, DbxFileUploadButtonComponent, DbxFileUploadComponent, DbxFilterInteractionModule, DbxFilterPopoverButtonComponent, DbxFilterPopoverComponent, DbxFilterWrapperComponent, DbxFlagComponent, DbxFlagLayoutModule, DbxFlagPromptComponent, DbxFlexGroupDirective, DbxFlexLayoutModule, DbxFlexSizeDirective, DbxHelpContextDirective, DbxHelpContextService, DbxHelpViewListComponent, DbxHelpViewListEntryComponent, DbxHelpViewPopoverButtonComponent, DbxHelpViewPopoverComponent, DbxHelpWidgetService, DbxHelpWidgetServiceConfig, DbxIconButtonComponent, DbxIconButtonModule, DbxIconItemComponent, DbxIconSpacerDirective, DbxIfSidenavDisplayModeDirective, DbxIframeComponent, DbxInjectionDialogComponent, DbxInteractionModule, DbxIntroActionSectionComponent, DbxLabelBlockComponent, DbxLayoutModule, DbxLinkComponent, DbxLinkifyComponent, DbxLinkifyService, DbxLinkifyServiceConfig, DbxListAccordionViewComponentImportsModule, DbxListComponent, DbxListEmptyContentComponent, DbxListGridViewComponentImportsModule, DbxListInternalContentDirective, DbxListItemAnchorModifierDirective, DbxListItemDisableRippleModifierDirective, DbxListItemIsSelectedModifierDirective, DbxListModifierModule, DbxListModule, DbxListTitleGroupDirective, DbxListView, DbxListViewMetaIconComponent, DbxListViewWrapper, DbxListWrapperComponentImportsModule, DbxLoadingComponent, DbxLoadingErrorDirective, DbxLoadingModule, DbxLoadingProgressComponent, DbxModelObjectStateService, actions as DbxModelStateActions, model_actions as DbxModelStateModelActions, DbxModelTrackerService, DbxModelTypesService, DbxModelViewTrackerStorage, DbxNavbarComponent, DbxNumberWithLimitComponent, DbxOneColumnComponent, DbxOneColumnLayoutModule, DbxPagebarComponent, DbxPartialPresetFilterListComponent, DbxPartialPresetFilterMenuComponent, DbxPopoverCloseButtonComponent, DbxPopoverComponent, DbxPopoverComponentController, DbxPopoverContentComponent, DbxPopoverController, DbxPopoverControlsDirective, DbxPopoverCoordinatorComponent, DbxPopoverCoordinatorService, DbxPopoverHeaderComponent, DbxPopoverInteractionContentModule, DbxPopoverInteractionModule, DbxPopoverScrollContentDirective, DbxPopoverService, DbxPopupComponent, DbxPopupComponentController, DbxPopupContentComponent, DbxPopupControlButtonsComponent, DbxPopupController, DbxPopupControlsComponent, DbxPopupCoordinatorComponent, DbxPopupCoordinatorService, DbxPopupInteractionModule, DbxPopupService, DbxPopupWindowState, DbxPresetFilterListComponent, DbxPresetFilterMenuComponent, DbxProgressBarButtonComponent, DbxProgressButtonsModule, DbxProgressSpinnerButtonComponent, DbxPromptBoxDirective, DbxPromptComponent, DbxPromptConfirm, DbxPromptConfirmButtonDirective, DbxPromptConfirmComponent, DbxPromptConfirmDialogComponent, DbxPromptConfirmDirective, DbxPromptModule, DbxPromptPageComponent, DbxReadableErrorModule, DbxResizedDirective, DbxRouterAnchorModule, DbxRouterLayoutModule, DbxRouterSidenavModule, DbxRouterWebProviderConfig, DbxScreenMediaService, DbxScreenMediaServiceConfig, DbxSectionComponent, DbxSectionHeaderComponent, DbxSectionLayoutModule, DbxSectionPageComponent, DbxSelectionValueListViewComponent, DbxSelectionValueListViewComponentImportsModule, DbxSelectionValueListViewContentComponent, DbxSetStyleDirective, DbxSidenavButtonComponent, DbxSidenavComponent, DbxSidenavPageComponent, DbxSidenavPagebarComponent, DbxSpacerDirective, DbxStepBlockComponent, DbxStructureDirective, DbxStructureModule, DbxStyleBodyDirective, DbxStyleDirective, DbxStyleLayoutModule, DbxStyleService, DbxSubSectionComponent, DbxTextChipsComponent, DbxTextColorDirective, DbxTextModule, DbxTwoBlockComponent, DbxTwoColumnBackDirective, DbxTwoColumnColumnHeadDirective, DbxTwoColumnComponent, DbxTwoColumnContextDirective, DbxTwoColumnFullLeftDirective, DbxTwoColumnLayoutModule, DbxTwoColumnRightComponent, DbxTwoColumnSrefDirective, DbxTwoColumnSrefShowRightDirective, DbxUIRouterSegueAnchorComponent, DbxUnitedStatesAddressComponent, DbxValueListAccordionViewComponent, DbxValueListAccordionViewContentComponent, DbxValueListAccordionViewContentGroupComponent, DbxValueListGridSizeDirective, DbxValueListGridViewComponent, DbxValueListGridViewContentComponent, DbxValueListGridViewContentGroupComponent, DbxValueListItemModifier, DbxValueListItemModifierDirective, DbxValueListView, DbxValueListViewComponent, DbxValueListViewComponentImportsModule, DbxValueListViewContentComponent, DbxValueListViewContentGroupComponent, DbxValueListViewGroupDelegate, DbxWebFilePreviewComponent, DbxWebFilePreviewService, DbxWebModule, DbxWidgetListGridComponent, DbxWidgetListGridViewComponent, DbxWidgetListGridViewItemComponent, DbxWidgetService, DbxWidgetViewComponent, DbxWindowKeyDownListenerDirective, DbxZipBlobPreviewComponent, DbxZipPreviewComponent, PopoverPositionStrategy, PopupGlobalPositionStrategy, SCREEN_MEDIA_WIDTH_TYPE_SIZE_MAP, SIDE_NAV_DISPLAY_MODE_ORDER, SideNavDisplayMode, TRACK_BY_MODEL_ID, TRACK_BY_MODEL_KEY, TwoColumnsContextStore, UNKNOWN_ERROR_WIDGET_CODE, addConfigToValueListItems, allDbxModelViewTrackerEventModelKeys, allDbxModelViewTrackerEventSetModelKeys, catchErrorServerParams, compactModeFromInput, compareScreenMediaWidthTypes, convertServerErrorParams, convertToPOJOServerErrorResponse, convertToServerErrorResponse, copyToClipboardFunction, dbxColorBackground, dbxListAccordionViewComponentImportsAndExports, dbxListGridViewComponentImportsAndExports, dbxPresetFilterMenuButtonIconObservable, dbxPresetFilterMenuButtonTextObservable, dbxStyleClassCleanSuffix, dbxThemeColorCssToken, dbxThemeColorCssTokenVar, dbxThemeColorCssVariable, dbxThemeColorCssVariableVar, dbxValueListItemDecisionFunction, dbxValueListItemKeyForItemValue, dbxZipBlobPreviewEntryTreeFromEntries, defaultDbxModelViewTrackerStorageAccessorFactory, defaultDbxValueListViewGroupDelegate, defaultDbxValueListViewGroupValuesFunction, disableRightClickInCdkBackdrop, fileAcceptFilterTypeStringArray, fileAcceptFunction, fileAcceptString, fileArrayAcceptMatchFunction, flattenAccordionGroups, index as fromDbxModel, injectCopyToClipboardFunction, injectCopyToClipboardFunctionWithSnackbarMessage, listItemModifier, makeDbxActionSnackbarDisplayConfigGeneratorFunction, mapCompactModeObs, mapValuesToValuesListItemConfigObs, index$1 as onDbxModel, openEmbedDialog, openIframeDialog, openZipPreviewDialog, overrideClickElementEffect, provideDbxDetachController, provideDbxFileUploadActionCompatable, provideDbxHelpServices, provideDbxLinkify, provideDbxListView, provideDbxListViewWrapper, provideDbxModelService, provideDbxProgressButtonGlobalConfig, provideDbxPromptConfirm, provideDbxRouterWebAngularRouterProviderConfig, provideDbxRouterWebUiRouterProviderConfig, provideDbxScreenMediaService, provideDbxStyleService, provideDbxValueListView, provideDbxValueListViewGroupDelegate, provideDbxValueListViewModifier, provideDbxWebFilePreviewServiceEntries, provideTwoColumnsContext, registerHelpContextKeysWithDbxHelpContextService, resizeSignal, resolveSideNavDisplayMode, sanitizeDbxDialogContentConfig, screenMediaWidthTypeIsActive, trackByModelKeyRef, trackByUniqueIdentifier };
|
|
17408
|
+
export { APP_POPUP_MINIMIZED_WIDTH, APP_POPUP_NORMAL_HEIGHT, APP_POPUP_NORMAL_WIDTH, AbstractDbxClipboardDirective, AbstractDbxErrorWidgetComponent, AbstractDbxFileUploadComponent, AbstractDbxHelpWidgetDirective, AbstractDbxListAccordionViewDirective, AbstractDbxListGridViewDirective, AbstractDbxListViewDirective, AbstractDbxListWrapperDirective, AbstractDbxPartialPresetFilterMenuDirective, AbstractDbxSegueAnchorDirective, AbstractDbxSelectionListViewDirective, AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListItemModifierDirective, AbstractDbxValueListViewDirective, AbstractDbxValueListViewItemComponent, AbstractDbxWidgetComponent, AbstractDialogDirective, AbstractFilterPopoverButtonDirective, AbstractPopoverDirective, AbstractPopoverRefDirective, AbstractPopoverRefWithEventsDirective, AbstractPopupDirective, AbstractPromptConfirmDirective, CompactContextStore, CompactMode, DBX_ACTION_SNACKBAR_DEFAULTS, DBX_ACTION_SNACKBAR_SERVICE_CONFIG, DBX_AVATAR_CONTEXT_DATA_TOKEN, DBX_CHIP_DEFAULT_TONE, DBX_DARK_STYLE_CLASS_SUFFIX, DBX_DETACH_DEFAULT_KEY, DBX_HELP_WIDGET_ENTRY_DATA_TOKEN, DBX_LIST_ACCORDION_VIEW_COMPONENT_IMPORTS_AND_EXPORTS, DBX_LIST_DEFAULT_SCROLL_DISTANCE, DBX_LIST_DEFAULT_THROTTLE_SCROLL, DBX_LIST_GRID_VIEW_COMPONENT_IMPORTS_AND_EXPORTS, DBX_LIST_ITEM_DEFAULT_DISABLE_FUNCTION, DBX_LIST_ITEM_DISABLE_RIPPLE_LIST_ITEM_MODIFIER_KEY, DBX_LIST_ITEM_IS_SELECTED_ITEM_MODIFIER_KEY, DBX_LIST_VIEW_DEFAULT_META_ICON, DBX_MODEL_VIEW_TRACKER_STORAGE_ACCESSOR_TOKEN, DBX_PDF_MERGE_EDITOR_INITIAL_STATE, DBX_PROGRESS_BUTTON_GLOBAL_CONFIG, DBX_ROUTER_ANCHOR_COMPONENTS, DBX_ROUTER_VALUE_LIST_ITEM_MODIFIER_KEY, DBX_STYLE_DEFAULT_CONFIG_TOKEN, DBX_THEME_COLORS, DBX_THEME_COLORS_EXTRA, DBX_THEME_COLORS_EXTRA_SECONDARY, DBX_THEME_COLORS_MAIN, DBX_VALUE_LIST_VIEW_ITEM, DBX_WEB_FILE_PREVIEW_SERVICE_DEFAULT_DIALOG_WITH_COMPONENT_FUNCTION, DBX_WEB_FILE_PREVIEW_SERVICE_DEFAULT_PREVIEW_COMPONENT_FUNCTION, DBX_WEB_FILE_PREVIEW_SERVICE_ENTRIES_TOKEN, DBX_WEB_FILE_PREVIEW_SERVICE_ZIP_COMPONENT_PRESET, DBX_WEB_FILE_PREVIEW_SERVICE_ZIP_PRESET_ENTRY, DEFAULT_DBX_ERROR_SNACKBAR_CONFIG, DEFAULT_DBX_HELP_VIEW_POPOVER_KEY, DEFAULT_DBX_LINKIFY_STRING_TYPE, DEFAULT_DBX_LIST_ACCORDION_VIEW_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_DBX_LIST_GRID_VIEW_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_DBX_LIST_ITEM_IS_SELECTED_FUNCTION, DEFAULT_DBX_PROMPT_CONFIRM_DIALOG_CONFIG, DEFAULT_DBX_SELECTION_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_DBX_SIDENAV_MENU_ICON, DEFAULT_DBX_VALUE_LIST_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_ERROR_POPOVER_KEY, DEFAULT_ERROR_WIDGET_CODE, DEFAULT_FILTER_POPOVER_KEY, DEFAULT_LIST_GRID_SIZE_CONFIG, DEFAULT_LIST_WRAPPER_COMPONENT_CONFIGURATION_TEMPLATE, DEFAULT_LOADING_PROGRESS_DIAMETER, DEFAULT_SCREEN_MEDIA_SERVICE_CONFIG, DEFAULT_SNACKBAR_DIRECTIVE_DURATION, DEFAULT_TWO_COLUMNS_MIN_RIGHT_WIDTH, DEFAULT_VALUE_LIST_VIEW_CONTENT_COMPONENT_TRACK_BY_FUNCTION, DbxAccordionHeaderHeightDirective, DbxActionConfirmDirective, DbxActionDialogDirective, DbxActionErrorDirective, DbxActionKeyTriggerDirective, DbxActionLoadingContextDirective, DbxActionModule, DbxActionPopoverDirective, DbxActionSnackbarComponent, DbxActionSnackbarDirective, DbxActionSnackbarErrorDirective, DbxActionSnackbarModule, DbxActionSnackbarService, DbxActionTransitionSafetyDirective, DbxActionUIRouterTransitionSafetyDialogComponent, DbxAnchorComponent, DbxAnchorContentComponent, DbxAnchorIconComponent, DbxAnchorListComponent, DbxAngularRouterSegueAnchorComponent, DbxAvatarComponent, DbxAvatarViewService, DbxAvatarViewServiceConfig, DbxBarDirective, DbxBarHeaderComponent, DbxBarLayoutModule, DbxBasicLoadingComponent, DbxBodyDirective, DbxButtonComponent, DbxButtonModule, DbxButtonSpacerDirective, DbxCardBoxComponent, DbxCardBoxContainerDirective, DbxCardBoxLayoutModule, DbxChipDirective, DbxChipListComponent, DbxClickToCopyTextComponent, DbxClickToCopyTextDirective, DbxColorDirective, DbxColumnLayoutModule, DbxCompactDirective, DbxCompactLayoutModule, DbxContentBorderDirective, DbxContentBoxDirective, DbxContentContainerDirective, DbxContentDirective, DbxContentElevateDirective, DbxContentLayoutModule, DbxContentPageDirective, DbxContentPitDirective, DbxDetachContentComponent, DbxDetachControlButtonsComponent, DbxDetachController, DbxDetachControlsComponent, DbxDetachInitDirective, DbxDetachInteractionModule, DbxDetachOutletComponent, DbxDetachOverlayComponent, DbxDetachService, DbxDetachWindowState, DbxDetailBlockComponent, DbxDetailBlockHeaderComponent, DbxDialogContentCloseComponent, DbxDialogContentDirective, DbxDialogContentFooterComponent, DbxDialogInteractionModule, DbxDialogModule, DbxDownloadBlobButtonComponent, DbxDownloadTextViewComponent, DbxEmbedComponent, DbxErrorComponent, DbxErrorDefaultErrorWidgetComponent, DbxErrorDetailsComponent, DbxErrorPopoverComponent, DbxErrorSnackbarComponent, DbxErrorSnackbarService, DbxErrorViewComponent, DbxErrorWidgetService, DbxErrorWidgetViewComponent, DbxFileUploadActionCompatable, DbxFileUploadActionSyncDirective, DbxFileUploadAreaComponent, DbxFileUploadButtonComponent, DbxFileUploadComponent, DbxFilterInteractionModule, DbxFilterPopoverButtonComponent, DbxFilterPopoverComponent, DbxFilterWrapperComponent, DbxFlagComponent, DbxFlagLayoutModule, DbxFlagPromptComponent, DbxFlexGroupDirective, DbxFlexLayoutModule, DbxFlexSizeDirective, DbxHelpContextDirective, DbxHelpContextService, DbxHelpViewListComponent, DbxHelpViewListEntryComponent, DbxHelpViewPopoverButtonComponent, DbxHelpViewPopoverComponent, DbxHelpWidgetService, DbxHelpWidgetServiceConfig, DbxIconButtonComponent, DbxIconButtonModule, DbxIconItemComponent, DbxIconSpacerDirective, DbxIfSidenavDisplayModeDirective, DbxIframeComponent, DbxInjectionDialogComponent, DbxInteractionModule, DbxIntroActionSectionComponent, DbxLabelBlockComponent, DbxLayoutModule, DbxLinkComponent, DbxLinkifyComponent, DbxLinkifyService, DbxLinkifyServiceConfig, DbxListAccordionViewComponentImportsModule, DbxListComponent, DbxListEmptyContentComponent, DbxListGridViewComponentImportsModule, DbxListInternalContentDirective, DbxListItemAnchorModifierDirective, DbxListItemDisableRippleModifierDirective, DbxListItemIsSelectedModifierDirective, DbxListModifierModule, DbxListModule, DbxListTitleGroupDirective, DbxListView, DbxListViewMetaIconComponent, DbxListViewWrapper, DbxListWrapperComponentImportsModule, DbxLoadingComponent, DbxLoadingErrorDirective, DbxLoadingModule, DbxLoadingProgressComponent, DbxModelObjectStateService, actions as DbxModelStateActions, model_actions as DbxModelStateModelActions, DbxModelTrackerService, DbxModelTypesService, DbxModelViewTrackerStorage, DbxNavbarComponent, DbxNumberWithLimitComponent, DbxOneColumnComponent, DbxOneColumnLayoutModule, DbxPagebarComponent, DbxPartialPresetFilterListComponent, DbxPartialPresetFilterMenuComponent, DbxPdfMergeEditorComponent, DbxPdfMergeEditorStore, DbxPdfMergeEntryComponent, DbxPdfMergeListComponent, DbxPdfPreviewComponent, DbxPopoverCloseButtonComponent, DbxPopoverComponent, DbxPopoverComponentController, DbxPopoverContentComponent, DbxPopoverController, DbxPopoverControlsDirective, DbxPopoverCoordinatorComponent, DbxPopoverCoordinatorService, DbxPopoverHeaderComponent, DbxPopoverInteractionContentModule, DbxPopoverInteractionModule, DbxPopoverScrollContentDirective, DbxPopoverService, DbxPopupComponent, DbxPopupComponentController, DbxPopupContentComponent, DbxPopupControlButtonsComponent, DbxPopupController, DbxPopupControlsComponent, DbxPopupCoordinatorComponent, DbxPopupCoordinatorService, DbxPopupInteractionModule, DbxPopupService, DbxPopupWindowState, DbxPresetFilterListComponent, DbxPresetFilterMenuComponent, DbxProgressBarButtonComponent, DbxProgressButtonsModule, DbxProgressSpinnerButtonComponent, DbxPromptBoxDirective, DbxPromptComponent, DbxPromptConfirm, DbxPromptConfirmButtonDirective, DbxPromptConfirmComponent, DbxPromptConfirmDialogComponent, DbxPromptConfirmDirective, DbxPromptModule, DbxPromptPageComponent, DbxReadableErrorModule, DbxResizedDirective, DbxRouterAnchorModule, DbxRouterLayoutModule, DbxRouterSidenavModule, DbxRouterWebProviderConfig, DbxScreenMediaService, DbxScreenMediaServiceConfig, DbxSectionComponent, DbxSectionHeaderComponent, DbxSectionLayoutModule, DbxSectionPageComponent, DbxSelectionValueListViewComponent, DbxSelectionValueListViewComponentImportsModule, DbxSelectionValueListViewContentComponent, DbxSetStyleDirective, DbxSidenavButtonComponent, DbxSidenavComponent, DbxSidenavPageComponent, DbxSidenavPagebarComponent, DbxSpacerDirective, DbxStepBlockComponent, DbxStructureDirective, DbxStructureModule, DbxStyleBodyDirective, DbxStyleDirective, DbxStyleLayoutModule, DbxStyleService, DbxSubSectionComponent, DbxTextChipsComponent, DbxTextColorDirective, DbxTextModule, DbxTwoBlockComponent, DbxTwoColumnBackDirective, DbxTwoColumnColumnHeadDirective, DbxTwoColumnComponent, DbxTwoColumnContextDirective, DbxTwoColumnFullLeftDirective, DbxTwoColumnLayoutModule, DbxTwoColumnRightComponent, DbxTwoColumnSrefDirective, DbxTwoColumnSrefShowRightDirective, DbxUIRouterSegueAnchorComponent, DbxUnitedStatesAddressComponent, DbxValueListAccordionViewComponent, DbxValueListAccordionViewContentComponent, DbxValueListAccordionViewContentGroupComponent, DbxValueListGridSizeDirective, DbxValueListGridViewComponent, DbxValueListGridViewContentComponent, DbxValueListGridViewContentGroupComponent, DbxValueListItemModifier, DbxValueListItemModifierDirective, DbxValueListView, DbxValueListViewComponent, DbxValueListViewComponentImportsModule, DbxValueListViewContentComponent, DbxValueListViewContentGroupComponent, DbxValueListViewGroupDelegate, DbxWebFilePreviewComponent, DbxWebFilePreviewService, DbxWebModule, DbxWidgetListGridComponent, DbxWidgetListGridViewComponent, DbxWidgetListGridViewItemComponent, DbxWidgetService, DbxWidgetViewComponent, DbxWindowKeyDownListenerDirective, DbxZipBlobPreviewComponent, DbxZipPreviewComponent, PDF_MERGE_DEFAULT_ACCEPT, PDF_MERGE_RESULT_MIME_TYPE, PopoverPositionStrategy, PopupGlobalPositionStrategy, SCREEN_MEDIA_WIDTH_TYPE_SIZE_MAP, SIDE_NAV_DISPLAY_MODE_ORDER, SideNavDisplayMode, TRACK_BY_MODEL_ID, TRACK_BY_MODEL_KEY, TwoColumnsContextStore, UNKNOWN_ERROR_WIDGET_CODE, addConfigToValueListItems, allDbxModelViewTrackerEventModelKeys, allDbxModelViewTrackerEventSetModelKeys, buildPdfMergeEntry, catchErrorServerParams, classifyPdfMergeFile, compactModeFromInput, compareScreenMediaWidthTypes, convertServerErrorParams, convertToPOJOServerErrorResponse, convertToServerErrorResponse, copyToClipboardFunction, dbxColorBackground, dbxListAccordionViewComponentImportsAndExports, dbxListGridViewComponentImportsAndExports, dbxPresetFilterMenuButtonIconObservable, dbxPresetFilterMenuButtonTextObservable, dbxStyleClassCleanSuffix, dbxThemeColorCssToken, dbxThemeColorCssTokenVar, dbxThemeColorCssVariable, dbxThemeColorCssVariableVar, dbxValueListItemDecisionFunction, dbxValueListItemKeyForItemValue, dbxZipBlobPreviewEntryTreeFromEntries, defaultDbxModelViewTrackerStorageAccessorFactory, defaultDbxValueListViewGroupDelegate, defaultDbxValueListViewGroupValuesFunction, disableRightClickInCdkBackdrop, fileAcceptFilterTypeStringArray, fileAcceptFunction, fileAcceptString, fileArrayAcceptMatchFunction, flattenAccordionGroups, index as fromDbxModel, injectCopyToClipboardFunction, injectCopyToClipboardFunctionWithSnackbarMessage, listItemModifier, makeDbxActionSnackbarDisplayConfigGeneratorFunction, mapCompactModeObs, mapValuesToValuesListItemConfigObs, mergePdfMergeEntries, index$1 as onDbxModel, openEmbedDialog, openIframeDialog, openPdfPreviewDialog, openZipPreviewDialog, overrideClickElementEffect, provideDbxDetachController, provideDbxFileUploadActionCompatable, provideDbxHelpServices, provideDbxLinkify, provideDbxListView, provideDbxListViewWrapper, provideDbxModelService, provideDbxProgressButtonGlobalConfig, provideDbxPromptConfirm, provideDbxRouterWebAngularRouterProviderConfig, provideDbxRouterWebUiRouterProviderConfig, provideDbxScreenMediaService, provideDbxStyleService, provideDbxValueListView, provideDbxValueListViewGroupDelegate, provideDbxValueListViewModifier, provideDbxWebFilePreviewServiceEntries, provideTwoColumnsContext, registerHelpContextKeysWithDbxHelpContextService, resizeSignal, resolveSideNavDisplayMode, sanitizeDbxDialogContentConfig, screenMediaWidthTypeIsActive, trackByModelKeyRef, trackByUniqueIdentifier, validatePdfMergeEntry };
|
|
16845
17409
|
//# sourceMappingURL=dereekb-dbx-web.mjs.map
|