@dereekb/dbx-web 13.12.6 → 13.12.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-web",
3
- "version": "13.12.6",
3
+ "version": "13.12.7",
4
4
  "sideEffects": [
5
5
  "*.scss",
6
6
  "*.css"
@@ -13,12 +13,12 @@
13
13
  "@angular/material": "^21.2.9",
14
14
  "@angular/platform-browser": "21.2.11",
15
15
  "@cantoo/pdf-lib": "^2.6.5",
16
- "@dereekb/browser": "13.12.6",
17
- "@dereekb/date": "13.12.6",
18
- "@dereekb/dbx-core": "13.12.6",
19
- "@dereekb/rxjs": "13.12.6",
20
- "@dereekb/util": "13.12.6",
21
- "@dereekb/vitest": "13.12.6",
16
+ "@dereekb/browser": "13.12.7",
17
+ "@dereekb/date": "13.12.7",
18
+ "@dereekb/dbx-core": "13.12.7",
19
+ "@dereekb/rxjs": "13.12.7",
20
+ "@dereekb/util": "13.12.7",
21
+ "@dereekb/vitest": "13.12.7",
22
22
  "@ngbracket/ngx-layout": "^21.0.0",
23
23
  "@ngrx/component-store": "^21.1.0",
24
24
  "@ngrx/effects": "^21.1.0",
@@ -5,7 +5,7 @@ import * as _angular_core from '@angular/core';
5
5
  import { Signal, ElementRef, AfterViewInit, InjectionToken, Type, OnInit, OnDestroy, ViewContainerRef, Provider, Injector, TrackByFunction, OutputEmitterRef, OutputRef, EnvironmentProviders, TemplateRef, ComponentRef } from '@angular/core';
6
6
  import { ProgressBarMode } from '@angular/material/progress-bar';
7
7
  import * as _dereekb_util from '@dereekb/util';
8
- import { Maybe, ErrorInput, Milliseconds, GetterOrValue, Getter, CssClass, CharacterPrefixSuffixCleanString, DashPrefixString, CssToken, CssTokenVar, WebsiteUrlWithPrefix, WebsitePath, Pixels, PixelsString, DecisionFunction, ModifierMap, ArrayOrValue, Modifier, ModifierFunction, UniqueModel, CssClassesArray, PrimativeKey, SortCompareFunction, ModelKeyRef, HtmlHeaderLevel, Destroyable, UnitedStatesAddressWithContact, LabeledValue, GetterOrValueWithInput, Seconds, DestroyFunction, ReadableError, ReadableErrorWithCode, ServerError, ServerErrorResponseData, ServerErrorResponse, PromiseOrValue, SpaceSeparatedCssClasses, StringErrorCode, ModelKeyTypeNamePair, UnixDateTimeSecondsNumber, ModelKey, ModelTypeString, MimeTypeWithoutParameters, ContentTypeMimeType, ModelTypeDataPair, MapFunction, SlashPathDirectoryTreeNode, SlashPathDirectoryTreeNodeValue, SlashPathDirectoryTreeRoot, FileSize, ModelIdFactory, MimeTypeWildcard, MimeTypeWithSubtypeWildcardWithoutParameters, SlashPathTypedFileSuffix } from '@dereekb/util';
8
+ import { Maybe, ErrorInput, Milliseconds, GetterOrValue, Getter, CssClass, CharacterPrefixSuffixCleanString, DashPrefixString, CssToken, CssTokenVar, WebsiteUrlWithPrefix, WebsitePath, Pixels, PixelsString, DecisionFunction, ModifierMap, ArrayOrValue, Modifier, ModifierFunction, UniqueModel, CssClassesArray, PrimativeKey, SortCompareFunction, ModelKeyRef, HtmlHeaderLevel, Destroyable, UnitedStatesAddressWithContact, LabeledValue, GetterOrValueWithInput, Seconds, DestroyFunction, ReadableError, ReadableErrorWithCode, ServerError, ServerErrorResponseData, ServerErrorResponse, PromiseOrValue, SpaceSeparatedCssClasses, StringErrorCode, ModelKeyTypeNamePair, UnixDateTimeSecondsNumber, ModelKey, ModelTypeString, MimeTypeWithoutParameters, ContentTypeMimeType, ModelTypeDataPair, MapFunction, SlashPathDirectoryTreeNode, SlashPathDirectoryTreeNodeValue, SlashPathDirectoryTreeRoot, FileSize, MimeTypeWildcard, MimeTypeWithSubtypeWildcardWithoutParameters, SlashPathTypedFileSuffix, ModelIdFactory } from '@dereekb/util';
9
9
  import { ProgressSpinnerMode } from '@angular/material/progress-spinner';
10
10
  import * as dist_packages_dbx_core_types_dereekb_dbx_core from 'dist/packages/dbx-core/types/dereekb-dbx-core';
11
11
  import * as rxjs from 'rxjs';
@@ -9433,6 +9433,132 @@ declare const DEFAULT_IMAGE_BITMAP_TO_BLOB_ENCODER: ImageBitmapToBlobEncoder;
9433
9433
  */
9434
9434
  declare function compressImageFile(file: File, config: Maybe<DbxImageCompressionConfig>, encoder?: ImageBitmapToBlobEncoder): Promise<CompressImageFileResult>;
9435
9435
 
9436
+ /**
9437
+ * String used as input for the "accept" attribute of a file input element.
9438
+ */
9439
+ type FileAcceptString = string;
9440
+ /**
9441
+ * Returns a string that can be used as the "accept" attribute of a file input element.
9442
+ *
9443
+ * @param accept - A file accept string or array of filter type strings to convert.
9444
+ * @returns A comma-separated string suitable for the HTML accept attribute.
9445
+ */
9446
+ declare function fileAcceptString(accept: FileAcceptString | FileAcceptFilterTypeStringArray): FileAcceptString;
9447
+ /**
9448
+ * Describes a type of file that can be selected.
9449
+ *
9450
+ * Can either be a mime type or a file suffix.
9451
+ */
9452
+ type FileAcceptFilterTypeString = MimeTypeWildcard | MimeTypeWithoutParameters | MimeTypeWithSubtypeWildcardWithoutParameters | SlashPathTypedFileSuffix;
9453
+ /**
9454
+ * The file accept filter type strings.
9455
+ */
9456
+ type FileAcceptFilterTypeStringArray = FileAcceptFilterTypeString[];
9457
+ /**
9458
+ * Converts a comma-separated accept string or array into a {@link FileAcceptFilterTypeStringArray}.
9459
+ *
9460
+ * @param accept - A file accept string or array of filter type strings to normalize.
9461
+ * @returns The individual filter type strings.
9462
+ *
9463
+ * @example
9464
+ * ```ts
9465
+ * const types = fileAcceptFilterTypeStringArray('image/png, .pdf');
9466
+ * // ['image/png', '.pdf']
9467
+ * ```
9468
+ */
9469
+ declare function fileAcceptFilterTypeStringArray(accept: FileAcceptString | FileAcceptFilterTypeStringArray): FileAcceptFilterTypeStringArray;
9470
+ /**
9471
+ * Configuration for matching an array of files against accept criteria with optional multiple file support.
9472
+ */
9473
+ interface FileArrayAcceptMatchConfig {
9474
+ readonly accept: FileAcceptFunction | FileAcceptString | FileAcceptFilterTypeStringArray;
9475
+ /**
9476
+ * If false, then only the first file will be accepted.
9477
+ *
9478
+ * Defaults to true.
9479
+ */
9480
+ readonly multiple?: boolean;
9481
+ }
9482
+ /**
9483
+ * Result of matching files against accept criteria, categorizing them into accepted and rejected lists.
9484
+ */
9485
+ interface FileArrayAcceptMatchResult {
9486
+ /**
9487
+ * If multiple is allowed or not.
9488
+ */
9489
+ readonly multiple: boolean;
9490
+ /**
9491
+ * The input files.
9492
+ */
9493
+ readonly input: File[];
9494
+ /**
9495
+ * The final list of accepted files.
9496
+ */
9497
+ readonly accepted: File[];
9498
+ /**
9499
+ * The final list of rejected files.
9500
+ */
9501
+ readonly rejected: File[];
9502
+ /**
9503
+ * The list of accepted files based on the file type.
9504
+ *
9505
+ * If multiple is false, all files that would have been accepted are included here.
9506
+ */
9507
+ readonly acceptedType: File[];
9508
+ /**
9509
+ * The list of rejected files based on the file type.
9510
+ *
9511
+ * If multiple is false, only files that would have been rejected by type are included here.
9512
+ */
9513
+ readonly rejectedType: File[];
9514
+ }
9515
+ /**
9516
+ * Matches an array of files based on the internal configuration.
9517
+ */
9518
+ type FileArrayAcceptMatchFunction = (input: File[]) => FileArrayAcceptMatchResult;
9519
+ /**
9520
+ * Creates a {@link FileArrayAcceptMatchFunction} that filters and separates files based on accept criteria and multiple file support.
9521
+ *
9522
+ * @param config - Configuration specifying the accept criteria and whether multiple files are allowed.
9523
+ * @returns Accepts an array of files and returns the categorized match result.
9524
+ *
9525
+ * @example
9526
+ * ```ts
9527
+ * const matchFn = fileArrayAcceptMatchFunction({ accept: 'image/*', multiple: false });
9528
+ * const result = matchFn(fileList);
9529
+ * console.log(result.accepted, result.rejected);
9530
+ * ```
9531
+ *
9532
+ * @__NO_SIDE_EFFECTS__
9533
+ */
9534
+ declare function fileArrayAcceptMatchFunction(config: FileArrayAcceptMatchConfig): FileArrayAcceptMatchFunction;
9535
+ /**
9536
+ * Type of input used for a FileAcceptFunction.
9537
+ *
9538
+ * Isolates the name and type fields from a File.
9539
+ */
9540
+ type FileAcceptFunctionInput = Pick<File, 'name' | 'type'>;
9541
+ /**
9542
+ * Used to determine if a file is an accepted type based on the internal configuration.
9543
+ */
9544
+ type FileAcceptFunction = DecisionFunction<FileAcceptFunctionInput>;
9545
+ /**
9546
+ * Creates a {@link FileAcceptFunction} that checks individual files against accept criteria (MIME types, wildcards, or file extensions).
9547
+ *
9548
+ * @param accept - A file accept string or array specifying which MIME types, wildcards, or file extensions to allow.
9549
+ * @returns A decision function that returns true if a file matches any of the accept criteria.
9550
+ *
9551
+ * @example
9552
+ * ```ts
9553
+ * const isAccepted = fileAcceptFunction(['image/*', '.pdf']);
9554
+ * isAccepted({ name: 'photo.png', type: 'image/png' }); // true
9555
+ * isAccepted({ name: 'doc.txt', type: 'text/plain' }); // false
9556
+ * ```
9557
+ *
9558
+ * @__NO_SIDE_EFFECTS__
9559
+ */
9560
+ declare function fileAcceptFunction(accept: FileAcceptString | FileAcceptFilterTypeStringArray): FileAcceptFunction;
9561
+
9436
9562
  /**
9437
9563
  * Identifies which kind of source file a {@link PdfMergeEntry} represents.
9438
9564
  *
@@ -9585,6 +9711,38 @@ interface DbxPdfMergeEditorConfig {
9585
9711
  * Soft/hard output-size limits surfaced via warning/error banners and (for `errorBytes`) the store's validity gate.
9586
9712
  */
9587
9713
  readonly outputSizeLimits?: Maybe<DbxPdfMergeOutputSizeLimitsConfig>;
9714
+ /**
9715
+ * Accept filter for the editor's default "Add files" upload area. Defaults to {@link DEFAULT_PDF_MERGE_ACCEPT}.
9716
+ */
9717
+ readonly accept?: Maybe<FileArrayAcceptMatchConfig['accept']>;
9718
+ /**
9719
+ * Whether the default upload area accepts multiple files. Defaults to `true`.
9720
+ */
9721
+ readonly multiple?: Maybe<boolean>;
9722
+ /**
9723
+ * File name used for the merged output (download + preview). Defaults to `merged.pdf`.
9724
+ */
9725
+ readonly fileName?: Maybe<string>;
9726
+ /**
9727
+ * Whether to show the embedded download button. Defaults to `false`.
9728
+ */
9729
+ readonly showDownloadButton?: Maybe<boolean>;
9730
+ /**
9731
+ * Whether to show the Preview button. Defaults to `true`.
9732
+ */
9733
+ readonly showPreviewButton?: Maybe<boolean>;
9734
+ /**
9735
+ * Display/style pair for the embedded download button.
9736
+ */
9737
+ readonly downloadButton?: Maybe<DbxButtonDisplayStylePair>;
9738
+ /**
9739
+ * When `false`, hides the default "Add files" upload area. Use when projecting {@link DbxPdfMergeEditorFileUploadComponent} slots through `<ng-content>` instead of the unscoped uploader. Defaults to `true`.
9740
+ */
9741
+ readonly showAddFiles?: Maybe<boolean>;
9742
+ /**
9743
+ * When `false`, hides the shared file list below the slot content. Useful when each slot displays its owned files inline. Defaults to `true`.
9744
+ */
9745
+ readonly showFileList?: Maybe<boolean>;
9588
9746
  }
9589
9747
  /**
9590
9748
  * Injection token for a workspace-wide default {@link DbxPdfMergeEditorConfig}. Use {@link provideDbxPdfMergeEditorConfig} to register a value.
@@ -9692,6 +9850,7 @@ type DbxPdfMergeEditorAddFilesInput = readonly File[] | {
9692
9850
  declare class DbxPdfMergeEditorStore extends ComponentStore<PdfMergeEditorState> {
9693
9851
  private readonly _validator$;
9694
9852
  private readonly _outputSizeLimit$;
9853
+ private readonly _imageCompression$;
9695
9854
  constructor();
9696
9855
  /**
9697
9856
  * 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.
@@ -9728,6 +9887,10 @@ declare class DbxPdfMergeEditorStore extends ComponentStore<PdfMergeEditorState>
9728
9887
  */
9729
9888
  readonly currentMergeOutput$: Observable<Maybe<Blob>>;
9730
9889
  readonly mergeOutput$: Observable<Blob>;
9890
+ /**
9891
+ * Emits the active client-side image-compression config pushed via {@link setImageCompression}, or `undefined` when none is set. Consumed by the editor and its slot uploaders as the middle tier of compression resolution (own `[config]` input → store → {@link DBX_PDF_MERGE_EDITOR_CONFIG} token), letting {@link DbxPdfMergeEditorStoreDirective} supply a store-level default that flows through the upload dialog's bare editor.
9892
+ */
9893
+ readonly imageCompression$: Observable<Maybe<DbxImageCompressionConfig>>;
9731
9894
  /**
9732
9895
  * Returns an observable of entries belonging to the given slot id. The result is filtered from {@link entries$} so the per-slot stream still reflects validation progress and removals.
9733
9896
  *
@@ -9751,6 +9914,12 @@ declare class DbxPdfMergeEditorStore extends ComponentStore<PdfMergeEditorState>
9751
9914
  * @param maxBytes - Output byte ceiling, or a falsy value to remove the limit.
9752
9915
  */
9753
9916
  setOutputSizeLimit(maxBytes: Maybe<FileSize>): void;
9917
+ /**
9918
+ * Sets the store-level client-side image-compression config exposed via {@link imageCompression$}. The editor and its slot uploaders apply it as the middle tier of compression resolution (own `[config]` input → store → {@link DBX_PDF_MERGE_EDITOR_CONFIG} token), so a value pushed here by {@link DbxPdfMergeEditorStoreDirective} reaches the upload dialog's bare editor while a per-input/per-slot override still wins. Pass `null`/`undefined` to clear the store-level default.
9919
+ *
9920
+ * @param config - Image-compression config, or a falsy value to clear the store-level default.
9921
+ */
9922
+ setImageCompression(config: Maybe<DbxImageCompressionConfig>): void;
9754
9923
  /**
9755
9924
  * Appends entries (already constructed) or builds them from raw files and appends them to state. Each entry's validation promise starts when the entry is built; {@link entries$} reflects each result as it resolves. When `input` is an object with `files` and `slotId`, the resulting entries are tagged with that slot id. When `input` is `{ entries }`, the entries are appended as-is — use this shape for entries that went through async client-side compression upstream.
9756
9925
  */
@@ -9801,132 +9970,6 @@ declare class DbxPdfMergeEditorStoreDirective {
9801
9970
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DbxPdfMergeEditorStoreDirective, "[dbxPdfMergeEditorStore]", ["dbxPdfMergeEditorStore"], { "config": { "alias": "config"; "required": false; "isSignal": true; }; "outputSizeLimit": { "alias": "outputSizeLimit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9802
9971
  }
9803
9972
 
9804
- /**
9805
- * String used as input for the "accept" attribute of a file input element.
9806
- */
9807
- type FileAcceptString = string;
9808
- /**
9809
- * Returns a string that can be used as the "accept" attribute of a file input element.
9810
- *
9811
- * @param accept - A file accept string or array of filter type strings to convert.
9812
- * @returns A comma-separated string suitable for the HTML accept attribute.
9813
- */
9814
- declare function fileAcceptString(accept: FileAcceptString | FileAcceptFilterTypeStringArray): FileAcceptString;
9815
- /**
9816
- * Describes a type of file that can be selected.
9817
- *
9818
- * Can either be a mime type or a file suffix.
9819
- */
9820
- type FileAcceptFilterTypeString = MimeTypeWildcard | MimeTypeWithoutParameters | MimeTypeWithSubtypeWildcardWithoutParameters | SlashPathTypedFileSuffix;
9821
- /**
9822
- * The file accept filter type strings.
9823
- */
9824
- type FileAcceptFilterTypeStringArray = FileAcceptFilterTypeString[];
9825
- /**
9826
- * Converts a comma-separated accept string or array into a {@link FileAcceptFilterTypeStringArray}.
9827
- *
9828
- * @param accept - A file accept string or array of filter type strings to normalize.
9829
- * @returns The individual filter type strings.
9830
- *
9831
- * @example
9832
- * ```ts
9833
- * const types = fileAcceptFilterTypeStringArray('image/png, .pdf');
9834
- * // ['image/png', '.pdf']
9835
- * ```
9836
- */
9837
- declare function fileAcceptFilterTypeStringArray(accept: FileAcceptString | FileAcceptFilterTypeStringArray): FileAcceptFilterTypeStringArray;
9838
- /**
9839
- * Configuration for matching an array of files against accept criteria with optional multiple file support.
9840
- */
9841
- interface FileArrayAcceptMatchConfig {
9842
- readonly accept: FileAcceptFunction | FileAcceptString | FileAcceptFilterTypeStringArray;
9843
- /**
9844
- * If false, then only the first file will be accepted.
9845
- *
9846
- * Defaults to true.
9847
- */
9848
- readonly multiple?: boolean;
9849
- }
9850
- /**
9851
- * Result of matching files against accept criteria, categorizing them into accepted and rejected lists.
9852
- */
9853
- interface FileArrayAcceptMatchResult {
9854
- /**
9855
- * If multiple is allowed or not.
9856
- */
9857
- readonly multiple: boolean;
9858
- /**
9859
- * The input files.
9860
- */
9861
- readonly input: File[];
9862
- /**
9863
- * The final list of accepted files.
9864
- */
9865
- readonly accepted: File[];
9866
- /**
9867
- * The final list of rejected files.
9868
- */
9869
- readonly rejected: File[];
9870
- /**
9871
- * The list of accepted files based on the file type.
9872
- *
9873
- * If multiple is false, all files that would have been accepted are included here.
9874
- */
9875
- readonly acceptedType: File[];
9876
- /**
9877
- * The list of rejected files based on the file type.
9878
- *
9879
- * If multiple is false, only files that would have been rejected by type are included here.
9880
- */
9881
- readonly rejectedType: File[];
9882
- }
9883
- /**
9884
- * Matches an array of files based on the internal configuration.
9885
- */
9886
- type FileArrayAcceptMatchFunction = (input: File[]) => FileArrayAcceptMatchResult;
9887
- /**
9888
- * Creates a {@link FileArrayAcceptMatchFunction} that filters and separates files based on accept criteria and multiple file support.
9889
- *
9890
- * @param config - Configuration specifying the accept criteria and whether multiple files are allowed.
9891
- * @returns Accepts an array of files and returns the categorized match result.
9892
- *
9893
- * @example
9894
- * ```ts
9895
- * const matchFn = fileArrayAcceptMatchFunction({ accept: 'image/*', multiple: false });
9896
- * const result = matchFn(fileList);
9897
- * console.log(result.accepted, result.rejected);
9898
- * ```
9899
- *
9900
- * @__NO_SIDE_EFFECTS__
9901
- */
9902
- declare function fileArrayAcceptMatchFunction(config: FileArrayAcceptMatchConfig): FileArrayAcceptMatchFunction;
9903
- /**
9904
- * Type of input used for a FileAcceptFunction.
9905
- *
9906
- * Isolates the name and type fields from a File.
9907
- */
9908
- type FileAcceptFunctionInput = Pick<File, 'name' | 'type'>;
9909
- /**
9910
- * Used to determine if a file is an accepted type based on the internal configuration.
9911
- */
9912
- type FileAcceptFunction = DecisionFunction<FileAcceptFunctionInput>;
9913
- /**
9914
- * Creates a {@link FileAcceptFunction} that checks individual files against accept criteria (MIME types, wildcards, or file extensions).
9915
- *
9916
- * @param accept - A file accept string or array specifying which MIME types, wildcards, or file extensions to allow.
9917
- * @returns A decision function that returns true if a file matches any of the accept criteria.
9918
- *
9919
- * @example
9920
- * ```ts
9921
- * const isAccepted = fileAcceptFunction(['image/*', '.pdf']);
9922
- * isAccepted({ name: 'photo.png', type: 'image/png' }); // true
9923
- * isAccepted({ name: 'doc.txt', type: 'text/plain' }); // false
9924
- * ```
9925
- *
9926
- * @__NO_SIDE_EFFECTS__
9927
- */
9928
- declare function fileAcceptFunction(accept: FileAcceptString | FileAcceptFilterTypeStringArray): FileAcceptFunction;
9929
-
9930
9973
  /**
9931
9974
  * Abstract interface for file upload components that can be controlled by the action system (disabled, working, multiple, accept states).
9932
9975
  *
@@ -10034,31 +10077,40 @@ declare class DbxPdfMergeEditorComponent {
10034
10077
  * Single-slot subscription tracker for the deferred Preview path. Replacing the slot cancels any earlier in-flight wait so rapid clicks (or repeated programmatic calls) cannot stack pending dialogs.
10035
10078
  */
10036
10079
  private readonly _pendingPreview;
10037
- readonly accept: _angular_core.InputSignal<string | _dereekb_dbx_web.FileAcceptFilterTypeStringArray | _dereekb_dbx_web.FileAcceptFunction>;
10038
- readonly multiple: _angular_core.InputSignal<boolean>;
10039
- readonly fileName: _angular_core.InputSignal<string>;
10040
- readonly showDownloadButton: _angular_core.InputSignal<boolean>;
10041
- readonly showPreviewButton: _angular_core.InputSignal<boolean>;
10042
- readonly downloadButton: _angular_core.InputSignal<Maybe<DbxButtonDisplayStylePair>>;
10043
- /**
10044
- * When `false`, hides the default "Add files" upload area. Use when projecting one or more {@link DbxPdfMergeEditorFileUploadComponent} slots through `<ng-content>` instead of relying on the unscoped uploader.
10045
- */
10046
- readonly showAddFiles: _angular_core.InputSignal<boolean>;
10047
10080
  /**
10048
- * When `false`, hides the shared {@link DbxPdfMergeListComponent} below the slot content. Useful when each slot displays its owned files inline and you don't want a duplicate unified list.
10081
+ * Individual inputs. Each takes precedence over the matching field on {@link config} (and the workspace-wide token), with defaults applied in the corresponding `*Signal` computed. See {@link DbxPdfMergeEditorConfig} for field docs.
10049
10082
  */
10050
- readonly showFileList: _angular_core.InputSignal<boolean>;
10083
+ readonly accept: _angular_core.InputSignal<Maybe<string | _dereekb_dbx_web.FileAcceptFilterTypeStringArray | _dereekb_dbx_web.FileAcceptFunction>>;
10084
+ readonly multiple: _angular_core.InputSignal<Maybe<boolean>>;
10085
+ readonly fileName: _angular_core.InputSignal<Maybe<string>>;
10086
+ readonly showDownloadButton: _angular_core.InputSignal<Maybe<boolean>>;
10087
+ readonly showPreviewButton: _angular_core.InputSignal<Maybe<boolean>>;
10088
+ readonly downloadButton: _angular_core.InputSignal<Maybe<DbxButtonDisplayStylePair>>;
10089
+ readonly showAddFiles: _angular_core.InputSignal<Maybe<boolean>>;
10090
+ readonly showFileList: _angular_core.InputSignal<Maybe<boolean>>;
10051
10091
  /**
10052
- * Optional configuration override for image compression and output-size limits. When omitted, falls back to the value provided via {@link DBX_PDF_MERGE_EDITOR_CONFIG} (if any).
10092
+ * Bundles every editor option into one object (see {@link DbxPdfMergeEditorConfig}). Individual inputs override the matching field here, which in turn overrides the workspace-wide {@link DBX_PDF_MERGE_EDITOR_CONFIG} token.
10053
10093
  */
10054
10094
  readonly config: _angular_core.InputSignal<Maybe<DbxPdfMergeEditorConfig>>;
10055
10095
  readonly entriesChanged: _angular_core.OutputEmitterRef<readonly PdfMergeEntry[]>;
10056
10096
  /**
10057
- * Merged config the editor's own `config` input wins over the workspace-wide token.
10097
+ * Store-level image-compression default pushed by {@link DbxPdfMergeEditorStoreDirective}. Resolved between the editor's own `config` input and the workspace-wide token so a store-level default flows through the upload dialog's bare editor.
10098
+ */
10099
+ readonly storeImageCompressionSignal: _angular_core.Signal<Maybe<DbxImageCompressionConfig>>;
10100
+ /**
10101
+ * Merged config — the editor's own `config` input wins over the store-level default (for `imageCompression`), which in turn wins over the workspace-wide token. The individual inputs are resolved on top of this object in the per-field `*Signal` computeds below.
10058
10102
  */
10059
10103
  readonly effectiveConfigSignal: _angular_core.Signal<DbxPdfMergeEditorConfig>;
10060
10104
  readonly imageCompressionConfigSignal: _angular_core.Signal<Maybe<DbxImageCompressionConfig>>;
10061
10105
  readonly outputSizeLimitsSignal: _angular_core.Signal<Maybe<DbxPdfMergeOutputSizeLimitsConfig>>;
10106
+ readonly acceptSignal: _angular_core.Signal<string | _dereekb_dbx_web.FileAcceptFilterTypeStringArray | _dereekb_dbx_web.FileAcceptFunction>;
10107
+ readonly multipleSignal: _angular_core.Signal<boolean>;
10108
+ readonly fileNameSignal: _angular_core.Signal<string>;
10109
+ readonly showDownloadButtonSignal: _angular_core.Signal<boolean>;
10110
+ readonly showPreviewButtonSignal: _angular_core.Signal<boolean>;
10111
+ readonly downloadButtonSignal: _angular_core.Signal<DbxButtonDisplayStylePair>;
10112
+ readonly showAddFilesSignal: _angular_core.Signal<boolean>;
10113
+ readonly showFileListSignal: _angular_core.Signal<boolean>;
10062
10114
  readonly warnBytesSignal: _angular_core.Signal<Maybe<number>>;
10063
10115
  readonly errorBytesSignal: _angular_core.Signal<Maybe<number>>;
10064
10116
  readonly hasReadyEntriesSignal: _angular_core.Signal<boolean>;
@@ -10343,7 +10395,11 @@ declare class DbxPdfMergeEditorFileUploadComponent implements OnInit, OnDestroy,
10343
10395
  ngOnDestroy(): void;
10344
10396
  onDrop(event: CdkDragDrop<unknown>): void;
10345
10397
  /**
10346
- * Resolves the active image compression config: per-slot override → workspace-wide DI token. The intermediate ancestor {@link DbxPdfMergeEditorComponent} config is not visible from a slot, so consumers needing per-editor compression should either set the slot's `imageCompression` directly or rely on the injection token.
10398
+ * Store-level image-compression default pushed by {@link DbxPdfMergeEditorStoreDirective}. Resolved between the slot's own override and the workspace-wide token.
10399
+ */
10400
+ readonly storeImageCompressionSignal: _angular_core.Signal<Maybe<DbxImageCompressionConfig>>;
10401
+ /**
10402
+ * Resolves the active image compression config: per-slot override → store-level default → workspace-wide DI token. The store tier lets a {@link DbxPdfMergeEditorStoreDirective} `[config]` supply a shared default (e.g. through the upload dialog) while a slot's own `imageCompression` still wins.
10347
10403
  */
10348
10404
  readonly effectiveImageCompressionSignal: _angular_core.Signal<Maybe<DbxImageCompressionConfig>>;
10349
10405
  onFiles(event: DbxFileUploadFilesChangedEvent): Promise<void>;