@acorex/components 22.2.7 → 22.2.9

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 (28) hide show
  1. package/fesm2022/acorex-components-audio-wave.mjs +24 -3
  2. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  3. package/fesm2022/{acorex-components-conversation-acorex-components-conversation-CjuzzYML.mjs → acorex-components-conversation-acorex-components-conversation-CJ2TAxPI.mjs} +839 -139
  4. package/fesm2022/acorex-components-conversation-acorex-components-conversation-CJ2TAxPI.mjs.map +1 -0
  5. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs +87 -0
  6. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs.map +1 -0
  7. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-r-53kDO7.mjs → acorex-components-conversation-picker-rename-file-dialog.component-veZdIY3W.mjs} +2 -2
  8. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-r-53kDO7.mjs.map → acorex-components-conversation-picker-rename-file-dialog.component-veZdIY3W.mjs.map} +1 -1
  9. package/fesm2022/acorex-components-conversation.mjs +1 -1
  10. package/fesm2022/acorex-components-file-viewer.mjs +145 -66
  11. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  12. package/fesm2022/acorex-components-menu.mjs +96 -16
  13. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  14. package/fesm2022/acorex-components-rest-api-generator.mjs +403 -0
  15. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -0
  16. package/fesm2022/acorex-components-tree-view.mjs +36 -4
  17. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  18. package/package.json +7 -3
  19. package/rest-api-generator/README.md +3 -0
  20. package/types/acorex-components-audio-wave.d.ts +8 -0
  21. package/types/acorex-components-conversation.d.ts +116 -11
  22. package/types/acorex-components-file-viewer.d.ts +6 -0
  23. package/types/acorex-components-menu.d.ts +15 -3
  24. package/types/acorex-components-rest-api-generator.d.ts +129 -0
  25. package/types/acorex-components-tree-view.d.ts +17 -0
  26. package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjuzzYML.mjs.map +0 -1
  27. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-AO1evM19.mjs +0 -85
  28. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-AO1evM19.mjs.map +0 -1
@@ -1,85 +0,0 @@
1
- import { AXComponentCloseEvent, AXClosableComponent } from '@acorex/cdk/common';
2
- import { AXButtonComponent } from '@acorex/components/button';
3
- import * as i1 from '@acorex/components/decorators';
4
- import { AXDecoratorModule } from '@acorex/components/decorators';
5
- import { AXImageEditorContainerComponent, AXImageEditorHistoryComponent, AXImageEditorToolSelectorComponent, AXImageEditorViewComponent } from '@acorex/components/image-editor';
6
- import * as i2 from '@acorex/components/toolbar';
7
- import { AXToolBarModule } from '@acorex/components/toolbar';
8
- import * as i3 from '@acorex/core/translation';
9
- import { AXTranslationModule } from '@acorex/core/translation';
10
- import { AsyncPipe } from '@angular/common';
11
- import * as i0 from '@angular/core';
12
- import { input, viewChild, signal, EventEmitter, ViewEncapsulation, Component } from '@angular/core';
13
-
14
- function editedImageFile(blob, originalName) {
15
- const base = originalName.replace(/\.[^.]+$/, '') || 'image';
16
- const ext = blob.type === 'image/png' ? 'png' : blob.type === 'image/webp' ? 'webp' : 'jpg';
17
- return new File([blob], `${base}.${ext}`, {
18
- type: blob.type || 'image/jpeg',
19
- lastModified: Date.now(),
20
- });
21
- }
22
- class AXConversationImagePickerEditorDialogComponent {
23
- constructor() {
24
- this.src = input.required(/* @ts-ignore */
25
- ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
26
- this.fileName = input('image.jpg', /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "fileName" }] : /* istanbul ignore next */ []));
28
- this.editor = viewChild(AXImageEditorContainerComponent, /* @ts-ignore */
29
- ...(ngDevMode ? [{ debugName: "editor" }] : /* istanbul ignore next */ []));
30
- this.saving = signal(false, /* @ts-ignore */
31
- ...(ngDevMode ? [{ debugName: "saving" }] : /* istanbul ignore next */ []));
32
- this.onClosed = new EventEmitter();
33
- }
34
- async save() {
35
- if (this.saving()) {
36
- return;
37
- }
38
- const editor = this.editor();
39
- if (!editor) {
40
- return;
41
- }
42
- this.saving.set(true);
43
- try {
44
- const blobs = await editor.commitChanges();
45
- const blob = blobs[0];
46
- if (!blob) {
47
- return;
48
- }
49
- const event = new AXComponentCloseEvent();
50
- event.component = this;
51
- event.data = editedImageFile(blob, this.fileName());
52
- this.onClosed.emit(event);
53
- }
54
- catch {
55
- // Keep the dialog open so the user can retry or cancel.
56
- }
57
- finally {
58
- this.saving.set(false);
59
- }
60
- }
61
- cancel() {
62
- const event = new AXComponentCloseEvent();
63
- event.component = this;
64
- this.onClosed.emit(event);
65
- }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationImagePickerEditorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXConversationImagePickerEditorDialogComponent, isStandalone: true, selector: "ax-conversation-image-picker-editor-dialog", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: AXClosableComponent, useExisting: AXConversationImagePickerEditorDialogComponent }], viewQueries: [{ propertyName: "editor", first: true, predicate: AXImageEditorContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-conversation-image-editor-dialog__body\">\n <ax-image-editor-container>\n <ax-header>\n <ax-toolbar>\n <ax-prefix>\n <ax-image-editor-history></ax-image-editor-history>\n </ax-prefix>\n </ax-toolbar>\n </ax-header>\n\n <ax-image-editor-view [src]=\"src()\" [showGrid]=\"true\"></ax-image-editor-view>\n\n <ax-footer>\n <ax-image-editor-tool-selector [aspectRatio]=\"['1:1', '16:9', '4:3', '9:16']\"></ax-image-editor-tool-selector>\n </ax-footer>\n </ax-image-editor-container>\n</div>\n\n<ax-footer>\n <ax-suffix>\n <ax-button\n [text]=\"'@acorex:chat.actions.cancel' | translate | async\"\n look=\"solid\"\n [disabled]=\"saving()\"\n (onClick)=\"cancel()\"\n />\n <ax-button\n [text]=\"'@acorex:chat.actions.save' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"saving()\"\n (onClick)=\"save()\"\n />\n </ax-suffix>\n</ax-footer>\n", styles: ["@layer components{ax-conversation-image-picker-editor-dialog{display:flex;height:100%;min-height:calc(var(--spacing, .25rem) * 0);width:100%;flex:1;flex-direction:column;overflow:hidden}ax-conversation-image-picker-editor-dialog .ax-conversation-image-editor-dialog__body{min-height:calc(var(--spacing, .25rem) * 0);flex:1;overflow:auto;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 3)}ax-conversation-image-picker-editor-dialog ax-image-editor-container{width:100%;max-width:100%}ax-conversation-image-picker-editor-dialog ax-image-editor-view{min-height:calc(var(--spacing, .25rem) * 64)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXImageEditorContainerComponent, selector: "ax-image-editor-container", inputs: ["look", "disabled"], outputs: ["onValueChanged"] }, { kind: "component", type: AXImageEditorHistoryComponent, selector: "ax-image-editor-history" }, { kind: "component", type: AXImageEditorToolSelectorComponent, selector: "ax-image-editor-tool-selector", inputs: ["aspectRatio"] }, { kind: "component", type: AXImageEditorViewComponent, selector: "ax-image-editor-view", inputs: ["showGrid", "cropperSize", "src"] }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "component", type: i2.AXToolBarComponent, selector: "ax-toolbar" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationImagePickerEditorDialogComponent, decorators: [{
70
- type: Component,
71
- args: [{ selector: 'ax-conversation-image-picker-editor-dialog', encapsulation: ViewEncapsulation.None, imports: [
72
- AsyncPipe,
73
- AXButtonComponent,
74
- AXDecoratorModule,
75
- AXImageEditorContainerComponent,
76
- AXImageEditorHistoryComponent,
77
- AXImageEditorToolSelectorComponent,
78
- AXImageEditorViewComponent,
79
- AXToolBarModule,
80
- AXTranslationModule,
81
- ], providers: [{ provide: AXClosableComponent, useExisting: AXConversationImagePickerEditorDialogComponent }], template: "<div class=\"ax-conversation-image-editor-dialog__body\">\n <ax-image-editor-container>\n <ax-header>\n <ax-toolbar>\n <ax-prefix>\n <ax-image-editor-history></ax-image-editor-history>\n </ax-prefix>\n </ax-toolbar>\n </ax-header>\n\n <ax-image-editor-view [src]=\"src()\" [showGrid]=\"true\"></ax-image-editor-view>\n\n <ax-footer>\n <ax-image-editor-tool-selector [aspectRatio]=\"['1:1', '16:9', '4:3', '9:16']\"></ax-image-editor-tool-selector>\n </ax-footer>\n </ax-image-editor-container>\n</div>\n\n<ax-footer>\n <ax-suffix>\n <ax-button\n [text]=\"'@acorex:chat.actions.cancel' | translate | async\"\n look=\"solid\"\n [disabled]=\"saving()\"\n (onClick)=\"cancel()\"\n />\n <ax-button\n [text]=\"'@acorex:chat.actions.save' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"saving()\"\n (onClick)=\"save()\"\n />\n </ax-suffix>\n</ax-footer>\n", styles: ["@layer components{ax-conversation-image-picker-editor-dialog{display:flex;height:100%;min-height:calc(var(--spacing, .25rem) * 0);width:100%;flex:1;flex-direction:column;overflow:hidden}ax-conversation-image-picker-editor-dialog .ax-conversation-image-editor-dialog__body{min-height:calc(var(--spacing, .25rem) * 0);flex:1;overflow:auto;padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 3)}ax-conversation-image-picker-editor-dialog ax-image-editor-container{width:100%;max-width:100%}ax-conversation-image-picker-editor-dialog ax-image-editor-view{min-height:calc(var(--spacing, .25rem) * 64)}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"] }]
82
- }], propDecorators: { src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: true }] }], fileName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileName", required: false }] }], editor: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXImageEditorContainerComponent), { isSignal: true }] }] } });
83
-
84
- export { AXConversationImagePickerEditorDialogComponent };
85
- //# sourceMappingURL=acorex-components-conversation-image-picker-editor-dialog.component-AO1evM19.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-components-conversation-image-picker-editor-dialog.component-AO1evM19.mjs","sources":["../../../../packages/components/conversation/src/lib/plugins/composer/components/image-picker/image-picker-editor-dialog.component.ts","../../../../packages/components/conversation/src/lib/plugins/composer/components/image-picker/image-picker-editor-dialog.component.html"],"sourcesContent":["import { AXClosableComponent, AXComponentCloseEvent } from '@acorex/cdk/common';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport {\n AXImageEditorContainerComponent,\n AXImageEditorHistoryComponent,\n AXImageEditorToolSelectorComponent,\n AXImageEditorViewComponent,\n} from '@acorex/components/image-editor';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, EventEmitter, input, signal, viewChild, ViewEncapsulation } from '@angular/core';\n\nfunction editedImageFile(blob: Blob, originalName: string): File {\n const base = originalName.replace(/\\.[^.]+$/, '') || 'image';\n const ext = blob.type === 'image/png' ? 'png' : blob.type === 'image/webp' ? 'webp' : 'jpg';\n return new File([blob], `${base}.${ext}`, {\n type: blob.type || 'image/jpeg',\n lastModified: Date.now(),\n });\n}\n\n@Component({\n selector: 'ax-conversation-image-picker-editor-dialog',\n\n encapsulation: ViewEncapsulation.None,\n imports: [\n AsyncPipe,\n AXButtonComponent,\n AXDecoratorModule,\n AXImageEditorContainerComponent,\n AXImageEditorHistoryComponent,\n AXImageEditorToolSelectorComponent,\n AXImageEditorViewComponent,\n AXToolBarModule,\n AXTranslationModule,\n ],\n providers: [{ provide: AXClosableComponent, useExisting: AXConversationImagePickerEditorDialogComponent }],\n templateUrl: './image-picker-editor-dialog.component.html',\n styleUrl: './image-picker-editor-dialog.component.css',\n})\nexport class AXConversationImagePickerEditorDialogComponent {\n readonly src = input.required<string>();\n readonly fileName = input('image.jpg');\n\n private readonly editor = viewChild(AXImageEditorContainerComponent);\n protected readonly saving = signal(false);\n\n readonly onClosed = new EventEmitter<AXComponentCloseEvent>();\n\n async save(): Promise<void> {\n if (this.saving()) {\n return;\n }\n\n const editor = this.editor();\n if (!editor) {\n return;\n }\n\n this.saving.set(true);\n try {\n const blobs = await editor.commitChanges();\n const blob = blobs[0];\n if (!blob) {\n return;\n }\n\n const event = new AXComponentCloseEvent();\n event.component = this;\n event.data = editedImageFile(blob, this.fileName());\n this.onClosed.emit(event);\n } catch {\n // Keep the dialog open so the user can retry or cancel.\n } finally {\n this.saving.set(false);\n }\n }\n\n cancel(): void {\n const event = new AXComponentCloseEvent();\n event.component = this;\n this.onClosed.emit(event);\n }\n}\n","<div class=\"ax-conversation-image-editor-dialog__body\">\n <ax-image-editor-container>\n <ax-header>\n <ax-toolbar>\n <ax-prefix>\n <ax-image-editor-history></ax-image-editor-history>\n </ax-prefix>\n </ax-toolbar>\n </ax-header>\n\n <ax-image-editor-view [src]=\"src()\" [showGrid]=\"true\"></ax-image-editor-view>\n\n <ax-footer>\n <ax-image-editor-tool-selector [aspectRatio]=\"['1:1', '16:9', '4:3', '9:16']\"></ax-image-editor-tool-selector>\n </ax-footer>\n </ax-image-editor-container>\n</div>\n\n<ax-footer>\n <ax-suffix>\n <ax-button\n [text]=\"'@acorex:chat.actions.cancel' | translate | async\"\n look=\"solid\"\n [disabled]=\"saving()\"\n (onClick)=\"cancel()\"\n />\n <ax-button\n [text]=\"'@acorex:chat.actions.save' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"saving()\"\n (onClick)=\"save()\"\n />\n </ax-suffix>\n</ax-footer>\n"],"names":[],"mappings":"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"}