@acorex/components 18.16.0-next.6 → 18.16.0-next.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-data-pager.mjs","sources":["../../../../libs/components/data-pager/src/lib/data-pager-base.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-info.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-input-selector.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-next-buttons.components.ts","../../../../libs/components/data-pager/src/lib/data-pager-numeric-selector.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-pagesize-dropdown.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-prev-buttons.component.ts","../../../../libs/components/data-pager/src/lib/data-pager.component.ts","../../../../libs/components/data-pager/src/lib/data-pager.component.html","../../../../libs/components/data-pager/src/lib/data-pager.module.ts","../../../../libs/components/data-pager/src/acorex-components-data-pager.ts"],"sourcesContent":["import { AXEvent, AXOptionChangedEvent, MXInteractiveComponent } from '@acorex/components/common';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { EventEmitter, Injectable, inject } from '@angular/core';\n\n/**\n * A token that specifies the display mode of datapager component.\n */\nexport type AXDataPagerDisplayMode = 'full' | 'compact' | 'custom';\n\nexport interface AXDataPagerData {\n range: { from: number; to: number };\n page: number;\n skip: number;\n take: number;\n totalPages: number;\n totalItems: number;\n}\n\nexport class AXDataPagerChangedEvent extends AXEvent implements AXDataPagerData {\n range: { from: number; to: number } = { from: 0, to: 0 };\n page = 0;\n skip = 0;\n take = 0;\n totalPages = 0;\n totalItems = 0;\n}\n\n@Injectable()\nexport abstract class AXDataPagerParentComponent {\n abstract readonly: boolean;\n abstract disabled: boolean;\n abstract isLoading: boolean;\n abstract onChanged: EventEmitter<AXDataPagerChangedEvent>;\n abstract onOptionChanged: EventEmitter<AXOptionChangedEvent>;\n abstract get displayInfo(): AXDataPagerData;\n abstract size;\n abstract goNextPage(): void;\n abstract goLastPage(): void;\n abstract goFirstPage(): void;\n abstract goPrevPage(): void;\n abstract goToPage(page: number): void;\n}\n\n@Injectable()\nexport abstract class AXDataPagerChild extends MXInteractiveComponent {\n protected _parent: AXDataPagerParentComponent = inject(AXDataPagerParentComponent);\n protected _unsubscriber: AXUnsubscriber = inject(AXUnsubscriber);\n\n /**\n * @ignore\n */\n constructor() {\n super();\n //\n this._parent.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.applyParent();\n });\n //\n this._parent.onOptionChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.applyParent();\n });\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this.applyParent();\n }\n\n /**\n * @ignore\n */\n protected abstract applyParent(): void;\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Displays formatted and translated information text for a data pager component.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-info',\n template: ` <ax-text> {{ _textFormatted | translate | async }}</ax-text> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerInfoComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerInfoComponent extends AXDataPagerChild {\n /**\n * The text to be displayed in the data pager info component.\n */\n @Input()\n text: string;\n\n /**\n * @ignore\n */\n protected _textFormatted: string;\n protected translateService = inject(AXTranslationService);\n\n /**\n * @ignore\n */\n protected override applyParent() {\n const info = this._parent.displayInfo;\n if ([info.range, info.range.from, info.totalItems].every((c) => c)) {\n this._textFormatted = this.translateService\n .translateSync(this.text ?? 'datapager.info.text')\n .replace('[from]', info.range.from.toString())\n .replace('[to]', info.range.to.toString())\n .replace('[totalItems]', info.totalItems.toString())\n .replace('[page]', info.page.toString())\n .replace('[totalPages]', info.totalPages.toString());\n this.cdr.markForCheck();\n }\n }\n}\n","import { AXValueChangedEvent } from '@acorex/components/common';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Provides an input selector for navigating pages in a data pager component.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-input-selector',\n template: `\n <ax-number-box\n class=\"ax-sm\"\n [disabled]=\"_parent.disabled\"\n [readonly]=\"_parent.readonly\"\n [ngModel]=\"_currentPage\"\n (onValueChanged)=\"_handleValueChanged($event)\"\n [showSpinButtons]=\"false\"\n [minValue]=\"1\"\n [maxValue]=\"_totalPages\"\n >\n </ax-number-box>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXDataPagerChild,\n useExisting: AXDataPagerInputSelectorComponent,\n },\n AXUnsubscriber,\n ],\n})\nexport class AXDataPagerInputSelectorComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n protected _totalPages = 1;\n\n /**\n * @ignore\n */\n protected _currentPage = 1;\n\n /**\n * @ignore\n */\n protected override applyParent() {\n this._currentPage = this._parent.displayInfo.page;\n this._totalPages = this._parent.displayInfo.totalPages;\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n protected _handleValueChanged(e: AXValueChangedEvent<number>) {\n //TODO: debounceTime\n if (e.isUserInteraction) {\n this._parent.goToPage(e.value as number);\n }\n }\n}\n","import { AXClickEvent } from '@acorex/components/common';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Provides buttons for navigating to the next and last pages in a data pager component.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-next-buttons',\n template: `\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the next page\"\n (onClick)=\"_emitOnNextPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl,\n }\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the last page\"\n (onClick)=\"_emitOnLastPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{ 'ax-icon-chevron-double-left': rtl, 'ax-icon-chevron-double-right': !rtl }\"\n ></ax-icon>\n </ax-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerNextButtonsComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerNextButtonsComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n protected rtl!: boolean;\n\n /**\n * @ignore\n */\n override ngOnInit(): void {\n super.ngOnInit;\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n }\n\n /**\n * @ignore\n */\n protected override applyParent() {\n this.disabled =\n this._parent.displayInfo.page == this._parent.displayInfo.totalPages || this._parent.disabled;\n }\n\n /**\n * @ignore\n */\n _emitOnLastPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goLastPage();\n }\n\n /**\n * @ignore\n */\n _emitOnNextPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goNextPage();\n }\n}\n","import { AXButtonItem } from '@acorex/components/button';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Component that provides numeric page selection controls for a data pager.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-numeric-selector',\n template: `\n <ax-button\n class=\"ax-sm\"\n [disabled]=\"_currentPage === 1 || _parent.disabled\"\n look=\"blank\"\n (onClick)=\"_handleOnItemClick({ data: 1 })\"\n >\n <ax-icon class=\"ax-icon ax-icon-chevron-double-left\"></ax-icon>\n </ax-button>\n\n @if (!_parent.isLoading) {\n @for (item of _items; track $index) {\n <ax-button\n class=\"ax-sm\"\n [disabled]=\"_parent.disabled\"\n [color]=\"_currentPage === item.data ? 'primary' : 'ghost'\"\n [look]=\"_currentPage === item.data ? 'solid' : 'blank'\"\n [text]=\"item.text\"\n (onClick)=\"_handleOnItemClick(item)\"\n >\n @if (item.iconClass) {\n <ax-icon class=\"ax-icon\" [ngClass]=\"item.iconClass\"></ax-icon>\n }\n </ax-button>\n }\n } @else {\n <ax-skeleton></ax-skeleton>\n }\n\n <ax-button\n class=\"ax-sm\"\n [disabled]=\"_currentPage === _lastPage || _parent.disabled\"\n look=\"blank\"\n (onClick)=\"_handleOnItemClick({ data: _lastPage })\"\n >\n <ax-icon class=\"ax-icon ax-icon-chevron-double-right\"></ax-icon>\n </ax-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXDataPagerChild,\n useExisting: AXDataPagerNumericSelectorComponent,\n },\n AXUnsubscriber,\n ],\n})\nexport class AXDataPagerNumericSelectorComponent extends AXDataPagerChild {\n _items: AXButtonItem[] = [];\n _currentPage = 1;\n _lastPage = 1;\n _loading = false;\n\n /**\n * @ignore\n */\n private _displayCount = 5;\n\n /**\n * @ignore\n */\n protected override applyParent(): void {\n this._currentPage = this._parent.displayInfo.page;\n this._loading = this._parent.isLoading;\n this._lastPage = this._parent.displayInfo.totalPages;\n //\n this._items = [];\n\n const start = Math.max(\n 0,\n (Math.ceil(this._currentPage / this._displayCount) - 1) * this._displayCount + 1,\n );\n const end = Math.min(start + this._displayCount - 1, this._lastPage);\n //\n if (start > this._displayCount) {\n this._items.push({\n iconClass: 'ax-icon-chevron-left',\n data: start - 1,\n });\n }\n //\n for (let i = start; i <= end; i++) {\n this._items.push({\n text: i.toString(),\n data: i,\n });\n }\n if (end < this._lastPage) {\n this._items.push({\n iconClass: 'ax-icon-chevron-right',\n data: end + 1,\n });\n }\n this.cdr.detectChanges();\n }\n\n /**\n * @ignore\n */\n _handleOnItemClick(e: any) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goToPage(Number(e.data));\n }\n}\n","import { AXClickEvent } from '@acorex/components/common';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Displays a button to select page sizes for data pagination.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-page-sizes',\n template: `\n <ax-button [text]=\"_size\" color=\"'default'\" [look]=\"'blank'\" [disabled]=\"_parent.disabled\">\n <ax-dropdown-panel>\n <ax-button-item-list (onItemClick)=\"_emitOnItemClick($event)\">\n @for (item of _items; track $index) {\n <ax-button-item [text]=\"item.text\" [data]=\"item.data\" [selected]=\"item.selected\">\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-arrow-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <!-- <span >items per page</span> -->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n outputs: [],\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerPageSizesComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerPageSizesComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n _size: number;\n\n /**\n * @ignore\n */\n //TODO: AXButtonItems type error\n _items: any[] = [];\n\n /**\n * @ignore\n */\n private _sizes: number[];\n\n /**\n * Gets the list of page sizes available for selection.\n */\n @Input()\n public get sizes(): number[] {\n return this._sizes || [5, 10, 20, 50, 100];\n }\n\n /**\n * Sets the list of page sizes available for selection.\n *\n * @param value - An array of numbers representing the page sizes to be set.\n */\n public set sizes(v: number[]) {\n this._sizes = v;\n this.applyParent();\n }\n\n /**\n * @ignore\n */\n protected override applyParent(): void {\n this._size = this._parent.displayInfo.take;\n this._items = this.sizes.map((s: any) => ({\n text: s.toString(),\n selected: s == this._size,\n data: {\n size: s,\n },\n }));\n this.cdr.detectChanges();\n }\n\n /**\n * @ignore\n */\n _emitOnItemClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._size = this._parent.size = Number(e.data.size);\n }\n}\n","import { AXClickEvent } from '@acorex/components/common';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Component that provides navigation buttons for going to the previous page and the first page in a data pager.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-prev-buttons',\n template: `\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the last page\"\n (onClick)=\"_emitOnFirstPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{ 'ax-icon-chevron-double-right': rtl, 'ax-icon-chevron-double-left': !rtl }\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the next page\"\n (onClick)=\"_emitOnPrevPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl,\n }\"\n ></ax-icon>\n </ax-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerPrevButtonsComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerPrevButtonsComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n protected rtl!: boolean;\n\n /**\n * @ignore\n */\n override ngOnInit(): void {\n super.ngOnInit;\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n }\n\n /**\n * @ignore\n */\n protected override applyParent() {\n this.disabled = this._parent.displayInfo.page == 1 || this._parent.disabled;\n }\n\n /**\n * @ignore\n */\n _emitOnFirstPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goFirstPage();\n }\n\n /**\n * @ignore\n */\n _emitOnPrevPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goPrevPage();\n }\n}\n","import { AXPagedComponent, MXValueComponent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n forwardRef,\n signal,\n} from '@angular/core';\nimport { cloneDeep, isEqual, isNumber } from 'lodash-es';\n\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n AXDataPagerChangedEvent,\n AXDataPagerData,\n AXDataPagerParentComponent,\n} from './data-pager-base.component';\n\nexport type AXDataPagerMode = 'full' | 'compact' | 'custom';\n\n/**\n * Component for managing and displaying data pagination controls.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager',\n templateUrl: './data-pager.component.html',\n styleUrls: ['./data-pager.component.scss'],\n inputs: ['value', 'name', 'disabled', 'readonly'],\n outputs: ['valueChange', 'onValueChanged', 'disabledChange', 'readonlyChange'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: AXDataPagerParentComponent, useExisting: AXDataPagerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDataPagerComponent),\n multi: true,\n },\n ],\n})\nexport class AXDataPagerComponent extends MXValueComponent<number> {\n /**\n * @ignore\n */\n private _isLoading = signal(false);\n\n /**\n * Indicates whether the component is currently loading.\n *\n */\n @Input()\n public get isLoading(): boolean {\n return this._isLoading();\n }\n\n /**\n * Sets the loading state of the component.\n *\n * @param v - The loading state to be set.\n */\n public set isLoading(v: boolean) {\n this._isLoading.set(v);\n }\n\n /**\n * @ignore\n */\n private _size = null;\n\n /**\n * Gets the number of items per page in the data pager.\n */\n @Input()\n public get size(): number {\n return this._size || 10;\n }\n\n /**\n * Sets the number of items per page and updates the data pager accordingly.\n *\n * @param {number} v - The new number of items per page.\n */\n public set size(v: number) {\n if (v != this._size) {\n const prevSize = this._size;\n this._size = v;\n if (this._parent) {\n this._parent.pageSize = v;\n }\n const newPage = Math.ceil(this.displayInfo.range.from / this._size) || 1;\n this.commitValue(newPage);\n this._emitChangedEvent(prevSize != null ? true : false);\n }\n }\n\n /**\n * @ignore\n */\n private _total = 0;\n\n /**\n * Gets the total number of items.\n */\n @Input()\n public get total(): number {\n return this._total;\n }\n\n /**\n * Sets the total number of items and triggers an update event if the value changes.\n *\n * @param v - The total number of items to set.\n * If the value is non-positive, it defaults to 0.\n */\n public set total(v: number) {\n const t = v && v > 0 ? v : 0;\n if (t != this._total) {\n this._total = t;\n this._emitChangedEvent();\n }\n }\n\n /**\n * @ignore\n */\n private _totalPages = 0;\n\n /**\n * Gets the total number of pages.\n */\n public get totalPages(): number {\n return this._totalPages;\n }\n\n /**\n * Sets the total number of pages.\n *\n * @param value - The total number of pages to set.\n */\n private set totalPages(value: number) {\n this._totalPages = value;\n }\n\n /**\n * Emitted when the display mode changes.\n * @event\n * An event containing the new display mode.\n */\n @Output()\n public displayModeChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @ignore\n */\n private _displayMode: AXDataPagerMode = 'full';\n\n /**\n * Gets the current display mode of the data pager.\n */\n @Input()\n public get displayMode(): AXDataPagerMode {\n return this._displayMode;\n }\n\n /**\n * Sets the display mode of the data pager and emits a change event.\n *\n * @param v - The new display mode to set, of type `AXDataPagerMode`.\n */\n public set displayMode(v: AXDataPagerMode) {\n this.setOption({\n name: 'displayMode',\n value: v,\n afterCallback: () => {\n this._emitChangedEvent();\n },\n });\n }\n\n /**\n * Emitted when the data pager's state changes.\n * @event\n * An event containing details about the change.\n */\n @Output()\n onChanged: EventEmitter<AXDataPagerChangedEvent> = new EventEmitter<AXDataPagerChangedEvent>();\n\n /**\n * @ignore\n */\n constructor(\n @Optional()\n @Inject(AXPagedComponent)\n private _parent: AXPagedComponent,\n ) {\n super();\n //\n if (this._parent) {\n this._parent.onPageChanged.subscribe((c) => {\n this.size = this._parent.pageSize;\n this.total = this._parent.totalCount;\n this.value = c.value;\n });\n this.size = this._parent.pageSize;\n this.total = this._parent.totalCount;\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this._emitChangedEvent();\n }\n\n /**\n * @ignore\n */\n protected override internalValueChanged(value: any): void {\n this._emitChangedEvent(true);\n }\n\n /**\n * @ignore\n */\n protected override internalGetValue(value: any): number {\n if (!isNumber(value) || !value || this.totalPages == 0) return 1;\n return value > this.totalPages ? this.totalPages : value;\n }\n\n /**\n * @ignore\n */\n private previousDisplayInfo: AXDataPagerData | null;\n\n public get displayInfo(): AXDataPagerData {\n const skip = Math.max(0, (this.value - 1) * this.size);\n const result = {\n page: this.value,\n totalItems: this.total,\n totalPages: this.totalPages,\n range: {\n from: skip + 1,\n to: Math.min(this.value * this.size, this.total),\n },\n skip,\n take: this.size,\n };\n return result;\n }\n\n /**\n * @ignore\n */\n private _emitChangedEvent(u = false): void {\n this.totalPages = Math.ceil(this._total / this.size);\n //\n if (!isEqual(this.previousDisplayInfo, this.displayInfo)) {\n this.onChanged.emit(\n Object.assign(\n {\n component: this,\n isUserInteraction: u,\n htmlElement: this.getHostElement(),\n },\n this.displayInfo,\n ),\n );\n if (this.totalPages > 0) this._parent?.goToPage(this.value);\n //\n this.previousDisplayInfo = cloneDeep(this.displayInfo);\n //\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Navigates to the next page, or to the last page if on the final page.\n * @ignore\n */\n\n goNextPage(): void {\n this.goToPage(Math.min(this.value + 1, this.totalPages));\n }\n\n /**\n * Navigates to the last page.\n * @ignore\n */\n goLastPage(): void {\n this.goToPage(this.totalPages);\n }\n\n /**\n * Navigates to the first page.\n * @ignore\n */\n goFirstPage(): void {\n this.goToPage(1);\n }\n /**\n * Navigates to the previous page, or to the first page if on the initial page.\n * @ignore\n */\n goPrevPage(): void {\n this.goToPage(Math.max(this.value - 1, 1));\n }\n\n /**\n * Navigates to a specified page.\n * @param page - The page number to navigate to.\n * @ignore\n */\n goToPage(page: number): void {\n if (page != this.value) {\n this.commitValue(page, true);\n }\n }\n\n @HostBinding('class')\n get __hostClass(): string {\n return `ax-sm`;\n }\n}\n","@switch (displayMode) {\n @case ('full') {\n <ax-prefix>\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\n </ax-prefix>\n <ax-suffix>\n <ax-data-pager-info> </ax-data-pager-info>\n </ax-suffix>\n }\n @case ('compact') {\n <ax-prefix>\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\n </ax-prefix>\n <ax-suffix>\n <ax-data-pager-info> </ax-data-pager-info>\n </ax-suffix>\n }\n @default {\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXDataPagerInfoComponent } from './data-pager-info.component';\nimport { AXDataPagerInputSelectorComponent } from './data-pager-input-selector.component';\nimport { AXDataPagerNextButtonsComponent } from './data-pager-next-buttons.components';\nimport { AXDataPagerNumericSelectorComponent } from './data-pager-numeric-selector.component';\nimport { AXDataPagerPageSizesComponent } from './data-pager-pagesize-dropdown.component';\nimport { AXDataPagerPrevButtonsComponent } from './data-pager-prev-buttons.component';\nimport { AXDataPagerComponent } from './data-pager.component';\n\nconst COMPONENT = [\n AXDataPagerComponent,\n AXDataPagerNextButtonsComponent,\n AXDataPagerPrevButtonsComponent,\n AXDataPagerPageSizesComponent,\n AXDataPagerNumericSelectorComponent,\n AXDataPagerInputSelectorComponent,\n AXDataPagerInfoComponent,\n];\nconst MODULES = [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXNumberBoxModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXSkeletonModule,\n];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDataPagerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i2.AXDataPagerNextButtonsComponent","i3.AXDataPagerPrevButtonsComponent","i4.AXDataPagerPageSizesComponent","i5.AXDataPagerNumericSelectorComponent","i6.AXDataPagerInputSelectorComponent","i7.AXDataPagerInfoComponent"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-data-pager.mjs","sources":["../../../../libs/components/data-pager/src/lib/data-pager-base.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-info.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-input-selector.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-next-buttons.components.ts","../../../../libs/components/data-pager/src/lib/data-pager-numeric-selector.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-pagesize-dropdown.component.ts","../../../../libs/components/data-pager/src/lib/data-pager-prev-buttons.component.ts","../../../../libs/components/data-pager/src/lib/data-pager.component.ts","../../../../libs/components/data-pager/src/lib/data-pager.component.html","../../../../libs/components/data-pager/src/lib/data-pager.module.ts","../../../../libs/components/data-pager/src/acorex-components-data-pager.ts"],"sourcesContent":["import { AXEvent, AXOptionChangedEvent, MXInteractiveComponent } from '@acorex/components/common';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { EventEmitter, Injectable, inject } from '@angular/core';\n\n/**\n * A token that specifies the display mode of datapager component.\n */\nexport type AXDataPagerDisplayMode = 'full' | 'compact' | 'custom';\n\nexport interface AXDataPagerData {\n range: { from: number; to: number };\n page: number;\n skip: number;\n take: number;\n totalPages: number;\n totalItems: number;\n}\n\nexport class AXDataPagerChangedEvent extends AXEvent implements AXDataPagerData {\n range: { from: number; to: number } = { from: 0, to: 0 };\n page = 0;\n skip = 0;\n take = 0;\n totalPages = 0;\n totalItems = 0;\n}\n\n@Injectable()\nexport abstract class AXDataPagerParentComponent {\n abstract readonly: boolean;\n abstract disabled: boolean;\n abstract isLoading: boolean;\n abstract onChanged: EventEmitter<AXDataPagerChangedEvent>;\n abstract onOptionChanged: EventEmitter<AXOptionChangedEvent>;\n abstract get displayInfo(): AXDataPagerData;\n abstract size;\n abstract goNextPage(): void;\n abstract goLastPage(): void;\n abstract goFirstPage(): void;\n abstract goPrevPage(): void;\n abstract goToPage(page: number): void;\n}\n\n@Injectable()\nexport abstract class AXDataPagerChild extends MXInteractiveComponent {\n protected _parent: AXDataPagerParentComponent = inject(AXDataPagerParentComponent);\n protected _unsubscriber: AXUnsubscriber = inject(AXUnsubscriber);\n\n /**\n * @ignore\n */\n constructor() {\n super();\n //\n this._parent.onChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.applyParent();\n });\n //\n this._parent.onOptionChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.applyParent();\n });\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this.applyParent();\n }\n\n /**\n * @ignore\n */\n protected abstract applyParent(): void;\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Displays formatted and translated information text for a data pager component.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-info',\n template: ` <ax-text> {{ _textFormatted | translate | async }}</ax-text> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerInfoComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerInfoComponent extends AXDataPagerChild {\n /**\n * The text to be displayed in the data pager info component.\n */\n @Input()\n text: string;\n\n /**\n * @ignore\n */\n protected _textFormatted: string;\n protected translateService = inject(AXTranslationService);\n\n /**\n * @ignore\n */\n protected override applyParent() {\n const info = this._parent.displayInfo;\n if ([info.range, info.range.from, info.totalItems].every((c) => c)) {\n this._textFormatted = this.translateService\n .translateSync(this.text ?? 'datapager.info.text')\n .replace('[from]', info.range.from.toString())\n .replace('[to]', info.range.to.toString())\n .replace('[totalItems]', info.totalItems.toString())\n .replace('[page]', info.page.toString())\n .replace('[totalPages]', info.totalPages.toString());\n this.cdr.markForCheck();\n }\n }\n}\n","import { AXValueChangedEvent } from '@acorex/components/common';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Provides an input selector for navigating pages in a data pager component.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-input-selector',\n template: `\n <ax-number-box\n class=\"ax-sm\"\n [disabled]=\"_parent.disabled\"\n [readonly]=\"_parent.readonly\"\n [ngModel]=\"_currentPage\"\n (onValueChanged)=\"_handleValueChanged($event)\"\n [showSpinButtons]=\"false\"\n [minValue]=\"1\"\n [maxValue]=\"_totalPages\"\n >\n </ax-number-box>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXDataPagerChild,\n useExisting: AXDataPagerInputSelectorComponent,\n },\n AXUnsubscriber,\n ],\n})\nexport class AXDataPagerInputSelectorComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n protected _totalPages = 1;\n\n /**\n * @ignore\n */\n protected _currentPage = 1;\n\n /**\n * @ignore\n */\n protected override applyParent() {\n this._currentPage = this._parent.displayInfo.page;\n this._totalPages = this._parent.displayInfo.totalPages;\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n protected _handleValueChanged(e: AXValueChangedEvent<number>) {\n //TODO: debounceTime\n if (e.isUserInteraction) {\n this._parent.goToPage(e.value as number);\n }\n }\n}\n","import { AXClickEvent } from '@acorex/components/common';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Provides buttons for navigating to the next and last pages in a data pager component.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-next-buttons',\n template: `\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the next page\"\n (onClick)=\"_emitOnNextPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{\n 'ax-icon-chevron-left': rtl,\n 'ax-icon-chevron-right': !rtl,\n }\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the last page\"\n (onClick)=\"_emitOnLastPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{ 'ax-icon-chevron-double-left': rtl, 'ax-icon-chevron-double-right': !rtl }\"\n ></ax-icon>\n </ax-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerNextButtonsComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerNextButtonsComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n protected rtl!: boolean;\n\n /**\n * @ignore\n */\n override ngOnInit(): void {\n super.ngOnInit;\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n }\n\n /**\n * @ignore\n */\n protected override applyParent() {\n this.disabled =\n this._parent.displayInfo.page == this._parent.displayInfo.totalPages || this._parent.disabled;\n }\n\n /**\n * @ignore\n */\n _emitOnLastPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goLastPage();\n }\n\n /**\n * @ignore\n */\n _emitOnNextPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goNextPage();\n }\n}\n","import { AXButtonItem } from '@acorex/components/button';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Component that provides numeric page selection controls for a data pager.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-numeric-selector',\n template: `\n <ax-button\n class=\"ax-sm\"\n [disabled]=\"_currentPage === 1 || _parent.disabled\"\n look=\"blank\"\n (onClick)=\"_handleOnItemClick({ data: 1 })\"\n >\n <ax-icon class=\"ax-icon ax-icon-chevron-double-left\"></ax-icon>\n </ax-button>\n\n @if (!_parent.isLoading) {\n @for (item of _items; track $index) {\n <ax-button\n class=\"ax-sm\"\n [disabled]=\"_parent.disabled\"\n [color]=\"_currentPage === item.data ? 'primary' : 'ghost'\"\n [look]=\"_currentPage === item.data ? 'solid' : 'blank'\"\n [text]=\"item.text\"\n (onClick)=\"_handleOnItemClick(item)\"\n >\n @if (item.iconClass) {\n <ax-icon class=\"ax-icon\" [ngClass]=\"item.iconClass\"></ax-icon>\n }\n </ax-button>\n }\n } @else {\n <ax-skeleton></ax-skeleton>\n }\n\n <ax-button\n class=\"ax-sm\"\n [disabled]=\"_currentPage === _lastPage || _parent.disabled\"\n look=\"blank\"\n (onClick)=\"_handleOnItemClick({ data: _lastPage })\"\n >\n <ax-icon class=\"ax-icon ax-icon-chevron-double-right\"></ax-icon>\n </ax-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXDataPagerChild,\n useExisting: AXDataPagerNumericSelectorComponent,\n },\n AXUnsubscriber,\n ],\n})\nexport class AXDataPagerNumericSelectorComponent extends AXDataPagerChild {\n _items: AXButtonItem[] = [];\n _currentPage = 1;\n _lastPage = 1;\n _loading = false;\n\n /**\n * @ignore\n */\n private _displayCount = 5;\n\n /**\n * @ignore\n */\n protected override applyParent(): void {\n this._currentPage = this._parent.displayInfo.page;\n this._loading = this._parent.isLoading;\n this._lastPage = this._parent.displayInfo.totalPages;\n //\n this._items = [];\n\n const start = Math.max(\n 0,\n (Math.ceil(this._currentPage / this._displayCount) - 1) * this._displayCount + 1,\n );\n const end = Math.min(start + this._displayCount - 1, this._lastPage);\n //\n if (start > this._displayCount) {\n this._items.push({\n iconClass: 'ax-icon-chevron-left',\n data: start - 1,\n });\n }\n //\n for (let i = start; i <= end; i++) {\n this._items.push({\n text: i.toString(),\n data: i,\n });\n }\n if (end < this._lastPage) {\n this._items.push({\n iconClass: 'ax-icon-chevron-right',\n data: end + 1,\n });\n }\n this.cdr.detectChanges();\n }\n\n /**\n * @ignore\n */\n _handleOnItemClick(e: any) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goToPage(Number(e.data));\n }\n}\n","import { AXClickEvent } from '@acorex/components/common';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Displays a button to select page sizes for data pagination.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-page-sizes',\n template: `\n <ax-button [text]=\"_size\" color=\"'default'\" [look]=\"'blank'\" [disabled]=\"_parent.disabled\">\n <ax-dropdown-panel>\n <ax-button-item-list (onItemClick)=\"_emitOnItemClick($event)\">\n @for (item of _items; track $index) {\n <ax-button-item [text]=\"item.text\" [data]=\"item.data\" [selected]=\"item.selected\">\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n <ax-suffix>\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-arrow-down\"></ax-icon>\n </ax-suffix>\n </ax-button>\n <!-- <span >items per page</span> -->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n outputs: [],\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerPageSizesComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerPageSizesComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n _size: number;\n\n /**\n * @ignore\n */\n //TODO: AXButtonItems type error\n _items: any[] = [];\n\n /**\n * @ignore\n */\n private _sizes: number[];\n\n /**\n * Gets the list of page sizes available for selection.\n */\n @Input()\n public get sizes(): number[] {\n return this._sizes || [5, 10, 20, 50, 100];\n }\n\n /**\n * Sets the list of page sizes available for selection.\n *\n * @param value - An array of numbers representing the page sizes to be set.\n */\n public set sizes(v: number[]) {\n this._sizes = v;\n this.applyParent();\n }\n\n /**\n * @ignore\n */\n protected override applyParent(): void {\n this._size = this._parent.displayInfo.take;\n this._items = this.sizes.map((s: any) => ({\n text: s.toString(),\n selected: s == this._size,\n data: {\n size: s,\n },\n }));\n this.cdr.detectChanges();\n }\n\n /**\n * @ignore\n */\n _emitOnItemClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._size = this._parent.size = Number(e.data.size);\n }\n}\n","import { AXClickEvent } from '@acorex/components/common';\nimport { AXHtmlUtil, AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXDataPagerChild } from './data-pager-base.component';\n\n/**\n * Component that provides navigation buttons for going to the previous page and the first page in a data pager.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager-prev-buttons',\n template: `\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the last page\"\n (onClick)=\"_emitOnFirstPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{ 'ax-icon-chevron-double-right': rtl, 'ax-icon-chevron-double-left': !rtl }\"\n ></ax-icon>\n </ax-button>\n <ax-button\n [disabled]=\"disabled\"\n look=\"blank\"\n class=\"ax-sm\"\n title=\"Go to the next page\"\n (onClick)=\"_emitOnPrevPageClick($event)\"\n >\n <ax-icon\n class=\"ax-icon ax-text-xl\"\n [ngClass]=\"{\n 'ax-icon-chevron-left': !rtl,\n 'ax-icon-chevron-right': rtl,\n }\"\n ></ax-icon>\n </ax-button>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXDataPagerChild, useExisting: AXDataPagerPrevButtonsComponent }, AXUnsubscriber],\n})\nexport class AXDataPagerPrevButtonsComponent extends AXDataPagerChild {\n /**\n * @ignore\n */\n protected rtl!: boolean;\n\n /**\n * @ignore\n */\n override ngOnInit(): void {\n super.ngOnInit;\n this.rtl = AXHtmlUtil.isRtl(this.getHostElement());\n }\n\n /**\n * @ignore\n */\n protected override applyParent() {\n this.disabled = this._parent.displayInfo.page == 1 || this._parent.disabled;\n }\n\n /**\n * @ignore\n */\n _emitOnFirstPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goFirstPage();\n }\n\n /**\n * @ignore\n */\n _emitOnPrevPageClick(e: AXClickEvent) {\n if (this._parent.readonly || this._parent.disabled) return;\n this._parent.goPrevPage();\n }\n}\n","import { AXPagedComponent, MXValueComponent } from '@acorex/components/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n forwardRef,\n signal,\n} from '@angular/core';\nimport { cloneDeep, isEqual, isNumber } from 'lodash-es';\n\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n AXDataPagerChangedEvent,\n AXDataPagerData,\n AXDataPagerParentComponent,\n} from './data-pager-base.component';\n\nexport type AXDataPagerMode = 'full' | 'compact' | 'custom';\n\n/**\n * Component for managing and displaying data pagination controls.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-data-pager',\n templateUrl: './data-pager.component.html',\n styleUrls: ['./data-pager.component.scss'],\n inputs: ['value', 'name', 'disabled', 'readonly'],\n outputs: ['valueChange', 'onValueChanged', 'disabledChange', 'readonlyChange'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: AXDataPagerParentComponent, useExisting: AXDataPagerComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXDataPagerComponent),\n multi: true,\n },\n ],\n})\nexport class AXDataPagerComponent extends MXValueComponent<number> {\n /**\n * @ignore\n */\n private _isLoading = signal(false);\n\n /**\n * Indicates whether the component is currently loading.\n *\n */\n @Input()\n public get isLoading(): boolean {\n return this._isLoading();\n }\n\n /**\n * Sets the loading state of the component.\n *\n * @param v - The loading state to be set.\n */\n public set isLoading(v: boolean) {\n this._isLoading.set(v);\n }\n\n /**\n * @ignore\n */\n private _size = null;\n\n /**\n * Gets the number of items per page in the data pager.\n */\n @Input()\n public get size(): number {\n return this._size || 10;\n }\n\n /**\n * Sets the number of items per page and updates the data pager accordingly.\n *\n * @param {number} v - The new number of items per page.\n */\n public set size(v: number) {\n if (v != this._size) {\n const prevSize = this._size;\n this._size = v;\n if (this._parent) {\n this._parent.pageSize = v;\n }\n const newPage = Math.ceil(this.displayInfo.range.from / this._size) || 1;\n this.commitValue(newPage);\n this._emitChangedEvent(prevSize != null ? true : false);\n }\n }\n\n /**\n * @ignore\n */\n private _total = 0;\n\n /**\n * Gets the total number of items.\n */\n @Input()\n public get total(): number {\n return this._total;\n }\n\n /**\n * Sets the total number of items and triggers an update event if the value changes.\n *\n * @param v - The total number of items to set.\n * If the value is non-positive, it defaults to 0.\n */\n public set total(v: number) {\n const t = v && v > 0 ? v : 0;\n if (t != this._total) {\n this._total = t;\n this._emitChangedEvent();\n }\n }\n\n /**\n * @ignore\n */\n private _totalPages = 0;\n\n /**\n * Gets the total number of pages.\n */\n public get totalPages(): number {\n return this._totalPages;\n }\n\n /**\n * Sets the total number of pages.\n *\n * @param value - The total number of pages to set.\n */\n private set totalPages(value: number) {\n this._totalPages = value;\n }\n\n /**\n * Emitted when the display mode changes.\n * @event\n * An event containing the new display mode.\n */\n @Output()\n public displayModeChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * @ignore\n */\n private _displayMode: AXDataPagerMode = 'full';\n\n /**\n * Gets the current display mode of the data pager.\n */\n @Input()\n public get displayMode(): AXDataPagerMode {\n return this._displayMode;\n }\n\n /**\n * Sets the display mode of the data pager and emits a change event.\n *\n * @param v - The new display mode to set, of type `AXDataPagerMode`.\n */\n public set displayMode(v: AXDataPagerMode) {\n this.setOption({\n name: 'displayMode',\n value: v,\n afterCallback: () => {\n this._emitChangedEvent();\n },\n });\n }\n\n /**\n * Emitted when the data pager's state changes.\n * @event\n * An event containing details about the change.\n */\n @Output()\n onChanged: EventEmitter<AXDataPagerChangedEvent> = new EventEmitter<AXDataPagerChangedEvent>();\n\n /**\n * @ignore\n */\n constructor(\n @Optional()\n @Inject(AXPagedComponent)\n private _parent: AXPagedComponent,\n ) {\n super();\n //\n if (this._parent) {\n this._parent.onPageChanged.subscribe((c) => {\n this.size = this._parent.pageSize;\n this.total = this._parent.totalCount;\n this.value = c.value;\n });\n this.size = this._parent.pageSize;\n this.total = this._parent.totalCount;\n }\n }\n\n /**\n * @ignore\n */\n ngAfterViewInit() {\n this._emitChangedEvent();\n }\n\n /**\n * @ignore\n */\n protected override internalValueChanged(value: any): void {\n this._emitChangedEvent(true);\n }\n\n /**\n * @ignore\n */\n protected override internalGetValue(value: any): number {\n if (!isNumber(value) || !value || this.totalPages == 0) return 1;\n return value > this.totalPages ? this.totalPages : value;\n }\n\n /**\n * @ignore\n */\n private previousDisplayInfo: AXDataPagerData | null;\n\n public get displayInfo(): AXDataPagerData {\n const skip = Math.max(0, (this.value - 1) * this.size);\n const result = {\n page: this.value,\n totalItems: this.total,\n totalPages: this.totalPages,\n range: {\n from: skip + 1,\n to: Math.min(this.value * this.size, this.total),\n },\n skip,\n take: this.size,\n };\n return result;\n }\n\n /**\n * @ignore\n */\n private _emitChangedEvent(u = false): void {\n this.totalPages = Math.ceil(this._total / this.size);\n //\n if (!isEqual(this.previousDisplayInfo, this.displayInfo)) {\n this.onChanged.emit(\n Object.assign(\n {\n component: this,\n isUserInteraction: u,\n htmlElement: this.getHostElement(),\n },\n this.displayInfo,\n ),\n );\n if (this.totalPages > 0) this._parent?.goToPage(this.value);\n //\n this.previousDisplayInfo = cloneDeep(this.displayInfo);\n //\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Navigates to the next page, or to the last page if on the final page.\n * @ignore\n */\n\n goNextPage(): void {\n this.goToPage(Math.min(this.value + 1, this.totalPages));\n }\n\n /**\n * Navigates to the last page.\n * @ignore\n */\n goLastPage(): void {\n this.goToPage(this.totalPages);\n }\n\n /**\n * Navigates to the first page.\n * @ignore\n */\n goFirstPage(): void {\n this.goToPage(1);\n }\n /**\n * Navigates to the previous page, or to the first page if on the initial page.\n * @ignore\n */\n goPrevPage(): void {\n this.goToPage(Math.max(this.value - 1, 1));\n }\n\n /**\n * Navigates to a specified page.\n * @param page - The page number to navigate to.\n * @ignore\n */\n goToPage(page: number): void {\n if (page != this.value) {\n this.commitValue(page, true);\n }\n }\n\n @HostBinding('class')\n get __hostClass(): string {\n return `ax-sm`;\n }\n}\n","@switch (displayMode) {\n @case ('full') {\n <ax-prefix class=\"ax-full-prefix\">\n <ax-data-pager-numeric-selector> </ax-data-pager-numeric-selector>\n <ax-data-pager-page-sizes> </ax-data-pager-page-sizes>\n </ax-prefix>\n <ax-suffix class=\"ax-full-suffix\">\n <ax-data-pager-info> </ax-data-pager-info>\n </ax-suffix>\n }\n @case ('compact') {\n <ax-prefix class=\"ax-compact-prefix\">\n <ax-data-pager-prev-buttons> </ax-data-pager-prev-buttons>\n <ax-data-pager-input-selector> </ax-data-pager-input-selector>\n <ax-data-pager-next-buttons> </ax-data-pager-next-buttons>\n </ax-prefix>\n <ax-suffix class=\"ax-compact-suffix\">\n <ax-data-pager-info> </ax-data-pager-info>\n </ax-suffix>\n }\n @default {\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXDataPagerInfoComponent } from './data-pager-info.component';\nimport { AXDataPagerInputSelectorComponent } from './data-pager-input-selector.component';\nimport { AXDataPagerNextButtonsComponent } from './data-pager-next-buttons.components';\nimport { AXDataPagerNumericSelectorComponent } from './data-pager-numeric-selector.component';\nimport { AXDataPagerPageSizesComponent } from './data-pager-pagesize-dropdown.component';\nimport { AXDataPagerPrevButtonsComponent } from './data-pager-prev-buttons.component';\nimport { AXDataPagerComponent } from './data-pager.component';\n\nconst COMPONENT = [\n AXDataPagerComponent,\n AXDataPagerNextButtonsComponent,\n AXDataPagerPrevButtonsComponent,\n AXDataPagerPageSizesComponent,\n AXDataPagerNumericSelectorComponent,\n AXDataPagerInputSelectorComponent,\n AXDataPagerInfoComponent,\n];\nconst MODULES = [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXNumberBoxModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXSkeletonModule,\n];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXDataPagerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i2.AXDataPagerNextButtonsComponent","i3.AXDataPagerPrevButtonsComponent","i4.AXDataPagerPageSizesComponent","i5.AXDataPagerNumericSelectorComponent","i6.AXDataPagerInputSelectorComponent","i7.AXDataPagerInfoComponent"],"mappings":"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"}
@@ -334,8 +334,12 @@ class AXImageEditorViewComponent extends MXBaseComponent {
334
334
  }
335
335
  /** @ignore */
336
336
  ngOnDestroy() {
337
- this.resizeEventListener();
338
- this.imageLoadEventListener();
337
+ if (this.resizeEventListener) {
338
+ this.resizeEventListener();
339
+ }
340
+ if (this.imageLoadEventListener) {
341
+ this.imageLoadEventListener();
342
+ }
339
343
  }
340
344
  /** @ignore */
341
345
  imageLoaded() {
@@ -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})\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({\r\n selector: 'ax-image-editor-toolbar',\r\n templateUrl: './image-editor-toolbar.component.html',\r\n styleUrl: './image-editor-toolbar.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n outputs: ['onValueChanged'],\r\n providers: [\r\n { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },\r\n { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },\r\n { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },\r\n { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AXImageEditorToolbarComponent),\r\n multi: true,\r\n },\r\n ],\r\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})\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})\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})\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 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})\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 /** @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 () => {\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 { allowSignalWrites: true },\r\n );\r\n\r\n effect(\r\n () => {\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 { allowSignalWrites: true },\r\n );\r\n\r\n effect(\r\n () => {\r\n if (!this.service.rotate().userInteract || !this.ctx()) return;\r\n this.rotateImage();\r\n },\r\n { allowSignalWrites: true },\r\n );\r\n }\r\n\r\n /** @ignore */\r\n ngOnDestroy(): void {\r\n this.resizeEventListener();\r\n this.imageLoadEventListener();\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 const cropWidth = this.cropEndX() - this.cropStartX();\r\n const cropHeight = this.cropEndY() - this.cropStartY();\r\n\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 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 /** @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})\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({\r\n selector: 'ax-image-editor-toolbar',\r\n templateUrl: './image-editor-toolbar.component.html',\r\n styleUrl: './image-editor-toolbar.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n outputs: ['onValueChanged'],\r\n providers: [\r\n { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },\r\n { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },\r\n { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },\r\n { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AXImageEditorToolbarComponent),\r\n multi: true,\r\n },\r\n ],\r\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})\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})\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})\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 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})\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 /** @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 () => {\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 { allowSignalWrites: true },\r\n );\r\n\r\n effect(\r\n () => {\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 { allowSignalWrites: true },\r\n );\r\n\r\n effect(\r\n () => {\r\n if (!this.service.rotate().userInteract || !this.ctx()) return;\r\n this.rotateImage();\r\n },\r\n { allowSignalWrites: true },\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 const cropWidth = this.cropEndX() - this.cropStartX();\r\n const cropHeight = this.cropEndY() - this.cropStartY();\r\n\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 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 /** @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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"}