barsa-sap-ui 3.0.5 → 3.0.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": "barsa-sap-ui",
3
- "version": "3.0.5",
3
+ "version": "3.0.7",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^22.0.8",
6
6
  "@angular/common": "^22.0.8"
@@ -7,7 +7,7 @@ import { ComboboxComponent, ComboboxSelectionChangeEvent, IconTabBarItem, IconTa
7
7
  import { ComboBoxDataSource, DataProvider } from '@fundamental-ngx/platform/shared';
8
8
  import * as i237 from 'barsa-novin-ray-core';
9
9
  import { BaseComponent, ReportViewBaseComponent, UiReportViewBaseSetting, LayoutItemBaseComponent, BbbTranslatePipe, LayoutService, MetaobjectDataModel, GridSetting, ReportViewColumn, CollectionSort, SortDirection, ReportBaseComponent, DeviceSize, SelectionMode, LayoutSetting, ScrollLayoutContextHolder, ScrollLayoutMode, EntitySettingsStore, PortalService, UlvMainService, FormPanelService, LayoutMainContentService, DefaultCommandsAccess, ColumnSummaryType, columnsResizedEventArgs, ShareButtonsChoiceDef, SortSetting, FieldBaseComponent, EllipsifyDirective, AbbrevationDeviceSize, FillEmptySpaceDirective, RelationItemType, TreeNodeObj, ColumnRendererBase, UiReportViewBase, MoForReportModel, EjrayOlgo, TableHeaderWidthMode, ColumnResizedArgs, NotificationItem, NotificationAction, CultureTypes, DateService, FormComponent, FormSetting, GeneralControlInfoModel, ColumnInfoType, SearchPanelSettings, GridView, ToolbarButtonReportViewType, PagingSetting, CssBackground, ShortCuts, BreadCrumbInfo, UlvHeightSizeType, ShortCutData, BaseViewItemPropsComponent, UploadService, IUploadingState, FilesValidationHelper, FileAttachmentInfo, LinearListHelper, BaseUlvSettingComponent, LayoutPanelBaseComponent, FormToolbarBaseComponent, InfoBarType, ReportModel, FilePictureInfoModel, FormBaseComponent, PictureGroupItem, Media, BaseController, IViewBase, IBaseController, ITemplateEngine, MoReportValuePipe, FindColumnsPipe, FieldViewBase, ContainerComponent, DialogParams, BarsaDialogService, ContainerService, UiResponsiveSettings, FormPropsBaseComponent, BaseDirective, NumberBaseComponent, ViewTypes, ClassNamesModel, ReportExtraInfo, MenuItem, TypeUlvMainCtrlr, EffectiveReportLayoutPolicy, BaseViewContentPropsComponent, ResponsiveColsConfig, BaseColumnPropsComponent, BaseFormToolbaritemPropsComponent, FormComponentParams, BreadcrumbService, PictureFieldSourcePipe, ResponsiveBreakpoints, ReportNavigatorComponent, BaseModule, DynamicComponentService } from 'barsa-novin-ray-core';
10
- import { ScrollStrategy, Overlay } from '@angular/cdk/overlay';
10
+ import { ScrollStrategy, Overlay, ConnectedPosition } from '@angular/cdk/overlay';
11
11
  import * as i240 from '@fundamental-ngx/core';
12
12
  import { ContentDensity, TableComponent, ToolbarComponent, DialogConfig, ContentDensityService, DialogService, PopoverComponent, DynamicPageResponsiveSize, SvgConfig, CardType, MenuComponent, Size, DialogRef, RadioButtonComponent, DynamicPageComponent, FileUploaderComponent, DialogComponent, BarDesignType, MultiInputComponent, MessageStripType, MessageStripIndicationColor, MessageStripAlertService, TabPanelComponent, WizardStepComponent, WizardStepStatus, WizardSize, BusyIndicatorSize, ObjectStatus, IconFont, InlineHelpDirective, ButtonType, SliderComponent, InputGroupComponent, ContentDensityMode } from '@fundamental-ngx/core';
13
13
  import { SafeHtml, DomSanitizer, SafeResourceUrl, SafeStyle } from '@angular/platform-browser';
@@ -74,6 +74,11 @@ declare class FundamentalComboComponent implements AfterViewInit, OnDestroy {
74
74
  fillControlMode: 'at-least' | 'equal';
75
75
  tabOutStrategy: string;
76
76
  closeOnOutsideClick: boolean;
77
+ /**
78
+ * typeahead داخلی Platform را فقط برای صفحه‌کلید لمسی متوقف می‌کند. این guard برای
79
+ * جستجوی ناهمگام ULV است؛ مصرف‌کننده‌های دیگر و ورودی دسکتاپ رفتار پیش‌فرض را دارند.
80
+ */
81
+ suppressTypeaheadOnCoarsePointer: boolean;
77
82
  /** انتخابِ نهایی: آبجکتِ رکورد، یا (در حالتِ allowFreeText) رشته‌ی متنِ آزاد. */
78
83
  selectionChange: EventEmitter<any>;
79
84
  /** درخواستِ پاک‌کردنِ مقدار (payload خالی از سمتِ کمبو). */
@@ -87,6 +92,14 @@ declare class FundamentalComboComponent implements AfterViewInit, OnDestroy {
87
92
  private _pendingNavigationSelection;
88
93
  private _commitPendingNavigationSelection;
89
94
  private _pointerSelectionInProgress;
95
+ /**
96
+ * آیتمِ زیرِ mousedown (اگر روی یک option بوده). وقتی فیلد نزدیکِ لبه‌ی صفحه است، CDK popover
97
+ * ممکن است بینِ mousedown و click جابه‌جا شود (flip بالا/پایین)؛ در آن حالت click واقعیِ کاربر
98
+ * به مکانِ قبلی می‌خورد و هیچ‌چیز انتخاب نمی‌شود. نگه‌داشتنِ همین رفرنس اجازه می‌دهد در
99
+ * _trackComboListInteraction کلیک را روی همان المان (که فقط جابه‌جا شده، نه از بین رفته) دوباره
100
+ * شبیه‌سازی کنیم؛ نیازی به دانستنِ value یا data-model نیست.
101
+ */
102
+ private _pendingMouseDownOptionEl;
90
103
  ngAfterViewInit(): void;
91
104
  ngOnDestroy(): void;
92
105
  onSelectionChange(event: ComboboxSelectionChangeEvent): void;
@@ -100,15 +113,25 @@ declare class FundamentalComboComponent implements AfterViewInit, OnDestroy {
100
113
  /** بازنویسیِ متنِ نمایشِ کمبو با مقدارِ فعلی (بدون انتشارِ رویداد). */
101
114
  restoreDisplay(value?: any): void;
102
115
  protected _handleComboInputKeyboard(event: KeyboardEvent): void;
116
+ protected _hasCoarsePointer(input: HTMLInputElement | null): boolean;
103
117
  protected _trackComboListInteraction(event: KeyboardEvent | MouseEvent): void;
104
118
  protected _shouldDeferComboSelection(): boolean;
105
119
  protected _finalizePendingNavigationSelection(): void;
106
120
  protected _resetPendingNavigationSelection(): void;
107
121
  protected _isComboOptionTarget(target: EventTarget | null): boolean;
122
+ protected _closestComboOption(target: EventTarget | null): HTMLElement | null;
123
+ /**
124
+ * true وقتی: mousedown روی یک option افتاده، آن option هنوز در DOM و داخلِ لیستِ بازِ همین
125
+ * کمبو است، ولی click واقعی به جای دیگری خورده (چون popover جابه‌جا شده و آن مکانِ قبلی
126
+ * دیگر چیزی نیست).
127
+ */
128
+ protected _shouldRetryStaleOptionClick(event: MouseEvent): boolean;
129
+ /** کلیکِ گم‌شده را روی همان المانِ mousedown-شده (که فقط جابه‌جا شده) دوباره شبیه‌سازی می‌کند. */
130
+ protected _retryStaleOptionClick(): void;
108
131
  protected _isComboListTarget(target: Element | null): boolean;
109
132
  protected _isComboListVisible(input: HTMLInputElement | null): boolean;
110
133
  static ɵfac: i0.ɵɵFactoryDeclaration<FundamentalComboComponent, never>;
111
- static ɵcmp: i0.ɵɵComponentDeclaration<FundamentalComboComponent, "bsu-fundamental-combo", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "value": { "alias": "value"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; "lookupKey": { "alias": "lookupKey"; "required": false; }; "byline": { "alias": "byline"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "mobileConfig": { "alias": "mobileConfig"; "required": false; }; "isLtr": { "alias": "isLtr"; "required": false; }; "id": { "alias": "id"; "required": false; }; "showDropdownButton": { "alias": "showDropdownButton"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "allowFreeText": { "alias": "allowFreeText"; "required": false; }; "width": { "alias": "width"; "required": false; }; "comboClass": { "alias": "comboClass"; "required": false; }; "fillControlMode": { "alias": "fillControlMode"; "required": false; }; "tabOutStrategy": { "alias": "tabOutStrategy"; "required": false; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; }; }, { "selectionChange": "selectionChange"; "cleared": "cleared"; "openChange": "openChange"; "dataRequested": "dataRequested"; "dataReceived": "dataReceived"; }, never, ["*"], false, never>;
134
+ static ɵcmp: i0.ɵɵComponentDeclaration<FundamentalComboComponent, "bsu-fundamental-combo", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "value": { "alias": "value"; "required": false; }; "displayKey": { "alias": "displayKey"; "required": false; }; "lookupKey": { "alias": "lookupKey"; "required": false; }; "byline": { "alias": "byline"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "mobileConfig": { "alias": "mobileConfig"; "required": false; }; "isLtr": { "alias": "isLtr"; "required": false; }; "id": { "alias": "id"; "required": false; }; "showDropdownButton": { "alias": "showDropdownButton"; "required": false; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "allowFreeText": { "alias": "allowFreeText"; "required": false; }; "width": { "alias": "width"; "required": false; }; "comboClass": { "alias": "comboClass"; "required": false; }; "fillControlMode": { "alias": "fillControlMode"; "required": false; }; "tabOutStrategy": { "alias": "tabOutStrategy"; "required": false; }; "closeOnOutsideClick": { "alias": "closeOnOutsideClick"; "required": false; }; "suppressTypeaheadOnCoarsePointer": { "alias": "suppressTypeaheadOnCoarsePointer"; "required": false; }; }, { "selectionChange": "selectionChange"; "cleared": "cleared"; "openChange": "openChange"; "dataRequested": "dataRequested"; "dataReceived": "dataReceived"; }, never, ["*"], false, never>;
112
135
  }
113
136
 
114
137
  /**
@@ -966,6 +989,8 @@ interface UiCardListViewSetting extends UiReportViewBaseSetting {
966
989
  CardWidth: string;
967
990
  ContentComponent: EjrayOlgo;
968
991
  CardType$Caption: CardType;
992
+ /** فقط برای CardType$Caption === 'banner': نمایشِ لایه‌ی نیمه‌شفافِ عنوان/زیرعنوان روی عکسِ بنر. پیش‌فرض false است. */
993
+ IsOverlay?: boolean;
969
994
  }
970
995
  interface UiNotificationViewSettings extends UiReportViewBaseSetting {
971
996
  TitleField: string;
@@ -2842,6 +2867,7 @@ declare class FileViewerContentComponent extends BaseComponent {
2842
2867
  private _picFieldSrc;
2843
2868
  private _renderer2;
2844
2869
  private _imageLoadingTimer;
2870
+ get effectiveCardContentHeight(): string | null;
2845
2871
  ngOnInit(): void;
2846
2872
  ngOnChanges(changes: SimpleChanges): void;
2847
2873
  ngOnDestroy(): void;
@@ -2876,9 +2902,11 @@ declare class FileGalleryViewerComponent extends BaseComponent {
2876
2902
  isHorizontal: boolean;
2877
2903
  selectedFile: FileAttachmentInfo;
2878
2904
  groupList: Array<PictureGroupItem>;
2905
+ selectedIds: readonly string[];
2879
2906
  scrollToId: i0.WritableSignal<string>;
2880
2907
  selectedId: i0.InputSignal<string>;
2881
2908
  selectedIdChange: EventEmitter<string>;
2909
+ selectedIdsChange: EventEmitter<string[]>;
2882
2910
  changeOrder: EventEmitter<{
2883
2911
  FileId: string;
2884
2912
  ChangeOrder: boolean;
@@ -2903,6 +2931,12 @@ declare class FileGalleryViewerComponent extends BaseComponent {
2903
2931
  onMedaiClick(media: FileAttachmentInfo): void;
2904
2932
  /** Whether the strip renders collapsible group headers (only meaningful for the vertical strip). */
2905
2933
  get thumbnailGrouped(): boolean;
2934
+ get selectedCount(): number;
2935
+ get allPagesSelected(): boolean;
2936
+ get partiallySelected(): boolean;
2937
+ isPageSelected(id: string): boolean;
2938
+ onPageSelectionChange(id: string, selected: boolean): void;
2939
+ toggleAllPageSelection(): void;
2906
2940
  toggleGroup(id: string): void;
2907
2941
  isGroupCollapsed(id: string): boolean;
2908
2942
  dropItem(event: CdkDragDrop<FileAttachmentInfo[]>): void;
@@ -2917,20 +2951,14 @@ declare class FileGalleryViewerComponent extends BaseComponent {
2917
2951
  /** Groups start collapsed; the user's later choices are preserved and new groups appear collapsed. */
2918
2952
  private _syncGroupCollapseState;
2919
2953
  static ɵfac: i0.ɵɵFactoryDeclaration<FileGalleryViewerComponent, never>;
2920
- static ɵcmp: i0.ɵɵComponentDeclaration<FileGalleryViewerComponent, "bsu-file-gallery-viewer", never, { "fillWidth": { "alias": "fillWidth"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "deviceSize": { "alias": "deviceSize"; "required": false; }; "title": { "alias": "title"; "required": false; }; "files": { "alias": "files"; "required": false; }; "contentDensity": { "alias": "contentDensity"; "required": false; }; "isImageGallery": { "alias": "isImageGallery"; "required": false; }; "isHorizontal": { "alias": "isHorizontal"; "required": false; }; "selectedFile": { "alias": "selectedFile"; "required": false; }; "groupList": { "alias": "groupList"; "required": false; }; "scrollToId": { "alias": "scrollToId"; "required": false; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; }, { "selectedIdChange": "selectedIdChange"; "changeOrder": "changeOrder"; }, never, never, false, never>;
2954
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileGalleryViewerComponent, "bsu-file-gallery-viewer", never, { "fillWidth": { "alias": "fillWidth"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "deviceSize": { "alias": "deviceSize"; "required": false; }; "title": { "alias": "title"; "required": false; }; "files": { "alias": "files"; "required": false; }; "contentDensity": { "alias": "contentDensity"; "required": false; }; "isImageGallery": { "alias": "isImageGallery"; "required": false; }; "isHorizontal": { "alias": "isHorizontal"; "required": false; }; "selectedFile": { "alias": "selectedFile"; "required": false; }; "groupList": { "alias": "groupList"; "required": false; }; "selectedIds": { "alias": "selectedIds"; "required": false; }; "scrollToId": { "alias": "scrollToId"; "required": false; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; }, { "selectedIdChange": "selectedIdChange"; "selectedIdsChange": "selectedIdsChange"; "changeOrder": "changeOrder"; }, never, never, false, never>;
2921
2955
  }
2922
2956
 
2923
2957
  declare class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent implements OnInit, OnDestroy {
2924
2958
  _fileUploader: FileUploaderComponent;
2925
2959
  _fileGalleryViewer: FileGalleryViewerComponent;
2926
- value: {
2927
- Id: string;
2928
- FileId: string;
2929
- FileName: string;
2930
- Width: string;
2931
- Height: string;
2932
- Size: string;
2933
- }[];
2960
+ deleteConfirmation: TemplateRef<unknown>;
2961
+ value: PictureValue[];
2934
2962
  selectedGroupItem: PictureGroupItem | null;
2935
2963
  parameters: UiPicturesInfoSettings;
2936
2964
  uploadingState$: Observable<IUploadingState>;
@@ -2941,6 +2969,11 @@ declare class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent imple
2941
2969
  mediaData$: Observable<Media[]>;
2942
2970
  isMobile: any;
2943
2971
  selectedId: string;
2972
+ selectedPageIds: string[];
2973
+ deleteInProgress: boolean;
2974
+ deleteConfirmationOpen: boolean;
2975
+ pendingDeleteMode: DeleteMode | null;
2976
+ isDisabledOrReadonly: boolean;
2944
2977
  fillWidth: boolean;
2945
2978
  fillAll: boolean;
2946
2979
  fillOriginal: boolean;
@@ -2955,6 +2988,10 @@ declare class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent imple
2955
2988
  protected _dialogService: DialogService;
2956
2989
  private _fileCountSource;
2957
2990
  get selectedMedia(): Media | undefined;
2991
+ get selectedPageCount(): number;
2992
+ get canDelete(): boolean;
2993
+ get deleteConfirmationMessage(): string;
2994
+ get deleteConfirmationLabel(): string;
2958
2995
  ngOnInit(): void;
2959
2996
  ngOnDestroy(): void;
2960
2997
  onDownloadAsPdf(): void;
@@ -2968,6 +3005,10 @@ declare class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent imple
2968
3005
  onRotate(media2: Media): void;
2969
3006
  onRotate2(): void;
2970
3007
  onDelete(id: string): void;
3008
+ onSelectedPageIdsChange(ids: string[]): void;
3009
+ requestDeleteSelected(): void;
3010
+ requestDeleteAll(): void;
3011
+ confirmDelete(dialog: DialogRef): void;
2971
3012
  onScan(): void;
2972
3013
  onAdvanceScan(): void;
2973
3014
  onZoomIn(): void;
@@ -2979,7 +3020,7 @@ declare class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent imple
2979
3020
  protected changeOrder(e: any): void;
2980
3021
  protected move(selectedId: string, direction: -1 | 1): void;
2981
3022
  protected _setGroupItemAndOpenUploader(groupItem: PictureGroupItem | null, uploader: any): void;
2982
- protected _deleteMedia(selectedMedia: any): void;
3023
+ protected _deleteMediaBatch(ids: readonly string[]): void;
2983
3024
  protected _checkSelectedIndex(): void;
2984
3025
  protected _scanHelper(isAdvanced: any): void;
2985
3026
  protected _onScanResult_Ready(contents: any): void;
@@ -2990,18 +3031,25 @@ declare class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent imple
2990
3031
  protected uploadToServer(files: File[]): Observable<any>;
2991
3032
  protected _setFileCount(value: any): void;
2992
3033
  protected updateValue(newVal: any[]): void;
2993
- protected _displayImages(value: {
2994
- Id: string;
2995
- FileId: string;
2996
- GroupId: string;
2997
- FileName: string;
2998
- Width: string;
2999
- Height: string;
3000
- Size: string;
3001
- }[]): void;
3034
+ protected _displayImages(value: PictureValue[]): void;
3035
+ private _openDeleteConfirmation;
3036
+ private _pictureId;
3037
+ private _restoreActivePage;
3038
+ private _showDeleteError;
3002
3039
  static ɵfac: i0.ɵɵFactoryDeclaration<UiPicturesInfoComponent, never>;
3003
3040
  static ɵcmp: i0.ɵɵComponentDeclaration<UiPicturesInfoComponent, "bsu-ui-pictures-info", never, { "value": { "alias": "value"; "required": false; }; }, {}, never, never, false, never>;
3004
3041
  }
3042
+ type DeleteMode = 'selected' | 'all';
3043
+ interface PictureValue {
3044
+ Id?: string;
3045
+ FileId: string;
3046
+ FileName: string;
3047
+ GroupId?: string;
3048
+ CreateDate?: string;
3049
+ Width?: string;
3050
+ Height?: string;
3051
+ Size?: string;
3052
+ }
3005
3053
  interface UiPicturesInfoSettings extends MetaobjectDataModel {
3006
3054
  IsThumbnailHorizontal: boolean;
3007
3055
  GalleryMode: number;
@@ -4141,6 +4189,13 @@ declare class CardItemComponent extends BaseViewItemPropsComponent implements On
4141
4189
  contextMenuEnabled: boolean;
4142
4190
  cardMedia: boolean;
4143
4191
  isCardTypeBanner: boolean;
4192
+ /**
4193
+ * بنر بدون IsOverlay: دقیقاً رفتارِ قبلی (کانتینرِ عنوان/زیرعنوان همیشه رندر می‌شود).
4194
+ * بنر با IsOverlay=true: حالتِ overlay فاندامنتال (`[isOverlay]` روی
4195
+ * fd-card-media-content-container) اعمال می‌شود، ولی اگر نه عنوان و نه زیرعنوان تنظیم
4196
+ * نشده باشند، کلِ کانتینر رندر نمی‌شود و فقط عکسِ بنر می‌ماند.
4197
+ */
4198
+ showBannerContentContainer: boolean;
4144
4199
  contentTemplateRef: TemplateRef<any>;
4145
4200
  ngOnInit(): void;
4146
4201
  static ɵfac: i0.ɵɵFactoryDeclaration<CardItemComponent, never>;
@@ -4323,6 +4378,8 @@ interface FilePreviewSizeConfig {
4323
4378
  maxWidth: string | null;
4324
4379
  /** روی `fd-popover-body`؛ با قاعده‌ی scss به اسکرولِ داخلی تبدیل می‌شود */
4325
4380
  maxHeight: string | null;
4381
+ /** ارتفاعِ محتوای سند با رزرو فضای footer؛ برای تصویر مصرف نمی‌شود */
4382
+ documentContentHeight: string | null;
4326
4383
  }
4327
4384
  declare class FileViewerPopoverComponent extends BaseComponent {
4328
4385
  files: FileAttachmentInfo[];
@@ -4338,7 +4395,9 @@ declare class FileViewerPopoverComponent extends BaseComponent {
4338
4395
  remove: EventEmitter<void>;
4339
4396
  hideFullScreen: boolean;
4340
4397
  popoverOpened: boolean;
4398
+ readonly viewportCenteredPositions: ConnectedPosition[];
4341
4399
  get sizeConfig(): FilePreviewSizeConfig;
4400
+ get isViewportBounded(): boolean;
4342
4401
  static ɵfac: i0.ɵɵFactoryDeclaration<FileViewerPopoverComponent, never>;
4343
4402
  static ɵcmp: i0.ɵɵComponentDeclaration<FileViewerPopoverComponent, "bsu-file-viewer-popover", never, { "files": { "alias": "files"; "required": false; }; "file": { "alias": "file"; "required": false; }; "index": { "alias": "index"; "required": false; }; "deviceSize": { "alias": "deviceSize"; "required": false; }; "canDownload": { "alias": "canDownload"; "required": false; }; "disableRemove": { "alias": "disableRemove"; "required": false; }; "fdType": { "alias": "fdType"; "required": false; }; "attachmentViewType": { "alias": "attachmentViewType"; "required": false; }; "previewSize": { "alias": "previewSize"; "required": false; }; }, { "remove": "remove"; }, never, never, false, never>;
4344
4403
  }