@shival99/z-ui 2.3.9 → 2.3.11
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/assets/css/overlay.css +2 -12
- package/fesm2022/shival99-z-ui-components-z-audio-player.mjs +210 -0
- package/fesm2022/shival99-z-ui-components-z-audio-player.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs +1177 -1091
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-input.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs +359 -56
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-overlay.mjs +10 -19
- package/fesm2022/shival99-z-ui-components-z-overlay.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +2 -2
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +2 -0
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-i18n.mjs +4 -2
- package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-services.mjs +144 -9
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/package.json +21 -1
- package/types/shival99-z-ui-components-z-audio-player.d.ts +46 -0
- package/types/shival99-z-ui-components-z-gallery.d.ts +63 -32
- package/types/shival99-z-ui-components-z-media-player.d.ts +83 -7
- package/types/shival99-z-ui-components-z-overlay.d.ts +5 -10
- 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.
|
|
3
|
+
"version": "2.3.11",
|
|
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 {
|
|
8
|
-
import {
|
|
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;
|
|
@@ -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
|
|
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,29 +361,51 @@ declare class ZGalleryPreviewComponent {
|
|
|
354
361
|
}
|
|
355
362
|
|
|
356
363
|
declare class ZGalleryPreviewRef {
|
|
357
|
-
private readonly
|
|
364
|
+
private readonly _dynamicRef;
|
|
358
365
|
private _closed;
|
|
359
366
|
componentInstance: ZGalleryPreviewComponent | null;
|
|
360
367
|
readonly zAfterClose: EventEmitter<void>;
|
|
361
|
-
constructor(
|
|
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
|
|
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;
|
|
@@ -397,5 +426,7 @@ declare const zGalleryFileIconVariants: (props?: ({
|
|
|
397
426
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
398
427
|
type ZGalleryFileIconVariants = VariantProps<typeof zGalleryFileIconVariants>;
|
|
399
428
|
|
|
400
|
-
|
|
401
|
-
|
|
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 };
|
|
@@ -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?: "default" | "theater" | "fullscreen" | 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.
|
|
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
|
|
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(
|
|
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 };
|
|
@@ -172,21 +172,16 @@ declare class ZOverlayService {
|
|
|
172
172
|
* Khoá scroll trang khi overlay toàn màn hình (modal/drawer) mở — thay cho
|
|
173
173
|
* `scrollStrategies.block()` của CDK. Đếm tham chiếu để modal-trong-modal không mở khoá sớm.
|
|
174
174
|
*
|
|
175
|
-
* Chống layout shift
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
* `scrollbar-gutter: stable` để chỗ đó KHÔNG bị nhả ra. Cách này giữ đúng chiều rộng layout
|
|
179
|
-
* cho cả nội dung trong flow lẫn element `position: fixed` (backdrop, drawer, toast...),
|
|
180
|
-
* nên không cần bù padding và không có gì dịch chuyển.
|
|
181
|
-
* 2. Nếu trình duyệt vẫn nhả chỗ đó (không hỗ trợ `scrollbar-gutter`), ĐO đúng hiệu số chiều
|
|
182
|
-
* rộng của `<html>` trước/sau khi khoá rồi bù vào `padding-right` của body.
|
|
175
|
+
* Chống layout shift bằng cách đo gutter thật của `<html>` rồi bù vào body trước khi khoá overflow.
|
|
176
|
+
* Không giữ `scrollbar-gutter: stable` trong lúc overlay mở: fixed backdrop/panel khi đó bị giới
|
|
177
|
+
* hạn theo layout viewport và hở một dải scrollbar ở mép phải trên Windows.
|
|
183
178
|
*
|
|
184
179
|
* Lưu ý: phải đo bằng `getBoundingClientRect()` của `<html>`, không dùng `documentElement.clientWidth`
|
|
185
180
|
* — với root element thuộc tính đó trả về kích thước viewport nên luôn cộng thêm chiều rộng scrollbar
|
|
186
181
|
* khi `overflow: hidden`, dẫn tới bù thừa và làm UI co lại đúng bằng chiều rộng scrollbar.
|
|
187
182
|
*
|
|
188
|
-
* Hiệu số
|
|
189
|
-
*
|
|
183
|
+
* Hiệu số được ghi ra biến CSS `--z-scroll-lock-gutter` để app bù thêm cho element `position: fixed`
|
|
184
|
+
* của riêng mình nếu cần.
|
|
190
185
|
*
|
|
191
186
|
* Vị trí scroll vẫn được lưu để khôi phục nếu ứng dụng thay đổi scroll programmatically trong lúc khoá.
|
|
192
187
|
*/
|
|
@@ -60,6 +60,8 @@ interface ZDynamicTemplateContext<TData, TResult> {
|
|
|
60
60
|
interface ZDynamicOptions<TData = unknown> {
|
|
61
61
|
/** Data injected into a component or exposed in a template context. */
|
|
62
62
|
data?: TData;
|
|
63
|
+
/** Initial signal inputs applied before the first component change detection. */
|
|
64
|
+
inputs?: Record<string, unknown>;
|
|
63
65
|
/** View container used as the logical parent of the attached portal. */
|
|
64
66
|
viewContainerRef?: ViewContainerRef;
|
|
65
67
|
/** Whether the overlay renders a backdrop. Defaults to `true`. */
|
|
@@ -70,6 +72,8 @@ interface ZDynamicOptions<TData = unknown> {
|
|
|
70
72
|
panelClass?: string;
|
|
71
73
|
/** Locks page scroll while the overlay is open. Defaults to `true`. */
|
|
72
74
|
scrollLock?: boolean;
|
|
75
|
+
/** Whether the overlay pane itself can scroll. Defaults to `true`. */
|
|
76
|
+
scrollable?: boolean;
|
|
73
77
|
/** Close when the backdrop is clicked. Defaults to `true`. */
|
|
74
78
|
closeOnBackdropClick?: boolean;
|
|
75
79
|
/** Close when Escape is pressed. Defaults to `true`. */
|
|
@@ -115,6 +119,7 @@ declare class ZDynamicRef<T = unknown, TResult = unknown> {
|
|
|
115
119
|
isClosed(): boolean;
|
|
116
120
|
/** Closes the overlay and emits the optional result exactly once. */
|
|
117
121
|
close(result?: TResult): void;
|
|
122
|
+
private _getContentElements;
|
|
118
123
|
/**
|
|
119
124
|
* @deprecated Không còn tác dụng — overlay tự do giờ luôn dùng vị trí toàn cục (global),
|
|
120
125
|
* tự canh giữa bằng CSS, không còn "chiến lược định vị" nào cần cập nhật lại. Giữ lại method
|
|
@@ -123,6 +128,8 @@ declare class ZDynamicRef<T = unknown, TResult = unknown> {
|
|
|
123
128
|
updatePosition(): void;
|
|
124
129
|
/** Updates the overlay pane dimensions. */
|
|
125
130
|
updateSize(width?: string, height?: string): void;
|
|
131
|
+
/** Applies an input after the component has been attached. */
|
|
132
|
+
setInput(name: string, value: unknown): void;
|
|
126
133
|
/** @internal Used by the service after attaching a component portal. */
|
|
127
134
|
attachComponentRef(componentRef: ComponentRef<T>): void;
|
|
128
135
|
}
|
|
@@ -325,6 +332,21 @@ declare class ZExcelService {
|
|
|
325
332
|
static ɵprov: i0.ɵɵInjectableDeclaration<ZExcelService>;
|
|
326
333
|
}
|
|
327
334
|
|
|
335
|
+
interface ZGalleryOfficeRenderResult {
|
|
336
|
+
dispose: () => void;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
declare class ZGalleryOfficeRenderService {
|
|
340
|
+
renderDoc(container: HTMLElement, blob: Blob): Promise<ZGalleryOfficeRenderResult>;
|
|
341
|
+
renderSheet(container: HTMLElement, blob: Blob): Promise<ZGalleryOfficeRenderResult>;
|
|
342
|
+
renderSlide(container: HTMLElement, blob: Blob): Promise<ZGalleryOfficeRenderResult>;
|
|
343
|
+
private _toUniverWorkbook;
|
|
344
|
+
private _toUniverCellData;
|
|
345
|
+
private _observeDocxZoom;
|
|
346
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ZGalleryOfficeRenderService, never>;
|
|
347
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ZGalleryOfficeRenderService>;
|
|
348
|
+
}
|
|
349
|
+
|
|
328
350
|
type ZHttpParamsType<T> = {
|
|
329
351
|
[K in keyof T]: string | number | boolean | ReadonlyArray<string | number | boolean>;
|
|
330
352
|
};
|
|
@@ -728,6 +750,7 @@ declare function zStripLegacyScopedCacheKey(key: string): string;
|
|
|
728
750
|
|
|
729
751
|
/** Injection token for data passed to a dynamic component or template. */
|
|
730
752
|
declare const Z_DYNAMIC_DATA: InjectionToken<unknown>;
|
|
753
|
+
declare const Z_DYNAMIC_ANIMATION_DURATION = 150;
|
|
731
754
|
|
|
732
755
|
declare const Z_EXCEL_COLORS: {
|
|
733
756
|
readonly 'green-50': "FFF0FDF4";
|
|
@@ -807,5 +830,5 @@ interface ZTranslateI18nConfig {
|
|
|
807
830
|
}
|
|
808
831
|
declare const Z_LANG_CACHE_KEY = "Z_LANGUAGE";
|
|
809
832
|
|
|
810
|
-
export { ZCacheService, ZDynamicRef, ZDynamicService, ZExcelService, ZHttpAbstractService, ZIndexDbService, ZOverlayContainerService, ZOverlayZIndexService, ZSubjectService, ZThemeService, ZTranslateService, Z_CACHE_DEFAULT_PREFIX, Z_CACHE_SCOPE_SEPARATOR, Z_DB_SCOPE_SEPARATOR, Z_DEFAULT_THEME, Z_DYNAMIC_DATA, Z_EXCEL_BORDER_THIN, Z_EXCEL_CHAR_WIDTH_MAP, Z_EXCEL_COLORS, Z_EXCEL_DEFAULT_CONFIG, Z_EXCEL_FONT_MULTIPLIERS, Z_EXCEL_WIDTH_LIMITS, Z_HTTP_DEFAULT_CONFIG, Z_INDEXDB_BATCH_SIZE, Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_LANG_CACHE_KEY, Z_LANG_TO_LOCALE, Z_STORAGE_SCOPE_FALLBACK, Z_THEME_CONFIG, Z_THEME_CSS_MAP, Z_THEME_PREFERENCES_CACHE_KEY, zBuildLegacyScopedCacheKey, zBuildLegacyScopedDbName, zBuildScopedCacheKey, zBuildScopedDbName, zConfigureStorageAppName, zGetStorageAppName, zNormalizeStorageAppName, zStripLegacyScopedCacheKey, zStripScopedCacheKey };
|
|
811
|
-
export type { ZCacheConfig, ZCacheEntry, ZDynamicContent, ZDynamicOptions, ZDynamicResult, ZDynamicTemplateContext, ZExcelAlign, ZExcelCell, ZExcelCellContext, ZExcelColumnConfig, ZExcelConfig, ZExcelDefaultConfig, ZExcelExportOptions, ZExcelExportResult, ZExcelFontConfig, ZExcelFromTableConfig, ZExcelHeaderColors, ZExcelHeaderContext, ZExcelSheetSource, ZExcelTableColumnConfig, ZExcelTableHeaderConfig, ZExcelToastHandler, ZHttpBaseOptions, ZHttpCacheEntry, ZHttpConfig, ZHttpContentType, ZHttpError, ZHttpNetworkCheck, ZHttpOptions, ZHttpParamsType, ZIndexDbConfig, ZIndexDbGetOptions, ZIndexDbSetOptions, ZIndexDbStoreConfig, ZTableToExcelColumn, ZThemeConfig, ZThemeName, ZThemePreferences, ZTranslateConfig, ZTranslateI18nConfig };
|
|
833
|
+
export { ZCacheService, ZDynamicRef, ZDynamicService, ZExcelService, ZGalleryOfficeRenderService, ZHttpAbstractService, ZIndexDbService, ZOverlayContainerService, ZOverlayZIndexService, ZSubjectService, ZThemeService, ZTranslateService, Z_CACHE_DEFAULT_PREFIX, Z_CACHE_SCOPE_SEPARATOR, Z_DB_SCOPE_SEPARATOR, Z_DEFAULT_THEME, Z_DYNAMIC_ANIMATION_DURATION, Z_DYNAMIC_DATA, Z_EXCEL_BORDER_THIN, Z_EXCEL_CHAR_WIDTH_MAP, Z_EXCEL_COLORS, Z_EXCEL_DEFAULT_CONFIG, Z_EXCEL_FONT_MULTIPLIERS, Z_EXCEL_WIDTH_LIMITS, Z_HTTP_DEFAULT_CONFIG, Z_INDEXDB_BATCH_SIZE, Z_INDEXDB_DEFAULT_CONFIG, Z_INDEXDB_MAX_VERSION, Z_LANG_CACHE_KEY, Z_LANG_TO_LOCALE, Z_STORAGE_SCOPE_FALLBACK, Z_THEME_CONFIG, Z_THEME_CSS_MAP, Z_THEME_PREFERENCES_CACHE_KEY, zBuildLegacyScopedCacheKey, zBuildLegacyScopedDbName, zBuildScopedCacheKey, zBuildScopedDbName, zConfigureStorageAppName, zGetStorageAppName, zNormalizeStorageAppName, zStripLegacyScopedCacheKey, zStripScopedCacheKey };
|
|
834
|
+
export type { ZCacheConfig, ZCacheEntry, ZDynamicContent, ZDynamicOptions, ZDynamicResult, ZDynamicTemplateContext, ZExcelAlign, ZExcelCell, ZExcelCellContext, ZExcelColumnConfig, ZExcelConfig, ZExcelDefaultConfig, ZExcelExportOptions, ZExcelExportResult, ZExcelFontConfig, ZExcelFromTableConfig, ZExcelHeaderColors, ZExcelHeaderContext, ZExcelSheetSource, ZExcelTableColumnConfig, ZExcelTableHeaderConfig, ZExcelToastHandler, ZGalleryOfficeRenderResult, ZHttpBaseOptions, ZHttpCacheEntry, ZHttpConfig, ZHttpContentType, ZHttpError, ZHttpNetworkCheck, ZHttpOptions, ZHttpParamsType, ZIndexDbConfig, ZIndexDbGetOptions, ZIndexDbSetOptions, ZIndexDbStoreConfig, ZTableToExcelColumn, ZThemeConfig, ZThemeName, ZThemePreferences, ZTranslateConfig, ZTranslateI18nConfig };
|