@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,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@useupup/angular" />
5
+ export * from './public-api';
@@ -0,0 +1,20 @@
1
+ import { type Signal } from '@angular/core';
2
+ /** The subscribe/getSnapshot contract every @useupup/core headless store satisfies. */
3
+ export interface HeadlessStore<S> {
4
+ subscribe(listener: () => void): () => void;
5
+ getSnapshot(): S;
6
+ }
7
+ /** The Angular-signal view returned by toSignalStore. Call destroy() in ngOnDestroy / DestroyRef. */
8
+ export interface SignalStore<S> {
9
+ state: Signal<S>;
10
+ destroy: () => void;
11
+ }
12
+ /**
13
+ * Bridge a headless @useupup/core store to an Angular signal. State mirroring only —
14
+ * init()/destroy() stay the caller's responsibility (Angular ngOnInit/DestroyRef),
15
+ * mirroring @useupup/svelte's toReadable and keeping SSR side-effect-free.
16
+ * The orchestrator returns a fresh snapshot object on every change, so Object.is
17
+ * (the signal default) always sees a new reference, ensuring no real update is
18
+ * silently dropped. destroy() is idempotent — safe to call more than once.
19
+ */
20
+ export declare function toSignalStore<S>(store: HeadlessStore<S>): SignalStore<S>;
@@ -0,0 +1,19 @@
1
+ import type { UploadFile } from '@useupup/core';
2
+ export type SSEProcessingOptions = {
3
+ processingEndpoint?: string | undefined;
4
+ onFileProcessed?: ((file: UploadFile, data: Record<string, unknown>) => void) | undefined;
5
+ onError?: ((error: Error) => void) | undefined;
6
+ processingTimeout?: number | undefined;
7
+ };
8
+ /**
9
+ * Framework-free SSE processing helper (ported from @useupup/svelte useSSEProcessing).
10
+ * Returns { connectSSE(file), destroy() }.
11
+ * - connectSSE opens an EventSource at processingEndpoint?key=file.key.
12
+ * - destroy tears down all open EventSources and timers.
13
+ *
14
+ * No Svelte lifecycle hooks — callers push destroy() into their own cleanup array.
15
+ */
16
+ export declare function createSSEProcessing({ processingEndpoint, onFileProcessed, onError, processingTimeout, }: SSEProcessingOptions): {
17
+ connectSSE(file: UploadFile): void;
18
+ destroy(): void;
19
+ };
@@ -0,0 +1,18 @@
1
+ import { type Signal } from '@angular/core';
2
+ /**
3
+ * Measure an element's content-box width with a ResizeObserver and derive how
4
+ * many 160px grid tiles fit one row (see view-mode.ts). Returns 0 until measured
5
+ * (SSR / jsdom / pre-paint), which isListViewForced reads as "unknown — don't
6
+ * force list yet". Isolated so tests can mock the measurement seam without a
7
+ * real layout engine. Mirrors React's lib/use-tiles-per-row.
8
+ */
9
+ export declare class TilesPerRowObserver {
10
+ private ro;
11
+ private readonly _tilesPerRow;
12
+ /** Reactive tile-per-row count (0 until measured — see view-mode.ts). */
13
+ get tilesPerRow(): Signal<number>;
14
+ /** (Re)observe an element with the ResizeObserver. Call it whenever the
15
+ * scroll container the file list binds changes; passing null disconnects. */
16
+ observe(el: HTMLElement | null): void;
17
+ destroy(): void;
18
+ }
@@ -0,0 +1,40 @@
1
+ import { type WritableSignal } from '@angular/core';
2
+ import { UpupCore, UploadStatus } from '@useupup/core';
3
+ import type { CoreOptions, UploadFile, ExtensionMethods } from '@useupup/core';
4
+ export interface UseUpupUploadOptions extends CoreOptions {
5
+ onFileAdded?: (files: UploadFile[]) => void;
6
+ onFileRemoved?: (file: UploadFile) => void;
7
+ onUploadProgress?: (progress: {
8
+ fileId: string;
9
+ loaded: number;
10
+ total: number;
11
+ }) => void;
12
+ onUploadComplete?: (files: UploadFile[]) => void;
13
+ }
14
+ export interface UpupUploadHandle {
15
+ files: WritableSignal<UploadFile[]>;
16
+ status: WritableSignal<UploadStatus>;
17
+ progress: WritableSignal<{
18
+ totalFiles: number;
19
+ completedFiles: number;
20
+ percentage: number;
21
+ }>;
22
+ error: WritableSignal<Error | null>;
23
+ addFiles(files: File[]): Promise<void>;
24
+ removeFile(id: string): void;
25
+ removeAll(): void;
26
+ setFiles(files: File[]): Promise<void>;
27
+ reorderFiles(ids: string[]): void;
28
+ upload(): Promise<UploadFile[]>;
29
+ pause(): void;
30
+ resume(): void;
31
+ cancel(): void;
32
+ retry(fileId?: string): Promise<UploadFile[]>;
33
+ on(event: string, handler: (payload: unknown) => void): () => void;
34
+ ext: Record<string, ExtensionMethods>;
35
+ core: UpupCore;
36
+ start(): void;
37
+ destroy(): void;
38
+ }
39
+ /** Single-use: after destroy() the underlying UpupCore is destroyed; do not call start() again on the same instance. */
40
+ export declare function createUpupUpload(options: UseUpupUploadOptions): UpupUploadHandle;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Grid-tile geometry. The grid lays tiles with
3
+ * `repeat(auto-fit, minmax(FILE_TILE_MIN, 1fr))` and a FILE_TILE_GAP gap, so a
4
+ * row fits floor((width + gap) / (min + gap)) tiles before it would wrap, and
5
+ * the tiles STRETCH to fill the row (no dead columns). The force-list rule below
6
+ * uses the SAME numbers so the grid never wraps: the moment one more tile would
7
+ * spill to a second row, list mode is forced instead.
8
+ */
9
+ export declare const FILE_TILE_MIN = 160;
10
+ export declare const FILE_TILE_GAP = 16;
11
+ /**
12
+ * How many auto-fit tiles fit across `containerWidth` in a single row. A
13
+ * non-positive / non-finite (unmeasured) width yields 0, which
14
+ * isListViewForced reads as "not measured yet — don't force a switch".
15
+ */
16
+ export declare function computeTilesPerRow(containerWidth: number): number;
17
+ /**
18
+ * The square-tile grid is only honored when every tile fits in ONE row of the
19
+ * fixed-height panel; past that the row list is FORCED and UploaderHeader hides
20
+ * the grid/list toggle. `tilesPerRow <= 0` means the container has not been
21
+ * measured yet — treated as "fits" so the first paint never flashes to list.
22
+ */
23
+ export declare function isListViewForced(fileCount: number, tilesPerRow: number): boolean;
@@ -0,0 +1,9 @@
1
+ export { UpupUploaderComponent } from './upup-uploader.component';
2
+ export { UpupStore } from './upup-store.service';
3
+ export { createUpupUpload } from './lib/use-upup-upload';
4
+ export type { UseUpupUploadOptions, UpupUploadHandle, } from './lib/use-upup-upload';
5
+ export { toSignalStore } from './lib/to-signal-store';
6
+ export type { SignalStore, HeadlessStore } from './lib/to-signal-store';
7
+ export type { UploaderProps, UploaderIcons } from './shared/types';
8
+ export { FileSource, StorageProvider, UploadStatus } from '@useupup/core';
9
+ export type { UploadFile, CoreOptions, ImageEditorOptions, ResolvedImageEditorOptions, UploadSource, UploadProvider, } from '@useupup/core';
@@ -0,0 +1,40 @@
1
+ import { type Signal } from '@angular/core';
2
+ import { type DriveFile, type DriveFolder } from '@useupup/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Angular port of useBox.ts (svelte composable).
6
+ *
7
+ * Pure delegation to DriveBrowserController with BOX_DESCRIPTOR (popup auth).
8
+ * No business logic lives here — everything flows through the controller.
9
+ */
10
+ export declare class BoxService {
11
+ private store;
12
+ private controller;
13
+ private signalStore;
14
+ private state;
15
+ readonly user: Signal<import("@useupup/core").DriveUser>;
16
+ readonly boxFiles: Signal<DriveFolder>;
17
+ readonly token: Signal<string>;
18
+ readonly isAuthenticated: Signal<boolean>;
19
+ readonly isLoading: Signal<boolean>;
20
+ readonly path: Signal<DriveFolder[]>;
21
+ readonly selectedFiles: Signal<DriveFile[]>;
22
+ readonly showLoader: Signal<boolean>;
23
+ readonly isClickLoading: Signal<boolean>;
24
+ readonly error: Signal<import("@useupup/core").DriveBrowserError>;
25
+ readonly hasMore: Signal<boolean>;
26
+ readonly isLoadingMore: Signal<boolean>;
27
+ init(): void;
28
+ destroy(): void;
29
+ authenticate(): void;
30
+ logout(): void;
31
+ setPath(newPath: DriveFolder[]): void;
32
+ handleClick(file: DriveFile): void;
33
+ handleSignOut(): void;
34
+ handleSubmit(): Promise<void>;
35
+ handleCancelDownload(): void;
36
+ onSelectCurrentFolder(): void;
37
+ loadMore(): Promise<void>;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<BoxService, never>;
39
+ static ɵprov: i0.ɵɵInjectableDeclaration<BoxService>;
40
+ }
@@ -0,0 +1,32 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare enum FacingMode {
3
+ Environment = "environment",
4
+ User = "user"
5
+ }
6
+ /**
7
+ * Angular port of useCameraUploader (svelte composable).
8
+ *
9
+ * Manages getUserMedia stream lifecycle, canvas capture → File, facing-mode switch.
10
+ * The video element is wired in by the component via setVideoEl() (mirrors svelte's
11
+ * bind:this={videoEl} + $effect(() => setVideoEl(videoEl))).
12
+ *
13
+ * Cleanup: call stopCamera() from ngOnDestroy.
14
+ */
15
+ export declare class CameraUploaderService {
16
+ private store;
17
+ private videoEl;
18
+ private stream;
19
+ readonly capturedUrl: import("@angular/core").WritableSignal<string>;
20
+ readonly facingMode: import("@angular/core").WritableSignal<FacingMode>;
21
+ /** 'front' when environment-facing (switch button shows "Switch to front"), 'back' otherwise. */
22
+ readonly newCameraSide: import("@angular/core").Signal<"front" | "back">;
23
+ setVideoEl(el: HTMLVideoElement | null): void;
24
+ startCamera(): Promise<void>;
25
+ stopCamera(): void;
26
+ capture(): void;
27
+ clearUrl(): void;
28
+ handleFetchImage(): Promise<void>;
29
+ handleCameraSwitch(): void;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<CameraUploaderService, never>;
31
+ static ɵprov: i0.ɵɵInjectableDeclaration<CameraUploaderService>;
32
+ }
@@ -0,0 +1,40 @@
1
+ import { type Signal } from '@angular/core';
2
+ import { type DriveFile, type DriveFolder } from '@useupup/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Angular port of useDropbox.ts (svelte composable).
6
+ *
7
+ * Pure delegation to DriveBrowserController with DROPBOX_DESCRIPTOR (popup auth).
8
+ * No business logic lives here — everything flows through the controller.
9
+ */
10
+ export declare class DropboxService {
11
+ private store;
12
+ private controller;
13
+ private signalStore;
14
+ private state;
15
+ readonly user: Signal<import("@useupup/core").DriveUser>;
16
+ readonly dropboxFiles: Signal<DriveFolder>;
17
+ readonly token: Signal<string>;
18
+ readonly isAuthenticated: Signal<boolean>;
19
+ readonly isLoading: Signal<boolean>;
20
+ readonly path: Signal<DriveFolder[]>;
21
+ readonly selectedFiles: Signal<DriveFile[]>;
22
+ readonly showLoader: Signal<boolean>;
23
+ readonly isClickLoading: Signal<boolean>;
24
+ readonly error: Signal<import("@useupup/core").DriveBrowserError>;
25
+ readonly hasMore: Signal<boolean>;
26
+ readonly isLoadingMore: Signal<boolean>;
27
+ init(): void;
28
+ destroy(): void;
29
+ authenticate(): void;
30
+ logout(): void;
31
+ setPath(newPath: DriveFolder[]): void;
32
+ handleClick(file: DriveFile): void;
33
+ handleSignOut(): void;
34
+ handleSubmit(): Promise<void>;
35
+ handleCancelDownload(): void;
36
+ onSelectCurrentFolder(): void;
37
+ loadMore(): Promise<void>;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<DropboxService, never>;
39
+ static ɵprov: i0.ɵɵInjectableDeclaration<DropboxService>;
40
+ }
@@ -0,0 +1,17 @@
1
+ import { deriveFetchedFileName } from '@useupup/core/internal';
2
+ import * as i0 from "@angular/core";
3
+ export { deriveFetchedFileName };
4
+ /**
5
+ * Angular port of useFetchFileByUrl (svelte/vue composable).
6
+ *
7
+ * Fetches a URL → Blob → File using deriveFetchedFileName for the filename.
8
+ * Error path calls store.uiProps.onError (svelte parity: composable uses onError
9
+ * from useUploaderOptions which resolves to the same callback).
10
+ */
11
+ export declare class FetchFileByUrlService {
12
+ private store;
13
+ readonly loading: import("@angular/core").WritableSignal<boolean>;
14
+ fetchImage(url: string): Promise<File | undefined>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<FetchFileByUrlService, never>;
16
+ static ɵprov: i0.ɵɵInjectableDeclaration<FetchFileByUrlService>;
17
+ }
@@ -0,0 +1,47 @@
1
+ import { type Signal } from '@angular/core';
2
+ import { type DriveFile, type DriveFolder } from '@useupup/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Angular port of useGoogleDrive.ts (svelte composable).
6
+ *
7
+ * Creates and manages one DriveBrowserController for Google Drive (GIS auth).
8
+ * ALL business logic lives in the controller — this service only:
9
+ * 1. Constructs the controller with the store's core + callbacks
10
+ * 2. Bridges the controller's subscribe/getSnapshot to Angular signals via toSignalStore
11
+ * 3. Exposes typed selectors + forwarding methods (pure delegation, no logic)
12
+ *
13
+ * Call init() from ngOnInit and destroy() from ngOnDestroy (or via DestroyRef).
14
+ */
15
+ export declare class GoogleDriveService {
16
+ private store;
17
+ private controller;
18
+ private signalStore;
19
+ private state;
20
+ readonly user: Signal<import("@useupup/core").DriveUser>;
21
+ readonly googleFiles: Signal<DriveFolder>;
22
+ readonly token: Signal<{
23
+ access_token: string;
24
+ expires_in: number;
25
+ }>;
26
+ readonly authCancelled: Signal<boolean>;
27
+ readonly isAuthReady: Signal<boolean>;
28
+ readonly path: Signal<DriveFolder[]>;
29
+ readonly selectedFiles: Signal<DriveFile[]>;
30
+ readonly showLoader: Signal<boolean>;
31
+ readonly isClickLoading: Signal<boolean>;
32
+ readonly error: Signal<import("@useupup/core").DriveBrowserError>;
33
+ readonly hasMore: Signal<boolean>;
34
+ readonly isLoadingMore: Signal<boolean>;
35
+ init(): void;
36
+ destroy(): void;
37
+ retryAuth(): void;
38
+ handleSignOut(): void;
39
+ setPath(newPath: DriveFolder[]): void;
40
+ handleClick(file: DriveFile): void;
41
+ handleSubmit(): Promise<void>;
42
+ handleCancelDownload(): void;
43
+ onSelectCurrentFolder(): void;
44
+ loadMore(): Promise<void>;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<GoogleDriveService, never>;
46
+ static ɵprov: i0.ɵɵInjectableDeclaration<GoogleDriveService>;
47
+ }
@@ -0,0 +1,39 @@
1
+ import { type Signal } from '@angular/core';
2
+ import { type DriveFile, type DriveFolder } from '@useupup/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Angular port of useOneDrive.ts (svelte composable).
6
+ *
7
+ * Pure delegation to DriveBrowserController with ONE_DRIVE_DESCRIPTOR (popup auth).
8
+ * No business logic lives here — everything flows through the controller.
9
+ */
10
+ export declare class OneDriveService {
11
+ private store;
12
+ private controller;
13
+ private signalStore;
14
+ private state;
15
+ readonly user: Signal<import("@useupup/core").DriveUser>;
16
+ readonly oneDriveFiles: Signal<DriveFolder>;
17
+ readonly token: Signal<string>;
18
+ readonly isAuthenticated: Signal<boolean>;
19
+ readonly isLoading: Signal<boolean>;
20
+ readonly path: Signal<DriveFolder[]>;
21
+ readonly selectedFiles: Signal<DriveFile[]>;
22
+ readonly showLoader: Signal<boolean>;
23
+ readonly isClickLoading: Signal<boolean>;
24
+ readonly error: Signal<import("@useupup/core").DriveBrowserError>;
25
+ readonly hasMore: Signal<boolean>;
26
+ readonly isLoadingMore: Signal<boolean>;
27
+ init(): void;
28
+ destroy(): void;
29
+ signIn(): void;
30
+ signOut(): void;
31
+ setPath(newPath: DriveFolder[]): void;
32
+ handleClick(file: DriveFile): void;
33
+ handleSubmit(): Promise<void>;
34
+ handleCancelDownload(): void;
35
+ onSelectCurrentFolder(): void;
36
+ loadMore(): Promise<void>;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<OneDriveService, never>;
38
+ static ɵprov: i0.ɵɵInjectableDeclaration<OneDriveService>;
39
+ }
@@ -0,0 +1,30 @@
1
+ import { type ServerModeProvider, type ServerDriveFile, type ServerDriveListState } from '@useupup/core';
2
+ import * as i0 from "@angular/core";
3
+ export type { ServerModeProvider, ServerDriveFile };
4
+ export type ListState = ServerDriveListState;
5
+ export declare const PROVIDER_LABEL: Record<ServerModeProvider, string>;
6
+ export declare class ServerModeDriveService {
7
+ private store;
8
+ private controller;
9
+ private bridge;
10
+ private provider;
11
+ readonly listState: import("@angular/core").Signal<ServerDriveListState>;
12
+ readonly folderId: import("@angular/core").Signal<string>;
13
+ readonly search: import("@angular/core").Signal<string>;
14
+ readonly selected: import("@angular/core").WritableSignal<Set<string>>;
15
+ readonly isTransferring: import("@angular/core").WritableSignal<boolean>;
16
+ init(provider: ServerModeProvider): void;
17
+ list(opts?: {
18
+ folderId?: string;
19
+ search?: string;
20
+ }): Promise<void>;
21
+ startAuth(): void;
22
+ setFolderId(id: string | undefined): void;
23
+ setSearch(s: string): void;
24
+ toggleSelected(id: string): void;
25
+ transfer(): Promise<void>;
26
+ destroy(): void;
27
+ get providerLabel(): string;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<ServerModeDriveService, never>;
29
+ static ɵprov: i0.ɵɵInjectableDeclaration<ServerModeDriveService>;
30
+ }
@@ -0,0 +1,14 @@
1
+ import type { Type } from '@angular/core';
2
+ import type { UploaderBaseProps } from '@useupup/core';
3
+ export type UploaderIcons = {
4
+ ContainerAddMoreIcon?: Type<unknown> | undefined;
5
+ FileDeleteIcon?: Type<unknown> | undefined;
6
+ CameraDeleteIcon?: Type<unknown> | undefined;
7
+ CameraCaptureIcon?: Type<unknown> | undefined;
8
+ CameraRotateIcon?: Type<unknown> | undefined;
9
+ LoaderIcon?: Type<unknown> | undefined;
10
+ };
11
+ export type UploaderProps = UploaderBaseProps & {
12
+ icons?: UploaderIcons | undefined;
13
+ style?: Record<string, string> | undefined;
14
+ };
@@ -0,0 +1,4 @@
1
+ // Generated by scripts/emit-styles-dts.mjs — do not edit.
2
+ // Declares the './styles' subpath (runtime target: ./tailwind-prefixed.css) so
3
+ // TypeScript 6+ can resolve `import '@useupup/<framework>/styles'`.
4
+ export {}