@acorex/components 19.0.1 → 19.1.0-next.1
Sign up to get free protection for your applications and to get access to all the features.
- package/color-box/lib/color-box.component.d.ts +2 -1
- package/color-palette/lib/color-palette-picker.component.d.ts +3 -3
- package/conversation/lib/conversation-message/conversation-message.component.d.ts +5 -9
- package/conversation/lib/conversation-view/conversation-view.component.d.ts +8 -21
- package/conversation/lib/conversation.module.d.ts +2 -1
- package/data-pager/index.d.ts +1 -1
- package/data-pager/lib/data-pager-numeric-selector.component.d.ts +8 -0
- package/data-pager/lib/data-pager.module.d.ts +1 -1
- package/fesm2022/acorex-components-color-box.mjs +30 -4
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +23 -11
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-common.mjs +20 -8
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +39 -45
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +39 -8
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +8 -6
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +1 -0
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +2 -2
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +12 -24
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +2 -2
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +8 -3
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/otp/lib/otp.component.d.ts +3 -11
- package/package.json +1 -1
- package/tabs/lib/tabs.component.d.ts +1 -0
- /package/data-pager/lib/{data-pager-next-buttons.components.d.ts → data-pager-next-buttons.component.d.ts} +0 -0
@@ -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-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-toolbar/image-editor-toolbar.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-toolbar/image-editor-toolbar.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.html","../../../../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-pen-mode-changer/image-editor-pen-mode-changer.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.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.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 penColor = signal<string | CanvasGradient | CanvasPattern>('');\n lineCap = signal<CanvasLineCap>('round');\n lineWidth = signal<number>(10);\n penType = signal<'pen' | 'highlight'>('pen');\n toggleClear = signal({ state: false, userInteract: false });\n cropState = signal({ state: false, userInteract: false });\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}\n","import { MXLookComponent } from '@acorex/components/common';\nimport { Component, ElementRef, inject, viewChild, ViewEncapsulation } from '@angular/core';\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 providers: [AXImageEditorService],\n standalone: false\n})\nexport class AXImageEditorContainerComponent extends MXLookComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n imageEditorContainer = viewChild<ElementRef>('f');\n}\n","@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-look-solid\">\n <ng-content> </ng-content>\n </div>\n} @else {\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n}\n","import {\r\n AXClearableComponent,\r\n AXComponent,\r\n AXFocusableComponent,\r\n AXStyleColorType,\r\n AXValuableComponent,\r\n MXInputBaseValueComponent,\r\n} from '@acorex/components/common';\r\nimport { AXDialogService } from '@acorex/components/dialog';\r\nimport { Component, forwardRef, inject, signal, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n/**\r\n *paint toolbar\r\n * @category Components\r\n */\r\n@Component({\n selector: 'ax-image-editor-toolbar',\n templateUrl: './image-editor-toolbar.component.html',\n styleUrl: './image-editor-toolbar.component.scss',\n encapsulation: ViewEncapsulation.None,\n outputs: ['onValueChanged'],\n providers: [\n { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXImageEditorToolbarComponent),\n multi: true,\n },\n ],\n standalone: false\n})\r\nexport class AXImageEditorToolbarComponent extends MXInputBaseValueComponent<Blob[]> {\r\n /** @ignore */\r\n protected dialogService: AXDialogService = inject(AXDialogService);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected options = signal({\r\n color: 'primary',\r\n title: 'Attention',\r\n vertical: false,\r\n content: 'Do you want to save changes?',\r\n orientation: 'vertical' as any,\r\n draggable: true,\r\n });\r\n\r\n /** @ignore */\r\n protected saveHandler() {\r\n if (this.service.initialImage() !== this.service.newImage()) {\r\n this.dialogService\r\n .confirm(\r\n this.options().title,\r\n this.options().content,\r\n this.options().color as AXStyleColorType,\r\n this.options().orientation,\r\n this.options().draggable,\r\n )\r\n .then((data) => {\r\n if (data.result) {\r\n this.service.initialImage.set(this.service.newImage());\r\n this.commitValue(this.service.imageBlob());\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"ax-toolbar-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n<ax-button color=\"primary\" (onClick)=\"saveHandler()\" class=\"ax-save-btn ax-sm\" text=\"Save\"></ax-button>\n","import { Component, HostBinding, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint color picker.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-color-picker',\n templateUrl: './image-editor-color-picker.component.html',\n styles: `\n ax-image-editor-color-picker {\n margin-inline: 0 !important;\n\n .ax-submit-color {\n border: 1px solid rgba(var(--ax-color-text-default));\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 1000vmax;\n }\n .ax-color-flex-container {\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorColorPickerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected selectedColor = signal('rgb(12, 12, 12)');\n\n /** @ignore */\n protected changeColorHandler(e: string) {\n this.service.penColor.set(e);\n this.selectedColor.set(e);\n }\n\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n}\n","<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"outline\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n","import { 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-crop',\n templateUrl: './image-editor-crop.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorCropComponent {\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 /** @ignore */\n protected crop() {\n this.service.cropState.update((prev) => {\n return { userInteract: true, state: !prev.state };\n });\n }\n}\n","<ax-button\n axTooltip=\"Crop Image\"\n axTooltipPlacement=\"top\"\n [selected]=\"service.cropState().state && true\"\n (click)=\"crop()\"\n look=\"blank\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></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-redo\"></ax-icon>\n</ax-button>\n","import { AXPlacement } from '@acorex/components/common';\nimport { AXPopoverCloseTrigger, AXPopoverOpenTrigger } from '@acorex/components/popover';\nimport { Component, HostBinding, inject, signal, 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-pen-mode-changer',\n templateUrl: './image-editor-pen-mode-changer.component.html',\n styleUrl: './image-editor-pen-mode-changer.component.scss',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorPenModeChangerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected value = 10;\n\n /** @ignore */\n protected popoverOption: {\n openOn: AXPopoverOpenTrigger;\n closeOn: AXPopoverCloseTrigger;\n placement: AXPlacement;\n offsetX: number;\n offsetY: number;\n } = {\n openOn: 'click',\n closeOn: 'clickOut',\n placement: 'top',\n offsetX: 0,\n offsetY: 0,\n };\n\n /** @ignore */\n protected selectedPenType = signal<'pen' | 'highlight'>('pen');\n\n /** @ignore */\n protected penTypeHandler(e: 'pen' | 'highlight') {\n this.service.penType.set(e);\n }\n\n /** @ignore */\n protected clear() {\n this.service.toggleClear.set({ userInteract: true, state: true });\n }\n\n /** @ignore */\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.lineWidth.set(e);\n }\n}\n","<ax-button axTooltip=\"Draw Utilities\" axTooltipPlacement=\"top\" look=\"blank\" #alignPop>\n @switch (service.penType()) {\n @case ('pen') {\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n }\n @case ('highlight') {\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n }\n }\n</ax-button>\n\n<ax-button axTooltip=\"Reset Changes\" axTooltipPlacement=\"top\" (click)=\"clear()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-refresh\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-button\n (click)=\"penTypeHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'pen' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n </ax-button>\n\n <ax-button\n (click)=\"penTypeHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'highlight' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n\n <div class=\"ax-paint-width-slider\">\n <ax-range-slider\n [min]=\"2\"\n [max]=\"20\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"valueHandler($event)\"\n ></ax-range-slider>\n </div>\n </div>\n</ax-popover>\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 NgZone,\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 { 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 standalone: false,\r\n})\r\nexport class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {\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 ctx = signal<CanvasRenderingContext2D>(null);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected cropImageData = signal<ImageData>(null);\r\n /** @ignore */\r\n protected isMouseDown = signal(false);\r\n /** @ignore */\r\n protected cropStartX = signal(0);\r\n /** @ignore */\r\n protected cropStartY = signal(0);\r\n /** @ignore */\r\n protected cropEndX = signal(0);\r\n /** @ignore */\r\n protected cropEndY = signal(0);\r\n /** @ignore */\r\n protected parent = inject(AXImageEditorContainerComponent);\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\r\n private ngZone = inject(NgZone);\r\n\r\n /** @ignore */\r\n resizeEventListener;\r\n /** @ignore */\r\n 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 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 = this.service.lineCap();\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.ctx().globalAlpha = 1;\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.toggleClear().userInteract) return;\r\n if (this.service.toggleClear().state) {\r\n this.imageLoaded();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.cropState().userInteract || !this.ctx()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().filter = 'brightness(40%)';\r\n } else {\r\n this.ctx().filter = 'brightness(100%)';\r\n }\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n 0,\r\n 0,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\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.service.newImage.set(this.service.initialImage());\r\n this.service.toggleClear.set({ userInteract: false, state: false });\r\n this.service.isImageLoad.set(true);\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 break;\r\n case 'highlight':\r\n this.ctx().globalAlpha = 0.008;\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.cropState().state) {\r\n this.cropStartX.set(e.offsetX);\r\n this.cropStartY.set(e.offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\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\r\n /** @ignore */\r\n protected mouseMoveHandler(e: MouseEvent) {\r\n if (!this.isMouseDown()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(e.offsetX);\r\n this.cropEndY.set(e.offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected mouseUpHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchStartHandler(e: TouchEvent) {\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n this.isMouseDown.set(true);\r\n\r\n if (this.service.cropState().state) {\r\n this.cropStartX.set(offsetX);\r\n this.cropStartY.set(offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(offsetX, offsetY);\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchMoveHandler(e: TouchEvent) {\r\n e.preventDefault(); // prevent page from scroll\r\n if (!this.isMouseDown()) return;\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(offsetX);\r\n this.cropEndY.set(offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchEndHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected drawSelection() {\r\n this.ngZone.runOutsideAngular(() => {\r\n const cropWidth = this.cropEndX() - this.cropStartX();\r\n const cropHeight = this.cropEndY() - this.cropStartY();\r\n\r\n this.ctx().clearRect(\r\n 0,\r\n 0,\r\n this.canvasElem().nativeElement.width,\r\n this.canvasElem().nativeElement.height,\r\n );\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n this.ctx().strokeStyle = 'white';\r\n this.ctx().setLineDash([4, 10]);\r\n this.ctx().lineWidth = 2;\r\n this.ctx().strokeRect(this.cropStartX(), this.cropStartY(), cropWidth, cropHeight);\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected cropImageFunction() {\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n\r\n let imageData: ImageData;\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropEndY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropEndY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropStartY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropStartY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n }\r\n\r\n const data: Uint8ClampedArray = imageData.data;\r\n\r\n const brightnessFactor = 2.4; // Increase brightness by 20%\r\n for (let i = 0; i < data.length; i += 4) {\r\n data[i] = data[i] * brightnessFactor; // Red\r\n data[i + 1] = data[i + 1] * brightnessFactor; // Green\r\n data[i + 2] = data[i + 2] * brightnessFactor; // Blue\r\n }\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropEndY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropEndY());\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropStartY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropStartY());\r\n }\r\n\r\n this.cropImageData.set(imageData);\r\n }\r\n\r\n /** @ignore */\r\n protected cropButtonHandler() {\r\n let cropWidth: number;\r\n let cropHeight: number;\r\n\r\n this.service.rotate.update((prev) => {\r\n return { userInteract: false, state: prev.state };\r\n });\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n }\r\n\r\n this.canvasElem().nativeElement.width = cropWidth;\r\n this.canvasElem().nativeElement.height = cropHeight;\r\n\r\n this.ctx().putImageData(this.cropImageData(), 0, 0);\r\n this.saveImageChange();\r\n this.cropImageData.set(null);\r\n this.service.cropState.set({ userInteract: false, state: false });\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\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 (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\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 { AXImageEditorToolbarComponent } from './image-editor-toolbar/image-editor-toolbar.component';\nimport { AXImageEditorColorPickerComponent } from './image-editor-tools/image-editor-color-picker/image-editor-color-picker.component';\nimport { AXImageEditorCropComponent } from './image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorPenModeChangerComponent } from './image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component';\nimport { AXImageEditorViewComponent } from './image-editor-view/image-editor-view.component';\n\nconst COMPONENT = [\n AXImageEditorToolbarComponent,\n AXImageEditorColorPickerComponent,\n AXImageEditorPenModeChangerComponent,\n AXImageEditorViewComponent,\n AXImageEditorContainerComponent,\n AXImageEditorCropComponent,\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 declarations: [...COMPONENT],\n imports: [...MODULES],\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","i2","i3","i5","i6"],"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-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-toolbar/image-editor-toolbar.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-toolbar/image-editor-toolbar.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.html","../../../../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-pen-mode-changer/image-editor-pen-mode-changer.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.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.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 penColor = signal<string | CanvasGradient | CanvasPattern>('');\n lineCap = signal<CanvasLineCap>('round');\n lineWidth = signal<number>(10);\n penType = signal<'pen' | 'highlight'>('pen');\n toggleClear = signal({ state: false, userInteract: false });\n cropState = signal({ state: false, userInteract: false });\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}\n","import { MXLookComponent } from '@acorex/components/common';\nimport { Component, ElementRef, inject, viewChild, ViewEncapsulation } from '@angular/core';\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 providers: [AXImageEditorService],\n standalone: false\n})\nexport class AXImageEditorContainerComponent extends MXLookComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n imageEditorContainer = viewChild<ElementRef>('f');\n}\n","@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-look-solid\">\n <ng-content> </ng-content>\n </div>\n} @else {\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n}\n","import {\r\n AXClearableComponent,\r\n AXComponent,\r\n AXFocusableComponent,\r\n AXStyleColorType,\r\n AXValuableComponent,\r\n MXInputBaseValueComponent,\r\n} from '@acorex/components/common';\r\nimport { AXDialogService } from '@acorex/components/dialog';\r\nimport { Component, forwardRef, inject, signal, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n/**\r\n *paint toolbar\r\n * @category Components\r\n */\r\n@Component({\n selector: 'ax-image-editor-toolbar',\n templateUrl: './image-editor-toolbar.component.html',\n styleUrl: './image-editor-toolbar.component.scss',\n encapsulation: ViewEncapsulation.None,\n outputs: ['onValueChanged'],\n providers: [\n { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXImageEditorToolbarComponent),\n multi: true,\n },\n ],\n standalone: false\n})\r\nexport class AXImageEditorToolbarComponent extends MXInputBaseValueComponent<Blob[]> {\r\n /** @ignore */\r\n protected dialogService: AXDialogService = inject(AXDialogService);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected options = signal({\r\n color: 'primary',\r\n title: 'Attention',\r\n vertical: false,\r\n content: 'Do you want to save changes?',\r\n orientation: 'vertical' as any,\r\n draggable: true,\r\n });\r\n\r\n /** @ignore */\r\n protected saveHandler() {\r\n if (this.service.initialImage() !== this.service.newImage()) {\r\n this.dialogService\r\n .confirm(\r\n this.options().title,\r\n this.options().content,\r\n this.options().color as AXStyleColorType,\r\n this.options().orientation,\r\n this.options().draggable,\r\n )\r\n .then((data) => {\r\n if (data.result) {\r\n this.service.initialImage.set(this.service.newImage());\r\n this.commitValue(this.service.imageBlob());\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"ax-toolbar-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n<ax-button color=\"primary\" (onClick)=\"saveHandler()\" class=\"ax-save-btn ax-sm\" text=\"Save\"></ax-button>\n","import { Component, HostBinding, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint color picker.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-color-picker',\n templateUrl: './image-editor-color-picker.component.html',\n styles: `\n ax-image-editor-color-picker {\n margin-inline: 0 !important;\n\n .ax-submit-color {\n border: 1px solid rgba(var(--ax-color-text-default));\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 1000vmax;\n }\n .ax-color-flex-container {\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorColorPickerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected selectedColor = signal('rgb(12, 12, 12)');\n\n /** @ignore */\n protected changeColorHandler(e: string) {\n this.service.penColor.set(e);\n this.selectedColor.set(e);\n }\n\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n}\n","<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"outline\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n","import { 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-crop',\n templateUrl: './image-editor-crop.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorCropComponent {\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 /** @ignore */\n protected crop() {\n this.service.cropState.update((prev) => {\n return { userInteract: true, state: !prev.state };\n });\n }\n}\n","<ax-button\n axTooltip=\"Crop Image\"\n axTooltipPlacement=\"top\"\n [selected]=\"service.cropState().state && true\"\n (click)=\"crop()\"\n look=\"blank\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></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-redo\"></ax-icon>\n</ax-button>\n","import { AXPlacement } from '@acorex/components/common';\nimport { AXPopoverCloseTrigger, AXPopoverOpenTrigger } from '@acorex/components/popover';\nimport { Component, HostBinding, inject, signal, 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-pen-mode-changer',\n templateUrl: './image-editor-pen-mode-changer.component.html',\n styleUrl: './image-editor-pen-mode-changer.component.scss',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorPenModeChangerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected value = 10;\n\n /** @ignore */\n protected popoverOption: {\n openOn: AXPopoverOpenTrigger;\n closeOn: AXPopoverCloseTrigger;\n placement: AXPlacement;\n offsetX: number;\n offsetY: number;\n } = {\n openOn: 'click',\n closeOn: 'clickOut',\n placement: 'top',\n offsetX: 0,\n offsetY: 0,\n };\n\n /** @ignore */\n protected selectedPenType = signal<'pen' | 'highlight'>('pen');\n\n /** @ignore */\n protected penTypeHandler(e: 'pen' | 'highlight') {\n this.service.penType.set(e);\n }\n\n /** @ignore */\n protected clear() {\n this.service.toggleClear.set({ userInteract: true, state: true });\n }\n\n /** @ignore */\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.lineWidth.set(e);\n }\n}\n","<ax-button axTooltip=\"Draw Utilities\" axTooltipPlacement=\"top\" look=\"blank\" #alignPop>\n @switch (service.penType()) {\n @case ('pen') {\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n }\n @case ('highlight') {\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n }\n }\n</ax-button>\n\n<ax-button axTooltip=\"Reset Changes\" axTooltipPlacement=\"top\" (click)=\"clear()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-refresh\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-button\n (click)=\"penTypeHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'pen' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n </ax-button>\n\n <ax-button\n (click)=\"penTypeHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'highlight' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n\n <div class=\"ax-paint-width-slider\">\n <ax-range-slider\n [min]=\"2\"\n [max]=\"20\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"valueHandler($event)\"\n ></ax-range-slider>\n </div>\n </div>\n</ax-popover>\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 NgZone,\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 { 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 standalone: false,\r\n})\r\nexport class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {\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 ctx = signal<CanvasRenderingContext2D>(null);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected cropImageData = signal<ImageData>(null);\r\n /** @ignore */\r\n protected isMouseDown = signal(false);\r\n /** @ignore */\r\n protected cropStartX = signal(0);\r\n /** @ignore */\r\n protected cropStartY = signal(0);\r\n /** @ignore */\r\n protected cropEndX = signal(0);\r\n /** @ignore */\r\n protected cropEndY = signal(0);\r\n /** @ignore */\r\n protected parent = inject(AXImageEditorContainerComponent);\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\r\n private ngZone = inject(NgZone);\r\n\r\n /** @ignore */\r\n resizeEventListener;\r\n /** @ignore */\r\n 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 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 = this.service.lineCap();\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.ctx().globalAlpha = 1;\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.toggleClear().userInteract) return;\r\n if (this.service.toggleClear().state) {\r\n this.imageLoaded();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.cropState().userInteract || !this.ctx()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().filter = 'brightness(40%)';\r\n } else {\r\n this.ctx().filter = 'brightness(100%)';\r\n }\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n 0,\r\n 0,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\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.service.newImage.set(this.service.initialImage());\r\n this.service.toggleClear.set({ userInteract: false, state: false });\r\n this.service.isImageLoad.set(true);\r\n this.canvasResponsive(this.service.initialImage());\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 break;\r\n case 'highlight':\r\n this.ctx().globalAlpha = 0.008;\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.cropState().state) {\r\n this.cropStartX.set(e.offsetX);\r\n this.cropStartY.set(e.offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\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\r\n /** @ignore */\r\n protected mouseMoveHandler(e: MouseEvent) {\r\n if (!this.isMouseDown()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(e.offsetX);\r\n this.cropEndY.set(e.offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected mouseUpHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchStartHandler(e: TouchEvent) {\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n this.isMouseDown.set(true);\r\n\r\n if (this.service.cropState().state) {\r\n this.cropStartX.set(offsetX);\r\n this.cropStartY.set(offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(offsetX, offsetY);\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchMoveHandler(e: TouchEvent) {\r\n e.preventDefault(); // prevent page from scroll\r\n if (!this.isMouseDown()) return;\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(offsetX);\r\n this.cropEndY.set(offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchEndHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected drawSelection() {\r\n this.ngZone.runOutsideAngular(() => {\r\n const cropWidth = this.cropEndX() - this.cropStartX();\r\n const cropHeight = this.cropEndY() - this.cropStartY();\r\n\r\n this.ctx().clearRect(\r\n 0,\r\n 0,\r\n this.canvasElem().nativeElement.width,\r\n this.canvasElem().nativeElement.height,\r\n );\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n this.ctx().strokeStyle = 'white';\r\n this.ctx().setLineDash([4, 10]);\r\n this.ctx().lineWidth = 2;\r\n this.ctx().strokeRect(this.cropStartX(), this.cropStartY(), cropWidth, cropHeight);\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected cropImageFunction() {\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n\r\n let imageData: ImageData;\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropEndY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropEndY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropStartY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropStartY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n }\r\n\r\n const data: Uint8ClampedArray = imageData.data;\r\n\r\n const brightnessFactor = 2.4; // Increase brightness by 20%\r\n for (let i = 0; i < data.length; i += 4) {\r\n data[i] = data[i] * brightnessFactor; // Red\r\n data[i + 1] = data[i + 1] * brightnessFactor; // Green\r\n data[i + 2] = data[i + 2] * brightnessFactor; // Blue\r\n }\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropEndY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropEndY());\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropStartY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropStartY());\r\n }\r\n\r\n this.cropImageData.set(imageData);\r\n }\r\n\r\n /** @ignore */\r\n protected cropButtonHandler() {\r\n let cropWidth: number;\r\n let cropHeight: number;\r\n\r\n this.service.rotate.update((prev) => {\r\n return { userInteract: false, state: prev.state };\r\n });\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n }\r\n\r\n this.canvasElem().nativeElement.width = cropWidth;\r\n this.canvasElem().nativeElement.height = cropHeight;\r\n\r\n this.ctx().putImageData(this.cropImageData(), 0, 0);\r\n this.saveImageChange();\r\n this.cropImageData.set(null);\r\n this.service.cropState.set({ userInteract: false, state: false });\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\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 (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\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 { AXImageEditorToolbarComponent } from './image-editor-toolbar/image-editor-toolbar.component';\nimport { AXImageEditorColorPickerComponent } from './image-editor-tools/image-editor-color-picker/image-editor-color-picker.component';\nimport { AXImageEditorCropComponent } from './image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorPenModeChangerComponent } from './image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component';\nimport { AXImageEditorViewComponent } from './image-editor-view/image-editor-view.component';\n\nconst COMPONENT = [\n AXImageEditorToolbarComponent,\n AXImageEditorColorPickerComponent,\n AXImageEditorPenModeChangerComponent,\n AXImageEditorViewComponent,\n AXImageEditorContainerComponent,\n AXImageEditorCropComponent,\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 declarations: [...COMPONENT],\n imports: [...MODULES],\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","i2","i3","i5","i6"],"mappings":"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"}
|
@@ -65,11 +65,11 @@ class AXLabelComponent extends MXBaseComponent {
|
|
65
65
|
});
|
66
66
|
}
|
67
67
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXLabelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXLabelComponent, isStandalone: false, selector: "ax-label", inputs: { required: "required", for: "for" }, outputs: { requiredChange: "requiredChange" }, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], usesInheritance: true, ngImport: i0, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: ["ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXLabelComponent, isStandalone: false, selector: "ax-label", inputs: { required: "required", for: "for" }, outputs: { requiredChange: "requiredChange" }, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], usesInheritance: true, ngImport: i0, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: [".ax-dark ax-label.ax-state-error{color:rgba(var(--ax-color-danger-200))!important}ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
69
69
|
}
|
70
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXLabelComponent, decorators: [{
|
71
71
|
type: Component,
|
72
|
-
args: [{ selector: 'ax-label', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], standalone: false, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: ["ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"] }]
|
72
|
+
args: [{ selector: 'ax-label', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], standalone: false, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: [".ax-dark ax-label.ax-state-error{color:rgba(var(--ax-color-danger-200))!important}ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"] }]
|
73
73
|
}], propDecorators: { requiredChange: [{
|
74
74
|
type: Output
|
75
75
|
}], required: [{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-label.mjs","sources":["../../../../libs/components/label/src/lib/label.component.ts","../../../../libs/components/label/src/lib/label.component.html","../../../../libs/components/label/src/lib/label.module.ts","../../../../libs/components/label/src/acorex-components-label.ts"],"sourcesContent":["import { MXBaseComponent, MXValueComponent } from '@acorex/components/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a label component that provides a way to display text labels within the application.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }],\n standalone: false\n})\nexport class AXLabelComponent extends MXBaseComponent {\n /**\n * Emitted when the `required` property changes.\n *\n * @event\n */\n @Output()\n requiredChange = new EventEmitter<boolean>();\n\n /**\n * @ignore\n */\n private _required?: boolean | null = null;\n\n /**\n * Determines if the field is required.\n *\n * @defaultValue false\n */\n @Input()\n public get required(): boolean {\n return this._required;\n }\n /**\n * Sets whether the field is required.\n *\n * @param v - A boolean indicating if the field is required.\n */\n public set required(v: boolean) {\n this.setOption({\n name: 'required',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n /**\n * @ignore\n */\n private _for: MXValueComponent;\n\n /**\n * Gets the form control or component associated with the label.\n */\n @Input()\n public get for(): MXValueComponent {\n return this._for;\n }\n /**\n * Sets the form control or component associated with the label.\n *\n * @param v The `MXValueComponent` to associate with the label.\n */\n public set for(v: MXValueComponent) {\n this.setOption({\n name: 'for',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n","<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXLabelComponent } from './label.component';\n\nconst COMPONENT = [AXLabelComponent];\nconst MODULES = [CommonModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA;;;;AAIG;AAUG,MAAO,gBAAiB,SAAQ,eAAe,CAAA;AATrD,IAAA,WAAA,GAAA;;AAUE;;;;AAIG;AAEH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAE5C;;AAEG;QACK,IAAS,CAAA,SAAA,GAAoB,IAAI;AAoD1C;AAlDC;;;;AAIG;AACH,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;AAEvB;;;;AAIG;IACH,IAAW,QAAQ,CAAC,CAAU,EAAA;QAC5B,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;aACxB;AACF,SAAA,CAAC;;AAQJ;;AAEG;AACH,IAAA,IACW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI;;AAElB;;;;AAIG;IACH,IAAW,GAAG,CAAC,CAAmB,EAAA;QAChC,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;aACxB;AACF,SAAA,CAAC;;8GA9DO,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAHd,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,iDCd5E,iPAKQ,EAAA,MAAA,EAAA,CAAA,
|
1
|
+
{"version":3,"file":"acorex-components-label.mjs","sources":["../../../../libs/components/label/src/lib/label.component.ts","../../../../libs/components/label/src/lib/label.component.html","../../../../libs/components/label/src/lib/label.module.ts","../../../../libs/components/label/src/acorex-components-label.ts"],"sourcesContent":["import { MXBaseComponent, MXValueComponent } from '@acorex/components/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a label component that provides a way to display text labels within the application.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }],\n standalone: false\n})\nexport class AXLabelComponent extends MXBaseComponent {\n /**\n * Emitted when the `required` property changes.\n *\n * @event\n */\n @Output()\n requiredChange = new EventEmitter<boolean>();\n\n /**\n * @ignore\n */\n private _required?: boolean | null = null;\n\n /**\n * Determines if the field is required.\n *\n * @defaultValue false\n */\n @Input()\n public get required(): boolean {\n return this._required;\n }\n /**\n * Sets whether the field is required.\n *\n * @param v - A boolean indicating if the field is required.\n */\n public set required(v: boolean) {\n this.setOption({\n name: 'required',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n /**\n * @ignore\n */\n private _for: MXValueComponent;\n\n /**\n * Gets the form control or component associated with the label.\n */\n @Input()\n public get for(): MXValueComponent {\n return this._for;\n }\n /**\n * Sets the form control or component associated with the label.\n *\n * @param v The `MXValueComponent` to associate with the label.\n */\n public set for(v: MXValueComponent) {\n this.setOption({\n name: 'for',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n","<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXLabelComponent } from './label.component';\n\nconst COMPONENT = [AXLabelComponent];\nconst MODULES = [CommonModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA;;;;AAIG;AAUG,MAAO,gBAAiB,SAAQ,eAAe,CAAA;AATrD,IAAA,WAAA,GAAA;;AAUE;;;;AAIG;AAEH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAE5C;;AAEG;QACK,IAAS,CAAA,SAAA,GAAoB,IAAI;AAoD1C;AAlDC;;;;AAIG;AACH,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;AAEvB;;;;AAIG;IACH,IAAW,QAAQ,CAAC,CAAU,EAAA;QAC5B,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;aACxB;AACF,SAAA,CAAC;;AAQJ;;AAEG;AACH,IAAA,IACW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI;;AAElB;;;;AAIG;IACH,IAAW,GAAG,CAAC,CAAmB,EAAA;QAChC,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;aACxB;AACF,SAAA,CAAC;;8GA9DO,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAHd,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,iDCd5E,iPAKQ,EAAA,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDYK,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;+BACI,UAAU,EAAA,eAAA,EAGH,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,kBAAkB,EAAE,CAAC,cAC5D,KAAK,EAAA,QAAA,EAAA,iPAAA,EAAA,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA;8BASnB,cAAc,EAAA,CAAA;sBADb;gBAcU,QAAQ,EAAA,CAAA;sBADlB;gBA4BU,GAAG,EAAA,CAAA;sBADb;;;AE3DH,MAAM,SAAS,GAAG,CAAC,gBAAgB,CAAC;AACpC,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC;MAQjB,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EATP,YAAA,EAAA,CAAA,gBAAgB,CAClB,EAAA,OAAA,EAAA,CAAA,YAAY,aADV,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAStB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJX,OAAO,CAAA,EAAA,CAAA,CAAA;;2FAIT,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;AAC5B,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;AACrB,oBAAA,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;ACZD;;AAEG;;;;"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { AXEvent, MXValueComponent, MXLookComponent } from '@acorex/components/common';
|
2
2
|
import * as i0 from '@angular/core';
|
3
|
-
import { model, output,
|
3
|
+
import { model, output, computed, afterNextRender, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
|
4
4
|
import * as i2 from '@angular/forms';
|
5
5
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
6
6
|
import { classes } from 'polytype';
|
@@ -34,33 +34,26 @@ class AXOtpComponent extends classes((MXValueComponent), MXLookComponent) {
|
|
34
34
|
/**
|
35
35
|
* Holds the input values as a signal.
|
36
36
|
*/
|
37
|
-
this.inputs =
|
38
|
-
this.changeInputs = effect(() => {
|
39
|
-
this.inputs();
|
40
|
-
this.cdr.detectChanges();
|
37
|
+
this.inputs = computed(() => {
|
41
38
|
this.calcFontSize();
|
39
|
+
//
|
40
|
+
return Array(this.length())
|
41
|
+
.fill(1)
|
42
|
+
.map((x, i) => i);
|
42
43
|
});
|
43
|
-
|
44
|
-
this.
|
44
|
+
afterNextRender(() => {
|
45
|
+
this.calcFontSize();
|
46
|
+
this.mapValueToInputs();
|
45
47
|
});
|
46
48
|
}
|
47
|
-
/** @ignore */
|
48
|
-
ngOnInit() {
|
49
|
-
super.ngOnInit();
|
50
|
-
this._render();
|
51
|
-
}
|
52
|
-
/** @ignore */
|
53
|
-
ngAfterViewInit() {
|
54
|
-
this.calcFontSize();
|
55
|
-
this.mapValueToInputs();
|
56
|
-
}
|
57
49
|
/**
|
58
50
|
* Converts the value string to input values and updates the inputValues array.
|
59
51
|
*/
|
60
52
|
mapValueToInputs() {
|
61
53
|
this._emitOnComplete();
|
62
|
-
if (!this.value)
|
54
|
+
if (!this.value) {
|
63
55
|
return;
|
56
|
+
}
|
64
57
|
this.value.split('').map((v, i) => {
|
65
58
|
this.inputValues[i] = v;
|
66
59
|
});
|
@@ -75,12 +68,6 @@ class AXOtpComponent extends classes((MXValueComponent), MXLookComponent) {
|
|
75
68
|
}
|
76
69
|
}
|
77
70
|
/** @ignore */
|
78
|
-
_render() {
|
79
|
-
this.inputs.set(Array(this.length())
|
80
|
-
.fill(1)
|
81
|
-
.map((x, i) => i));
|
82
|
-
}
|
83
|
-
/** @ignore */
|
84
71
|
_handleOnInput(event, i) {
|
85
72
|
const inputs = this.getHostElement().querySelectorAll('.ax-input');
|
86
73
|
const numberRegex = /^\d+$/;
|
@@ -158,6 +145,7 @@ class AXOtpComponent extends classes((MXValueComponent), MXLookComponent) {
|
|
158
145
|
for (let i = 0; i < inputs.length; i++) {
|
159
146
|
this.inputValues[i] = data[i];
|
160
147
|
}
|
148
|
+
this._emitOnComplete();
|
161
149
|
}
|
162
150
|
event.preventDefault();
|
163
151
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-otp.mjs","sources":["../../../../libs/components/otp/src/lib/otp.class.ts","../../../../libs/components/otp/src/lib/otp.component.ts","../../../../libs/components/otp/src/lib/otp.component.html","../../../../libs/components/otp/src/lib/otp.module.ts","../../../../libs/components/otp/src/acorex-components-otp.ts"],"sourcesContent":["import { AXEvent } from '@acorex/components/common';\n\nexport class AXOtpCompletedEvent extends AXEvent {\n value: string;\n isCompleted: boolean;\n}\n","import { MXLookComponent, MXValueComponent } from '@acorex/components/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n OnInit,\n ViewEncapsulation,\n effect,\n forwardRef,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXOtpCompletedEvent } from './otp.class';\n\n/**\n * @category\n * A component for OTP input fields with state management and custom styling support.\n */\n@Component({\n selector: 'ax-otp',\n templateUrl: './otp.component.html',\n styleUrls: ['./otp.component.scss'],\n inputs: ['state', 'disabled', 'readonly', 'look'],\n outputs: ['stateChange', 'disabledChange'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXOtpComponent),\n multi: true,\n },\n ],\n standalone: false,\n})\nexport class AXOtpComponent\n extends classes(MXValueComponent<string>, MXLookComponent)\n implements OnInit, AfterViewInit\n{\n /**\n * Holds the length of the OTP input field.\n */\n length = model<number>();\n\n /**\n * @event\n * Emits an event when the OTP input is completed.\n */\n onCompleted = output<AXOtpCompletedEvent>();\n\n /**\n * Stores the values entered in the OTP input fields.\n */\n inputValues: string[] = [];\n\n /**\n * Holds the input values as a signal.\n */\n inputs = signal<number[]>([]);\n\n private changeInputs = effect(() => {\n this.inputs();\n this.cdr.detectChanges();\n this.calcFontSize();\n });\n\n /** @ignore */\n constructor() {\n super();\n effect(() => {\n this._render();\n });\n }\n\n /** @ignore */\n override ngOnInit(): void {\n super.ngOnInit();\n this._render();\n }\n\n /** @ignore */\n ngAfterViewInit(): void {\n this.calcFontSize();\n this.mapValueToInputs();\n }\n\n /**\n * Converts the value string to input values and updates the inputValues array.\n */\n mapValueToInputs() {\n this._emitOnComplete();\n if (!this.value) return;\n this.value.split('').map((v, i) => {\n this.inputValues[i] = v;\n });\n }\n\n /**\n * Resets the input values to an empty array.\n */\n override reset() {\n this.inputValues = [];\n for (let index = 0; index < this.length(); index++) {\n this.inputValues.push(' ');\n }\n }\n\n /** @ignore */\n private _render() {\n this.inputs.set(\n Array(this.length())\n .fill(1)\n .map((x, i) => i),\n );\n }\n\n /** @ignore */\n protected _handleOnInput(event: any, i: number) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n const numberRegex = /^\\d+$/;\n if (!numberRegex.test(event.target.value)) {\n event.target.value = '';\n return;\n }\n if (event.target.value.length > 1) {\n const currentValue = event.target.value;\n event.target.value = '';\n event.target.value = currentValue.slice(-1);\n }\n if (inputs[i + 1]) {\n inputs[i + 1].select();\n }\n this.inputValues[i] = event.target.value;\n this._emitOnComplete();\n }\n\n /** @ignore */\n override internalSetValue(value: any): string {\n if (value) {\n this.inputValues = value?.toString().split('') as any;\n }\n return value;\n }\n\n /** @ignore */\n protected calcFontSize() {\n const size = this.getHostElement().querySelector<HTMLInputElement>('.ax-input')?.clientWidth;\n const fontSize = size * 0.5;\n this.getHostElement().style.setProperty('--font-size', fontSize + 'px');\n }\n\n /** @ignore */\n protected _handleOnKeyDown(event: KeyboardEvent, i: number) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n switch (event.key) {\n case 'Backspace':\n inputs[i].value = '';\n if (inputs[i - 1]) {\n inputs[i - 1].focus();\n event.preventDefault();\n }\n this.inputValues[i] = ' ';\n this.commitValue(this.inputValues.join(''), true);\n break;\n\n case 'ArrowRight':\n if (inputs[i + 1]) {\n inputs[i + 1].select();\n }\n break;\n\n case 'ArrowLeft':\n if (inputs[i - 1]) {\n inputs[i - 1].select();\n }\n break;\n\n case 'Home':\n inputs[0].select();\n break;\n\n case 'End':\n inputs[this.length() - 1].select();\n break;\n\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n break;\n }\n }\n\n /** @ignore */\n protected _handleOnPaste(event: ClipboardEvent) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n const data = event.clipboardData.getData('text');\n const isNumber = /\\d+/;\n\n if (isNumber.test(data)) {\n inputs[inputs.length - 1].focus();\n this.inputValues = [];\n for (let i = 0; i < inputs.length; i++) {\n this.inputValues[i] = data[i];\n }\n }\n\n event.preventDefault();\n }\n\n /** @ignore */\n protected _handleFocus(i) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n inputs[i].select();\n }\n\n /** @ignore */\n protected _emitOnComplete() {\n // TODO: Check Value delay\n setTimeout(() => {\n this.commitValue(this.inputValues.join(''), true);\n this.onCompleted.emit({\n component: AXOtpComponent,\n value: this.inputValues.join(''),\n isCompleted: this.inputValues.filter((c) => c).length === this.length(),\n });\n });\n }\n}\n","<div\n dir=\"ltr\"\n class=\"ax-otp-input-container ax-editor-container ax-look-{{ look }}\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputs().length + ', minmax(0, 1fr))' }\"\n (paste)=\"_handleOnPaste($event)\"\n>\n @for (input of inputs(); let i = $index; track i) {\n <input\n class=\"ax-input\"\n type=\"number\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-success]=\"state === 'success'\"\n [class.ax-state-error]=\"state === 'error'\"\n maxlength=\"1\"\n [ngModel]=\"inputValues[i]\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (focus)=\"_handleFocus(i)\"\n (input)=\"_handleOnInput($event, i)\"\n (keydown)=\"_handleOnKeyDown($event, i)\"\n [attr.disabled]=\"disabled\"\n />\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXOtpComponent } from './otp.component';\n\nconst COMPONENT = [AXOtpComponent];\nconst MODULES = [CommonModule, FormsModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXOtpModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAEM,MAAO,mBAAoB,SAAQ,OAAO,CAAA;AAG/C;;ACYD;;;AAGG;AAkBG,MAAO,cACX,SAAQ,OAAO,EAAC,gBAAwB,GAAE,eAAe,CAAC,CAAA;;AA+B1D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA7BT;;AAEG;QACH,IAAM,CAAA,MAAA,GAAG,KAAK,EAAU;AAExB;;;AAGG;QACH,IAAW,CAAA,WAAA,GAAG,MAAM,EAAuB;AAE3C;;AAEG;QACH,IAAW,CAAA,WAAA,GAAa,EAAE;AAE1B;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAW,EAAE,CAAC;AAErB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,MAAK;YACjC,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,YAAY,EAAE;AACrB,SAAC,CAAC;QAKA,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,OAAO,EAAE;AAChB,SAAC,CAAC;;;IAIK,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,OAAO,EAAE;;;IAIhB,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,gBAAgB,EAAE;;AAGzB;;AAEG;IACH,gBAAgB,GAAA;QACd,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChC,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;AACzB,SAAC,CAAC;;AAGJ;;AAEG;IACM,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;AAClD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;;;;IAKtB,OAAO,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;aAChB,IAAI,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CACpB;;;IAIO,cAAc,CAAC,KAAU,EAAE,CAAS,EAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,gBAAgB,CAAmB,WAAW,CAAC;QACpF,MAAM,WAAW,GAAG,OAAO;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACzC,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;YACvB;;QAEF,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AACvC,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;AACvB,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAE7C,QAAA,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YACjB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;;QAExB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QACxC,IAAI,CAAC,eAAe,EAAE;;;AAIf,IAAA,gBAAgB,CAAC,KAAU,EAAA;QAClC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAQ;;AAEvD,QAAA,OAAO,KAAK;;;IAIJ,YAAY,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAmB,WAAW,CAAC,EAAE,WAAW;AAC5F,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG;AAC3B,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAC;;;IAI/D,gBAAgB,CAAC,KAAoB,EAAE,CAAS,EAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,gBAAgB,CAAmB,WAAW,CAAC;AACpF,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;AACd,gBAAA,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACpB,gBAAA,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;oBACjB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;oBACrB,KAAK,CAAC,cAAc,EAAE;;AAExB,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG;AACzB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;gBACjD;AAEF,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;oBACjB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;;gBAExB;AAEF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;oBACjB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;;gBAExB;AAEF,YAAA,KAAK,MAAM;AACT,gBAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBAClB;AAEF,YAAA,KAAK,KAAK;gBACR,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;gBAClC;AAEF,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB;;;;AAKI,IAAA,cAAc,CAAC,KAAqB,EAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,gBAAgB,CAAmB,WAAW,CAAC;QACpF,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,QAAQ,GAAG,KAAK;AAEtB,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;;;QAIjC,KAAK,CAAC,cAAc,EAAE;;;AAId,IAAA,YAAY,CAAC,CAAC,EAAA;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,gBAAgB,CAAmB,WAAW,CAAC;AACpF,QAAA,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;;;IAIV,eAAe,GAAA;;QAEvB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACjD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,SAAS,EAAE,cAAc;gBACzB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACxE,aAAA,CAAC;AACJ,SAAC,CAAC;;8GA9LO,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EATd,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCH,4yBAwBA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDca,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjB1B,SAAS;+BACE,QAAQ,EAAA,MAAA,EAGV,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EACxC,OAAA,EAAA,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAA,eAAA,EACzB,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,4yBAAA,EAAA,MAAA,EAAA,CAAA,+6HAAA,CAAA,EAAA;;;AE/BnB,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC;AAClC,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;MAQ9B,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBATL,cAAc,CAAA,EAAA,OAAA,EAAA,CAChB,YAAY,EAAE,WAAW,aADvB,cAAc,CAAA,EAAA,CAAA,CAAA;AASpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAJT,OAAO,CAAA,EAAA,CAAA,CAAA;;2FAIT,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;AAC5B,oBAAA,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;AACrB,oBAAA,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;AACvB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;ACbD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"acorex-components-otp.mjs","sources":["../../../../libs/components/otp/src/lib/otp.class.ts","../../../../libs/components/otp/src/lib/otp.component.ts","../../../../libs/components/otp/src/lib/otp.component.html","../../../../libs/components/otp/src/lib/otp.module.ts","../../../../libs/components/otp/src/acorex-components-otp.ts"],"sourcesContent":["import { AXEvent } from '@acorex/components/common';\n\nexport class AXOtpCompletedEvent extends AXEvent {\n value: string;\n isCompleted: boolean;\n}\n","import { MXLookComponent, MXValueComponent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n afterNextRender,\n computed,\n forwardRef,\n model,\n output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { AXOtpCompletedEvent } from './otp.class';\n\n/**\n * @category\n * A component for OTP input fields with state management and custom styling support.\n */\n@Component({\n selector: 'ax-otp',\n templateUrl: './otp.component.html',\n styleUrls: ['./otp.component.scss'],\n inputs: ['state', 'disabled', 'readonly', 'look'],\n outputs: ['stateChange', 'disabledChange'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXOtpComponent),\n multi: true,\n },\n ],\n standalone: false,\n})\nexport class AXOtpComponent extends classes(MXValueComponent<string>, MXLookComponent) {\n /**\n * Holds the length of the OTP input field.\n */\n length = model<number>();\n\n /**\n * @event\n * Emits an event when the OTP input is completed.\n */\n onCompleted = output<AXOtpCompletedEvent>();\n\n /**\n * Stores the values entered in the OTP input fields.\n */\n protected inputValues: string[] = [];\n\n /**\n * Holds the input values as a signal.\n */\n protected inputs = computed(() => {\n this.calcFontSize();\n //\n return Array(this.length())\n .fill(1)\n .map((x, i) => i);\n });\n\n /** @ignore */\n constructor() {\n super();\n afterNextRender(() => {\n this.calcFontSize();\n this.mapValueToInputs();\n });\n }\n\n /**\n * Converts the value string to input values and updates the inputValues array.\n */\n mapValueToInputs() {\n this._emitOnComplete();\n if (!this.value) {\n return;\n }\n this.value.split('').map((v, i) => {\n this.inputValues[i] = v;\n });\n }\n\n /**\n * Resets the input values to an empty array.\n */\n override reset() {\n this.inputValues = [];\n for (let index = 0; index < this.length(); index++) {\n this.inputValues.push(' ');\n }\n }\n\n /** @ignore */\n protected _handleOnInput(event: any, i: number) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n const numberRegex = /^\\d+$/;\n if (!numberRegex.test(event.target.value)) {\n event.target.value = '';\n return;\n }\n if (event.target.value.length > 1) {\n const currentValue = event.target.value;\n event.target.value = '';\n event.target.value = currentValue.slice(-1);\n }\n if (inputs[i + 1]) {\n inputs[i + 1].select();\n }\n this.inputValues[i] = event.target.value;\n this._emitOnComplete();\n }\n\n /** @ignore */\n override internalSetValue(value: any): string {\n if (value) {\n this.inputValues = value?.toString().split('') as any;\n }\n return value;\n }\n\n /** @ignore */\n protected calcFontSize() {\n const size = this.getHostElement().querySelector<HTMLInputElement>('.ax-input')?.clientWidth;\n const fontSize = size * 0.5;\n this.getHostElement().style.setProperty('--font-size', fontSize + 'px');\n }\n\n /** @ignore */\n protected _handleOnKeyDown(event: KeyboardEvent, i: number) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n switch (event.key) {\n case 'Backspace':\n inputs[i].value = '';\n if (inputs[i - 1]) {\n inputs[i - 1].focus();\n event.preventDefault();\n }\n this.inputValues[i] = ' ';\n this.commitValue(this.inputValues.join(''), true);\n break;\n\n case 'ArrowRight':\n if (inputs[i + 1]) {\n inputs[i + 1].select();\n }\n break;\n\n case 'ArrowLeft':\n if (inputs[i - 1]) {\n inputs[i - 1].select();\n }\n break;\n\n case 'Home':\n inputs[0].select();\n break;\n\n case 'End':\n inputs[this.length() - 1].select();\n break;\n\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n break;\n }\n }\n\n /** @ignore */\n protected _handleOnPaste(event: ClipboardEvent) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n const data = event.clipboardData.getData('text');\n const isNumber = /\\d+/;\n\n if (isNumber.test(data)) {\n inputs[inputs.length - 1].focus();\n this.inputValues = [];\n for (let i = 0; i < inputs.length; i++) {\n this.inputValues[i] = data[i];\n }\n this._emitOnComplete();\n }\n\n event.preventDefault();\n }\n\n /** @ignore */\n protected _handleFocus(i) {\n const inputs = this.getHostElement().querySelectorAll<HTMLInputElement>('.ax-input');\n inputs[i].select();\n }\n\n /** @ignore */\n protected _emitOnComplete() {\n // TODO: Check Value delay\n setTimeout(() => {\n this.commitValue(this.inputValues.join(''), true);\n this.onCompleted.emit({\n component: AXOtpComponent,\n value: this.inputValues.join(''),\n isCompleted: this.inputValues.filter((c) => c).length === this.length(),\n });\n });\n }\n}\n","<div\n dir=\"ltr\"\n class=\"ax-otp-input-container ax-editor-container ax-look-{{ look }}\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputs().length + ', minmax(0, 1fr))' }\"\n (paste)=\"_handleOnPaste($event)\"\n>\n @for (input of inputs(); let i = $index; track i) {\n <input\n class=\"ax-input\"\n type=\"number\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-success]=\"state === 'success'\"\n [class.ax-state-error]=\"state === 'error'\"\n maxlength=\"1\"\n [ngModel]=\"inputValues[i]\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (focus)=\"_handleFocus(i)\"\n (input)=\"_handleOnInput($event, i)\"\n (keydown)=\"_handleOnKeyDown($event, i)\"\n [attr.disabled]=\"disabled\"\n />\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXOtpComponent } from './otp.component';\n\nconst COMPONENT = [AXOtpComponent];\nconst MODULES = [CommonModule, FormsModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXOtpModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|