@acorex/components 22.0.2 → 22.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/fesm2022/acorex-components-audio-wave.mjs +15 -0
  2. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  3. package/fesm2022/acorex-components-calendar.mjs +58 -31
  4. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  5. package/fesm2022/acorex-components-conversation-acorex-components-conversation-BtkyQUlh.mjs +16548 -0
  6. package/fesm2022/acorex-components-conversation-acorex-components-conversation-BtkyQUlh.mjs.map +1 -0
  7. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs +51 -0
  8. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs.map +1 -0
  9. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs +85 -0
  10. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs.map +1 -0
  11. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs → acorex-components-conversation-open-composer-picker-for-files-BKKO_8x6.mjs} +3 -3
  12. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs.map → acorex-components-conversation-open-composer-picker-for-files-BKKO_8x6.mjs.map} +1 -1
  13. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-BNKFb5yO.mjs +65 -0
  14. package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-BNKFb5yO.mjs.map +1 -0
  15. package/fesm2022/acorex-components-conversation.mjs +1 -15531
  16. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  17. package/fesm2022/acorex-components-image-editor.mjs +600 -409
  18. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  19. package/fesm2022/acorex-components-range-slider.mjs +2 -2
  20. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  21. package/package.json +3 -3
  22. package/types/acorex-components-audio-wave.d.ts +3 -0
  23. package/types/acorex-components-calendar.d.ts +4 -0
  24. package/types/acorex-components-conversation.d.ts +1407 -1295
  25. package/types/acorex-components-image-editor.d.ts +54 -49
  26. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs +0 -50
  27. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map +0 -1
@@ -2,15 +2,6 @@ import * as polytype from 'polytype';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { OnDestroy, ElementRef, Renderer2 } from '@angular/core';
4
4
  import { MXBaseComponent, MXInputBaseValueComponent, MXLookComponent } from '@acorex/cdk/common';
5
- import * as i1 from '@acorex/components/button';
6
- import * as i2 from '@angular/forms';
7
- import * as i3 from '@acorex/components/range-slider';
8
- import * as i4 from '@acorex/components/select-box';
9
- import * as i5 from '@acorex/components/color-box';
10
- import * as i6 from '@acorex/components/popover';
11
- import * as i7 from '@acorex/components/decorators';
12
- import * as i8 from '@acorex/components/loading';
13
- import * as i9 from '@acorex/components/dialog';
14
5
 
15
6
  type AXImageEditorTool = 'pen' | 'highlight' | 'crop' | 'rotate';
16
7
  declare class AXImageEditorService {
@@ -25,19 +16,25 @@ declare class AXImageEditorService {
25
16
  userInteract: boolean;
26
17
  }>;
27
18
  isImageLoad: _angular_core.WritableSignal<boolean>;
19
+ loadError: _angular_core.WritableSignal<boolean>;
28
20
  newImage: HTMLImageElement | null;
29
21
  initialImage: HTMLImageElement | null;
30
22
  imageBlob: _angular_core.WritableSignal<Blob[]>;
31
23
  undoPressed: _angular_core.WritableSignal<boolean>;
32
24
  redoPressed: _angular_core.WritableSignal<boolean>;
25
+ canUndo: _angular_core.WritableSignal<boolean>;
26
+ canRedo: _angular_core.WritableSignal<boolean>;
33
27
  cropperRatio: _angular_core.WritableSignal<string>;
34
28
  cropperSize: _angular_core.WritableSignal<number>;
35
29
  toggleTool(tool: AXImageEditorTool): void;
36
30
  activateTool(tool: AXImageEditorTool): void;
31
+ undo(): void;
32
+ redo(): void;
37
33
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorService, never>;
38
34
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXImageEditorService>;
39
35
  }
40
36
 
37
+ type AXImageEditorCropHandle = 'right' | 'top' | 'left' | 'bottom' | 'right-top' | 'bottom-right' | 'bottom-left' | 'left-top';
41
38
  /**
42
39
  * paint mode.
43
40
  * @category Components
@@ -55,39 +52,41 @@ declare class AXImageEditorCropperWindowComponent implements OnDestroy {
55
52
  protected cropperWindow: _angular_core.Signal<ElementRef<any>>;
56
53
  private currentX;
57
54
  private currentY;
58
- private prevX;
59
- private prevY;
60
55
  private aspectWidth;
61
56
  private aspectHeight;
62
57
  private isMousePressed;
63
58
  protected renderer: Renderer2;
64
59
  private platformID;
65
- private mouseMoveEvent;
66
- private mouseUpEvent;
67
- private mouseMoveEvent2;
68
- private mouseUpEvent2;
69
- private mouseDownEvent;
70
- private mouseLeaveEvent;
60
+ private mouseMoveEvent?;
61
+ private mouseUpEvent?;
62
+ private mouseMoveEvent2?;
63
+ private mouseUpEvent2?;
64
+ private mouseDownEvent?;
65
+ private mouseLeaveEvent?;
66
+ private positioned;
71
67
  ngOnDestroy(): void;
72
- protected panMove(e: MouseEvent): void;
73
- protected panDown(e: MouseEvent): void;
68
+ protected panMove(e: PointerEvent): void;
69
+ protected panDown(e: PointerEvent): void;
74
70
  protected panUp(): void;
75
71
  getCropperArea(): DOMRect;
76
- private setPosition;
77
72
  private startX;
78
73
  private startY;
79
74
  private startWidth;
80
75
  private startHeight;
81
76
  private startLeft;
82
77
  private startTop;
83
- protected handleSelector(e: MouseEvent, value: string): void;
84
- protected changeSizeHandler(e: MouseEvent): void;
78
+ protected handleSelector(e: PointerEvent, value: AXImageEditorCropHandle): void;
79
+ protected changeSizeHandler(e: PointerEvent): void;
85
80
  protected clearSelector(): void;
81
+ private normalizeRatio;
82
+ private centerOnParent;
83
+ private clampToParent;
84
+ private applyPosition;
86
85
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorCropperWindowComponent, never>;
87
86
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorCropperWindowComponent, "ax-image-editor-cropper-window", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
88
87
  }
89
88
 
90
- declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDestroy {
89
+ declare class AXImageEditorViewComponent extends MXBaseComponent {
91
90
  /**
92
91
  * its change grid display state.
93
92
  */
@@ -118,44 +117,50 @@ declare class AXImageEditorViewComponent extends MXBaseComponent implements OnDe
118
117
  protected isDrawRectangleCreated: _angular_core.WritableSignal<boolean>;
119
118
  /** @ignore */
120
119
  protected parent: AXImageEditorContainerComponent;
121
- /** @ignore */
122
- protected renderer: Renderer2;
120
+ private readonly destroyRef;
121
+ private readonly host;
123
122
  /** @ignore */
124
123
  protected imageEditorHistory: _angular_core.WritableSignal<HTMLImageElement[]>;
125
124
  /** @ignore */
126
125
  protected imageEditorHistoryPointer: _angular_core.WritableSignal<number>;
127
- /** @ignore */
128
- private resizeEventListener;
129
- /** @ignore */
130
- private imageLoadEventListener;
131
- private originalWidth;
132
- private originalHeight;
133
- private scale;
126
+ private canvasReady;
127
+ private drawing;
128
+ private didDraw;
129
+ private highlightSnapshot;
130
+ private highlightPoints;
131
+ private persistGeneration;
132
+ private sourceToken;
133
+ constructor();
134
134
  /** @ignore */
135
135
  protected resizeWindow(): void;
136
136
  /** @ignore */
137
137
  protected canvasResponsive(image: HTMLImageElement): void;
138
- /** @ignore */
139
- constructor();
140
- /** @ignore */
141
- ngOnDestroy(): void;
142
- private setInitialImage;
143
- /** @ignore */
144
- protected imageChanged(): void;
138
+ private loadSource;
139
+ private paintImage;
140
+ private fitCanvasDisplay;
141
+ private replaceHistory;
142
+ private pushHistory;
143
+ private syncHistoryFlags;
144
+ private applyUndo;
145
+ private applyRedo;
146
+ private canvasPoint;
147
+ private isDrawTool;
145
148
  /** @ignore */
146
149
  protected penConfigHandler(penType: 'pen' | 'highlight'): void;
150
+ private strokeHighlight;
147
151
  /** @ignore */
148
- protected mouseDownHandler(e: MouseEvent): void;
152
+ protected mouseDownHandler(event: PointerEvent): void;
149
153
  /** @ignore */
150
- protected mouseMoveHandler(e: MouseEvent): void;
151
- /** @ignore */
152
- protected mouseUpHandler(): void;
154
+ protected mouseMoveHandler(event: PointerEvent): void;
153
155
  /** @ignore */
156
+ protected mouseUpHandler(event?: PointerEvent): void;
157
+ /** Applies the current cropper selection. */
154
158
  crop(): Promise<void>;
159
+ /** Encodes the current canvas into JPEG, PNG, and WebP blobs. */
160
+ commitChanges(): Promise<Blob[]>;
155
161
  /** @ignore */
156
- protected rotateImage(): void;
157
- /** @ignore */
158
- protected saveImageChange(): Promise<void>;
162
+ protected rotateImage(): Promise<void>;
163
+ private persistCanvas;
159
164
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorViewComponent, never>;
160
165
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorViewComponent, "ax-image-editor-view", never, { "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "cropperSize": { "alias": "cropperSize"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
161
166
  }
@@ -177,8 +182,8 @@ declare class AXImageEditorContainerComponent extends AXImageEditorContainerComp
177
182
  view: _angular_core.Signal<AXImageEditorViewComponent>;
178
183
  /** Applies the current cropper selection. */
179
184
  crop(): Promise<void>;
180
- get __hostClass(): string;
181
- private get __hostName();
185
+ /** Encodes the current canvas into JPEG, PNG, and WebP blobs. */
186
+ commitChanges(): Promise<Blob[]>;
182
187
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorContainerComponent, never>;
183
188
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageEditorContainerComponent, "ax-image-editor-container", never, { "look": { "alias": "look"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "onValueChanged": "onValueChanged"; }, ["view"], ["ax-header", "ax-image-editor-view", "ax-footer", "ax-validation-rule"], true, never>;
184
189
  }
@@ -287,7 +292,7 @@ declare class AXImageEditorToolSelectorComponent {
287
292
 
288
293
  declare class AXImageEditorModule {
289
294
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageEditorModule, never>;
290
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXImageEditorModule, never, [typeof i1.AXButtonModule, typeof i2.FormsModule, typeof i3.AXRangeSliderModule, typeof i4.AXSelectBoxModule, typeof i5.AXColorBoxModule, typeof i6.AXPopoverModule, typeof i7.AXDecoratorModule, typeof i8.AXLoadingModule, typeof i9.AXDialogModule, typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent], [typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent]>;
295
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXImageEditorModule, never, [typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent], [typeof AXImageEditorViewComponent, typeof AXImageEditorContainerComponent, typeof AXImageEditorCropComponent, typeof AXImageEditorHistoryComponent, typeof AXImageEditorToolSelectorComponent, typeof AXImageEditorToolsBarComponent, typeof AXImageEditorPenComponent, typeof AXImageEditorHighlightComponent, typeof AXImageEditorRotateComponent, typeof AXImageEditorCropperWindowComponent]>;
291
296
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXImageEditorModule>;
292
297
  }
293
298
 
@@ -1,50 +0,0 @@
1
- import { AXComponentCloseEvent, AXClosableComponent } from '@acorex/cdk/common';
2
- import { AXTranslationService } from '@acorex/core/translation';
3
- import * as i0 from '@angular/core';
4
- import { inject, input, computed, EventEmitter, ViewEncapsulation, Component } from '@angular/core';
5
-
6
- class AXConversationComposerActionChoiceDialogComponent {
7
- constructor() {
8
- this.translation = inject(AXTranslationService);
9
- this.actions = input.required(/* @ts-ignore */
10
- ...(ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []));
11
- this.fileCount = input(1, /* @ts-ignore */
12
- ...(ngDevMode ? [{ debugName: "fileCount" }] : /* istanbul ignore next */ []));
13
- this.composerActionRegistry = input.required(/* @ts-ignore */
14
- ...(ngDevMode ? [{ debugName: "composerActionRegistry" }] : /* istanbul ignore next */ []));
15
- this.__popup__ = input(/* @ts-ignore */
16
- ...(ngDevMode ? [undefined, { debugName: "__popup__" }] : /* istanbul ignore next */ []));
17
- this.hintText = computed(() => {
18
- const count = this.fileCount();
19
- if (count === 1) {
20
- return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-single');
21
- }
22
- return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-multiple', {
23
- params: { count },
24
- });
25
- }, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "hintText" }] : /* istanbul ignore next */ []));
27
- this.onClosed = new EventEmitter();
28
- }
29
- getActionLabel(action) {
30
- return this.composerActionRegistry().getActionLabel(action);
31
- }
32
- getActionTooltip(action) {
33
- return this.composerActionRegistry().getActionTooltip(action);
34
- }
35
- choose(action) {
36
- const event = new AXComponentCloseEvent();
37
- event.component = this;
38
- event.data = action;
39
- this.onClosed.emit(event);
40
- }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationComposerActionChoiceDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXConversationComposerActionChoiceDialogComponent, isStandalone: true, selector: "ax-conversation-composer-action-choice-dialog", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: true, transformFunction: null }, fileCount: { classPropertyName: "fileCount", publicName: "fileCount", isSignal: true, isRequired: false, transformFunction: null }, composerActionRegistry: { classPropertyName: "composerActionRegistry", publicName: "composerActionRegistry", isSignal: true, isRequired: true, transformFunction: null }, __popup__: { classPropertyName: "__popup__", publicName: "__popup__", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXClosableComponent, useExisting: AXConversationComposerActionChoiceDialogComponent }], ngImport: i0, template: " <div class=\"composer-action-choice\" role=\"dialog\" aria-modal=\"true\">\n <p class=\"composer-action-choice__hint\">{{ hintText() }}</p>\n <ul class=\"composer-action-choice__list\" role=\"listbox\">\n @for (action of actions(); track action.id) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n class=\"composer-action-choice__option\"\n role=\"option\"\n (click)=\"choose(action)\"\n [attr.aria-label]=\"getActionLabel(action)\"\n >\n <span class=\"composer-action-choice__icon\" aria-hidden=\"true\">\n <i [class]=\"action.icon\"></i>\n </span>\n <span class=\"composer-action-choice__text\">\n <span class=\"composer-action-choice__title\">{{ getActionLabel(action) }}</span>\n @if (getActionTooltip(action); as tip) {\n <span class=\"composer-action-choice__subtitle\">{{ tip }}</span>\n }\n </span>\n <i class=\"fa-light fa-chevron-right composer-action-choice__chevron\" aria-hidden=\"true\"></i>\n </button>\n </li>\n }\n </ul>\n </div>\n", styles: ["@layer properties;@layer components{ax-conversation-composer-action-choice-dialog{display:block}ax-conversation-composer-action-choice-dialog .composer-action-choice{display:flex;min-width:calc(var(--spacing, .25rem) * 64);flex-direction:column;gap:calc(var(--spacing, .25rem) * 3);padding:calc(var(--spacing, .25rem) * 2)}ax-conversation-composer-action-choice-dialog .composer-action-choice__hint{margin:calc(var(--spacing, .25rem) * 0);font-size:.8125rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);color:rgba(var(--ax-sys-color-on-surface),.7)}ax-conversation-composer-action-choice-dialog .composer-action-choice__list{margin:calc(var(--spacing, .25rem) * 0);display:flex;list-style-type:none;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 0)}ax-conversation-composer-action-choice-dialog .composer-action-choice__option{display:flex;width:100%;cursor:pointer;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:var(--ax-sys-border-radius);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface));background-color:rgba(var(--ax-sys-color-surface));padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);text-align:start;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}ax-conversation-composer-action-choice-dialog .composer-action-choice__option:hover,ax-conversation-composer-action-choice-dialog .composer-action-choice__option:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface));--tw-outline-style: none;outline-style:none;background:rgba(var(--ax-sys-color-primary-500),.06);box-shadow:0 0 0 1px rgba(var(--ax-sys-color-primary-500),.25)}ax-conversation-composer-action-choice-dialog .composer-action-choice__icon{display:flex;height:calc(var(--spacing, .25rem) * 10);width:calc(var(--spacing, .25rem) * 10);flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--ax-sys-border-radius);font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:rgba(var(--ax-sys-color-primary-600));background:rgba(var(--ax-sys-color-primary-500),.1)}ax-conversation-composer-action-choice-dialog .composer-action-choice__text{display:flex;min-width:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * .5)}ax-conversation-composer-action-choice-dialog .composer-action-choice__title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgba(var(--ax-sys-color-on-surface))}ax-conversation-composer-action-choice-dialog .composer-action-choice__subtitle{overflow:hidden;font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));text-overflow:ellipsis;white-space:nowrap;color:rgba(var(--ax-sys-color-on-surface),.6)}ax-conversation-composer-action-choice-dialog .composer-action-choice__chevron{flex-shrink:0;font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:rgba(var(--ax-sys-color-on-surface),.45)}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationComposerActionChoiceDialogComponent, decorators: [{
45
- type: Component,
46
- args: [{ selector: 'ax-conversation-composer-action-choice-dialog', encapsulation: ViewEncapsulation.None, providers: [{ provide: AXClosableComponent, useExisting: AXConversationComposerActionChoiceDialogComponent }], template: " <div class=\"composer-action-choice\" role=\"dialog\" aria-modal=\"true\">\n <p class=\"composer-action-choice__hint\">{{ hintText() }}</p>\n <ul class=\"composer-action-choice__list\" role=\"listbox\">\n @for (action of actions(); track action.id) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n class=\"composer-action-choice__option\"\n role=\"option\"\n (click)=\"choose(action)\"\n [attr.aria-label]=\"getActionLabel(action)\"\n >\n <span class=\"composer-action-choice__icon\" aria-hidden=\"true\">\n <i [class]=\"action.icon\"></i>\n </span>\n <span class=\"composer-action-choice__text\">\n <span class=\"composer-action-choice__title\">{{ getActionLabel(action) }}</span>\n @if (getActionTooltip(action); as tip) {\n <span class=\"composer-action-choice__subtitle\">{{ tip }}</span>\n }\n </span>\n <i class=\"fa-light fa-chevron-right composer-action-choice__chevron\" aria-hidden=\"true\"></i>\n </button>\n </li>\n }\n </ul>\n </div>\n", styles: ["@layer properties;@layer components{ax-conversation-composer-action-choice-dialog{display:block}ax-conversation-composer-action-choice-dialog .composer-action-choice{display:flex;min-width:calc(var(--spacing, .25rem) * 64);flex-direction:column;gap:calc(var(--spacing, .25rem) * 3);padding:calc(var(--spacing, .25rem) * 2)}ax-conversation-composer-action-choice-dialog .composer-action-choice__hint{margin:calc(var(--spacing, .25rem) * 0);font-size:.8125rem;--tw-leading: var(--leading-snug, 1.375);line-height:var(--leading-snug, 1.375);color:rgba(var(--ax-sys-color-on-surface),.7)}ax-conversation-composer-action-choice-dialog .composer-action-choice__list{margin:calc(var(--spacing, .25rem) * 0);display:flex;list-style-type:none;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);padding:calc(var(--spacing, .25rem) * 0)}ax-conversation-composer-action-choice-dialog .composer-action-choice__option{display:flex;width:100%;cursor:pointer;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:var(--ax-sys-border-radius);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-light-surface));background-color:rgba(var(--ax-sys-color-surface));padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);text-align:start;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}ax-conversation-composer-action-choice-dialog .composer-action-choice__option:hover,ax-conversation-composer-action-choice-dialog .composer-action-choice__option:focus-visible{border-color:rgba(var(--ax-sys-color-primary-surface));--tw-outline-style: none;outline-style:none;background:rgba(var(--ax-sys-color-primary-500),.06);box-shadow:0 0 0 1px rgba(var(--ax-sys-color-primary-500),.25)}ax-conversation-composer-action-choice-dialog .composer-action-choice__icon{display:flex;height:calc(var(--spacing, .25rem) * 10);width:calc(var(--spacing, .25rem) * 10);flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--ax-sys-border-radius);font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));color:rgba(var(--ax-sys-color-primary-600));background:rgba(var(--ax-sys-color-primary-500),.1)}ax-conversation-composer-action-choice-dialog .composer-action-choice__text{display:flex;min-width:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * .5)}ax-conversation-composer-action-choice-dialog .composer-action-choice__title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:rgba(var(--ax-sys-color-on-surface))}ax-conversation-composer-action-choice-dialog .composer-action-choice__subtitle{overflow:hidden;font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));text-overflow:ellipsis;white-space:nowrap;color:rgba(var(--ax-sys-color-on-surface),.6)}ax-conversation-composer-action-choice-dialog .composer-action-choice__chevron{flex-shrink:0;font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:rgba(var(--ax-sys-color-on-surface),.45)}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
47
- }], propDecorators: { actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: true }] }], fileCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileCount", required: false }] }], composerActionRegistry: [{ type: i0.Input, args: [{ isSignal: true, alias: "composerActionRegistry", required: true }] }], __popup__: [{ type: i0.Input, args: [{ isSignal: true, alias: "__popup__", required: false }] }] } });
48
-
49
- export { AXConversationComposerActionChoiceDialogComponent };
50
- //# sourceMappingURL=acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-composer-action-choice-dialog.component-DCcRJYfF.mjs","sources":["../../../../packages/components/conversation/src/lib/components/message-list/composer-action-choice-dialog.component.ts","../../../../packages/components/conversation/src/lib/components/message-list/composer-action-choice-dialog.component.html"],"sourcesContent":["import { AXClosableComponent, AXComponentCloseEvent } from '@acorex/cdk/common';\nimport type { AXPopupRef } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Component, EventEmitter, ViewEncapsulation, computed, inject, input } from '@angular/core';\nimport type {\n AXConversationComposerAction,\n AXConversationComposerActionRegistry,\n} from '../../registries/composer-action.registry';\n\n@Component({\n selector: 'ax-conversation-composer-action-choice-dialog',\n encapsulation: ViewEncapsulation.None,\n\n templateUrl: './composer-action-choice-dialog.component.html',\n styleUrl: './composer-action-choice-dialog.component.css',\n providers: [{ provide: AXClosableComponent, useExisting: AXConversationComposerActionChoiceDialogComponent }],\n})\nexport class AXConversationComposerActionChoiceDialogComponent {\n private readonly translation = inject(AXTranslationService);\n\n readonly actions = input.required<AXConversationComposerAction[]>();\n readonly fileCount = input(1);\n readonly composerActionRegistry = input.required<AXConversationComposerActionRegistry>();\n readonly __popup__ = input<AXPopupRef | undefined>();\n\n readonly hintText = computed(() => {\n const count = this.fileCount();\n if (count === 1) {\n return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-single');\n }\n return this.translation.translateSync('@acorex:chat.dialog.choose-send-option.hint-multiple', {\n params: { count },\n });\n });\n\n readonly onClosed = new EventEmitter<AXComponentCloseEvent>();\n\n getActionLabel(action: AXConversationComposerAction): string {\n return this.composerActionRegistry().getActionLabel(action);\n }\n\n getActionTooltip(action: AXConversationComposerAction): string | undefined {\n return this.composerActionRegistry().getActionTooltip(action);\n }\n\n choose(action: AXConversationComposerAction): void {\n const event = new AXComponentCloseEvent();\n event.component = this;\n event.data = action;\n this.onClosed.emit(event);\n }\n}\n"," <div class=\"composer-action-choice\" role=\"dialog\" aria-modal=\"true\">\n <p class=\"composer-action-choice__hint\">{{ hintText() }}</p>\n <ul class=\"composer-action-choice__list\" role=\"listbox\">\n @for (action of actions(); track action.id) {\n <li role=\"presentation\">\n <button\n type=\"button\"\n class=\"composer-action-choice__option\"\n role=\"option\"\n (click)=\"choose(action)\"\n [attr.aria-label]=\"getActionLabel(action)\"\n >\n <span class=\"composer-action-choice__icon\" aria-hidden=\"true\">\n <i [class]=\"action.icon\"></i>\n </span>\n <span class=\"composer-action-choice__text\">\n <span class=\"composer-action-choice__title\">{{ getActionLabel(action) }}</span>\n @if (getActionTooltip(action); as tip) {\n <span class=\"composer-action-choice__subtitle\">{{ tip }}</span>\n }\n </span>\n <i class=\"fa-light fa-chevron-right composer-action-choice__chevron\" aria-hidden=\"true\"></i>\n </button>\n </li>\n }\n </ul>\n </div>\n"],"names":[],"mappings":"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"}