@acorex/platform 18.1.1 → 18.1.3

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 (94) hide show
  1. package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-edit.component.mjs +1 -2
  2. package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +2 -1
  3. package/esm2022/layout/builder/lib/builder/widget.types.mjs +64 -2
  4. package/esm2022/layout/designer/lib/designer/index.mjs +5 -4
  5. package/esm2022/layout/entity/lib/entity.module.mjs +4 -3
  6. package/esm2022/layout/entity/lib/widgets/widget-selector/index.mjs +4 -0
  7. package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget-edit.component.mjs +130 -0
  8. package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget-view.component.mjs +18 -0
  9. package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget.config.mjs +19 -0
  10. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +2 -2
  11. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +3 -3
  12. package/esm2022/themes/default/lib/layouts/entity-layouts/index.mjs +2 -2
  13. package/esm2022/themes/shared/acorex-platform-themes-shared.mjs +5 -0
  14. package/esm2022/themes/shared/index.mjs +6 -0
  15. package/esm2022/themes/shared/lib/comments/comment-list-view.component.mjs +397 -0
  16. package/esm2022/themes/shared/lib/comments/comment-lookup-popup.component.mjs +56 -0
  17. package/esm2022/themes/shared/lib/comments/comments.service.mjs +3 -0
  18. package/esm2022/themes/shared/lib/comments/comments.type.mjs +2 -0
  19. package/esm2022/themes/shared/lib/shared.module.mjs +16 -0
  20. package/esm2022/widgets/lib/properties/editors.props.mjs +102 -308
  21. package/esm2022/widgets/lib/properties/general.props.mjs +4 -13
  22. package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +1 -2
  23. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +9 -4
  24. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-view.component.mjs +4 -4
  25. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.mjs +4 -4
  26. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +31 -22
  27. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +3 -3
  28. package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +3 -7
  29. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +1 -3
  30. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +1 -3
  31. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.mjs +1 -5
  32. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +1 -3
  33. package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +1 -3
  34. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.mjs +94 -19
  35. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.mjs +119 -8
  36. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-print.component.mjs +3 -2
  37. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.mjs +14 -22
  38. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +16 -3
  39. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-CnH3MjYz.mjs → acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs} +1 -2
  40. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-common.mjs +1 -1
  42. package/fesm2022/acorex-platform-layout-builder.mjs +98 -36
  43. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  44. package/fesm2022/acorex-platform-layout-designer.mjs +190 -100
  45. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  46. package/fesm2022/acorex-platform-layout-entity.mjs +157 -5
  47. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  48. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-CWXJxLS0.mjs → acorex-platform-themes-default-entity-master-list-view.component-fZ6QEYcd.mjs} +6 -6
  49. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-CWXJxLS0.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-fZ6QEYcd.mjs.map} +1 -1
  50. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs +145 -0
  51. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs.map +1 -0
  52. package/fesm2022/acorex-platform-themes-default.mjs +128 -8
  53. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  54. package/fesm2022/acorex-platform-themes-shared.mjs +469 -0
  55. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -0
  56. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-Oxpdaz9P.mjs → acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs} +1 -2
  57. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs.map +1 -0
  58. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs → acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs} +4 -4
  59. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs.map +1 -0
  60. package/fesm2022/acorex-platform-widgets.mjs +378 -410
  61. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  62. package/layout/builder/lib/builder/widget.types.d.ts +31 -1
  63. package/layout/designer/lib/designer/index.d.ts +4 -3
  64. package/layout/entity/lib/widgets/widget-selector/index.d.ts +3 -0
  65. package/layout/entity/lib/widgets/widget-selector/widget-selector-widget-edit.component.d.ts +25 -0
  66. package/layout/entity/lib/widgets/widget-selector/widget-selector-widget-view.component.d.ts +6 -0
  67. package/layout/entity/lib/widgets/widget-selector/widget-selector-widget.config.d.ts +7 -0
  68. package/package.json +19 -13
  69. package/themes/default/lib/layouts/entity-layouts/index.d.ts +1 -1
  70. package/themes/shared/README.md +4 -0
  71. package/themes/shared/index.d.ts +5 -0
  72. package/themes/shared/lib/comments/comment-list-view.component.d.ts +60 -0
  73. package/themes/shared/lib/comments/comment-lookup-popup.component.d.ts +10 -0
  74. package/themes/shared/lib/comments/comments.service.d.ts +8 -0
  75. package/themes/shared/lib/comments/comments.type.d.ts +70 -0
  76. package/themes/shared/lib/shared.module.d.ts +6 -0
  77. package/widgets/lib/properties/editors.props.d.ts +3 -3
  78. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +1 -0
  79. package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +4 -1
  80. package/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.d.ts +4 -3
  81. package/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.d.ts +10 -2
  82. package/widgets/lib/widgets/layout/repeater/repeater-widget-print.component.d.ts +1 -1
  83. package/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.d.ts +2 -4
  84. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.mjs +0 -123
  85. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.mjs +0 -3
  86. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CnH3MjYz.mjs.map +0 -1
  87. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs +0 -100
  88. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs.map +0 -1
  89. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B9lGgO_u.mjs +0 -357
  90. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B9lGgO_u.mjs.map +0 -1
  91. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-Oxpdaz9P.mjs.map +0 -1
  92. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs.map +0 -1
  93. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.d.ts +0 -33
  94. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.d.ts +0 -11
@@ -1,123 +0,0 @@
1
- import { AXCommentModule } from '@acorex/components/comment';
2
- import { AXDecoratorModule } from '@acorex/components/decorators';
3
- import { AXWysiwygModule } from '@acorex/components/wysiwyg';
4
- import { CommonModule } from '@angular/common';
5
- import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
6
- import { FormsModule } from '@angular/forms';
7
- import { ActivatedRoute, RouterModule } from '@angular/router';
8
- import { AXAvatarModule } from '@acorex/components/avatar';
9
- import { AXButtonModule } from '@acorex/components/button';
10
- import { AXDataSource } from '@acorex/components/common';
11
- import { AXFormModule } from '@acorex/components/form';
12
- import { AXImageModule } from '@acorex/components/image';
13
- import { AXLabelModule } from '@acorex/components/label';
14
- import { AXSelectBoxModule } from '@acorex/components/select-box';
15
- import { AXTextBoxModule } from '@acorex/components/text-box';
16
- import { AXPCommentService } from './comments.service';
17
- import * as i0 from "@angular/core";
18
- import * as i1 from "@angular/forms";
19
- import * as i2 from "@acorex/components/decorators";
20
- import * as i3 from "@acorex/components/comment";
21
- import * as i4 from "@acorex/components/wysiwyg";
22
- import * as i5 from "@acorex/components/button";
23
- import * as i6 from "@acorex/components/avatar";
24
- import * as i7 from "@acorex/components/image";
25
- import * as i8 from "@acorex/components/form";
26
- export class AXPCommentListViewComponent {
27
- constructor() {
28
- this.commentService = inject(AXPCommentService);
29
- this.activeRoute = inject(ActivatedRoute);
30
- this.vm = this.activeRoute.snapshot.data['vm'];
31
- this.comments = signal([]);
32
- this.value = signal('');
33
- this.wysiwygOptions = signal({
34
- look: 'solid',
35
- });
36
- this.avatarOptions = signal({
37
- color: 'primary',
38
- look: 'rounded',
39
- type: 'solid', // 'image' | 'text' | 'icon' | 'default'
40
- });
41
- this.editorOption = new AXDataSource({
42
- pageSize: 10,
43
- key: 'id',
44
- load: () => {
45
- return new Promise((resolve) => {
46
- resolve({
47
- items: ['advance', 'basic'],
48
- total: 2,
49
- });
50
- });
51
- },
52
- byKey: () => {
53
- return new Promise((resolve) => {
54
- resolve('advance');
55
- });
56
- },
57
- });
58
- this.validateFn = (val) => {
59
- let isValid = true;
60
- if (!val || val === '<p><br></p>') {
61
- isValid = false;
62
- }
63
- return {
64
- rule: 'callback',
65
- result: isValid,
66
- message: isValid ? '' : 'Please fill the content',
67
- value: val,
68
- };
69
- };
70
- }
71
- ngOnInit() {
72
- this.loadComments();
73
- }
74
- async loadComments() {
75
- const payload = {
76
- roomType: 'default',
77
- entityId: 'inspection.vehicle',
78
- instanceId: 'a96d2a63-a304-0da6-1231-3a152a99efd4',
79
- };
80
- const data = await this.commentService.getComments(payload);
81
- this.comments.set(data.items);
82
- }
83
- replyHandler() {
84
- console.log('click');
85
- }
86
- valueChange(e) {
87
- console.log(e);
88
- }
89
- submitComment() {
90
- const payload = {
91
- content: 'This is Content',
92
- contentType: 'text',
93
- roomType: 'default',
94
- entityId: 'inspection.vehicle',
95
- instanceId: 'a96d2a63-a304-0da6-1231-3a152a99efd4',
96
- isPrivate: false,
97
- isArchived: true,
98
- members: [],
99
- };
100
- this.commentService.postComment(payload);
101
- }
102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPCommentListViewComponent, isStandalone: true, selector: "axp-comment-list-view", ngImport: i0, template: "<div class=\"ax-mt-2\">\n <ax-comment-view class=\"ax-bg-surface\">\n <ax-comment-item>\n <ax-avatar [color]=\"avatarOptions().color\" [look]=\"avatarOptions().look\">\n <ax-image src=\"https://i.pravatar.cc/300\"></ax-image>\n </ax-avatar>\n <ax-title>Matin</ax-title>\n <ax-content>Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, mollitia.</ax-content>\n <ax-comment-like [liked]=\"false\">2</ax-comment-like>\n <ax-comment-reply>4</ax-comment-reply>\n <ax-comment-reply-text (click)=\"replyHandler()\"></ax-comment-reply-text>\n\n <ax-comment-item>\n <ax-avatar [color]=\"avatarOptions().color\" [look]=\"avatarOptions().look\">\n <ax-image src=\"https://i.pravatar.cc/300\"></ax-image>\n </ax-avatar>\n <ax-title>Meysa</ax-title>\n <ax-content>Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, mollitia.</ax-content>\n <ax-comment-like [liked]=\"true\">4</ax-comment-like>\n <ax-comment-reply>3</ax-comment-reply>\n <ax-comment-reply-text (click)=\"replyHandler()\"></ax-comment-reply-text>\n </ax-comment-item>\n </ax-comment-item>\n </ax-comment-view>\n\n <ax-form>\n <ax-form-field>\n <ax-wysiwyg-container [look]=\"wysiwygOptions().look\" (ngModelChange)=\"valueChange($event)\" [(ngModel)]=\"value\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-wysiwyg-insert></ax-wysiwyg-insert>\n <ax-suffix>\n <ax-button type=\"submit\" color=\"primary\" text=\"Send\" (onClick)=\"submitComment()\"></ax-button\n ></ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateFn }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </ax-form-field>\n </ax-form>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCommentModule }, { kind: "component", type: i3.AXCommentViewComponent, selector: "ax-comment-view" }, { kind: "component", type: i3.AxCommentItemComponent, selector: "ax-comment-item" }, { kind: "component", type: i3.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["liked"] }, { kind: "component", type: i3.AXCommentReplyComponent, selector: "ax-comment-reply" }, { kind: "component", type: i3.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "ngmodule", type: AXWysiwygModule }, { kind: "component", type: i4.AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: ["look", "placeHolder"], outputs: ["onValueChanged"] }, { kind: "component", type: i4.AXWysiwygViewComponent, selector: "ax-wysiwyg-view", inputs: ["class"] }, { kind: "component", type: i4.AXWysiwygToolbarComponent, selector: "ax-wysiwyg-toolbar" }, { kind: "component", type: i4.AXWysiwygAlignmentComponent, selector: "ax-wysiwyg-alignment" }, { kind: "component", type: i4.AXWysiwygColorsComponent, selector: "ax-wysiwyg-colors" }, { kind: "component", type: i4.AXWysiwygFontStyleComponent, selector: "ax-wysiwyg-font-style" }, { kind: "component", type: i4.AXWysiwygHistoryComponent, selector: "ax-wysiwyg-history" }, { kind: "component", type: i4.AXWysiwygInsertComponent, selector: "ax-wysiwyg-insert" }, { kind: "component", type: i4.AXWysiwygListComponent, selector: "ax-wysiwyg-list" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "component", type: i6.AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "look"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i7.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i8.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i8.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i8.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
- }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPCommentListViewComponent, decorators: [{
106
- type: Component,
107
- args: [{ selector: 'axp-comment-list-view', imports: [
108
- FormsModule,
109
- CommonModule,
110
- RouterModule,
111
- AXDecoratorModule,
112
- AXCommentModule,
113
- AXWysiwygModule,
114
- AXButtonModule,
115
- AXTextBoxModule,
116
- AXLabelModule,
117
- AXAvatarModule,
118
- AXImageModule,
119
- AXSelectBoxModule,
120
- AXFormModule,
121
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-mt-2\">\n <ax-comment-view class=\"ax-bg-surface\">\n <ax-comment-item>\n <ax-avatar [color]=\"avatarOptions().color\" [look]=\"avatarOptions().look\">\n <ax-image src=\"https://i.pravatar.cc/300\"></ax-image>\n </ax-avatar>\n <ax-title>Matin</ax-title>\n <ax-content>Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, mollitia.</ax-content>\n <ax-comment-like [liked]=\"false\">2</ax-comment-like>\n <ax-comment-reply>4</ax-comment-reply>\n <ax-comment-reply-text (click)=\"replyHandler()\"></ax-comment-reply-text>\n\n <ax-comment-item>\n <ax-avatar [color]=\"avatarOptions().color\" [look]=\"avatarOptions().look\">\n <ax-image src=\"https://i.pravatar.cc/300\"></ax-image>\n </ax-avatar>\n <ax-title>Meysa</ax-title>\n <ax-content>Lorem ipsum dolor sit amet consectetur adipisicing elit. Itaque, mollitia.</ax-content>\n <ax-comment-like [liked]=\"true\">4</ax-comment-like>\n <ax-comment-reply>3</ax-comment-reply>\n <ax-comment-reply-text (click)=\"replyHandler()\"></ax-comment-reply-text>\n </ax-comment-item>\n </ax-comment-item>\n </ax-comment-view>\n\n <ax-form>\n <ax-form-field>\n <ax-wysiwyg-container [look]=\"wysiwygOptions().look\" (ngModelChange)=\"valueChange($event)\" [(ngModel)]=\"value\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n <ax-wysiwyg-insert></ax-wysiwyg-insert>\n <ax-suffix>\n <ax-button type=\"submit\" color=\"primary\" text=\"Send\" (onClick)=\"submitComment()\"></ax-button\n ></ax-suffix>\n </ax-wysiwyg-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateFn }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </ax-form-field>\n </ax-form>\n</div>\n" }]
122
- }] });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1zaW5nbGUtdmlldy9jb21tZW50cy9jb21tZW50LWxpc3Qtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9lbnRpdHktbGF5b3V0cy9lbnRpdHktbWFzdGVyLXNpbmdsZS12aWV3L2NvbW1lbnRzL2NvbW1lbnQtbGlzdC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7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QUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsQ0FBTTtRQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFnQkQsYUFBYTtRQUNYLE1BQU0sT0FBTyxHQUFHO1lBQ2QsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsTUFBTTtZQUNuQixRQUFRLEVBQUUsU0FBUztZQUNuQixRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFVBQVUsRUFBRSxzQ0FBc0M7WUFDbEQsU0FBUyxFQUFFLEtBQUs7WUFDaEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs4R0E3RlUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsaUZDdkN4QyxtbkVBNkNBLDJDRHZCSSxXQUFXLDhWQUNYLFlBQVksOEJBQ1osWUFBWSw4QkFDWixpQkFBaUIsc1BBQ2pCLGVBQWUsdWVBQ2YsZUFBZSwrNUJBQ2YsY0FBYyx1WkFDZCxlQUFlLDhCQUNmLGFBQWEsOEJBQ2IsY0FBYyxvS0FDZCxhQUFhLGlNQUNiLGlCQUFpQiw4QkFDakIsWUFBWTs7MkZBS0gsMkJBQTJCO2tCQXJCdkMsU0FBUzsrQkFFRSx1QkFBdUIsV0FDeEI7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGlCQUFpQjt3QkFDakIsWUFBWTtxQkFDYixjQUNXLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29tbWVudE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tZW50JztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhXeXNpd3lnTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3d5c2l3eWcnO1xuaW1wb3J0IHsgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQVhBdmF0YXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYU3R5bGVMb29rVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhJbWFnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9pbWFnZSc7XG5pbXBvcnQgeyBBWExhYmVsTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xhYmVsJztcbmltcG9ydCB7IEFYU2VsZWN0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlbGVjdC1ib3gnO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IEFYUENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21tZW50cy5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vY29tbWVudC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzZWxlY3RvcjogJ2F4cC1jb21tZW50LWxpc3QtdmlldycsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYQ29tbWVudE1vZHVsZSxcbiAgICBBWFd5c2l3eWdNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhUZXh0Qm94TW9kdWxlLFxuICAgIEFYTGFiZWxNb2R1bGUsXG4gICAgQVhBdmF0YXJNb2R1bGUsXG4gICAgQVhJbWFnZU1vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBDb21tZW50TGlzdFZpZXdDb21wb25lbnQge1xuICBjb21tZW50U2VydmljZSA9IGluamVjdChBWFBDb21tZW50U2VydmljZSk7XG5cbiAgcHJpdmF0ZSBhY3RpdmVSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QuZGF0YVsndm0nXSBhcyBBWFBFbnRpdHlNYXN0ZXJTaW5nbGVWaWV3TW9kZWw7XG5cbiAgcHJvdGVjdGVkIGNvbW1lbnRzID0gc2lnbmFsPGFueVtdPihbXSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQ29tbWVudHMoKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRDb21tZW50cygpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgcm9vbVR5cGU6ICdkZWZhdWx0JyxcbiAgICAgIGVudGl0eUlkOiAnaW5zcGVjdGlvbi52ZWhpY2xlJyxcbiAgICAgIGluc3RhbmNlSWQ6ICdhOTZkMmE2My1hMzA0LTBkYTYtMTIzMS0zYTE1MmE5OWVmZDQnLFxuICAgIH07XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZ2V0Q29tbWVudHMocGF5bG9hZCk7XG4gICAgdGhpcy5jb21tZW50cy5zZXQoZGF0YS5pdGVtcyk7XG4gIH1cblxuICB2YWx1ZSA9IHNpZ25hbCgnJyk7XG5cbiAgcHJvdGVjdGVkIHd5c2l3eWdPcHRpb25zID0gc2lnbmFsPHtcbiAgICBsb29rOiBBWFN0eWxlTG9va1R5cGU7XG4gIH0+KHtcbiAgICBsb29rOiAnc29saWQnLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgYXZhdGFyT3B0aW9ucyA9IHNpZ25hbDx7XG4gICAgY29sb3I6IHN0cmluZztcbiAgICBsb29rOiAnc2hhcnAnIHwgJ3NvZnQnIHwgJ3JvdW5kZWQnO1xuICAgIHR5cGU6IHN0cmluZztcbiAgfT4oe1xuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgbG9vazogJ3JvdW5kZWQnLFxuICAgIHR5cGU6ICdzb2xpZCcsIC8vICdpbWFnZScgfCAndGV4dCcgfCAnaWNvbicgfCAnZGVmYXVsdCdcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGVkaXRvck9wdGlvbiA9IG5ldyBBWERhdGFTb3VyY2U8c3RyaW5nPih7XG4gICAgcGFnZVNpemU6IDEwLFxuICAgIGtleTogJ2lkJyxcbiAgICBsb2FkOiAoKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgaXRlbXM6IFsnYWR2YW5jZScsICdiYXNpYyddLFxuICAgICAgICAgIHRvdGFsOiAyLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYnlLZXk6ICgpID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICByZXNvbHZlKCdhZHZhbmNlJyk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9KTtcblxuICByZXBseUhhbmRsZXIoKSB7XG4gICAgY29uc29sZS5sb2coJ2NsaWNrJyk7XG4gIH1cblxuICB2YWx1ZUNoYW5nZShlOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgfVxuXG4gIHZhbGlkYXRlRm4gPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG5cbiAgICBpZiAoIXZhbCB8fCB2YWwgPT09ICc8cD48YnI+PC9wPicpIHtcbiAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJ1bGU6ICdjYWxsYmFjaycsXG4gICAgICByZXN1bHQ6IGlzVmFsaWQsXG4gICAgICBtZXNzYWdlOiBpc1ZhbGlkID8gJycgOiAnUGxlYXNlIGZpbGwgdGhlIGNvbnRlbnQnLFxuICAgICAgdmFsdWU6IHZhbCxcbiAgICB9O1xuICB9O1xuXG4gIHN1Ym1pdENvbW1lbnQoKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGNvbnRlbnQ6ICdUaGlzIGlzIENvbnRlbnQnLFxuICAgICAgY29udGVudFR5cGU6ICd0ZXh0JyxcbiAgICAgIHJvb21UeXBlOiAnZGVmYXVsdCcsXG4gICAgICBlbnRpdHlJZDogJ2luc3BlY3Rpb24udmVoaWNsZScsXG4gICAgICBpbnN0YW5jZUlkOiAnYTk2ZDJhNjMtYTMwNC0wZGE2LTEyMzEtM2ExNTJhOTllZmQ0JyxcbiAgICAgIGlzUHJpdmF0ZTogZmFsc2UsXG4gICAgICBpc0FyY2hpdmVkOiB0cnVlLFxuICAgICAgbWVtYmVyczogW10sXG4gICAgfTtcblxuICAgIHRoaXMuY29tbWVudFNlcnZpY2UucG9zdENvbW1lbnQocGF5bG9hZCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1tdC0yXCI+XG4gIDxheC1jb21tZW50LXZpZXcgY2xhc3M9XCJheC1iZy1zdXJmYWNlXCI+XG4gICAgPGF4LWNvbW1lbnQtaXRlbT5cbiAgICAgIDxheC1hdmF0YXIgW2NvbG9yXT1cImF2YXRhck9wdGlvbnMoKS5jb2xvclwiIFtsb29rXT1cImF2YXRhck9wdGlvbnMoKS5sb29rXCI+XG4gICAgICAgIDxheC1pbWFnZSBzcmM9XCJodHRwczovL2kucHJhdmF0YXIuY2MvMzAwXCI+PC9heC1pbWFnZT5cbiAgICAgIDwvYXgtYXZhdGFyPlxuICAgICAgPGF4LXRpdGxlPk1hdGluPC9heC10aXRsZT5cbiAgICAgIDxheC1jb250ZW50PkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQuIEl0YXF1ZSwgbW9sbGl0aWEuPC9heC1jb250ZW50PlxuICAgICAgPGF4LWNvbW1lbnQtbGlrZSBbbGlrZWRdPVwiZmFsc2VcIj4yPC9heC1jb21tZW50LWxpa2U+XG4gICAgICA8YXgtY29tbWVudC1yZXBseT40PC9heC1jb21tZW50LXJlcGx5PlxuICAgICAgPGF4LWNvbW1lbnQtcmVwbHktdGV4dCAoY2xpY2spPVwicmVwbHlIYW5kbGVyKClcIj48L2F4LWNvbW1lbnQtcmVwbHktdGV4dD5cblxuICAgICAgPGF4LWNvbW1lbnQtaXRlbT5cbiAgICAgICAgPGF4LWF2YXRhciBbY29sb3JdPVwiYXZhdGFyT3B0aW9ucygpLmNvbG9yXCIgW2xvb2tdPVwiYXZhdGFyT3B0aW9ucygpLmxvb2tcIj5cbiAgICAgICAgICA8YXgtaW1hZ2Ugc3JjPVwiaHR0cHM6Ly9pLnByYXZhdGFyLmNjLzMwMFwiPjwvYXgtaW1hZ2U+XG4gICAgICAgIDwvYXgtYXZhdGFyPlxuICAgICAgICA8YXgtdGl0bGU+TWV5c2E8L2F4LXRpdGxlPlxuICAgICAgICA8YXgtY29udGVudD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LiBJdGFxdWUsIG1vbGxpdGlhLjwvYXgtY29udGVudD5cbiAgICAgICAgPGF4LWNvbW1lbnQtbGlrZSBbbGlrZWRdPVwidHJ1ZVwiPjQ8L2F4LWNvbW1lbnQtbGlrZT5cbiAgICAgICAgPGF4LWNvbW1lbnQtcmVwbHk+MzwvYXgtY29tbWVudC1yZXBseT5cbiAgICAgICAgPGF4LWNvbW1lbnQtcmVwbHktdGV4dCAoY2xpY2spPVwicmVwbHlIYW5kbGVyKClcIj48L2F4LWNvbW1lbnQtcmVwbHktdGV4dD5cbiAgICAgIDwvYXgtY29tbWVudC1pdGVtPlxuICAgIDwvYXgtY29tbWVudC1pdGVtPlxuICA8L2F4LWNvbW1lbnQtdmlldz5cblxuICA8YXgtZm9ybT5cbiAgICA8YXgtZm9ybS1maWVsZD5cbiAgICAgIDxheC13eXNpd3lnLWNvbnRhaW5lciBbbG9va109XCJ3eXNpd3lnT3B0aW9ucygpLmxvb2tcIiAobmdNb2RlbENoYW5nZSk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxuICAgICAgICA8YXgtd3lzaXd5Zy12aWV3IGNsYXNzPVwiYXgtbWluLWgtMjhcIj48L2F4LXd5c2l3eWctdmlldz5cbiAgICAgICAgPGF4LXd5c2l3eWctdG9vbGJhcj5cbiAgICAgICAgICA8YXgtd3lzaXd5Zy1oaXN0b3J5PjwvYXgtd3lzaXd5Zy1oaXN0b3J5PlxuICAgICAgICAgIDxheC13eXNpd3lnLWZvbnQtc3R5bGU+PC9heC13eXNpd3lnLWZvbnQtc3R5bGU+XG4gICAgICAgICAgPGF4LXd5c2l3eWctY29sb3JzPjwvYXgtd3lzaXd5Zy1jb2xvcnM+XG4gICAgICAgICAgPGF4LXd5c2l3eWctbGlzdD48L2F4LXd5c2l3eWctbGlzdD5cbiAgICAgICAgICA8YXgtd3lzaXd5Zy1hbGlnbm1lbnQ+PC9heC13eXNpd3lnLWFsaWdubWVudD5cbiAgICAgICAgICA8YXgtd3lzaXd5Zy1pbnNlcnQ+PC9heC13eXNpd3lnLWluc2VydD5cbiAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCIgdGV4dD1cIlNlbmRcIiAob25DbGljayk9XCJzdWJtaXRDb21tZW50KClcIj48L2F4LWJ1dHRvblxuICAgICAgICAgID48L2F4LXN1ZmZpeD5cbiAgICAgICAgPC9heC13eXNpd3lnLXRvb2xiYXI+XG4gICAgICAgIDxheC12YWxpZGF0aW9uLXJ1bGUgcnVsZT1cImNhbGxiYWNrXCIgW29wdGlvbnNdPVwieyB2YWxpZGF0ZTogdmFsaWRhdGVGbiB9XCI+PC9heC12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICA8L2F4LXd5c2l3eWctY29udGFpbmVyPlxuICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgPC9heC1mb3JtPlxuPC9kaXY+XG4iXX0=
@@ -1,3 +0,0 @@
1
- export class AXPCommentService {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQvc3JjL2xpYi9sYXlvdXRzL2VudGl0eS1sYXlvdXRzL2VudGl0eS1tYXN0ZXItc2luZ2xlLXZpZXcvY29tbWVudHMvY29tbWVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQWdCLGlCQUFpQjtDQU90QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBDb21tZW50U2VydmljZSB7XG4gIGFic3RyYWN0IGdldENvbW1lbnRzKHBheWxvYWQ6IGFueSk6IFByb21pc2U8eyBpdGVtczogYW55W107IHRvdGFsQ291bnQ6IG51bWJlciB9PjtcbiAgYWJzdHJhY3QgcG9zdENvbW1lbnQocGF5bG9hZDogYW55KTogUHJvbWlzZTxhbnk+O1xuICBhYnN0cmFjdCByZXBseVRvQ29tbWVudChwYXlsb2FkOiBhbnkpOiBQcm9taXNlPGFueT47XG4gIGFic3RyYWN0IGxpa2VDb21tZW50KGNvbW1lbnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbiAgYWJzdHJhY3QgZGVsZXRlQ29tbWVudChjb21tZW50SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG4gIGFic3RyYWN0IGVkaXRDb21tZW50KHBheWxvYWQ6IGFueSk6IFByb21pc2U8YW55Pjtcbn1cbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-common-rich-text-widget-edit.component-CnH3MjYz.mjs","sources":["../../../../libs/platform/common/src/lib/schema/widgets/rich-text/rich-text-widget-edit.component.ts"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXPWidgetEditBase } from '../../widget/widget-base';\nimport { Component, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'axp-rich-text-widget-edit',\n template: `\n <div class=\"ax-h-max\">\n <div #editor></div>\n </div>\n `,\n standalone: true,\n styleUrl: './rich-text-widget-edit.component.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [AXTextAreaModule, FormsModule, AXDecoratorModule, AXButtonModule, AXFormModule],\n inputs: ['placeholder'],\n})\nexport class AXPRichTextWidgetEditComponent extends AXPWidgetEditBase<string> {\n @ViewChild('editor') editorEl!: ElementRef<HTMLDivElement>;\n editor: any;\n protected placeholder: string = 'Write a text ...';\n\n toolbarOptions = [\n ['bold', 'italic', 'underline', 'strike'],\n ['blockquote', 'code-block'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n [{ script: 'sub' }, { script: 'super' }],\n [{ direction: 'rtl' }],\n [{ size: ['small', false, 'large', 'huge'] }],\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\n [{ color: [] }, { background: [] }],\n [{ font: [] }],\n [{ align: [] }],\n ['clean'],\n ];\n\n async ngAfterViewInit() {\n await this.initEditor();\n if (this.value) {\n this.editor.disable();\n this.editor.clipboard.dangerouslyPasteHTML(this.value, 'api');\n this.editor.enable();\n }\n\n this.editor.on('text-change', () => {\n this.value = this.editor.root.innerHTML;\n });\n }\n\n async initEditor() {\n const q = await import('quill');\n this.editor = new q.default(this.editorEl.nativeElement, {\n theme: 'snow',\n modules: {\n toolbar: this.toolbarOptions,\n },\n scrollingContainer: 'ql-editor',\n placeholder: this.placeholder,\n });\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,100 +0,0 @@
1
- import * as i2$1 from '@acorex/components/button';
2
- import { AXButtonModule } from '@acorex/components/button';
3
- import * as i2 from '@acorex/components/common';
4
- import { AXCommonModule } from '@acorex/components/common';
5
- import * as i1$1 from '@acorex/components/decorators';
6
- import { AXDecoratorModule } from '@acorex/components/decorators';
7
- import { AXBasePageComponent } from '@acorex/components/page';
8
- import * as i7 from '@acorex/components/search-box';
9
- import { AXSearchBoxModule } from '@acorex/components/search-box';
10
- import * as i2$2 from '@acorex/components/tabs';
11
- import { AXTabsModule } from '@acorex/components/tabs';
12
- import { AXPStickyDirective } from '@acorex/platform/common';
13
- import { AXP_WIDGETS_GROUPS } from '@acorex/platform/layout/builder';
14
- import * as i1 from '@angular/common';
15
- import { CommonModule } from '@angular/common';
16
- import * as i0 from '@angular/core';
17
- import { model, signal, computed, Component, ViewEncapsulation } from '@angular/core';
18
- import * as i3 from '@angular/forms';
19
- import { FormsModule } from '@angular/forms';
20
- import { orderBy } from 'lodash-es';
21
-
22
- class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
23
- constructor() {
24
- super(...arguments);
25
- this.searchTerm = model('');
26
- // Signals
27
- this.widgets = [];
28
- this.displayWidgets = signal([]);
29
- // Signal to track selected widgets
30
- this.selectedWidgets = signal([]);
31
- // Computed for filtered and ordered widget list
32
- this.orderedList = computed(() => {
33
- const search = this.searchTerm().toLowerCase();
34
- const selectedTabName = this.selectedTab().name;
35
- return orderBy(this.displayWidgets().filter(w => {
36
- const matchesTab = selectedTabName === 'all' || w.group.name === selectedTabName;
37
- const matchesSearch = !search || w.title.toLowerCase().includes(search) || w.description?.toLowerCase().includes(search);
38
- return matchesTab && matchesSearch;
39
- }), ['pinned', 'title'], ['desc', 'asc']);
40
- });
41
- // Pinned and regular lists
42
- this.pinnedList = computed(() => this.orderedList().filter(c => c.pinned));
43
- this.regularList = computed(() => this.orderedList().filter(c => !c.pinned));
44
- // Tabs for the widget groups
45
- this.tabs = orderBy([{ name: 'all', title: 'All', order: 0 }, ...AXP_WIDGETS_GROUPS], c => c.order);
46
- this.currentTabIndex = signal(0);
47
- this.selectedTab = computed(() => this.tabs[this.currentTabIndex()]);
48
- }
49
- ngOnInit() {
50
- super.ngOnInit();
51
- this.displayWidgets.set(this.widgets.map(c => ({ ...c, pinned: false })));
52
- }
53
- handleTabChange(event) {
54
- const indx = event.index;
55
- if (this.currentTabIndex() != indx) {
56
- this.currentTabIndex.set(indx);
57
- }
58
- }
59
- handleClick(event, widget) {
60
- //this.close({ widgets: [widget] });
61
- if (event.ctrlKey) {
62
- const currentSelection = this.selectedWidgets();
63
- const isAlreadySelected = currentSelection.some(w => w === widget);
64
- if (isAlreadySelected) {
65
- // Deselect widget if already selected
66
- this.selectedWidgets.set(currentSelection.filter(w => w !== widget));
67
- }
68
- else {
69
- // Add widget to selection
70
- this.selectedWidgets.set([...currentSelection, widget]);
71
- }
72
- }
73
- else {
74
- // If CTRL is not pressed, select only the clicked widget
75
- //this.selectedWidgets.set([widget]);
76
- this.close({ widgets: [widget] });
77
- }
78
- }
79
- handlePinClick(e, widget) {
80
- e.stopPropagation();
81
- widget.pinned = !widget.pinned;
82
- this.displayWidgets.set([...this.displayWidgets()]);
83
- }
84
- // Check if a widget is selected
85
- isWidgetSelected(widget) {
86
- return this.selectedWidgets().includes(widget);
87
- }
88
- handleConfirmSelection() {
89
- this.close({ widgets: this.selectedWidgets() });
90
- }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerWidgetPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPDesignerWidgetPickerComponent, isStandalone: true, selector: "ng-component", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: "searchTermChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-flex ax-flex-col lg:ax-h-[75vh]\">\n <div>\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"handleTabChange($event)\">\n @for(w of tabs;track $index)\n {\n <ax-tab-item [text]=\"w.title\" [key]=\"$index.toString()\"\n [active]=\"currentTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-overflow-auto\" #content>\n <div class=\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all \" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-shadow-xl'\" [stickyParent]=\"content\" [stickyOffset]=\"10\">\n <ax-search-box look=\"fill\" placeholder=\"e.g. Button, Text, ...\" [(ngModel)]=\"searchTerm\" [delayTime]=\"300\"\n [axAutoFocus]=\"true\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-pt-0\">\n <ng-template #itemTpl let-w>\n <div (click)=\"handleClick($event,w)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-100 ax-cursor-pointer\"\n [class.ax-bg-primary-100]=\"isWidgetSelected(w)\">\n <div class=\"ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border ax-border-neutral-200 ax-text-neutral-500 ax-bg-neutral-100 group-hover:ax-bg-primary-200\"\n [class.ax-bg-primary-200]=\"isWidgetSelected(w)\">\n <i [ngClass]=\"w.icon\" class=\"ax-text-lg group-hover:ax-text-primary-700\"\n [class.ax-text-primary-700]=\"isWidgetSelected(w)\"></i>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-semibold ax-text-sm\">{{w.title}}</div>\n <div (click)=\"handlePinClick($event,w)\">\n @if (w.pinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-text-neutral-500 ax-rotate-45\"></i>\n }\n @else {\n <i\n class=\"fa-light fa-thumbtack ax-text-sm ax-text-neutral-500 ax-rotate-45 ax-invisible group-hover:ax-visible\"></i>\n }\n </div>\n </div>\n <span class=\"ax-text-xs ax-text-neutral-400 ax-truncate\">\n {{w.description}}\n </span>\n </div>\n </div>\n </ng-template>\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2 \">\n @for(w of pinnedList();track $index)\n {\n <ng-container *ngTemplateOutlet=\"itemTpl;context:{ $implicit: w}\"></ng-container>\n }\n </div>\n @if(pinnedList().length)\n {\n <hr class=\"ax-my-4 ax-border-dashed\">\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2 \">\n @for(w of regularList();track $index)\n {\n <ng-container *ngTemplateOutlet=\"itemTpl;context:{ $implicit: w}\"></ng-container>\n }\n </div>\n </div>\n </div>\n</div>\n@if(selectedWidgets().length)\n{\n<ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"primary\" text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"></ax-button>\n </ax-suffix>\n</ax-footer>\n}", styles: [".selected-widget{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-color-primary-500),var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-primary-100),var(--tw-bg-opacity))}.selected-widget i{--tw-text-opacity: 1;color:rgba(var(--ax-color-primary-500),var(--tw-text-opacity))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i2.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i2$2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i2$2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }], encapsulation: i0.ViewEncapsulation.None }); }
93
- }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerWidgetPickerComponent, decorators: [{
95
- type: Component,
96
- args: [{ standalone: true, imports: [CommonModule, AXCommonModule, FormsModule, AXButtonModule, AXDecoratorModule, AXTabsModule, AXSearchBoxModule, AXPStickyDirective], encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-flex ax-flex-col lg:ax-h-[75vh]\">\n <div>\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"handleTabChange($event)\">\n @for(w of tabs;track $index)\n {\n <ax-tab-item [text]=\"w.title\" [key]=\"$index.toString()\"\n [active]=\"currentTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-overflow-auto\" #content>\n <div class=\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all \" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-shadow-xl'\" [stickyParent]=\"content\" [stickyOffset]=\"10\">\n <ax-search-box look=\"fill\" placeholder=\"e.g. Button, Text, ...\" [(ngModel)]=\"searchTerm\" [delayTime]=\"300\"\n [axAutoFocus]=\"true\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-pt-0\">\n <ng-template #itemTpl let-w>\n <div (click)=\"handleClick($event,w)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-100 ax-cursor-pointer\"\n [class.ax-bg-primary-100]=\"isWidgetSelected(w)\">\n <div class=\"ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border ax-border-neutral-200 ax-text-neutral-500 ax-bg-neutral-100 group-hover:ax-bg-primary-200\"\n [class.ax-bg-primary-200]=\"isWidgetSelected(w)\">\n <i [ngClass]=\"w.icon\" class=\"ax-text-lg group-hover:ax-text-primary-700\"\n [class.ax-text-primary-700]=\"isWidgetSelected(w)\"></i>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-semibold ax-text-sm\">{{w.title}}</div>\n <div (click)=\"handlePinClick($event,w)\">\n @if (w.pinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-text-neutral-500 ax-rotate-45\"></i>\n }\n @else {\n <i\n class=\"fa-light fa-thumbtack ax-text-sm ax-text-neutral-500 ax-rotate-45 ax-invisible group-hover:ax-visible\"></i>\n }\n </div>\n </div>\n <span class=\"ax-text-xs ax-text-neutral-400 ax-truncate\">\n {{w.description}}\n </span>\n </div>\n </div>\n </ng-template>\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2 \">\n @for(w of pinnedList();track $index)\n {\n <ng-container *ngTemplateOutlet=\"itemTpl;context:{ $implicit: w}\"></ng-container>\n }\n </div>\n @if(pinnedList().length)\n {\n <hr class=\"ax-my-4 ax-border-dashed\">\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2 \">\n @for(w of regularList();track $index)\n {\n <ng-container *ngTemplateOutlet=\"itemTpl;context:{ $implicit: w}\"></ng-container>\n }\n </div>\n </div>\n </div>\n</div>\n@if(selectedWidgets().length)\n{\n<ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"primary\" text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"></ax-button>\n </ax-suffix>\n</ax-footer>\n}", styles: [".selected-widget{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-color-primary-500),var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-primary-100),var(--tw-bg-opacity))}.selected-widget i{--tw-text-opacity: 1;color:rgba(var(--ax-color-primary-500),var(--tw-text-opacity))}\n"] }]
97
- }] });
98
-
99
- export { AXPDesignerWidgetPickerComponent };
100
- //# sourceMappingURL=acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs","sources":["../../../../libs/platform/layout/designer/src/lib/designer/components/widget-picker/widget-picker.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/widget-picker/widget-picker.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXPStickyDirective } from '@acorex/platform/common';\nimport { AXP_WIDGETS_GROUPS, AXPWidgetConfig, AXPWidgetGroup } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, model, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { orderBy } from 'lodash-es';\n\n\nexport interface AXPDisplayWidgetConfig extends AXPWidgetConfig {\n pinned: boolean;\n}\n\n\n@Component({\n standalone: true,\n imports: [CommonModule, AXCommonModule, FormsModule, AXButtonModule, AXDecoratorModule, AXTabsModule, AXSearchBoxModule, AXPStickyDirective],\n templateUrl: './widget-picker.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./widget-picker.component.scss'],\n})\nexport class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {\n\n\n protected searchTerm = model('');\n\n // Signals\n private widgets: AXPWidgetConfig[] = [];\n private displayWidgets = signal<AXPDisplayWidgetConfig[]>([]);\n\n // Signal to track selected widgets\n protected selectedWidgets = signal<AXPDisplayWidgetConfig[]>([]);\n\n // Computed for filtered and ordered widget list\n private orderedList = computed(() => {\n const search = this.searchTerm().toLowerCase();\n const selectedTabName = this.selectedTab().name;\n\n return orderBy(\n this.displayWidgets().filter(w => {\n const matchesTab = selectedTabName === 'all' || w.group.name === selectedTabName;\n const matchesSearch = !search || w.title.toLowerCase().includes(search) || w.description?.toLowerCase().includes(search);\n return matchesTab && matchesSearch;\n }),\n ['pinned', 'title'], ['desc', 'asc']\n );\n });\n\n // Pinned and regular lists\n protected pinnedList = computed(() => this.orderedList().filter(c => c.pinned));\n protected regularList = computed(() => this.orderedList().filter(c => !c.pinned));\n\n // Tabs for the widget groups\n protected tabs: AXPWidgetGroup[] = orderBy([{ name: 'all', title: 'All', order: 0 }, ...AXP_WIDGETS_GROUPS], c => c.order);\n protected currentTabIndex = signal(0);\n protected selectedTab = computed(() => this.tabs[this.currentTabIndex()]);\n\n\n protected override ngOnInit(): void {\n super.ngOnInit();\n this.displayWidgets.set(this.widgets.map(c => ({ ...c, pinned: false })))\n }\n\n protected handleTabChange(event: AXTabStripChangedEvent): void {\n const indx = event.index;\n if (this.currentTabIndex() != indx) {\n this.currentTabIndex.set(indx);\n }\n }\n\n protected handleClick(event: MouseEvent, widget: AXPDisplayWidgetConfig) {\n //this.close({ widgets: [widget] });\n if (event.ctrlKey) {\n const currentSelection = this.selectedWidgets();\n const isAlreadySelected = currentSelection.some(w => w === widget);\n\n if (isAlreadySelected) {\n // Deselect widget if already selected\n this.selectedWidgets.set(currentSelection.filter(w => w !== widget));\n } else {\n // Add widget to selection\n this.selectedWidgets.set([...currentSelection, widget]);\n }\n } else {\n // If CTRL is not pressed, select only the clicked widget\n //this.selectedWidgets.set([widget]);\n this.close({ widgets: [widget] });\n }\n }\n\n protected handlePinClick(e: MouseEvent, widget: AXPDisplayWidgetConfig) {\n e.stopPropagation();\n widget.pinned = !widget.pinned;\n this.displayWidgets.set([...this.displayWidgets()]);\n }\n\n // Check if a widget is selected\n protected isWidgetSelected(widget: AXPDisplayWidgetConfig): boolean {\n return this.selectedWidgets().includes(widget);\n }\n\n protected handleConfirmSelection(): void {\n this.close({ widgets: this.selectedWidgets() });\n }\n\n}\n","<div class=\"ax-flex ax-flex-col lg:ax-h-[75vh]\">\n <div>\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"handleTabChange($event)\">\n @for(w of tabs;track $index)\n {\n <ax-tab-item [text]=\"w.title\" [key]=\"$index.toString()\"\n [active]=\"currentTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-overflow-auto\" #content>\n <div class=\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all \" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-shadow-xl'\" [stickyParent]=\"content\" [stickyOffset]=\"10\">\n <ax-search-box look=\"fill\" placeholder=\"e.g. Button, Text, ...\" [(ngModel)]=\"searchTerm\" [delayTime]=\"300\"\n [axAutoFocus]=\"true\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-pt-0\">\n <ng-template #itemTpl let-w>\n <div (click)=\"handleClick($event,w)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-100 ax-cursor-pointer\"\n [class.ax-bg-primary-100]=\"isWidgetSelected(w)\">\n <div class=\"ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border ax-border-neutral-200 ax-text-neutral-500 ax-bg-neutral-100 group-hover:ax-bg-primary-200\"\n [class.ax-bg-primary-200]=\"isWidgetSelected(w)\">\n <i [ngClass]=\"w.icon\" class=\"ax-text-lg group-hover:ax-text-primary-700\"\n [class.ax-text-primary-700]=\"isWidgetSelected(w)\"></i>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-semibold ax-text-sm\">{{w.title}}</div>\n <div (click)=\"handlePinClick($event,w)\">\n @if (w.pinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-text-neutral-500 ax-rotate-45\"></i>\n }\n @else {\n <i\n class=\"fa-light fa-thumbtack ax-text-sm ax-text-neutral-500 ax-rotate-45 ax-invisible group-hover:ax-visible\"></i>\n }\n </div>\n </div>\n <span class=\"ax-text-xs ax-text-neutral-400 ax-truncate\">\n {{w.description}}\n </span>\n </div>\n </div>\n </ng-template>\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2 \">\n @for(w of pinnedList();track $index)\n {\n <ng-container *ngTemplateOutlet=\"itemTpl;context:{ $implicit: w}\"></ng-container>\n }\n </div>\n @if(pinnedList().length)\n {\n <hr class=\"ax-my-4 ax-border-dashed\">\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2 \">\n @for(w of regularList();track $index)\n {\n <ng-container *ngTemplateOutlet=\"itemTpl;context:{ $implicit: w}\"></ng-container>\n }\n </div>\n </div>\n </div>\n</div>\n@if(selectedWidgets().length)\n{\n<ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"primary\" text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"></ax-button>\n </ax-suffix>\n</ax-footer>\n}"],"names":["i5","i6"],"mappings":"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"}