@acorex/components 19.0.1 → 19.1.0-next.0
Sign up to get free protection for your applications and to get access to all the features.
- package/color-box/lib/color-box.component.d.ts +2 -1
- package/color-palette/lib/color-palette-picker.component.d.ts +1 -1
- package/conversation/lib/conversation-message/conversation-message.component.d.ts +5 -9
- package/conversation/lib/conversation-view/conversation-view.component.d.ts +8 -21
- package/conversation/lib/conversation.module.d.ts +2 -1
- package/fesm2022/acorex-components-color-box.mjs +30 -4
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +4 -4
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-common.mjs +20 -8
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +39 -45
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +8 -6
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +1 -0
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +2 -2
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +12 -24
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +8 -3
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/otp/lib/otp.component.d.ts +3 -11
- package/package.json +1 -1
- package/tabs/lib/tabs.component.d.ts +1 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-form.mjs","sources":["../../../../libs/components/form/src/lib/form.component.ts","../../../../libs/components/form/src/lib/form-field.component.ts","../../../../libs/components/form/src/lib/form.config.ts","../../../../libs/components/form/src/lib/validation-rule.directive.ts","../../../../libs/components/form/src/lib/validation-summary.component.ts","../../../../libs/components/form/src/lib/form.module.ts","../../../../libs/components/form/src/acorex-components-form.ts"],"sourcesContent":["import { AXEvent, AXStyleLookType, AXValuableComponent, MXBaseComponent } from '@acorex/components/common';\nimport { AXValidationSummary } from '@acorex/core/validation';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n InputSignal,\n OnDestroy,\n Output,\n ViewEncapsulation,\n contentChildren,\n effect,\n input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormFieldComponent } from './form-field.component';\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXFormValidationEvent extends AXEvent {\n result: AXValidationSummary;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport type AXFormUpdateOn = 'change' | 'blur' | 'submit';\nexport type AXFormMessageStyle = 'bottom' | 'float';\nexport type AXLabelMode = 'static' | 'floating' | 'over';\n\n/**\n * The AXForm is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form',\n template: `<form\n (submit)=\"_handleSubmit($event)\"\n (reset)=\"_handleReset()\"\n class=\"ax-{{ messageStyle() }}-error\"\n >\n <ng-content></ng-content>\n </form>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AXFormComponent extends MXBaseComponent implements OnDestroy {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n labelMode = input<AXLabelMode>('static');\n\n look = input<AXStyleLookType>('solid');\n\n content = contentChildren(AXFormFieldComponent, { descendants: true });\n\n #applyLooks = effect(() => {\n this.content().forEach((item: any) => {\n if (item.input) {\n item.input.look = this.look();\n }\n });\n });\n\n /**\n * Determines the style of the message in the form field.\n * @defaultValue 'bottom'\n */\n messageStyle: InputSignal<AXFormMessageStyle> = input<AXFormMessageStyle>('bottom');\n\n /**\n * Emitted when the form is validated.\n *\n * @event\n */\n @Output()\n onValidate: EventEmitter<AXFormValidationEvent> = new EventEmitter<AXFormValidationEvent>();\n\n /**\n * Emitted when the form's update mode changes.\n *\n * @event\n */\n @Output()\n updateOnChange: EventEmitter<AXFormUpdateOn> = new EventEmitter<AXFormUpdateOn>();\n\n /**\n * @ignore\n */\n private _updateOn: AXFormUpdateOn = 'blur';\n\n /**\n * Determines when the form should be updated.\n */\n @Input()\n public get updateOn(): AXFormUpdateOn {\n return this._updateOn;\n }\n\n /**\n * Sets the criteria for when the form should be updated.\n * @param v The criteria to set (e.g., 'change', 'blur').\n */\n public set updateOn(v: AXFormUpdateOn) {\n this.setOption({\n name: 'updateOn',\n value: v,\n afterCallback: () => {\n //this._bindEvents();\n },\n });\n }\n\n /**\n * @ignore\n */\n private _subs: Subscription[] = [];\n\n /**\n * @ignore\n */\n protected async _handleSubmit(e: SubmitEvent) {\n e.preventDefault();\n await this.validate();\n }\n\n /**\n * @ignore\n */\n protected _handleReset() {\n this.reset();\n }\n\n /**\n * @ignore\n */\n constructor() {\n super();\n }\n\n //TODO: check update on\n\n // ngAfterViewInit(): void {\n // //this._bindEvents();\n // }\n\n // private _bindEvents() {\n // this._clearSubs();\n // const widgets = this._getComponenets();\n // //\n // widgets.forEach((w) => {\n // if (this.updateOn == 'change') {\n // this._subs.push(\n // w.onValueChanged?.subscribe((v: AXValueChangedEvent) => {\n // if (v.isUserInteraction) w.validate();\n // }),\n // );\n // } else if (this.updateOn == 'blur') {\n // this._subs.push(\n // w.onBlur?.subscribe((v) => {\n // w.validate();\n // }),\n // );\n // }\n // });\n // }\n\n /**\n * @ignore\n */\n private _clearSubs() {\n this._subs.forEach((c) => c?.unsubscribe());\n this._subs = [];\n }\n\n /**\n * @ignore\n */\n private get fields(): AXValuableComponent[] {\n return Array.from(this.getHostElement().querySelectorAll('[ax-form-item=\"true\"]'))\n .map((c) => (c as any).__axContext__)\n .filter((c) => c != null);\n }\n\n async validate(...names: string[]): Promise<AXValidationSummary> {\n const results = await Promise.all(\n this.fields\n .filter((c) => names == null || names.length == 0 || names.includes(c.name))\n .map((field) => field.validate()),\n );\n // Merge all validation summaries into one\n const mergedSummary: AXValidationSummary = {\n result: results.every((res) => res.result),\n rules: results.flatMap((res) => res.rules),\n };\n this._emitOnValidateEvent(mergedSummary);\n return mergedSummary;\n }\n\n /**\n * @ignore\n */\n private _emitOnValidateEvent(e: AXValidationSummary) {\n this.onValidate.emit({\n component: this,\n result: e,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Resets all form fields without clearing errors.\n */\n reset() {\n this.fields.forEach((c) => c.reset(false));\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * Resets validation errors for all form fields.\n */\n resetErrors() {\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this._clearSubs();\n }\n}\n","import { AXValuableComponent, MXBaseComponent } from '@acorex/components/common';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n afterNextRender,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXFormComponent, AXLabelMode } from './form.component';\n\n/**\n * A container component for form fields that provides styling and structure.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form-field',\n template: `<ng-content></ng-content>`,\n styleUrls: ['./form-field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXUnsubscriber],\n standalone: false,\n})\nexport class AXFormFieldComponent extends MXBaseComponent {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n labelMode = input<AXLabelMode>('static');\n\n /**\n * @ignore\n */\n protected _labelMode: WritableSignal<AXLabelMode> = signal(this.labelMode());\n\n private unsubscriber = inject(AXUnsubscriber);\n\n @ContentChild(AXValuableComponent)\n private input: AXValuableComponent;\n\n /**\n * @ignore\n */\n @ContentChild(AXLabelComponent)\n private label: AXLabelComponent;\n\n form = inject(AXFormComponent, { optional: true });\n\n host = inject(ViewContainerRef);\n\n /**\n * @ignore\n */\n prefix: HTMLElement;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n\n afterNextRender(() => {\n this.calcIndentSize();\n this.setRequired();\n this.setLabelMode();\n this.listeningEvent();\n });\n\n effect(() => {\n this.setLabelMode();\n });\n }\n\n /**\n * Calculates and sets the indentation size for the label based on the width of the prefix element.\n * @ignore\n */\n calcIndentSize() {\n const prefix = (this.input as any)?.getHostElement()?.querySelector('ax-prefix') as HTMLElement;\n if (prefix) {\n this.label.getHostElement().style.insetInlineStart = prefix?.clientWidth + 'px';\n }\n }\n\n /**\n * Sets the required attribute for the input field based on validation rules.\n * Automatically updates if validation rules change.\n * @ignore\n */\n setRequired() {\n this.autoSetRequired();\n this.input?.validationRulesChange.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this.autoSetRequired();\n });\n }\n /**\n * Sets the label mode based on the form's label mode configuration.\n * @ignore\n */\n setLabelMode() {\n this._labelMode.set(this.form?.labelMode());\n }\n\n /**\n * Subscribes to focus and blur events on the input element.\n * Adds or removes the 'ax-state-focused' class to/from the host element based on the focus state.\n * @ignone\n */\n listeningEvent() {\n const focusEvent = this.input?.['onFocus'] as Subject<any>;\n focusEvent?.subscribe((e) => {\n // this.handleFloating('focus');\n this.host.element.nativeElement.classList.add('ax-state-focused');\n });\n //\n const blurEvent = this.input?.['onBlur'] as Subject<any>;\n blurEvent?.subscribe((e) => {\n // this.handleFloating('blur');\n this.host.element.nativeElement.classList.remove('ax-state-focused');\n });\n }\n // protected handleFloating(mode: 'focus' | 'blur') {\n // const _host = this.host.element.nativeElement as HTMLElement;\n // const placeholder = this.input;\n\n // switch (mode) {\n // case 'focus':\n // _host.classList.add('ax-state-floating');\n // this.label.getHostElement().style.insetInlineStart = 'inherit';\n\n // break;\n // case 'blur':\n // _host.classList.remove('ax-state-floating');\n\n // break;\n // }\n // }\n\n /**\n * @ignore\n */\n private autoSetRequired() {\n if (this.label && this.input) {\n if (this.label.required == null || this.label['autoSetRequired']) {\n this.label.required = this.input.isRequired;\n this.label['autoSetRequired'] = true;\n }\n }\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n get __hostClass(): string[] {\n let hasValue;\n if (this.input) {\n if (this.input instanceof AXSelectBoxComponent && this.input.multiple) {\n hasValue = (this.input as any).value?.length;\n } else {\n hasValue = this.input.value;\n }\n }\n return [`ax-state-${this._labelMode()}-label`, `${hasValue && 'ax-state-has-value'}`];\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AXFormConfig {}\n\nexport const AX_FORM_CONFIG = new InjectionToken<AXFormConfig>('AX_FORM_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXFormDefaultConfig;\n },\n});\n\nexport const AXFormDefaultConfig: AXFormConfig = {};\n\nexport type PartialFormConfig = Partial<AXFormConfig>;\n\nexport function formConfig(config: PartialFormConfig = {}): AXFormConfig {\n const result = {\n ...AXFormDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXValuableComponent } from '@acorex/components/common';\nimport { AXValidationRuleOptions } from '@acorex/core/validation';\nimport { Directive, Input, OnDestroy, OnInit } from '@angular/core';\n\n@Directive({\n selector: 'ax-validation-rule',\n standalone: false\n})\nexport class AXValidationRuleDirective implements OnInit, OnDestroy {\n @Input() rule: string;\n @Input() options: Omit<AXValidationRuleOptions, 'message'>;\n @Input() message: string;\n\n constructor(private host: AXValuableComponent) {}\n\n ngOnInit() {\n this.host.addValidationRule({ rule: this.rule, options: this.ruleOptions });\n }\n\n ngOnDestroy() {\n this.host.removeValidationRule({\n rule: this.rule,\n options: this.ruleOptions,\n });\n }\n\n private get ruleOptions(): AXValidationRuleOptions {\n return Object.assign({ message: this.message, name: this.host.name }, this.options);\n }\n}\n","import { MXBaseComponent } from '@acorex/components/common';\nimport { AXToastService } from '@acorex/components/toast';\nimport { translateSync } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnDestroy, Optional, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormComponent, AXFormValidationEvent } from './form.component';\n\nexport type AXValidationSummaryDisplayMode = 'toast' | 'alert';\n\n/**\n * Displays validation summaries in the form of an alert.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-validation-summary',\n template: `\n @if (displayMode === 'alert' && _content) {\n <ax-alert color=\"danger\" [timeOut]=\"_timeOut\" #a (onClosed)=\"_handleOnDismissed()\">\n <ax-icon></ax-icon>\n <ax-title>{{ title | translate | async }}</ax-title>\n <ax-content>\n <div [innerHTML]=\"_content\"></div>\n </ax-content>\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Dismiss\" (onClick)=\"a.close()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n </ax-alert>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXValidationSummaryComponent extends MXBaseComponent implements OnDestroy {\n /**\n * @ignore\n */\n protected _content?: string = null;\n\n /**\n * @ignore\n */\n private _title = 'validation.messages.title';\n\n /**\n * The title of the validation summary alert.\n */\n @Input()\n public get title(): string {\n return this._title;\n }\n\n /**\n * Sets the title of the validation summary alert.\n *\n * @param v The title to be set.\n */\n public set title(v: string) {\n this._title = v;\n }\n\n /**\n * Specifies the display mode for the validation summary.\n *\n * @defaultValue 'toast'\n */\n @Input()\n displayMode: AXValidationSummaryDisplayMode = 'toast';\n\n /**\n * Specifies the time in milliseconds before the validation summary automatically hides.\n */\n @Input()\n timeOut?: number;\n\n /**\n * Determines whether the validation summary should automatically hide after a specified time.\n * @defaultValue false\n */\n @Input()\n autoHide = false;\n\n /**\n * @ignore\n */\n protected _timeOut: number;\n\n /**\n * @ignore\n */\n private sub: Subscription;\n\n /**\n * @ignore\n */\n constructor(\n private _tosatService: AXToastService,\n @Optional()\n @Inject(AXFormComponent)\n private host: AXFormComponent,\n ) {\n super();\n //\n this.sub = host.onValidate.subscribe((e: AXFormValidationEvent) => {\n if (e.result.result) {\n this._content = null;\n } else {\n const failedRules = e.result.rules.filter((c) => !c.result && c.message);\n\n this._content = `<ul>${failedRules.map((c) => this.formatRule({ title: c['title'] as string, message: c.message })).join('')}</ul>`;\n this._timeOut = this.autoHide ? this.timeOut ?? Math.max(failedRules.length * 1000, 2000) : 0;\n\n if (this.displayMode == 'toast') {\n this._tosatService.show({\n color: 'danger',\n closeButton: true,\n timeOut: this._timeOut,\n timeOutProgress: true,\n content: this._content,\n title: translateSync(this.title),\n location: 'bottom-center',\n });\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n /**\n * @ignore\n */\n private formatRule(rule: { title?: string; message: string }): string {\n return rule.title ? `<li><b>${rule.title}:</b> ${rule.message}</li>` : `<li>${rule.message}</li>`;\n }\n\n /**\n * @ignore\n */\n protected _handleOnDismissed() {\n this._content = null;\n }\n\n /**\n * @ignore\n */\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n}\n","import { AXAlertModule } from '@acorex/components/alert';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXFormFieldComponent } from './form-field.component';\nimport { AXFormComponent } from './form.component';\nimport { AXValidationRuleDirective } from './validation-rule.directive';\nimport { AXValidationSummaryComponent } from './validation-summary.component';\n\n@NgModule({\n declarations: [AXFormFieldComponent, AXFormComponent, AXValidationRuleDirective, AXValidationSummaryComponent],\n imports: [CommonModule, AXDecoratorModule, AXAlertModule, AXButtonModule, AXValidationModule, AXTranslationModule],\n exports: [AXFormFieldComponent, AXFormComponent, AXValidationRuleDirective, AXValidationSummaryComponent],\n providers: [],\n})\nexport class AXFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBA;;;AAGG;AACG,MAAO,qBAAsB,SAAQ,OAAO,CAAA;AAEjD;AAUD;;;;AAIG;AAcG,MAAO,eAAgB,SAAQ,eAAe,CAAA;AAWlD,IAAA,WAAW;AAmCX;;AAEG;AACH,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;AAGvB;;;AAGG;IACH,IAAW,QAAQ,CAAC,CAAiB,EAAA;QACnC,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;;aAEnB;AACF,SAAA,CAAC;;AAQJ;;AAEG;IACO,MAAM,aAAa,CAAC,CAAc,EAAA;QAC1C,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE;;AAGvB;;AAEG;IACO,YAAY,GAAA;QACpB,IAAI,CAAC,KAAK,EAAE;;AAGd;;AAEG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA3FT;;;AAGG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAc,QAAQ,CAAC;AAExC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,OAAO,CAAC;QAEtC,IAAO,CAAA,OAAA,GAAG,eAAe,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAEtE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,MAAK;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AACnC,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;;AAEjC,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF;;;AAGG;AACH,QAAA,IAAA,CAAA,YAAY,GAAoC,KAAK,CAAqB,QAAQ,CAAC;AAEnF;;;;AAIG;AAEH,QAAA,IAAA,CAAA,UAAU,GAAwC,IAAI,YAAY,EAAyB;AAE3F;;;;AAIG;AAEH,QAAA,IAAA,CAAA,cAAc,GAAiC,IAAI,YAAY,EAAkB;AAEjF;;AAEG;QACK,IAAS,CAAA,SAAA,GAAmB,MAAM;AAwB1C;;AAEG;QACK,IAAK,CAAA,KAAA,GAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDlC;;AAEG;IACK,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAGjB;;AAEG;AACH,IAAA,IAAY,MAAM,GAAA;AAChB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;aAC9E,GAAG,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,aAAa;aACnC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;;AAG7B,IAAA,MAAM,QAAQ,CAAC,GAAG,KAAe,EAAA;QAC/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC;aACF,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CACpC;;AAED,QAAA,MAAM,aAAa,GAAwB;AACzC,YAAA,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC;AAC1C,YAAA,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;SAC3C;AACD,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AACxC,QAAA,OAAO,aAAa;;AAGtB;;AAEG;AACK,IAAA,oBAAoB,CAAC,CAAsB,EAAA;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AACnC,SAAA,CAAC;;AAGJ;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;;AAG7C;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;;AAG7C;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,EAAE;;8GAxLR,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EASA,oBAAoB,EApBlC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMJ,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKG,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMJ,SAAA,CAAA;oBACN,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAgCC,UAAU,EAAA,CAAA;sBADT;gBASD,cAAc,EAAA,CAAA;sBADb;gBAYU,QAAQ,EAAA,CAAA;sBADlB;;;AChFH;;;;AAIG;AAUG,MAAO,oBAAqB,SAAQ,eAAe,CAAA;AAgCvD;;AAEG;AACH,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAnCT;;;AAGG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAc,QAAQ,CAAC;AAExC;;AAEG;QACO,IAAU,CAAA,UAAA,GAAgC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AAEpE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;QAW7C,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAElD,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAa7B,eAAe,CAAC,MAAK;YACnB,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;AACvB,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,YAAY,EAAE;AACrB,SAAC,CAAC;;AAGJ;;;AAGG;IACH,cAAc,GAAA;AACZ,QAAA,MAAM,MAAM,GAAI,IAAI,CAAC,KAAa,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,WAAW,CAAgB;QAC/F,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM,EAAE,WAAW,GAAG,IAAI;;;AAInF;;;;AAIG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAK;YACxF,IAAI,CAAC,eAAe,EAAE;AACxB,SAAC,CAAC;;AAEJ;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;;AAG7C;;;;AAIG;IACH,cAAc,GAAA;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAiB;AAC1D,QAAA,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACnE,SAAC,CAAC;;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAiB;AACxD,QAAA,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,KAAI;;AAEzB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACtE,SAAC,CAAC;;;;;;;;;;;;;;;AAmBJ;;AAEG;IACK,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;gBAChE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU;AAC3C,gBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI;;;;AAK1C;;AAEG;AACH,IAAA,IACI,WAAW,GAAA;AACb,QAAA,IAAI,QAAQ;AACZ,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,YAAY,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACrE,QAAQ,GAAI,IAAI,CAAC,KAAa,CAAC,KAAK,EAAE,MAAM;;iBACvC;AACL,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;;;AAG/B,QAAA,OAAO,CAAC,CAAA,SAAA,EAAY,IAAI,CAAC,UAAU,EAAE,CAAA,MAAA,CAAQ,EAAE,CAAA,EAAG,QAAQ,IAAI,oBAAoB,CAAA,CAAE,CAAC;;8GA5I5E,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,cAAc,CAAC,6DAiBb,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMnB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3BpB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4yLAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAO1B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EACf,QAAA,EAAA,CAAA,yBAAA,CAA2B,EAEtB,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,cAAc,CAAC,cACf,KAAK,EAAA,MAAA,EAAA,CAAA,4yLAAA,CAAA,EAAA;wDAiBT,KAAK,EAAA,CAAA;sBADZ,YAAY;uBAAC,mBAAmB;gBAOzB,KAAK,EAAA,CAAA;sBADZ,YAAY;uBAAC,gBAAgB;gBA+G1B,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;;;MCjKT,cAAc,GAAG,IAAI,cAAc,CAAe,gBAAgB,EAAE;AAC/E,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;AACZ,QAAA,OAAO,mBAAmB;KAC3B;AACF,CAAA;AAEM,MAAM,mBAAmB,GAAiB;AAIjC,SAAA,UAAU,CAAC,MAAA,GAA4B,EAAE,EAAA;AACvD,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,GAAG,mBAAmB;AACtB,QAAA,GAAG,MAAM;KACV;AACD,IAAA,OAAO,MAAM;AACf;;MCba,yBAAyB,CAAA;AAKpC,IAAA,WAAA,CAAoB,IAAyB,EAAA;QAAzB,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAExB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;;IAG7E,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,WAAW;AAC1B,SAAA,CAAC;;AAGJ,IAAA,IAAY,WAAW,GAAA;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;;8GAnB1E,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;wFAEU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;ACFH;;;;AAIG;AAuBG,MAAO,4BAA6B,SAAQ,eAAe,CAAA;AAW/D;;AAEG;AACH,IAAA,IACW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;;AAGpB;;;;AAIG;IACH,IAAW,KAAK,CAAC,CAAS,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;;AAkCjB;;AAEG;IACH,WACU,CAAA,aAA6B,EAG7B,IAAqB,EAAA;AAE7B,QAAA,KAAK,EAAE;QALC,IAAa,CAAA,aAAA,GAAb,aAAa;QAGb,IAAI,CAAA,IAAA,GAAJ,IAAI;AAjEd;;AAEG;QACO,IAAQ,CAAA,QAAA,GAAY,IAAI;AAElC;;AAEG;QACK,IAAM,CAAA,MAAA,GAAG,2BAA2B;AAmB5C;;;;AAIG;QAEH,IAAW,CAAA,WAAA,GAAmC,OAAO;AAQrD;;;AAGG;QAEH,IAAQ,CAAA,QAAA,GAAG,KAAK;;AAuBd,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAwB,KAAI;AAChE,YAAA,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;iBACf;gBACL,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC;AAExE,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAO,IAAA,EAAA,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACnI,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAE7F,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE;AAC/B,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,WAAW,EAAE,IAAI;wBACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;AACtB,wBAAA,eAAe,EAAE,IAAI;wBACrB,OAAO,EAAE,IAAI,CAAC,QAAQ;AACtB,wBAAA,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,wBAAA,QAAQ,EAAE,eAAe;AAC1B,qBAAA,CAAC;;;AAGN,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;;AAGJ;;AAEG;AACK,IAAA,UAAU,CAAC,IAAyC,EAAA;QAC1D,OAAO,IAAI,CAAC,KAAK,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAA,MAAA,EAAS,IAAI,CAAC,OAAO,CAAO,KAAA,CAAA,GAAG,OAAO,IAAI,CAAC,OAAO,CAAA,KAAA,CAAO;;AAGnG;;AAEG;IACO,kBAAkB,GAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAGtB;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;;AAjHd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,kDAiE7B,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjEd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EApB3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;AAeX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAtBxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;AAeX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAiEI;;0BACA,MAAM;2BAAC,eAAe;yCAlDd,KAAK,EAAA,CAAA;sBADf;gBAoBD,WAAW,EAAA,CAAA;sBADV;gBAOD,OAAO,EAAA,CAAA;sBADN;gBAQD,QAAQ,EAAA,CAAA;sBADP;;;MChEU,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,YAAA,EAAA,CALR,oBAAoB,EAAE,eAAe,EAAE,yBAAyB,EAAE,4BAA4B,CAAA,EAAA,OAAA,EAAA,CACnG,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACvG,oBAAoB,EAAE,eAAe,EAAE,yBAAyB,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;+GAG7F,YAAY,EAAA,OAAA,EAAA,CAJb,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAItG,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,EAAE,eAAe,EAAE,yBAAyB,EAAE,4BAA4B,CAAC;AAC9G,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,CAAC;oBAClH,OAAO,EAAE,CAAC,oBAAoB,EAAE,eAAe,EAAE,yBAAyB,EAAE,4BAA4B,CAAC;AACzG,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;;;ACjBD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"acorex-components-form.mjs","sources":["../../../../libs/components/form/src/lib/form.component.ts","../../../../libs/components/form/src/lib/form-field.component.ts","../../../../libs/components/form/src/lib/form.config.ts","../../../../libs/components/form/src/lib/validation-rule.directive.ts","../../../../libs/components/form/src/lib/validation-summary.component.ts","../../../../libs/components/form/src/lib/form.module.ts","../../../../libs/components/form/src/acorex-components-form.ts"],"sourcesContent":["import { AXEvent, AXStyleLookType, AXValuableComponent, MXBaseComponent } from '@acorex/components/common';\nimport { AXValidationSummary } from '@acorex/core/validation';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n InputSignal,\n OnDestroy,\n Output,\n ViewEncapsulation,\n contentChildren,\n effect,\n input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormFieldComponent } from './form-field.component';\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXFormValidationEvent extends AXEvent {\n result: AXValidationSummary;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport type AXFormUpdateOn = 'change' | 'blur' | 'submit';\nexport type AXFormMessageStyle = 'bottom' | 'float';\nexport type AXLabelMode = 'static' | 'floating' | 'over';\n\n/**\n * The AXForm is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form',\n template: `<form\n (submit)=\"_handleSubmit($event)\"\n (reset)=\"_handleReset()\"\n class=\"ax-{{ messageStyle() }}-error\"\n >\n <ng-content></ng-content>\n </form>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AXFormComponent extends MXBaseComponent implements OnDestroy {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n labelMode = input<AXLabelMode>('static');\n\n look = input<AXStyleLookType>('solid');\n\n content = contentChildren(AXFormFieldComponent, { descendants: true });\n\n #applyLooks = effect(() => {\n this.content().forEach((item: any) => {\n if (item.input) {\n item.input.look = this.look();\n }\n });\n });\n\n /**\n * Determines the style of the message in the form field.\n * @defaultValue 'bottom'\n */\n messageStyle: InputSignal<AXFormMessageStyle> = input<AXFormMessageStyle>('bottom');\n\n /**\n * Emitted when the form is validated.\n *\n * @event\n */\n @Output()\n onValidate: EventEmitter<AXFormValidationEvent> = new EventEmitter<AXFormValidationEvent>();\n\n /**\n * Emitted when the form's update mode changes.\n *\n * @event\n */\n @Output()\n updateOnChange: EventEmitter<AXFormUpdateOn> = new EventEmitter<AXFormUpdateOn>();\n\n /**\n * @ignore\n */\n private _updateOn: AXFormUpdateOn = 'blur';\n\n /**\n * Determines when the form should be updated.\n */\n @Input()\n public get updateOn(): AXFormUpdateOn {\n return this._updateOn;\n }\n\n /**\n * Sets the criteria for when the form should be updated.\n * @param v The criteria to set (e.g., 'change', 'blur').\n */\n public set updateOn(v: AXFormUpdateOn) {\n this.setOption({\n name: 'updateOn',\n value: v,\n afterCallback: () => {\n //this._bindEvents();\n },\n });\n }\n\n /**\n * @ignore\n */\n private _subs: Subscription[] = [];\n\n /**\n * @ignore\n */\n protected async _handleSubmit(e: SubmitEvent) {\n e.preventDefault();\n await this.validate();\n }\n\n /**\n * @ignore\n */\n protected _handleReset() {\n this.reset();\n }\n\n /**\n * @ignore\n */\n constructor() {\n super();\n }\n\n //TODO: check update on\n\n // ngAfterViewInit(): void {\n // //this._bindEvents();\n // }\n\n // private _bindEvents() {\n // this._clearSubs();\n // const widgets = this._getComponenets();\n // //\n // widgets.forEach((w) => {\n // if (this.updateOn == 'change') {\n // this._subs.push(\n // w.onValueChanged?.subscribe((v: AXValueChangedEvent) => {\n // if (v.isUserInteraction) w.validate();\n // }),\n // );\n // } else if (this.updateOn == 'blur') {\n // this._subs.push(\n // w.onBlur?.subscribe((v) => {\n // w.validate();\n // }),\n // );\n // }\n // });\n // }\n\n /**\n * @ignore\n */\n private _clearSubs() {\n this._subs.forEach((c) => c?.unsubscribe());\n this._subs = [];\n }\n\n /**\n * @ignore\n */\n private get fields(): AXValuableComponent[] {\n return Array.from(this.getHostElement().querySelectorAll('[ax-form-item=\"true\"]'))\n .map((c) => (c as any).__axContext__)\n .filter((c) => c != null);\n }\n\n async validate(...names: string[]): Promise<AXValidationSummary> {\n const results = await Promise.all(\n this.fields\n .filter((c) => names == null || names.length == 0 || names.includes(c.name))\n .map((field) => field.validate()),\n );\n // Merge all validation summaries into one\n const mergedSummary: AXValidationSummary = {\n result: results.every((res) => res.result),\n rules: results.flatMap((res) => res.rules),\n };\n this._emitOnValidateEvent(mergedSummary);\n return mergedSummary;\n }\n\n /**\n * @ignore\n */\n private _emitOnValidateEvent(e: AXValidationSummary) {\n this.onValidate.emit({\n component: this,\n result: e,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Resets all form fields without clearing errors.\n */\n reset() {\n this.fields.forEach((c) => c.reset(false));\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * Resets validation errors for all form fields.\n */\n resetErrors() {\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * @ignore\n */\n ngOnDestroy(): void {\n this._clearSubs();\n }\n}\n","import { AXValuableComponent, MXBaseComponent } from '@acorex/components/common';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n afterNextRender,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXFormComponent, AXLabelMode } from './form.component';\n\n/**\n * A container component for form fields that provides styling and structure.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form-field',\n template: `<ng-content></ng-content>`,\n styleUrls: ['./form-field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXUnsubscriber],\n standalone: false,\n})\nexport class AXFormFieldComponent extends MXBaseComponent {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n labelMode = input<AXLabelMode>('static');\n\n /**\n * @ignore\n */\n protected _labelMode: WritableSignal<AXLabelMode> = signal(this.labelMode());\n\n private unsubscriber = inject(AXUnsubscriber);\n\n @ContentChild(AXValuableComponent)\n private input: AXValuableComponent;\n\n /**\n * @ignore\n */\n @ContentChild(AXLabelComponent)\n private label: AXLabelComponent;\n\n form = inject(AXFormComponent, { optional: true });\n\n host = inject(ViewContainerRef);\n\n /**\n * @ignore\n */\n prefix: HTMLElement;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n\n afterNextRender(() => {\n this.calcIndentSize();\n this.setRequired();\n this.setLabelMode();\n this.listeningEvent();\n });\n\n effect(() => {\n this.setLabelMode();\n });\n }\n\n /**\n * Calculates and sets the indentation size for the label based on the width of the prefix element.\n * @ignore\n */\n calcIndentSize() {\n setTimeout(() => {\n const prefix = (this.input as any)?.getHostElement()?.querySelector('ax-prefix') as HTMLElement;\n if (prefix) {\n this.label.getHostElement().style.insetInlineStart = prefix?.clientWidth + 'px';\n }\n });\n }\n\n /**\n * Sets the required attribute for the input field based on validation rules.\n * Automatically updates if validation rules change.\n * @ignore\n */\n setRequired() {\n this.autoSetRequired();\n this.input?.validationRulesChange.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this.autoSetRequired();\n });\n }\n /**\n * Sets the label mode based on the form's label mode configuration.\n * @ignore\n */\n setLabelMode() {\n this._labelMode.set(this.form?.labelMode());\n }\n\n /**\n * Subscribes to focus and blur events on the input element.\n * Adds or removes the 'ax-state-focused' class to/from the host element based on the focus state.\n * @ignone\n */\n listeningEvent() {\n const focusEvent = this.input?.['onFocus'] as Subject<any>;\n focusEvent?.subscribe((e) => {\n // this.handleFloating('focus');\n this.host.element.nativeElement.classList.add('ax-state-focused');\n });\n //\n const blurEvent = this.input?.['onBlur'] as Subject<any>;\n blurEvent?.subscribe((e) => {\n // this.handleFloating('blur');\n this.host.element.nativeElement.classList.remove('ax-state-focused');\n });\n }\n // protected handleFloating(mode: 'focus' | 'blur') {\n // const _host = this.host.element.nativeElement as HTMLElement;\n // const placeholder = this.input;\n\n // switch (mode) {\n // case 'focus':\n // _host.classList.add('ax-state-floating');\n // this.label.getHostElement().style.insetInlineStart = 'inherit';\n\n // break;\n // case 'blur':\n // _host.classList.remove('ax-state-floating');\n\n // break;\n // }\n // }\n\n /**\n * @ignore\n */\n private autoSetRequired() {\n if (this.label && this.input) {\n if (this.label.required == null || this.label['autoSetRequired']) {\n this.label.required = this.input.isRequired;\n this.label['autoSetRequired'] = true;\n }\n }\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n get __hostClass(): string[] {\n let hasValue;\n if (this.input) {\n if (this.input instanceof AXSelectBoxComponent && this.input.multiple) {\n hasValue = (this.input as any).value?.length;\n } else {\n hasValue = this.input.value;\n }\n }\n return [`ax-state-${this._labelMode()}-label`, `${hasValue && 'ax-state-has-value'}`];\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AXFormConfig {}\n\nexport const AX_FORM_CONFIG = new InjectionToken<AXFormConfig>('AX_FORM_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXFormDefaultConfig;\n },\n});\n\nexport const AXFormDefaultConfig: AXFormConfig = {};\n\nexport type PartialFormConfig = Partial<AXFormConfig>;\n\nexport function formConfig(config: PartialFormConfig = {}): AXFormConfig {\n const result = {\n ...AXFormDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXValuableComponent } from '@acorex/components/common';\nimport { AXValidationRuleOptions } from '@acorex/core/validation';\nimport { Directive, Input, OnDestroy, OnInit } from '@angular/core';\n\n@Directive({\n selector: 'ax-validation-rule',\n standalone: false\n})\nexport class AXValidationRuleDirective implements OnInit, OnDestroy {\n @Input() rule: string;\n @Input() options: Omit<AXValidationRuleOptions, 'message'>;\n @Input() message: string;\n\n constructor(private host: AXValuableComponent) {}\n\n ngOnInit() {\n this.host.addValidationRule({ rule: this.rule, options: this.ruleOptions });\n }\n\n ngOnDestroy() {\n this.host.removeValidationRule({\n rule: this.rule,\n options: this.ruleOptions,\n });\n }\n\n private get ruleOptions(): AXValidationRuleOptions {\n return Object.assign({ message: this.message, name: this.host.name }, this.options);\n }\n}\n","import { MXBaseComponent } from '@acorex/components/common';\nimport { AXToastService } from '@acorex/components/toast';\nimport { translateSync } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, Inject, Input, OnDestroy, Optional, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormComponent, AXFormValidationEvent } from './form.component';\n\nexport type AXValidationSummaryDisplayMode = 'toast' | 'alert';\n\n/**\n * Displays validation summaries in the form of an alert.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-validation-summary',\n template: `\n @if (displayMode === 'alert' && _content) {\n <ax-alert color=\"danger\" [timeOut]=\"_timeOut\" #a (onClosed)=\"_handleOnDismissed()\">\n <ax-icon></ax-icon>\n <ax-title>{{ title | translate | async }}</ax-title>\n <ax-content>\n <div [innerHTML]=\"_content\"></div>\n </ax-content>\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Dismiss\" (onClick)=\"a.close()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n </ax-alert>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXValidationSummaryComponent extends MXBaseComponent implements OnDestroy {\n /**\n * @ignore\n */\n protected _content?: string = null;\n\n /**\n * @ignore\n */\n private _title = 'validation.messages.title';\n\n /**\n * The title of the validation summary alert.\n */\n @Input()\n public get title(): string {\n return this._title;\n }\n\n /**\n * Sets the title of the validation summary alert.\n *\n * @param v The title to be set.\n */\n public set title(v: string) {\n this._title = v;\n }\n\n /**\n * Specifies the display mode for the validation summary.\n *\n * @defaultValue 'toast'\n */\n @Input()\n displayMode: AXValidationSummaryDisplayMode = 'toast';\n\n /**\n * Specifies the time in milliseconds before the validation summary automatically hides.\n */\n @Input()\n timeOut?: number;\n\n /**\n * Determines whether the validation summary should automatically hide after a specified time.\n * @defaultValue false\n */\n @Input()\n autoHide = false;\n\n /**\n * @ignore\n */\n protected _timeOut: number;\n\n /**\n * @ignore\n */\n private sub: Subscription;\n\n /**\n * @ignore\n */\n constructor(\n private _tosatService: AXToastService,\n @Optional()\n @Inject(AXFormComponent)\n private host: AXFormComponent,\n ) {\n super();\n //\n this.sub = host.onValidate.subscribe((e: AXFormValidationEvent) => {\n if (e.result.result) {\n this._content = null;\n } else {\n const failedRules = e.result.rules.filter((c) => !c.result && c.message);\n\n this._content = `<ul>${failedRules.map((c) => this.formatRule({ title: c['title'] as string, message: c.message })).join('')}</ul>`;\n this._timeOut = this.autoHide ? this.timeOut ?? Math.max(failedRules.length * 1000, 2000) : 0;\n\n if (this.displayMode == 'toast') {\n this._tosatService.show({\n color: 'danger',\n closeButton: true,\n timeOut: this._timeOut,\n timeOutProgress: true,\n content: this._content,\n title: translateSync(this.title),\n location: 'bottom-center',\n });\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n /**\n * @ignore\n */\n private formatRule(rule: { title?: string; message: string }): string {\n return rule.title ? `<li><b>${rule.title}:</b> ${rule.message}</li>` : `<li>${rule.message}</li>`;\n }\n\n /**\n * @ignore\n */\n protected _handleOnDismissed() {\n this._content = null;\n }\n\n /**\n * @ignore\n */\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n}\n","import { AXAlertModule } from '@acorex/components/alert';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXFormFieldComponent } from './form-field.component';\nimport { AXFormComponent } from './form.component';\nimport { AXValidationRuleDirective } from './validation-rule.directive';\nimport { AXValidationSummaryComponent } from './validation-summary.component';\n\n@NgModule({\n declarations: [AXFormFieldComponent, AXFormComponent, AXValidationRuleDirective, AXValidationSummaryComponent],\n imports: [CommonModule, AXDecoratorModule, AXAlertModule, AXButtonModule, AXValidationModule, AXTranslationModule],\n exports: [AXFormFieldComponent, AXFormComponent, AXValidationRuleDirective, AXValidationSummaryComponent],\n providers: [],\n})\nexport class AXFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -347,6 +347,7 @@ class AXImageEditorViewComponent extends MXBaseComponent {
|
|
347
347
|
this.service.newImage.set(this.service.initialImage());
|
348
348
|
this.service.toggleClear.set({ userInteract: false, state: false });
|
349
349
|
this.service.isImageLoad.set(true);
|
350
|
+
this.canvasResponsive(this.service.initialImage());
|
350
351
|
}
|
351
352
|
/** @ignore */
|
352
353
|
penConfigHandler(penType) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-image-editor.mjs","sources":["../../../../libs/components/image-editor/src/lib/image-editor.service.ts","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.html","../../../../libs/components/image-editor/src/lib/image-editor-toolbar/image-editor-toolbar.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-toolbar/image-editor-toolbar.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.html","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.html","../../../../libs/components/image-editor/src/lib/image-editor.module.ts","../../../../libs/components/image-editor/src/acorex-components-image-editor.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class AXImageEditorService {\n penColor = signal<string | CanvasGradient | CanvasPattern>('');\n lineCap = signal<CanvasLineCap>('round');\n lineWidth = signal<number>(10);\n penType = signal<'pen' | 'highlight'>('pen');\n toggleClear = signal({ state: false, userInteract: false });\n cropState = signal({ state: false, userInteract: false });\n rotate = signal({ state: 0, userInteract: false });\n isImageLoad = signal(false);\n newImage = signal<HTMLImageElement | null>(null);\n initialImage = signal<HTMLImageElement | null>(null);\n imageBlob = signal<Blob[]>([]);\n}\n","import { MXLookComponent } from '@acorex/components/common';\nimport { Component, ElementRef, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../image-editor.service';\n\n/**\n * paint container.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-container',\n templateUrl: './image-editor-container.component.html',\n styleUrl: './image-editor-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [AXImageEditorService],\n standalone: false\n})\nexport class AXImageEditorContainerComponent extends MXLookComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n imageEditorContainer = viewChild<ElementRef>('f');\n}\n","@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-look-solid\">\n <ng-content> </ng-content>\n </div>\n} @else {\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n}\n","import {\r\n AXClearableComponent,\r\n AXComponent,\r\n AXFocusableComponent,\r\n AXStyleColorType,\r\n AXValuableComponent,\r\n MXInputBaseValueComponent,\r\n} from '@acorex/components/common';\r\nimport { AXDialogService } from '@acorex/components/dialog';\r\nimport { Component, forwardRef, inject, signal, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n/**\r\n *paint toolbar\r\n * @category Components\r\n */\r\n@Component({\n selector: 'ax-image-editor-toolbar',\n templateUrl: './image-editor-toolbar.component.html',\n styleUrl: './image-editor-toolbar.component.scss',\n encapsulation: ViewEncapsulation.None,\n outputs: ['onValueChanged'],\n providers: [\n { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXImageEditorToolbarComponent),\n multi: true,\n },\n ],\n standalone: false\n})\r\nexport class AXImageEditorToolbarComponent extends MXInputBaseValueComponent<Blob[]> {\r\n /** @ignore */\r\n protected dialogService: AXDialogService = inject(AXDialogService);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected options = signal({\r\n color: 'primary',\r\n title: 'Attention',\r\n vertical: false,\r\n content: 'Do you want to save changes?',\r\n orientation: 'vertical' as any,\r\n draggable: true,\r\n });\r\n\r\n /** @ignore */\r\n protected saveHandler() {\r\n if (this.service.initialImage() !== this.service.newImage()) {\r\n this.dialogService\r\n .confirm(\r\n this.options().title,\r\n this.options().content,\r\n this.options().color as AXStyleColorType,\r\n this.options().orientation,\r\n this.options().draggable,\r\n )\r\n .then((data) => {\r\n if (data.result) {\r\n this.service.initialImage.set(this.service.newImage());\r\n this.commitValue(this.service.imageBlob());\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"ax-toolbar-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n<ax-button color=\"primary\" (onClick)=\"saveHandler()\" class=\"ax-save-btn ax-sm\" text=\"Save\"></ax-button>\n","import { Component, HostBinding, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint color picker.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-color-picker',\n templateUrl: './image-editor-color-picker.component.html',\n styles: `\n ax-image-editor-color-picker {\n margin-inline: 0 !important;\n\n .ax-submit-color {\n border: 1px solid rgba(var(--ax-color-text-default));\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 1000vmax;\n }\n .ax-color-flex-container {\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorColorPickerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected selectedColor = signal('rgb(12, 12, 12)');\n\n /** @ignore */\n protected changeColorHandler(e: string) {\n this.service.penColor.set(e);\n this.selectedColor.set(e);\n }\n\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n}\n","<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"outline\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-crop',\n templateUrl: './image-editor-crop.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorCropComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected rotateRightHandler() {\n this.service.rotate.set({ state: 90, userInteract: true });\n }\n\n /** @ignore */\n protected rotateLeftHandler() {\n this.service.rotate.set({ state: -90, userInteract: true });\n }\n\n /** @ignore */\n protected crop() {\n this.service.cropState.update((prev) => {\n return { userInteract: true, state: !prev.state };\n });\n }\n}\n","<ax-button\n axTooltip=\"Crop Image\"\n axTooltipPlacement=\"top\"\n [selected]=\"service.cropState().state && true\"\n (click)=\"crop()\"\n look=\"blank\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Right\" axTooltipPlacement=\"top\" (click)=\"rotateRightHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n","import { AXPlacement } from '@acorex/components/common';\nimport { AXPopoverCloseTrigger, AXPopoverOpenTrigger } from '@acorex/components/popover';\nimport { Component, HostBinding, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-pen-mode-changer',\n templateUrl: './image-editor-pen-mode-changer.component.html',\n styleUrl: './image-editor-pen-mode-changer.component.scss',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorPenModeChangerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected value = 10;\n\n /** @ignore */\n protected popoverOption: {\n openOn: AXPopoverOpenTrigger;\n closeOn: AXPopoverCloseTrigger;\n placement: AXPlacement;\n offsetX: number;\n offsetY: number;\n } = {\n openOn: 'click',\n closeOn: 'clickOut',\n placement: 'top',\n offsetX: 0,\n offsetY: 0,\n };\n\n /** @ignore */\n protected selectedPenType = signal<'pen' | 'highlight'>('pen');\n\n /** @ignore */\n protected penTypeHandler(e: 'pen' | 'highlight') {\n this.service.penType.set(e);\n }\n\n /** @ignore */\n protected clear() {\n this.service.toggleClear.set({ userInteract: true, state: true });\n }\n\n /** @ignore */\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.lineWidth.set(e);\n }\n}\n","<ax-button axTooltip=\"Draw Utilities\" axTooltipPlacement=\"top\" look=\"blank\" #alignPop>\n @switch (service.penType()) {\n @case ('pen') {\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n }\n @case ('highlight') {\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n }\n }\n</ax-button>\n\n<ax-button axTooltip=\"Reset Changes\" axTooltipPlacement=\"top\" (click)=\"clear()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-refresh\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-button\n (click)=\"penTypeHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'pen' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n </ax-button>\n\n <ax-button\n (click)=\"penTypeHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'highlight' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n\n <div class=\"ax-paint-width-slider\">\n <ax-range-slider\n [min]=\"2\"\n [max]=\"20\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"valueHandler($event)\"\n ></ax-range-slider>\n </div>\n </div>\n</ax-popover>\n","import { MXBaseComponent } from '@acorex/components/common';\r\nimport {\r\n afterNextRender,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n input,\r\n NgZone,\r\n OnDestroy,\r\n Renderer2,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXImageEditorContainerComponent } from '../image-editor-container/image-editor-container.component';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n@Component({\r\n selector: 'ax-image-editor-view',\r\n templateUrl: './image-editor-view.component.html',\r\n styleUrls: ['./image-editor-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false,\r\n})\r\nexport class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {\r\n /**\r\n * its receive image src.\r\n */\r\n src = input<string>('');\r\n /** @ignore */\r\n protected canvasElem = viewChild<ElementRef<HTMLCanvasElement>>('canvasElem');\r\n /** @ignore */\r\n protected ctx = signal<CanvasRenderingContext2D>(null);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected cropImageData = signal<ImageData>(null);\r\n /** @ignore */\r\n protected isMouseDown = signal(false);\r\n /** @ignore */\r\n protected cropStartX = signal(0);\r\n /** @ignore */\r\n protected cropStartY = signal(0);\r\n /** @ignore */\r\n protected cropEndX = signal(0);\r\n /** @ignore */\r\n protected cropEndY = signal(0);\r\n /** @ignore */\r\n protected parent = inject(AXImageEditorContainerComponent);\r\n protected renderer = inject(Renderer2);\r\n /** @ignore */\r\n protected imageAspect = computed(() => {\r\n return this.service.initialImage().width / this.service.initialImage().height;\r\n });\r\n\r\n private ngZone = inject(NgZone);\r\n\r\n /** @ignore */\r\n resizeEventListener;\r\n /** @ignore */\r\n imageLoadEventListener;\r\n\r\n /** @ignore */\r\n protected resizeWindow() {\r\n this.canvasResponsive(this.service.newImage());\r\n }\r\n\r\n /** @ignore */\r\n protected canvasResponsive(image: HTMLImageElement) {\r\n const parentWidth = (this.parent.imageEditorContainer().nativeElement as HTMLDivElement).clientWidth;\r\n const imageWidth = this.service.initialImage().width;\r\n\r\n if (parentWidth < imageWidth) {\r\n this.getHostElement().style.width = `${parentWidth}px`;\r\n this.getHostElement().style.height = `${parentWidth * this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = parentWidth;\r\n this.canvasElem().nativeElement.height = parentWidth * this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, parentWidth, parentWidth * this.imageAspect());\r\n } else {\r\n this.getHostElement().style.width = `${imageWidth}px`;\r\n this.getHostElement().style.height = `${imageWidth / this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = imageWidth;\r\n this.canvasElem().nativeElement.height = imageWidth / this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, imageWidth, imageWidth / this.imageAspect());\r\n }\r\n }\r\n\r\n /** @ignore */\r\n constructor() {\r\n super();\r\n afterNextRender(() => {\r\n this.resizeEventListener = this.renderer.listen(window, 'resize', this.resizeWindow.bind(this));\r\n //load image\r\n this.service.initialImage.set(new Image());\r\n this.service.initialImage().src = this.src();\r\n this.service.initialImage().crossOrigin = 'anonymous';\r\n this.imageLoadEventListener = this.renderer.listen(\r\n this.service.initialImage(),\r\n 'load',\r\n this.imageLoaded.bind(this),\r\n );\r\n //set canvas options\r\n this.ctx.set(this.canvasElem().nativeElement.getContext('2d', { willReadFrequently: true }));\r\n this.ctx().lineJoin = 'round';\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.ctx().globalAlpha = 1;\r\n });\r\n\r\n effect(() => {\r\n if (this.parent.imageEditorContainer() && this.service.isImageLoad()) {\r\n this.canvasResponsive(this.service.initialImage());\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.toggleClear().userInteract) return;\r\n if (this.service.toggleClear().state) {\r\n this.imageLoaded();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.cropState().userInteract || !this.ctx()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().filter = 'brightness(40%)';\r\n } else {\r\n this.ctx().filter = 'brightness(100%)';\r\n }\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n 0,\r\n 0,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\r\n );\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.rotate().userInteract || !this.ctx()) return;\r\n this.rotateImage();\r\n });\r\n }\r\n\r\n /** @ignore */\r\n ngOnDestroy(): void {\r\n if (this.resizeEventListener) {\r\n this.resizeEventListener();\r\n }\r\n\r\n if (this.imageLoadEventListener) {\r\n this.imageLoadEventListener();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected imageLoaded() {\r\n this.service.newImage.set(this.service.initialImage());\r\n this.service.toggleClear.set({ userInteract: false, state: false });\r\n this.service.isImageLoad.set(true);\r\n }\r\n\r\n /** @ignore */\r\n protected penConfigHandler(penType: 'pen' | 'highlight') {\r\n switch (penType) {\r\n case 'pen':\r\n this.ctx().globalAlpha = 1;\r\n break;\r\n case 'highlight':\r\n this.ctx().globalAlpha = 0.008;\r\n break;\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected getBoundingCanvasHandler() {\r\n return this.canvasElem().nativeElement.getBoundingClientRect();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseDownHandler(e: MouseEvent) {\r\n this.isMouseDown.set(true);\r\n\r\n if (this.service.cropState().state) {\r\n this.cropStartX.set(e.offsetX);\r\n this.cropStartY.set(e.offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(e.offsetX, e.offsetY);\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected mouseMoveHandler(e: MouseEvent) {\r\n if (!this.isMouseDown()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(e.offsetX);\r\n this.cropEndY.set(e.offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected mouseUpHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchStartHandler(e: TouchEvent) {\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n this.isMouseDown.set(true);\r\n\r\n if (this.service.cropState().state) {\r\n this.cropStartX.set(offsetX);\r\n this.cropStartY.set(offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(offsetX, offsetY);\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchMoveHandler(e: TouchEvent) {\r\n e.preventDefault(); // prevent page from scroll\r\n if (!this.isMouseDown()) return;\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(offsetX);\r\n this.cropEndY.set(offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchEndHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected drawSelection() {\r\n this.ngZone.runOutsideAngular(() => {\r\n const cropWidth = this.cropEndX() - this.cropStartX();\r\n const cropHeight = this.cropEndY() - this.cropStartY();\r\n\r\n this.ctx().clearRect(\r\n 0,\r\n 0,\r\n this.canvasElem().nativeElement.width,\r\n this.canvasElem().nativeElement.height,\r\n );\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n this.ctx().strokeStyle = 'white';\r\n this.ctx().setLineDash([4, 10]);\r\n this.ctx().lineWidth = 2;\r\n this.ctx().strokeRect(this.cropStartX(), this.cropStartY(), cropWidth, cropHeight);\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected cropImageFunction() {\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n\r\n let imageData: ImageData;\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropEndY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropEndY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropStartY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropStartY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n }\r\n\r\n const data: Uint8ClampedArray = imageData.data;\r\n\r\n const brightnessFactor = 2.4; // Increase brightness by 20%\r\n for (let i = 0; i < data.length; i += 4) {\r\n data[i] = data[i] * brightnessFactor; // Red\r\n data[i + 1] = data[i + 1] * brightnessFactor; // Green\r\n data[i + 2] = data[i + 2] * brightnessFactor; // Blue\r\n }\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropEndY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropEndY());\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropStartY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropStartY());\r\n }\r\n\r\n this.cropImageData.set(imageData);\r\n }\r\n\r\n /** @ignore */\r\n protected cropButtonHandler() {\r\n let cropWidth: number;\r\n let cropHeight: number;\r\n\r\n this.service.rotate.update((prev) => {\r\n return { userInteract: false, state: prev.state };\r\n });\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n }\r\n\r\n this.canvasElem().nativeElement.width = cropWidth;\r\n this.canvasElem().nativeElement.height = cropHeight;\r\n\r\n this.ctx().putImageData(this.cropImageData(), 0, 0);\r\n this.saveImageChange();\r\n this.cropImageData.set(null);\r\n this.service.cropState.set({ userInteract: false, state: false });\r\n }\r\n\r\n /** @ignore */\r\n protected rotateImage() {\r\n this.ctx().save();\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().translate(this.service.newImage().width / 2, this.service.newImage().height / 2);\r\n this.ctx().rotate((this.service.rotate().state * Math.PI) / 180);\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n -this.service.newImage().width / 2,\r\n -this.service.newImage().height / 2,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\r\n );\r\n this.ctx().restore();\r\n\r\n this.saveImageChange();\r\n this.service.rotate.update((prev) => {\r\n return { state: prev.state, userInteract: false };\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected saveImageChange() {\r\n const newImage = new Image();\r\n newImage.crossOrigin = 'anonymous';\r\n newImage.src = this.canvasElem().nativeElement.toDataURL('image/jpeg', 1);\r\n this.service.newImage.set(newImage);\r\n\r\n const tempBlob = [];\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/jpeg',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/png',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/webp',\r\n 1,\r\n );\r\n this.service.imageBlob.set(tempBlob);\r\n }\r\n\r\n /** @ignore */\r\n @HostBinding('style')\r\n private get __hostStyle(): string {\r\n return `width: ${this.service.initialImage()?.width}px; height: ${this.service.initialImage()?.height}px`;\r\n }\r\n}\r\n","<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorContainerComponent } from './image-editor-container/image-editor-container.component';\nimport { AXImageEditorToolbarComponent } from './image-editor-toolbar/image-editor-toolbar.component';\nimport { AXImageEditorColorPickerComponent } from './image-editor-tools/image-editor-color-picker/image-editor-color-picker.component';\nimport { AXImageEditorCropComponent } from './image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorPenModeChangerComponent } from './image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component';\nimport { AXImageEditorViewComponent } from './image-editor-view/image-editor-view.component';\n\nconst COMPONENT = [\n AXImageEditorToolbarComponent,\n AXImageEditorColorPickerComponent,\n AXImageEditorPenModeChangerComponent,\n AXImageEditorViewComponent,\n AXImageEditorContainerComponent,\n AXImageEditorCropComponent,\n];\n\nconst MODULES = [\n AXButtonModule,\n FormsModule,\n AXRangeSliderModule,\n AXSelectBoxModule,\n AXColorBoxModule,\n AXPopoverModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXDialogModule,\n AXTooltipModule,\n];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXImageEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i6"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-image-editor.mjs","sources":["../../../../libs/components/image-editor/src/lib/image-editor.service.ts","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-container/image-editor-container.component.html","../../../../libs/components/image-editor/src/lib/image-editor-toolbar/image-editor-toolbar.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-toolbar/image-editor-toolbar.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-color-picker/image-editor-color-picker.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-crop/image-editor-crop.component.html","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component.html","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.ts","../../../../libs/components/image-editor/src/lib/image-editor-view/image-editor-view.component.html","../../../../libs/components/image-editor/src/lib/image-editor.module.ts","../../../../libs/components/image-editor/src/acorex-components-image-editor.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class AXImageEditorService {\n penColor = signal<string | CanvasGradient | CanvasPattern>('');\n lineCap = signal<CanvasLineCap>('round');\n lineWidth = signal<number>(10);\n penType = signal<'pen' | 'highlight'>('pen');\n toggleClear = signal({ state: false, userInteract: false });\n cropState = signal({ state: false, userInteract: false });\n rotate = signal({ state: 0, userInteract: false });\n isImageLoad = signal(false);\n newImage = signal<HTMLImageElement | null>(null);\n initialImage = signal<HTMLImageElement | null>(null);\n imageBlob = signal<Blob[]>([]);\n}\n","import { MXLookComponent } from '@acorex/components/common';\nimport { Component, ElementRef, inject, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../image-editor.service';\n\n/**\n * paint container.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-container',\n templateUrl: './image-editor-container.component.html',\n styleUrl: './image-editor-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n providers: [AXImageEditorService],\n standalone: false\n})\nexport class AXImageEditorContainerComponent extends MXLookComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n imageEditorContainer = viewChild<ElementRef>('f');\n}\n","@if (service.isImageLoad()) {\n <div #f class=\"ax-editor-container ax-look-solid\">\n <ng-content> </ng-content>\n </div>\n} @else {\n <ax-loading-spinner [size]=\"16\" color=\"primary\" text=\"Loading Image ...\"></ax-loading-spinner>\n}\n","import {\r\n AXClearableComponent,\r\n AXComponent,\r\n AXFocusableComponent,\r\n AXStyleColorType,\r\n AXValuableComponent,\r\n MXInputBaseValueComponent,\r\n} from '@acorex/components/common';\r\nimport { AXDialogService } from '@acorex/components/dialog';\r\nimport { Component, forwardRef, inject, signal, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n/**\r\n *paint toolbar\r\n * @category Components\r\n */\r\n@Component({\n selector: 'ax-image-editor-toolbar',\n templateUrl: './image-editor-toolbar.component.html',\n styleUrl: './image-editor-toolbar.component.scss',\n encapsulation: ViewEncapsulation.None,\n outputs: ['onValueChanged'],\n providers: [\n { provide: AXComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXFocusableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXClearableComponent, useExisting: AXImageEditorToolbarComponent },\n { provide: AXValuableComponent, useExisting: AXImageEditorToolbarComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXImageEditorToolbarComponent),\n multi: true,\n },\n ],\n standalone: false\n})\r\nexport class AXImageEditorToolbarComponent extends MXInputBaseValueComponent<Blob[]> {\r\n /** @ignore */\r\n protected dialogService: AXDialogService = inject(AXDialogService);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected options = signal({\r\n color: 'primary',\r\n title: 'Attention',\r\n vertical: false,\r\n content: 'Do you want to save changes?',\r\n orientation: 'vertical' as any,\r\n draggable: true,\r\n });\r\n\r\n /** @ignore */\r\n protected saveHandler() {\r\n if (this.service.initialImage() !== this.service.newImage()) {\r\n this.dialogService\r\n .confirm(\r\n this.options().title,\r\n this.options().content,\r\n this.options().color as AXStyleColorType,\r\n this.options().orientation,\r\n this.options().draggable,\r\n )\r\n .then((data) => {\r\n if (data.result) {\r\n this.service.initialImage.set(this.service.newImage());\r\n this.commitValue(this.service.imageBlob());\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"ax-toolbar-container\">\n <ng-content select=\"ax-prefix\"></ng-content>\n <ng-content></ng-content>\n <ng-content select=\"ax-suffix\"></ng-content>\n</div>\n<ax-button color=\"primary\" (onClick)=\"saveHandler()\" class=\"ax-save-btn ax-sm\" text=\"Save\"></ax-button>\n","import { Component, HostBinding, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint color picker.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-color-picker',\n templateUrl: './image-editor-color-picker.component.html',\n styles: `\n ax-image-editor-color-picker {\n margin-inline: 0 !important;\n\n .ax-submit-color {\n border: 1px solid rgba(var(--ax-color-text-default));\n width: 0.6rem;\n height: 0.6rem;\n border-radius: 1000vmax;\n }\n .ax-color-flex-container {\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorColorPickerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected selectedColor = signal('rgb(12, 12, 12)');\n\n /** @ignore */\n protected changeColorHandler(e: string) {\n this.service.penColor.set(e);\n this.selectedColor.set(e);\n }\n\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n}\n","<ax-color-box\n axTooltip=\"Color Picker\"\n axTooltipPlacement=\"top\"\n look=\"outline\"\n [ngModel]=\"selectedColor()\"\n (ngModelChange)=\"changeColorHandler($event)\"\n>\n</ax-color-box>\n","import { Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-crop',\n templateUrl: './image-editor-crop.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorCropComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected rotateRightHandler() {\n this.service.rotate.set({ state: 90, userInteract: true });\n }\n\n /** @ignore */\n protected rotateLeftHandler() {\n this.service.rotate.set({ state: -90, userInteract: true });\n }\n\n /** @ignore */\n protected crop() {\n this.service.cropState.update((prev) => {\n return { userInteract: true, state: !prev.state };\n });\n }\n}\n","<ax-button\n axTooltip=\"Crop Image\"\n axTooltipPlacement=\"top\"\n [selected]=\"service.cropState().state && true\"\n (click)=\"crop()\"\n look=\"blank\"\n>\n <ax-icon class=\"ax-icon ax-icon-crop\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Left\" axTooltipPlacement=\"top\" (click)=\"rotateLeftHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-undo\"></ax-icon>\n</ax-button>\n\n<ax-button axTooltip=\"Rotate Right\" axTooltipPlacement=\"top\" (click)=\"rotateRightHandler()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-redo\"></ax-icon>\n</ax-button>\n","import { AXPlacement } from '@acorex/components/common';\nimport { AXPopoverCloseTrigger, AXPopoverOpenTrigger } from '@acorex/components/popover';\nimport { Component, HostBinding, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXImageEditorService } from '../../image-editor.service';\n\n/**\n * paint mode.\n * @category Components\n */\n@Component({\n selector: 'ax-image-editor-pen-mode-changer',\n templateUrl: './image-editor-pen-mode-changer.component.html',\n styleUrl: './image-editor-pen-mode-changer.component.scss',\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXImageEditorPenModeChangerComponent {\n /** @ignore */\n protected service = inject(AXImageEditorService);\n\n /** @ignore */\n protected value = 10;\n\n /** @ignore */\n protected popoverOption: {\n openOn: AXPopoverOpenTrigger;\n closeOn: AXPopoverCloseTrigger;\n placement: AXPlacement;\n offsetX: number;\n offsetY: number;\n } = {\n openOn: 'click',\n closeOn: 'clickOut',\n placement: 'top',\n offsetX: 0,\n offsetY: 0,\n };\n\n /** @ignore */\n protected selectedPenType = signal<'pen' | 'highlight'>('pen');\n\n /** @ignore */\n protected penTypeHandler(e: 'pen' | 'highlight') {\n this.service.penType.set(e);\n }\n\n /** @ignore */\n protected clear() {\n this.service.toggleClear.set({ userInteract: true, state: true });\n }\n\n /** @ignore */\n @HostBinding('style.marginInline')\n get __hostClass(): string {\n return `.5rem`;\n }\n\n /** @ignore */\n protected valueHandler(e: number) {\n this.service.lineWidth.set(e);\n }\n}\n","<ax-button axTooltip=\"Draw Utilities\" axTooltipPlacement=\"top\" look=\"blank\" #alignPop>\n @switch (service.penType()) {\n @case ('pen') {\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n }\n @case ('highlight') {\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n }\n }\n</ax-button>\n\n<ax-button axTooltip=\"Reset Changes\" axTooltipPlacement=\"top\" (click)=\"clear()\" look=\"blank\">\n <ax-icon class=\"ax-icon ax-icon-refresh\"></ax-icon>\n</ax-button>\n\n<ax-popover\n [openOn]=\"popoverOption.openOn\"\n [closeOn]=\"popoverOption.closeOn\"\n [target]=\"alignPop\"\n [placement]=\"popoverOption.placement\"\n>\n <div class=\"ax-overlay-pane\">\n <ax-button\n (click)=\"penTypeHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'pen' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n </ax-button>\n\n <ax-button\n (click)=\"penTypeHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.penType() === 'highlight' ? true : false\"\n >\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n </ax-button>\n\n <div class=\"ax-paint-width-slider\">\n <ax-range-slider\n [min]=\"2\"\n [max]=\"20\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"valueHandler($event)\"\n ></ax-range-slider>\n </div>\n </div>\n</ax-popover>\n","import { MXBaseComponent } from '@acorex/components/common';\r\nimport {\r\n afterNextRender,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n input,\r\n NgZone,\r\n OnDestroy,\r\n Renderer2,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXImageEditorContainerComponent } from '../image-editor-container/image-editor-container.component';\r\nimport { AXImageEditorService } from '../image-editor.service';\r\n\r\n@Component({\r\n selector: 'ax-image-editor-view',\r\n templateUrl: './image-editor-view.component.html',\r\n styleUrls: ['./image-editor-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: false,\r\n})\r\nexport class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {\r\n /**\r\n * its receive image src.\r\n */\r\n src = input<string>('');\r\n /** @ignore */\r\n protected canvasElem = viewChild<ElementRef<HTMLCanvasElement>>('canvasElem');\r\n /** @ignore */\r\n protected ctx = signal<CanvasRenderingContext2D>(null);\r\n /** @ignore */\r\n protected service = inject(AXImageEditorService);\r\n /** @ignore */\r\n protected cropImageData = signal<ImageData>(null);\r\n /** @ignore */\r\n protected isMouseDown = signal(false);\r\n /** @ignore */\r\n protected cropStartX = signal(0);\r\n /** @ignore */\r\n protected cropStartY = signal(0);\r\n /** @ignore */\r\n protected cropEndX = signal(0);\r\n /** @ignore */\r\n protected cropEndY = signal(0);\r\n /** @ignore */\r\n protected parent = inject(AXImageEditorContainerComponent);\r\n protected renderer = inject(Renderer2);\r\n /** @ignore */\r\n protected imageAspect = computed(() => {\r\n return this.service.initialImage().width / this.service.initialImage().height;\r\n });\r\n\r\n private ngZone = inject(NgZone);\r\n\r\n /** @ignore */\r\n resizeEventListener;\r\n /** @ignore */\r\n imageLoadEventListener;\r\n\r\n /** @ignore */\r\n protected resizeWindow() {\r\n this.canvasResponsive(this.service.newImage());\r\n }\r\n\r\n /** @ignore */\r\n protected canvasResponsive(image: HTMLImageElement) {\r\n const parentWidth = (this.parent.imageEditorContainer().nativeElement as HTMLDivElement).clientWidth;\r\n const imageWidth = this.service.initialImage().width;\r\n\r\n if (parentWidth < imageWidth) {\r\n this.getHostElement().style.width = `${parentWidth}px`;\r\n this.getHostElement().style.height = `${parentWidth * this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = parentWidth;\r\n this.canvasElem().nativeElement.height = parentWidth * this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, parentWidth, parentWidth * this.imageAspect());\r\n } else {\r\n this.getHostElement().style.width = `${imageWidth}px`;\r\n this.getHostElement().style.height = `${imageWidth / this.imageAspect()}px`;\r\n this.canvasElem().nativeElement.width = imageWidth;\r\n this.canvasElem().nativeElement.height = imageWidth / this.imageAspect();\r\n this.ctx().drawImage(image, 0, 0, imageWidth, imageWidth / this.imageAspect());\r\n }\r\n }\r\n\r\n /** @ignore */\r\n constructor() {\r\n super();\r\n afterNextRender(() => {\r\n this.resizeEventListener = this.renderer.listen(window, 'resize', this.resizeWindow.bind(this));\r\n //load image\r\n this.service.initialImage.set(new Image());\r\n this.service.initialImage().src = this.src();\r\n this.service.initialImage().crossOrigin = 'anonymous';\r\n this.imageLoadEventListener = this.renderer.listen(\r\n this.service.initialImage(),\r\n 'load',\r\n this.imageLoaded.bind(this),\r\n );\r\n //set canvas options\r\n this.ctx.set(this.canvasElem().nativeElement.getContext('2d', { willReadFrequently: true }));\r\n this.ctx().lineJoin = 'round';\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.ctx().globalAlpha = 1;\r\n });\r\n\r\n effect(() => {\r\n if (this.parent.imageEditorContainer() && this.service.isImageLoad()) {\r\n this.canvasResponsive(this.service.initialImage());\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.toggleClear().userInteract) return;\r\n if (this.service.toggleClear().state) {\r\n this.imageLoaded();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.cropState().userInteract || !this.ctx()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().filter = 'brightness(40%)';\r\n } else {\r\n this.ctx().filter = 'brightness(100%)';\r\n }\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n 0,\r\n 0,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\r\n );\r\n });\r\n\r\n effect(() => {\r\n if (!this.service.rotate().userInteract || !this.ctx()) return;\r\n this.rotateImage();\r\n });\r\n }\r\n\r\n /** @ignore */\r\n ngOnDestroy(): void {\r\n if (this.resizeEventListener) {\r\n this.resizeEventListener();\r\n }\r\n\r\n if (this.imageLoadEventListener) {\r\n this.imageLoadEventListener();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected imageLoaded() {\r\n this.service.newImage.set(this.service.initialImage());\r\n this.service.toggleClear.set({ userInteract: false, state: false });\r\n this.service.isImageLoad.set(true);\r\n this.canvasResponsive(this.service.initialImage());\r\n }\r\n\r\n /** @ignore */\r\n protected penConfigHandler(penType: 'pen' | 'highlight') {\r\n switch (penType) {\r\n case 'pen':\r\n this.ctx().globalAlpha = 1;\r\n break;\r\n case 'highlight':\r\n this.ctx().globalAlpha = 0.008;\r\n break;\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected getBoundingCanvasHandler() {\r\n return this.canvasElem().nativeElement.getBoundingClientRect();\r\n }\r\n\r\n /** @ignore */\r\n protected mouseDownHandler(e: MouseEvent) {\r\n this.isMouseDown.set(true);\r\n\r\n if (this.service.cropState().state) {\r\n this.cropStartX.set(e.offsetX);\r\n this.cropStartY.set(e.offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(e.offsetX, e.offsetY);\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected mouseMoveHandler(e: MouseEvent) {\r\n if (!this.isMouseDown()) return;\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(e.offsetX);\r\n this.cropEndY.set(e.offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(e.offsetX, e.offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected mouseUpHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchStartHandler(e: TouchEvent) {\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n this.isMouseDown.set(true);\r\n\r\n if (this.service.cropState().state) {\r\n this.cropStartX.set(offsetX);\r\n this.cropStartY.set(offsetY);\r\n this.cropEndX.set(0);\r\n } else {\r\n this.penConfigHandler(this.service.penType());\r\n this.ctx().strokeStyle = this.service.penColor();\r\n this.ctx().lineCap = this.service.lineCap();\r\n this.ctx().lineWidth = this.service.lineWidth();\r\n\r\n this.ctx().beginPath();\r\n this.ctx().moveTo(offsetX, offsetY);\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchMoveHandler(e: TouchEvent) {\r\n e.preventDefault(); // prevent page from scroll\r\n if (!this.isMouseDown()) return;\r\n const offsetX = e.touches[0].clientX - this.getBoundingCanvasHandler().left;\r\n const offsetY = e.touches[0].clientY - this.getBoundingCanvasHandler().top;\r\n\r\n if (this.service.cropState().state) {\r\n this.ctx().globalCompositeOperation = 'screen';\r\n this.cropEndX.set(offsetX);\r\n this.cropEndY.set(offsetY);\r\n this.drawSelection();\r\n } else {\r\n this.ctx().lineTo(offsetX, offsetY);\r\n this.ctx().stroke();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected touchEndHandler() {\r\n this.isMouseDown.set(false);\r\n if (this.service.cropState().state && this.cropEndX()) {\r\n this.ctx().globalCompositeOperation = 'source-over';\r\n this.cropImageFunction();\r\n } else {\r\n this.ctx().closePath();\r\n this.saveImageChange();\r\n }\r\n }\r\n\r\n /** @ignore */\r\n protected drawSelection() {\r\n this.ngZone.runOutsideAngular(() => {\r\n const cropWidth = this.cropEndX() - this.cropStartX();\r\n const cropHeight = this.cropEndY() - this.cropStartY();\r\n\r\n this.ctx().clearRect(\r\n 0,\r\n 0,\r\n this.canvasElem().nativeElement.width,\r\n this.canvasElem().nativeElement.height,\r\n );\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n this.ctx().strokeStyle = 'white';\r\n this.ctx().setLineDash([4, 10]);\r\n this.ctx().lineWidth = 2;\r\n this.ctx().strokeRect(this.cropStartX(), this.cropStartY(), cropWidth, cropHeight);\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected cropImageFunction() {\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().drawImage(this.service.newImage(), 0, 0);\r\n\r\n let imageData: ImageData;\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropEndY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropEndY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropStartY() - this.cropEndY(),\r\n );\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropStartX(),\r\n this.cropStartY(),\r\n this.cropEndX() - this.cropStartX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n imageData = this.ctx().getImageData(\r\n this.cropEndX(),\r\n this.cropStartY(),\r\n this.cropStartX() - this.cropEndX(),\r\n this.cropEndY() - this.cropStartY(),\r\n );\r\n }\r\n\r\n const data: Uint8ClampedArray = imageData.data;\r\n\r\n const brightnessFactor = 2.4; // Increase brightness by 20%\r\n for (let i = 0; i < data.length; i += 4) {\r\n data[i] = data[i] * brightnessFactor; // Red\r\n data[i + 1] = data[i + 1] * brightnessFactor; // Green\r\n data[i + 2] = data[i + 2] * brightnessFactor; // Blue\r\n }\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropEndY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropEndY());\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropStartX(), this.cropStartY());\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n this.ctx().putImageData(imageData, this.cropEndX(), this.cropStartY());\r\n }\r\n\r\n this.cropImageData.set(imageData);\r\n }\r\n\r\n /** @ignore */\r\n protected cropButtonHandler() {\r\n let cropWidth: number;\r\n let cropHeight: number;\r\n\r\n this.service.rotate.update((prev) => {\r\n return { userInteract: false, state: prev.state };\r\n });\r\n\r\n if (this.cropStartX() < this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() > this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropStartY() - this.cropEndY();\r\n } else if (this.cropStartX() < this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropEndX() - this.cropStartX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n } else if (this.cropStartX() > this.cropEndX() && this.cropStartY() < this.cropEndY()) {\r\n cropWidth = this.cropStartX() - this.cropEndX();\r\n cropHeight = this.cropEndY() - this.cropStartY();\r\n }\r\n\r\n this.canvasElem().nativeElement.width = cropWidth;\r\n this.canvasElem().nativeElement.height = cropHeight;\r\n\r\n this.ctx().putImageData(this.cropImageData(), 0, 0);\r\n this.saveImageChange();\r\n this.cropImageData.set(null);\r\n this.service.cropState.set({ userInteract: false, state: false });\r\n }\r\n\r\n /** @ignore */\r\n protected rotateImage() {\r\n this.ctx().save();\r\n this.ctx().clearRect(0, 0, this.canvasElem().nativeElement.width, this.canvasElem().nativeElement.height);\r\n this.ctx().translate(this.service.newImage().width / 2, this.service.newImage().height / 2);\r\n this.ctx().rotate((this.service.rotate().state * Math.PI) / 180);\r\n this.ctx().drawImage(\r\n this.service.newImage(),\r\n -this.service.newImage().width / 2,\r\n -this.service.newImage().height / 2,\r\n this.service.newImage().width,\r\n this.service.newImage().height,\r\n );\r\n this.ctx().restore();\r\n\r\n this.saveImageChange();\r\n this.service.rotate.update((prev) => {\r\n return { state: prev.state, userInteract: false };\r\n });\r\n }\r\n\r\n /** @ignore */\r\n protected saveImageChange() {\r\n const newImage = new Image();\r\n newImage.crossOrigin = 'anonymous';\r\n newImage.src = this.canvasElem().nativeElement.toDataURL('image/jpeg', 1);\r\n this.service.newImage.set(newImage);\r\n\r\n const tempBlob = [];\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/jpeg',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/png',\r\n 1,\r\n );\r\n this.canvasElem().nativeElement.toBlob(\r\n (blob) => {\r\n tempBlob.push(blob);\r\n },\r\n 'image/webp',\r\n 1,\r\n );\r\n this.service.imageBlob.set(tempBlob);\r\n }\r\n\r\n /** @ignore */\r\n @HostBinding('style')\r\n private get __hostStyle(): string {\r\n return `width: ${this.service.initialImage()?.width}px; height: ${this.service.initialImage()?.height}px`;\r\n }\r\n}\r\n","<canvas\n tabindex=\"1\"\n (mousedown)=\"mouseDownHandler($event)\"\n (mouseup)=\"mouseUpHandler()\"\n (mousemove)=\"mouseMoveHandler($event)\"\n (touchstart)=\"touchStartHandler($event)\"\n (touchend)=\"touchEndHandler()\"\n (touchmove)=\"touchMoveHandler($event)\"\n class=\"ax-canvas-element\"\n #canvasElem\n></canvas>\n<ax-button\n (click)=\"cropButtonHandler()\"\n [style]=\"{ display: service.cropState().state ? 'block' : 'none' }\"\n class=\"ax-crop-save ax-sm\"\n text=\"Crop\"\n></ax-button>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXImageEditorContainerComponent } from './image-editor-container/image-editor-container.component';\nimport { AXImageEditorToolbarComponent } from './image-editor-toolbar/image-editor-toolbar.component';\nimport { AXImageEditorColorPickerComponent } from './image-editor-tools/image-editor-color-picker/image-editor-color-picker.component';\nimport { AXImageEditorCropComponent } from './image-editor-tools/image-editor-crop/image-editor-crop.component';\nimport { AXImageEditorPenModeChangerComponent } from './image-editor-tools/image-editor-pen-mode-changer/image-editor-pen-mode-changer.component';\nimport { AXImageEditorViewComponent } from './image-editor-view/image-editor-view.component';\n\nconst COMPONENT = [\n AXImageEditorToolbarComponent,\n AXImageEditorColorPickerComponent,\n AXImageEditorPenModeChangerComponent,\n AXImageEditorViewComponent,\n AXImageEditorContainerComponent,\n AXImageEditorCropComponent,\n];\n\nconst MODULES = [\n AXButtonModule,\n FormsModule,\n AXRangeSliderModule,\n AXSelectBoxModule,\n AXColorBoxModule,\n AXPopoverModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXDialogModule,\n AXTooltipModule,\n];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXImageEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i6"],"mappings":"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"}
|
@@ -65,11 +65,11 @@ class AXLabelComponent extends MXBaseComponent {
|
|
65
65
|
});
|
66
66
|
}
|
67
67
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXLabelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXLabelComponent, isStandalone: false, selector: "ax-label", inputs: { required: "required", for: "for" }, outputs: { requiredChange: "requiredChange" }, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], usesInheritance: true, ngImport: i0, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: ["ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXLabelComponent, isStandalone: false, selector: "ax-label", inputs: { required: "required", for: "for" }, outputs: { requiredChange: "requiredChange" }, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], usesInheritance: true, ngImport: i0, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: [".ax-dark ax-label.ax-state-error{color:rgba(var(--ax-color-danger-200))!important}ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
69
69
|
}
|
70
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXLabelComponent, decorators: [{
|
71
71
|
type: Component,
|
72
|
-
args: [{ selector: 'ax-label', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], standalone: false, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: ["ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"] }]
|
72
|
+
args: [{ selector: 'ax-label', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }], standalone: false, template: "<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>", styles: [".ax-dark ax-label.ax-state-error{color:rgba(var(--ax-color-danger-200))!important}ax-label{color:rgb(var(--ax-color-text-default))}ax-label label{margin-bottom:.5rem;display:block;cursor:inherit;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-label label .ax-state-required{color:rgba(var(--ax-color-danger-500))}ax-label.ax-state-error{color:rgba(var(--ax-color-danger-500))!important}\n"] }]
|
73
73
|
}], propDecorators: { requiredChange: [{
|
74
74
|
type: Output
|
75
75
|
}], required: [{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-label.mjs","sources":["../../../../libs/components/label/src/lib/label.component.ts","../../../../libs/components/label/src/lib/label.component.html","../../../../libs/components/label/src/lib/label.module.ts","../../../../libs/components/label/src/acorex-components-label.ts"],"sourcesContent":["import { MXBaseComponent, MXValueComponent } from '@acorex/components/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a label component that provides a way to display text labels within the application.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }],\n standalone: false\n})\nexport class AXLabelComponent extends MXBaseComponent {\n /**\n * Emitted when the `required` property changes.\n *\n * @event\n */\n @Output()\n requiredChange = new EventEmitter<boolean>();\n\n /**\n * @ignore\n */\n private _required?: boolean | null = null;\n\n /**\n * Determines if the field is required.\n *\n * @defaultValue false\n */\n @Input()\n public get required(): boolean {\n return this._required;\n }\n /**\n * Sets whether the field is required.\n *\n * @param v - A boolean indicating if the field is required.\n */\n public set required(v: boolean) {\n this.setOption({\n name: 'required',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n /**\n * @ignore\n */\n private _for: MXValueComponent;\n\n /**\n * Gets the form control or component associated with the label.\n */\n @Input()\n public get for(): MXValueComponent {\n return this._for;\n }\n /**\n * Sets the form control or component associated with the label.\n *\n * @param v The `MXValueComponent` to associate with the label.\n */\n public set for(v: MXValueComponent) {\n this.setOption({\n name: 'for',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n","<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXLabelComponent } from './label.component';\n\nconst COMPONENT = [AXLabelComponent];\nconst MODULES = [CommonModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGA;;;;AAIG;AAUG,MAAO,gBAAiB,SAAQ,eAAe,CAAA;AATrD,IAAA,WAAA,GAAA;;AAUE;;;;AAIG;AAEH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAE5C;;AAEG;QACK,IAAS,CAAA,SAAA,GAAoB,IAAI;AAoD1C;AAlDC;;;;AAIG;AACH,IAAA,IACW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS;;AAEvB;;;;AAIG;IACH,IAAW,QAAQ,CAAC,CAAU,EAAA;QAC5B,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;aACxB;AACF,SAAA,CAAC;;AAQJ;;AAEG;AACH,IAAA,IACW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI;;AAElB;;;;AAIG;IACH,IAAW,GAAG,CAAC,CAAmB,EAAA;QAChC,IAAI,CAAC,SAAS,CAAC;AACb,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,MAAK;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;aACxB;AACF,SAAA,CAAC;;8GA9DO,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAHd,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,iDCd5E,iPAKQ,EAAA,MAAA,EAAA,CAAA,
|
1
|
+
{"version":3,"file":"acorex-components-label.mjs","sources":["../../../../libs/components/label/src/lib/label.component.ts","../../../../libs/components/label/src/lib/label.component.html","../../../../libs/components/label/src/lib/label.module.ts","../../../../libs/components/label/src/acorex-components-label.ts"],"sourcesContent":["import { MXBaseComponent, MXValueComponent } from '@acorex/components/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n/**\n * Represents a label component that provides a way to display text labels within the application.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-label',\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: MXBaseComponent, useExisting: AXLabelComponent }],\n standalone: false\n})\nexport class AXLabelComponent extends MXBaseComponent {\n /**\n * Emitted when the `required` property changes.\n *\n * @event\n */\n @Output()\n requiredChange = new EventEmitter<boolean>();\n\n /**\n * @ignore\n */\n private _required?: boolean | null = null;\n\n /**\n * Determines if the field is required.\n *\n * @defaultValue false\n */\n @Input()\n public get required(): boolean {\n return this._required;\n }\n /**\n * Sets whether the field is required.\n *\n * @param v - A boolean indicating if the field is required.\n */\n public set required(v: boolean) {\n this.setOption({\n name: 'required',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n\n /**\n * @ignore\n */\n private _for: MXValueComponent;\n\n /**\n * Gets the form control or component associated with the label.\n */\n @Input()\n public get for(): MXValueComponent {\n return this._for;\n }\n /**\n * Sets the form control or component associated with the label.\n *\n * @param v The `MXValueComponent` to associate with the label.\n */\n public set for(v: MXValueComponent) {\n this.setOption({\n name: 'for',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n","<label (click)=\"for?.focus()\" [class.ax-cursor-pointer]=\"for\" [attr.for]=\"for?.getHostElement().id\">\n <ng-content></ng-content>\n @if(required || for?.isRequired){\n <span class=\"ax-state-required\"> *</span>\n }\n</label>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXLabelComponent } from './label.component';\n\nconst COMPONENT = [AXLabelComponent];\nconst MODULES = [CommonModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { AXEvent, MXValueComponent, MXLookComponent } from '@acorex/components/common';
|
2
2
|
import * as i0 from '@angular/core';
|
3
|
-
import { model, output,
|
3
|
+
import { model, output, computed, afterNextRender, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
|
4
4
|
import * as i2 from '@angular/forms';
|
5
5
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
6
6
|
import { classes } from 'polytype';
|
@@ -34,33 +34,26 @@ class AXOtpComponent extends classes((MXValueComponent), MXLookComponent) {
|
|
34
34
|
/**
|
35
35
|
* Holds the input values as a signal.
|
36
36
|
*/
|
37
|
-
this.inputs =
|
38
|
-
this.changeInputs = effect(() => {
|
39
|
-
this.inputs();
|
40
|
-
this.cdr.detectChanges();
|
37
|
+
this.inputs = computed(() => {
|
41
38
|
this.calcFontSize();
|
39
|
+
//
|
40
|
+
return Array(this.length())
|
41
|
+
.fill(1)
|
42
|
+
.map((x, i) => i);
|
42
43
|
});
|
43
|
-
|
44
|
-
this.
|
44
|
+
afterNextRender(() => {
|
45
|
+
this.calcFontSize();
|
46
|
+
this.mapValueToInputs();
|
45
47
|
});
|
46
48
|
}
|
47
|
-
/** @ignore */
|
48
|
-
ngOnInit() {
|
49
|
-
super.ngOnInit();
|
50
|
-
this._render();
|
51
|
-
}
|
52
|
-
/** @ignore */
|
53
|
-
ngAfterViewInit() {
|
54
|
-
this.calcFontSize();
|
55
|
-
this.mapValueToInputs();
|
56
|
-
}
|
57
49
|
/**
|
58
50
|
* Converts the value string to input values and updates the inputValues array.
|
59
51
|
*/
|
60
52
|
mapValueToInputs() {
|
61
53
|
this._emitOnComplete();
|
62
|
-
if (!this.value)
|
54
|
+
if (!this.value) {
|
63
55
|
return;
|
56
|
+
}
|
64
57
|
this.value.split('').map((v, i) => {
|
65
58
|
this.inputValues[i] = v;
|
66
59
|
});
|
@@ -75,12 +68,6 @@ class AXOtpComponent extends classes((MXValueComponent), MXLookComponent) {
|
|
75
68
|
}
|
76
69
|
}
|
77
70
|
/** @ignore */
|
78
|
-
_render() {
|
79
|
-
this.inputs.set(Array(this.length())
|
80
|
-
.fill(1)
|
81
|
-
.map((x, i) => i));
|
82
|
-
}
|
83
|
-
/** @ignore */
|
84
71
|
_handleOnInput(event, i) {
|
85
72
|
const inputs = this.getHostElement().querySelectorAll('.ax-input');
|
86
73
|
const numberRegex = /^\d+$/;
|
@@ -158,6 +145,7 @@ class AXOtpComponent extends classes((MXValueComponent), MXLookComponent) {
|
|
158
145
|
for (let i = 0; i < inputs.length; i++) {
|
159
146
|
this.inputValues[i] = data[i];
|
160
147
|
}
|
148
|
+
this._emitOnComplete();
|
161
149
|
}
|
162
150
|
event.preventDefault();
|
163
151
|
}
|