@acorex/components 19.11.0-next.6 → 19.11.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-image-editor.mjs","sources":["../../../../libs/components/image-editor/src/lib/image-editor.service.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-highlight/image-editor-highlight.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-highlight/image-editor-highlight.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen/image-editor-pen.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen/image-editor-pen.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-rotate/image-editor-rotate.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-rotate/image-editor-rotate.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component.html","../../../../libs/components/image-editor/src/lib/image-editor-cropper-window/image-editor-cropper-window.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-cropper-window/image-editor-cropper-window.component.html","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.html","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-history/image-editor-history.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-history/image-editor-history.component.html","../../../../libs/components/image-editor/src/lib/image-editor.module.ts","../../../../libs/components/image-editor/src/acorex-components-image-editor.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class AXImageEditorService {\n activeToolState = signal<'pen' | 'highlight' | 'crop' | 'rotate' | 'history'>(null);\n penColor = signal<string | CanvasGradient | CanvasPattern>('rgb(12, 12, 12)');\n highlightColor = signal<string | CanvasGradient | CanvasPattern>('rgb(255, 210, 48)');\n penWidth = signal<number>(10);\n highlightWidth = signal<number>(10);\n penType = signal<'pen' | 'highlight'>(null);\n rotate = signal({ state: 0, userInteract: false });\n isImageLoad = signal(false);\n newImage = signal<HTMLImageElement | null>(null);\n initialImage = signal<HTMLImageElement | null>(null);\n imageBlob = signal<Blob[]>([]);\n undoPressed = signal(false);\n redoPressed = signal(false);\n cropperRatio = signal<'1:1' | '16:9'>(null);\n}\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-crop',\n templateUrl: './image-editor-crop.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent],\n})\nexport class AXImageEditorCropComponent {\n protected service = inject(AXImageEditorService);\n\n cropPressed = output();\n\n protected cropButtonHandler() {\n this.cropPressed.emit();\n }\n\n protected ratioHandler(r: '1:1' | '16:9') {\n if (this.service.cropperRatio()) {\n this.service.cropperRatio.set(null);\n } else {\n this.service.cropperRatio.set(r);\n }\n }\n}\n","<ax-button (click)=\"cropButtonHandler()\" class=\"ax-crop-save ax-sm\" text=\"Crop\"></ax-button>\n\n<ax-button\n [selected]=\"this.service.cropperRatio() === '1:1' ? true : false\"\n [color]=\"this.service.cropperRatio() === '1:1' ? 'primary' : 'default'\"\n (click)=\"ratioHandler('1:1')\"\n class=\"ax-crop-save ax-sm\"\n text=\"1:1\"\n></ax-button>\n<ax-button\n [selected]=\"this.service.cropperRatio() === '16:9' ? true : false\"\n [color]=\"this.service.cropperRatio() === '16:9' ? 'primary' : 'default'\"\n (click)=\"ratioHandler('16:9')\"\n class=\"ax-crop-save ax-sm\"\n text=\"16:9\"\n></ax-button>\n","import { AXColorBoxComponent } from '@acorex/components/color-box';\nimport { AXRangeSliderComponent } from '@acorex/components/range-slider';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-highlight',\n templateUrl: './image-editor-highlight.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXColorBoxComponent, CommonModule, FormsModule, AXRangeSliderComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: `\n ax-image-editor-highlight {\n display: flex;\n ax-range-slider {\n padding: 0.5rem 0.75rem;\n width: 10rem;\n .ax-range-slider {\n .ax-range-slider-handler {\n width: 1rem !important;\n height: 1rem !important;\n }\n }\n }\n }\n `,\n})\nexport class AXImageEditorHighlightComponent {\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected selectedColor = signal(this.service.highlightColor());\n\n /** @ignore */\n protected value = this.service.highlightWidth();\n\n protected changeColorHandler(e: string) {\n this.service.highlightColor.set(e);\n this.selectedColor.set(e);\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.highlightWidth.set(e);\n }\n}\n","<ax-color-box\n [showValue]=\"false\"\n [showIcon]=\"false\"\n axTooltip=\"Highlight Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"none\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n\n<ax-range-slider [min]=\"2\" [max]=\"20\" [(ngModel)]=\"value\" (ngModelChange)=\"valueHandler($event)\"></ax-range-slider>\n","import { AXColorBoxComponent } from '@acorex/components/color-box';\nimport { AXRangeSliderComponent } from '@acorex/components/range-slider';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-pen',\n templateUrl: './image-editor-pen.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXColorBoxComponent, CommonModule, FormsModule, AXRangeSliderComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: `\n ax-image-editor-pen {\n display: flex;\n\n ax-range-slider {\n padding: 0.5rem 0.75rem;\n width: 10rem;\n .ax-range-slider {\n .ax-range-slider-handler {\n width: 1rem !important;\n height: 1rem !important;\n }\n }\n }\n }\n `,\n})\nexport class AXImageEditorPenComponent {\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected value = this.service.penWidth();\n\n /** @ignore */\n protected selectedColor = signal(this.service.penColor());\n\n protected changeColorHandler(e: string) {\n this.service.penColor.set(e);\n this.selectedColor.set(e);\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.penWidth.set(e);\n }\n}\n","<ax-color-box\n [showValue]=\"false\"\n [showIcon]=\"false\"\n axTooltip=\"Pen Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"none\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n\n<ax-range-slider [min]=\"2\" [max]=\"20\" [(ngModel)]=\"value\" (ngModelChange)=\"valueHandler($event)\"></ax-range-slider>\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-rotate',\n templateUrl: './image-editor-rotate.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent, AXTooltipDirective, AXDecoratorIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXImageEditorRotateComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected rotateRightHandler() {\n this.service.rotate.set({ state: 90, userInteract: true });\n }\n\n /** @ignore */\n protected rotateLeftHandler() {\n this.service.rotate.set({ state: -90, userInteract: true });\n }\n}\n","<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-arrow-turn-left\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Right\" axTooltipPlacement=\"top\" (click)=\"rotateRightHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-arrow-turn-right\"></ax-icon>\n</ax-button>\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-tool-selector',\n templateUrl: './image-editor-tool-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent, AXDecoratorModule, AXTooltipDirective],\n})\nexport class AXImageEditorToolSelectorComponent {\n protected service = inject(AXImageEditorService);\n\n protected changeToolHandler(tool: 'pen' | 'highlight' | 'crop' | 'rotate') {\n if (this.service.activeToolState() === tool) {\n this.service.activeToolState.set(null);\n return;\n }\n\n this.service.activeToolState.set(tool);\n\n if (tool === 'pen' || tool === 'highlight') {\n this.service.penType.set(tool);\n }\n }\n}\n","<ax-button\n axTooltip=\"pen\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'pen' ? true : false\"\n [color]=\"this.service.activeToolState() === 'pen' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n</ax-button>\n\n<ax-button\n axTooltip=\"highlight\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'highlight' ? true : false\"\n [color]=\"this.service.activeToolState() === 'highlight' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n</ax-button>\n\n<ax-button\n axTooltip=\"crop\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('crop')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'crop' ? true : false\"\n [color]=\"this.service.activeToolState() === 'crop' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button\n axTooltip=\"rotate\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('rotate')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'rotate' ? true : false\"\n [color]=\"this.service.activeToolState() === 'rotate' ? 'primary' : 'default'\"\n>\n <i class=\"fa-solid fa-rotate\"></i>\n</ax-button>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXImageEditorService } from '../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-cropper-window',\n templateUrl: './image-editor-cropper-window.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrl: './image-editor-cropper-window.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class AXImageEditorCropperWindowComponent implements OnDestroy {\n showGrid = input(true);\n\n protected service = inject(AXImageEditorService);\n private ngZone = inject(NgZone);\n private selectedHandle = signal<string>(null);\n private panState = signal(false);\n private elementRef: ElementRef = inject(ElementRef);\n protected cropperWindow = viewChild<ElementRef>('r');\n private currentX = signal(-45);\n private currentY = signal(-45);\n private prevX = signal(0);\n private prevY = signal(0);\n protected renderer = inject(Renderer2);\n private platformID = inject(PLATFORM_ID);\n private mouseMoveEvent;\n private mouseUpEvent;\n private mouseMoveEvent2;\n private mouseUpEvent2;\n private mouseDownEvent;\n private mouseLeaveEvent;\n\n #eff = effect(() => {\n const host = this.elementRef.nativeElement as HTMLElement;\n if (this.service.cropperRatio() === '1:1') {\n host.style.width = `${150}px`;\n host.style.height = `${150}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.width = `${266.6}px`;\n host.style.height = `${150}px`;\n } else {\n host.style.width = `${150}px`;\n host.style.height = `${150}px`;\n }\n });\n\n #init = afterNextRender(() => {\n const host = this.elementRef.nativeElement as HTMLElement;\n\n this.ngZone.runOutsideAngular(() => {\n this.mouseMoveEvent = this.renderer.listen(document, 'mousemove', this.changeSizeHandler.bind(this));\n this.mouseUpEvent = this.renderer.listen(document, 'mouseup', this.clearSelector.bind(this));\n this.mouseDownEvent = this.renderer.listen(host, 'mousedown', this.panDown.bind(this));\n this.mouseMoveEvent2 = this.renderer.listen(host, 'mousemove', this.panMove.bind(this));\n this.mouseUpEvent2 = this.renderer.listen(host, 'mouseup', this.panUp.bind(this));\n this.mouseLeaveEvent = this.renderer.listen(host, 'mouseleave', this.panUp.bind(this));\n });\n });\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformID) && this.mouseMoveEvent) {\n this.mouseMoveEvent();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseUpEvent) {\n this.mouseUpEvent();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseDownEvent) {\n this.mouseDownEvent();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseMoveEvent2) {\n this.mouseMoveEvent2();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseUpEvent2) {\n this.mouseUpEvent2();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseLeaveEvent) {\n this.mouseLeaveEvent();\n }\n }\n\n #positionChange = effect(() => {\n this.setPosition(this.currentX(), this.currentY());\n });\n\n protected panMove(e: MouseEvent) {\n if (this.selectedHandle()) return;\n if (!this.panState()) return;\n\n const currentX = e.clientX;\n const currentY = e.clientY;\n const deltaX = currentX - this.prevX();\n const deltaY = currentY - this.prevY();\n this.currentX.update((prev) => prev + deltaX);\n this.currentY.update((prev) => prev + deltaY);\n this.prevX.set(currentX);\n this.prevY.set(currentY);\n }\n\n protected panDown(e: MouseEvent) {\n if (this.selectedHandle()) return;\n this.panState.set(true);\n this.prevX.set(e.clientX);\n this.prevY.set(e.clientY);\n }\n\n protected panUp() {\n if (this.selectedHandle()) return;\n this.panState.set(false);\n }\n\n public getCropperArea() {\n return (this.elementRef.nativeElement as HTMLElement).getBoundingClientRect();\n }\n\n private setPosition(posX: number, posY: number) {\n const el = this.elementRef.nativeElement as HTMLElement;\n el.style.transform = `translate(${posX}px, ${posY}px)`;\n }\n\n private startX: number;\n private startY: number;\n private startWidth: number;\n private startHeight: number;\n private startLeft: number;\n private startTop: number;\n protected edgeCase = false;\n protected handleSelector(e: MouseEvent, value: string) {\n if (this.panState()) return;\n const host = this.elementRef.nativeElement as HTMLElement;\n this.startX = e.clientX;\n this.startY = e.clientY;\n this.startWidth = host.offsetWidth;\n this.startHeight = host.offsetHeight;\n this.startLeft = host.offsetLeft;\n this.startTop = host.offsetTop;\n this.selectedHandle.set(value);\n }\n\n protected changeSizeHandler(e: MouseEvent) {\n if (this.panState()) return;\n if (!this.selectedHandle()) return;\n\n const host = this.elementRef.nativeElement as HTMLElement;\n const rect = host.getBoundingClientRect();\n\n const dy = e.clientY - this.startY;\n const dx = e.clientX - this.startX;\n\n if (rect.width < 20 || rect.height < 20) {\n this.edgeCase = true;\n return;\n }\n\n switch (this.selectedHandle()) {\n case 'right':\n host.style.width = `${e.movementX + rect.width}px`;\n break;\n case 'top':\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n break;\n case 'left':\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n break;\n case 'bottom':\n host.style.height = `${rect.height + e.movementY}px`;\n break;\n case 'right-top':\n if (this.service.cropperRatio() === '1:1') {\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n host.style.width = `${this.startHeight - dy}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n host.style.width = `${(this.startHeight - dy) * 1.77}px`;\n } else {\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n host.style.width = `${e.movementX + rect.width}px`;\n }\n break;\n case 'bottom-right':\n if (this.service.cropperRatio() === '1:1') {\n host.style.width = `${e.movementX + rect.width}px`;\n host.style.height = `${e.movementX + rect.width}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.height = `${e.movementX + rect.height}px`;\n host.style.width = `${(e.movementX + rect.height) * 1.77}px`;\n } else {\n host.style.height = `${rect.height + e.movementY}px`;\n host.style.width = `${e.movementX + rect.width}px`;\n }\n break;\n case 'bottom-left':\n if (this.service.cropperRatio() === '1:1') {\n host.style.height = `${this.startWidth - dx}px`;\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.height = `${(this.startWidth - dx) / 1.77}px`;\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n } else {\n host.style.height = `${rect.height + e.movementY}px`;\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n }\n break;\n case 'left-top':\n if (this.service.cropperRatio() === '1:1') {\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n host.style.height = `${this.startWidth - dx}px`;\n host.style.top = `${this.startLeft + dx}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n host.style.height = `${(this.startWidth - dx) / 1.77}px`;\n host.style.top = `${this.startLeft + dx}px`;\n } else {\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n }\n }\n }\n\n protected clearSelector() {\n if (this.panState()) return;\n const host = this.elementRef.nativeElement as HTMLElement;\n\n if (this.edgeCase) {\n host.style.height = `20px`;\n host.style.width = `20px`;\n this.edgeCase = false;\n }\n\n this.selectedHandle.set(null);\n }\n}\n","<div [ngStyle]=\"!showGrid() && { border: '1px dashed white' }\" #r class=\"ax-image-cropper-window-container\">\n @if (!this.service.cropperRatio()) {\n <div (mousedown)=\"handleSelector($event, 'right')\" class=\"ax-image-right-handle ax-handle-shape\"></div>\n <div (mousedown)=\"handleSelector($event, 'top')\" class=\"ax-image-top-handle ax-handle-shape\"></div>\n <div (mousedown)=\"handleSelector($event, 'left')\" class=\"ax-image-left-handle ax-handle-shape\"></div>\n <div (mousedown)=\"handleSelector($event, 'bottom')\" class=\"ax-image-bottom-handle ax-handle-shape\"></div>\n }\n\n <div (mousedown)=\"handleSelector($event, 'right-top')\" class=\"ax-image-right-top-handle ax-handle-shape\"></div>\n <div (mousedown)=\"handleSelector($event, 'bottom-right')\" class=\"ax-image-bottom-right-handle ax-handle-shape\"></div>\n <div (mousedown)=\"handleSelector($event, 'bottom-left')\" class=\"ax-image-bottom-left-handle ax-handle-shape\"></div>\n <div (mousedown)=\"handleSelector($event, 'left-top')\" class=\"ax-image-left-top-handle ax-handle-shape\"></div>\n\n @if (showGrid()) {\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n }\n</div>\n","import { MXBaseComponent } from '@acorex/components/common';\r\nimport {\r\n afterNextRender,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n input,\r\n linkedSignal,\r\n OnDestroy,\r\n Renderer2,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXImageEditorContainerComponent } from '../image-editor-container/image-editor-container.component';\r\nimport { AXImageEditorCropperWindowComponent } from '../image-editor-cropper-window/image-editor-cropper-window.component';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n@Component({\r\n selector: 'ax-image-editor-view',\r\n templateUrl: './image-editor-view.component.html',\r\n styleUrls: ['./image-editor-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [AXImageEditorCropperWindowComponent],\r\n})\r\nexport class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {\r\n /**\r\n * its change grid display state.\r\n */\r\n showGrid = input(true);\r\n /**\r\n * its change grid display state.\r\n */\r\n lockRatio = signal(false);\r\n /**\r\n * its receive image src.\r\n */\r\n src = input<string>('');\r\n /** @ignore */\r\n protected canvasElem = viewChild<ElementRef<HTMLCanvasElement>>('canvasElem');\r\n /** @ignore */\r\n protected cropperWindow = viewChild<AXImageEditorCropperWindowComponent>('f');\r\n /** @ignore */\r\n protected ctx = signal<CanvasRenderingContext2D>(null);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected isMouseDown = signal(false);\r\n /** @ignore */\r\n protected isDrawRectangleCreated = signal(false);\r\n /** @ignore */\r\n protected parent = inject(AXImageEditorContainerComponent);\r\n /** @ignore */\r\n protected renderer = inject(Renderer2);\r\n /** @ignore */\r\n protected imageAspect = computed(() => {\r\n return this.service.initialImage().width / this.service.initialImage().height;\r\n });\r\n /** @ignore */\r\n protected imageEditorHistory = signal<HTMLImageElement[]>([]);\r\n /** @ignore */\r\n protected imageEditorHistoryPointer = linkedSignal(() => this.imageEditorHistory().length - 1);\r\n\r\n /** @ignore */\r\n private resizeEventListener;\r\n /** @ignore */\r\n private imageLoadEventListener;\r\n\r\n /** @ignore */\r\n protected resizeWindow() {\r\n this.canvasResponsive(this.service.newImage());\r\n }\r\n\r\n /** @ignore */\r\n protected canvasResponsive(image: HTMLImageElement) {\r\n if (!this.parent.imageEditorContainer()) return;\r\n\r\n const parentWidth = (this.parent.imageEditorContainer().nativeElement as HTMLDivElement).clientWidth;\r\n const imageWidth = this.service.initialImage().width;\r\n\r\n if (parentWidth < imageWidth) {\r\n this.getHostElement().style.width = `${parentWidth}px`;\r\n this.getHostElement().style.height = `${parentWidth * this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = parentWidth;\r\n this.canvasElem().nativeElement.height = parentWidth * this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, parentWidth, parentWidth * this.imageAspect());\r\n } else {\r\n this.getHostElement().style.width = `${imageWidth}px`;\r\n this.getHostElement().style.height = `${imageWidth / this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = imageWidth;\r\n this.canvasElem().nativeElement.height = imageWidth / this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, imageWidth, imageWidth / this.imageAspect());\r\n }\r\n }\r\n\r\n /** @ignore */\r\n constructor() {\r\n super();\r\n afterNextRender(() => {\r\n this.resizeEventListener = this.renderer.listen(window, 'resize', this.resizeWindow.bind(this));\r\n //load image\r\n this.service.initialImage.set(new Image());\r\n this.service.initialImage().src = this.src();\r\n this.service.initialImage().crossOrigin = 'anonymous';\r\n this.imageLoadEventListener = this.renderer.listen(\r\n this.service.initialImage(),\r\n 'load',\r\n this.imageLoaded.bind(this),\r\n );\r\n //set canvas options\r\n this.ctx.set(this.canvasElem().nativeElement.getContext('2d', { willReadFrequently: true }));\r\n this.ctx().lineJoin = 'round';\r\n this.ctx().lineCap = 'round';\r\n });\r\n\r\n effect(() => {\r\n if (this.parent.imageEditorContainer() && this.service.isImageLoad()) {\r\n this.canvasResponsive(this.service.initialImage());\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.undoPressed()) {\r\n this.imageChanged();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.redoPressed()) {\r\n this.imageChanged();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.rotate().userInteract || !this.ctx()) return;\r\n this.rotateImage();\r\n });\r\n }\r\n\r\n /** @ignore */\r\n ngOnDestroy(): void {\r\n if (this.resizeEventListener) {\r\n this.resizeEventListener();\r\n }\r\n\r\n if (this.imageLoadEventListener) {\r\n this.imageLoadEventListener();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected imageLoaded() {\r\n this.imageEditorHistory.set([this.service.initialImage()]);\r\n this.service.newImage.set(this.service.initialImage());\r\n this.service.isImageLoad.set(true);\r\n }\r\n\r\n /** @ignore */\r\n protected imageChanged() {\r\n if (this.service.undoPressed() && this.imageEditorHistoryPointer() >= 1) {\r\n this.imageEditorHistoryPointer.update((prev) => prev - 1);\r\n\r\n this.service.newImage.set(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n this.canvasResponsive(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n }\r\n\r\n if (this.service.redoPressed() && this.imageEditorHistoryPointer() < this.imageEditorHistory().length - 1) {\r\n this.imageEditorHistoryPointer.update((prev) => prev + 1);\r\n this.service.newImage.set(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n this.canvasResponsive(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n }\r\n\r\n this.service.undoPressed.set(false);\r\n this.service.redoPressed.set(false);\r\n }\r\n\r\n /** @ignore */\r\n protected penConfigHandler(penType: 'pen' | 'highlight') {\r\n switch (penType) {\r\n case 'pen':\r\n this.ctx().globalAlpha = 1;\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineWidth = this.service.penWidth();\r\n break;\r\n case 'highlight':\r\n this.ctx().globalAlpha = 0.008;\r\n this.ctx().strokeStyle = this.service.highlightColor();\r\n this.ctx().lineWidth = this.service.highlightWidth();\r\n break;\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected getBoundingCanvasHandler() {\r\n return this.canvasElem().nativeElement.getBoundingClientRect();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseDownHandler(e: MouseEvent) {\r\n this.isMouseDown.set(true);\r\n\r\n if (!this.service.penType()) return;\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(e.offsetX, e.offsetY);\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseMoveHandler(e: MouseEvent) {\r\n if (!this.isMouseDown()) return;\r\n if (!this.service.penType()) return;\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseUpHandler() {\r\n this.isMouseDown.set(false);\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n\r\n /** @ignore */\r\n cropButtonHandler() {\r\n const cropRect = this.cropperWindow().getCropperArea();\r\n const canvasRect = this.canvasElem().nativeElement.getClientRects()[0];\r\n const dx = cropRect.x - canvasRect.x;\r\n const dy = cropRect.y - canvasRect.y;\r\n\r\n const imageData = this.ctx().getImageData(dx, dy, cropRect.width, cropRect.height);\r\n this.canvasElem().nativeElement.width = cropRect.width;\r\n this.canvasElem().nativeElement.height = cropRect.height;\r\n this.ctx().putImageData(imageData, 0, 0);\r\n this.saveImageChange();\r\n this.service.activeToolState.set(null);\r\n }\r\n\r\n /** @ignore */\r\n protected rotateImage() {\r\n this.ctx().save();\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().translate(this.service.newImage().width / 2, this.service.newImage().height / 2);\r\n this.ctx().rotate((this.service.rotate().state * Math.PI) / 180);\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n -this.service.newImage().width / 2,\r\n -this.service.newImage().height / 2,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\r\n );\r\n this.ctx().restore();\r\n\r\n this.saveImageChange();\r\n this.service.rotate.update((prev) => {\r\n return { state: prev.state, userInteract: false };\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected saveImageChange() {\r\n const newImage = new Image();\r\n newImage.crossOrigin = 'anonymous';\r\n newImage.src = this.canvasElem().nativeElement.toDataURL('image/jpeg', 1);\r\n this.service.newImage.set(newImage);\r\n this.imageEditorHistory.update((prev) => [...prev, newImage]);\r\n\r\n const tempBlob = [];\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/jpeg',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/png',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/webp',\r\n 1,\r\n );\r\n this.service.imageBlob.set(tempBlob);\r\n }\r\n\r\n /** @ignore */\r\n @HostBinding('style')\r\n private get __hostStyle(): string {\r\n return `width: ${this.service.initialImage()?.width}px; height: ${this.service.initialImage()?.height}px`;\r\n }\r\n}\r\n","<canvas\n tabindex=\"1\"\n (pointerdown)=\"mouseDownHandler($event)\"\n (pointerup)=\"mouseUpHandler()\"\n (pointermove)=\"mouseMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n\n@if (this.service.activeToolState() === 'crop') {\n <ax-image-editor-cropper-window [showGrid]=\"showGrid()\" #f></ax-image-editor-cropper-window>\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport {\n AXClearableComponent,\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { CommonModule } from '@angular/common';\nimport { Component, contentChild, ElementRef, forwardRef, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXImageEditorCropComponent } from '../image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorHighlightComponent } from '../image-editor-tools/image-editor-highlight/image-editor-highlight.component';\nimport { AXImageEditorPenComponent } from '../image-editor-tools/image-editor-pen/image-editor-pen.component';\nimport { AXImageEditorRotateComponent } from '../image-editor-tools/image-editor-rotate/image-editor-rotate.component';\nimport { AXImageEditorToolSelectorComponent } from '../image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component';\nimport { AXImageEditorViewComponent } from '../image-editor-view/image-editor-view.component';\nimport { AXImageEditorService } from '../image-editor.service';\n\n/**\n * paint container.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-container',\n templateUrl: './image-editor-container.component.html',\n styleUrl: './image-editor-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n outputs: ['onValueChanged'],\n inputs: ['look'],\n providers: [\n AXImageEditorService,\n { provide: AXComponent, useExisting: AXImageEditorContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXImageEditorContainerComponent },\n { provide: AXClearableComponent, useExisting: AXImageEditorContainerComponent },\n { provide: AXValuableComponent, useExisting: AXImageEditorContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXImageEditorContainerComponent),\n multi: true,\n },\n ],\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXLoadingSpinnerComponent,\n AXToolBarModule,\n AXImageEditorCropComponent,\n AXButtonModule,\n AXImageEditorToolSelectorComponent,\n AXImageEditorPenComponent,\n AXImageEditorHighlightComponent,\n AXImageEditorRotateComponent,\n ],\n})\nexport class AXImageEditorContainerComponent extends classes(MXInputBaseValueComponent<Blob[]>, MXLookComponent) {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n imageEditorContainer = viewChild<ElementRef>('f');\n\n view = contentChild<AXImageEditorViewComponent>(AXImageEditorViewComponent);\n\n save() {\n if (this.service.initialImage() !== this.service.newImage()) {\n this.commitValue(this.service.imageBlob(), true);\n } else {\n this.commitValue(null);\n }\n }\n\n protected cropButtonHandler() {\n this.view().cropButtonHandler();\n }\n}\n","@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-{{ look }}\">\n <ng-content select=\"ax-header\"></ng-content>\n\n <ng-content select=\"ax-image-editor-view\"> </ng-content>\n\n @if (service.activeToolState()) {\n <ax-toolbar class=\"ax-secondary-toolbar\">\n <ax-prefix>\n @switch (service.activeToolState()) {\n @case ('pen') {\n <ax-image-editor-pen></ax-image-editor-pen>\n }\n @case ('crop') {\n <ax-image-editor-crop (cropPressed)=\"cropButtonHandler()\"></ax-image-editor-crop>\n }\n @case ('highlight') {\n <ax-image-editor-highlight></ax-image-editor-highlight>\n }\n @case ('rotate') {\n <ax-image-editor-rotate></ax-image-editor-rotate>\n }\n }\n </ax-prefix>\n </ax-toolbar>\n }\n\n <ax-toolbar class=\"ax-main-toolbar\">\n <ax-content>\n <ax-image-editor-tool-selector></ax-image-editor-tool-selector>\n </ax-content>\n </ax-toolbar>\n </div>\n <div class=\"ax-error-container\"></div>\n} @else {\n <div class=\"ax-loading-spinner-container\">\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n </div>\n}\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-history',\n templateUrl: './image-editor-history.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent, AXDecoratorModule, AXTooltipDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXImageEditorHistoryComponent {\n protected service = inject(AXImageEditorService);\n\n protected UndoHandler() {\n this.service.undoPressed.set(true);\n }\n protected RedoHandler() {\n this.service.redoPressed.set(true);\n }\n}\n","<ax-button axTooltip=\"Undo\" axTooltipPlacement=\"top\" (onClick)=\"UndoHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Redo\" axTooltipPlacement=\"top\" (onClick)=\"RedoHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorContainerComponent } from './image-editor-container/image-editor-container.component';\nimport { AXImageEditorCropperWindowComponent } from './image-editor-cropper-window/image-editor-cropper-window.component';\nimport { AXImageEditorCropComponent } from './image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorHighlightComponent } from './image-editor-tools/image-editor-highlight/image-editor-highlight.component';\nimport { AXImageEditorHistoryComponent } from './image-editor-tools/image-editor-history/image-editor-history.component';\nimport { AXImageEditorPenComponent } from './image-editor-tools/image-editor-pen/image-editor-pen.component';\nimport { AXImageEditorRotateComponent } from './image-editor-tools/image-editor-rotate/image-editor-rotate.component';\nimport { AXImageEditorToolSelectorComponent } from './image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component';\nimport { AXImageEditorViewComponent } from './image-editor-view/image-editor-view.component';\n\nconst COMPONENT = [\n AXImageEditorViewComponent,\n AXImageEditorContainerComponent,\n AXImageEditorCropComponent,\n AXImageEditorHistoryComponent,\n AXImageEditorToolSelectorComponent,\n AXImageEditorPenComponent,\n AXImageEditorHighlightComponent,\n AXImageEditorRotateComponent,\n AXImageEditorCropperWindowComponent,\n];\n\nconst MODULES = [\n AXButtonModule,\n FormsModule,\n AXRangeSliderModule,\n AXSelectBoxModule,\n AXColorBoxModule,\n AXPopoverModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXDialogModule,\n AXTooltipModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXImageEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-image-editor.mjs","sources":["../../../../libs/components/image-editor/src/lib/image-editor.service.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-highlight/image-editor-highlight.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-highlight/image-editor-highlight.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen/image-editor-pen.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen/image-editor-pen.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-rotate/image-editor-rotate.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-rotate/image-editor-rotate.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component.html","../../../../libs/components/image-editor/src/lib/image-editor-cropper-window/image-editor-cropper-window.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-cropper-window/image-editor-cropper-window.component.html","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.html","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-history/image-editor-history.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-history/image-editor-history.component.html","../../../../libs/components/image-editor/src/lib/image-editor.module.ts","../../../../libs/components/image-editor/src/acorex-components-image-editor.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class AXImageEditorService {\n activeToolState = signal<'pen' | 'highlight' | 'crop' | 'rotate' | 'history'>(null);\n penColor = signal<string | CanvasGradient | CanvasPattern>('rgb(12, 12, 12)');\n highlightColor = signal<string | CanvasGradient | CanvasPattern>('rgb(255, 210, 48)');\n penWidth = signal<number>(10);\n highlightWidth = signal<number>(10);\n penType = signal<'pen' | 'highlight'>(null);\n rotate = signal({ state: 0, userInteract: false });\n isImageLoad = signal(false);\n newImage = signal<HTMLImageElement | null>(null);\n initialImage = signal<HTMLImageElement | null>(null);\n imageBlob = signal<Blob[]>([]);\n undoPressed = signal(false);\n redoPressed = signal(false);\n cropperRatio = signal<'1:1' | '16:9'>(null);\n}\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { Component, inject, output, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-crop',\n templateUrl: './image-editor-crop.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent],\n})\nexport class AXImageEditorCropComponent {\n protected service = inject(AXImageEditorService);\n\n cropPressed = output();\n\n protected cropButtonHandler() {\n this.cropPressed.emit();\n }\n\n protected ratioHandler(r: '1:1' | '16:9') {\n if (this.service.cropperRatio()) {\n this.service.cropperRatio.set(null);\n } else {\n this.service.cropperRatio.set(r);\n }\n }\n}\n","<ax-button (click)=\"cropButtonHandler()\" class=\"ax-crop-save ax-sm\" text=\"Crop\"></ax-button>\n\n<ax-button\n [selected]=\"this.service.cropperRatio() === '1:1' ? true : false\"\n [color]=\"this.service.cropperRatio() === '1:1' ? 'primary' : 'default'\"\n (click)=\"ratioHandler('1:1')\"\n class=\"ax-crop-save ax-sm\"\n text=\"1:1\"\n></ax-button>\n<ax-button\n [selected]=\"this.service.cropperRatio() === '16:9' ? true : false\"\n [color]=\"this.service.cropperRatio() === '16:9' ? 'primary' : 'default'\"\n (click)=\"ratioHandler('16:9')\"\n class=\"ax-crop-save ax-sm\"\n text=\"16:9\"\n></ax-button>\n","import { AXColorBoxComponent } from '@acorex/components/color-box';\nimport { AXRangeSliderComponent } from '@acorex/components/range-slider';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-highlight',\n templateUrl: './image-editor-highlight.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXColorBoxComponent, CommonModule, FormsModule, AXRangeSliderComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: `\n ax-image-editor-highlight {\n display: flex;\n ax-range-slider {\n padding: 0.5rem 0.75rem;\n width: 10rem;\n .ax-range-slider {\n .ax-range-slider-handler {\n width: 1rem !important;\n height: 1rem !important;\n }\n }\n }\n }\n `,\n})\nexport class AXImageEditorHighlightComponent {\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected selectedColor = signal(this.service.highlightColor());\n\n /** @ignore */\n protected value = this.service.highlightWidth();\n\n protected changeColorHandler(e: string) {\n this.service.highlightColor.set(e);\n this.selectedColor.set(e);\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.highlightWidth.set(e);\n }\n}\n","<ax-color-box\n [showValue]=\"false\"\n [showIcon]=\"false\"\n axTooltip=\"Highlight Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"none\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n\n<ax-range-slider [min]=\"2\" [max]=\"20\" [(ngModel)]=\"value\" (ngModelChange)=\"valueHandler($event)\"></ax-range-slider>\n","import { AXColorBoxComponent } from '@acorex/components/color-box';\nimport { AXRangeSliderComponent } from '@acorex/components/range-slider';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-pen',\n templateUrl: './image-editor-pen.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXColorBoxComponent, CommonModule, FormsModule, AXRangeSliderComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: `\n ax-image-editor-pen {\n display: flex;\n\n ax-range-slider {\n padding: 0.5rem 0.75rem;\n width: 10rem;\n .ax-range-slider {\n .ax-range-slider-handler {\n width: 1rem !important;\n height: 1rem !important;\n }\n }\n }\n }\n `,\n})\nexport class AXImageEditorPenComponent {\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected value = this.service.penWidth();\n\n /** @ignore */\n protected selectedColor = signal(this.service.penColor());\n\n protected changeColorHandler(e: string) {\n this.service.penColor.set(e);\n this.selectedColor.set(e);\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.penWidth.set(e);\n }\n}\n","<ax-color-box\n [showValue]=\"false\"\n [showIcon]=\"false\"\n axTooltip=\"Pen Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"none\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n\n<ax-range-slider [min]=\"2\" [max]=\"20\" [(ngModel)]=\"value\" (ngModelChange)=\"valueHandler($event)\"></ax-range-slider>\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-rotate',\n templateUrl: './image-editor-rotate.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent, AXTooltipDirective, AXDecoratorIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXImageEditorRotateComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected rotateRightHandler() {\n this.service.rotate.set({ state: 90, userInteract: true });\n }\n\n /** @ignore */\n protected rotateLeftHandler() {\n this.service.rotate.set({ state: -90, userInteract: true });\n }\n}\n","<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-arrow-turn-left\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Right\" axTooltipPlacement=\"top\" (click)=\"rotateRightHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-arrow-turn-right\"></ax-icon>\n</ax-button>\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-tool-selector',\n templateUrl: './image-editor-tool-selector.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent, AXDecoratorModule, AXTooltipDirective],\n})\nexport class AXImageEditorToolSelectorComponent {\n protected service = inject(AXImageEditorService);\n\n protected changeToolHandler(tool: 'pen' | 'highlight' | 'crop' | 'rotate') {\n if (this.service.activeToolState() === tool) {\n this.service.activeToolState.set(null);\n return;\n }\n\n this.service.activeToolState.set(tool);\n\n if (tool === 'pen' || tool === 'highlight') {\n this.service.penType.set(tool);\n }\n }\n}\n","<ax-button\n axTooltip=\"pen\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'pen' ? true : false\"\n [color]=\"this.service.activeToolState() === 'pen' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n</ax-button>\n\n<ax-button\n axTooltip=\"highlight\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'highlight' ? true : false\"\n [color]=\"this.service.activeToolState() === 'highlight' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n</ax-button>\n\n<ax-button\n axTooltip=\"crop\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('crop')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'crop' ? true : false\"\n [color]=\"this.service.activeToolState() === 'crop' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button\n axTooltip=\"rotate\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('rotate')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'rotate' ? true : false\"\n [color]=\"this.service.activeToolState() === 'rotate' ? 'primary' : 'default'\"\n>\n <i class=\"fa-solid fa-rotate\"></i>\n</ax-button>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXImageEditorService } from '../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-cropper-window',\n templateUrl: './image-editor-cropper-window.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrl: './image-editor-cropper-window.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n})\nexport class AXImageEditorCropperWindowComponent implements OnDestroy {\n showGrid = input(true);\n\n protected service = inject(AXImageEditorService);\n private ngZone = inject(NgZone);\n private selectedHandle = signal<string>(null);\n private panState = signal(false);\n private elementRef: ElementRef = inject(ElementRef);\n protected cropperWindow = viewChild<ElementRef>('r');\n private currentX = signal(-45);\n private currentY = signal(-45);\n private prevX = signal(0);\n private prevY = signal(0);\n protected renderer = inject(Renderer2);\n private platformID = inject(PLATFORM_ID);\n private mouseMoveEvent;\n private mouseUpEvent;\n private mouseMoveEvent2;\n private mouseUpEvent2;\n private mouseDownEvent;\n private mouseLeaveEvent;\n\n #eff = effect(() => {\n const host = this.elementRef.nativeElement as HTMLElement;\n if (this.service.cropperRatio() === '1:1') {\n host.style.width = `${150}px`;\n host.style.height = `${150}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.width = `${266.6}px`;\n host.style.height = `${150}px`;\n } else {\n host.style.width = `${150}px`;\n host.style.height = `${150}px`;\n }\n });\n\n #init = afterNextRender(() => {\n const host = this.elementRef.nativeElement as HTMLElement;\n\n this.ngZone.runOutsideAngular(() => {\n this.mouseMoveEvent = this.renderer.listen(document, 'pointermove', this.changeSizeHandler.bind(this));\n this.mouseUpEvent = this.renderer.listen(document, 'pointerup', this.clearSelector.bind(this));\n this.mouseDownEvent = this.renderer.listen(host, 'pointerdown', this.panDown.bind(this));\n this.mouseMoveEvent2 = this.renderer.listen(host, 'pointermove', this.panMove.bind(this));\n this.mouseUpEvent2 = this.renderer.listen(host, 'pointerup', this.panUp.bind(this));\n this.mouseLeaveEvent = this.renderer.listen(host, 'pointerleave', this.panUp.bind(this));\n });\n });\n\n ngOnDestroy(): void {\n if (isPlatformBrowser(this.platformID) && this.mouseMoveEvent) {\n this.mouseMoveEvent();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseUpEvent) {\n this.mouseUpEvent();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseDownEvent) {\n this.mouseDownEvent();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseMoveEvent2) {\n this.mouseMoveEvent2();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseUpEvent2) {\n this.mouseUpEvent2();\n }\n if (isPlatformBrowser(this.platformID) && this.mouseLeaveEvent) {\n this.mouseLeaveEvent();\n }\n }\n\n #positionChange = effect(() => {\n this.setPosition(this.currentX(), this.currentY());\n });\n\n protected panMove(e: MouseEvent) {\n if (this.selectedHandle()) return;\n if (!this.panState()) return;\n\n const currentX = e.clientX;\n const currentY = e.clientY;\n const deltaX = currentX - this.prevX();\n const deltaY = currentY - this.prevY();\n this.currentX.update((prev) => prev + deltaX);\n this.currentY.update((prev) => prev + deltaY);\n this.prevX.set(currentX);\n this.prevY.set(currentY);\n }\n\n protected panDown(e: MouseEvent) {\n if (this.selectedHandle()) return;\n this.panState.set(true);\n this.prevX.set(e.clientX);\n this.prevY.set(e.clientY);\n }\n\n protected panUp() {\n if (this.selectedHandle()) return;\n this.panState.set(false);\n }\n\n public getCropperArea() {\n return (this.elementRef.nativeElement as HTMLElement).getBoundingClientRect();\n }\n\n private setPosition(posX: number, posY: number) {\n const el = this.elementRef.nativeElement as HTMLElement;\n el.style.transform = `translate(${posX}px, ${posY}px)`;\n }\n\n private startX: number;\n private startY: number;\n private startWidth: number;\n private startHeight: number;\n private startLeft: number;\n private startTop: number;\n protected edgeCase = false;\n protected handleSelector(e: MouseEvent, value: string) {\n if (this.panState()) return;\n const host = this.elementRef.nativeElement as HTMLElement;\n this.startX = e.clientX;\n this.startY = e.clientY;\n this.startWidth = host.offsetWidth;\n this.startHeight = host.offsetHeight;\n this.startLeft = host.offsetLeft;\n this.startTop = host.offsetTop;\n this.selectedHandle.set(value);\n }\n\n protected changeSizeHandler(e: MouseEvent) {\n if (this.panState()) return;\n if (!this.selectedHandle()) return;\n\n const host = this.elementRef.nativeElement as HTMLElement;\n const rect = host.getBoundingClientRect();\n\n const dy = e.clientY - this.startY;\n const dx = e.clientX - this.startX;\n\n if (rect.width < 20 || rect.height < 20) {\n this.edgeCase = true;\n return;\n }\n\n switch (this.selectedHandle()) {\n case 'right':\n host.style.width = `${e.movementX + rect.width}px`;\n break;\n case 'top':\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n break;\n case 'left':\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n break;\n case 'bottom':\n host.style.height = `${rect.height + e.movementY}px`;\n break;\n case 'right-top':\n if (this.service.cropperRatio() === '1:1') {\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n host.style.width = `${this.startHeight - dy}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n host.style.width = `${(this.startHeight - dy) * 1.77}px`;\n } else {\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n host.style.width = `${e.movementX + rect.width}px`;\n }\n break;\n case 'bottom-right':\n if (this.service.cropperRatio() === '1:1') {\n host.style.width = `${e.movementX + rect.width}px`;\n host.style.height = `${e.movementX + rect.width}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.height = `${e.movementX + rect.height}px`;\n host.style.width = `${(e.movementX + rect.height) * 1.77}px`;\n } else {\n host.style.height = `${rect.height + e.movementY}px`;\n host.style.width = `${e.movementX + rect.width}px`;\n }\n break;\n case 'bottom-left':\n if (this.service.cropperRatio() === '1:1') {\n host.style.height = `${this.startWidth - dx}px`;\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.height = `${(this.startWidth - dx) / 1.77}px`;\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n } else {\n host.style.height = `${rect.height + e.movementY}px`;\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n }\n break;\n case 'left-top':\n if (this.service.cropperRatio() === '1:1') {\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n host.style.height = `${this.startWidth - dx}px`;\n host.style.top = `${this.startLeft + dx}px`;\n } else if (this.service.cropperRatio() === '16:9') {\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n host.style.height = `${(this.startWidth - dx) / 1.77}px`;\n host.style.top = `${this.startLeft + dx}px`;\n } else {\n host.style.width = `${this.startWidth - dx}px`;\n host.style.left = `${this.startLeft + dx}px`;\n host.style.height = `${this.startHeight - dy}px`;\n host.style.top = `${this.startTop + dy}px`;\n }\n }\n }\n\n protected clearSelector() {\n if (this.panState()) return;\n const host = this.elementRef.nativeElement as HTMLElement;\n\n if (this.edgeCase) {\n host.style.height = `20px`;\n host.style.width = `20px`;\n this.edgeCase = false;\n }\n\n this.selectedHandle.set(null);\n }\n}\n","<div [ngStyle]=\"!showGrid() && { border: '1px dashed white' }\" #r class=\"ax-image-cropper-window-container\">\n @if (!this.service.cropperRatio()) {\n <div (pointerdown)=\"handleSelector($event, 'right')\" class=\"ax-image-right-handle ax-handle-shape\"></div>\n <div (pointerdown)=\"handleSelector($event, 'top')\" class=\"ax-image-top-handle ax-handle-shape\"></div>\n <div (pointerdown)=\"handleSelector($event, 'left')\" class=\"ax-image-left-handle ax-handle-shape\"></div>\n <div (pointerdown)=\"handleSelector($event, 'bottom')\" class=\"ax-image-bottom-handle ax-handle-shape\"></div>\n }\n\n <div (pointerdown)=\"handleSelector($event, 'right-top')\" class=\"ax-image-right-top-handle ax-handle-shape\"></div>\n <div\n (pointerdown)=\"handleSelector($event, 'bottom-right')\"\n class=\"ax-image-bottom-right-handle ax-handle-shape\"\n ></div>\n <div (pointerdown)=\"handleSelector($event, 'bottom-left')\" class=\"ax-image-bottom-left-handle ax-handle-shape\"></div>\n <div (pointerdown)=\"handleSelector($event, 'left-top')\" class=\"ax-image-left-top-handle ax-handle-shape\"></div>\n\n @if (showGrid()) {\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n <div class=\"ax-grid-item\"></div>\n }\n</div>\n","import { MXBaseComponent } from '@acorex/components/common';\r\nimport {\r\n afterNextRender,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n input,\r\n linkedSignal,\r\n OnDestroy,\r\n Renderer2,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXImageEditorContainerComponent } from '../image-editor-container/image-editor-container.component';\r\nimport { AXImageEditorCropperWindowComponent } from '../image-editor-cropper-window/image-editor-cropper-window.component';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n@Component({\r\n selector: 'ax-image-editor-view',\r\n templateUrl: './image-editor-view.component.html',\r\n styleUrls: ['./image-editor-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [AXImageEditorCropperWindowComponent],\r\n})\r\nexport class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {\r\n /**\r\n * its change grid display state.\r\n */\r\n showGrid = input(true);\r\n /**\r\n * its change grid display state.\r\n */\r\n lockRatio = signal(false);\r\n /**\r\n * its receive image src.\r\n */\r\n src = input<string>('');\r\n /** @ignore */\r\n protected canvasElem = viewChild<ElementRef<HTMLCanvasElement>>('canvasElem');\r\n /** @ignore */\r\n protected cropperWindow = viewChild<AXImageEditorCropperWindowComponent>('f');\r\n /** @ignore */\r\n protected ctx = signal<CanvasRenderingContext2D>(null);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected isMouseDown = signal(false);\r\n /** @ignore */\r\n protected isDrawRectangleCreated = signal(false);\r\n /** @ignore */\r\n protected parent = inject(AXImageEditorContainerComponent);\r\n /** @ignore */\r\n protected renderer = inject(Renderer2);\r\n /** @ignore */\r\n protected imageAspect = computed(() => {\r\n return this.service.initialImage().width / this.service.initialImage().height;\r\n });\r\n /** @ignore */\r\n protected imageEditorHistory = signal<HTMLImageElement[]>([]);\r\n /** @ignore */\r\n protected imageEditorHistoryPointer = linkedSignal(() => this.imageEditorHistory().length - 1);\r\n\r\n /** @ignore */\r\n private resizeEventListener;\r\n /** @ignore */\r\n private imageLoadEventListener;\r\n\r\n /** @ignore */\r\n protected resizeWindow() {\r\n this.canvasResponsive(this.service.newImage());\r\n }\r\n\r\n /** @ignore */\r\n protected canvasResponsive(image: HTMLImageElement) {\r\n if (!this.parent.imageEditorContainer()) return;\r\n\r\n const parentWidth = (this.parent.imageEditorContainer().nativeElement as HTMLDivElement).clientWidth;\r\n const imageWidth = this.service.initialImage().width;\r\n\r\n if (parentWidth < imageWidth) {\r\n this.getHostElement().style.width = `${parentWidth}px`;\r\n this.getHostElement().style.height = `${parentWidth * this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = parentWidth;\r\n this.canvasElem().nativeElement.height = parentWidth * this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, parentWidth, parentWidth * this.imageAspect());\r\n } else {\r\n this.getHostElement().style.width = `${imageWidth}px`;\r\n this.getHostElement().style.height = `${imageWidth / this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = imageWidth;\r\n this.canvasElem().nativeElement.height = imageWidth / this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, imageWidth, imageWidth / this.imageAspect());\r\n }\r\n }\r\n\r\n /** @ignore */\r\n constructor() {\r\n super();\r\n afterNextRender(() => {\r\n this.resizeEventListener = this.renderer.listen(window, 'resize', this.resizeWindow.bind(this));\r\n //load image\r\n this.service.initialImage.set(new Image());\r\n this.service.initialImage().src = this.src();\r\n this.service.initialImage().crossOrigin = 'anonymous';\r\n this.imageLoadEventListener = this.renderer.listen(\r\n this.service.initialImage(),\r\n 'load',\r\n this.imageLoaded.bind(this),\r\n );\r\n //set canvas options\r\n this.ctx.set(this.canvasElem().nativeElement.getContext('2d', { willReadFrequently: true }));\r\n this.ctx().lineJoin = 'round';\r\n this.ctx().lineCap = 'round';\r\n });\r\n\r\n effect(() => {\r\n if (this.parent.imageEditorContainer() && this.service.isImageLoad()) {\r\n this.canvasResponsive(this.service.initialImage());\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.undoPressed()) {\r\n this.imageChanged();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.redoPressed()) {\r\n this.imageChanged();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.rotate().userInteract || !this.ctx()) return;\r\n this.rotateImage();\r\n });\r\n }\r\n\r\n /** @ignore */\r\n ngOnDestroy(): void {\r\n if (this.resizeEventListener) {\r\n this.resizeEventListener();\r\n }\r\n\r\n if (this.imageLoadEventListener) {\r\n this.imageLoadEventListener();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected imageLoaded() {\r\n this.imageEditorHistory.set([this.service.initialImage()]);\r\n this.service.newImage.set(this.service.initialImage());\r\n this.service.isImageLoad.set(true);\r\n }\r\n\r\n /** @ignore */\r\n protected imageChanged() {\r\n if (this.service.undoPressed() && this.imageEditorHistoryPointer() >= 1) {\r\n this.imageEditorHistoryPointer.update((prev) => prev - 1);\r\n\r\n this.service.newImage.set(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n this.canvasResponsive(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n }\r\n\r\n if (this.service.redoPressed() && this.imageEditorHistoryPointer() < this.imageEditorHistory().length - 1) {\r\n this.imageEditorHistoryPointer.update((prev) => prev + 1);\r\n this.service.newImage.set(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n this.canvasResponsive(this.imageEditorHistory()[this.imageEditorHistoryPointer()]);\r\n }\r\n\r\n this.service.undoPressed.set(false);\r\n this.service.redoPressed.set(false);\r\n }\r\n\r\n /** @ignore */\r\n protected penConfigHandler(penType: 'pen' | 'highlight') {\r\n switch (penType) {\r\n case 'pen':\r\n this.ctx().globalAlpha = 1;\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineWidth = this.service.penWidth();\r\n break;\r\n case 'highlight':\r\n this.ctx().globalAlpha = 0.008;\r\n this.ctx().strokeStyle = this.service.highlightColor();\r\n this.ctx().lineWidth = this.service.highlightWidth();\r\n break;\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected getBoundingCanvasHandler() {\r\n return this.canvasElem().nativeElement.getBoundingClientRect();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseDownHandler(e: MouseEvent) {\r\n this.isMouseDown.set(true);\r\n\r\n if (!this.service.penType()) return;\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(e.offsetX, e.offsetY);\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseMoveHandler(e: MouseEvent) {\r\n if (!this.isMouseDown()) return;\r\n if (!this.service.penType()) return;\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseUpHandler() {\r\n this.isMouseDown.set(false);\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n\r\n /** @ignore */\r\n cropButtonHandler() {\r\n const cropRect = this.cropperWindow().getCropperArea();\r\n const canvasRect = this.canvasElem().nativeElement.getClientRects()[0];\r\n const dx = cropRect.x - canvasRect.x;\r\n const dy = cropRect.y - canvasRect.y;\r\n\r\n const imageData = this.ctx().getImageData(dx, dy, cropRect.width, cropRect.height);\r\n this.canvasElem().nativeElement.width = cropRect.width;\r\n this.canvasElem().nativeElement.height = cropRect.height;\r\n this.ctx().putImageData(imageData, 0, 0);\r\n this.saveImageChange();\r\n this.service.activeToolState.set(null);\r\n }\r\n\r\n /** @ignore */\r\n protected rotateImage() {\r\n this.ctx().save();\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().translate(this.service.newImage().width / 2, this.service.newImage().height / 2);\r\n this.ctx().rotate((this.service.rotate().state * Math.PI) / 180);\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n -this.service.newImage().width / 2,\r\n -this.service.newImage().height / 2,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\r\n );\r\n this.ctx().restore();\r\n\r\n this.saveImageChange();\r\n this.service.rotate.update((prev) => {\r\n return { state: prev.state, userInteract: false };\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected saveImageChange() {\r\n const newImage = new Image();\r\n newImage.crossOrigin = 'anonymous';\r\n newImage.src = this.canvasElem().nativeElement.toDataURL('image/jpeg', 1);\r\n this.service.newImage.set(newImage);\r\n this.imageEditorHistory.update((prev) => [...prev, newImage]);\r\n\r\n const tempBlob = [];\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/jpeg',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/png',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/webp',\r\n 1,\r\n );\r\n this.service.imageBlob.set(tempBlob);\r\n }\r\n\r\n /** @ignore */\r\n @HostBinding('style')\r\n private get __hostStyle(): string {\r\n return `width: ${this.service.initialImage()?.width}px; height: ${this.service.initialImage()?.height}px`;\r\n }\r\n}\r\n","<canvas\n tabindex=\"1\"\n (pointerdown)=\"mouseDownHandler($event)\"\n (pointerup)=\"mouseUpHandler()\"\n (pointermove)=\"mouseMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n\n@if (this.service.activeToolState() === 'crop') {\n <ax-image-editor-cropper-window [showGrid]=\"showGrid()\" #f></ax-image-editor-cropper-window>\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport {\n AXClearableComponent,\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingSpinnerComponent } from '@acorex/components/loading';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { CommonModule } from '@angular/common';\nimport { Component, contentChild, ElementRef, forwardRef, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXImageEditorCropComponent } from '../image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorHighlightComponent } from '../image-editor-tools/image-editor-highlight/image-editor-highlight.component';\nimport { AXImageEditorPenComponent } from '../image-editor-tools/image-editor-pen/image-editor-pen.component';\nimport { AXImageEditorRotateComponent } from '../image-editor-tools/image-editor-rotate/image-editor-rotate.component';\nimport { AXImageEditorToolSelectorComponent } from '../image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component';\nimport { AXImageEditorViewComponent } from '../image-editor-view/image-editor-view.component';\nimport { AXImageEditorService } from '../image-editor.service';\n\n/**\n * paint container.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-container',\n templateUrl: './image-editor-container.component.html',\n styleUrl: './image-editor-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n outputs: ['onValueChanged'],\n inputs: ['look'],\n providers: [\n AXImageEditorService,\n { provide: AXComponent, useExisting: AXImageEditorContainerComponent },\n { provide: AXFocusableComponent, useExisting: AXImageEditorContainerComponent },\n { provide: AXClearableComponent, useExisting: AXImageEditorContainerComponent },\n { provide: AXValuableComponent, useExisting: AXImageEditorContainerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXImageEditorContainerComponent),\n multi: true,\n },\n ],\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXLoadingSpinnerComponent,\n AXToolBarModule,\n AXImageEditorCropComponent,\n AXButtonModule,\n AXImageEditorToolSelectorComponent,\n AXImageEditorPenComponent,\n AXImageEditorHighlightComponent,\n AXImageEditorRotateComponent,\n ],\n})\nexport class AXImageEditorContainerComponent extends classes(MXInputBaseValueComponent<Blob[]>, MXLookComponent) {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n imageEditorContainer = viewChild<ElementRef>('f');\n\n view = contentChild<AXImageEditorViewComponent>(AXImageEditorViewComponent);\n\n save() {\n if (this.service.initialImage() !== this.service.newImage()) {\n this.commitValue(this.service.imageBlob(), true);\n } else {\n this.commitValue(null);\n }\n }\n\n protected cropButtonHandler() {\n this.view().cropButtonHandler();\n }\n}\n","@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-{{ look }}\">\n <ng-content select=\"ax-header\"></ng-content>\n\n <ng-content select=\"ax-image-editor-view\"> </ng-content>\n\n @if (service.activeToolState()) {\n <ax-toolbar class=\"ax-secondary-toolbar\">\n <ax-prefix>\n @switch (service.activeToolState()) {\n @case ('pen') {\n <ax-image-editor-pen></ax-image-editor-pen>\n }\n @case ('crop') {\n <ax-image-editor-crop (cropPressed)=\"cropButtonHandler()\"></ax-image-editor-crop>\n }\n @case ('highlight') {\n <ax-image-editor-highlight></ax-image-editor-highlight>\n }\n @case ('rotate') {\n <ax-image-editor-rotate></ax-image-editor-rotate>\n }\n }\n </ax-prefix>\n </ax-toolbar>\n }\n\n <ax-toolbar class=\"ax-main-toolbar\">\n <ax-content>\n <ax-image-editor-tool-selector></ax-image-editor-tool-selector>\n </ax-content>\n </ax-toolbar>\n </div>\n <div class=\"ax-error-container\"></div>\n} @else {\n <div class=\"ax-loading-spinner-container\">\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n </div>\n}\n<ng-content select=\"ax-validation-rule\"> </ng-content>\n","import { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-history',\n templateUrl: './image-editor-history.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [AXButtonComponent, AXDecoratorModule, AXTooltipDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXImageEditorHistoryComponent {\n protected service = inject(AXImageEditorService);\n\n protected UndoHandler() {\n this.service.undoPressed.set(true);\n }\n protected RedoHandler() {\n this.service.redoPressed.set(true);\n }\n}\n","<ax-button axTooltip=\"Undo\" axTooltipPlacement=\"top\" (onClick)=\"UndoHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Redo\" axTooltipPlacement=\"top\" (onClick)=\"RedoHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorContainerComponent } from './image-editor-container/image-editor-container.component';\nimport { AXImageEditorCropperWindowComponent } from './image-editor-cropper-window/image-editor-cropper-window.component';\nimport { AXImageEditorCropComponent } from './image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorHighlightComponent } from './image-editor-tools/image-editor-highlight/image-editor-highlight.component';\nimport { AXImageEditorHistoryComponent } from './image-editor-tools/image-editor-history/image-editor-history.component';\nimport { AXImageEditorPenComponent } from './image-editor-tools/image-editor-pen/image-editor-pen.component';\nimport { AXImageEditorRotateComponent } from './image-editor-tools/image-editor-rotate/image-editor-rotate.component';\nimport { AXImageEditorToolSelectorComponent } from './image-editor-tools/image-editor-tool-selector/image-editor-tool-selector.component';\nimport { AXImageEditorViewComponent } from './image-editor-view/image-editor-view.component';\n\nconst COMPONENT = [\n AXImageEditorViewComponent,\n AXImageEditorContainerComponent,\n AXImageEditorCropComponent,\n AXImageEditorHistoryComponent,\n AXImageEditorToolSelectorComponent,\n AXImageEditorPenComponent,\n AXImageEditorHighlightComponent,\n AXImageEditorRotateComponent,\n AXImageEditorCropperWindowComponent,\n];\n\nconst MODULES = [\n AXButtonModule,\n FormsModule,\n AXRangeSliderModule,\n AXSelectBoxModule,\n AXColorBoxModule,\n AXPopoverModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXDialogModule,\n AXTooltipModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXImageEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}