@useupup/angular 3.3.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 (89) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -0
  3. package/dist/README.md +71 -0
  4. package/dist/assets/logos.d.ts +4 -0
  5. package/dist/components/audio-uploader.component.d.ts +48 -0
  6. package/dist/components/audio-waveform.component.d.ts +24 -0
  7. package/dist/components/box-uploader.component.d.ts +22 -0
  8. package/dist/components/camera-uploader.component.d.ts +44 -0
  9. package/dist/components/client-box-uploader.component.d.ts +23 -0
  10. package/dist/components/client-dropbox-uploader.component.d.ts +23 -0
  11. package/dist/components/client-google-drive-uploader.component.d.ts +28 -0
  12. package/dist/components/client-one-drive-uploader.component.d.ts +23 -0
  13. package/dist/components/default-add-more-icon.component.d.ts +12 -0
  14. package/dist/components/dropbox-uploader.component.d.ts +22 -0
  15. package/dist/components/file-hero.component.d.ts +36 -0
  16. package/dist/components/file-icon.component.d.ts +12 -0
  17. package/dist/components/file-item.component.d.ts +28 -0
  18. package/dist/components/file-list.component.d.ts +71 -0
  19. package/dist/components/file-preview-portal.component.d.ts +52 -0
  20. package/dist/components/file-preview-thumbnail.component.d.ts +40 -0
  21. package/dist/components/file-preview.component.d.ts +55 -0
  22. package/dist/components/file-row.component.d.ts +43 -0
  23. package/dist/components/google-drive-uploader.component.d.ts +22 -0
  24. package/dist/components/icon.component.d.ts +17 -0
  25. package/dist/components/icons/audio-icon.component.d.ts +6 -0
  26. package/dist/components/icons/box-icon.component.d.ts +6 -0
  27. package/dist/components/icons/camera-icon.component.d.ts +6 -0
  28. package/dist/components/icons/chevron-left-icon.component.d.ts +6 -0
  29. package/dist/components/icons/default-loader-icon.component.d.ts +5 -0
  30. package/dist/components/icons/dropbox-icon.component.d.ts +6 -0
  31. package/dist/components/icons/empty-icon.component.d.ts +6 -0
  32. package/dist/components/icons/file-icon-svg.component.d.ts +8 -0
  33. package/dist/components/icons/folder-filled-icon.component.d.ts +6 -0
  34. package/dist/components/icons/google-drive-icon.component.d.ts +6 -0
  35. package/dist/components/icons/index.d.ts +25 -0
  36. package/dist/components/icons/layout-grid-icon.component.d.ts +6 -0
  37. package/dist/components/icons/layout-list-icon.component.d.ts +6 -0
  38. package/dist/components/icons/link-icon.component.d.ts +6 -0
  39. package/dist/components/icons/loader-icon.component.d.ts +6 -0
  40. package/dist/components/icons/my-device-icon.component.d.ts +6 -0
  41. package/dist/components/icons/one-drive-icon.component.d.ts +6 -0
  42. package/dist/components/icons/player-pause-filled-icon.component.d.ts +6 -0
  43. package/dist/components/icons/player-play-filled-icon.component.d.ts +6 -0
  44. package/dist/components/icons/screen-capture-icon.component.d.ts +6 -0
  45. package/dist/components/icons/search-icon.component.d.ts +6 -0
  46. package/dist/components/icons/trash-icon.component.d.ts +14 -0
  47. package/dist/components/icons/upload-icon.component.d.ts +7 -0
  48. package/dist/components/icons/user-icon.component.d.ts +6 -0
  49. package/dist/components/icons/x-icon.component.d.ts +6 -0
  50. package/dist/components/image-editor-stub.component.d.ts +13 -0
  51. package/dist/components/one-drive-uploader.component.d.ts +22 -0
  52. package/dist/components/progress-bar.component.d.ts +30 -0
  53. package/dist/components/screen-capture-uploader.component.d.ts +47 -0
  54. package/dist/components/server-mode-drive-uploader.component.d.ts +49 -0
  55. package/dist/components/shared/drive-auth-fallback.component.d.ts +27 -0
  56. package/dist/components/shared/drive-browser-header.component.d.ts +64 -0
  57. package/dist/components/shared/drive-browser-icon.component.d.ts +16 -0
  58. package/dist/components/shared/drive-browser-item.component.d.ts +21 -0
  59. package/dist/components/shared/drive-browser.component.d.ts +52 -0
  60. package/dist/components/shared/file-success-check.component.d.ts +21 -0
  61. package/dist/components/source-selector.component.d.ts +35 -0
  62. package/dist/components/source-view-container.component.d.ts +29 -0
  63. package/dist/components/source-view.component.d.ts +46 -0
  64. package/dist/components/uploader-header.component.d.ts +36 -0
  65. package/dist/components/uploader-panel.component.d.ts +59 -0
  66. package/dist/components/url-uploader.component.d.ts +30 -0
  67. package/dist/context/source-view-header-extra.service.d.ts +21 -0
  68. package/dist/fesm2022/useupup-angular.mjs +9561 -0
  69. package/dist/fesm2022/useupup-angular.mjs.map +1 -0
  70. package/dist/index.d.ts +5 -0
  71. package/dist/lib/to-signal-store.d.ts +20 -0
  72. package/dist/lib/use-sse-processing.d.ts +19 -0
  73. package/dist/lib/use-tiles-per-row.d.ts +18 -0
  74. package/dist/lib/use-upup-upload.d.ts +40 -0
  75. package/dist/lib/view-mode.d.ts +23 -0
  76. package/dist/public-api.d.ts +9 -0
  77. package/dist/services/box.service.d.ts +40 -0
  78. package/dist/services/camera-uploader.service.d.ts +32 -0
  79. package/dist/services/dropbox.service.d.ts +40 -0
  80. package/dist/services/fetch-file-by-url.service.d.ts +17 -0
  81. package/dist/services/google-drive.service.d.ts +47 -0
  82. package/dist/services/one-drive.service.d.ts +39 -0
  83. package/dist/services/server-mode-drive.service.d.ts +30 -0
  84. package/dist/shared/types.d.ts +14 -0
  85. package/dist/styles.d.ts +4 -0
  86. package/dist/tailwind-prefixed.css +2499 -0
  87. package/dist/upup-store.service.d.ts +131 -0
  88. package/dist/upup-uploader.component.d.ts +36 -0
  89. package/package.json +109 -0
@@ -0,0 +1,131 @@
1
+ import { type Signal } from '@angular/core';
2
+ import { FileSource, UploadStatus, type CloudDrivesConfig, type UploadFile, type UiTranslations, type Translator, type ResolvedImageEditorOptions } from '@useupup/core';
3
+ import { UploaderOrchestrator, ThemeStore, type MotionMode } from '@useupup/core/internal';
4
+ import { type UpupUploadHandle } from './lib/use-upup-upload';
5
+ import type { UploaderProps } from './shared/types';
6
+ import * as i0 from "@angular/core";
7
+ type OrchSnapshot = ReturnType<UploaderOrchestrator['getSnapshot']>;
8
+ type ThemeSnapshot = ReturnType<ThemeStore['getSnapshot']>;
9
+ export declare class UpupStore {
10
+ private props?;
11
+ private upload;
12
+ private controller;
13
+ core: UpupUploadHandle['core'];
14
+ private orchState;
15
+ /** The orchestrator instance, exposed for the dropzone DragDropController. Set during init(). */
16
+ get orchestrator(): UploaderOrchestrator;
17
+ private themeState;
18
+ private transientState;
19
+ private motionState;
20
+ private started;
21
+ private destroyed;
22
+ private cleanups;
23
+ /** Set during init(); undefined before init() is called. */
24
+ mode: 'client' | 'server';
25
+ serverUrl?: string | undefined;
26
+ translations: Signal<UiTranslations>;
27
+ translator: Translator;
28
+ lang: string;
29
+ dir: string;
30
+ cloudDrives?: CloudDrivesConfig | undefined;
31
+ uiProps: {
32
+ mini: boolean;
33
+ maxRetries?: number | undefined;
34
+ resumable?: UploaderProps['resumable'] | undefined;
35
+ onError: (message: string) => void;
36
+ onIntegrationClick: (integrationType: string) => void;
37
+ onFileClick: (file: UploadFile) => void;
38
+ onFilesDragOver: (files: File[]) => void;
39
+ onFilesDragLeave: (files: File[]) => void;
40
+ onFilesDrop: (files: File[]) => void;
41
+ onWarn: (message: string) => void;
42
+ enablePaste: boolean;
43
+ sources: FileSource[];
44
+ allowedFileTypes: string;
45
+ maxFileSize?: UploaderProps['maxFileSize'] | undefined;
46
+ limit: number;
47
+ isProcessing: boolean;
48
+ allowPreview: boolean;
49
+ folderUploadAllowDrop: boolean;
50
+ folderPickerButtonVisible: boolean;
51
+ showBranding: boolean;
52
+ quietCompletion: boolean;
53
+ disableDragDrop: boolean;
54
+ className: string;
55
+ style: Record<string, string>;
56
+ multiple: boolean;
57
+ icons: {
58
+ ContainerAddMoreIcon: unknown;
59
+ FileDeleteIcon: unknown;
60
+ CameraCaptureIcon: unknown;
61
+ CameraRotateIcon: unknown;
62
+ CameraDeleteIcon: unknown;
63
+ LoaderIcon: unknown;
64
+ };
65
+ imageEditor: ResolvedImageEditorOptions;
66
+ };
67
+ files: Signal<OrchSnapshot['files']>;
68
+ activeSource: Signal<FileSource | undefined>;
69
+ isAddingMore: Signal<boolean>;
70
+ viewMode: Signal<'grid' | 'list'>;
71
+ isOnline: Signal<boolean>;
72
+ editingFile: Signal<UploadFile | null>;
73
+ totalProgress: Signal<number>;
74
+ filesProgressMap: Signal<OrchSnapshot['filesProgressMap']>;
75
+ uploadStatus: Signal<UploadStatus>;
76
+ uploadError: Signal<string | undefined>;
77
+ uploadErrorCode: Signal<string | undefined>;
78
+ uploadSpeed: Signal<number>;
79
+ uploadEta: Signal<number>;
80
+ uploadedBytes: Signal<number>;
81
+ totalBytes: Signal<number>;
82
+ editorQueue: Signal<OrchSnapshot['editorQueue']>;
83
+ leavingFileIds: Signal<ReadonlySet<string>>;
84
+ sourceOverlayOpen: Signal<boolean>;
85
+ sourceOverlayClosing: Signal<boolean>;
86
+ dropRejected: Signal<string | null>;
87
+ motionMode: Signal<MotionMode>;
88
+ themeMode: Signal<ThemeSnapshot['themeMode']>;
89
+ isDark: Signal<boolean>;
90
+ tokens: Signal<ThemeSnapshot['tokens']>;
91
+ resolved: Signal<ThemeSnapshot['resolved']>;
92
+ slotOverrides: Signal<ThemeSnapshot['slotOverrides']>;
93
+ slots: Signal<ThemeSnapshot['slots']>;
94
+ /** Call before init() to provide props. */
95
+ setConfig(props: UploaderProps): void;
96
+ private onError;
97
+ private onWarn;
98
+ init(): void;
99
+ /** Current orchestrator snapshot (synchronous). */
100
+ snapshot(): OrchSnapshot;
101
+ registerFileInput: (el: HTMLInputElement | null) => void;
102
+ getFileInput: () => HTMLInputElement | null;
103
+ openFilePicker: () => void;
104
+ setActiveSource(a: FileSource | undefined): void;
105
+ setIsAddingMore(v: boolean): void;
106
+ setViewMode(m: 'grid' | 'list'): void;
107
+ openSourceOverlay(): void;
108
+ closeSourceOverlay(): void;
109
+ /** Core's DragDropController fires this with the read-only drive FileSource;
110
+ * resolve its human provider label, then raise the 3s-auto-clear toast. */
111
+ flagDriveDropRejected(source: FileSource): void;
112
+ handleSetSelectedFiles(newFiles: File[]): Promise<void>;
113
+ handleFileRemove(fileId: string): void;
114
+ uploadFiles(newFiles: File[] | UploadFile[]): Promise<UploadFile[] | undefined>;
115
+ replaceFiles(newFiles: File[] | UploadFile[]): void;
116
+ startUpload(): Promise<UploadFile[] | undefined>;
117
+ retryUpload(fileId?: string): Promise<UploadFile[] | undefined>;
118
+ handleCancel(): void;
119
+ handlePause(): void;
120
+ handleResume(): void;
121
+ handleDone(): void;
122
+ resetState(): void;
123
+ openImageEditor(file: UploadFile): void;
124
+ closeImageEditor(): void;
125
+ saveImageEdit(editedImageData: string, mimeType?: string): void;
126
+ replaceFile(fileId: string, newFile: UploadFile): void;
127
+ destroy(): void;
128
+ static ɵfac: i0.ɵɵFactoryDeclaration<UpupStore, never>;
129
+ static ɵprov: i0.ɵɵInjectableDeclaration<UpupStore>;
130
+ }
131
+ export {};
@@ -0,0 +1,36 @@
1
+ import { AfterViewInit, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { UpupStore } from './upup-store.service';
3
+ import type { UploaderProps } from './shared/types';
4
+ import type { UploadFile } from '@useupup/core';
5
+ import * as i0 from "@angular/core";
6
+ export declare class UpupUploaderComponent implements OnInit, AfterViewInit {
7
+ readonly store: UpupStore;
8
+ private readonly destroyRef;
9
+ private readonly platformId;
10
+ private started;
11
+ private forwardUnsubs;
12
+ /** True only after the store has been initialized (browser only). Gate for template rendering. */
13
+ storeReady: boolean;
14
+ fileInputRef?: ElementRef<HTMLInputElement>;
15
+ set config(value: UploaderProps);
16
+ filesAdded: EventEmitter<UploadFile[]>;
17
+ fileRemoved: EventEmitter<UploadFile>;
18
+ uploadProgress: EventEmitter<{
19
+ fileId: string;
20
+ loaded: number;
21
+ total: number;
22
+ }>;
23
+ uploadAllComplete: EventEmitter<UploadFile[]>;
24
+ error: EventEmitter<{
25
+ error: Error;
26
+ file?: UploadFile;
27
+ }>;
28
+ ngOnInit(): void;
29
+ ngAfterViewInit(): void;
30
+ onInputChange(e: Event): void;
31
+ sizingClass(): string;
32
+ containerClass(): string;
33
+ private wireOutputs;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<UpupUploaderComponent, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<UpupUploaderComponent, "upup-uploader", never, { "config": { "alias": "config"; "required": false; }; }, { "filesAdded": "filesAdded"; "fileRemoved": "fileRemoved"; "uploadProgress": "uploadProgress"; "uploadAllComplete": "uploadAllComplete"; "error": "error"; }, never, never, true, never>;
36
+ }
package/package.json ADDED
@@ -0,0 +1,109 @@
1
+ {
2
+ "name": "@useupup/angular",
3
+ "version": "3.3.0",
4
+ "description": "Angular 19+ standalone file uploader with cloud-drive sources, resumable uploads, theming, and ICU i18n.",
5
+ "keywords": [
6
+ "file-upload",
7
+ "file-uploader",
8
+ "upload",
9
+ "uploader",
10
+ "angular",
11
+ "angular-component",
12
+ "drag-and-drop",
13
+ "dropzone",
14
+ "s3",
15
+ "presigned-url",
16
+ "google-drive",
17
+ "one-drive",
18
+ "dropbox",
19
+ "camera",
20
+ "typescript"
21
+ ],
22
+ "homepage": "https://useupup.com",
23
+ "bugs": {
24
+ "url": "https://github.com/DevinoSolutions/upup/issues"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/DevinoSolutions/upup.git",
29
+ "directory": "packages/angular"
30
+ },
31
+ "license": "MIT",
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "type": "module",
36
+ "sideEffects": [
37
+ "*.css"
38
+ ],
39
+ "engines": {
40
+ "node": ">=20"
41
+ },
42
+ "main": "./dist/fesm2022/useupup-angular.mjs",
43
+ "module": "./dist/fesm2022/useupup-angular.mjs",
44
+ "types": "./dist/index.d.ts",
45
+ "typesVersions": {
46
+ "*": {
47
+ "styles": [
48
+ "dist/styles.d.ts"
49
+ ]
50
+ }
51
+ },
52
+ "exports": {
53
+ ".": {
54
+ "types": "./dist/index.d.ts",
55
+ "default": "./dist/fesm2022/useupup-angular.mjs"
56
+ },
57
+ "./styles": {
58
+ "types": "./dist/styles.d.ts",
59
+ "default": "./dist/tailwind-prefixed.css"
60
+ }
61
+ },
62
+ "files": [
63
+ "dist"
64
+ ],
65
+ "dependencies": {
66
+ "@tanstack/virtual-core": "^3.13.0",
67
+ "tslib": "^2.6.0",
68
+ "@useupup/core": "3.3.0"
69
+ },
70
+ "peerDependencies": {
71
+ "@angular/common": "^19.0.0",
72
+ "@angular/core": "^19.0.0",
73
+ "rxjs": "^7.8.0"
74
+ },
75
+ "devDependencies": {
76
+ "@analogjs/vite-plugin-angular": "^1.10.0",
77
+ "@analogjs/vitest-angular": "^1.10.0",
78
+ "@angular/build": "^19.0.0",
79
+ "@angular/common": "^19.0.0",
80
+ "@angular/compiler": "^19.0.0",
81
+ "@angular/compiler-cli": "^19.0.0",
82
+ "@angular/core": "^19.0.0",
83
+ "@angular/platform-browser": "^19.0.0",
84
+ "@angular/platform-browser-dynamic": "^19.0.0",
85
+ "@vitest/coverage-v8": "^4.1.2",
86
+ "eslint": "^10.6.0",
87
+ "jsdom": "22.1.0",
88
+ "ng-packagr": "^19.0.0",
89
+ "postcss": "^8.5.2",
90
+ "postcss-cli": "^11.0.1",
91
+ "rxjs": "^7.8.0",
92
+ "typescript": "~5.6.0",
93
+ "vite": "^7",
94
+ "vitest": "^4.1.2",
95
+ "zone.js": "^0.14.0",
96
+ "@useupup/eslint-config": "0.1.0",
97
+ "@useupup/tailwind-config": "0.1.0"
98
+ },
99
+ "scripts": {
100
+ "build": "ng-packagr -p ng-package.json && pnpm run build:css",
101
+ "build:css": "postcss src/tailwind.css -o ./dist/tailwind-prefixed.css && node ../../scripts/emit-styles-dts.mjs",
102
+ "dev": "ng-packagr -p ng-package.json --watch",
103
+ "lint": "eslint . --max-warnings 0",
104
+ "test": "vitest run",
105
+ "test:coverage": "vitest run --coverage",
106
+ "test:watch": "vitest",
107
+ "typecheck": "tsc -p tsconfig.lib.json --noEmit && tsc -p tsconfig.spec.json --noEmit"
108
+ }
109
+ }