@tanstack/angular-form 0.37.1 → 0.38.0
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.
- package/dist/fesm2022/tanstack-angular-form.mjs +3 -3
- package/dist/fesm2022/tanstack-angular-form.mjs.map +1 -1
- package/package.json +12 -14
- package/dist/esm2022/index.mjs +0 -5
- package/dist/esm2022/inject-form.mjs +0 -8
- package/dist/esm2022/inject-store.mjs +0 -5
- package/dist/esm2022/tanstack-angular-form.mjs +0 -5
- package/dist/esm2022/tanstack-field.directive.mjs +0 -78
|
@@ -51,10 +51,10 @@ class TanStackField {
|
|
|
51
51
|
return;
|
|
52
52
|
api.update(this.getOptions());
|
|
53
53
|
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
55
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TanStackField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
55
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.1", type: TanStackField, isStandalone: true, selector: "[tanstackField]", inputs: { name: "name", defaultValue: "defaultValue", asyncDebounceMs: ["asyncDebounceMs", "asyncDebounceMs", numberAttribute], asyncAlways: ["asyncAlways", "asyncAlways", booleanAttribute], validatorAdapter: "validatorAdapter", tanstackField: "tanstackField", validators: "validators", listeners: "listeners", defaultMeta: "defaultMeta" }, exportAs: ["field"], usesOnChanges: true, ngImport: i0 });
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TanStackField, decorators: [{
|
|
58
58
|
type: Directive,
|
|
59
59
|
args: [{
|
|
60
60
|
selector: '[tanstackField]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-angular-form.mjs","sources":["../../src/inject-form.ts","../../src/tanstack-field.directive.ts","../../src/inject-store.ts","../../src/tanstack-angular-form.ts"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { injectStore } from '@tanstack/angular-store'\nimport type { FormOptions, Validator } from '@tanstack/form-core'\n\nexport function injectForm<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n>(opts?: FormOptions<TFormData, TFormValidator>) {\n const api = new FormApi<TFormData, TFormValidator>(opts)\n\n injectStore(api.store, (state) => state.isSubmitting)\n\n return api\n}\n","import {\n Directive,\n Input,\n booleanAttribute,\n numberAttribute,\n} from '@angular/core'\nimport { FieldApi, FormApi } from '@tanstack/form-core'\nimport type { OnChanges, OnDestroy, OnInit } from '@angular/core'\nimport type {\n DeepKeys,\n DeepValue,\n FieldListeners,\n FieldMeta,\n FieldOptions,\n FieldValidators,\n NoInfer as NoInferHack,\n Validator,\n} from '@tanstack/form-core'\n\n@Directive({\n selector: '[tanstackField]',\n standalone: true,\n exportAs: 'field',\n})\nexport class TanStackField<\n TParentData,\n const TName extends DeepKeys<TParentData>,\n TFieldValidator extends\n | Validator<DeepValue<TParentData, TName>, unknown>\n | undefined = undefined,\n TFormValidator extends\n | Validator<TParentData, unknown>\n | undefined = undefined,\n TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,\n >\n implements\n OnInit,\n OnChanges,\n OnDestroy,\n FieldOptions<TParentData, TName, TFieldValidator, TFormValidator, TData>\n{\n @Input({ required: true }) name!: TName\n // Setting as NoInferHack as it's the same internal type cast as TanStack Form Core\n // This can be removed when TanStack Form Core is moved to TS min of 5.4\n // and the NoInfer internal util type is rm-rf'd\n @Input() defaultValue?: NoInferHack<TData>\n @Input({ transform: numberAttribute }) asyncDebounceMs?: number\n @Input({ transform: booleanAttribute }) asyncAlways?: boolean\n @Input() validatorAdapter?: TFieldValidator\n @Input({ required: true }) tanstackField!: FormApi<\n TParentData,\n TFormValidator\n >\n @Input() validators?: NoInfer<\n FieldValidators<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() listeners?: NoInfer<\n FieldListeners<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() defaultMeta?: Partial<FieldMeta>\n\n api!: FieldApi<TParentData, TName, TFieldValidator, TFormValidator, TData>\n\n private getOptions() {\n return {\n defaultValue: this.defaultValue,\n asyncDebounceMs: this.asyncDebounceMs,\n asyncAlways: this.asyncAlways,\n validatorAdapter: this.validatorAdapter,\n validators: this.validators,\n listeners: this.listeners,\n defaultMeta: this.defaultMeta,\n name: this.name,\n form: this.tanstackField,\n }\n }\n\n unmount?: () => void\n\n ngOnInit() {\n this.api = new FieldApi(this.getOptions())\n\n this.unmount = this.api.mount()\n }\n\n ngOnDestroy() {\n this.unmount?.()\n }\n\n ngOnChanges() {\n const api = this.api as typeof this.api | undefined\n if (!api) return\n api.update(this.getOptions())\n }\n}\n","import { injectStore as injectAngularStore } from '@tanstack/angular-store'\nimport type { FormApi, FormState, Validator } from '@tanstack/form-core'\n\nexport function injectStore<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n TSelected = NoInfer<FormState<TFormData>>,\n>(\n form: FormApi<TFormData, TFormValidator>,\n selector?: (state: NoInfer<FormState<TFormData>>) => TSelected,\n) {\n return injectAngularStore(form.store, selector)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["injectStore","injectAngularStore"],"mappings":";;;;;;AAIM,SAAU,UAAU,CAGxB,IAA6C,EAAA;AAC7C,IAAA,MAAM,GAAG,GAAG,IAAI,OAAO,CAA4B,IAAI,CAAC;AAExD,IAAAA,aAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC;AAErD,IAAA,OAAO,GAAG;AACZ;;MCWa,aAAa,CAAA;AAiBG,IAAA,IAAI;;;;AAItB,IAAA,YAAY;AACkB,IAAA,eAAe;AACd,IAAA,WAAW;AAC1C,IAAA,gBAAgB;AACE,IAAA,aAAa;AAI/B,IAAA,UAAU;AAGV,IAAA,SAAS;AAGT,IAAA,WAAW;AAEpB,IAAA,GAAG;IAEK,UAAU,GAAA;QAChB,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,aAAa;SACzB;;AAGH,IAAA,OAAO;IAEP,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAE1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;;IAGjC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,IAAI;;IAGlB,WAAW,GAAA;AACT,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAkC;AACnD,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;;
|
|
1
|
+
{"version":3,"file":"tanstack-angular-form.mjs","sources":["../../src/inject-form.ts","../../src/tanstack-field.directive.ts","../../src/inject-store.ts","../../src/tanstack-angular-form.ts"],"sourcesContent":["import { FormApi } from '@tanstack/form-core'\nimport { injectStore } from '@tanstack/angular-store'\nimport type { FormOptions, Validator } from '@tanstack/form-core'\n\nexport function injectForm<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n>(opts?: FormOptions<TFormData, TFormValidator>) {\n const api = new FormApi<TFormData, TFormValidator>(opts)\n\n injectStore(api.store, (state) => state.isSubmitting)\n\n return api\n}\n","import {\n Directive,\n Input,\n booleanAttribute,\n numberAttribute,\n} from '@angular/core'\nimport { FieldApi, FormApi } from '@tanstack/form-core'\nimport type { OnChanges, OnDestroy, OnInit } from '@angular/core'\nimport type {\n DeepKeys,\n DeepValue,\n FieldListeners,\n FieldMeta,\n FieldOptions,\n FieldValidators,\n NoInfer as NoInferHack,\n Validator,\n} from '@tanstack/form-core'\n\n@Directive({\n selector: '[tanstackField]',\n standalone: true,\n exportAs: 'field',\n})\nexport class TanStackField<\n TParentData,\n const TName extends DeepKeys<TParentData>,\n TFieldValidator extends\n | Validator<DeepValue<TParentData, TName>, unknown>\n | undefined = undefined,\n TFormValidator extends\n | Validator<TParentData, unknown>\n | undefined = undefined,\n TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>,\n >\n implements\n OnInit,\n OnChanges,\n OnDestroy,\n FieldOptions<TParentData, TName, TFieldValidator, TFormValidator, TData>\n{\n @Input({ required: true }) name!: TName\n // Setting as NoInferHack as it's the same internal type cast as TanStack Form Core\n // This can be removed when TanStack Form Core is moved to TS min of 5.4\n // and the NoInfer internal util type is rm-rf'd\n @Input() defaultValue?: NoInferHack<TData>\n @Input({ transform: numberAttribute }) asyncDebounceMs?: number\n @Input({ transform: booleanAttribute }) asyncAlways?: boolean\n @Input() validatorAdapter?: TFieldValidator\n @Input({ required: true }) tanstackField!: FormApi<\n TParentData,\n TFormValidator\n >\n @Input() validators?: NoInfer<\n FieldValidators<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() listeners?: NoInfer<\n FieldListeners<TParentData, TName, TFieldValidator, TFormValidator, TData>\n >\n @Input() defaultMeta?: Partial<FieldMeta>\n\n api!: FieldApi<TParentData, TName, TFieldValidator, TFormValidator, TData>\n\n private getOptions() {\n return {\n defaultValue: this.defaultValue,\n asyncDebounceMs: this.asyncDebounceMs,\n asyncAlways: this.asyncAlways,\n validatorAdapter: this.validatorAdapter,\n validators: this.validators,\n listeners: this.listeners,\n defaultMeta: this.defaultMeta,\n name: this.name,\n form: this.tanstackField,\n }\n }\n\n unmount?: () => void\n\n ngOnInit() {\n this.api = new FieldApi(this.getOptions())\n\n this.unmount = this.api.mount()\n }\n\n ngOnDestroy() {\n this.unmount?.()\n }\n\n ngOnChanges() {\n const api = this.api as typeof this.api | undefined\n if (!api) return\n api.update(this.getOptions())\n }\n}\n","import { injectStore as injectAngularStore } from '@tanstack/angular-store'\nimport type { FormApi, FormState, Validator } from '@tanstack/form-core'\n\nexport function injectStore<\n TFormData,\n TFormValidator extends Validator<TFormData, unknown> | undefined = undefined,\n TSelected = NoInfer<FormState<TFormData>>,\n>(\n form: FormApi<TFormData, TFormValidator>,\n selector?: (state: NoInfer<FormState<TFormData>>) => TSelected,\n) {\n return injectAngularStore(form.store, selector)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["injectStore","injectAngularStore"],"mappings":";;;;;;AAIM,SAAU,UAAU,CAGxB,IAA6C,EAAA;AAC7C,IAAA,MAAM,GAAG,GAAG,IAAI,OAAO,CAA4B,IAAI,CAAC;AAExD,IAAAA,aAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC;AAErD,IAAA,OAAO,GAAG;AACZ;;MCWa,aAAa,CAAA;AAiBG,IAAA,IAAI;;;;AAItB,IAAA,YAAY;AACkB,IAAA,eAAe;AACd,IAAA,WAAW;AAC1C,IAAA,gBAAgB;AACE,IAAA,aAAa;AAI/B,IAAA,UAAU;AAGV,IAAA,SAAS;AAGT,IAAA,WAAW;AAEpB,IAAA,GAAG;IAEK,UAAU,GAAA;QAChB,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,aAAa;SACzB;;AAGH,IAAA,OAAO;IAEP,QAAQ,GAAA;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAE1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;;IAGjC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,IAAI;;IAGlB,WAAW,GAAA;AACT,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAkC;AACnD,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;;uGApEpB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAsBJ,eAAe,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EACf,gBAAgB,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAvBzB,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,OAAO;AAClB,iBAAA;8BAkB4B,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAIhB,YAAY,EAAA,CAAA;sBAApB;gBACsC,eAAe,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;gBACG,WAAW,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAC7B,gBAAgB,EAAA,CAAA;sBAAxB;gBAC0B,aAAa,EAAA,CAAA;sBAAvC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAIhB,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBAGQ,WAAW,EAAA,CAAA;sBAAnB;;;ACxDa,SAAA,WAAW,CAKzB,IAAwC,EACxC,QAA8D,EAAA;IAE9D,OAAOC,aAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AACjD;;ACZA;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/angular-form",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.38.0",
|
|
4
4
|
"description": "Powerful, type-safe forms for Angular.",
|
|
5
5
|
"author": "tannerlinsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,8 +20,6 @@
|
|
|
20
20
|
"exports": {
|
|
21
21
|
".": {
|
|
22
22
|
"types": "./dist/index.d.ts",
|
|
23
|
-
"esm2022": "./dist/esm2022/tanstack-angular-form.mjs",
|
|
24
|
-
"esm": "./dist/esm2022/tanstack-angular-form.mjs",
|
|
25
23
|
"default": "./dist/fesm2022/tanstack-angular-form.mjs"
|
|
26
24
|
},
|
|
27
25
|
"./package.json": {
|
|
@@ -36,23 +34,23 @@
|
|
|
36
34
|
"dependencies": {
|
|
37
35
|
"@tanstack/angular-store": "^0.5.6",
|
|
38
36
|
"tslib": "^2.8.1",
|
|
39
|
-
"@tanstack/form-core": "0.
|
|
37
|
+
"@tanstack/form-core": "0.38.0"
|
|
40
38
|
},
|
|
41
39
|
"devDependencies": {
|
|
42
|
-
"@analogjs/vite-plugin-angular": "^1.9.
|
|
43
|
-
"@angular/common": "^
|
|
44
|
-
"@angular/compiler": "^
|
|
45
|
-
"@angular/compiler-cli": "^
|
|
46
|
-
"@angular/core": "^
|
|
47
|
-
"@angular/platform-browser": "^
|
|
48
|
-
"@angular/platform-browser-dynamic": "^
|
|
40
|
+
"@analogjs/vite-plugin-angular": "^1.9.4",
|
|
41
|
+
"@angular/common": "^19.0.0",
|
|
42
|
+
"@angular/compiler": "^19.0.0",
|
|
43
|
+
"@angular/compiler-cli": "^19.0.0",
|
|
44
|
+
"@angular/core": "^19.0.0",
|
|
45
|
+
"@angular/platform-browser": "^19.0.0",
|
|
46
|
+
"@angular/platform-browser-dynamic": "^19.0.0",
|
|
49
47
|
"@testing-library/angular": "^17.3.2",
|
|
50
|
-
"ng-packagr": "^
|
|
51
|
-
"typescript": "5.
|
|
48
|
+
"ng-packagr": "^19.0.1",
|
|
49
|
+
"typescript": "5.6.3",
|
|
52
50
|
"zone.js": "^0.15.0"
|
|
53
51
|
},
|
|
54
52
|
"peerDependencies": {
|
|
55
|
-
"@angular/core": ">=
|
|
53
|
+
"@angular/core": ">=19.0.0"
|
|
56
54
|
},
|
|
57
55
|
"scripts": {}
|
|
58
56
|
}
|
package/dist/esm2022/index.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from '@tanstack/form-core';
|
|
2
|
-
export { injectForm } from './inject-form';
|
|
3
|
-
export { TanStackField } from './tanstack-field.directive';
|
|
4
|
-
export { injectStore } from './inject-store';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQTtBQUVuQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuXG5leHBvcnQgeyBpbmplY3RGb3JtIH0gZnJvbSAnLi9pbmplY3QtZm9ybSdcbmV4cG9ydCB7IFRhblN0YWNrRmllbGQgfSBmcm9tICcuL3RhbnN0YWNrLWZpZWxkLmRpcmVjdGl2ZSdcbmV4cG9ydCB7IGluamVjdFN0b3JlIH0gZnJvbSAnLi9pbmplY3Qtc3RvcmUnXG4iXX0=
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { FormApi } from '@tanstack/form-core';
|
|
2
|
-
import { injectStore } from '@tanstack/angular-store';
|
|
3
|
-
export function injectForm(opts) {
|
|
4
|
-
const api = new FormApi(opts);
|
|
5
|
-
injectStore(api.store, (state) => state.isSubmitting);
|
|
6
|
-
return api;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5qZWN0LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUdyRCxNQUFNLFVBQVUsVUFBVSxDQUd4QixJQUE2QztJQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBNEIsSUFBSSxDQUFDLENBQUE7SUFFeEQsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUVyRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQXBpIH0gZnJvbSAnQHRhbnN0YWNrL2Zvcm0tY29yZSdcbmltcG9ydCB7IGluamVjdFN0b3JlIH0gZnJvbSAnQHRhbnN0YWNrL2FuZ3VsYXItc3RvcmUnXG5pbXBvcnQgdHlwZSB7IEZvcm1PcHRpb25zLCBWYWxpZGF0b3IgfSBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Rm9ybTxcbiAgVEZvcm1EYXRhLFxuICBURm9ybVZhbGlkYXRvciBleHRlbmRzIFZhbGlkYXRvcjxURm9ybURhdGEsIHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPihvcHRzPzogRm9ybU9wdGlvbnM8VEZvcm1EYXRhLCBURm9ybVZhbGlkYXRvcj4pIHtcbiAgY29uc3QgYXBpID0gbmV3IEZvcm1BcGk8VEZvcm1EYXRhLCBURm9ybVZhbGlkYXRvcj4ob3B0cylcblxuICBpbmplY3RTdG9yZShhcGkuc3RvcmUsIChzdGF0ZSkgPT4gc3RhdGUuaXNTdWJtaXR0aW5nKVxuXG4gIHJldHVybiBhcGlcbn1cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { injectStore as injectAngularStore } from '@tanstack/angular-store';
|
|
2
|
-
export function injectStore(form, selector) {
|
|
3
|
-
return injectAngularStore(form.store, selector);
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luamVjdC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxJQUFJLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFHM0UsTUFBTSxVQUFVLFdBQVcsQ0FLekIsSUFBd0MsRUFDeEMsUUFBOEQ7SUFFOUQsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3RTdG9yZSBhcyBpbmplY3RBbmd1bGFyU3RvcmUgfSBmcm9tICdAdGFuc3RhY2svYW5ndWxhci1zdG9yZSdcbmltcG9ydCB0eXBlIHsgRm9ybUFwaSwgRm9ybVN0YXRlLCBWYWxpZGF0b3IgfSBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U3RvcmU8XG4gIFRGb3JtRGF0YSxcbiAgVEZvcm1WYWxpZGF0b3IgZXh0ZW5kcyBWYWxpZGF0b3I8VEZvcm1EYXRhLCB1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgVFNlbGVjdGVkID0gTm9JbmZlcjxGb3JtU3RhdGU8VEZvcm1EYXRhPj4sXG4+KFxuICBmb3JtOiBGb3JtQXBpPFRGb3JtRGF0YSwgVEZvcm1WYWxpZGF0b3I+LFxuICBzZWxlY3Rvcj86IChzdGF0ZTogTm9JbmZlcjxGb3JtU3RhdGU8VEZvcm1EYXRhPj4pID0+IFRTZWxlY3RlZCxcbikge1xuICByZXR1cm4gaW5qZWN0QW5ndWxhclN0b3JlKGZvcm0uc3RvcmUsIHNlbGVjdG9yKVxufVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuc3RhY2stYW5ndWxhci1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhbnN0YWNrLWFuZ3VsYXItZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Directive, Input, booleanAttribute, numberAttribute, } from '@angular/core';
|
|
2
|
-
import { FieldApi } from '@tanstack/form-core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class TanStackField {
|
|
5
|
-
name;
|
|
6
|
-
// Setting as NoInferHack as it's the same internal type cast as TanStack Form Core
|
|
7
|
-
// This can be removed when TanStack Form Core is moved to TS min of 5.4
|
|
8
|
-
// and the NoInfer internal util type is rm-rf'd
|
|
9
|
-
defaultValue;
|
|
10
|
-
asyncDebounceMs;
|
|
11
|
-
asyncAlways;
|
|
12
|
-
validatorAdapter;
|
|
13
|
-
tanstackField;
|
|
14
|
-
validators;
|
|
15
|
-
listeners;
|
|
16
|
-
defaultMeta;
|
|
17
|
-
api;
|
|
18
|
-
getOptions() {
|
|
19
|
-
return {
|
|
20
|
-
defaultValue: this.defaultValue,
|
|
21
|
-
asyncDebounceMs: this.asyncDebounceMs,
|
|
22
|
-
asyncAlways: this.asyncAlways,
|
|
23
|
-
validatorAdapter: this.validatorAdapter,
|
|
24
|
-
validators: this.validators,
|
|
25
|
-
listeners: this.listeners,
|
|
26
|
-
defaultMeta: this.defaultMeta,
|
|
27
|
-
name: this.name,
|
|
28
|
-
form: this.tanstackField,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
unmount;
|
|
32
|
-
ngOnInit() {
|
|
33
|
-
this.api = new FieldApi(this.getOptions());
|
|
34
|
-
this.unmount = this.api.mount();
|
|
35
|
-
}
|
|
36
|
-
ngOnDestroy() {
|
|
37
|
-
this.unmount?.();
|
|
38
|
-
}
|
|
39
|
-
ngOnChanges() {
|
|
40
|
-
const api = this.api;
|
|
41
|
-
if (!api)
|
|
42
|
-
return;
|
|
43
|
-
api.update(this.getOptions());
|
|
44
|
-
}
|
|
45
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TanStackField, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
46
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.12", type: TanStackField, isStandalone: true, selector: "[tanstackField]", inputs: { name: "name", defaultValue: "defaultValue", asyncDebounceMs: ["asyncDebounceMs", "asyncDebounceMs", numberAttribute], asyncAlways: ["asyncAlways", "asyncAlways", booleanAttribute], validatorAdapter: "validatorAdapter", tanstackField: "tanstackField", validators: "validators", listeners: "listeners", defaultMeta: "defaultMeta" }, exportAs: ["field"], usesOnChanges: true, ngImport: i0 });
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TanStackField, decorators: [{
|
|
49
|
-
type: Directive,
|
|
50
|
-
args: [{
|
|
51
|
-
selector: '[tanstackField]',
|
|
52
|
-
standalone: true,
|
|
53
|
-
exportAs: 'field',
|
|
54
|
-
}]
|
|
55
|
-
}], propDecorators: { name: [{
|
|
56
|
-
type: Input,
|
|
57
|
-
args: [{ required: true }]
|
|
58
|
-
}], defaultValue: [{
|
|
59
|
-
type: Input
|
|
60
|
-
}], asyncDebounceMs: [{
|
|
61
|
-
type: Input,
|
|
62
|
-
args: [{ transform: numberAttribute }]
|
|
63
|
-
}], asyncAlways: [{
|
|
64
|
-
type: Input,
|
|
65
|
-
args: [{ transform: booleanAttribute }]
|
|
66
|
-
}], validatorAdapter: [{
|
|
67
|
-
type: Input
|
|
68
|
-
}], tanstackField: [{
|
|
69
|
-
type: Input,
|
|
70
|
-
args: [{ required: true }]
|
|
71
|
-
}], validators: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], listeners: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], defaultMeta: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuc3RhY2stZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhbnN0YWNrLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsUUFBUSxFQUFXLE1BQU0scUJBQXFCLENBQUE7O0FBa0J2RCxNQUFNLE9BQU8sYUFBYTtJQWlCRyxJQUFJLENBQVE7SUFDdkMsbUZBQW1GO0lBQ25GLHdFQUF3RTtJQUN4RSxnREFBZ0Q7SUFDdkMsWUFBWSxDQUFxQjtJQUNILGVBQWUsQ0FBUztJQUN2QixXQUFXLENBQVU7SUFDcEQsZ0JBQWdCLENBQWtCO0lBQ2hCLGFBQWEsQ0FHdkM7SUFDUSxVQUFVLENBRWxCO0lBQ1EsU0FBUyxDQUVqQjtJQUNRLFdBQVcsQ0FBcUI7SUFFekMsR0FBRyxDQUF1RTtJQUVsRSxVQUFVO1FBQ2hCLE9BQU87WUFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTtTQUN6QixDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBYTtJQUVwQixRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUUxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQTtJQUNsQixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFrQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTTtRQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQy9CLENBQUM7d0dBckVVLGFBQWE7NEZBQWIsYUFBYSxpS0FzQkosZUFBZSwrQ0FDZixnQkFBZ0I7OzRGQXZCekIsYUFBYTtrQkFMekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLE9BQU87aUJBQ2xCOzhCQWtCNEIsSUFBSTtzQkFBOUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWhCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ2lDLGVBQWU7c0JBQXJELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUNHLFdBQVc7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDcUIsYUFBYTtzQkFBdkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWhCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRmllbGRBcGksIEZvcm1BcGkgfSBmcm9tICdAdGFuc3RhY2svZm9ybS1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB0eXBlIHtcbiAgRGVlcEtleXMsXG4gIERlZXBWYWx1ZSxcbiAgRmllbGRMaXN0ZW5lcnMsXG4gIEZpZWxkTWV0YSxcbiAgRmllbGRPcHRpb25zLFxuICBGaWVsZFZhbGlkYXRvcnMsXG4gIE5vSW5mZXIgYXMgTm9JbmZlckhhY2ssXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQHRhbnN0YWNrL2Zvcm0tY29yZSdcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RhbnN0YWNrRmllbGRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdmaWVsZCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhblN0YWNrRmllbGQ8XG4gICAgVFBhcmVudERhdGEsXG4gICAgY29uc3QgVE5hbWUgZXh0ZW5kcyBEZWVwS2V5czxUUGFyZW50RGF0YT4sXG4gICAgVEZpZWxkVmFsaWRhdG9yIGV4dGVuZHNcbiAgICAgIHwgVmFsaWRhdG9yPERlZXBWYWx1ZTxUUGFyZW50RGF0YSwgVE5hbWU+LCB1bmtub3duPlxuICAgICAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgVEZvcm1WYWxpZGF0b3IgZXh0ZW5kc1xuICAgICAgfCBWYWxpZGF0b3I8VFBhcmVudERhdGEsIHVua25vd24+XG4gICAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBURGF0YSBleHRlbmRzIERlZXBWYWx1ZTxUUGFyZW50RGF0YSwgVE5hbWU+ID0gRGVlcFZhbHVlPFRQYXJlbnREYXRhLCBUTmFtZT4sXG4gID5cbiAgaW1wbGVtZW50c1xuICAgIE9uSW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIEZpZWxkT3B0aW9uczxUUGFyZW50RGF0YSwgVE5hbWUsIFRGaWVsZFZhbGlkYXRvciwgVEZvcm1WYWxpZGF0b3IsIFREYXRhPlxue1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBuYW1lITogVE5hbWVcbiAgLy8gU2V0dGluZyBhcyBOb0luZmVySGFjayBhcyBpdCdzIHRoZSBzYW1lIGludGVybmFsIHR5cGUgY2FzdCBhcyBUYW5TdGFjayBGb3JtIENvcmVcbiAgLy8gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIFRhblN0YWNrIEZvcm0gQ29yZSBpcyBtb3ZlZCB0byBUUyBtaW4gb2YgNS40XG4gIC8vIGFuZCB0aGUgTm9JbmZlciBpbnRlcm5hbCB1dGlsIHR5cGUgaXMgcm0tcmYnZFxuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU/OiBOb0luZmVySGFjazxURGF0YT5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgYXN5bmNEZWJvdW5jZU1zPzogbnVtYmVyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhc3luY0Fsd2F5cz86IGJvb2xlYW5cbiAgQElucHV0KCkgdmFsaWRhdG9yQWRhcHRlcj86IFRGaWVsZFZhbGlkYXRvclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0YW5zdGFja0ZpZWxkITogRm9ybUFwaTxcbiAgICBUUGFyZW50RGF0YSxcbiAgICBURm9ybVZhbGlkYXRvclxuICA+XG4gIEBJbnB1dCgpIHZhbGlkYXRvcnM/OiBOb0luZmVyPFxuICAgIEZpZWxkVmFsaWRhdG9yczxUUGFyZW50RGF0YSwgVE5hbWUsIFRGaWVsZFZhbGlkYXRvciwgVEZvcm1WYWxpZGF0b3IsIFREYXRhPlxuICA+XG4gIEBJbnB1dCgpIGxpc3RlbmVycz86IE5vSW5mZXI8XG4gICAgRmllbGRMaXN0ZW5lcnM8VFBhcmVudERhdGEsIFROYW1lLCBURmllbGRWYWxpZGF0b3IsIFRGb3JtVmFsaWRhdG9yLCBURGF0YT5cbiAgPlxuICBASW5wdXQoKSBkZWZhdWx0TWV0YT86IFBhcnRpYWw8RmllbGRNZXRhPlxuXG4gIGFwaSE6IEZpZWxkQXBpPFRQYXJlbnREYXRhLCBUTmFtZSwgVEZpZWxkVmFsaWRhdG9yLCBURm9ybVZhbGlkYXRvciwgVERhdGE+XG5cbiAgcHJpdmF0ZSBnZXRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZGVmYXVsdFZhbHVlLFxuICAgICAgYXN5bmNEZWJvdW5jZU1zOiB0aGlzLmFzeW5jRGVib3VuY2VNcyxcbiAgICAgIGFzeW5jQWx3YXlzOiB0aGlzLmFzeW5jQWx3YXlzLFxuICAgICAgdmFsaWRhdG9yQWRhcHRlcjogdGhpcy52YWxpZGF0b3JBZGFwdGVyLFxuICAgICAgdmFsaWRhdG9yczogdGhpcy52YWxpZGF0b3JzLFxuICAgICAgbGlzdGVuZXJzOiB0aGlzLmxpc3RlbmVycyxcbiAgICAgIGRlZmF1bHRNZXRhOiB0aGlzLmRlZmF1bHRNZXRhLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZm9ybTogdGhpcy50YW5zdGFja0ZpZWxkLFxuICAgIH1cbiAgfVxuXG4gIHVubW91bnQ/OiAoKSA9PiB2b2lkXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hcGkgPSBuZXcgRmllbGRBcGkodGhpcy5nZXRPcHRpb25zKCkpXG5cbiAgICB0aGlzLnVubW91bnQgPSB0aGlzLmFwaS5tb3VudCgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVubW91bnQ/LigpXG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBjb25zdCBhcGkgPSB0aGlzLmFwaSBhcyB0eXBlb2YgdGhpcy5hcGkgfCB1bmRlZmluZWRcbiAgICBpZiAoIWFwaSkgcmV0dXJuXG4gICAgYXBpLnVwZGF0ZSh0aGlzLmdldE9wdGlvbnMoKSlcbiAgfVxufVxuIl19
|