@alauda-fe/crd-form 0.0.1

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 (95) hide show
  1. package/esm2022/alauda-fe-crd-form.mjs +5 -0
  2. package/esm2022/lib/abstract/base-array.mjs +117 -0
  3. package/esm2022/lib/crd-form/component.mjs +334 -0
  4. package/esm2022/lib/crd-form/helper.mjs +32 -0
  5. package/esm2022/lib/crd-form.module.mjs +117 -0
  6. package/esm2022/lib/field-controls/expressions/expression-core.mjs +2 -0
  7. package/esm2022/lib/field-controls/expressions/props-expression.mjs +58 -0
  8. package/esm2022/lib/field-controls/form-item.component.mjs +121 -0
  9. package/esm2022/lib/field-controls/index.mjs +8 -0
  10. package/esm2022/lib/field-controls/module.mjs +141 -0
  11. package/esm2022/lib/field-controls/operand-advanced-field-group.component.mjs +80 -0
  12. package/esm2022/lib/field-controls/operand-array-field-group.component.mjs +112 -0
  13. package/esm2022/lib/field-controls/operand-field-group.component.mjs +98 -0
  14. package/esm2022/lib/field-controls/operand-field.component.mjs +870 -0
  15. package/esm2022/lib/field-controls/widgets/array-table/component.mjs +109 -0
  16. package/esm2022/lib/field-controls/widgets/basic-auth-secret/component.mjs +116 -0
  17. package/esm2022/lib/field-controls/widgets/basic-auth-secret/create/component.mjs +211 -0
  18. package/esm2022/lib/field-controls/widgets/basic-auth-secret/type.mjs +2 -0
  19. package/esm2022/lib/field-controls/widgets/index.mjs +8 -0
  20. package/esm2022/lib/field-controls/widgets/k8s-resource-prefix/component.mjs +169 -0
  21. package/esm2022/lib/field-controls/widgets/k8s-resource-prefix/util.mjs +40 -0
  22. package/esm2022/lib/field-controls/widgets/link/component.mjs +68 -0
  23. package/esm2022/lib/field-controls/widgets/resource-requirements/resource-requirements.component.mjs +524 -0
  24. package/esm2022/lib/field-controls/widgets/utils.mjs +73 -0
  25. package/esm2022/lib/field-controls/widgets/yaml-editor/yaml-editor.component.mjs +94 -0
  26. package/esm2022/lib/field-widgets/htpasswd/component.mjs +35 -0
  27. package/esm2022/lib/field-widgets/htpasswd/form.mjs +171 -0
  28. package/esm2022/lib/field-widgets/htpasswd/index.mjs +4 -0
  29. package/esm2022/lib/field-widgets/htpasswd/module.mjs +54 -0
  30. package/esm2022/lib/field-widgets/index.mjs +2 -0
  31. package/esm2022/lib/remote-widgets/constants.mjs +4 -0
  32. package/esm2022/lib/remote-widgets/index.mjs +4 -0
  33. package/esm2022/lib/remote-widgets/remote-widget.service.mjs +42 -0
  34. package/esm2022/lib/remote-widgets/token.mjs +7 -0
  35. package/esm2022/lib/spec-descriptors/capability/capability.component.mjs +139 -0
  36. package/esm2022/lib/spec-descriptors/capability-list/capability-list.component.mjs +189 -0
  37. package/esm2022/lib/spec-descriptors/index.mjs +4 -0
  38. package/esm2022/lib/spec-descriptors/util.mjs +13 -0
  39. package/esm2022/lib/types/index.mjs +73 -0
  40. package/esm2022/lib/utils/capability.mjs +295 -0
  41. package/esm2022/lib/utils/constant.mjs +22 -0
  42. package/esm2022/lib/utils/directives.mjs +19 -0
  43. package/esm2022/lib/utils/helper.mjs +201 -0
  44. package/esm2022/lib/utils/index.mjs +7 -0
  45. package/esm2022/lib/utils/service-model.mjs +12 -0
  46. package/esm2022/lib/utils/util.mjs +310 -0
  47. package/esm2022/public-api.mjs +13 -0
  48. package/index.d.ts +5 -0
  49. package/lib/abstract/base-array.d.ts +31 -0
  50. package/lib/crd-form/component.d.ts +61 -0
  51. package/lib/crd-form/helper.d.ts +7 -0
  52. package/lib/crd-form.module.d.ts +16 -0
  53. package/lib/field-controls/expressions/expression-core.d.ts +6 -0
  54. package/lib/field-controls/expressions/props-expression.d.ts +36 -0
  55. package/lib/field-controls/form-item.component.d.ts +11 -0
  56. package/lib/field-controls/index.d.ts +7 -0
  57. package/lib/field-controls/module.d.ts +23 -0
  58. package/lib/field-controls/operand-advanced-field-group.component.d.ts +16 -0
  59. package/lib/field-controls/operand-array-field-group.component.d.ts +8 -0
  60. package/lib/field-controls/operand-field-group.component.d.ts +24 -0
  61. package/lib/field-controls/operand-field.component.d.ts +110 -0
  62. package/lib/field-controls/widgets/array-table/component.d.ts +8 -0
  63. package/lib/field-controls/widgets/basic-auth-secret/component.d.ts +26 -0
  64. package/lib/field-controls/widgets/basic-auth-secret/create/component.d.ts +45 -0
  65. package/lib/field-controls/widgets/basic-auth-secret/type.d.ts +11 -0
  66. package/lib/field-controls/widgets/index.d.ts +7 -0
  67. package/lib/field-controls/widgets/k8s-resource-prefix/component.d.ts +35 -0
  68. package/lib/field-controls/widgets/k8s-resource-prefix/util.d.ts +3 -0
  69. package/lib/field-controls/widgets/link/component.d.ts +20 -0
  70. package/lib/field-controls/widgets/resource-requirements/resource-requirements.component.d.ts +88 -0
  71. package/lib/field-controls/widgets/utils.d.ts +17 -0
  72. package/lib/field-controls/widgets/yaml-editor/yaml-editor.component.d.ts +36 -0
  73. package/lib/field-widgets/htpasswd/component.d.ts +9 -0
  74. package/lib/field-widgets/htpasswd/form.d.ts +32 -0
  75. package/lib/field-widgets/htpasswd/index.d.ts +3 -0
  76. package/lib/field-widgets/htpasswd/module.d.ts +13 -0
  77. package/lib/field-widgets/index.d.ts +1 -0
  78. package/lib/remote-widgets/constants.d.ts +3 -0
  79. package/lib/remote-widgets/index.d.ts +3 -0
  80. package/lib/remote-widgets/remote-widget.service.d.ts +28 -0
  81. package/lib/remote-widgets/token.d.ts +3 -0
  82. package/lib/spec-descriptors/capability/capability.component.d.ts +20 -0
  83. package/lib/spec-descriptors/capability-list/capability-list.component.d.ts +34 -0
  84. package/lib/spec-descriptors/index.d.ts +3 -0
  85. package/lib/spec-descriptors/util.d.ts +4 -0
  86. package/lib/types/index.d.ts +122 -0
  87. package/lib/utils/capability.d.ts +54 -0
  88. package/lib/utils/constant.d.ts +12 -0
  89. package/lib/utils/directives.d.ts +9 -0
  90. package/lib/utils/helper.d.ts +61 -0
  91. package/lib/utils/index.d.ts +6 -0
  92. package/lib/utils/service-model.d.ts +44 -0
  93. package/lib/utils/util.d.ts +48 -0
  94. package/package.json +30 -0
  95. package/public-api.d.ts +9 -0
@@ -0,0 +1,169 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { K8sApiService, ObservableInput, skipError, TOKEN_RESOURCE_DEFINITIONS, ValueHook, } from '@alauda-fe/common';
3
+ import { ChangeDetectionStrategy, Component, Inject, Injector, Input, } from '@angular/core';
4
+ import { isEmpty } from 'lodash-es';
5
+ import { BaseResourceFormComponent } from 'ng-resource-form-util';
6
+ import { BehaviorSubject, map, Observable, pluck, switchMap, tap } from 'rxjs';
7
+ import { CrdFormComponent } from '../../../crd-form/component';
8
+ import { getK8sResourcePrefixOptions } from '../../../utils';
9
+ import { findResourceType } from './util';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@alauda-fe/common";
12
+ import * as i2 from "../../../crd-form/component";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "@angular/forms";
15
+ import * as i5 from "@alauda/ui";
16
+ function K8sResourcePrefixComponent_ng_container_0_aui_option_3_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelementStart(0, "aui-option", 5);
18
+ i0.ɵɵpipe(1, "aclName");
19
+ i0.ɵɵpipe(2, "aclName");
20
+ i0.ɵɵtext(3);
21
+ i0.ɵɵpipe(4, "aclName");
22
+ i0.ɵɵelementEnd();
23
+ } if (rf & 2) {
24
+ const item_r1 = ctx.$implicit;
25
+ i0.ɵɵproperty("value", i0.ɵɵpipeBind1(1, 3, item_r1))("label", i0.ɵɵpipeBind1(2, 5, item_r1));
26
+ i0.ɵɵadvance(3);
27
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, item_r1), " ");
28
+ } }
29
+ function K8sResourcePrefixComponent_ng_container_0_ng_container_5_aui_tag_1_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "aui-tag", 7);
31
+ i0.ɵɵtext(1);
32
+ i0.ɵɵelementEnd();
33
+ } if (rf & 2) {
34
+ const tag_r2 = ctx.$implicit;
35
+ i0.ɵɵproperty("border", true)("auiTooltip", tag_r2);
36
+ i0.ɵɵadvance();
37
+ i0.ɵɵtextInterpolate1(" ", tag_r2, " ");
38
+ } }
39
+ function K8sResourcePrefixComponent_ng_container_0_ng_container_5_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementContainerStart(0);
41
+ i0.ɵɵtemplate(1, K8sResourcePrefixComponent_ng_container_0_ng_container_5_aui_tag_1_Template, 2, 3, "aui-tag", 6);
42
+ i0.ɵɵelementContainerEnd();
43
+ } if (rf & 2) {
44
+ const ctx_r2 = i0.ɵɵnextContext(2);
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵproperty("ngForOf", ctx_r2.form.value);
47
+ } }
48
+ function K8sResourcePrefixComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelementContainerStart(0);
50
+ i0.ɵɵelementStart(1, "aui-multi-select", 2);
51
+ i0.ɵɵpipe(2, "async");
52
+ i0.ɵɵtemplate(3, K8sResourcePrefixComponent_ng_container_0_aui_option_3_Template, 5, 9, "aui-option", 3);
53
+ i0.ɵɵpipe(4, "async");
54
+ i0.ɵɵelementEnd();
55
+ i0.ɵɵtemplate(5, K8sResourcePrefixComponent_ng_container_0_ng_container_5_Template, 2, 1, "ng-container", 4);
56
+ i0.ɵɵelementContainerEnd();
57
+ } if (rf & 2) {
58
+ const ctx_r2 = i0.ɵɵnextContext();
59
+ i0.ɵɵadvance();
60
+ i0.ɵɵproperty("formControl", ctx_r2.form)("hidden", ctx_r2.readonly || !i0.ɵɵpipeBind1(2, 5, ctx_r2.init$$))("maxRowCount", 3);
61
+ i0.ɵɵadvance(2);
62
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(4, 7, ctx_r2.resources$));
63
+ i0.ɵɵadvance(2);
64
+ i0.ɵɵproperty("ngIf", ctx_r2.readonly);
65
+ } }
66
+ function K8sResourcePrefixComponent_ng_template_2_aui_option_1_Template(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵelementStart(0, "aui-option", 5);
68
+ i0.ɵɵpipe(1, "aclName");
69
+ i0.ɵɵpipe(2, "aclName");
70
+ i0.ɵɵtext(3);
71
+ i0.ɵɵpipe(4, "aclName");
72
+ i0.ɵɵelementEnd();
73
+ } if (rf & 2) {
74
+ const item_r4 = ctx.$implicit;
75
+ i0.ɵɵproperty("value", i0.ɵɵpipeBind1(1, 3, item_r4))("label", i0.ɵɵpipeBind1(2, 5, item_r4));
76
+ i0.ɵɵadvance(3);
77
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, item_r4), " ");
78
+ } }
79
+ function K8sResourcePrefixComponent_ng_template_2_span_6_Template(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵelementStart(0, "span");
81
+ i0.ɵɵtext(1);
82
+ i0.ɵɵelementEnd();
83
+ } if (rf & 2) {
84
+ const ctx_r2 = i0.ɵɵnextContext(2);
85
+ i0.ɵɵadvance();
86
+ i0.ɵɵtextInterpolate(ctx_r2.form.value);
87
+ } }
88
+ function K8sResourcePrefixComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵelementStart(0, "aui-select", 8);
90
+ i0.ɵɵtemplate(1, K8sResourcePrefixComponent_ng_template_2_aui_option_1_Template, 5, 9, "aui-option", 3);
91
+ i0.ɵɵpipe(2, "async");
92
+ i0.ɵɵelementStart(3, "aui-option-placeholder");
93
+ i0.ɵɵtext(4);
94
+ i0.ɵɵpipe(5, "translate");
95
+ i0.ɵɵelementEnd()();
96
+ i0.ɵɵtemplate(6, K8sResourcePrefixComponent_ng_template_2_span_6_Template, 2, 1, "span", 4);
97
+ } if (rf & 2) {
98
+ const ctx_r2 = i0.ɵɵnextContext();
99
+ i0.ɵɵproperty("formControl", ctx_r2.form)("hidden", ctx_r2.readonly);
100
+ i0.ɵɵadvance();
101
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 5, ctx_r2.resources$));
102
+ i0.ɵɵadvance(3);
103
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 7, "no_data"));
104
+ i0.ɵɵadvance(2);
105
+ i0.ɵɵproperty("ngIf", ctx_r2.readonly);
106
+ } }
107
+ export class K8sResourcePrefixComponent extends BaseResourceFormComponent {
108
+ constructor(injector, k8sApi, crdForm, resourceDefinitions) {
109
+ super(injector);
110
+ this.k8sApi = k8sApi;
111
+ this.crdForm = crdForm;
112
+ this.resourceDefinitions = resourceDefinitions;
113
+ this.init$$ = new BehaviorSubject(false);
114
+ this.readonly = false;
115
+ this.options$ = this.field$.pipe(map(field => getK8sResourcePrefixOptions(field)));
116
+ this.resources$ = this.options$.pipe(switchMap(option => this.k8sApi[option.isGlobal ? 'getGlobalResourceList' : 'getResourceList']({
117
+ type: findResourceType(option.type, this.resourceDefinitions),
118
+ ...(option.namespaced
119
+ ? option.isGlobal
120
+ ? { namespaced: true }
121
+ : { namespace: this.crdForm?.formContext?.namespace }
122
+ : null),
123
+ ...(!option.isGlobal && {
124
+ cluster: this.crdForm?.formContext?.cluster,
125
+ }),
126
+ ...(option.labelSelector && {
127
+ queryParams: { labelSelector: option.labelSelector },
128
+ }),
129
+ }).pipe(pluck('items'))), skipError(), tap(() => this.init$$.next(true)));
130
+ }
131
+ createForm() {
132
+ return this.fb.control(null);
133
+ }
134
+ static { this.ɵfac = function K8sResourcePrefixComponent_Factory(t) { return new (t || K8sResourcePrefixComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.K8sApiService), i0.ɵɵdirectiveInject(i2.CrdFormComponent), i0.ɵɵdirectiveInject(TOKEN_RESOURCE_DEFINITIONS)); }; }
135
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: K8sResourcePrefixComponent, selectors: [["acl-crd-resource-prefix"]], inputs: { field: "field", readonly: "readonly", formErrors: "formErrors" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [["singleSelect", ""], [4, "ngIf", "ngIfElse"], [1, "select", 3, "formControl", "hidden", "maxRowCount"], [3, "value", "label", 4, "ngFor", "ngForOf"], [4, "ngIf"], [3, "value", "label"], ["type", "info", "size", "mini", 3, "border", "auiTooltip", 4, "ngFor", "ngForOf"], ["type", "info", "size", "mini", 3, "border", "auiTooltip"], [1, "select", 3, "formControl", "hidden"]], template: function K8sResourcePrefixComponent_Template(rf, ctx) { if (rf & 1) {
136
+ i0.ɵɵtemplate(0, K8sResourcePrefixComponent_ng_container_0_Template, 6, 9, "ng-container", 1);
137
+ i0.ɵɵpipe(1, "async");
138
+ i0.ɵɵtemplate(2, K8sResourcePrefixComponent_ng_template_2_Template, 7, 9, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
139
+ } if (rf & 2) {
140
+ let tmp_1_0;
141
+ const singleSelect_r5 = i0.ɵɵreference(3);
142
+ i0.ɵɵproperty("ngIf", (tmp_1_0 = i0.ɵɵpipeBind1(1, 2, ctx.options$)) == null ? null : tmp_1_0.multiple)("ngIfElse", singleSelect_r5);
143
+ } }, dependencies: [i3.NgForOf, i3.NgIf, i4.NgControlStatus, i4.FormControlDirective, i5.SelectComponent, i5.OptionComponent, i5.OptionPlaceholderComponent, i5.MultiSelectComponent, i5.TagComponent, i5.TooltipDirective, i1.E2eAttributeBindingDirective, i3.AsyncPipe, i1.TranslatePipe, i1.K8sNamePipe], styles: ["[_nghost-%COMP%]{flex:1}.select[_ngcontent-%COMP%]{display:block}"], changeDetection: 0 }); }
144
+ }
145
+ __decorate([
146
+ ObservableInput(),
147
+ __metadata("design:type", Observable)
148
+ ], K8sResourcePrefixComponent.prototype, "field$", void 0);
149
+ __decorate([
150
+ ValueHook(function (formErrors) {
151
+ this.form?.setErrors(isEmpty(formErrors) ? null : formErrors);
152
+ }),
153
+ __metadata("design:type", Object)
154
+ ], K8sResourcePrefixComponent.prototype, "formErrors", void 0);
155
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sResourcePrefixComponent, [{
156
+ type: Component,
157
+ args: [{ selector: 'acl-crd-resource-prefix', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"(options$ | async)?.multiple; else singleSelect\">\n <aui-multi-select\n class=\"select\"\n [formControl]=\"form\"\n [hidden]=\"readonly || !(init$$ | async)\"\n [maxRowCount]=\"3\"\n >\n <aui-option\n *ngFor=\"let item of resources$ | async\"\n [value]=\"item | aclName\"\n [label]=\"item | aclName\"\n >\n {{ item | aclName }}\n </aui-option>\n </aui-multi-select>\n <ng-container *ngIf=\"readonly\">\n <aui-tag\n *ngFor=\"let tag of $any(form.value); let ind = index\"\n type=\"info\"\n size=\"mini\"\n [border]=\"true\"\n [auiTooltip]=\"tag\"\n >\n {{ tag }}\n </aui-tag>\n </ng-container>\n</ng-container>\n<ng-template #singleSelect>\n <aui-select\n [formControl]=\"form\"\n class=\"select\"\n [hidden]=\"readonly\"\n >\n <aui-option\n *ngFor=\"let item of resources$ | async\"\n [value]=\"item | aclName\"\n [label]=\"item | aclName\"\n >\n {{ item | aclName }}\n </aui-option>\n <aui-option-placeholder>{{ 'no_data' | translate }}</aui-option-placeholder>\n </aui-select>\n <span *ngIf=\"readonly\">{{ form.value }}</span>\n</ng-template>\n", styles: [":host{flex:1}.select{display:block}\n"] }]
158
+ }], () => [{ type: i0.Injector }, { type: i1.K8sApiService }, { type: i2.CrdFormComponent }, { type: undefined, decorators: [{
159
+ type: Inject,
160
+ args: [TOKEN_RESOURCE_DEFINITIONS]
161
+ }] }], { field: [{
162
+ type: Input
163
+ }], field$: [], readonly: [{
164
+ type: Input
165
+ }], formErrors: [{
166
+ type: Input
167
+ }] }); })();
168
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(K8sResourcePrefixComponent, { className: "K8sResourcePrefixComponent", filePath: "lib/field-controls/widgets/k8s-resource-prefix/component.ts", lineNumber: 32 }); })();
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmQtZm9ybS9zcmMvbGliL2ZpZWxkLWNvbnRyb2xzL3dpZGdldHMvazhzLXJlc291cmNlLXByZWZpeC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyZC1mb3JtL3NyYy9saWIvZmllbGQtY29udHJvbHMvd2lkZ2V0cy9rOHMtcmVzb3VyY2UtcHJlZml4L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxhQUFhLEVBRWIsZUFBZSxFQUNmLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsU0FBUyxHQUNWLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7OztJQ2hCdEMscUNBSUM7OztJQUNDLFlBQ0Y7O0lBQUEsaUJBQWE7OztJQUhYLEFBREEscURBQXdCLHdDQUNBO0lBRXhCLGVBQ0Y7SUFERSw4REFDRjs7O0lBR0Esa0NBTUM7SUFDQyxZQUNGO0lBQUEsaUJBQVU7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LFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7MkZBM0RVLDBCQUEwQiw2SUFLM0IsMEJBQTBCO29FQUx6QiwwQkFBMEI7WUMvQnZDLDZGQUFzRTs7WUEyQnRFLDRIQUEyQjs7OztZQTNCd0IsQUFBcEMsdUdBQW9DLDZCQUFpQjs7O0FEZ0RsRTtJQURDLGVBQWUsRUFBRTs4QkFDVCxVQUFVOzBEQUFlO0FBYWxDO0lBSkMsU0FBUyxDQUFDLFVBQVUsVUFBc0I7UUFDekMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQzs7OERBRXFCO2lGQTlCWiwwQkFBMEI7Y0FOdEMsU0FBUzsyQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU07O3NCQU81QyxNQUFNO3VCQUFDLDBCQUEwQjtxQkFTcEMsS0FBSztrQkFESixLQUFLO1lBSU4sTUFBTSxNQUdOLFFBQVE7a0JBRFAsS0FBSztZQVdOLFVBQVU7a0JBRFQsS0FBSzs7a0ZBN0JLLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEs4c0FwaVNlcnZpY2UsXG4gIEs4c1Jlc291cmNlRGVmaW5pdGlvbnMsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgc2tpcEVycm9yLFxuICBUT0tFTl9SRVNPVVJDRV9ERUZJTklUSU9OUyxcbiAgVmFsdWVIb29rLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1Db21wb25lbnQgfSBmcm9tICduZy1yZXNvdXJjZS1mb3JtLXV0aWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHBsdWNrLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDcmRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY3JkLWZvcm0vY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1FcnJvcnMsIE9wZXJhbmRGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGdldEs4c1Jlc291cmNlUHJlZml4T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxuaW1wb3J0IHsgZmluZFJlc291cmNlVHlwZSB9IGZyb20gJy4vdXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1jcmQtcmVzb3VyY2UtcHJlZml4JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNSZXNvdXJjZVByZWZpeENvbXBvbmVudCBleHRlbmRzIEJhc2VSZXNvdXJjZUZvcm1Db21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmRGb3JtOiBDcmRGb3JtQ29tcG9uZW50LFxuICAgIEBJbmplY3QoVE9LRU5fUkVTT1VSQ0VfREVGSU5JVElPTlMpXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZURlZmluaXRpb25zOiBLOHNSZXNvdXJjZURlZmluaXRpb25zLFxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBpbml0JCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBmaWVsZDogT3BlcmFuZEZpZWxkO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBmaWVsZCQhOiBPYnNlcnZhYmxlPE9wZXJhbmRGaWVsZD47XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICAvKipcbiAgICogY3JkLWZvcm0g55qEIGVycm9yU3RhdGUg5piv55Sx5YWo5bGA55qEIEZvcm1FcnJvciDlr7nosaHlu7rnq4vnmoTvvIzkuLrmu6HotrPljZXkuIDmlbDmja7mupDnmoTorr7orqHvvIzoh6rlrprkuYkgd2lkZ2V0IOeahCBlcnJvciDlj6/ku6XnlLHlpJbpg6jkvKDlhaXvvIxcbiAgICog5omA5pyJ55qEIHZhbGlkYXRpb24g5ZyoIGZpZWxkIOe6p+WIq+agoemqjO+8jHdpZGdldCDlj6rpnIDopoHlnKjlhbPlv4PmoKHpqozlpLHotKXml7bov5vooYzlkIjnkIblsZXnpLpcbiAgICovXG4gIEBWYWx1ZUhvb2soZnVuY3Rpb24gKGZvcm1FcnJvcnM6IEZvcm1FcnJvcnMpIHtcbiAgICB0aGlzLmZvcm0/LnNldEVycm9ycyhpc0VtcHR5KGZvcm1FcnJvcnMpID8gbnVsbCA6IGZvcm1FcnJvcnMpO1xuICB9KVxuICBASW5wdXQoKVxuICBmb3JtRXJyb3JzOiBGb3JtRXJyb3JzO1xuXG4gIG9wdGlvbnMkID0gdGhpcy5maWVsZCQucGlwZShtYXAoZmllbGQgPT4gZ2V0SzhzUmVzb3VyY2VQcmVmaXhPcHRpb25zKGZpZWxkKSkpO1xuXG4gIHJlc291cmNlcyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKG9wdGlvbiA9PlxuICAgICAgdGhpcy5rOHNBcGlbXG4gICAgICAgIG9wdGlvbi5pc0dsb2JhbCA/ICdnZXRHbG9iYWxSZXNvdXJjZUxpc3QnIDogJ2dldFJlc291cmNlTGlzdCdcbiAgICAgIF0oe1xuICAgICAgICB0eXBlOiBmaW5kUmVzb3VyY2VUeXBlKG9wdGlvbi50eXBlLCB0aGlzLnJlc291cmNlRGVmaW5pdGlvbnMpLFxuICAgICAgICAuLi4ob3B0aW9uLm5hbWVzcGFjZWRcbiAgICAgICAgICA/IG9wdGlvbi5pc0dsb2JhbFxuICAgICAgICAgICAgPyB7IG5hbWVzcGFjZWQ6IHRydWUgfVxuICAgICAgICAgICAgOiB7IG5hbWVzcGFjZTogdGhpcy5jcmRGb3JtPy5mb3JtQ29udGV4dD8ubmFtZXNwYWNlIH1cbiAgICAgICAgICA6IG51bGwpLFxuICAgICAgICAuLi4oIW9wdGlvbi5pc0dsb2JhbCAmJiB7XG4gICAgICAgICAgY2x1c3RlcjogdGhpcy5jcmRGb3JtPy5mb3JtQ29udGV4dD8uY2x1c3RlcixcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihvcHRpb24ubGFiZWxTZWxlY3RvciAmJiB7XG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsgbGFiZWxTZWxlY3Rvcjogb3B0aW9uLmxhYmVsU2VsZWN0b3IgfSxcbiAgICAgICAgfSksXG4gICAgICB9KS5waXBlKHBsdWNrKCdpdGVtcycpKSxcbiAgICApLFxuICAgIHNraXBFcnJvcigpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmluaXQkJC5uZXh0KHRydWUpKSxcbiAgKTtcblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2wobnVsbCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIob3B0aW9ucyQgfCBhc3luYyk/Lm11bHRpcGxlOyBlbHNlIHNpbmdsZVNlbGVjdFwiPlxuICA8YXVpLW11bHRpLXNlbGVjdFxuICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybVwiXG4gICAgW2hpZGRlbl09XCJyZWFkb25seSB8fCAhKGluaXQkJCB8IGFzeW5jKVwiXG4gICAgW21heFJvd0NvdW50XT1cIjNcIlxuICA+XG4gICAgPGF1aS1vcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlc291cmNlcyQgfCBhc3luY1wiXG4gICAgICBbdmFsdWVdPVwiaXRlbSB8IGFjbE5hbWVcIlxuICAgICAgW2xhYmVsXT1cIml0ZW0gfCBhY2xOYW1lXCJcbiAgICA+XG4gICAgICB7eyBpdGVtIHwgYWNsTmFtZSB9fVxuICAgIDwvYXVpLW9wdGlvbj5cbiAgPC9hdWktbXVsdGktc2VsZWN0PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVhZG9ubHlcIj5cbiAgICA8YXVpLXRhZ1xuICAgICAgKm5nRm9yPVwibGV0IHRhZyBvZiAkYW55KGZvcm0udmFsdWUpOyBsZXQgaW5kID0gaW5kZXhcIlxuICAgICAgdHlwZT1cImluZm9cIlxuICAgICAgc2l6ZT1cIm1pbmlcIlxuICAgICAgW2JvcmRlcl09XCJ0cnVlXCJcbiAgICAgIFthdWlUb29sdGlwXT1cInRhZ1wiXG4gICAgPlxuICAgICAge3sgdGFnIH19XG4gICAgPC9hdWktdGFnPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNzaW5nbGVTZWxlY3Q+XG4gIDxhdWktc2VsZWN0XG4gICAgW2Zvcm1Db250cm9sXT1cImZvcm1cIlxuICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICBbaGlkZGVuXT1cInJlYWRvbmx5XCJcbiAgPlxuICAgIDxhdWktb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZXNvdXJjZXMkIHwgYXN5bmNcIlxuICAgICAgW3ZhbHVlXT1cIml0ZW0gfCBhY2xOYW1lXCJcbiAgICAgIFtsYWJlbF09XCJpdGVtIHwgYWNsTmFtZVwiXG4gICAgPlxuICAgICAge3sgaXRlbSB8IGFjbE5hbWUgfX1cbiAgICA8L2F1aS1vcHRpb24+XG4gICAgPGF1aS1vcHRpb24tcGxhY2Vob2xkZXI+e3sgJ25vX2RhdGEnIHwgdHJhbnNsYXRlIH19PC9hdWktb3B0aW9uLXBsYWNlaG9sZGVyPlxuICA8L2F1aS1zZWxlY3Q+XG4gIDxzcGFuICpuZ0lmPVwicmVhZG9ubHlcIj57eyBmb3JtLnZhbHVlIH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ export function findResourceType(type, definitions) {
2
+ type = plural(type.toLowerCase());
3
+ return Object.entries(definitions).find(([_k, v]) => v.type === type)?.[0];
4
+ }
5
+ export function plural(word) {
6
+ const plural = {
7
+ '(quiz)$': '$1zes',
8
+ '^(ox)$': '$1en',
9
+ '([m|l])ouse$': '$1ice',
10
+ // cspell:disable-next-line
11
+ '(matr|vert|ind)ix|ex$': '$1ices',
12
+ '(x|ch|ss|sh)$': '$1es',
13
+ // cspell:disable-next-line
14
+ '([^aeiouy]|qu)y$': '$1ies',
15
+ '(hive)$': '$1s',
16
+ '(?:([^f])fe|([lr])f)$': '$1$2ves',
17
+ // cspell:disable-next-line
18
+ '(shea|lea|loa|thie)f$': '$1ves',
19
+ sis$: 'ses',
20
+ '([ti])um$': '$1a',
21
+ // cspell:disable-next-line
22
+ '(tomat|potat|ech|her|vet)o$': '$1oes',
23
+ '(bu)s$': '$1ses',
24
+ '(alias)$': '$1es',
25
+ // cspell:disable-next-line
26
+ '(octop)us$': '$1i',
27
+ '(ax|test)is$': '$1es',
28
+ '(us)$': '$1es',
29
+ '([^s]+)$': '$1s',
30
+ };
31
+ // check for matches using regular expressions
32
+ Object.keys(plural).forEach(reg => {
33
+ const pattern = new RegExp(reg, 'i');
34
+ if (pattern.test(word)) {
35
+ word = word.replace(pattern, plural[reg]);
36
+ }
37
+ });
38
+ return word;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY3JkLWZvcm0vc3JjL2xpYi9maWVsZC1jb250cm9scy93aWRnZXRzL2s4cy1yZXNvdXJjZS1wcmVmaXgvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQVksRUFDWixXQUFtQztJQUVuQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLElBQVk7SUFDakMsTUFBTSxNQUFNLEdBQThCO1FBQ3hDLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLGNBQWMsRUFBRSxPQUFPO1FBQ3ZCLDJCQUEyQjtRQUMzQix1QkFBdUIsRUFBRSxRQUFRO1FBQ2pDLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLDJCQUEyQjtRQUMzQixrQkFBa0IsRUFBRSxPQUFPO1FBQzNCLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLHVCQUF1QixFQUFFLFNBQVM7UUFDbEMsMkJBQTJCO1FBQzNCLHVCQUF1QixFQUFFLE9BQU87UUFDaEMsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztRQUNsQiwyQkFBMkI7UUFDM0IsNkJBQTZCLEVBQUUsT0FBTztRQUN0QyxRQUFRLEVBQUUsT0FBTztRQUNqQixVQUFVLEVBQUUsTUFBTTtRQUNsQiwyQkFBMkI7UUFDM0IsWUFBWSxFQUFFLEtBQUs7UUFDbkIsY0FBYyxFQUFFLE1BQU07UUFDdEIsT0FBTyxFQUFFLE1BQU07UUFDZixVQUFVLEVBQUUsS0FBSztLQUNsQixDQUFDO0lBQ0YsOENBQThDO0lBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSzhzUmVzb3VyY2VEZWZpbml0aW9ucyB9IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRSZXNvdXJjZVR5cGUoXG4gIHR5cGU6IHN0cmluZyxcbiAgZGVmaW5pdGlvbnM6IEs4c1Jlc291cmNlRGVmaW5pdGlvbnMsXG4pIHtcbiAgdHlwZSA9IHBsdXJhbCh0eXBlLnRvTG93ZXJDYXNlKCkpO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZGVmaW5pdGlvbnMpLmZpbmQoKFtfaywgdl0pID0+IHYudHlwZSA9PT0gdHlwZSk/LlswXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsdXJhbCh3b3JkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwbHVyYWw6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgJyhxdWl6KSQnOiAnJDF6ZXMnLFxuICAgICdeKG94KSQnOiAnJDFlbicsXG4gICAgJyhbbXxsXSlvdXNlJCc6ICckMWljZScsXG4gICAgLy8gY3NwZWxsOmRpc2FibGUtbmV4dC1saW5lXG4gICAgJyhtYXRyfHZlcnR8aW5kKWl4fGV4JCc6ICckMWljZXMnLFxuICAgICcoeHxjaHxzc3xzaCkkJzogJyQxZXMnLFxuICAgIC8vIGNzcGVsbDpkaXNhYmxlLW5leHQtbGluZVxuICAgICcoW15hZWlvdXldfHF1KXkkJzogJyQxaWVzJyxcbiAgICAnKGhpdmUpJCc6ICckMXMnLFxuICAgICcoPzooW15mXSlmZXwoW2xyXSlmKSQnOiAnJDEkMnZlcycsXG4gICAgLy8gY3NwZWxsOmRpc2FibGUtbmV4dC1saW5lXG4gICAgJyhzaGVhfGxlYXxsb2F8dGhpZSlmJCc6ICckMXZlcycsXG4gICAgc2lzJDogJ3NlcycsXG4gICAgJyhbdGldKXVtJCc6ICckMWEnLFxuICAgIC8vIGNzcGVsbDpkaXNhYmxlLW5leHQtbGluZVxuICAgICcodG9tYXR8cG90YXR8ZWNofGhlcnx2ZXQpbyQnOiAnJDFvZXMnLFxuICAgICcoYnUpcyQnOiAnJDFzZXMnLFxuICAgICcoYWxpYXMpJCc6ICckMWVzJyxcbiAgICAvLyBjc3BlbGw6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAnKG9jdG9wKXVzJCc6ICckMWknLFxuICAgICcoYXh8dGVzdClpcyQnOiAnJDFlcycsXG4gICAgJyh1cykkJzogJyQxZXMnLFxuICAgICcoW15zXSspJCc6ICckMXMnLFxuICB9O1xuICAvLyBjaGVjayBmb3IgbWF0Y2hlcyB1c2luZyByZWd1bGFyIGV4cHJlc3Npb25zXG4gIE9iamVjdC5rZXlzKHBsdXJhbCkuZm9yRWFjaChyZWcgPT4ge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKHJlZywgJ2knKTtcbiAgICBpZiAocGF0dGVybi50ZXN0KHdvcmQpKSB7XG4gICAgICB3b3JkID0gd29yZC5yZXBsYWNlKHBhdHRlcm4sIHBsdXJhbFtyZWddKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gd29yZDtcbn1cbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { IconModule } from '@alauda/ui';
2
+ import { createNestedFormControl, SanitizePipe } from '@alauda-fe/common';
3
+ import { NgIf } from '@angular/common';
4
+ import { ChangeDetectionStrategy, Component, Input, forwardRef, } from '@angular/core';
5
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import { SpecCapability } from '../../../types';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@alauda/ui";
9
+ function LinkComponent_aui_icon_4_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelement(0, "aui-icon", 2);
11
+ } }
12
+ export function isLink(field) {
13
+ const { capabilities } = field;
14
+ return capabilities.some(c => c.startsWith(`${SpecCapability.text}:link`));
15
+ }
16
+ /**
17
+ * 获取链接参数
18
+ *
19
+ * @see https://jira.alauda.cn/browse/ACP-32703
20
+ */
21
+ export function resolveLinkOptions(field) {
22
+ const linkCapability = field.capabilities.find(capability => capability.startsWith(SpecCapability.text));
23
+ const target = linkCapability?.split(`${SpecCapability.text}:link:`)?.[1];
24
+ return { target: target || '_blank' };
25
+ }
26
+ export class LinkComponent extends createNestedFormControl({
27
+ autoEmitChange: true,
28
+ }) {
29
+ get options() {
30
+ return resolveLinkOptions(this.field);
31
+ }
32
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵLinkComponent_BaseFactory; return function LinkComponent_Factory(t) { return (ɵLinkComponent_BaseFactory || (ɵLinkComponent_BaseFactory = i0.ɵɵgetInheritedFactory(LinkComponent)))(t || LinkComponent); }; })(); }
33
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LinkComponent, selectors: [["acl-crd-link"]], inputs: { field: "field" }, standalone: true, features: [i0.ɵɵProvidersFeature([
34
+ {
35
+ provide: NG_VALUE_ACCESSOR,
36
+ useExisting: forwardRef(() => LinkComponent),
37
+ multi: true,
38
+ },
39
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 7, consts: [[3, "href", "target"], ["icon", "jump", "margin", "left", 4, "ngIf"], ["icon", "jump", "margin", "left"]], template: function LinkComponent_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementStart(0, "a", 0);
41
+ i0.ɵɵpipe(1, "aclSanitize");
42
+ i0.ɵɵelementStart(2, "span");
43
+ i0.ɵɵtext(3);
44
+ i0.ɵɵelementEnd();
45
+ i0.ɵɵtemplate(4, LinkComponent_aui_icon_4_Template, 1, 0, "aui-icon", 1);
46
+ i0.ɵɵelementEnd();
47
+ } if (rf & 2) {
48
+ i0.ɵɵproperty("href", i0.ɵɵpipeBind2(1, 4, ctx.model, "url"), i0.ɵɵsanitizeUrl)("target", ctx.options.target);
49
+ i0.ɵɵadvance(3);
50
+ i0.ɵɵtextInterpolate(ctx.model);
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵproperty("ngIf", ctx.options.target === "_blank");
53
+ } }, dependencies: [IconModule, i1.IconComponent, SanitizePipe, NgIf], encapsulation: 2, changeDetection: 0 }); }
54
+ }
55
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LinkComponent, [{
56
+ type: Component,
57
+ args: [{ standalone: true, selector: 'acl-crd-link', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
58
+ {
59
+ provide: NG_VALUE_ACCESSOR,
60
+ useExisting: forwardRef(() => LinkComponent),
61
+ multi: true,
62
+ },
63
+ ], imports: [IconModule, SanitizePipe, NgIf], template: "<a\n [href]=\"model | aclSanitize: 'url'\"\n [target]=\"options.target\"\n>\n <span>{{ model }}</span\n ><aui-icon\n *ngIf=\"options.target === '_blank'\"\n icon=\"jump\"\n margin=\"left\"\n >\n </aui-icon>\n</a>\n" }]
64
+ }], null, { field: [{
65
+ type: Input
66
+ }] }); })();
67
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LinkComponent, { className: "LinkComponent", filePath: "lib/field-controls/widgets/link/component.ts", lineNumber: 51 }); })();
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jcmQtZm9ybS9zcmMvbGliL2ZpZWxkLWNvbnRyb2xzL3dpZGdldHMvbGluay9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyZC1mb3JtL3NyYy9saWIvZmllbGQtY29udHJvbHMvd2lkZ2V0cy9saW5rL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFnQixjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztJQ04zRCw4QkFLVTs7QURPYixNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQW1CO0lBQ3hDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDL0IsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBbUI7SUFDcEQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDMUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQzNDLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxjQUFjLEVBQUUsS0FBSyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxRQUFRLEVBQWlCLENBQUM7QUFDdkQsQ0FBQztBQWdCRCxNQUFNLE9BQU8sYUFBYyxTQUFRLHVCQUF1QixDQUFTO0lBQ2pFLGNBQWMsRUFBRSxJQUFJO0NBQ3JCLENBQUM7SUFJQSxJQUFJLE9BQU87UUFDVCxPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO3dOQVJVLGFBQWEsU0FBYixhQUFhO29FQUFiLGFBQWEsZ0hBVGI7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQzVDLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7WUMvQ0gsNEJBR0M7O1lBQ0MsNEJBQU07WUFBQSxZQUFXO1lBQUEsaUJBQ2hCO1lBQUEsd0VBSUE7WUFFSCxpQkFBSTs7WUFURixBQURBLCtFQUFtQyw4QkFDVjtZQUVuQixlQUFXO1lBQVgsK0JBQVc7WUFFZCxjQUFpQztZQUFqQyxzREFBaUM7NEJEMEMxQixVQUFVLG9CQUFFLFlBQVksRUFBRSxJQUFJOztpRkFFN0IsYUFBYTtjQWR6QixTQUFTOzZCQUNJLElBQUksWUFDTixjQUFjLG1CQUVQLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDO3dCQUM1QyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRixXQUNRLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUM7Z0JBTXpDLEtBQUs7a0JBREosS0FBSzs7a0ZBSEssYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IGNyZWF0ZU5lc3RlZEZvcm1Db250cm9sLCBTYW5pdGl6ZVBpcGUgfSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBPcGVyYW5kRmllbGQsIFNwZWNDYXBhYmlsaXR5IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgTGlua09wdGlvbnMge1xuICB0YXJnZXQ/OiBzdHJpbmc7IC8vIGRlZmF1bHQgXCJfYmxhbmtcIlxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5rKGZpZWxkOiBPcGVyYW5kRmllbGQpIHtcbiAgY29uc3QgeyBjYXBhYmlsaXRpZXMgfSA9IGZpZWxkO1xuICByZXR1cm4gY2FwYWJpbGl0aWVzLnNvbWUoYyA9PiBjLnN0YXJ0c1dpdGgoYCR7U3BlY0NhcGFiaWxpdHkudGV4dH06bGlua2ApKTtcbn1cblxuLyoqXG4gKiDojrflj5bpk77mjqXlj4LmlbBcbiAqXG4gKiBAc2VlIGh0dHBzOi8vamlyYS5hbGF1ZGEuY24vYnJvd3NlL0FDUC0zMjcwM1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUxpbmtPcHRpb25zKGZpZWxkOiBPcGVyYW5kRmllbGQpIHtcbiAgY29uc3QgbGlua0NhcGFiaWxpdHkgPSBmaWVsZC5jYXBhYmlsaXRpZXMuZmluZChjYXBhYmlsaXR5ID0+XG4gICAgY2FwYWJpbGl0eS5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LnRleHQpLFxuICApO1xuICBjb25zdCB0YXJnZXQgPSBsaW5rQ2FwYWJpbGl0eT8uc3BsaXQoYCR7U3BlY0NhcGFiaWxpdHkudGV4dH06bGluazpgKT8uWzFdO1xuXG4gIHJldHVybiB7IHRhcmdldDogdGFyZ2V0IHx8ICdfYmxhbmsnIH0gYXMgTGlua09wdGlvbnM7XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1jcmQtbGluaycsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExpbmtDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgaW1wb3J0czogW0ljb25Nb2R1bGUsIFNhbml0aXplUGlwZSwgTmdJZl0sXG59KVxuZXhwb3J0IGNsYXNzIExpbmtDb21wb25lbnQgZXh0ZW5kcyBjcmVhdGVOZXN0ZWRGb3JtQ29udHJvbDxzdHJpbmc+KHtcbiAgYXV0b0VtaXRDaGFuZ2U6IHRydWUsXG59KSB7XG4gIEBJbnB1dCgpXG4gIGZpZWxkOiBPcGVyYW5kRmllbGQ7XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHJlc29sdmVMaW5rT3B0aW9ucyh0aGlzLmZpZWxkKTtcbiAgfVxufVxuIiwiPGFcbiAgW2hyZWZdPVwibW9kZWwgfCBhY2xTYW5pdGl6ZTogJ3VybCdcIlxuICBbdGFyZ2V0XT1cIm9wdGlvbnMudGFyZ2V0XCJcbj5cbiAgPHNwYW4+e3sgbW9kZWwgfX08L3NwYW5cbiAgPjxhdWktaWNvblxuICAgICpuZ0lmPVwib3B0aW9ucy50YXJnZXQgPT09ICdfYmxhbmsnXCJcbiAgICBpY29uPVwianVtcFwiXG4gICAgbWFyZ2luPVwibGVmdFwiXG4gID5cbiAgPC9hdWktaWNvbj5cbjwvYT5cbiJdfQ==