@shival99/z-ui 2.3.10 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/fesm2022/shival99-z-ui-components-z-audio-player.mjs +210 -0
  2. package/fesm2022/shival99-z-ui-components-z-audio-player.mjs.map +1 -0
  3. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +2 -2
  4. package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
  5. package/fesm2022/shival99-z-ui-components-z-drawer.mjs +1 -1
  6. package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
  7. package/fesm2022/shival99-z-ui-components-z-gallery.mjs +1482 -1761
  8. package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
  9. package/fesm2022/shival99-z-ui-components-z-icon.mjs +20 -11
  10. package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
  11. package/fesm2022/shival99-z-ui-components-z-input.mjs +2 -2
  12. package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
  13. package/fesm2022/shival99-z-ui-components-z-media-player.mjs +413 -101
  14. package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
  15. package/fesm2022/shival99-z-ui-components-z-popover.mjs +75 -43
  16. package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
  17. package/fesm2022/shival99-z-ui-components-z-select.mjs +2 -2
  18. package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
  19. package/fesm2022/shival99-z-ui-components-z-table.mjs +2 -0
  20. package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
  21. package/fesm2022/shival99-z-ui-components-z-tabs.mjs +17 -11
  22. package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
  23. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +1 -1
  24. package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
  25. package/fesm2022/shival99-z-ui-i18n.mjs +4 -2
  26. package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
  27. package/fesm2022/shival99-z-ui-services.mjs +144 -9
  28. package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
  29. package/package.json +21 -1
  30. package/types/shival99-z-ui-components-z-audio-player.d.ts +46 -0
  31. package/types/shival99-z-ui-components-z-gallery.d.ts +67 -36
  32. package/types/shival99-z-ui-components-z-icon.d.ts +1 -1
  33. package/types/shival99-z-ui-components-z-media-player.d.ts +83 -7
  34. package/types/shival99-z-ui-components-z-popover.d.ts +1 -0
  35. package/types/shival99-z-ui-components-z-tabs.d.ts +6 -2
  36. package/types/shival99-z-ui-components-z-toast.d.ts +2 -2
  37. package/types/shival99-z-ui-components-z-upload.d.ts +3 -3
  38. package/types/shival99-z-ui-services.d.ts +25 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shival99/z-ui",
3
- "version": "2.3.10",
3
+ "version": "2.4.0",
4
4
  "description": "Z-UI: Modern Angular UI Component Library - A comprehensive, high-performance design system built with Angular 22, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.",
5
5
  "keywords": [
6
6
  "angular",
@@ -36,6 +36,7 @@
36
36
  "url": "https://github.com/vuboi/z-ui/issues"
37
37
  },
38
38
  "peerDependencies": {
39
+ "@aiden0z/pptx-renderer": ">=1.2.4",
39
40
  "@angular/cdk": ">=22.0.0 <23.0.0",
40
41
  "@angular/common": ">=22.0.0 <23.0.0",
41
42
  "@angular/core": ">=22.0.0 <23.0.0",
@@ -53,6 +54,8 @@
53
54
  "@ng-icons/phosphor-icons": ">=33.0.0",
54
55
  "@ng-icons/tabler-icons": ">=33.0.0",
55
56
  "@ngx-translate/core": ">=17.0.0",
57
+ "@univerjs/preset-sheets-core": ">=0.25.1",
58
+ "@univerjs/presets": ">=0.25.1",
56
59
  "@tanstack/angular-virtual": ">=6.0.2",
57
60
  "@shival99/ngx-sonner": ">=3.0.0",
58
61
  "@tanstack/angular-table": ">=9.1.0",
@@ -74,6 +77,7 @@
74
77
  "class-variance-authority": ">=0.7.0",
75
78
  "clsx": ">=2.0.0",
76
79
  "dompurify": ">=3.0.0",
80
+ "docx-preview": ">=0.4.0",
77
81
  "echarts": ">=5.0.0",
78
82
  "exceljs": "^4.4.0",
79
83
  "file-saver": "^2.0.5",
@@ -92,9 +96,18 @@
92
96
  "xlsx": "^0.18.5"
93
97
  },
94
98
  "peerDependenciesMeta": {
99
+ "@aiden0z/pptx-renderer": {
100
+ "optional": true
101
+ },
95
102
  "@dayflow/blossom-color-picker-angular": {
96
103
  "optional": true
97
104
  },
105
+ "@univerjs/preset-sheets-core": {
106
+ "optional": true
107
+ },
108
+ "@univerjs/presets": {
109
+ "optional": true
110
+ },
98
111
  "@tanstack/angular-virtual": {
99
112
  "optional": true
100
113
  },
@@ -149,6 +162,9 @@
149
162
  "boneyard-js": {
150
163
  "optional": true
151
164
  },
165
+ "docx-preview": {
166
+ "optional": true
167
+ },
152
168
  "mammoth": {
153
169
  "optional": true
154
170
  },
@@ -183,6 +199,10 @@
183
199
  "types": "./types/shival99-z-ui-components-z-accordion.d.ts",
184
200
  "default": "./fesm2022/shival99-z-ui-components-z-accordion.mjs"
185
201
  },
202
+ "./components/z-audio-player": {
203
+ "types": "./types/shival99-z-ui-components-z-audio-player.d.ts",
204
+ "default": "./fesm2022/shival99-z-ui-components-z-audio-player.mjs"
205
+ },
186
206
  "./components/z-autocomplete": {
187
207
  "types": "./types/shival99-z-ui-components-z-autocomplete.d.ts",
188
208
  "default": "./fesm2022/shival99-z-ui-components-z-autocomplete.mjs"
@@ -0,0 +1,46 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef } from '@angular/core';
3
+
4
+ declare class ZAudioPlayerComponent {
5
+ private readonly _destroyRef;
6
+ private _animationFrameId;
7
+ private _isSeeking;
8
+ constructor();
9
+ readonly zSrc: _angular_core.InputSignal<string>;
10
+ readonly zTitle: _angular_core.InputSignal<string>;
11
+ readonly zTags: _angular_core.InputSignal<readonly string[]>;
12
+ readonly zDownload: _angular_core.InputSignal<boolean>;
13
+ readonly zLoaded: _angular_core.OutputEmitterRef<void>;
14
+ readonly zError: _angular_core.OutputEmitterRef<Error>;
15
+ readonly zPlay: _angular_core.OutputEmitterRef<boolean>;
16
+ protected readonly audio: _angular_core.Signal<ElementRef<HTMLAudioElement>>;
17
+ protected readonly isPlaying: _angular_core.WritableSignal<boolean>;
18
+ protected readonly currentTime: _angular_core.WritableSignal<number>;
19
+ protected readonly duration: _angular_core.WritableSignal<number>;
20
+ protected readonly waveform: readonly [28, 42, 34, 56, 38, 66, 45, 32, 52, 72, 46, 58, 36, 78, 48, 64, 40, 30, 54, 70, 44, 60, 35, 50, 76, 42, 58, 38, 68, 46, 34, 56, 74, 40, 62, 36, 52, 70, 44, 30, 48, 64, 38, 58, 76, 42, 54, 34, 66, 46, 72, 40, 56, 32, 68, 48, 60, 36, 74, 44, 52, 30, 64, 42, 78, 46, 58, 34, 70, 40, 54, 32, 66, 48, 62, 38, 72, 44, 56, 30, 68, 42, 60, 36, 76, 46, 54, 34, 64, 40, 70, 48, 58, 32, 66, 44, 74, 38, 52, 30, 62, 46, 68, 36, 56, 78, 42, 60, 34, 72, 48, 54, 38, 66, 44, 76, 40, 58, 32, 70, 46, 62, 36, 74, 48, 56, 30, 64, 42, 68, 38, 52, 72, 44, 60, 34, 76, 46, 54, 32, 66, 40, 58, 74, 36, 62, 48, 70, 42, 56, 30, 68, 44, 60, 38, 74, 46, 54, 32, 66, 40, 58, 72, 36, 62, 48, 70, 42, 56, 34, 76, 44, 60, 38, 68, 46, 52, 30, 64, 42, 74, 36, 58, 48, 70, 40, 54, 32, 66, 44, 60, 38, 76, 46, 56, 34, 68, 42, 72, 48, 58];
21
+ protected readonly title: _angular_core.InputSignal<string>;
22
+ protected readonly tags: _angular_core.InputSignal<readonly string[]>;
23
+ protected readonly progress: _angular_core.Signal<number>;
24
+ protected readonly currentTimeLabel: _angular_core.Signal<string>;
25
+ protected readonly durationLabel: _angular_core.Signal<string>;
26
+ protected togglePlay(): Promise<void>;
27
+ protected onWaveformPointerDown(event: PointerEvent): void;
28
+ protected onWaveformPointerMove(event: PointerEvent): void;
29
+ protected onWaveformPointerUp(event: PointerEvent): void;
30
+ private _seekToPointerPosition;
31
+ protected onWaveformKeydown(event: KeyboardEvent): void;
32
+ protected onLoadedMetadata(): void;
33
+ protected onLoadStart(): void;
34
+ protected onTimeUpdate(): void;
35
+ protected onEnded(): void;
36
+ protected onError(): void;
37
+ protected onPlayStateChange(isPlaying: boolean): void;
38
+ private _seekToTime;
39
+ private _startPlaybackFrame;
40
+ private _stopPlaybackFrame;
41
+ private _formatTime;
42
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZAudioPlayerComponent, never>;
43
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZAudioPlayerComponent, "z-audio-player", never, { "zSrc": { "alias": "zSrc"; "required": true; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": false; "isSignal": true; }; "zTags": { "alias": "zTags"; "required": false; "isSignal": true; }; "zDownload": { "alias": "zDownload"; "required": false; "isSignal": true; }; }, { "zLoaded": "zLoaded"; "zError": "zError"; "zPlay": "zPlay"; }, never, never, true, never>;
44
+ }
45
+
46
+ export { ZAudioPlayerComponent };
@@ -4,8 +4,9 @@ import { ZIcon } from '@shival99/z-ui/components/z-icon';
4
4
  import { ClassValue } from 'clsx';
5
5
  import { LayoutConfig, ThemeConfig, ControlVisibilityConfig, GroupVisibilityConfig, AutoActionConfig, ViewerConfig, PdfJsViewerComponent } from 'ng2-pdfjs-viewer';
6
6
  import * as _shival99_z_ui_components_z_gallery from '@shival99/z-ui/components/z-gallery';
7
- import { SafeHtml } from '@angular/platform-browser';
8
- import { ZOverlayRef } from '@shival99/z-ui/components/z-overlay';
7
+ import { BundledLanguage } from 'shiki';
8
+ import { ZDynamicRef } from '@shival99/z-ui/services';
9
+ export { ZGalleryOfficeRenderResult } from '@shival99/z-ui/services';
9
10
  import * as class_variance_authority_types from 'class-variance-authority/types';
10
11
  import { VariantProps } from 'class-variance-authority';
11
12
 
@@ -17,6 +18,7 @@ type ZGalleryPdfViewerCursor = 'select' | 'hand' | 'zoom';
17
18
  type ZGalleryPdfViewerScroll = 'vertical' | 'horizontal' | 'wrapped' | 'page';
18
19
  type ZGalleryPdfViewerSpread = 'none' | 'odd' | 'even';
19
20
  type ZGalleryPdfViewerPageMode = 'none' | 'thumbs' | 'bookmarks' | 'attachments';
21
+ type ZGalleryDocumentPreviewKind = 'word' | 'excel' | 'powerpoint';
20
22
  interface ZGalleryPdfViewerConfig {
21
23
  viewerFolder?: string;
22
24
  locale?: string;
@@ -92,7 +94,6 @@ interface ZFileCategoryStyle {
92
94
  label: string;
93
95
  icon: string;
94
96
  }
95
- declare const FILE_CATEGORY_STYLES: Record<ZFileCategory, ZFileCategoryStyle>;
96
97
  interface ZGalleryControl {
97
98
  setMode: (mode: ZGalleryMode) => void;
98
99
  getMode: () => ZGalleryMode;
@@ -187,7 +188,7 @@ declare class ZGalleryComponent implements AfterViewInit {
187
188
  protected readonly headerControlHeight: _angular_core.Signal<"1.75rem" | "2rem" | "2.5rem" | "2.25rem">;
188
189
  protected readonly skeletonMediaHeight: _angular_core.Signal<"9rem" | "14rem" | "11rem">;
189
190
  protected readonly toggleIconSize: _angular_core.Signal<"14" | "16" | "20" | "18">;
190
- protected readonly searchInputSize: _angular_core.Signal<"default" | "sm" | "lg">;
191
+ protected readonly searchInputSize: _angular_core.Signal<"sm" | "default" | "lg">;
191
192
  protected readonly filteredFiles: _angular_core.Signal<ZGalleryFile[]>;
192
193
  protected readonly selectedIds: _angular_core.Signal<Set<string>>;
193
194
  protected readonly isAllSelected: _angular_core.Signal<boolean>;
@@ -212,6 +213,22 @@ declare class ZGalleryComponent implements AfterViewInit {
212
213
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZGalleryComponent, "z-gallery", ["zGallery"], { "zFiles": { "alias": "zFiles"; "required": false; "isSignal": true; }; "zMode": { "alias": "zMode"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zColumns": { "alias": "zColumns"; "required": false; "isSignal": true; }; "zItemWidth": { "alias": "zItemWidth"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zSkeletonRows": { "alias": "zSkeletonRows"; "required": false; "isSignal": true; }; "zSkeletonItems": { "alias": "zSkeletonItems"; "required": false; "isSignal": true; }; "zShowDownload": { "alias": "zShowDownload"; "required": false; "isSignal": true; }; "zShowPreview": { "alias": "zShowPreview"; "required": false; "isSignal": true; }; "zShowRemove": { "alias": "zShowRemove"; "required": false; "isSignal": true; }; "zPdfViewerConfig": { "alias": "zPdfViewerConfig"; "required": false; "isSignal": true; }; "zTrustedResourceOrigins": { "alias": "zTrustedResourceOrigins"; "required": false; "isSignal": true; }; "zShowModeToggle": { "alias": "zShowModeToggle"; "required": false; "isSignal": true; }; "zShowSearch": { "alias": "zShowSearch"; "required": false; "isSignal": true; }; "zServerSearch": { "alias": "zServerSearch"; "required": false; "isSignal": true; }; "zSearchDebounce": { "alias": "zSearchDebounce"; "required": false; "isSignal": true; }; "zSearchPlaceholder": { "alias": "zSearchPlaceholder"; "required": false; "isSignal": true; }; "zToggleSize": { "alias": "zToggleSize"; "required": false; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": false; "isSignal": true; }; "zEmptyText": { "alias": "zEmptyText"; "required": false; "isSignal": true; }; "zEmptyIcon": { "alias": "zEmptyIcon"; "required": false; "isSignal": true; }; "zClass": { "alias": "zClass"; "required": false; "isSignal": true; }; "zSelectable": { "alias": "zSelectable"; "required": false; "isSignal": true; }; "zSelectedFiles": { "alias": "zSelectedFiles"; "required": false; "isSignal": true; }; }, { "zMode": "zModeChange"; "zSelectedFiles": "zSelectedFilesChange"; "zOnDownload": "zOnDownload"; "zOnPreview": "zOnPreview"; "zOnRemove": "zOnRemove"; "zSearchChange": "zSearchChange"; "zControl": "zControl"; "zSelectionChange": "zSelectionChange"; "zOnAction": "zOnAction"; }, never, never, true, never>;
213
214
  }
214
215
 
216
+ declare class ZGalleryFileIconComponent {
217
+ readonly file: _angular_core.InputSignal<ZGalleryFile>;
218
+ readonly zSize: _angular_core.InputSignal<ZGallerySize>;
219
+ readonly zMode: _angular_core.InputSignal<ZGalleryMode>;
220
+ protected readonly imageError: _angular_core.WritableSignal<boolean>;
221
+ protected readonly isLoading: _angular_core.WritableSignal<boolean>;
222
+ protected readonly category: _angular_core.Signal<ZFileCategory>;
223
+ protected readonly style: _angular_core.Signal<_shival99_z_ui_components_z_gallery.ZFileCategoryStyle>;
224
+ protected readonly showThumbnail: _angular_core.Signal<boolean | "" | undefined>;
225
+ protected readonly containerClasses: _angular_core.Signal<string>;
226
+ protected onImageLoad(): void;
227
+ protected onImageError(event: Event): void;
228
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZGalleryFileIconComponent, never>;
229
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZGalleryFileIconComponent, "z-gallery-file-icon", never, { "file": { "alias": "file"; "required": true; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zMode": { "alias": "zMode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
230
+ }
231
+
215
232
  declare class ZGalleryItemComponent {
216
233
  readonly file: _angular_core.InputSignal<ZGalleryFile>;
217
234
  readonly zMode: _angular_core.InputSignal<ZGalleryMode>;
@@ -251,22 +268,6 @@ declare class ZGalleryItemComponent {
251
268
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZGalleryItemComponent, "z-gallery-item", never, { "file": { "alias": "file"; "required": true; "isSignal": true; }; "zMode": { "alias": "zMode"; "required": false; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zShowDownload": { "alias": "zShowDownload"; "required": false; "isSignal": true; }; "zShowPreview": { "alias": "zShowPreview"; "required": false; "isSignal": true; }; "zShowRemove": { "alias": "zShowRemove"; "required": false; "isSignal": true; }; "zSelectable": { "alias": "zSelectable"; "required": false; "isSignal": true; }; "zSelected": { "alias": "zSelected"; "required": false; "isSignal": true; }; }, { "zOnDownload": "zOnDownload"; "zOnPreview": "zOnPreview"; "zOnRemove": "zOnRemove"; "zOnSelect": "zOnSelect"; }, never, never, true, never>;
252
269
  }
253
270
 
254
- declare class ZGalleryFileIconComponent {
255
- readonly file: _angular_core.InputSignal<ZGalleryFile>;
256
- readonly zSize: _angular_core.InputSignal<ZGallerySize>;
257
- readonly zMode: _angular_core.InputSignal<ZGalleryMode>;
258
- protected readonly imageError: _angular_core.WritableSignal<boolean>;
259
- protected readonly isLoading: _angular_core.WritableSignal<boolean>;
260
- protected readonly category: _angular_core.Signal<ZFileCategory>;
261
- protected readonly style: _angular_core.Signal<_shival99_z_ui_components_z_gallery.ZFileCategoryStyle>;
262
- protected readonly showThumbnail: _angular_core.Signal<boolean | "" | undefined>;
263
- protected readonly containerClasses: _angular_core.Signal<string>;
264
- protected onImageLoad(): void;
265
- protected onImageError(event: Event): void;
266
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZGalleryFileIconComponent, never>;
267
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZGalleryFileIconComponent, "z-gallery-file-icon", never, { "file": { "alias": "file"; "required": true; "isSignal": true; }; "zSize": { "alias": "zSize"; "required": false; "isSignal": true; }; "zMode": { "alias": "zMode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
268
- }
269
-
270
271
  declare class ZGalleryPreviewItemDirective {
271
272
  readonly zGalleryPreviewItem: _angular_core.InputSignal<ZGalleryFile>;
272
273
  readonly zGalleryPreviewFiles: _angular_core.InputSignal<ZGalleryFile[] | null>;
@@ -286,7 +287,6 @@ declare class ZGalleryPreviewItemDirective {
286
287
 
287
288
  declare class ZGalleryPreviewComponent {
288
289
  private readonly _document;
289
- private readonly _sanitizer;
290
290
  readonly file: _angular_core.InputSignal<ZGalleryFile>;
291
291
  readonly files: _angular_core.InputSignal<ZGalleryFile[]>;
292
292
  readonly zShowRemove: _angular_core.InputSignal<boolean>;
@@ -302,7 +302,7 @@ declare class ZGalleryPreviewComponent {
302
302
  protected readonly isConverting: _angular_core.WritableSignal<boolean>;
303
303
  protected readonly conversionError: _angular_core.WritableSignal<string | null>;
304
304
  protected readonly previewError: _angular_core.WritableSignal<boolean>;
305
- protected readonly docHtmlContent: _angular_core.WritableSignal<SafeHtml | null>;
305
+ protected readonly officeSource: _angular_core.WritableSignal<Blob | null>;
306
306
  protected readonly textContent: _angular_core.WritableSignal<string>;
307
307
  protected readonly pdfViewer: _angular_core.Signal<PdfJsViewerComponent | undefined>;
308
308
  private readonly _mediaLoaded;
@@ -310,8 +310,6 @@ declare class ZGalleryPreviewComponent {
310
310
  private readonly _minLoadingTime;
311
311
  constructor();
312
312
  private _loadFileContent;
313
- private _loadDocx;
314
- private _loadExcel;
315
313
  private _loadText;
316
314
  private _assertSuccessfulResponse;
317
315
  private _completeLoading;
@@ -325,9 +323,16 @@ declare class ZGalleryPreviewComponent {
325
323
  protected readonly pdfViewerConfig: _angular_core.Signal<ZGalleryPdfViewerConfig>;
326
324
  private _mergePdfViewerCss;
327
325
  protected readonly isVideo: _angular_core.Signal<boolean>;
326
+ protected readonly isAudio: _angular_core.Signal<boolean>;
328
327
  protected readonly isWordFile: _angular_core.Signal<boolean>;
329
328
  protected readonly isExcelFile: _angular_core.Signal<boolean>;
329
+ protected readonly isPowerpointFile: _angular_core.Signal<boolean>;
330
+ protected readonly documentPreviewKind: _angular_core.Signal<ZGalleryDocumentPreviewKind>;
331
+ protected readonly mediaUrl: _angular_core.Signal<string | null>;
330
332
  protected readonly isTextFile: _angular_core.Signal<boolean>;
333
+ protected readonly isCodeFile: _angular_core.Signal<boolean>;
334
+ protected readonly fileExtension: _angular_core.Signal<string>;
335
+ protected readonly codeLanguage: _angular_core.Signal<BundledLanguage>;
331
336
  protected readonly canPreview: _angular_core.Signal<boolean>;
332
337
  protected readonly formattedSize: _angular_core.Signal<string>;
333
338
  protected readonly imageTransform: _angular_core.Signal<string>;
@@ -343,6 +348,8 @@ declare class ZGalleryPreviewComponent {
343
348
  protected rotateRight(): void;
344
349
  protected onImageLoad(): void;
345
350
  protected onVideoLoad(): void;
351
+ protected onOfficeLoad(): void;
352
+ protected onOfficeError(message: string): void;
346
353
  protected onPdfLoad(): void;
347
354
  protected onMediaError(): void;
348
355
  protected download(): void;
@@ -354,48 +361,72 @@ declare class ZGalleryPreviewComponent {
354
361
  }
355
362
 
356
363
  declare class ZGalleryPreviewRef {
357
- private readonly _overlayRef;
364
+ private readonly _dynamicRef;
358
365
  private _closed;
359
366
  componentInstance: ZGalleryPreviewComponent | null;
360
367
  readonly zAfterClose: EventEmitter<void>;
361
- constructor(_overlayRef: ZOverlayRef | null);
368
+ constructor(_dynamicRef: ZDynamicRef<ZGalleryPreviewComponent> | null);
362
369
  close(): void;
370
+ markClosed(): void;
363
371
  }
364
372
 
365
373
  declare class ZGalleryPreviewService {
366
374
  private readonly _document;
367
- private readonly _injector;
368
- private readonly _overlayService;
369
- private readonly _platformId;
370
- private readonly _zIndexService;
375
+ private readonly _dynamicService;
371
376
  open(file: ZGalleryFile, options?: Omit<ZGalleryPreviewOptions, 'file'>): ZGalleryPreviewRef;
372
377
  open(options: ZGalleryPreviewOptions): ZGalleryPreviewRef;
373
- private _createOverlay;
374
378
  private _normalizeOptions;
375
379
  private _handleDownload;
376
380
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZGalleryPreviewService, never>;
377
381
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ZGalleryPreviewService>;
378
382
  }
379
383
 
384
+ declare class ZGalleryOfficePreviewComponent {
385
+ private readonly _destroyRef;
386
+ private readonly _renderService;
387
+ readonly zSource: _angular_core.InputSignal<Blob>;
388
+ readonly zKind: _angular_core.InputSignal<ZGalleryDocumentPreviewKind>;
389
+ readonly zLoaded: _angular_core.OutputEmitterRef<void>;
390
+ readonly zError: _angular_core.OutputEmitterRef<string>;
391
+ private readonly _host;
392
+ private _render;
393
+ private _renderedSource;
394
+ constructor();
395
+ private _render$;
396
+ private _dispose;
397
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZGalleryOfficePreviewComponent, never>;
398
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZGalleryOfficePreviewComponent, "z-gallery-office-preview", never, { "zSource": { "alias": "zSource"; "required": true; "isSignal": true; }; "zKind": { "alias": "zKind"; "required": true; "isSignal": true; }; }, { "zLoaded": "zLoaded"; "zError": "zError"; }, never, never, true, never>;
399
+ }
400
+
401
+ declare class ZGalleryTextPreviewComponent {
402
+ readonly zContent: _angular_core.InputSignal<string>;
403
+ readonly zLanguage: _angular_core.InputSignal<string>;
404
+ protected readonly lines: _angular_core.Signal<string[]>;
405
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZGalleryTextPreviewComponent, never>;
406
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZGalleryTextPreviewComponent, "z-gallery-text-preview", never, { "zContent": { "alias": "zContent"; "required": true; "isSignal": true; }; "zLanguage": { "alias": "zLanguage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
407
+ }
408
+
380
409
  declare const getFileCategory: (file: ZGalleryFile) => ZFileCategory;
381
410
  declare const formatFileSize: (bytes: number) => string;
382
411
  declare const isPreviewable: (file: ZGalleryFile) => boolean;
383
412
  declare const isImage: (file: ZGalleryFile) => boolean;
384
413
 
385
414
  declare const zGalleryVariants: (props?: ({
386
- zSize?: "default" | "sm" | "lg" | null | undefined;
415
+ zSize?: "sm" | "default" | "lg" | null | undefined;
387
416
  } & class_variance_authority_types.ClassProp) | undefined) => string;
388
417
  type ZGalleryVariants = VariantProps<typeof zGalleryVariants>;
389
418
  declare const zGalleryItemVariants: (props?: ({
390
419
  zMode?: "grid" | "list" | null | undefined;
391
- zSize?: "default" | "sm" | "lg" | null | undefined;
420
+ zSize?: "sm" | "default" | "lg" | null | undefined;
392
421
  } & class_variance_authority_types.ClassProp) | undefined) => string;
393
422
  type ZGalleryItemVariants = VariantProps<typeof zGalleryItemVariants>;
394
423
  declare const zGalleryFileIconVariants: (props?: ({
395
- zSize?: "default" | "sm" | "lg" | null | undefined;
424
+ zSize?: "sm" | "default" | "lg" | null | undefined;
396
425
  zMode?: "grid" | "list" | null | undefined;
397
426
  } & class_variance_authority_types.ClassProp) | undefined) => string;
398
427
  type ZGalleryFileIconVariants = VariantProps<typeof zGalleryFileIconVariants>;
399
428
 
400
- export { FILE_CATEGORY_STYLES, ZGalleryComponent, ZGalleryFileIconComponent, ZGalleryItemComponent, ZGalleryPreviewComponent, ZGalleryPreviewItemDirective, ZGalleryPreviewRef, ZGalleryPreviewService, formatFileSize, getFileCategory, isImage, isPreviewable, zGalleryFileIconVariants, zGalleryItemVariants, zGalleryVariants };
401
- export type { ZFileCategory, ZFileCategoryStyle, ZGalleryActionEvent, ZGalleryActionType, ZGalleryControl, ZGalleryFile, ZGalleryFileIconVariants, ZGalleryItemVariants, ZGalleryMode, ZGalleryPdfViewerConfig, ZGalleryPdfViewerCursor, ZGalleryPdfViewerPageMode, ZGalleryPdfViewerScroll, ZGalleryPdfViewerSpread, ZGalleryPdfViewerZoom, ZGalleryPreviewItemOptions, ZGalleryPreviewOptions, ZGallerySelectionChange, ZGallerySize, ZGalleryToggleSize, ZGalleryVariants };
429
+ declare const FILE_CATEGORY_STYLES: Record<ZFileCategory, ZFileCategoryStyle>;
430
+
431
+ export { FILE_CATEGORY_STYLES, ZGalleryComponent, ZGalleryFileIconComponent, ZGalleryItemComponent, ZGalleryOfficePreviewComponent, ZGalleryPreviewComponent, ZGalleryPreviewItemDirective, ZGalleryPreviewRef, ZGalleryPreviewService, ZGalleryTextPreviewComponent, formatFileSize, getFileCategory, isImage, isPreviewable, zGalleryFileIconVariants, zGalleryItemVariants, zGalleryVariants };
432
+ export type { ZFileCategory, ZFileCategoryStyle, ZGalleryActionEvent, ZGalleryActionType, ZGalleryControl, ZGalleryDocumentPreviewKind, ZGalleryFile, ZGalleryFileIconVariants, ZGalleryItemVariants, ZGalleryMode, ZGalleryPdfViewerConfig, ZGalleryPdfViewerCursor, ZGalleryPdfViewerPageMode, ZGalleryPdfViewerScroll, ZGalleryPdfViewerSpread, ZGalleryPdfViewerZoom, ZGalleryPreviewItemOptions, ZGalleryPreviewOptions, ZGallerySelectionChange, ZGallerySize, ZGalleryToggleSize, ZGalleryVariants };
@@ -63,7 +63,7 @@ type ZIcon = ZLucideIcon | ZSaxIcon | ZPhosphorIcon | ZTablerIcon | ZHeroIcon |
63
63
  declare class ZIconComponent implements OnDestroy {
64
64
  readonly class: _angular_core.InputSignal<ClassValue>;
65
65
  readonly zType: _angular_core.InputSignal<ZIcon | undefined>;
66
- readonly zAnimatedType: _angular_core.InputSignal<("accessibility" | "activity" | "play" | "airplay" | "check" | "alarm-clock-check" | "clock" | "alarm-clock" | "alarm-clock-off" | "align-horizontal-space-around" | "align-vertical-space-around" | "anvil" | "archive" | "arrow-big-down-dash" | "arrow-big-down" | "arrow-big-left-dash" | "arrow-big-left" | "arrow-big-right-dash" | "arrow-big-right" | "arrow-big-up-dash" | "arrow-big-up" | "arrow-down-01" | "arrow-down-10" | "arrow-down-a-z" | "arrow-down" | "arrow-down-left" | "arrow-down-right" | "arrow-down-z-a" | "arrow-left" | "arrow-left-right" | "arrow-right" | "arrow-right-left" | "arrow-up-01" | "arrow-up-10" | "arrow-up-a-z" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "arrow-up-z-a" | "award" | "x" | "axe" | "axis-3d" | "badge-alert" | "badge-check" | "badge-question-mark" | "battery-charging" | "battery-full" | "battery" | "battery-low" | "battery-medium" | "battery-warning" | "bean-off" | "beer-off" | "bell" | "bell-off" | "bell-ring" | "between-horizontal-end" | "between-horizontal-start" | "between-vertical-end" | "between-vertical-start" | "binary" | "blend" | "blocks" | "bluetooth-off" | "bold" | "bolt" | "bone" | "book-a" | "book-audio" | "book-check" | "book-dashed" | "book-down" | "book-headphones" | "heart" | "book-heart" | "book" | "book-image" | "key" | "book-key" | "book-lock" | "book-marked" | "minus" | "book-minus" | "book-open-check" | "book-open-text" | "plus" | "book-plus" | "book-text" | "book-type" | "book-up-2" | "book-up" | "user" | "book-user" | "book-x" | "bookmark-check" | "bookmark" | "bookmark-minus" | "bookmark-plus" | "bookmark-x" | "bot" | "bot-off" | "boxes" | "cog" | "brain-cog" | "briefcase-business" | "briefcase-conveyor-belt" | "briefcase" | "briefcase-medical" | "brush-cleaning" | "brush" | "bug-off" | "calendar-check-2" | "calendar-check" | "calendar-cog" | "calendar-days" | "calendar-off" | "calendar-sync" | "camera-off" | "candy-off" | "captions-off" | "cast" | "cctv" | "chart-bar-decreasing" | "chart-bar" | "chart-bar-increasing" | "chart-column-decreasing" | "chart-column" | "chart-column-increasing" | "chart-gantt" | "chart-line" | "chart-no-axes-column-decreasing" | "chart-no-axes-column" | "chart-no-axes-column-increasing" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie" | "chart-scatter" | "chart-spline" | "check-check" | "cherry" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chevrons-down" | "chevrons-down-up" | "chevrons-left" | "chevrons-left-right" | "chevrons-right" | "chevrons-right-left" | "chevrons-up-down" | "chevrons-up" | "cigarette-off" | "circle-alert" | "circle-arrow-down" | "circle-arrow-left" | "circle-arrow-out-down-left" | "circle-arrow-out-down-right" | "circle-arrow-out-up-left" | "circle-arrow-out-up-right" | "circle-arrow-right" | "circle-arrow-up" | "circle-check-big" | "circle-check" | "circle-chevron-down" | "circle-chevron-left" | "circle-chevron-right" | "circle-chevron-up" | "circle-off" | "circle-parking-off" | "circle-plus" | "circle-question-mark" | "clapperboard" | "clipboard-check" | "clipboard" | "clipboard-list" | "pen" | "clipboard-pen" | "pen-line" | "clipboard-pen-line" | "clipboard-x" | "clock-10" | "clock-11" | "clock-12" | "clock-1" | "clock-2" | "clock-3" | "clock-4" | "clock-5" | "clock-6" | "clock-7" | "clock-8" | "clock-9" | "cloud-cog" | "download" | "cloud-download" | "cloud-moon" | "cloud-off" | "upload" | "cloud-upload" | "compass" | "contrast" | "copy-check" | "copy" | "cpu" | "crop" | "diamond-plus" | "dice-1" | "dice-2" | "dice-3" | "dice-4" | "dice-5" | "dice-6" | "diff" | "dna-off" | "droplet-off" | "drum" | "ear-off" | "eclipse" | "egg-off" | "expand" | "eye-off" | "file-chart-column" | "file-chart-column-increasing" | "file-chart-line" | "file-check-corner" | "file-check" | "file-cog" | "file-down" | "file-exclamation-point" | "file-minus" | "file-pen" | "file-pen-line" | "file-plus" | "file-question-mark" | "file-sliders" | "file-stack" | "terminal" | "file-terminal" | "file-up" | "fish-off" | "flag-off" | "flashlight-off" | "flask-conical-off" | "folder-check" | "folder-cog" | "folder-down" | "kanban" | "folder-kanban" | "folder-pen" | "folder-plus" | "folder-sync" | "folder-up" | "folder-x" | "frame" | "funnel-x" | "gallery-horizontal-end" | "gallery-horizontal" | "gallery-thumbnails" | "gallery-vertical-end" | "gallery-vertical" | "gauge" | "gavel" | "grid-2x2-check" | "grip-horizontal" | "grip" | "grip-vertical" | "hammer" | "hand-coins" | "hand-heart" | "hard-drive-download" | "hard-drive-upload" | "phone-off" | "headphone-off" | "heart-off" | "history" | "hop-off" | "house" | "wifi" | "house-wifi" | "image-down" | "image-off" | "image-up" | "images" | "infinity" | "key-round" | "key-square" | "keyboard" | "keyboard-off" | "landmark" | "layers" | "layout-dashboard" | "layout-grid" | "layout-panel-left" | "layout-panel-top" | "layout-template" | "lightbulb" | "lightbulb-off" | "link2-off" | "list-check" | "list-checks" | "list-restart" | "list-todo" | "loader-pinwheel" | "locate-off" | "log-out" | "mail-check" | "map-pin-check" | "map-pin-check-inside" | "pin-off" | "map-pin-off" | "maximize-2" | "maximize" | "megaphone-off" | "message-circle" | "message-circle-more" | "message-circle-off" | "message-circle-question-mark" | "message-circle-warning" | "message-square" | "message-square-more" | "message-square-off" | "mic-off" | "milk-off" | "minimize-2" | "minimize" | "monitor-check" | "monitor-cog" | "monitor-down" | "monitor-off" | "monitor-up" | "mouse-off" | "mouse-pointer-2" | "mouse-pointer" | "move-diagonal-2" | "move-diagonal" | "move-down" | "move-down-left" | "move-down-right" | "move-horizontal" | "move-left" | "move-right" | "move-up" | "move-up-left" | "move-up-right" | "move-vertical" | "navigation2-off" | "navigation-off" | "nfc" | "notebook-pen" | "nut-off" | "octagon-alert" | "orbit" | "package-check" | "paintbrush" | "panel-bottom-close" | "panel-bottom-open" | "panel-left-close" | "panel-left-open" | "panel-right-close" | "panel-right-open" | "panel-top-close" | "panel-top-open" | "paperclip" | "pen-off" | "pencil" | "pencil-line" | "pencil-off" | "pickaxe" | "plane" | "pointer-off" | "power-off" | "printer-check" | "rabbit" | "radar" | "radio" | "radio-tower" | "rainbow" | "redo-dot" | "redo" | "refresh-ccw-dot" | "refresh-ccw" | "refresh-cw" | "refresh-cw-off" | "rocket" | "rocking-chair" | "rotate-ccw" | "rotate-ccw-key" | "rotate-cw" | "route" | "route-off" | "rss" | "save-off" | "scan-text" | "scissors" | "search-check" | "search" | "send-horizontal" | "send" | "server-cog" | "server-off" | "settings" | "shield-alert" | "shield-check" | "shield-off" | "shield-plus" | "shield-question-mark" | "ship" | "ship-wheel" | "shopping-cart" | "shovel" | "shower-head" | "shrink" | "signal-high" | "signal" | "signal-low" | "signal-medium" | "signal-zero" | "signature" | "sliders-horizontal" | "sliders-vertical" | "smartphone-nfc" | "snowflake" | "sparkle" | "sparkles" | "speech" | "spell-check" | "square-arrow-down" | "square-arrow-down-left" | "square-arrow-down-right" | "square-arrow-left" | "square-arrow-out-down-left" | "square-arrow-out-down-right" | "square-arrow-out-up-left" | "square-arrow-out-up-right" | "square-arrow-right" | "square-arrow-up" | "square-arrow-up-left" | "square-arrow-up-right" | "square-chart-gantt" | "square-check-big" | "square-check" | "square-chevron-down" | "square-chevron-left" | "square-chevron-right" | "square-chevron-up" | "square-dashed-kanban" | "square-kanban" | "square-parking-off" | "square-pen" | "square-plus" | "square-scissors" | "square-stack" | "square-terminal" | "star" | "star-off" | "sun" | "sword" | "tag" | "telescope" | "text-align-center" | "text-cursor" | "text-cursor-input" | "text-search" | "thermometer" | "thumbs-down" | "thumbs-up" | "ticket-check" | "timer" | "timer-off" | "toggle-left" | "toggle-right" | "tornado" | "touchpad-off" | "trash-2" | "trash" | "triangle-alert" | "umbrella-off" | "undo-dot" | "undo" | "unfold-horizontal" | "unfold-vertical" | "unplug" | "user-check" | "user-cog" | "user-pen" | "user-round-check" | "user-round-cog" | "user-round" | "user-round-pen" | "vibrate" | "vibrate-off" | "video-off" | "volume-off" | "vote" | "waves" | "webhook-off" | "wheat-off" | "wifi-high" | "wifi-low" | "wifi-off" | "wifi-pen" | "wifi-zero" | "wine-off" | "zap-off") | undefined>;
66
+ readonly zAnimatedType: _angular_core.InputSignal<("key" | "bold" | "accessibility" | "activity" | "play" | "airplay" | "check" | "alarm-clock-check" | "clock" | "alarm-clock" | "alarm-clock-off" | "align-horizontal-space-around" | "align-vertical-space-around" | "anvil" | "archive" | "arrow-big-down-dash" | "arrow-big-down" | "arrow-big-left-dash" | "arrow-big-left" | "arrow-big-right-dash" | "arrow-big-right" | "arrow-big-up-dash" | "arrow-big-up" | "arrow-down-01" | "arrow-down-10" | "arrow-down-a-z" | "arrow-down" | "arrow-down-left" | "arrow-down-right" | "arrow-down-z-a" | "arrow-left" | "arrow-left-right" | "arrow-right" | "arrow-right-left" | "arrow-up-01" | "arrow-up-10" | "arrow-up-a-z" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "arrow-up-z-a" | "award" | "x" | "axe" | "axis-3d" | "badge-alert" | "badge-check" | "badge-question-mark" | "battery-charging" | "battery-full" | "battery" | "battery-low" | "battery-medium" | "battery-warning" | "bean-off" | "beer-off" | "bell" | "bell-off" | "bell-ring" | "between-horizontal-end" | "between-horizontal-start" | "between-vertical-end" | "between-vertical-start" | "binary" | "blend" | "blocks" | "bluetooth-off" | "bolt" | "bone" | "book-a" | "book-audio" | "book-check" | "book-dashed" | "book-down" | "book-headphones" | "heart" | "book-heart" | "book" | "book-image" | "book-key" | "book-lock" | "book-marked" | "minus" | "book-minus" | "book-open-check" | "book-open-text" | "plus" | "book-plus" | "book-text" | "book-type" | "book-up-2" | "book-up" | "user" | "book-user" | "book-x" | "bookmark-check" | "bookmark" | "bookmark-minus" | "bookmark-plus" | "bookmark-x" | "bot" | "bot-off" | "boxes" | "cog" | "brain-cog" | "briefcase-business" | "briefcase-conveyor-belt" | "briefcase" | "briefcase-medical" | "brush-cleaning" | "brush" | "bug-off" | "calendar-check-2" | "calendar-check" | "calendar-cog" | "calendar-days" | "calendar-off" | "calendar-sync" | "camera-off" | "candy-off" | "captions-off" | "cast" | "cctv" | "chart-bar-decreasing" | "chart-bar" | "chart-bar-increasing" | "chart-column-decreasing" | "chart-column" | "chart-column-increasing" | "chart-gantt" | "chart-line" | "chart-no-axes-column-decreasing" | "chart-no-axes-column" | "chart-no-axes-column-increasing" | "chart-no-axes-combined" | "chart-no-axes-gantt" | "chart-pie" | "chart-scatter" | "chart-spline" | "check-check" | "cherry" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chevrons-down" | "chevrons-down-up" | "chevrons-left" | "chevrons-left-right" | "chevrons-right" | "chevrons-right-left" | "chevrons-up-down" | "chevrons-up" | "cigarette-off" | "circle-alert" | "circle-arrow-down" | "circle-arrow-left" | "circle-arrow-out-down-left" | "circle-arrow-out-down-right" | "circle-arrow-out-up-left" | "circle-arrow-out-up-right" | "circle-arrow-right" | "circle-arrow-up" | "circle-check-big" | "circle-check" | "circle-chevron-down" | "circle-chevron-left" | "circle-chevron-right" | "circle-chevron-up" | "circle-off" | "circle-parking-off" | "circle-plus" | "circle-question-mark" | "clapperboard" | "clipboard-check" | "clipboard" | "clipboard-list" | "pen" | "clipboard-pen" | "pen-line" | "clipboard-pen-line" | "clipboard-x" | "clock-10" | "clock-11" | "clock-12" | "clock-1" | "clock-2" | "clock-3" | "clock-4" | "clock-5" | "clock-6" | "clock-7" | "clock-8" | "clock-9" | "cloud-cog" | "download" | "cloud-download" | "cloud-moon" | "cloud-off" | "upload" | "cloud-upload" | "compass" | "contrast" | "copy-check" | "copy" | "cpu" | "crop" | "diamond-plus" | "dice-1" | "dice-2" | "dice-3" | "dice-4" | "dice-5" | "dice-6" | "diff" | "dna-off" | "droplet-off" | "drum" | "ear-off" | "eclipse" | "egg-off" | "expand" | "eye-off" | "file-chart-column" | "file-chart-column-increasing" | "file-chart-line" | "file-check-corner" | "file-check" | "file-cog" | "file-down" | "file-exclamation-point" | "file-minus" | "file-pen" | "file-pen-line" | "file-plus" | "file-question-mark" | "file-sliders" | "file-stack" | "terminal" | "file-terminal" | "file-up" | "fish-off" | "flag-off" | "flashlight-off" | "flask-conical-off" | "folder-check" | "folder-cog" | "folder-down" | "kanban" | "folder-kanban" | "folder-pen" | "folder-plus" | "folder-sync" | "folder-up" | "folder-x" | "frame" | "funnel-x" | "gallery-horizontal-end" | "gallery-horizontal" | "gallery-thumbnails" | "gallery-vertical-end" | "gallery-vertical" | "gauge" | "gavel" | "grid-2x2-check" | "grip-horizontal" | "grip" | "grip-vertical" | "hammer" | "hand-coins" | "hand-heart" | "hard-drive-download" | "hard-drive-upload" | "phone-off" | "headphone-off" | "heart-off" | "history" | "hop-off" | "house" | "wifi" | "house-wifi" | "image-down" | "image-off" | "image-up" | "images" | "infinity" | "key-round" | "key-square" | "keyboard" | "keyboard-off" | "landmark" | "layers" | "layout-dashboard" | "layout-grid" | "layout-panel-left" | "layout-panel-top" | "layout-template" | "lightbulb" | "lightbulb-off" | "link2-off" | "list-check" | "list-checks" | "list-restart" | "list-todo" | "loader-pinwheel" | "locate-off" | "log-out" | "mail-check" | "map-pin-check" | "map-pin-check-inside" | "pin-off" | "map-pin-off" | "maximize-2" | "maximize" | "megaphone-off" | "message-circle" | "message-circle-more" | "message-circle-off" | "message-circle-question-mark" | "message-circle-warning" | "message-square" | "message-square-more" | "message-square-off" | "mic-off" | "milk-off" | "minimize-2" | "minimize" | "monitor-check" | "monitor-cog" | "monitor-down" | "monitor-off" | "monitor-up" | "mouse-off" | "mouse-pointer-2" | "mouse-pointer" | "move-diagonal-2" | "move-diagonal" | "move-down" | "move-down-left" | "move-down-right" | "move-horizontal" | "move-left" | "move-right" | "move-up" | "move-up-left" | "move-up-right" | "move-vertical" | "navigation2-off" | "navigation-off" | "nfc" | "notebook-pen" | "nut-off" | "octagon-alert" | "orbit" | "package-check" | "paintbrush" | "panel-bottom-close" | "panel-bottom-open" | "panel-left-close" | "panel-left-open" | "panel-right-close" | "panel-right-open" | "panel-top-close" | "panel-top-open" | "paperclip" | "pen-off" | "pencil" | "pencil-line" | "pencil-off" | "pickaxe" | "plane" | "pointer-off" | "power-off" | "printer-check" | "rabbit" | "radar" | "radio" | "radio-tower" | "rainbow" | "redo-dot" | "redo" | "refresh-ccw-dot" | "refresh-ccw" | "refresh-cw" | "refresh-cw-off" | "rocket" | "rocking-chair" | "rotate-ccw" | "rotate-ccw-key" | "rotate-cw" | "route" | "route-off" | "rss" | "save-off" | "scan-text" | "scissors" | "search-check" | "search" | "send-horizontal" | "send" | "server-cog" | "server-off" | "settings" | "shield-alert" | "shield-check" | "shield-off" | "shield-plus" | "shield-question-mark" | "ship" | "ship-wheel" | "shopping-cart" | "shovel" | "shower-head" | "shrink" | "signal-high" | "signal" | "signal-low" | "signal-medium" | "signal-zero" | "signature" | "sliders-horizontal" | "sliders-vertical" | "smartphone-nfc" | "snowflake" | "sparkle" | "sparkles" | "speech" | "spell-check" | "square-arrow-down" | "square-arrow-down-left" | "square-arrow-down-right" | "square-arrow-left" | "square-arrow-out-down-left" | "square-arrow-out-down-right" | "square-arrow-out-up-left" | "square-arrow-out-up-right" | "square-arrow-right" | "square-arrow-up" | "square-arrow-up-left" | "square-arrow-up-right" | "square-chart-gantt" | "square-check-big" | "square-check" | "square-chevron-down" | "square-chevron-left" | "square-chevron-right" | "square-chevron-up" | "square-dashed-kanban" | "square-kanban" | "square-parking-off" | "square-pen" | "square-plus" | "square-scissors" | "square-stack" | "square-terminal" | "star" | "star-off" | "sun" | "sword" | "tag" | "telescope" | "text-align-center" | "text-cursor" | "text-cursor-input" | "text-search" | "thermometer" | "thumbs-down" | "thumbs-up" | "ticket-check" | "timer" | "timer-off" | "toggle-left" | "toggle-right" | "tornado" | "touchpad-off" | "trash-2" | "trash" | "triangle-alert" | "umbrella-off" | "undo-dot" | "undo" | "unfold-horizontal" | "unfold-vertical" | "unplug" | "user-check" | "user-cog" | "user-pen" | "user-round-check" | "user-round-cog" | "user-round" | "user-round-pen" | "vibrate" | "vibrate-off" | "video-off" | "volume-off" | "vote" | "waves" | "webhook-off" | "wheat-off" | "wifi-high" | "wifi-low" | "wifi-off" | "wifi-pen" | "wifi-zero" | "wine-off" | "zap-off") | undefined>;
67
67
  readonly zAnimate: _angular_core.InputSignal<boolean>;
68
68
  readonly zAnimationTrigger: _angular_core.InputSignal<ZIconAnimationTrigger>;
69
69
  readonly zSize: _angular_core.InputSignal<string | number | null | undefined>;
@@ -1,7 +1,15 @@
1
+ import * as _angular_platform_browser from '@angular/platform-browser';
1
2
  import * as _angular_core from '@angular/core';
2
3
  import { OnDestroy, ElementRef } from '@angular/core';
3
4
  import { ClassValue } from 'clsx';
5
+ import { VariantProps } from 'class-variance-authority';
6
+ import * as class_variance_authority_types from 'class-variance-authority/types';
4
7
 
8
+ declare const zMediaPlayerVariants: (props?: ({
9
+ zLayout?: "theater" | "fullscreen" | "default" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+
12
+ type ZMediaPlayerVariants = VariantProps<typeof zMediaPlayerVariants>;
5
13
  interface ZMediaPlayerSubtitleTrack {
6
14
  label: string;
7
15
  src: string;
@@ -16,10 +24,45 @@ interface ZMediaPlayerPlaybackSpeed {
16
24
  label: string;
17
25
  value: number;
18
26
  }
19
-
27
+ interface ZWebkitHTMLVideoElement extends HTMLVideoElement {
28
+ webkitSupportsPresentationMode?(mode: 'inline' | 'picture-in-picture'): boolean;
29
+ webkitPresentationMode?: 'inline' | 'picture-in-picture';
30
+ webkitSetPresentationMode?(mode: 'inline' | 'picture-in-picture'): void;
31
+ }
32
+ interface ZDocumentWithPiP extends Document {
33
+ pictureInPictureEnabled: boolean;
34
+ pictureInPictureElement: Element | null;
35
+ exitPictureInPicture(): Promise<void>;
36
+ }
20
37
  type ZMediaPlayerSettingsPanel = 'main' | 'quality' | 'speed';
38
+ /** One cue parsed from a WebVTT storyboard file (`00:00:00.000 --> 00:00:02.000` + `sprite.jpg#xywh=x,y,w,h`). */
39
+ interface ZMediaPlayerThumbnailCue {
40
+ start: number;
41
+ end: number;
42
+ src: string;
43
+ x: number;
44
+ y: number;
45
+ w: number;
46
+ h: number;
47
+ }
48
+ /** Toggles which control bar groups are rendered. All default to `true`. */
49
+ interface ZMediaPlayerControls {
50
+ play: boolean;
51
+ volume: boolean;
52
+ skip: boolean;
53
+ time: boolean;
54
+ timeline: boolean;
55
+ subtitles: boolean;
56
+ settings: boolean;
57
+ pip: boolean;
58
+ theater: boolean;
59
+ fullscreen: boolean;
60
+ }
61
+
21
62
  declare class ZMediaPlayerComponent implements OnDestroy {
22
63
  private readonly _elementRef;
64
+ private readonly _ngZone;
65
+ private readonly _sanitizer;
23
66
  readonly class: _angular_core.InputSignal<ClassValue>;
24
67
  readonly zSrc: _angular_core.InputSignal<string>;
25
68
  readonly zSources: _angular_core.InputSignal<ZMediaPlayerSource[]>;
@@ -29,6 +72,12 @@ declare class ZMediaPlayerComponent implements OnDestroy {
29
72
  readonly zMuted: _angular_core.InputSignal<boolean>;
30
73
  readonly zVolume: _angular_core.InputSignal<number>;
31
74
  readonly zSubtitles: _angular_core.InputSignal<ZMediaPlayerSubtitleTrack[]>;
75
+ /** URL to a WebVTT storyboard file powering the YouTube-style timeline hover preview. */
76
+ readonly zThumbnailsVtt: _angular_core.InputSignal<string>;
77
+ /** Toggles which control bar groups render. Unset groups default to visible. */
78
+ readonly zControls: _angular_core.InputSignal<Partial<ZMediaPlayerControls>>;
79
+ readonly zLoaded: _angular_core.OutputEmitterRef<void>;
80
+ readonly zError: _angular_core.OutputEmitterRef<Error | null>;
32
81
  readonly zPlay: _angular_core.OutputEmitterRef<boolean>;
33
82
  readonly zTimeUpdate: _angular_core.OutputEmitterRef<number>;
34
83
  readonly zVolumeChange: _angular_core.OutputEmitterRef<number>;
@@ -38,6 +87,7 @@ declare class ZMediaPlayerComponent implements OnDestroy {
38
87
  readonly zQualityChange: _angular_core.OutputEmitterRef<ZMediaPlayerSource>;
39
88
  readonly videoElement: _angular_core.Signal<ElementRef<HTMLVideoElement> | undefined>;
40
89
  readonly timelineContainer: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
90
+ private readonly _settingsPopover;
41
91
  protected readonly isPlaying: _angular_core.WritableSignal<boolean>;
42
92
  protected readonly currentTime: _angular_core.WritableSignal<number>;
43
93
  protected readonly duration: _angular_core.WritableSignal<number>;
@@ -45,9 +95,13 @@ declare class ZMediaPlayerComponent implements OnDestroy {
45
95
  protected readonly isMuted: _angular_core.WritableSignal<boolean>;
46
96
  protected readonly playbackSpeed: _angular_core.WritableSignal<number>;
47
97
  protected readonly activeSourceSrc: _angular_core.WritableSignal<string | null>;
98
+ private readonly _activeQualitySourceLabel;
48
99
  protected readonly showControls: _angular_core.WritableSignal<boolean>;
100
+ protected readonly isPointerOver: _angular_core.WritableSignal<boolean>;
49
101
  protected readonly isBuffering: _angular_core.WritableSignal<boolean>;
50
102
  protected readonly captionsEnabled: _angular_core.WritableSignal<boolean>;
103
+ protected readonly subtitleText: _angular_core.WritableSignal<string>;
104
+ protected readonly hasSubtitles: _angular_core.Signal<boolean>;
51
105
  protected readonly isTheaterMode: _angular_core.WritableSignal<boolean>;
52
106
  protected readonly isFullscreen: _angular_core.WritableSignal<boolean>;
53
107
  protected readonly isMiniplayer: _angular_core.WritableSignal<boolean>;
@@ -55,10 +109,13 @@ declare class ZMediaPlayerComponent implements OnDestroy {
55
109
  protected readonly settingsPanel: _angular_core.WritableSignal<ZMediaPlayerSettingsPanel>;
56
110
  protected readonly isDragging: _angular_core.WritableSignal<boolean>;
57
111
  protected readonly bufferedProgress: _angular_core.WritableSignal<number>;
58
- protected readonly progress: _angular_core.Signal<number>;
112
+ protected readonly progress: _angular_core.WritableSignal<number>;
59
113
  protected readonly playPauseFlash: _angular_core.WritableSignal<"play" | "pause" | null>;
60
114
  protected readonly hoverTimeLabel: _angular_core.WritableSignal<string | null>;
115
+ protected readonly hoverTime: _angular_core.WritableSignal<number | null>;
61
116
  protected readonly hoverX: _angular_core.WritableSignal<number>;
117
+ private readonly _thumbnailCues;
118
+ private readonly _positionedSubtitleTracks;
62
119
  protected readonly skipOverlayDirection: _angular_core.WritableSignal<"left" | "right" | null>;
63
120
  protected readonly skipOverlayValue: _angular_core.WritableSignal<number>;
64
121
  protected readonly skipOverlayPulse: _angular_core.WritableSignal<number>;
@@ -67,14 +124,23 @@ declare class ZMediaPlayerComponent implements OnDestroy {
67
124
  private _controlsTimeout;
68
125
  private _flashTimeout;
69
126
  private _skipOverlayTimeout;
70
- private _clickTimeout;
127
+ private _bufferAnimationFrame;
128
+ private _playbackAnimationFrame;
129
+ private _mouseMoveCleanup;
130
+ private _lastMouseMoveAt;
131
+ private _bufferedTarget;
71
132
  private _accumulatedSkip;
72
133
  protected readonly zClasses: _angular_core.Signal<string>;
73
134
  protected readonly currentTimeLabel: _angular_core.Signal<string>;
74
135
  protected readonly durationLabel: _angular_core.Signal<string>;
136
+ protected readonly controls: _angular_core.Signal<ZMediaPlayerControls>;
75
137
  protected readonly effectiveSrc: _angular_core.Signal<string>;
76
138
  protected readonly qualitySources: _angular_core.Signal<ZMediaPlayerSource[]>;
77
139
  protected readonly activeQualityLabel: _angular_core.Signal<string>;
140
+ protected readonly youtubeVideoId: _angular_core.Signal<string | null>;
141
+ protected readonly isYouTube: _angular_core.Signal<boolean>;
142
+ protected readonly youtubeEmbedUrl: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl | null>;
143
+ protected readonly hoverThumbnailCue: _angular_core.Signal<ZMediaPlayerThumbnailCue | null>;
78
144
  constructor();
79
145
  ngOnDestroy(): void;
80
146
  private _initializeVideoState;
@@ -97,28 +163,38 @@ declare class ZMediaPlayerComponent implements OnDestroy {
97
163
  protected onLeavePiP(): void;
98
164
  protected onWebkitPresentationModeChanged(): void;
99
165
  protected toggleSubtitles(): void;
166
+ private _positionSubtitleCues;
167
+ private _updateSubtitleText;
100
168
  protected onPlayStateChange(playing: boolean): void;
101
169
  protected onTimeUpdate(): void;
102
170
  protected onDurationChange(): void;
171
+ protected onLoadedData(): void;
172
+ protected onVideoError(): void;
103
173
  protected onSeeking(seeking: boolean): void;
104
174
  protected updateBufferedProgress(): void;
175
+ private _setBufferedTarget;
176
+ private _startPlaybackProgressLoop;
177
+ private _stopPlaybackProgressLoop;
178
+ private _syncPlaybackProgress;
105
179
  protected onTimelineDragStart(event: MouseEvent): void;
106
180
  protected onTimelineHover(event: MouseEvent): void;
107
181
  protected onTimelineHoverEnd(): void;
182
+ private _loadThumbnailVtt;
183
+ private _parseThumbnailVtt;
184
+ private _parseVttTimestamp;
108
185
  private _updateTimeFromCoords;
109
186
  protected onMouseMove(): void;
110
187
  protected onMouseLeave(): void;
111
188
  private _resetControlsTimer;
112
- protected onVideoClick(event: MouseEvent): void;
113
- private _handleVideoDoubleClick;
189
+ protected onVideoClick(): void;
114
190
  protected triggerSkip(seconds: number, direction: 'left' | 'right'): void;
115
191
  private _triggerSkipOverlay;
116
192
  protected onKeyDown(event: KeyboardEvent): void;
117
193
  protected toggleSettings(): void;
118
194
  private _formatTime;
119
195
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZMediaPlayerComponent, never>;
120
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZMediaPlayerComponent, "z-media-player", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zSrc": { "alias": "zSrc"; "required": true; "isSignal": true; }; "zSources": { "alias": "zSources"; "required": false; "isSignal": true; }; "zPoster": { "alias": "zPoster"; "required": false; "isSignal": true; }; "zAutoplay": { "alias": "zAutoplay"; "required": false; "isSignal": true; }; "zLoop": { "alias": "zLoop"; "required": false; "isSignal": true; }; "zMuted": { "alias": "zMuted"; "required": false; "isSignal": true; }; "zVolume": { "alias": "zVolume"; "required": false; "isSignal": true; }; "zSubtitles": { "alias": "zSubtitles"; "required": false; "isSignal": true; }; }, { "zPlay": "zPlay"; "zTimeUpdate": "zTimeUpdate"; "zVolumeChange": "zVolumeChange"; "zFullscreenChange": "zFullscreenChange"; "zTheaterModeChange": "zTheaterModeChange"; "zMiniplayerChange": "zMiniplayerChange"; "zQualityChange": "zQualityChange"; }, never, never, true, never>;
196
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZMediaPlayerComponent, "z-media-player", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zSrc": { "alias": "zSrc"; "required": true; "isSignal": true; }; "zSources": { "alias": "zSources"; "required": false; "isSignal": true; }; "zPoster": { "alias": "zPoster"; "required": false; "isSignal": true; }; "zAutoplay": { "alias": "zAutoplay"; "required": false; "isSignal": true; }; "zLoop": { "alias": "zLoop"; "required": false; "isSignal": true; }; "zMuted": { "alias": "zMuted"; "required": false; "isSignal": true; }; "zVolume": { "alias": "zVolume"; "required": false; "isSignal": true; }; "zSubtitles": { "alias": "zSubtitles"; "required": false; "isSignal": true; }; "zThumbnailsVtt": { "alias": "zThumbnailsVtt"; "required": false; "isSignal": true; }; "zControls": { "alias": "zControls"; "required": false; "isSignal": true; }; }, { "zLoaded": "zLoaded"; "zError": "zError"; "zPlay": "zPlay"; "zTimeUpdate": "zTimeUpdate"; "zVolumeChange": "zVolumeChange"; "zFullscreenChange": "zFullscreenChange"; "zTheaterModeChange": "zTheaterModeChange"; "zMiniplayerChange": "zMiniplayerChange"; "zQualityChange": "zQualityChange"; }, never, never, true, never>;
121
197
  }
122
198
 
123
199
  export { ZMediaPlayerComponent };
124
- export type { ZMediaPlayerPlaybackSpeed, ZMediaPlayerSource, ZMediaPlayerSubtitleTrack };
200
+ export type { ZDocumentWithPiP, ZMediaPlayerControls, ZMediaPlayerPlaybackSpeed, ZMediaPlayerSettingsPanel, ZMediaPlayerSource, ZMediaPlayerSubtitleTrack, ZMediaPlayerThumbnailCue, ZMediaPlayerVariants, ZWebkitHTMLVideoElement };
@@ -30,6 +30,7 @@ declare class ZPopoverComponent implements OnInit, OnDestroy {
30
30
  private readonly _document;
31
31
  private readonly _overlayContainerService;
32
32
  private readonly _zIndexService;
33
+ private readonly _zone;
33
34
  private readonly _trigger;
34
35
  readonly zShow: _angular_core.OutputEmitterRef<void>;
35
36
  readonly zHide: _angular_core.OutputEmitterRef<void>;
@@ -87,9 +87,13 @@ declare class ZTabsComponent implements OnInit, AfterViewInit, OnDestroy {
87
87
  protected readonly tabsListHasBottomPadding: _angular_core.Signal<boolean>;
88
88
  protected readonly verticalTabsScrollable: _angular_core.Signal<boolean>;
89
89
  protected readonly navClasses: _angular_core.Signal<string>;
90
- protected getTabItemClasses(_tab: ZTab): string;
90
+ protected readonly tabItems: _angular_core.Signal<{
91
+ tab: ZTab;
92
+ classes: string;
93
+ isActive: boolean;
94
+ }[]>;
95
+ private readonly _tabItemClasses;
91
96
  protected selectTab(tab: ZTab, scrollToView?: boolean): void;
92
- protected isTabActive(tab: ZTab): boolean;
93
97
  protected onTabKeydown(event: KeyboardEvent, currentIndex: number): void;
94
98
  protected checkScroll(): void;
95
99
  protected scrollLeft(): void;