@acorex/cdk 22.1.0-next.33 → 22.1.0-next.35
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/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
- package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
- package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
- package/fesm2022/acorex-cdk-common.mjs.map +1 -1
- package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
- package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
- package/fesm2022/acorex-cdk-drawer.mjs +124 -106
- package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
- package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
- package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
- package/fesm2022/acorex-cdk-gesture.mjs.map +1 -1
- package/fesm2022/acorex-cdk-highlight.mjs.map +1 -1
- package/fesm2022/acorex-cdk-horizontal-scroll.mjs.map +1 -1
- package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
- package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
- package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
- package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
- package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
- package/fesm2022/acorex-cdk-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-cdk-resizable.mjs +22 -31
- package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
- package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
- package/fesm2022/acorex-cdk-shimmer.mjs.map +1 -1
- package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
- package/fesm2022/acorex-cdk-uploader.mjs.map +1 -1
- package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
- package/fesm2022/acorex-cdk-wysiwyg.mjs.map +1 -1
- package/fesm2022/acorex-cdk-z-index.mjs.map +1 -1
- package/fesm2022/acorex-cdk.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-cdk-drawer.d.ts +11 -18
- package/types/acorex-cdk-resizable.d.ts +20 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-uploader.mjs","sources":["../../../../packages/cdk/uploader/src/lib/uploader-zone-host.ts","../../../../packages/cdk/uploader/src/lib/uploader.models.ts","../../../../packages/cdk/uploader/src/lib/uploader.service.ts","../../../../packages/cdk/uploader/src/lib/uploader-zone.directive.ts","../../../../packages/cdk/uploader/src/lib/uploader-browse-handle.directive.ts","../../../../packages/cdk/uploader/src/acorex-cdk-uploader.ts"],"sourcesContent":["import type { AXUploaderZoneDirective } from './uploader-zone.directive';\n\n/** DOM marker so browse handles can find a zone across content projection. */\nexport const AX_UPLOADER_ZONE_HOST = Symbol('AX_UPLOADER_ZONE_HOST');\n\nexport type AXUploaderZoneHostElement = HTMLElement & {\n [AX_UPLOADER_ZONE_HOST]?: AXUploaderZoneDirective;\n};\n\nexport function bindUploaderZoneHost(element: HTMLElement, zone: AXUploaderZoneDirective): void {\n (element as AXUploaderZoneHostElement)[AX_UPLOADER_ZONE_HOST] = zone;\n}\n\nexport function unbindUploaderZoneHost(element: HTMLElement): void {\n delete (element as AXUploaderZoneHostElement)[AX_UPLOADER_ZONE_HOST];\n}\n\n/** Walk ancestors to resolve the zone (works with projected browse handles). */\nexport function findUploaderZoneFromDom(start: HTMLElement): AXUploaderZoneDirective | undefined {\n let el: HTMLElement | null = start;\n while (el) {\n const zone = (el as AXUploaderZoneHostElement)[AX_UPLOADER_ZONE_HOST];\n if (zone) {\n return zone;\n }\n el = el.parentElement;\n }\n return undefined;\n}\n","import { AXEvent } from '@acorex/cdk/common';\nimport type { AXValidationRuleResult } from '@acorex/core/validation';\nimport { computed, signal } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport interface AXUploaderChooseFilesResult {\n accepted: File[];\n rejected: { file: File; errors: AXValidationRuleResult[] }[];\n}\n\nexport interface AXUploaderFileChangeEvent {\n event: Event;\n files: File[];\n rejected?: { file: File; errors: AXValidationRuleResult[] }[];\n}\n\nexport type AXUploadStatus = 'new' | 'inprogress' | 'completed' | 'failed' | 'canceled';\n\nexport interface AXUploaderChangedEvent extends AXEvent {\n requests: AXUploadRequest[];\n}\n\nexport interface AXUploaderFileStartEvent extends AXEvent {\n uploadedFile: AXUploadRequest;\n}\nexport interface AXUploaderFileCompleteEvent extends AXEvent {\n uploadedFile: AXUploadRequest;\n}\n\nexport interface AXUploaderFilesCompleteEvent extends AXEvent {\n uploadedFiles: AXUploadRequest[];\n data?: any;\n}\n\nexport interface AXUploaderFileCancelEvent extends AXEvent {\n uploadedFile: AXUploadRequest;\n}\n\nexport class AXUploadRequest {\n get name(): string {\n return this.file.name;\n }\n\n get ext(): string {\n const parts = this.name.split('.');\n if (parts.length > 1) {\n return parts[parts.length - 1];\n } else {\n // No extension found\n return '';\n }\n }\n\n get size(): number {\n return this.file.size;\n }\n\n get file(): File {\n return this.uploadFile;\n }\n\n private readonly _progress = signal(0);\n progress = computed(() => this._progress());\n\n private readonly _estimateTime = signal(0);\n estimateTime = computed(() => this._estimateTime());\n\n private readonly _status = signal<AXUploadStatus>('new');\n status = computed(() => this._status());\n\n private readonly _message = signal<string | null>(null);\n message = computed(() => this._message());\n\n private readonly _isDetermined = signal<boolean>(false);\n isDetermined = computed(() => this._isDetermined());\n\n private startTime: number;\n private bytesTransferred = 0;\n\n public metaData: any;\n\n public onCancel = new Subject<void>();\n public onStart = new Subject<void>();\n public onFailed = new Subject<void>();\n public onComplete = new BehaviorSubject<void>(null);\n\n constructor(private uploadFile: File) {}\n\n private estimateTimeRemaining(bytesTransferred: number): number | null {\n const now = Date.now();\n const elapsed = now - this.startTime; // Time in milliseconds\n\n if (isNaN(elapsed) || elapsed === 0) {\n return null; // Avoid division by zero\n }\n\n const speed = (bytesTransferred || 1) / elapsed; // Bytes per millisecond\n const remainingBytes = this.size - bytesTransferred;\n const estimatedTime = Math.ceil(remainingBytes / speed); // Time in milliseconds\n return estimatedTime; // Return the estimated time in milliseconds\n }\n\n public setTransferredBytes(value: number) {\n this.bytesTransferred = value;\n if (value > 0 && !this._isDetermined() && (this.status() == 'new' || this.status() == 'inprogress')) {\n this._isDetermined.set(true);\n }\n this.updateEstimateTime();\n }\n\n private updateEstimateTime() {\n this._estimateTime.set(this.estimateTimeRemaining(this.bytesTransferred));\n const progress = Math.floor((this.bytesTransferred / this.size) * 100);\n this._progress.set(progress);\n }\n\n public async upload(): Promise<void> {\n this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this.onStart.next();\n }\n\n public cancel(): void {\n this._status.set('canceled');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this.onCancel.next();\n }\n\n public redo(): void {\n // this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this._message.set(null);\n this.onStart.next();\n }\n\n public error(message: string): void {\n this._status.set('failed');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this._message.set(message);\n this.onFailed.next();\n }\n\n public finish(data?: any): void {\n this._status.set('completed');\n this.bytesTransferred = this.size;\n this._estimateTime.set(0);\n this._progress.set(100);\n this.onComplete.next(data);\n }\n}\n","import { AXEvent } from '@acorex/cdk/common';\nimport { AXFileService } from '@acorex/core/file';\nimport type { AXValidationRuleResult } from '@acorex/core/validation';\nimport { Injectable, inject } from '@angular/core';\nimport { sumBy } from 'lodash-es';\nimport { BehaviorSubject, Subject, map } from 'rxjs';\nimport {\n AXUploadRequest,\n AXUploaderFileCancelEvent,\n AXUploaderFileCompleteEvent,\n AXUploaderFileStartEvent,\n AXUploaderFilesCompleteEvent,\n type AXUploaderChooseFilesResult,\n} from './uploader.models';\n\n/** Reference to stored file/media (url and/or mediaId). */\nexport interface AXUploadReference {\n url?: string;\n mediaId?: string;\n mimeType?: string;\n size?: number;\n expiresAt?: number;\n metadata?: Record<string, unknown>;\n}\n\nexport interface AXFileUploadOptions {\n source: File | Blob;\n fileName?: string;\n mimeType?: string;\n metadata?: Record<string, unknown>;\n onProgress?: (percent: number) => void;\n signal?: AbortSignal;\n}\n\nexport interface AXUploadResult {\n url: string;\n thumbnailUrl?: string;\n mediaId?: string;\n size: number;\n mimeType: string;\n metadata?: Record<string, unknown>;\n}\n\n/** Emitted when {@link AXUploaderService.upload} is called. */\nexport interface AXUploaderUploadEvent extends AXEvent {\n options: AXFileUploadOptions;\n resolve: (result: AXUploadResult) => void;\n reject: (reason: unknown) => void;\n}\n\n/** Emitted when {@link AXUploaderService.resolveUrl} is called. */\nexport interface AXUploaderResolveUrlEvent extends AXEvent {\n reference: AXUploadReference;\n signal?: AbortSignal;\n resolve: (url: string) => void;\n reject: (reason: unknown) => void;\n}\n\n/** Emitted when {@link AXUploaderService.deleteMedia} is called. */\nexport interface AXUploaderDeleteMediaEvent extends AXEvent {\n reference: AXUploadReference;\n resolve: () => void;\n reject: (reason: unknown) => void;\n}\n\nexport interface AXUploaderBrowseOptions {\n multiple?: boolean;\n accept?: string;\n /** Logical file type name(s) registered in {@link AXFileService}. */\n fileType?: string | string[];\n}\n\nexport interface AXUploaderAddOptions {\n fileType?: string | string[];\n}\n\n/**\n * File upload queue and validation via {@link AXFileService}.\n * Storage is implemented by subscribing to upload/resolve/delete events.\n * @category Services\n */\n@Injectable({ providedIn: 'root' })\nexport class AXUploaderService {\n private readonly fileService = inject(AXFileService);\n\n private readonly _files$ = new BehaviorSubject<AXUploadRequest[]>([]);\n\n public readonly files = this._files$.asObservable();\n\n public readonly onFileUploadStart = new Subject<AXUploaderFileStartEvent>();\n\n public readonly onFileUploadComplete = new Subject<AXUploaderFileCompleteEvent>();\n\n public readonly onFilesUploadComplete = new Subject<AXUploaderFilesCompleteEvent>();\n\n public readonly onFileUploadCanceled = new Subject<AXUploaderFileCancelEvent>();\n\n /** Subscribe to perform uploads (e.g. HTTP, IndexedDB). */\n public readonly onUpload = new Subject<AXUploaderUploadEvent>();\n\n /** Subscribe to resolve a stored reference to a playback URL. */\n public readonly onResolveUrl = new Subject<AXUploaderResolveUrlEvent>();\n\n /** Subscribe to delete stored media. */\n public readonly onDeleteMedia = new Subject<AXUploaderDeleteMediaEvent>();\n\n public readonly totalEstimateTime = this._files$.pipe(\n map((files) => sumBy(files, (file) => (file.status() === 'inprogress' ? file.estimateTime() : 0))),\n );\n\n isAnyDetermined(): boolean {\n return this._files$.value.some((file) => file.isDetermined());\n }\n\n validateFiles(\n files: File[],\n fileType: string,\n ): Promise<{ accepted: File[]; rejected: { file: File; errors: AXValidationRuleResult[] }[] }> {\n return this.fileService.validateMany(files, fileType);\n }\n\n async getAcceptAttribute(fileType: string | string[]): Promise<string> {\n return this.fileService.getAcceptAttribute(fileType);\n }\n\n upload(options: AXFileUploadOptions): Promise<AXUploadResult> {\n return new Promise<AXUploadResult>((resolve, reject) => {\n if (!this.hasUploadHandler()) {\n reject(\n new Error(\n 'No upload handler subscribed to AXUploaderService.onUpload. Provide a service that handles upload events.',\n ),\n );\n return;\n }\n this.onUpload.next({\n component: this,\n options,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n\n resolveUrl(reference: AXUploadReference, signal?: AbortSignal): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n if (!this.hasResolveUrlHandler()) {\n reject(\n new Error(\n 'No handler subscribed to AXUploaderService.onResolveUrl. Provide a service that handles resolve events.',\n ),\n );\n return;\n }\n this.onResolveUrl.next({\n component: this,\n reference,\n signal,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n\n async resolvePlaybackUrl(reference: AXUploadReference, signal?: AbortSignal): Promise<string> {\n const direct = reference.url?.trim();\n if (direct && !reference.mediaId) {\n return direct;\n }\n if (direct && reference.mediaId) {\n try {\n return await this.resolveUrl(reference, signal);\n } catch {\n return direct;\n }\n }\n if (reference.mediaId) {\n return this.resolveUrl(reference, signal);\n }\n if (direct) {\n return direct;\n }\n throw new Error('Upload reference has no url or mediaId');\n }\n\n deleteMedia(reference: AXUploadReference): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.hasDeleteMediaHandler()) {\n reject(\n new Error(\n 'No handler subscribed to AXUploaderService.onDeleteMedia. Provide a service that handles delete events.',\n ),\n );\n return;\n }\n this.onDeleteMedia.next({\n component: this,\n reference,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n\n private hasUploadHandler(): boolean {\n return this.onUpload.observers.length > 0;\n }\n\n private hasResolveUrlHandler(): boolean {\n return this.onResolveUrl.observers.length > 0;\n }\n\n private hasDeleteMediaHandler(): boolean {\n return this.onDeleteMedia.observers.length > 0;\n }\n\n async add(files: FileList | File[], options?: AXUploaderAddOptions): Promise<AXUploadRequest[]> {\n const list = Array.from(files).map((f) => new AXUploadRequest(f));\n await this.applyFileTypeValidation(list, options?.fileType);\n\n const newFiles = [...this._files$.value, ...list];\n this._files$.next(newFiles);\n void this.startUpload();\n return list;\n }\n\n /**\n * Opens the file dialog and returns selected files without enqueueing uploads.\n * With `fileType`, applies catalog validation; otherwise uses legacy accept-only selection.\n */\n async chooseFiles(options: AXUploaderBrowseOptions = {}): Promise<AXUploaderChooseFilesResult> {\n try {\n if (options.fileType) {\n const accept = options.accept ?? (await this.fileService.getAcceptAttribute(options.fileType));\n\n return this.fileService.chooseValidated({\n fileType: options.fileType,\n multiple: options.multiple ?? false,\n accept,\n });\n }\n\n const accepted = await this.fileService.choose({\n accept: options.accept,\n multiple: options.multiple ?? false,\n });\n\n return { accepted, rejected: [] };\n } catch (error) {\n console.error('File choose failed:', error);\n return { accepted: [], rejected: [] };\n }\n }\n\n async browse(options: AXUploaderBrowseOptions = { multiple: false }): Promise<AXUploadRequest[]> {\n const { accepted } = await this.chooseFiles(options);\n if (!accepted.length) {\n return [];\n }\n return this.add(accepted, { fileType: options.fileType });\n }\n\n async cancelAll(): Promise<void> {\n await Promise.all(this._files$.value.filter((c) => c.status() !== 'completed').map((c) => c.cancel()));\n }\n\n clearAll(): void {\n const remainingFiles = this._files$.value.filter((c) => c.status() === 'inprogress');\n this._files$.next(remainingFiles);\n }\n\n remove(item: AXUploadRequest): void {\n const updatedFiles = this._files$.value.filter((c) => c !== item);\n this._files$.next(updatedFiles);\n }\n\n private async startUpload(): Promise<void> {\n const newFiles = this._files$.value.filter((c) => c.status() === 'new');\n for (const file of newFiles) {\n await this.bindEvents(file);\n }\n }\n\n private async bindEvents(c: AXUploadRequest): Promise<void> {\n c.onStart.subscribe(() => {\n this.onFileUploadStart.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n\n c.onComplete.subscribe((data) => {\n Object.assign(c, { metaData: data });\n this.onFileUploadComplete.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n\n const isAllDone = this._files$.value.every(\n (f) => f.status() === 'completed' || f.status() === 'canceled' || f.status() === 'failed',\n );\n\n if (isAllDone) {\n this.onFilesUploadComplete.next({\n component: this,\n uploadedFiles: this._files$.value,\n isUserInteraction: false,\n });\n }\n });\n\n c.onCancel.subscribe(() => {\n this.onFileUploadCanceled.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n }\n\n private async applyFileTypeValidation(\n requests: AXUploadRequest[],\n fileType?: string | string[],\n ): Promise<AXUploadRequest[]> {\n if (!fileType) {\n return requests;\n }\n\n for (const request of requests) {\n const errors = await this.fileService.validate(request.file, fileType);\n if (errors.length > 0) {\n request.error(errors[0]?.message ?? 'Invalid file');\n }\n }\n\n return requests;\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectorRef,\n DOCUMENT,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n OnDestroy,\n PLATFORM_ID,\n TemplateRef,\n ViewContainerRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n AXUploaderChangedEvent,\n AXUploaderFileChangeEvent,\n AXUploaderFileCompleteEvent,\n AXUploaderFilesCompleteEvent,\n} from './uploader.models';\nimport { bindUploaderZoneHost, unbindUploaderZoneHost } from './uploader-zone-host';\nimport { AXUploaderService } from './uploader.service';\n\n/**\n * A directive that provides drag-and-drop and file upload functionality.\n * When applied to an element, it enables drag-and-drop file uploads and file browsing.\n * @category Directives\n */\n@Directive({\n selector: '[axUploaderZone]',\n providers: [AXUnsubscriber],\n host: {\n class: 'ax-drop-zone',\n },\n})\nexport class AXUploaderZoneDirective implements OnDestroy {\n /**\n * The element reference for the directive host.\n * @ignore\n */\n private elementRef = inject(ElementRef);\n\n /**\n * View container reference for rendering custom templates.\n * @ignore\n */\n private viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Whether multiple files can be selected.\n * @defaultValue true\n */\n multiple = input(true);\n\n /**\n * File types that are accepted for upload.\n * @defaultValue null\n */\n accept = input<string | null>(null);\n\n /**\n * Logical file type name from {@link AXFileService} (e.g. `conversation-image`).\n * Required for browse handles and validated selection.\n */\n fileType = input<string | null>(null);\n\n /**\n * Custom template for the drag overlay. If provided, this will be used instead of the default overlay.\n */\n overlayTemplate = input<TemplateRef<unknown>>();\n\n /**\n * Whether browsing files by clicking on the container is disabled.\n * @defaultValue false\n */\n disableBrowse = input(false);\n\n /**\n * Whether drag and drop functionality is disabled.\n * @defaultValue false\n */\n disableDragDrop = input(false);\n\n /**\n * Change detector reference.\n * @ignore\n */\n private cdr = inject(ChangeDetectorRef);\n\n /**\n * Document reference.\n * @ignore\n */\n private document = inject(DOCUMENT);\n\n /**\n * Platform ID for browser detection.\n * @ignore\n */\n private platformID = inject(PLATFORM_ID);\n\n /**\n * Upload service instance.\n * @ignore\n */\n private uploadService = inject(AXUploaderService);\n\n /**\n * Unsubscriber service instance.\n * @ignore\n */\n private unsubscriber = inject(AXUnsubscriber);\n\n /**\n * Translation service instance.\n * @ignore\n */\n private translateService = inject(AXTranslationService);\n\n /**\n * The host element.\n * @ignore\n */\n private element: HTMLElement;\n\n /**\n * Embedded view reference for custom template.\n * @ignore\n */\n private templateViewRef: EmbeddedViewRef<unknown> | null = null;\n\n /**\n * Emitted when files are selected or dropped (like HTML file input).\n * Emits an event with files property containing the selected files.\n */\n fileChange = output<AXUploaderFileChangeEvent>();\n\n /**\n * Emitted when files are changed (added, removed, etc.).\n * @deprecated Use fileChange instead for simpler file input-like behavior\n */\n onChanged = output<AXUploaderChangedEvent>();\n\n /**\n * Emitted on drag enter event.\n */\n dragEnter = output<DragEvent>();\n\n /**\n * Emitted on drag leave event.\n */\n dragLeave = output<DragEvent>();\n\n /**\n * Emitted on drag over event.\n */\n dragOver = output<DragEvent>();\n\n /**\n * Emitted when a single file upload is completed.\n */\n onFileUploadComplete = output<AXUploaderFileCompleteEvent>();\n\n /**\n * Emitted when all files upload is completed.\n */\n onFilesUploadComplete = output<AXUploaderFilesCompleteEvent>();\n\n /**\n * CSS class for the overlay state.\n * @ignore\n */\n stateClass = 'ax-uploader-overlay-state';\n\n /**\n * The overlay element for drag and drop visual feedback.\n * @ignore\n */\n overlayElement: HTMLDivElement | null = null;\n\n /**\n * Flag to track if dragOver has been emitted for the current drag session.\n * @ignore\n */\n private dragOverEmitted = signal(false);\n\n /**\n * Counter to track drag enter/leave depth to prevent false dragleave events.\n * When moving from parent to child, dragleave fires even though we're still inside.\n * @ignore\n */\n private dragDepth = signal(0);\n\n /**\n * Animation end handler for cleanup.\n * @ignore\n */\n private animationEndHandler: ((e: AnimationEvent) => void) | null = null;\n\n /**\n * Initializes the directive with event listeners and service subscriptions.\n */\n constructor() {\n this.element = this.elementRef.nativeElement as HTMLElement;\n this.element.style.position = 'relative';\n bindUploaderZoneHost(this.element, this);\n\n //\n this.uploadService.onFileUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFileUploadComplete.emit(c);\n });\n\n this.uploadService.onFilesUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFilesUploadComplete.emit(c);\n });\n //\n setTimeout(() => {\n const browseHandlers = this.element.querySelectorAll('[data-ax-uploader-browse-handle=\"true\"]');\n if (browseHandlers.length <= 0 && !this.disableBrowse()) {\n this.element.addEventListener('click', this.browser.bind(this), true);\n }\n });\n\n if (!this.disableDragDrop()) {\n this.element.addEventListener('dragenter', this.handleDragEnter.bind(this), true);\n this.element.addEventListener('dragover', this.handleDragOver.bind(this), true);\n this.element.addEventListener('drop', this.handleOnDrop.bind(this), true);\n this.element.addEventListener('dragleave', (e) => this.removeZone(e as DragEvent), true);\n }\n }\n\n /**\n * Cleans up event listeners when the directive is destroyed.\n */\n ngOnDestroy(): void {\n unbindUploaderZoneHost(this.element);\n this.element.removeEventListener('click', this.browser.bind(this));\n\n this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.removeEventListener('drop', this.handleOnDrop.bind(this));\n this.element.removeEventListener('dragover', this.handleDragOver.bind(this));\n this.element.removeEventListener('dragleave', this.removeZone.bind(this));\n }\n\n /**\n * Handles drag enter events to show the upload overlay.\n * @private\n */\n private async handleDragEnter(event: DragEvent) {\n if (this.disableDragDrop()) return;\n this.dragOverEmitted.set(false); // Reset flag when entering\n this.dragDepth.update((depth) => depth + 1); // Increment depth counter\n\n // Only create overlay on first enter (when depth is 1)\n if (this.dragDepth() === 1) {\n // Cancel any pending exit animation\n this.cancelExitAnimation();\n await this.createZone();\n this.dragEnter.emit(event);\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n /**\n * Handles drop events to process dropped files.\n * @private\n */\n private async handleOnDrop(event: DragEvent) {\n if (this.disableDragDrop()) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n\n // Reset drag depth on drop\n this.dragDepth.set(0);\n\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n let files = Array.from(event.dataTransfer.files);\n let rejected: AXUploaderFileChangeEvent['rejected'];\n const catalog = this.fileType();\n\n if (catalog) {\n const result = await this.uploadService.validateFiles(files, catalog);\n files = result.accepted;\n rejected = result.rejected;\n }\n\n this.fileChange.emit({ event, files, rejected });\n\n if (!this.disableBrowse()) {\n const requests = await this.uploadService.add(files, { fileType: catalog ?? undefined });\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n }\n\n this.removeZone();\n this.cdr.detectChanges();\n }\n\n /**\n * Handles drag over events to allow dropping.\n * @private\n */\n private handleDragOver(event: DragEvent) {\n if (this.disableDragDrop()) return;\n // Only emit dragOver once per drag session to avoid spam\n if (!this.dragOverEmitted()) {\n this.dragOverEmitted.set(true);\n this.dragOver.emit(event);\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n /**\n * Creates the visual overlay for drag and drop feedback.\n * @private\n */\n private async createZone() {\n if (isPlatformBrowser(this.platformID)) {\n // Check if overlay already exists (might be exiting)\n let existingOverlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n\n // Verify the overlay is actually in the DOM (not removed after animation)\n if (existingOverlay && existingOverlay.parentNode === this.element) {\n // Remove exiting class to cancel exit animation and show overlay again\n existingOverlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up any pending animation handler\n if (this.animationEndHandler) {\n existingOverlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n // Reset overlayElement reference if it was cleared\n if (!this.overlayElement && existingOverlay) {\n this.overlayElement = existingOverlay as HTMLDivElement;\n }\n return;\n } else if (existingOverlay && existingOverlay.parentNode !== this.element) {\n // Overlay exists but is not in the DOM, clear the reference\n this.overlayElement = null;\n existingOverlay = null;\n }\n\n // Check if custom template is provided\n const template = this.overlayTemplate();\n if (template) {\n // Create container for template\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n\n // Create embedded view from template (will be inserted at directive anchor)\n this.viewContainerRef.clear();\n this.templateViewRef = this.viewContainerRef.createEmbeddedView(template);\n this.templateViewRef.detectChanges();\n\n // Get root nodes and move them to overlay element\n const rootNodes = this.templateViewRef.rootNodes;\n for (const node of rootNodes) {\n // Remove from current location if it has a parent\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n this.overlayElement.appendChild(node);\n }\n\n // Detach the view since we've moved the nodes\n this.templateViewRef.detach();\n\n this.element.appendChild(this.overlayElement);\n this.cdr.detectChanges();\n return;\n }\n\n // Use default overlay\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n\n const icon: HTMLSpanElement = this.document.createElement('span');\n icon.classList.add('ax-icon', 'ax-icon-upload');\n\n const text = this.document.createElement('span');\n text.innerText = await this.translateService.translateAsync('@acorex:uploader.zone.text');\n\n this.overlayElement.appendChild(icon);\n this.overlayElement.appendChild(text);\n\n this.element.appendChild(this.overlayElement);\n }\n }\n\n /**\n * Cancels any pending exit animation and cleans up handlers.\n * @private\n */\n private cancelExitAnimation() {\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n\n if (overlay && this.animationEndHandler) {\n // Remove exiting class to cancel animation\n overlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up the handler\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n }\n }\n\n /**\n * Removes the visual overlay for drag and drop feedback.\n * @private\n */\n private removeZone(event?: DragEvent) {\n if (this.disableDragDrop()) return;\n this.dragDepth.update((depth) => Math.max(0, depth - 1)); // Decrement depth counter, ensure non-negative\n\n // Only remove overlay when we've truly left the drop zone (depth reaches 0)\n if (this.dragDepth() <= 0) {\n this.dragDepth.set(0); // Ensure it's exactly 0\n this.dragOverEmitted.set(false); // Reset flag when leaving\n\n if (event) {\n this.dragLeave.emit(event);\n }\n\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n\n if (overlay) {\n // Clean up any existing handler first\n if (this.animationEndHandler) {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n }\n\n // Add exiting class to trigger CSS animation\n overlay.classList.add('ax-uploader-overlay-exiting');\n\n // Wait for CSS animation to complete\n this.animationEndHandler = (e: AnimationEvent) => {\n if (e.target === overlay && e.animationName === 'fadeOutScale') {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n\n if (overlay.parentNode === this.element) {\n this.element.removeChild(overlay);\n }\n if (this.overlayElement && this.overlayElement.parentNode) {\n this.overlayElement.remove();\n }\n\n // Clear the overlay element reference\n this.overlayElement = null;\n\n // Remove custom template view if it exists\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n };\n\n overlay.addEventListener('animationend', this.animationEndHandler);\n } else {\n // If overlay doesn't exist, just clean up template view\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n }\n }\n }\n\n /**\n * Opens the file browser dialog and processes selected files.\n * @returns Promise that resolves when files are processed\n */\n public async browser(): Promise<void> {\n const catalog = this.fileType();\n let selected: File[] = [];\n let rejected: AXUploaderFileChangeEvent['rejected'];\n\n if (catalog) {\n const accept = this.accept() ?? (await this.uploadService.getAcceptAttribute(catalog));\n const result = await this.uploadService.chooseFiles({\n fileType: catalog,\n multiple: this.multiple(),\n accept,\n });\n selected = result.accepted;\n rejected = result.rejected;\n } else if (!this.disableBrowse()) {\n const requests = await this.uploadService.browse({\n accept: this.accept() ?? undefined,\n multiple: this.multiple(),\n });\n selected = requests.map((r) => r.file);\n } else {\n console.warn(\n 'AXUploaderZone.browser: fileType is required when disableBrowse is enabled (use axUploaderBrowseHandle).',\n );\n return;\n }\n\n if (selected.length === 0 && !(rejected?.length ?? 0)) {\n return;\n }\n\n const syntheticEvent = new Event('change');\n const target = Object.create(EventTarget.prototype) as EventTarget & { files: File[] };\n target.files = selected;\n Object.defineProperty(syntheticEvent, 'target', { value: target, writable: false });\n\n this.fileChange.emit({\n event: syntheticEvent,\n files: selected,\n rejected,\n });\n\n if (this.disableBrowse()) {\n return;\n }\n\n const requests = catalog\n ? await this.uploadService.add(selected, { fileType: catalog })\n : await this.uploadService.add(selected);\n\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, OnDestroy, OnInit, PLATFORM_ID, inject } from '@angular/core';\nimport { findUploaderZoneFromDom } from './uploader-zone-host';\nimport { AXUploaderZoneDirective } from './uploader-zone.directive';\n\n/**\n * Triggers the nearest {@link AXUploaderZoneDirective} file dialog on click.\n * Resolves the zone via DI when possible, otherwise walks the DOM (supports content projection).\n * @category Directives\n */\n@Directive({ selector: '[axUploaderBrowseHandle]' })\nexport class AXUploaderBrowseDirective implements OnInit, OnDestroy {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly platformID = inject(PLATFORM_ID);\n /** When browse + zone share the same host element. */\n private readonly zoneFromInjector = inject(AXUploaderZoneDirective, { optional: true, self: true });\n\n private readonly onClick = (): void => {\n void this.handleClick();\n };\n\n ngOnInit(): void {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const element = this.elementRef.nativeElement;\n element.addEventListener('click', this.onClick);\n if (element.dataset) {\n element.dataset['axUploaderBrowseHandle'] = 'true';\n } else {\n element.setAttribute('data-ax-uploader-browse-handle', 'true');\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformID)) {\n this.elementRef.nativeElement.removeEventListener('click', this.onClick);\n }\n }\n\n private resolveZone(): AXUploaderZoneDirective | undefined {\n return (\n this.zoneFromInjector ??\n findUploaderZoneFromDom(this.elementRef.nativeElement) ??\n undefined\n );\n }\n\n private async handleClick(): Promise<void> {\n const zone = this.resolveZone();\n if (!zone) {\n console.warn(\n '[axUploaderBrowseHandle] No axUploaderZone found. Place axUploaderBrowseHandle inside an axUploaderZone.',\n );\n return;\n }\n await zone.browser();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-uploader.mjs","sources":["../../../../packages/cdk/uploader/src/lib/uploader-zone-host.ts","../../../../packages/cdk/uploader/src/lib/uploader.models.ts","../../../../packages/cdk/uploader/src/lib/uploader.service.ts","../../../../packages/cdk/uploader/src/lib/uploader-zone.directive.ts","../../../../packages/cdk/uploader/src/lib/uploader-browse-handle.directive.ts","../../../../packages/cdk/uploader/src/acorex-cdk-uploader.ts"],"sourcesContent":["import type { AXUploaderZoneDirective } from './uploader-zone.directive';\n\n/** DOM marker so browse handles can find a zone across content projection. */\nexport const AX_UPLOADER_ZONE_HOST = Symbol('AX_UPLOADER_ZONE_HOST');\n\nexport type AXUploaderZoneHostElement = HTMLElement & {\n [AX_UPLOADER_ZONE_HOST]?: AXUploaderZoneDirective;\n};\n\nexport function bindUploaderZoneHost(element: HTMLElement, zone: AXUploaderZoneDirective): void {\n (element as AXUploaderZoneHostElement)[AX_UPLOADER_ZONE_HOST] = zone;\n}\n\nexport function unbindUploaderZoneHost(element: HTMLElement): void {\n delete (element as AXUploaderZoneHostElement)[AX_UPLOADER_ZONE_HOST];\n}\n\n/** Walk ancestors to resolve the zone (works with projected browse handles). */\nexport function findUploaderZoneFromDom(start: HTMLElement): AXUploaderZoneDirective | undefined {\n let el: HTMLElement | null = start;\n while (el) {\n const zone = (el as AXUploaderZoneHostElement)[AX_UPLOADER_ZONE_HOST];\n if (zone) {\n return zone;\n }\n el = el.parentElement;\n }\n return undefined;\n}\n","import { AXEvent } from '@acorex/cdk/common';\nimport type { AXValidationRuleResult } from '@acorex/core/validation';\nimport { computed, signal } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport interface AXUploaderChooseFilesResult {\n accepted: File[];\n rejected: { file: File; errors: AXValidationRuleResult[] }[];\n}\n\nexport interface AXUploaderFileChangeEvent {\n event: Event;\n files: File[];\n rejected?: { file: File; errors: AXValidationRuleResult[] }[];\n}\n\nexport type AXUploadStatus = 'new' | 'inprogress' | 'completed' | 'failed' | 'canceled';\n\nexport interface AXUploaderChangedEvent extends AXEvent {\n requests: AXUploadRequest[];\n}\n\nexport interface AXUploaderFileStartEvent extends AXEvent {\n uploadedFile: AXUploadRequest;\n}\nexport interface AXUploaderFileCompleteEvent extends AXEvent {\n uploadedFile: AXUploadRequest;\n}\n\nexport interface AXUploaderFilesCompleteEvent extends AXEvent {\n uploadedFiles: AXUploadRequest[];\n data?: any;\n}\n\nexport interface AXUploaderFileCancelEvent extends AXEvent {\n uploadedFile: AXUploadRequest;\n}\n\nexport class AXUploadRequest {\n get name(): string {\n return this.file.name;\n }\n\n get ext(): string {\n const parts = this.name.split('.');\n if (parts.length > 1) {\n return parts[parts.length - 1];\n } else {\n // No extension found\n return '';\n }\n }\n\n get size(): number {\n return this.file.size;\n }\n\n get file(): File {\n return this.uploadFile;\n }\n\n private readonly _progress = signal(0);\n progress = computed(() => this._progress());\n\n private readonly _estimateTime = signal(0);\n estimateTime = computed(() => this._estimateTime());\n\n private readonly _status = signal<AXUploadStatus>('new');\n status = computed(() => this._status());\n\n private readonly _message = signal<string | null>(null);\n message = computed(() => this._message());\n\n private readonly _isDetermined = signal<boolean>(false);\n isDetermined = computed(() => this._isDetermined());\n\n private startTime: number;\n private bytesTransferred = 0;\n\n public metaData: any;\n\n public onCancel = new Subject<void>();\n public onStart = new Subject<void>();\n public onFailed = new Subject<void>();\n public onComplete = new BehaviorSubject<void>(null);\n\n constructor(private uploadFile: File) {}\n\n private estimateTimeRemaining(bytesTransferred: number): number | null {\n const now = Date.now();\n const elapsed = now - this.startTime; // Time in milliseconds\n\n if (isNaN(elapsed) || elapsed === 0) {\n return null; // Avoid division by zero\n }\n\n const speed = (bytesTransferred || 1) / elapsed; // Bytes per millisecond\n const remainingBytes = this.size - bytesTransferred;\n const estimatedTime = Math.ceil(remainingBytes / speed); // Time in milliseconds\n return estimatedTime; // Return the estimated time in milliseconds\n }\n\n public setTransferredBytes(value: number) {\n this.bytesTransferred = value;\n if (value > 0 && !this._isDetermined() && (this.status() == 'new' || this.status() == 'inprogress')) {\n this._isDetermined.set(true);\n }\n this.updateEstimateTime();\n }\n\n private updateEstimateTime() {\n this._estimateTime.set(this.estimateTimeRemaining(this.bytesTransferred));\n const progress = Math.floor((this.bytesTransferred / this.size) * 100);\n this._progress.set(progress);\n }\n\n public async upload(): Promise<void> {\n this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this.onStart.next();\n }\n\n public cancel(): void {\n this._status.set('canceled');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this.onCancel.next();\n }\n\n public redo(): void {\n // this.startTime = Date.now();\n this._progress.set(0);\n this._status.set('inprogress');\n this._message.set(null);\n this.onStart.next();\n }\n\n public error(message: string): void {\n this._status.set('failed');\n this.bytesTransferred = 0;\n this._estimateTime.set(0);\n this._progress.set(0);\n this._message.set(message);\n this.onFailed.next();\n }\n\n public finish(data?: any): void {\n this._status.set('completed');\n this.bytesTransferred = this.size;\n this._estimateTime.set(0);\n this._progress.set(100);\n this.onComplete.next(data);\n }\n}\n","import { AXEvent } from '@acorex/cdk/common';\nimport { AXFileService } from '@acorex/core/file';\nimport type { AXValidationRuleResult } from '@acorex/core/validation';\nimport { Injectable, inject } from '@angular/core';\nimport { sumBy } from 'lodash-es';\nimport { BehaviorSubject, Subject, map } from 'rxjs';\nimport {\n AXUploadRequest,\n AXUploaderFileCancelEvent,\n AXUploaderFileCompleteEvent,\n AXUploaderFileStartEvent,\n AXUploaderFilesCompleteEvent,\n type AXUploaderChooseFilesResult,\n} from './uploader.models';\n\n/** Reference to stored file/media (url and/or mediaId). */\nexport interface AXUploadReference {\n url?: string;\n mediaId?: string;\n mimeType?: string;\n size?: number;\n expiresAt?: number;\n metadata?: Record<string, unknown>;\n}\n\nexport interface AXFileUploadOptions {\n source: File | Blob;\n fileName?: string;\n mimeType?: string;\n metadata?: Record<string, unknown>;\n onProgress?: (percent: number) => void;\n signal?: AbortSignal;\n}\n\nexport interface AXUploadResult {\n url: string;\n thumbnailUrl?: string;\n mediaId?: string;\n size: number;\n mimeType: string;\n metadata?: Record<string, unknown>;\n}\n\n/** Emitted when {@link AXUploaderService.upload} is called. */\nexport interface AXUploaderUploadEvent extends AXEvent {\n options: AXFileUploadOptions;\n resolve: (result: AXUploadResult) => void;\n reject: (reason: unknown) => void;\n}\n\n/** Emitted when {@link AXUploaderService.resolveUrl} is called. */\nexport interface AXUploaderResolveUrlEvent extends AXEvent {\n reference: AXUploadReference;\n signal?: AbortSignal;\n resolve: (url: string) => void;\n reject: (reason: unknown) => void;\n}\n\n/** Emitted when {@link AXUploaderService.deleteMedia} is called. */\nexport interface AXUploaderDeleteMediaEvent extends AXEvent {\n reference: AXUploadReference;\n resolve: () => void;\n reject: (reason: unknown) => void;\n}\n\nexport interface AXUploaderBrowseOptions {\n multiple?: boolean;\n accept?: string;\n /** Logical file type name(s) registered in {@link AXFileService}. */\n fileType?: string | string[];\n}\n\nexport interface AXUploaderAddOptions {\n fileType?: string | string[];\n}\n\n/**\n * File upload queue and validation via {@link AXFileService}.\n * Storage is implemented by subscribing to upload/resolve/delete events.\n * @category Services\n */\n@Injectable({ providedIn: 'root' })\nexport class AXUploaderService {\n private readonly fileService = inject(AXFileService);\n\n private readonly _files$ = new BehaviorSubject<AXUploadRequest[]>([]);\n\n public readonly files = this._files$.asObservable();\n\n public readonly onFileUploadStart = new Subject<AXUploaderFileStartEvent>();\n\n public readonly onFileUploadComplete = new Subject<AXUploaderFileCompleteEvent>();\n\n public readonly onFilesUploadComplete = new Subject<AXUploaderFilesCompleteEvent>();\n\n public readonly onFileUploadCanceled = new Subject<AXUploaderFileCancelEvent>();\n\n /** Subscribe to perform uploads (e.g. HTTP, IndexedDB). */\n public readonly onUpload = new Subject<AXUploaderUploadEvent>();\n\n /** Subscribe to resolve a stored reference to a playback URL. */\n public readonly onResolveUrl = new Subject<AXUploaderResolveUrlEvent>();\n\n /** Subscribe to delete stored media. */\n public readonly onDeleteMedia = new Subject<AXUploaderDeleteMediaEvent>();\n\n public readonly totalEstimateTime = this._files$.pipe(\n map((files) => sumBy(files, (file) => (file.status() === 'inprogress' ? file.estimateTime() : 0))),\n );\n\n isAnyDetermined(): boolean {\n return this._files$.value.some((file) => file.isDetermined());\n }\n\n validateFiles(\n files: File[],\n fileType: string,\n ): Promise<{ accepted: File[]; rejected: { file: File; errors: AXValidationRuleResult[] }[] }> {\n return this.fileService.validateMany(files, fileType);\n }\n\n async getAcceptAttribute(fileType: string | string[]): Promise<string> {\n return this.fileService.getAcceptAttribute(fileType);\n }\n\n upload(options: AXFileUploadOptions): Promise<AXUploadResult> {\n return new Promise<AXUploadResult>((resolve, reject) => {\n if (!this.hasUploadHandler()) {\n reject(\n new Error(\n 'No upload handler subscribed to AXUploaderService.onUpload. Provide a service that handles upload events.',\n ),\n );\n return;\n }\n this.onUpload.next({\n component: this,\n options,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n\n resolveUrl(reference: AXUploadReference, signal?: AbortSignal): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n if (!this.hasResolveUrlHandler()) {\n reject(\n new Error(\n 'No handler subscribed to AXUploaderService.onResolveUrl. Provide a service that handles resolve events.',\n ),\n );\n return;\n }\n this.onResolveUrl.next({\n component: this,\n reference,\n signal,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n\n async resolvePlaybackUrl(reference: AXUploadReference, signal?: AbortSignal): Promise<string> {\n const direct = reference.url?.trim();\n if (direct && !reference.mediaId) {\n return direct;\n }\n if (direct && reference.mediaId) {\n try {\n return await this.resolveUrl(reference, signal);\n } catch {\n return direct;\n }\n }\n if (reference.mediaId) {\n return this.resolveUrl(reference, signal);\n }\n if (direct) {\n return direct;\n }\n throw new Error('Upload reference has no url or mediaId');\n }\n\n deleteMedia(reference: AXUploadReference): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.hasDeleteMediaHandler()) {\n reject(\n new Error(\n 'No handler subscribed to AXUploaderService.onDeleteMedia. Provide a service that handles delete events.',\n ),\n );\n return;\n }\n this.onDeleteMedia.next({\n component: this,\n reference,\n resolve,\n reject,\n isUserInteraction: false,\n });\n });\n }\n\n private hasUploadHandler(): boolean {\n return this.onUpload.observers.length > 0;\n }\n\n private hasResolveUrlHandler(): boolean {\n return this.onResolveUrl.observers.length > 0;\n }\n\n private hasDeleteMediaHandler(): boolean {\n return this.onDeleteMedia.observers.length > 0;\n }\n\n async add(files: FileList | File[], options?: AXUploaderAddOptions): Promise<AXUploadRequest[]> {\n const list = Array.from(files).map((f) => new AXUploadRequest(f));\n await this.applyFileTypeValidation(list, options?.fileType);\n\n const newFiles = [...this._files$.value, ...list];\n this._files$.next(newFiles);\n void this.startUpload();\n return list;\n }\n\n /**\n * Opens the file dialog and returns selected files without enqueueing uploads.\n * With `fileType`, applies catalog validation; otherwise uses legacy accept-only selection.\n */\n async chooseFiles(options: AXUploaderBrowseOptions = {}): Promise<AXUploaderChooseFilesResult> {\n try {\n if (options.fileType) {\n const accept = options.accept ?? (await this.fileService.getAcceptAttribute(options.fileType));\n\n return this.fileService.chooseValidated({\n fileType: options.fileType,\n multiple: options.multiple ?? false,\n accept,\n });\n }\n\n const accepted = await this.fileService.choose({\n accept: options.accept,\n multiple: options.multiple ?? false,\n });\n\n return { accepted, rejected: [] };\n } catch (error) {\n console.error('File choose failed:', error);\n return { accepted: [], rejected: [] };\n }\n }\n\n async browse(options: AXUploaderBrowseOptions = { multiple: false }): Promise<AXUploadRequest[]> {\n const { accepted } = await this.chooseFiles(options);\n if (!accepted.length) {\n return [];\n }\n return this.add(accepted, { fileType: options.fileType });\n }\n\n async cancelAll(): Promise<void> {\n await Promise.all(this._files$.value.filter((c) => c.status() !== 'completed').map((c) => c.cancel()));\n }\n\n clearAll(): void {\n const remainingFiles = this._files$.value.filter((c) => c.status() === 'inprogress');\n this._files$.next(remainingFiles);\n }\n\n remove(item: AXUploadRequest): void {\n const updatedFiles = this._files$.value.filter((c) => c !== item);\n this._files$.next(updatedFiles);\n }\n\n private async startUpload(): Promise<void> {\n const newFiles = this._files$.value.filter((c) => c.status() === 'new');\n for (const file of newFiles) {\n await this.bindEvents(file);\n }\n }\n\n private async bindEvents(c: AXUploadRequest): Promise<void> {\n c.onStart.subscribe(() => {\n this.onFileUploadStart.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n\n c.onComplete.subscribe((data) => {\n Object.assign(c, { metaData: data });\n this.onFileUploadComplete.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n\n const isAllDone = this._files$.value.every(\n (f) => f.status() === 'completed' || f.status() === 'canceled' || f.status() === 'failed',\n );\n\n if (isAllDone) {\n this.onFilesUploadComplete.next({\n component: this,\n uploadedFiles: this._files$.value,\n isUserInteraction: false,\n });\n }\n });\n\n c.onCancel.subscribe(() => {\n this.onFileUploadCanceled.next({\n component: this,\n uploadedFile: c,\n isUserInteraction: false,\n });\n });\n }\n\n private async applyFileTypeValidation(\n requests: AXUploadRequest[],\n fileType?: string | string[],\n ): Promise<AXUploadRequest[]> {\n if (!fileType) {\n return requests;\n }\n\n for (const request of requests) {\n const errors = await this.fileService.validate(request.file, fileType);\n if (errors.length > 0) {\n request.error(errors[0]?.message ?? 'Invalid file');\n }\n }\n\n return requests;\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectorRef,\n DOCUMENT,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n OnDestroy,\n PLATFORM_ID,\n TemplateRef,\n ViewContainerRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n AXUploaderChangedEvent,\n AXUploaderFileChangeEvent,\n AXUploaderFileCompleteEvent,\n AXUploaderFilesCompleteEvent,\n} from './uploader.models';\nimport { bindUploaderZoneHost, unbindUploaderZoneHost } from './uploader-zone-host';\nimport { AXUploaderService } from './uploader.service';\n\n/**\n * A directive that provides drag-and-drop and file upload functionality.\n * When applied to an element, it enables drag-and-drop file uploads and file browsing.\n * @category Directives\n */\n@Directive({\n selector: '[axUploaderZone]',\n providers: [AXUnsubscriber],\n host: {\n class: 'ax-drop-zone',\n },\n})\nexport class AXUploaderZoneDirective implements OnDestroy {\n /**\n * The element reference for the directive host.\n * @ignore\n */\n private elementRef = inject(ElementRef);\n\n /**\n * View container reference for rendering custom templates.\n * @ignore\n */\n private viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Whether multiple files can be selected.\n * @defaultValue true\n */\n multiple = input(true);\n\n /**\n * File types that are accepted for upload.\n * @defaultValue null\n */\n accept = input<string | null>(null);\n\n /**\n * Logical file type name from {@link AXFileService} (e.g. `conversation-image`).\n * Required for browse handles and validated selection.\n */\n fileType = input<string | null>(null);\n\n /**\n * Custom template for the drag overlay. If provided, this will be used instead of the default overlay.\n */\n overlayTemplate = input<TemplateRef<unknown>>();\n\n /**\n * Whether browsing files by clicking on the container is disabled.\n * @defaultValue false\n */\n disableBrowse = input(false);\n\n /**\n * Whether drag and drop functionality is disabled.\n * @defaultValue false\n */\n disableDragDrop = input(false);\n\n /**\n * Change detector reference.\n * @ignore\n */\n private cdr = inject(ChangeDetectorRef);\n\n /**\n * Document reference.\n * @ignore\n */\n private document = inject(DOCUMENT);\n\n /**\n * Platform ID for browser detection.\n * @ignore\n */\n private platformID = inject(PLATFORM_ID);\n\n /**\n * Upload service instance.\n * @ignore\n */\n private uploadService = inject(AXUploaderService);\n\n /**\n * Unsubscriber service instance.\n * @ignore\n */\n private unsubscriber = inject(AXUnsubscriber);\n\n /**\n * Translation service instance.\n * @ignore\n */\n private translateService = inject(AXTranslationService);\n\n /**\n * The host element.\n * @ignore\n */\n private element: HTMLElement;\n\n /**\n * Embedded view reference for custom template.\n * @ignore\n */\n private templateViewRef: EmbeddedViewRef<unknown> | null = null;\n\n /**\n * Emitted when files are selected or dropped (like HTML file input).\n * Emits an event with files property containing the selected files.\n */\n fileChange = output<AXUploaderFileChangeEvent>();\n\n /**\n * Emitted when files are changed (added, removed, etc.).\n * @deprecated Use fileChange instead for simpler file input-like behavior\n */\n onChanged = output<AXUploaderChangedEvent>();\n\n /**\n * Emitted on drag enter event.\n */\n dragEnter = output<DragEvent>();\n\n /**\n * Emitted on drag leave event.\n */\n dragLeave = output<DragEvent>();\n\n /**\n * Emitted on drag over event.\n */\n dragOver = output<DragEvent>();\n\n /**\n * Emitted when a single file upload is completed.\n */\n onFileUploadComplete = output<AXUploaderFileCompleteEvent>();\n\n /**\n * Emitted when all files upload is completed.\n */\n onFilesUploadComplete = output<AXUploaderFilesCompleteEvent>();\n\n /**\n * CSS class for the overlay state.\n * @ignore\n */\n stateClass = 'ax-uploader-overlay-state';\n\n /**\n * The overlay element for drag and drop visual feedback.\n * @ignore\n */\n overlayElement: HTMLDivElement | null = null;\n\n /**\n * Flag to track if dragOver has been emitted for the current drag session.\n * @ignore\n */\n private dragOverEmitted = signal(false);\n\n /**\n * Counter to track drag enter/leave depth to prevent false dragleave events.\n * When moving from parent to child, dragleave fires even though we're still inside.\n * @ignore\n */\n private dragDepth = signal(0);\n\n /**\n * Animation end handler for cleanup.\n * @ignore\n */\n private animationEndHandler: ((e: AnimationEvent) => void) | null = null;\n\n /**\n * Initializes the directive with event listeners and service subscriptions.\n */\n constructor() {\n this.element = this.elementRef.nativeElement as HTMLElement;\n this.element.style.position = 'relative';\n bindUploaderZoneHost(this.element, this);\n\n //\n this.uploadService.onFileUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFileUploadComplete.emit(c);\n });\n\n this.uploadService.onFilesUploadComplete.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onFilesUploadComplete.emit(c);\n });\n //\n setTimeout(() => {\n const browseHandlers = this.element.querySelectorAll('[data-ax-uploader-browse-handle=\"true\"]');\n if (browseHandlers.length <= 0 && !this.disableBrowse()) {\n this.element.addEventListener('click', this.browser.bind(this), true);\n }\n });\n\n if (!this.disableDragDrop()) {\n this.element.addEventListener('dragenter', this.handleDragEnter.bind(this), true);\n this.element.addEventListener('dragover', this.handleDragOver.bind(this), true);\n this.element.addEventListener('drop', this.handleOnDrop.bind(this), true);\n this.element.addEventListener('dragleave', (e) => this.removeZone(e as DragEvent), true);\n }\n }\n\n /**\n * Cleans up event listeners when the directive is destroyed.\n */\n ngOnDestroy(): void {\n unbindUploaderZoneHost(this.element);\n this.element.removeEventListener('click', this.browser.bind(this));\n\n this.element.removeEventListener('dragenter', this.handleDragEnter.bind(this));\n this.element.removeEventListener('drop', this.handleOnDrop.bind(this));\n this.element.removeEventListener('dragover', this.handleDragOver.bind(this));\n this.element.removeEventListener('dragleave', this.removeZone.bind(this));\n }\n\n /**\n * Handles drag enter events to show the upload overlay.\n * @private\n */\n private async handleDragEnter(event: DragEvent) {\n if (this.disableDragDrop()) return;\n this.dragOverEmitted.set(false); // Reset flag when entering\n this.dragDepth.update((depth) => depth + 1); // Increment depth counter\n\n // Only create overlay on first enter (when depth is 1)\n if (this.dragDepth() === 1) {\n // Cancel any pending exit animation\n this.cancelExitAnimation();\n await this.createZone();\n this.dragEnter.emit(event);\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n /**\n * Handles drop events to process dropped files.\n * @private\n */\n private async handleOnDrop(event: DragEvent) {\n if (this.disableDragDrop()) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n\n // Reset drag depth on drop\n this.dragDepth.set(0);\n\n if (event.dataTransfer?.files && event.dataTransfer.files.length > 0) {\n let files = Array.from(event.dataTransfer.files);\n let rejected: AXUploaderFileChangeEvent['rejected'];\n const catalog = this.fileType();\n\n if (catalog) {\n const result = await this.uploadService.validateFiles(files, catalog);\n files = result.accepted;\n rejected = result.rejected;\n }\n\n this.fileChange.emit({ event, files, rejected });\n\n if (!this.disableBrowse()) {\n const requests = await this.uploadService.add(files, { fileType: catalog ?? undefined });\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n }\n\n this.removeZone();\n this.cdr.detectChanges();\n }\n\n /**\n * Handles drag over events to allow dropping.\n * @private\n */\n private handleDragOver(event: DragEvent) {\n if (this.disableDragDrop()) return;\n // Only emit dragOver once per drag session to avoid spam\n if (!this.dragOverEmitted()) {\n this.dragOverEmitted.set(true);\n this.dragOver.emit(event);\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n /**\n * Creates the visual overlay for drag and drop feedback.\n * @private\n */\n private async createZone() {\n if (isPlatformBrowser(this.platformID)) {\n // Check if overlay already exists (might be exiting)\n let existingOverlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n\n // Verify the overlay is actually in the DOM (not removed after animation)\n if (existingOverlay && existingOverlay.parentNode === this.element) {\n // Remove exiting class to cancel exit animation and show overlay again\n existingOverlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up any pending animation handler\n if (this.animationEndHandler) {\n existingOverlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n // Reset overlayElement reference if it was cleared\n if (!this.overlayElement && existingOverlay) {\n this.overlayElement = existingOverlay as HTMLDivElement;\n }\n return;\n } else if (existingOverlay && existingOverlay.parentNode !== this.element) {\n // Overlay exists but is not in the DOM, clear the reference\n this.overlayElement = null;\n existingOverlay = null;\n }\n\n // Check if custom template is provided\n const template = this.overlayTemplate();\n if (template) {\n // Create container for template\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n\n // Create embedded view from template (will be inserted at directive anchor)\n this.viewContainerRef.clear();\n this.templateViewRef = this.viewContainerRef.createEmbeddedView(template);\n this.templateViewRef.detectChanges();\n\n // Get root nodes and move them to overlay element\n const rootNodes = this.templateViewRef.rootNodes;\n for (const node of rootNodes) {\n // Remove from current location if it has a parent\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n this.overlayElement.appendChild(node);\n }\n\n // Detach the view since we've moved the nodes\n this.templateViewRef.detach();\n\n this.element.appendChild(this.overlayElement);\n this.cdr.detectChanges();\n return;\n }\n\n // Use default overlay\n this.overlayElement = this.document.createElement('div');\n this.overlayElement.classList.add('ax-uploader-overlay-state', '-ax-z-1');\n this.overlayElement.id = 'ax-uploader-overlay-state';\n\n const icon: HTMLSpanElement = this.document.createElement('span');\n icon.classList.add('ax-icon', 'ax-icon-upload');\n\n const text = this.document.createElement('span');\n text.innerText = await this.translateService.translateAsync('@acorex:uploader.zone.text');\n\n this.overlayElement.appendChild(icon);\n this.overlayElement.appendChild(text);\n\n this.element.appendChild(this.overlayElement);\n }\n }\n\n /**\n * Cancels any pending exit animation and cleans up handlers.\n * @private\n */\n private cancelExitAnimation() {\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n\n if (overlay && this.animationEndHandler) {\n // Remove exiting class to cancel animation\n overlay.classList.remove('ax-uploader-overlay-exiting');\n // Clean up the handler\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n }\n }\n }\n\n /**\n * Removes the visual overlay for drag and drop feedback.\n * @private\n */\n private removeZone(event?: DragEvent) {\n if (this.disableDragDrop()) return;\n this.dragDepth.update((depth) => Math.max(0, depth - 1)); // Decrement depth counter, ensure non-negative\n\n // Only remove overlay when we've truly left the drop zone (depth reaches 0)\n if (this.dragDepth() <= 0) {\n this.dragDepth.set(0); // Ensure it's exactly 0\n this.dragOverEmitted.set(false); // Reset flag when leaving\n\n if (event) {\n this.dragLeave.emit(event);\n }\n\n if (isPlatformBrowser(this.platformID)) {\n const overlay = this.document.getElementById('ax-uploader-overlay-state') || this.overlayElement;\n\n if (overlay) {\n // Clean up any existing handler first\n if (this.animationEndHandler) {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n }\n\n // Add exiting class to trigger CSS animation\n overlay.classList.add('ax-uploader-overlay-exiting');\n\n // Wait for CSS animation to complete\n this.animationEndHandler = (e: AnimationEvent) => {\n if (e.target === overlay && e.animationName === 'fadeOutScale') {\n overlay.removeEventListener('animationend', this.animationEndHandler);\n this.animationEndHandler = null;\n\n if (overlay.parentNode === this.element) {\n this.element.removeChild(overlay);\n }\n if (this.overlayElement && this.overlayElement.parentNode) {\n this.overlayElement.remove();\n }\n\n // Clear the overlay element reference\n this.overlayElement = null;\n\n // Remove custom template view if it exists\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n };\n\n overlay.addEventListener('animationend', this.animationEndHandler);\n } else {\n // If overlay doesn't exist, just clean up template view\n if (this.templateViewRef) {\n this.viewContainerRef.clear();\n this.templateViewRef = null;\n }\n }\n }\n }\n }\n\n /**\n * Opens the file browser dialog and processes selected files.\n * @returns Promise that resolves when files are processed\n */\n public async browser(): Promise<void> {\n const catalog = this.fileType();\n let selected: File[] = [];\n let rejected: AXUploaderFileChangeEvent['rejected'];\n\n if (catalog) {\n const accept = this.accept() ?? (await this.uploadService.getAcceptAttribute(catalog));\n const result = await this.uploadService.chooseFiles({\n fileType: catalog,\n multiple: this.multiple(),\n accept,\n });\n selected = result.accepted;\n rejected = result.rejected;\n } else if (!this.disableBrowse()) {\n const requests = await this.uploadService.browse({\n accept: this.accept() ?? undefined,\n multiple: this.multiple(),\n });\n selected = requests.map((r) => r.file);\n } else {\n console.warn(\n 'AXUploaderZone.browser: fileType is required when disableBrowse is enabled (use axUploaderBrowseHandle).',\n );\n return;\n }\n\n if (selected.length === 0 && !(rejected?.length ?? 0)) {\n return;\n }\n\n const syntheticEvent = new Event('change');\n const target = Object.create(EventTarget.prototype) as EventTarget & { files: File[] };\n target.files = selected;\n Object.defineProperty(syntheticEvent, 'target', { value: target, writable: false });\n\n this.fileChange.emit({\n event: syntheticEvent,\n files: selected,\n rejected,\n });\n\n if (this.disableBrowse()) {\n return;\n }\n\n const requests = catalog\n ? await this.uploadService.add(selected, { fileType: catalog })\n : await this.uploadService.add(selected);\n\n if (requests.length > 0) {\n this.onChanged.emit({\n component: this,\n requests,\n isUserInteraction: true,\n });\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, OnDestroy, OnInit, PLATFORM_ID, inject } from '@angular/core';\nimport { findUploaderZoneFromDom } from './uploader-zone-host';\nimport { AXUploaderZoneDirective } from './uploader-zone.directive';\n\n/**\n * Triggers the nearest {@link AXUploaderZoneDirective} file dialog on click.\n * Resolves the zone via DI when possible, otherwise walks the DOM (supports content projection).\n * @category Directives\n */\n@Directive({ selector: '[axUploaderBrowseHandle]' })\nexport class AXUploaderBrowseDirective implements OnInit, OnDestroy {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly platformID = inject(PLATFORM_ID);\n /** When browse + zone share the same host element. */\n private readonly zoneFromInjector = inject(AXUploaderZoneDirective, { optional: true, self: true });\n\n private readonly onClick = (): void => {\n void this.handleClick();\n };\n\n ngOnInit(): void {\n if (!isPlatformBrowser(this.platformID)) {\n return;\n }\n const element = this.elementRef.nativeElement;\n element.addEventListener('click', this.onClick);\n if (element.dataset) {\n element.dataset['axUploaderBrowseHandle'] = 'true';\n } else {\n element.setAttribute('data-ax-uploader-browse-handle', 'true');\n }\n }\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformID)) {\n this.elementRef.nativeElement.removeEventListener('click', this.onClick);\n }\n }\n\n private resolveZone(): AXUploaderZoneDirective | undefined {\n return (\n this.zoneFromInjector ??\n findUploaderZoneFromDom(this.elementRef.nativeElement) ??\n undefined\n );\n }\n\n private async handleClick(): Promise<void> {\n const zone = this.resolveZone();\n if (!zone) {\n console.warn(\n '[axUploaderBrowseHandle] No axUploaderZone found. Place axUploaderBrowseHandle inside an axUploaderZone.',\n );\n return;\n }\n await zone.browser();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-virtual-scroll.mjs","sources":["../../../../packages/cdk/virtual-scroll/src/lib/virtual-scrolling-item/virtual-scrolling-item.directive.ts","../../../../packages/cdk/virtual-scroll/src/lib/virtual-scrolling-contianer/virtual-scrolling-contianer.directive.ts","../../../../packages/cdk/virtual-scroll/src/lib/virtual-scroll.module.ts","../../../../packages/cdk/virtual-scroll/src/acorex-cdk-virtual-scroll.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({ selector: '[axVirtualScrollingItem]' })\nexport class AXVirtualScrollingItemDirective {\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n public get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n afterNextRender,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { AXVirtualScrollingItemDirective } from '../virtual-scrolling-item/virtual-scrolling-item.directive';\n\n@Directive({ selector: '[axVirtualScrollingContainer]' })\nexport class AXVirtualScrollingContainerDirective {\n height = input.required<string>();\n\n /** @ignore */\n protected observer = new IntersectionObserver(this.callBack.bind(this));\n\n ScrollEnd = output();\n\n /** @ignore */\n loading = false;\n\n container = inject(ElementRef);\n\n /** @ignore */\n protected children = contentChildren(AXVirtualScrollingItemDirective);\n\n /** @ignore */\n protected firstCall = signal(false);\n\n /** @ignore */\n protected lastChildElem = computed<Element | null>(() => {\n return this.children()[0]?.nativeElement;\n });\n\n /** @ignore */\n protected firstChildElem = computed<Element | null>(() => {\n return this.children()[this.children().length - 1]?.nativeElement;\n });\n\n /** @ignore */\n #eff2 = effect(() => {\n if (this.lastChildElem()) {\n this.observer.observe(this.lastChildElem());\n }\n });\n\n /** @ignore */\n #eff3 = effect(() => {\n if (this.firstChildElem() && !this.loading) {\n setTimeout(() => {\n this.container.nativeElement.scrollTo({\n top: this.container.nativeElement.scrollHeight,\n behavior: 'instant',\n });\n });\n }\n });\n\n #init = afterNextRender(() => {\n (this.container.nativeElement as HTMLElement).style.overflowY = 'auto';\n (this.container.nativeElement as HTMLElement).style.display = 'block';\n });\n\n /** @ignore */\n protected callBack(entries: IntersectionObserverEntry[]) {\n if (entries[0].isIntersecting && this.firstCall()) {\n this.ScrollEnd.emit();\n this.loading = true;\n }\n this.loading = false;\n this.firstCall.set(true);\n }\n\n @HostBinding('style.height')\n get __hostClass(): string {\n return `${this.height()}`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXVirtualScrollingContainerDirective } from './virtual-scrolling-contianer/virtual-scrolling-contianer.directive';\nimport { AXVirtualScrollingItemDirective } from './virtual-scrolling-item/virtual-scrolling-item.directive';\n\nconst COMPONENT = [AXVirtualScrollingContainerDirective, AXVirtualScrollingItemDirective];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXVirtualScrollModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"acorex-cdk-virtual-scroll.mjs","sources":["../../../../packages/cdk/virtual-scroll/src/lib/virtual-scrolling-item/virtual-scrolling-item.directive.ts","../../../../packages/cdk/virtual-scroll/src/lib/virtual-scrolling-contianer/virtual-scrolling-contianer.directive.ts","../../../../packages/cdk/virtual-scroll/src/lib/virtual-scroll.module.ts","../../../../packages/cdk/virtual-scroll/src/acorex-cdk-virtual-scroll.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({ selector: '[axVirtualScrollingItem]' })\nexport class AXVirtualScrollingItemDirective {\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n public get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n afterNextRender,\n computed,\n contentChildren,\n Directive,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { AXVirtualScrollingItemDirective } from '../virtual-scrolling-item/virtual-scrolling-item.directive';\n\n@Directive({ selector: '[axVirtualScrollingContainer]' })\nexport class AXVirtualScrollingContainerDirective {\n height = input.required<string>();\n\n /** @ignore */\n protected observer = new IntersectionObserver(this.callBack.bind(this));\n\n ScrollEnd = output();\n\n /** @ignore */\n loading = false;\n\n container = inject(ElementRef);\n\n /** @ignore */\n protected children = contentChildren(AXVirtualScrollingItemDirective);\n\n /** @ignore */\n protected firstCall = signal(false);\n\n /** @ignore */\n protected lastChildElem = computed<Element | null>(() => {\n return this.children()[0]?.nativeElement;\n });\n\n /** @ignore */\n protected firstChildElem = computed<Element | null>(() => {\n return this.children()[this.children().length - 1]?.nativeElement;\n });\n\n /** @ignore */\n #eff2 = effect(() => {\n if (this.lastChildElem()) {\n this.observer.observe(this.lastChildElem());\n }\n });\n\n /** @ignore */\n #eff3 = effect(() => {\n if (this.firstChildElem() && !this.loading) {\n setTimeout(() => {\n this.container.nativeElement.scrollTo({\n top: this.container.nativeElement.scrollHeight,\n behavior: 'instant',\n });\n });\n }\n });\n\n #init = afterNextRender(() => {\n (this.container.nativeElement as HTMLElement).style.overflowY = 'auto';\n (this.container.nativeElement as HTMLElement).style.display = 'block';\n });\n\n /** @ignore */\n protected callBack(entries: IntersectionObserverEntry[]) {\n if (entries[0].isIntersecting && this.firstCall()) {\n this.ScrollEnd.emit();\n this.loading = true;\n }\n this.loading = false;\n this.firstCall.set(true);\n }\n\n @HostBinding('style.height')\n get __hostClass(): string {\n return `${this.height()}`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXVirtualScrollingContainerDirective } from './virtual-scrolling-contianer/virtual-scrolling-contianer.directive';\nimport { AXVirtualScrollingItemDirective } from './virtual-scrolling-item/virtual-scrolling-item.directive';\n\nconst COMPONENT = [AXVirtualScrollingContainerDirective, AXVirtualScrollingItemDirective];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXVirtualScrollModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-wysiwyg.mjs","sources":["../../../../packages/cdk/wysiwyg/src/wysiwyg.class.ts","../../../../packages/cdk/wysiwyg/src/acorex-cdk-wysiwyg.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID, signal } from '@angular/core';\nimport type Quill from 'quill/quill.d.ts';\nimport type { QuillOptions, Range } from 'quill/quill.d.ts';\n\nexport type Wysiwyg = Quill;\nexport type WysiwygOptions = QuillOptions;\n\nexport class AXWysiwyg {\n quillObj = signal<Wysiwyg | null>(null);\n\n private platformId = inject(PLATFORM_ID);\n\n async init(container: HTMLElement | string, option?: WysiwygOptions) {\n if (!isPlatformBrowser(this.platformId)) return;\n await import('quill').then((e) => {\n const wysiwygObject = new e.default(container, option);\n this.quillObj.set(wysiwygObject);\n });\n }\n\n bold(value: boolean) {\n this.quillObj().format('bold', value);\n }\n\n italic(value: boolean) {\n this.quillObj().format('italic', value);\n }\n\n underLine(value: boolean) {\n this.quillObj().format('underline', value);\n }\n\n strike(value: boolean) {\n this.quillObj().format('strike', value);\n }\n\n color(value: string) {\n this.quillObj().format('color', value);\n }\n\n header(value: number) {\n this.quillObj().format('header', value);\n }\n\n list(value: 'ordered' | 'bullet' | '') {\n this.quillObj().format('list', value);\n }\n\n align(value: 'center' | 'right' | 'left' | 'justify') {\n if (value === 'left') {\n this.quillObj().format('align', '');\n } else {\n this.quillObj().format('align', value);\n }\n }\n\n direction(value: 'rtl' | 'ltr') {\n this.quillObj().format('direction', value);\n }\n\n fontSize(value: 'small' | false | 'large' | 'huge', range: Range) {\n this.quillObj().formatText(range.index, range.length, 'size', value);\n }\n\n get HTMLoutput() {\n return this.quillObj().root.innerHTML;\n }\n\n undo() {\n this.quillObj().history.undo();\n }\n\n redo() {\n this.quillObj().history.redo();\n }\n\n background(value: string) {\n this.quillObj().format('background', value);\n }\n\n addImage(value: string) {\n const range = this.quillObj().getSelection();\n const currentIndex = range?.index;\n this.quillObj().insertEmbed(currentIndex, 'image', value);\n }\n\n focus() {\n this.quillObj().focus();\n }\n\n blur() {\n this.quillObj().blur();\n }\n\n codeBlock(range: Range, status: boolean) {\n if (!range) return;\n this.quillObj().formatLine(range.index, range.length, 'code-block', status);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"acorex-cdk-wysiwyg.mjs","sources":["../../../../packages/cdk/wysiwyg/src/wysiwyg.class.ts","../../../../packages/cdk/wysiwyg/src/acorex-cdk-wysiwyg.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID, signal } from '@angular/core';\nimport type Quill from 'quill/quill.d.ts';\nimport type { QuillOptions, Range } from 'quill/quill.d.ts';\n\nexport type Wysiwyg = Quill;\nexport type WysiwygOptions = QuillOptions;\n\nexport class AXWysiwyg {\n quillObj = signal<Wysiwyg | null>(null);\n\n private platformId = inject(PLATFORM_ID);\n\n async init(container: HTMLElement | string, option?: WysiwygOptions) {\n if (!isPlatformBrowser(this.platformId)) return;\n await import('quill').then((e) => {\n const wysiwygObject = new e.default(container, option);\n this.quillObj.set(wysiwygObject);\n });\n }\n\n bold(value: boolean) {\n this.quillObj().format('bold', value);\n }\n\n italic(value: boolean) {\n this.quillObj().format('italic', value);\n }\n\n underLine(value: boolean) {\n this.quillObj().format('underline', value);\n }\n\n strike(value: boolean) {\n this.quillObj().format('strike', value);\n }\n\n color(value: string) {\n this.quillObj().format('color', value);\n }\n\n header(value: number) {\n this.quillObj().format('header', value);\n }\n\n list(value: 'ordered' | 'bullet' | '') {\n this.quillObj().format('list', value);\n }\n\n align(value: 'center' | 'right' | 'left' | 'justify') {\n if (value === 'left') {\n this.quillObj().format('align', '');\n } else {\n this.quillObj().format('align', value);\n }\n }\n\n direction(value: 'rtl' | 'ltr') {\n this.quillObj().format('direction', value);\n }\n\n fontSize(value: 'small' | false | 'large' | 'huge', range: Range) {\n this.quillObj().formatText(range.index, range.length, 'size', value);\n }\n\n get HTMLoutput() {\n return this.quillObj().root.innerHTML;\n }\n\n undo() {\n this.quillObj().history.undo();\n }\n\n redo() {\n this.quillObj().history.redo();\n }\n\n background(value: string) {\n this.quillObj().format('background', value);\n }\n\n addImage(value: string) {\n const range = this.quillObj().getSelection();\n const currentIndex = range?.index;\n this.quillObj().insertEmbed(currentIndex, 'image', value);\n }\n\n focus() {\n this.quillObj().focus();\n }\n\n blur() {\n this.quillObj().blur();\n }\n\n codeBlock(range: Range, status: boolean) {\n if (!range) return;\n this.quillObj().formatLine(range.index, range.length, 'code-block', status);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-z-index.mjs","sources":["../../../../packages/cdk/z-index/src/lib/z-index.directive.ts","../../../../packages/cdk/z-index/src/acorex-cdk-z-index.ts"],"sourcesContent":["import { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { afterNextRender, Directive, ElementRef, inject, OnDestroy, signal } from '@angular/core';\n@Directive({\n selector: '[axZindex]',\n exportAs: 'axZindex',\n})\nexport class AXZindexDirective implements OnDestroy {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private z = inject(AXZIndexService);\n\n private token = signal<AXZToken>(null);\n\n #init = afterNextRender(() => {\n this.token.set(this.z.acquire());\n this.el.nativeElement.style.zIndex = String(this.token().zIndex);\n });\n\n ngOnDestroy() {\n this.z.release(this.token());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,QAAA,IAAA,CAAA,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;QAE3B,IAAA,CAAA,KAAK,GAAG,MAAM,CAAW,IAAI;kFAAC;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AAClE,QAAA,CAAC,CAAC;AAKH,IAAA;AARC,IAAA,KAAK;IAKL,WAAW,GAAA;QACT,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B;8GAbW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA;;;ACLD;;AAEG
|
|
1
|
+
{"version":3,"file":"acorex-cdk-z-index.mjs","sources":["../../../../packages/cdk/z-index/src/lib/z-index.directive.ts","../../../../packages/cdk/z-index/src/acorex-cdk-z-index.ts"],"sourcesContent":["import { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { afterNextRender, Directive, ElementRef, inject, OnDestroy, signal } from '@angular/core';\n@Directive({\n selector: '[axZindex]',\n exportAs: 'axZindex',\n})\nexport class AXZindexDirective implements OnDestroy {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private z = inject(AXZIndexService);\n\n private token = signal<AXZToken>(null);\n\n #init = afterNextRender(() => {\n this.token.set(this.z.acquire());\n this.el.nativeElement.style.zIndex = String(this.token().zIndex);\n });\n\n ngOnDestroy() {\n this.z.release(this.token());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,QAAA,IAAA,CAAA,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;QAE3B,IAAA,CAAA,KAAK,GAAG,MAAM,CAAW,IAAI;kFAAC;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,eAAe,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AAClE,QAAA,CAAC,CAAC;AAKH,IAAA;AARC,IAAA,KAAK;IAKL,WAAW,GAAA;QACT,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B;8GAbW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA;;;ACLD;;AAEG;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk.mjs","sources":["../../../../packages/cdk/src/index.ts","../../../../packages/cdk/src/acorex-cdk.ts"],"sourcesContent":["export const ACOREX_CDK = 'ACorex CDK';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAO,MAAM,UAAU,GAAG;;ACA1B;;AAEG
|
|
1
|
+
{"version":3,"file":"acorex-cdk.mjs","sources":["../../../../packages/cdk/src/index.ts","../../../../packages/cdk/src/acorex-cdk.ts"],"sourcesContent":["export const ACOREX_CDK = 'ACorex CDK';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAO,MAAM,UAAU,GAAG;;ACA1B;;AAEG;;"}
|
package/package.json
CHANGED
|
@@ -13,8 +13,9 @@ declare class AXDrawerItemDirective implements OnDestroy {
|
|
|
13
13
|
private zIndexService;
|
|
14
14
|
private localeService;
|
|
15
15
|
private zToken;
|
|
16
|
-
|
|
17
|
-
private
|
|
16
|
+
/** Whether the drawer panel is currently shown (DOM + animation state). */
|
|
17
|
+
private visible;
|
|
18
|
+
private hideTimer;
|
|
18
19
|
private readonly isRtl;
|
|
19
20
|
collapseStateChanged: _angular_core.OutputEmitterRef<boolean>;
|
|
20
21
|
location: _angular_core.ModelSignal<AXDrawerLocation>;
|
|
@@ -27,27 +28,19 @@ declare class AXDrawerItemDirective implements OnDestroy {
|
|
|
27
28
|
onBackdropClick: _angular_core.OutputEmitterRef<AXClickEvent>;
|
|
28
29
|
singleOpenMode: _angular_core.ModelSignal<boolean>;
|
|
29
30
|
id: number;
|
|
30
|
-
/**
|
|
31
|
-
* Shows the drawer by animating it into view.
|
|
32
|
-
*
|
|
33
|
-
* @returns void - No return value. The drawer becomes visible.
|
|
34
|
-
*/
|
|
35
31
|
show(): void;
|
|
36
|
-
/**
|
|
37
|
-
* Hides the drawer by animating it out of view.
|
|
38
|
-
*
|
|
39
|
-
* @returns void - No return value. The drawer becomes hidden.
|
|
40
|
-
*/
|
|
41
32
|
hide(): void;
|
|
42
|
-
/**
|
|
43
|
-
* Toggles the drawer state between visible and hidden.
|
|
44
|
-
*
|
|
45
|
-
* @returns void - No return value. The drawer state is toggled.
|
|
46
|
-
*/
|
|
47
33
|
toggle(): void;
|
|
34
|
+
private applyShow;
|
|
35
|
+
private applyHide;
|
|
36
|
+
private teardownStack;
|
|
37
|
+
/** Resets inline slide offsets so the next open always animates from a known state. */
|
|
38
|
+
private resetPanelPosition;
|
|
39
|
+
private clearHideTimer;
|
|
48
40
|
private addBackdrop;
|
|
41
|
+
private removeBackdropImmediate;
|
|
49
42
|
private removeBackdrop;
|
|
50
|
-
private
|
|
43
|
+
private onWindowResize;
|
|
51
44
|
ngOnDestroy(): void;
|
|
52
45
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDrawerItemDirective, never>;
|
|
53
46
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXDrawerItemDirective, "[axDrawerItem]", ["axDrawerItem"], { "location": { "alias": "location"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "backDrop": { "alias": "backDrop"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "transition": { "alias": "transition"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; "singleOpenMode": { "alias": "singleOpenMode"; "required": false; "isSignal": true; }; }, { "collapseStateChanged": "collapseStateChanged"; "location": "locationChange"; "collapsed": "collapsedChange"; "backDrop": "backDropChange"; "mode": "modeChange"; "transition": "transitionChange"; "closeOnBackdropClick": "closeOnBackdropClickChange"; "backdropClass": "backdropClassChange"; "onBackdropClick": "onBackdropClick"; "singleOpenMode": "singleOpenModeChange"; }, never, never, true, never>;
|
|
@@ -6,6 +6,21 @@ interface AXResizeSize {
|
|
|
6
6
|
width: number;
|
|
7
7
|
height: number;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Resize event payload. `value` / `oldValue` remain the host width so existing
|
|
11
|
+
* width-only listeners (`AXValueChangedEvent<number>`) keep compiling. Use `size`
|
|
12
|
+
* / `oldSize` when both axes matter.
|
|
13
|
+
*/
|
|
14
|
+
interface AXResizeChangedEvent {
|
|
15
|
+
component: unknown;
|
|
16
|
+
htmlElement?: HTMLElement;
|
|
17
|
+
isUserInteraction?: boolean;
|
|
18
|
+
name?: string;
|
|
19
|
+
value?: number;
|
|
20
|
+
oldValue?: number;
|
|
21
|
+
size: AXResizeSize;
|
|
22
|
+
oldSize: AXResizeSize;
|
|
23
|
+
}
|
|
9
24
|
declare class AXResizableDirective implements AfterViewInit, OnDestroy {
|
|
10
25
|
private readonly el;
|
|
11
26
|
private readonly platformService;
|
|
@@ -58,11 +73,11 @@ declare class AXResizableDirective implements AfterViewInit, OnDestroy {
|
|
|
58
73
|
/** Lock the element's aspect ratio from the size captured at pointer-down. */
|
|
59
74
|
lockAspectRatio: _angular_core.ModelSignal<boolean>;
|
|
60
75
|
/** Event emitted when resizing starts. */
|
|
61
|
-
onResizingStarted: _angular_core.OutputEmitterRef<
|
|
76
|
+
onResizingStarted: _angular_core.OutputEmitterRef<AXResizeChangedEvent>;
|
|
62
77
|
/** Event emitted when resizing ends. */
|
|
63
|
-
onResizingEnded: _angular_core.OutputEmitterRef<
|
|
78
|
+
onResizingEnded: _angular_core.OutputEmitterRef<AXResizeChangedEvent>;
|
|
64
79
|
/** Event emitted on double-click. */
|
|
65
|
-
onResizingDblClick: _angular_core.OutputEmitterRef<
|
|
80
|
+
onResizingDblClick: _angular_core.OutputEmitterRef<AXResizeChangedEvent>;
|
|
66
81
|
constructor();
|
|
67
82
|
ngAfterViewInit(): void;
|
|
68
83
|
ngOnDestroy(): void;
|
|
@@ -89,6 +104,7 @@ declare class AXResizableDirective implements AfterViewInit, OnDestroy {
|
|
|
89
104
|
private maximizeToMaxSize;
|
|
90
105
|
private fitToContent;
|
|
91
106
|
private getCurrentSize;
|
|
107
|
+
private createResizeEvent;
|
|
92
108
|
private getHandleType;
|
|
93
109
|
private getCursorForHandle;
|
|
94
110
|
private getActiveCursor;
|
|
@@ -96,14 +112,6 @@ declare class AXResizableDirective implements AfterViewInit, OnDestroy {
|
|
|
96
112
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXResizableDirective, never>;
|
|
97
113
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXResizableDirective, "[axResizable]", never, { "axResizable": { "alias": "axResizable"; "required": false; "isSignal": true; }; "handles": { "alias": "handles"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "dblClickAction": { "alias": "dblClickAction"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "defaultWidth": { "alias": "defaultWidth"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "defaultHeight": { "alias": "defaultHeight"; "required": false; "isSignal": true; }; "lockAspectRatio": { "alias": "lockAspectRatio"; "required": false; "isSignal": true; }; }, { "axResizable": "axResizableChange"; "handles": "handlesChange"; "minWidth": "minWidthChange"; "maxWidth": "maxWidthChange"; "minHeight": "minHeightChange"; "maxHeight": "maxHeightChange"; "dblClickAction": "dblClickActionChange"; "width": "widthChange"; "defaultWidth": "defaultWidthChange"; "height": "heightChange"; "defaultHeight": "defaultHeightChange"; "lockAspectRatio": "lockAspectRatioChange"; "onResizingStarted": "onResizingStarted"; "onResizingEnded": "onResizingEnded"; "onResizingDblClick": "onResizingDblClick"; }, never, never, true, never>;
|
|
98
114
|
}
|
|
99
|
-
interface AXValueChangedEvent<T> {
|
|
100
|
-
component: unknown;
|
|
101
|
-
htmlElement?: HTMLElement;
|
|
102
|
-
isUserInteraction?: boolean;
|
|
103
|
-
name?: string;
|
|
104
|
-
value?: T;
|
|
105
|
-
oldValue?: T;
|
|
106
|
-
}
|
|
107
115
|
|
|
108
116
|
export { AXResizableDirective };
|
|
109
|
-
export type { AXResizeHandle, AXResizeSize };
|
|
117
|
+
export type { AXResizeChangedEvent, AXResizeHandle, AXResizeSize };
|