@mmstack/form-core 20.0.1 → 20.0.2

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.
@@ -41,21 +41,21 @@ import { v7 } from 'uuid';
41
41
  */
42
42
  function formControl(initial, opt) {
43
43
  const value = isSignal(initial) ? initial : signal(initial, opt);
44
- const initialValue = signal(untracked(value));
44
+ const initialValue = signal(untracked(value), ...(ngDevMode ? [{ debugName: "initialValue" }] : []));
45
45
  const eq = opt?.equal ?? Object.is;
46
46
  const dirtyEq = opt?.dirtyEquality ?? eq;
47
- const disabled = computed(() => opt?.disable?.() ?? false);
48
- const readonly = computed(() => opt?.readonly?.() ?? false);
49
- const dirty = computed(() => !dirtyEq(value(), initialValue()));
50
- const touched = signal(false);
51
- const validator = computed(() => opt?.validator?.() ?? (() => ''));
47
+ const disabled = computed(() => opt?.disable?.() ?? false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
48
+ const readonly = computed(() => opt?.readonly?.() ?? false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
49
+ const dirty = computed(() => !dirtyEq(value(), initialValue()), ...(ngDevMode ? [{ debugName: "dirty" }] : []));
50
+ const touched = signal(false, ...(ngDevMode ? [{ debugName: "touched" }] : []));
51
+ const validator = computed(() => opt?.validator?.() ?? (() => ''), ...(ngDevMode ? [{ debugName: "validator" }] : []));
52
52
  const error = computed(() => {
53
53
  if (opt?.overrideValidation)
54
54
  return opt.overrideValidation();
55
55
  if (disabled() || readonly())
56
56
  return '';
57
57
  return validator()(value());
58
- });
58
+ }, ...(ngDevMode ? [{ debugName: "error" }] : []));
59
59
  const markAsTouched = () => {
60
60
  touched.set(true);
61
61
  opt?.onTouched?.();
@@ -63,8 +63,8 @@ function formControl(initial, opt) {
63
63
  const markAllAsTouched = markAsTouched;
64
64
  const markAsPristine = () => touched.set(false);
65
65
  const markAllAsPristine = markAsPristine;
66
- const label = computed(() => opt?.label?.() ?? '');
67
- const partialValue = computed(() => (dirty() ? value() : undefined));
66
+ const label = computed(() => opt?.label?.() ?? '', ...(ngDevMode ? [{ debugName: "label" }] : []));
67
+ const partialValue = computed(() => (dirty() ? value() : undefined), ...(ngDevMode ? [{ debugName: "partialValue" }] : []));
68
68
  const internalReconcile = (newValue, force = false) => {
69
69
  const isDirty = untracked(dirty);
70
70
  if (!isDirty || force) {
@@ -76,7 +76,7 @@ function formControl(initial, opt) {
76
76
  });
77
77
  }
78
78
  };
79
- const pending = computed(() => opt?.pending?.() ?? false);
79
+ const pending = computed(() => opt?.pending?.() ?? false, ...(ngDevMode ? [{ debugName: "pending" }] : []));
80
80
  return {
81
81
  id: opt?.id?.() ?? v7(),
82
82
  value,
@@ -144,8 +144,8 @@ function formArray(initial, factory, opt) {
144
144
  return true;
145
145
  return a.every((v, i) => eq(v, b[i]));
146
146
  };
147
- const min = computed(() => opt?.min?.() ?? 0);
148
- const max = computed(() => opt?.max?.() ?? Number.MAX_SAFE_INTEGER);
147
+ const min = computed(() => opt?.min?.() ?? 0, ...(ngDevMode ? [{ debugName: "min" }] : []));
148
+ const max = computed(() => opt?.max?.() ?? Number.MAX_SAFE_INTEGER, ...(ngDevMode ? [{ debugName: "max" }] : []));
149
149
  const arrayOptions = {
150
150
  ...opt,
151
151
  equal: arrayEqual,
@@ -153,14 +153,14 @@ function formArray(initial, factory, opt) {
153
153
  controlType: 'array',
154
154
  };
155
155
  const ctrl = formControl(initial, arrayOptions);
156
- const length = computed(() => ctrl.value().length);
156
+ const length = computed(() => ctrl.value().length, ...(ngDevMode ? [{ debugName: "length" }] : []));
157
157
  const reconcileChildren = createReconcileChildren(factory, { equal: eq });
158
158
  // linkedSignal used to re-use previous value so that only length changes are affected and existing controls are kept, but updated
159
159
  const children = linkedSignal({
160
160
  source: () => length(),
161
161
  computation: (len, prev) => reconcileChildren(len, ctrl.value, prev?.value),
162
162
  });
163
- const ownError = computed(() => ctrl.error());
163
+ const ownError = computed(() => ctrl.error(), ...(ngDevMode ? [{ debugName: "ownError" }] : []));
164
164
  const error = computed(() => {
165
165
  const own = ownError();
166
166
  if (own)
@@ -171,14 +171,14 @@ function formArray(initial, factory, opt) {
171
171
  .map((c, idx) => (c.error() ? `${idx}: ${c.error()}` : ''))
172
172
  .filter(Boolean)
173
173
  .join('\n');
174
- });
174
+ }, ...(ngDevMode ? [{ debugName: "error" }] : []));
175
175
  const dirty = computed(() => {
176
176
  if (ctrl.dirty())
177
177
  return true;
178
178
  if (!children().length)
179
179
  return false;
180
180
  return children().some((c) => c.dirty());
181
- });
181
+ }, ...(ngDevMode ? [{ debugName: "dirty" }] : []));
182
182
  const markAllAsTouched = () => {
183
183
  ctrl.markAllAsTouched();
184
184
  for (const c of untracked(children)) {
@@ -204,9 +204,9 @@ function formArray(initial, factory, opt) {
204
204
  // return full value for child objects/arrays as this cannot be partially patched without idx
205
205
  return toPartialValue(c.value());
206
206
  });
207
- });
207
+ }, ...(ngDevMode ? [{ debugName: "partialValue" }] : []));
208
208
  const touched = computed(() => ctrl.touched() ||
209
- !!(children().length && children().some((c) => c.touched())));
209
+ !!(children().length && children().some((c) => c.touched())), ...(ngDevMode ? [{ debugName: "touched" }] : []));
210
210
  const reconcile = (newValue) => {
211
211
  const ctrls = untracked(children);
212
212
  for (let i = 0; i < newValue.length; i++) {
@@ -225,8 +225,8 @@ function formArray(initial, factory, opt) {
225
225
  if (!children().length)
226
226
  return true;
227
227
  return children().every((d) => d.valid());
228
- });
229
- const childrenPending = computed(() => !!children().length && children().some((d) => d.pending()));
228
+ }, ...(ngDevMode ? [{ debugName: "childrenValid" }] : []));
229
+ const childrenPending = computed(() => !!children().length && children().some((d) => d.pending()), ...(ngDevMode ? [{ debugName: "childrenPending" }] : []));
230
230
  return {
231
231
  ...ctrl,
232
232
  ownError,
@@ -324,8 +324,8 @@ function formGroup(initial, providedChildren, opt) {
324
324
  ? computed(() => providedChildren())
325
325
  : computed(() => providedChildren);
326
326
  // array allows for easier handling
327
- const derivationsArray = computed(() => values(children()));
328
- const childrenDirty = computed(() => !!derivationsArray().length && derivationsArray().some((d) => d.dirty()));
327
+ const derivationsArray = computed(() => values(children()), ...(ngDevMode ? [{ debugName: "derivationsArray" }] : []));
328
+ const childrenDirty = computed(() => !!derivationsArray().length && derivationsArray().some((d) => d.dirty()), ...(ngDevMode ? [{ debugName: "childrenDirty" }] : []));
329
329
  // by default dont compare object references, just use childrenDirtySignal
330
330
  const baseDirtyEq = opt?.dirtyEquality ?? opt?.equal ?? (() => true);
331
331
  // function which calls a signal becomes a signal
@@ -352,8 +352,8 @@ function formGroup(initial, providedChildren, opt) {
352
352
  },
353
353
  });
354
354
  const childrenTouched = computed(() => !!derivationsArray().length &&
355
- derivationsArray().some((d) => d.touched()));
356
- const touched = computed(() => ctrl.touched() || childrenTouched());
355
+ derivationsArray().some((d) => d.touched()), ...(ngDevMode ? [{ debugName: "childrenTouched" }] : []));
356
+ const touched = computed(() => ctrl.touched() || childrenTouched(), ...(ngDevMode ? [{ debugName: "touched" }] : []));
357
357
  const childError = computed(() => {
358
358
  if (!derivationsArray().length)
359
359
  return '';
@@ -361,13 +361,13 @@ function formGroup(initial, providedChildren, opt) {
361
361
  .map((d) => (d.error() ? `${d.label()}: ${d.error()}` : ''))
362
362
  .filter(Boolean)
363
363
  .join('\n');
364
- });
364
+ }, ...(ngDevMode ? [{ debugName: "childError" }] : []));
365
365
  const error = computed(() => {
366
366
  const ownError = ctrl.error();
367
367
  if (ownError)
368
368
  return ownError;
369
369
  return childError() ? 'INVALID' : '';
370
- });
370
+ }, ...(ngDevMode ? [{ debugName: "error" }] : []));
371
371
  const markAllAsTouched = () => {
372
372
  ctrl.markAllAsTouched();
373
373
  for (const ctrl of untracked(derivationsArray)) {
@@ -416,14 +416,14 @@ function formGroup(initial, providedChildren, opt) {
416
416
  obj[key] = pv;
417
417
  }
418
418
  return obj;
419
- });
419
+ }, ...(ngDevMode ? [{ debugName: "partialValue" }] : []));
420
420
  const childrenValid = computed(() => {
421
421
  if (!derivationsArray().length)
422
422
  return true;
423
423
  return derivationsArray().every((d) => d.valid());
424
- });
424
+ }, ...(ngDevMode ? [{ debugName: "childrenValid" }] : []));
425
425
  const childrenPending = computed(() => !!derivationsArray().length &&
426
- derivationsArray().some((d) => d.pending()));
426
+ derivationsArray().some((d) => d.pending()), ...(ngDevMode ? [{ debugName: "childrenPending" }] : []));
427
427
  return {
428
428
  ...ctrl,
429
429
  children,
@@ -1 +1 @@
1
- {"version":3,"file":"mmstack-form-core.mjs","sources":["../tmp-esm2022/lib/form-control.js","../tmp-esm2022/lib/form-array.js","../tmp-esm2022/lib/form-group.js","../tmp-esm2022/mmstack-form-core.js"],"sourcesContent":["import { computed, isSignal, signal, untracked, } from '@angular/core';\nimport { v7 } from 'uuid';\n/**\n * Creates a `FormControlSignal`, a reactive form control that holds a value and tracks its\n * validity, dirty state, touched state, and other metadata.\n *\n * @typeParam T - The type of the form control's value.\n * @typeParam TParent - The type of the parent form control's value (if this control is part of a group or array).\n * @typeParam TControlType - The type of the control. Defaults to `'control'`.\n * @typeParam TPartialValue - The type of value when patching\n * @param initial - The initial value of the control, or a `DerivedSignal` if this control is part of a `formGroup` or `formArray`.\n * @param options - Optional configuration options for the control.\n * @returns A `FormControlSignal` instance.\n *\n * @example\n * // Create a simple form control:\n * const name = formControl('Initial Name');\n *\n * // Create a form control with validation:\n * const age = formControl(0, {\n * validator: () => (value) => value >= 18 ? '' : 'Must be at least 18',\n * });\n *\n * // Create a derived form control (equivalent to the above, but more explicit):\n * const user = signal({ name: 'John Doe', age: 30 });\n * const name = formControl(derived(user, {\n * from: (u) => u.name,\n * onChange: (newName) => user.update(u => ({...u, name: newName}))\n * }));\n *\n * // Create a form group with nested controls:\n * const user = signal({ name: 'John Doe', age: 30 });\n * const form = formGroup(user, {\n * name: formControl(derived(user, 'name')),\n * age: formControl(derived(user, 'age')),\n * })\n */\nexport function formControl(initial, opt) {\n const value = isSignal(initial) ? initial : signal(initial, opt);\n const initialValue = signal(untracked(value));\n const eq = opt?.equal ?? Object.is;\n const dirtyEq = opt?.dirtyEquality ?? eq;\n const disabled = computed(() => opt?.disable?.() ?? false);\n const readonly = computed(() => opt?.readonly?.() ?? false);\n const dirty = computed(() => !dirtyEq(value(), initialValue()));\n const touched = signal(false);\n const validator = computed(() => opt?.validator?.() ?? (() => ''));\n const error = computed(() => {\n if (opt?.overrideValidation)\n return opt.overrideValidation();\n if (disabled() || readonly())\n return '';\n return validator()(value());\n });\n const markAsTouched = () => {\n touched.set(true);\n opt?.onTouched?.();\n };\n const markAllAsTouched = markAsTouched;\n const markAsPristine = () => touched.set(false);\n const markAllAsPristine = markAsPristine;\n const label = computed(() => opt?.label?.() ?? '');\n const partialValue = computed(() => (dirty() ? value() : undefined));\n const internalReconcile = (newValue, force = false) => {\n const isDirty = untracked(dirty);\n if (!isDirty || force) {\n // very dangerous use of untracked here, don't do this everywhere :)\n // thanks to u/synalx for the idea to use untracked here\n untracked(() => {\n initialValue.set(newValue);\n value.set(newValue);\n });\n }\n };\n const pending = computed(() => opt?.pending?.() ?? false);\n return {\n id: opt?.id?.() ?? v7(),\n value,\n dirty,\n touched,\n error,\n label,\n required: computed(() => opt?.required?.() ?? false),\n disabled,\n readonly,\n pending,\n valid: computed(() => !pending() && !error()),\n hint: computed(() => opt?.hint?.() ?? ''),\n markAsTouched,\n markAllAsTouched,\n markAsPristine,\n markAllAsPristine,\n from: (isSignal(initial) ? initial.from : undefined),\n reconcile: (newValue) => internalReconcile(newValue),\n forceReconcile: (newValue) => internalReconcile(newValue, true),\n reset: () => {\n opt?.onReset?.();\n value.set(untracked(initialValue));\n },\n resetWithInitial: (initial) => {\n opt?.onReset?.();\n initialValue.set(initial);\n value.set(initial);\n },\n equal: eq,\n controlType: (opt?.controlType ?? 'control'),\n partialValue: partialValue,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZm9ybS9jb3JlL3NyYy9saWIvZm9ybS1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBS1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQTRHMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQU16QixPQUFzQyxFQUN0QyxHQUErQztJQUUvQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDO0lBRW5DLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDO0lBRXpDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUMzRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLENBQUM7SUFFNUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFlBQVks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QUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUkxQztRQUNULFNBQVMsRUFBRSxDQUFDLFFBQVcsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQ3ZELGNBQWMsRUFBRSxDQUFDLFFBQVcsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztRQUNsRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ1YsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFVLEVBQUUsRUFBRTtZQUMvQixHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNqQixZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELEtBQUssRUFBRSxFQUFFO1FBQ1QsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLFdBQVcsSUFBSSxTQUFTLENBQWlCO1FBQzVELFlBQVksRUFBRSxZQUFxQztLQUNwRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgY29tcHV0ZWQsXHJcbiAgaXNTaWduYWwsXHJcbiAgc2lnbmFsLFxyXG4gIHVudHJhY2tlZCxcclxuICB0eXBlIENyZWF0ZVNpZ25hbE9wdGlvbnMsXHJcbiAgdHlwZSBTaWduYWwsXHJcbiAgdHlwZSBWYWx1ZUVxdWFsaXR5Rm4sXHJcbiAgdHlwZSBXcml0YWJsZVNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdHlwZSBEZXJpdmVkU2lnbmFsIH0gZnJvbSAnQG1tc3RhY2svcHJpbWl0aXZlcyc7XHJcbmltcG9ydCB7IHY3IH0gZnJvbSAndXVpZCc7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyB0aGUgdHlwZSBvZiBhIGZvcm0gY29udHJvbC5cclxuICogLSBgY29udHJvbGA6IEEgc2luZ2xlIGZvcm0gY29udHJvbCAoZS5nLiwgYW4gaW5wdXQgZmllbGQpLlxyXG4gKiAtIGBhcnJheWA6IEFuIGFycmF5IG9mIGZvcm0gY29udHJvbHMgKGxpa2UgQW5ndWxhcidzIGBGb3JtQXJyYXlgKS5cclxuICogLSBgZ3JvdXBgOiBBIGdyb3VwIG9mIGZvcm0gY29udHJvbHMgKGxpa2UgQW5ndWxhcidzIGBGb3JtR3JvdXBgKS5cclxuICovXHJcbmV4cG9ydCB0eXBlIENvbnRyb2xUeXBlID0gJ2NvbnRyb2wnIHwgJ2FycmF5JyB8ICdncm91cCc7XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIHJlYWN0aXZlIGZvcm0gY29udHJvbC4gIEl0IGhvbGRzIHRoZSB2YWx1ZSwgdmFsaWRhdGlvbiBzdGF0dXMsIGFuZCBvdGhlclxyXG4gKiBtZXRhZGF0YSBmb3IgYSBmb3JtIGZpZWxkLiAgVGhpcyBpcyB0aGUgY29yZSBidWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgcmVhY3RpdmUgZm9ybXNcclxuICogd2l0aCBzaWduYWxzLlxyXG4gKlxyXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgZm9ybSBjb250cm9sJ3MgdmFsdWUuXHJcbiAqIEB0eXBlUGFyYW0gVFBhcmVudCAtIFRoZSB0eXBlIG9mIHRoZSBwYXJlbnQgZm9ybSBjb250cm9sJ3MgdmFsdWUgKGlmIHRoaXMgY29udHJvbCBpcyBwYXJ0IG9mIGEgZ3JvdXAgb3IgYXJyYXkpLiBEZWZhdWx0cyB0byBgdW5kZWZpbmVkYC5cclxuICogQHR5cGVQYXJhbSBUQ29udHJvbFR5cGUgLSBUaGUgdHlwZSBvZiB0aGUgY29udHJvbCAoJ2NvbnRyb2wnLCAnYXJyYXknLCBvciAnZ3JvdXAnKS4gRGVmYXVsdHMgdG8gJ2NvbnRyb2wnLlxyXG4gKiBAdHlwZVBhcmFtIFRQYXJ0aWFsVmFsdWUgLSAgVGhlIHR5cGUgb2YgdGhlIHBhcnRpYWwgdmFsdWUsIHVzZWQgZm9yIHBhdGNoaW5nLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgRm9ybUNvbnRyb2xTaWduYWw8XHJcbiAgVCxcclxuICBUUGFyZW50ID0gdW5kZWZpbmVkLFxyXG4gIFRDb250cm9sVHlwZSBleHRlbmRzIENvbnRyb2xUeXBlID0gJ2NvbnRyb2wnLFxyXG4gIFRQYXJ0aWFsVmFsdWUgPSBUIHwgdW5kZWZpbmVkLFxyXG4+ID0ge1xyXG4gIC8qKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udHJvbC4gVXNlZCBmb3IgdHJhY2tpbmcgaW4gYEBmb3JgIGxvb3BzLiAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBtYWluIHZhbHVlIHNpZ25hbCBmb3IgdGhlIGNvbnRyb2wuICovXHJcbiAgdmFsdWU6IFdyaXRhYmxlU2lnbmFsPFQ+O1xyXG4gIC8qKiBBIHNpZ25hbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wncyB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkLiAqL1xyXG4gIGRpcnR5OiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgLyoqIEEgc2lnbmFsIGluZGljYXRpbmcgd2hldGhlciB0aGUgY29udHJvbCBoYXMgYmVlbiBpbnRlcmFjdGVkIHdpdGggKGUuZy4sIGJsdXJyZWQpLiAqL1xyXG4gIHRvdWNoZWQ6IFNpZ25hbDxib29sZWFuPjtcclxuICAvKiogQSBzaWduYWwgY29udGFpbmluZyB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2UgKGVtcHR5IHN0cmluZyBpZiB2YWxpZCkuICovXHJcbiAgZXJyb3I6IFNpZ25hbDxzdHJpbmc+O1xyXG4gIC8qKiBBIHNpZ25hbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgcGVuZGluZyAqL1xyXG4gIHBlbmRpbmc6IFNpZ25hbDxib29sZWFuPjtcclxuICAvKiogQSBzaWduYWwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLiAqL1xyXG4gIC8qKiBBIHNpZ25hbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgaW4gYSB2YWxpZCBzdGF0ZSAod2l0aG91dCBlcnJvcnMgJiBub3QgcGVuZGluZykgKi9cclxuICB2YWxpZDogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIGRpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgLyoqIEEgc2lnbmFsIGluZGljYXRpbmcgd2hldGhlciB0aGUgY29udHJvbCBpcyByZWFkLW9ubHkuICovXHJcbiAgcmVhZG9ubHk6IFNpZ25hbDxib29sZWFuPjtcclxuICAvKiogQSBzaWduYWwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIHJlcXVpcmVkLiAqL1xyXG4gIHJlcXVpcmVkOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgLyoqIEEgc2lnbmFsIGNvbnRhaW5pbmcgdGhlIGxhYmVsIGZvciB0aGUgY29udHJvbC4gKi9cclxuICBsYWJlbDogU2lnbmFsPHN0cmluZz47XHJcbiAgLyoqIEEgc2lnbmFsIGNvbnRhaW5pbmcgdGhlIGhpbnQgdGV4dCBmb3IgdGhlIGNvbnRyb2wuICovXHJcbiAgaGludDogU2lnbmFsPHN0cmluZz47XHJcbiAgLyoqIE1hcmtzIHRoZSBjb250cm9sIGFzIHRvdWNoZWQuICovXHJcbiAgbWFya0FzVG91Y2hlZDogKCkgPT4gdm9pZDtcclxuICAvKiogTWFya3MgdGhlIGNvbnRyb2wgYW5kIGFsbCBpdHMgY2hpbGQgY29udHJvbHMgKGlmIGFueSkgYXMgdG91Y2hlZC4gKi9cclxuICBtYXJrQWxsQXNUb3VjaGVkOiAoKSA9PiB2b2lkO1xyXG4gIC8qKiBNYXJrcyB0aGUgY29udHJvbCBhcyBwcmlzdGluZSAobm90IHRvdWNoZWQpLiAqL1xyXG4gIG1hcmtBc1ByaXN0aW5lOiAoKSA9PiB2b2lkO1xyXG4gIC8qKiBNYXJrcyB0aGUgY29udHJvbCBhbmQgYWxsIGl0cyBjaGlsZCBjb250cm9scyAoaWYgYW55KSBhcyBwcmlzdGluZS4gKi9cclxuICBtYXJrQWxsQXNQcmlzdGluZTogKCkgPT4gdm9pZDtcclxuICAvKipcclxuICAgKiBSZXNldHMgdGhlIGNvbnRyb2wgdG8gYSBuZXcgdmFsdWUgYW5kIHNldHMgYSBuZXcgaW5pdGlhbCB2YWx1ZS4gVGhpcyBpcyBpbnRlbmRlZCBmb3JcclxuICAgKiBzY2VuYXJpb3Mgd2hlcmUgdGhlIHVuZGVybHlpbmcgZGF0YSBpcyB1cGRhdGVkIGV4dGVybmFsbHkgKGUuZy4sIGRhdGEgY29taW5nIGZyb21cclxuICAgKiB0aGUgc2VydmVyKS4gIElmIHRoZSBjb250cm9sIGlzIG5vdCBkaXJ0eSwgdGhlIHZhbHVlIGlzIHVwZGF0ZWQuIElmIHRoZSBjb250cm9sICppcypcclxuICAgKiBkaXJ0eSwgdGhlIHZhbHVlIGlzICpub3QqIHVwZGF0ZWQgKHByZXNlcnZpbmcgdXNlciBjaGFuZ2VzKS5cclxuICAgKi9cclxuICByZWNvbmNpbGU6IChuZXdWYWx1ZTogVCkgPT4gdm9pZDtcclxuICAvKipcclxuICAgKiBTaW1pbGFyIHRvIGByZWNvbmNpbGVgLCBidXQgZm9yY2VzIHRoZSB1cGRhdGUgZXZlbiBpZiB0aGUgY29udHJvbCBpcyBkaXJ0eS5cclxuICAgKi9cclxuICBmb3JjZVJlY29uY2lsZTogKG5ld1ZhbHVlOiBUKSA9PiB2b2lkO1xyXG4gIC8qKiBSZXNldHMgdGhlIGNvbnRyb2wncyB2YWx1ZSB0byBpdHMgaW5pdGlhbCB2YWx1ZS4gKi9cclxuICByZXNldDogKCkgPT4gdm9pZDtcclxuICAvKiogUmVzZXRzIHRoZSBjb250cm9sJ3MgdmFsdWUgYW5kIGluaXRpYWwgdmFsdWUuICovXHJcbiAgcmVzZXRXaXRoSW5pdGlhbDogKGluaXRpYWw6IFQpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogVGhlIGRlcml2YXRpb24gZnVuY3Rpb24gdXNlZCB0byBjcmVhdGUgdGhpcyBjb250cm9sIGlmIGl0J3MgcGFydCBvZiBhIGBmb3JtR3JvdXBgIG9yIGBmb3JtQXJyYXlgLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGZyb20/OiBEZXJpdmVkU2lnbmFsPFRQYXJlbnQsIFQ+Wydmcm9tJ107XHJcbiAgLyoqIFRoZSBlcXVhbGl0eSBmdW5jdGlvbiB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBEZWZhdWx0cyB0byBgT2JqZWN0LmlzYC4gKi9cclxuICBlcXVhbDogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW47XHJcbiAgLyoqIFRoZSB0eXBlIG9mIHRoZSBjb250cm9sICgnY29udHJvbCcsICdhcnJheScsIG9yICdncm91cCcpLiAqL1xyXG4gIGNvbnRyb2xUeXBlOiBUQ29udHJvbFR5cGU7XHJcbiAgLyoqXHJcbiAgICogQSBzaWduYWwgcmVwcmVzZW50aW5nIHRoZSBwYXJ0aWFsIHZhbHVlIG9mIHRoZSBjb250cm9sLCBzdWl0YWJsZSBmb3IgcGF0Y2hpbmcgZGF0YSBvbiBhIHNlcnZlci5cclxuICAgKiBJdCBjb250YWlucyB0aGUgY2hhbmdlZCB2YWx1ZSBpZiBgZGlydHlgIGlzIGB0cnVlYC5cclxuICAgKi9cclxuICBwYXJ0aWFsVmFsdWU6IFNpZ25hbDxUUGFydGlhbFZhbHVlPjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIENyZWF0ZUZvcm1Db250cm9sT3B0aW9uczxcclxuICBULFxyXG4gIFRDb250cm9sVHlwZSBleHRlbmRzIENvbnRyb2xUeXBlID0gQ29udHJvbFR5cGUsXHJcbj4gPSBDcmVhdGVTaWduYWxPcHRpb25zPFQ+ICYge1xyXG4gIHZhbGlkYXRvcj86ICgpID0+ICh2YWx1ZTogVCkgPT4gc3RyaW5nO1xyXG4gIG9uVG91Y2hlZD86ICgpID0+IHZvaWQ7XHJcbiAgZGlzYWJsZT86ICgpID0+IGJvb2xlYW47XHJcbiAgcmVhZG9ubHk/OiAoKSA9PiBib29sZWFuO1xyXG4gIHJlcXVpcmVkPzogKCkgPT4gYm9vbGVhbjtcclxuICBsYWJlbD86ICgpID0+IHN0cmluZztcclxuICBpZD86ICgpID0+IHN0cmluZztcclxuICBoaW50PzogKCkgPT4gc3RyaW5nO1xyXG4gIGRpcnR5RXF1YWxpdHk/OiBWYWx1ZUVxdWFsaXR5Rm48VD47XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgY29udHJvbFR5cGU/OiBUQ29udHJvbFR5cGU7XHJcbiAgb3ZlcnJpZGVWYWxpZGF0aW9uPzogKCkgPT4gc3RyaW5nO1xyXG4gIHBlbmRpbmc/OiAoKSA9PiBib29sZWFuO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBgRm9ybUNvbnRyb2xTaWduYWxgLCBhIHJlYWN0aXZlIGZvcm0gY29udHJvbCB0aGF0IGhvbGRzIGEgdmFsdWUgYW5kIHRyYWNrcyBpdHNcclxuICogdmFsaWRpdHksIGRpcnR5IHN0YXRlLCB0b3VjaGVkIHN0YXRlLCBhbmQgb3RoZXIgbWV0YWRhdGEuXHJcbiAqXHJcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBmb3JtIGNvbnRyb2wncyB2YWx1ZS5cclxuICogQHR5cGVQYXJhbSBUUGFyZW50IC0gVGhlIHR5cGUgb2YgdGhlIHBhcmVudCBmb3JtIGNvbnRyb2wncyB2YWx1ZSAoaWYgdGhpcyBjb250cm9sIGlzIHBhcnQgb2YgYSBncm91cCBvciBhcnJheSkuXHJcbiAqIEB0eXBlUGFyYW0gVENvbnRyb2xUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuIERlZmF1bHRzIHRvIGAnY29udHJvbCdgLlxyXG4gKiBAdHlwZVBhcmFtIFRQYXJ0aWFsVmFsdWUgLSBUaGUgdHlwZSBvZiB2YWx1ZSB3aGVuIHBhdGNoaW5nXHJcbiAqIEBwYXJhbSBpbml0aWFsIC0gVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGNvbnRyb2wsIG9yIGEgYERlcml2ZWRTaWduYWxgIGlmIHRoaXMgY29udHJvbCBpcyBwYXJ0IG9mIGEgYGZvcm1Hcm91cGAgb3IgYGZvcm1BcnJheWAuXHJcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgY29udHJvbC5cclxuICogQHJldHVybnMgQSBgRm9ybUNvbnRyb2xTaWduYWxgIGluc3RhbmNlLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiAvLyBDcmVhdGUgYSBzaW1wbGUgZm9ybSBjb250cm9sOlxyXG4gKiBjb25zdCBuYW1lID0gZm9ybUNvbnRyb2woJ0luaXRpYWwgTmFtZScpO1xyXG4gKlxyXG4gKiAvLyBDcmVhdGUgYSBmb3JtIGNvbnRyb2wgd2l0aCB2YWxpZGF0aW9uOlxyXG4gKiBjb25zdCBhZ2UgPSBmb3JtQ29udHJvbCgwLCB7XHJcbiAqICAgdmFsaWRhdG9yOiAoKSA9PiAodmFsdWUpID0+IHZhbHVlID49IDE4ID8gJycgOiAnTXVzdCBiZSBhdCBsZWFzdCAxOCcsXHJcbiAqIH0pO1xyXG4gKlxyXG4gKiAvLyBDcmVhdGUgYSBkZXJpdmVkIGZvcm0gY29udHJvbCAoZXF1aXZhbGVudCB0byB0aGUgYWJvdmUsIGJ1dCBtb3JlIGV4cGxpY2l0KTpcclxuICogIGNvbnN0IHVzZXIgPSBzaWduYWwoeyBuYW1lOiAnSm9obiBEb2UnLCBhZ2U6IDMwIH0pO1xyXG4gKiAgY29uc3QgbmFtZSA9IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwge1xyXG4gKiAgICBmcm9tOiAodSkgPT4gdS5uYW1lLFxyXG4gKiAgICBvbkNoYW5nZTogKG5ld05hbWUpID0+IHVzZXIudXBkYXRlKHUgPT4gKHsuLi51LCBuYW1lOiBuZXdOYW1lfSkpXHJcbiAqICB9KSk7XHJcbiAqXHJcbiAqIC8vIENyZWF0ZSBhIGZvcm0gZ3JvdXAgd2l0aCBuZXN0ZWQgY29udHJvbHM6XHJcbiAqIGNvbnN0IHVzZXIgPSBzaWduYWwoeyBuYW1lOiAnSm9obiBEb2UnLCBhZ2U6IDMwIH0pO1xyXG4gKiBjb25zdCBmb3JtID0gZm9ybUdyb3VwKHVzZXIsIHtcclxuICogIG5hbWU6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ25hbWUnKSksXHJcbiAqICBhZ2U6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ2FnZScpKSxcclxuICogfSlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtQ29udHJvbDxcclxuICBULFxyXG4gIFRQYXJlbnQgPSB1bmRlZmluZWQsXHJcbiAgVENvbnRyb2xUeXBlIGV4dGVuZHMgQ29udHJvbFR5cGUgPSAnY29udHJvbCcsXHJcbiAgVFBhcnRpYWxWYWx1ZSA9IFQgfCB1bmRlZmluZWQsXHJcbj4oXHJcbiAgaW5pdGlhbDogRGVyaXZlZFNpZ25hbDxUUGFyZW50LCBUPiB8IFQsXHJcbiAgb3B0PzogQ3JlYXRlRm9ybUNvbnRyb2xPcHRpb25zPFQsIFRDb250cm9sVHlwZT4sXHJcbik6IEZvcm1Db250cm9sU2lnbmFsPFQsIFRQYXJlbnQsIFRDb250cm9sVHlwZSwgVFBhcnRpYWxWYWx1ZT4ge1xyXG4gIGNvbnN0IHZhbHVlID0gaXNTaWduYWwoaW5pdGlhbCkgPyBpbml0aWFsIDogc2lnbmFsKGluaXRpYWwsIG9wdCk7XHJcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gc2lnbmFsKHVudHJhY2tlZCh2YWx1ZSkpO1xyXG4gIGNvbnN0IGVxID0gb3B0Py5lcXVhbCA/PyBPYmplY3QuaXM7XHJcblxyXG4gIGNvbnN0IGRpcnR5RXEgPSBvcHQ/LmRpcnR5RXF1YWxpdHkgPz8gZXE7XHJcblxyXG4gIGNvbnN0IGRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gb3B0Py5kaXNhYmxlPy4oKSA/PyBmYWxzZSk7XHJcbiAgY29uc3QgcmVhZG9ubHkgPSBjb21wdXRlZCgoKSA9PiBvcHQ/LnJlYWRvbmx5Py4oKSA/PyBmYWxzZSk7XHJcblxyXG4gIGNvbnN0IGRpcnR5ID0gY29tcHV0ZWQoKCkgPT4gIWRpcnR5RXEodmFsdWUoKSwgaW5pdGlhbFZhbHVlKCkpKTtcclxuXHJcbiAgY29uc3QgdG91Y2hlZCA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gIGNvbnN0IHZhbGlkYXRvciA9IGNvbXB1dGVkKCgpID0+IG9wdD8udmFsaWRhdG9yPy4oKSA/PyAoKCkgPT4gJycpKTtcclxuXHJcbiAgY29uc3QgZXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAob3B0Py5vdmVycmlkZVZhbGlkYXRpb24pIHJldHVybiBvcHQub3ZlcnJpZGVWYWxpZGF0aW9uKCk7XHJcbiAgICBpZiAoZGlzYWJsZWQoKSB8fCByZWFkb25seSgpKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gdmFsaWRhdG9yKCkodmFsdWUoKSk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IG1hcmtBc1RvdWNoZWQgPSAoKSA9PiB7XHJcbiAgICB0b3VjaGVkLnNldCh0cnVlKTtcclxuICAgIG9wdD8ub25Ub3VjaGVkPy4oKTtcclxuICB9O1xyXG4gIGNvbnN0IG1hcmtBbGxBc1RvdWNoZWQgPSBtYXJrQXNUb3VjaGVkO1xyXG5cclxuICBjb25zdCBtYXJrQXNQcmlzdGluZSA9ICgpID0+IHRvdWNoZWQuc2V0KGZhbHNlKTtcclxuICBjb25zdCBtYXJrQWxsQXNQcmlzdGluZSA9IG1hcmtBc1ByaXN0aW5lO1xyXG5cclxuICBjb25zdCBsYWJlbCA9IGNvbXB1dGVkKCgpID0+IG9wdD8ubGFiZWw/LigpID8/ICcnKTtcclxuXHJcbiAgY29uc3QgcGFydGlhbFZhbHVlID0gY29tcHV0ZWQoKCkgPT4gKGRpcnR5KCkgPyB2YWx1ZSgpIDogdW5kZWZpbmVkKSk7XHJcblxyXG4gIGNvbnN0IGludGVybmFsUmVjb25jaWxlID0gKG5ld1ZhbHVlOiBULCBmb3JjZSA9IGZhbHNlKSA9PiB7XHJcbiAgICBjb25zdCBpc0RpcnR5ID0gdW50cmFja2VkKGRpcnR5KTtcclxuXHJcbiAgICBpZiAoIWlzRGlydHkgfHwgZm9yY2UpIHtcclxuICAgICAgLy8gdmVyeSBkYW5nZXJvdXMgdXNlIG9mIHVudHJhY2tlZCBoZXJlLCBkb24ndCBkbyB0aGlzIGV2ZXJ5d2hlcmUgOilcclxuICAgICAgLy8gdGhhbmtzIHRvICB1L3N5bmFseCBmb3IgdGhlIGlkZWEgdG8gdXNlIHVudHJhY2tlZCBoZXJlXHJcblxyXG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xyXG4gICAgICAgIGluaXRpYWxWYWx1ZS5zZXQobmV3VmFsdWUpO1xyXG4gICAgICAgIHZhbHVlLnNldChuZXdWYWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IHBlbmRpbmcgPSBjb21wdXRlZCgoKSA9PiBvcHQ/LnBlbmRpbmc/LigpID8/IGZhbHNlKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGlkOiBvcHQ/LmlkPy4oKSA/PyB2NygpLFxyXG4gICAgdmFsdWUsXHJcbiAgICBkaXJ0eSxcclxuICAgIHRvdWNoZWQsXHJcbiAgICBlcnJvcixcclxuICAgIGxhYmVsLFxyXG4gICAgcmVxdWlyZWQ6IGNvbXB1dGVkKCgpID0+IG9wdD8ucmVxdWlyZWQ/LigpID8/IGZhbHNlKSxcclxuICAgIGRpc2FibGVkLFxyXG4gICAgcmVhZG9ubHksXHJcbiAgICBwZW5kaW5nLFxyXG4gICAgdmFsaWQ6IGNvbXB1dGVkKCgpID0+ICFwZW5kaW5nKCkgJiYgIWVycm9yKCkpLFxyXG4gICAgaGludDogY29tcHV0ZWQoKCkgPT4gb3B0Py5oaW50Py4oKSA/PyAnJyksXHJcbiAgICBtYXJrQXNUb3VjaGVkLFxyXG4gICAgbWFya0FsbEFzVG91Y2hlZCxcclxuICAgIG1hcmtBc1ByaXN0aW5lLFxyXG4gICAgbWFya0FsbEFzUHJpc3RpbmUsXHJcbiAgICBmcm9tOiAoaXNTaWduYWwoaW5pdGlhbCkgPyBpbml0aWFsLmZyb20gOiB1bmRlZmluZWQpIGFzIEZvcm1Db250cm9sU2lnbmFsPFxyXG4gICAgICBULFxyXG4gICAgICBUUGFyZW50LFxyXG4gICAgICBUQ29udHJvbFR5cGVcclxuICAgID5bJ2Zyb20nXSxcclxuICAgIHJlY29uY2lsZTogKG5ld1ZhbHVlOiBUKSA9PiBpbnRlcm5hbFJlY29uY2lsZShuZXdWYWx1ZSksXHJcbiAgICBmb3JjZVJlY29uY2lsZTogKG5ld1ZhbHVlOiBUKSA9PiBpbnRlcm5hbFJlY29uY2lsZShuZXdWYWx1ZSwgdHJ1ZSksXHJcbiAgICByZXNldDogKCkgPT4ge1xyXG4gICAgICBvcHQ/Lm9uUmVzZXQ/LigpO1xyXG4gICAgICB2YWx1ZS5zZXQodW50cmFja2VkKGluaXRpYWxWYWx1ZSkpO1xyXG4gICAgfSxcclxuICAgIHJlc2V0V2l0aEluaXRpYWw6IChpbml0aWFsOiBUKSA9PiB7XHJcbiAgICAgIG9wdD8ub25SZXNldD8uKCk7XHJcbiAgICAgIGluaXRpYWxWYWx1ZS5zZXQoaW5pdGlhbCk7XHJcbiAgICAgIHZhbHVlLnNldChpbml0aWFsKTtcclxuICAgIH0sXHJcbiAgICBlcXVhbDogZXEsXHJcbiAgICBjb250cm9sVHlwZTogKG9wdD8uY29udHJvbFR5cGUgPz8gJ2NvbnRyb2wnKSBhcyBUQ29udHJvbFR5cGUsXHJcbiAgICBwYXJ0aWFsVmFsdWU6IHBhcnRpYWxWYWx1ZSBhcyBTaWduYWw8VFBhcnRpYWxWYWx1ZT4sXHJcbiAgfTtcclxufVxyXG4iXX0=","import { computed, linkedSignal, untracked, } from '@angular/core';\nimport { mergeArray } from '@mmstack/object';\nimport { derived } from '@mmstack/primitives';\nimport { formControl, } from './form-control';\nfunction createReconcileChildren(factory, opt) {\n return (length, source, prev) => {\n if (!prev) {\n const nextControls = [];\n for (let i = 0; i < length; i++) {\n nextControls.push(factory(derived(source, i, { equal: opt?.equal }), i));\n }\n return nextControls;\n }\n if (length === prev.length)\n return prev;\n const next = [...prev];\n if (length < prev.length) {\n next.splice(length);\n }\n else if (length > prev.length) {\n for (let i = prev.length; i < length; i++) {\n next.push(factory(derived(source, i, { equal: opt?.equal }), i));\n }\n }\n return next;\n };\n}\nexport function formArray(initial, factory, opt) {\n const eq = opt?.equal ?? Object.is;\n const arrayEqual = (a, b) => {\n if (a.length !== b.length)\n return false;\n if (!a.length)\n return true;\n return a.every((v, i) => eq(v, b[i]));\n };\n const min = computed(() => opt?.min?.() ?? 0);\n const max = computed(() => opt?.max?.() ?? Number.MAX_SAFE_INTEGER);\n const arrayOptions = {\n ...opt,\n equal: arrayEqual,\n dirtyEquality: (a, b) => a.length === b.length,\n controlType: 'array',\n };\n const ctrl = formControl(initial, arrayOptions);\n const length = computed(() => ctrl.value().length);\n const reconcileChildren = createReconcileChildren(factory, { equal: eq });\n // linkedSignal used to re-use previous value so that only length changes are affected and existing controls are kept, but updated\n const children = linkedSignal({\n source: () => length(),\n computation: (len, prev) => reconcileChildren(len, ctrl.value, prev?.value),\n });\n const ownError = computed(() => ctrl.error());\n const error = computed(() => {\n const own = ownError();\n if (own)\n return own;\n if (!children().length)\n return '';\n return children()\n .map((c, idx) => (c.error() ? `${idx}: ${c.error()}` : ''))\n .filter(Boolean)\n .join('\\n');\n });\n const dirty = computed(() => {\n if (ctrl.dirty())\n return true;\n if (!children().length)\n return false;\n return children().some((c) => c.dirty());\n });\n const markAllAsTouched = () => {\n ctrl.markAllAsTouched();\n for (const c of untracked(children)) {\n c.markAllAsTouched();\n }\n };\n const markAllAsPristine = () => {\n ctrl.markAllAsPristine();\n for (const c of untracked(children)) {\n c.markAllAsPristine();\n }\n };\n const toPartialValue = opt?.toPartialValue ?? ((v) => v);\n const partialValue = computed(() => {\n if (!dirty())\n return undefined;\n return children().map((c) => {\n const pv = c.partialValue();\n if (pv)\n return pv;\n if (c.controlType === 'control')\n return undefined;\n // return full value for child objects/arrays as this cannot be partially patched without idx\n return toPartialValue(c.value());\n });\n });\n const touched = computed(() => ctrl.touched() ||\n !!(children().length && children().some((c) => c.touched())));\n const reconcile = (newValue) => {\n const ctrls = untracked(children);\n for (let i = 0; i < newValue.length; i++) {\n ctrls.at(i)?.reconcile(newValue[i]); // reconcile existing controls that are relevant addition/removal will be handled after ctrl.reconcile through linkedSignal\n }\n ctrl.reconcile(mergeArray(newValue, untracked(ctrl.value)));\n };\n const forceReconcile = (newValue) => {\n const ctrls = untracked(children);\n for (let i = 0; i < newValue.length; i++) {\n ctrls.at(i)?.forceReconcile(newValue[i]);\n }\n ctrl.forceReconcile(newValue);\n };\n const childrenValid = computed(() => {\n if (!children().length)\n return true;\n return children().every((d) => d.valid());\n });\n const childrenPending = computed(() => !!children().length && children().some((d) => d.pending()));\n return {\n ...ctrl,\n ownError,\n error,\n valid: computed(() => ctrl.valid() && childrenValid()),\n pending: computed(() => ctrl.pending() || childrenPending()),\n touched,\n children,\n dirty,\n markAllAsTouched,\n markAllAsPristine,\n min,\n max,\n partialValue,\n canAdd: computed(() => !ctrl.disabled() && !ctrl.readonly() && length() < max()),\n canRemove: computed(() => !ctrl.disabled() && !ctrl.readonly() && length() > min()),\n reconcile,\n forceReconcile,\n reset: () => {\n for (const c of untracked(children)) {\n c.reset();\n }\n ctrl.reset();\n },\n resetWithInitial: (initial) => {\n const ctrls = untracked(children);\n for (let i = 0; i < initial.length; i++) {\n ctrls.at(i)?.resetWithInitial(initial[i]);\n }\n ctrl.resetWithInitial(initial);\n },\n push: (next) => ctrl.value.update((cur) => [...cur, next]),\n remove: (idx) => ctrl.value.update((cur) => cur.filter((_, i) => i !== idx)),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zvcm0vY29yZS9zcmMvbGliL2Zvcm0tYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sRUFDTCxXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQXlDeEIsU0FBUyx1QkFBdUIsQ0FJOUIsT0FBc0UsRUFDdEUsR0FBdUM7SUFFdkMsT0FBTyxDQUNMLE1BQWMsRUFDZCxNQUEyQixFQUMzQixJQUF5QixFQUNMLEVBQUU7UUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBRXhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDaEMsWUFBWSxDQUFDLElBQUksQ0FDZixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFeEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRXZCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixJ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RUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztLQUM5RCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgY29tcHV0ZWQsXHJcbiAgbGlua2VkU2lnbmFsLFxyXG4gIHVudHJhY2tlZCxcclxuICB0eXBlIFNpZ25hbCxcclxuICB0eXBlIFdyaXRhYmxlU2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtZXJnZUFycmF5IH0gZnJvbSAnQG1tc3RhY2svb2JqZWN0JztcclxuaW1wb3J0IHsgZGVyaXZlZCwgdHlwZSBEZXJpdmVkU2lnbmFsIH0gZnJvbSAnQG1tc3RhY2svcHJpbWl0aXZlcyc7XHJcbmltcG9ydCB7XHJcbiAgZm9ybUNvbnRyb2wsXHJcbiAgdHlwZSBDcmVhdGVGb3JtQ29udHJvbE9wdGlvbnMsXHJcbiAgdHlwZSBGb3JtQ29udHJvbFNpZ25hbCxcclxufSBmcm9tICcuL2Zvcm0tY29udHJvbCc7XHJcbmltcG9ydCB7IHR5cGUgU2lnbmFsVmFsdWUgfSBmcm9tICcuL3NpZ25hbC12YWx1ZS50eXBlJztcclxuXHJcbmV4cG9ydCB0eXBlIEZvcm1BcnJheVNpZ25hbDxcclxuICBULFxyXG4gIFRJbmRpdmlkdWFsU3RhdGUgZXh0ZW5kcyBGb3JtQ29udHJvbFNpZ25hbDxcclxuICAgIFQsXHJcbiAgICBhbnksXHJcbiAgICBhbnksXHJcbiAgICBhbnlcclxuICA+ID0gRm9ybUNvbnRyb2xTaWduYWw8VCwgYW55LCBhbnksIGFueT4sXHJcbiAgVFBhcmVudCA9IHVuZGVmaW5lZCxcclxuPiA9IEZvcm1Db250cm9sU2lnbmFsPFxyXG4gIFRbXSxcclxuICBUUGFyZW50LFxyXG4gICdhcnJheScsXHJcbiAgfCBFeGNsdWRlPFNpZ25hbFZhbHVlPFRJbmRpdmlkdWFsU3RhdGVbJ3BhcnRpYWxWYWx1ZSddPiwgbnVsbCB8IHVuZGVmaW5lZD5bXVxyXG4gIHwgdW5kZWZpbmVkXHJcbj4gJiB7XHJcbiAgb3duRXJyb3I6IFNpZ25hbDxzdHJpbmc+O1xyXG4gIGNoaWxkcmVuOiBTaWduYWw8VEluZGl2aWR1YWxTdGF0ZVtdPjtcclxuICBwdXNoOiAodmFsdWU6IFQpID0+IHZvaWQ7IC8vIGFkZCBuZXcgY29udHJvbCB3aXRoIHZhbHVlXHJcbiAgcmVtb3ZlOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDsgLy8gcmVtb3ZlIGF0IGluZGV4XHJcbiAgbWluOiBTaWduYWw8bnVtYmVyPjsgLy8gZm9yIGRpc3BsYXkgcHVycG9zZXNcclxuICBtYXg6IFNpZ25hbDxudW1iZXI+OyAvLyBmb3IgZGlzcGxheSBwdXJwb3Nlc1xyXG4gIGNhbkFkZDogU2lnbmFsPGJvb2xlYW4+OyAvLyBkaXNhYmxlIGFkZCBidXR0b24gaWYgZmFsc2VcclxuICBjYW5SZW1vdmU6IFNpZ25hbDxib29sZWFuPjsgLy8gZGlzYWJsZSByZW1vdmUgYnV0dG9ucyBpZiBmYWxzZVxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybUFycmF5U2lnbmFsT3B0aW9uczxcclxuICBULFxyXG4gIFRJbmRpdmlkdWFsU3RhdGUgZXh0ZW5kcyBGb3JtQ29udHJvbFNpZ25hbDxULCBhbnksIGFueSwgYW55PixcclxuPiA9IE9taXQ8Q3JlYXRlRm9ybUNvbnRyb2xPcHRpb25zPFRbXT4sICdlcXVhbCc+ICYge1xyXG4gIG1pbj86ICgpID0+IG51bWJlcjtcclxuICBtYXg/OiAoKSA9PiBudW1iZXI7XHJcbiAgZXF1YWw/OiAoYTogVCwgYjogVCkgPT4gYm9vbGVhbjtcclxuICB0b1BhcnRpYWxWYWx1ZT86IChcclxuICAgIHY6IFQsXHJcbiAgKSA9PiBFeGNsdWRlPFNpZ25hbFZhbHVlPFRJbmRpdmlkdWFsU3RhdGVbJ3BhcnRpYWxWYWx1ZSddPiwgbnVsbCB8IHVuZGVmaW5lZD47XHJcbn07XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVSZWNvbmNpbGVDaGlsZHJlbjxcclxuICBULFxyXG4gIFRJbmRpdmlkdWFsU3RhdGUgZXh0ZW5kcyBGb3JtQ29udHJvbFNpZ25hbDxULCBhbnksIGFueSwgYW55PixcclxuPihcclxuICBmYWN0b3J5OiAodmFsOiBEZXJpdmVkU2lnbmFsPFRbXSwgVD4sIGlkeDogbnVtYmVyKSA9PiBUSW5kaXZpZHVhbFN0YXRlLFxyXG4gIG9wdDogeyBlcXVhbDogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW4gfSxcclxuKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIGxlbmd0aDogbnVtYmVyLFxyXG4gICAgc291cmNlOiBXcml0YWJsZVNpZ25hbDxUW10+LFxyXG4gICAgcHJldj86IFRJbmRpdmlkdWFsU3RhdGVbXSxcclxuICApOiBUSW5kaXZpZHVhbFN0YXRlW10gPT4ge1xyXG4gICAgaWYgKCFwcmV2KSB7XHJcbiAgICAgIGNvbnN0IG5leHRDb250cm9scyA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG5leHRDb250cm9scy5wdXNoKFxyXG4gICAgICAgICAgZmFjdG9yeShkZXJpdmVkKHNvdXJjZSwgaSwgeyBlcXVhbDogb3B0Py5lcXVhbCB9KSwgaSksXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5leHRDb250cm9scztcclxuICAgIH1cclxuXHJcbiAgICBpZiAobGVuZ3RoID09PSBwcmV2Lmxlbmd0aCkgcmV0dXJuIHByZXY7XHJcblxyXG4gICAgY29uc3QgbmV4dCA9IFsuLi5wcmV2XTtcclxuXHJcbiAgICBpZiAobGVuZ3RoIDwgcHJldi5sZW5ndGgpIHtcclxuICAgICAgbmV4dC5zcGxpY2UobGVuZ3RoKTtcclxuICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gcHJldi5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IHByZXYubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBuZXh0LnB1c2goZmFjdG9yeShkZXJpdmVkKHNvdXJjZSwgaSwgeyBlcXVhbDogb3B0Py5lcXVhbCB9KSwgaSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5leHQ7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1BcnJheTxcclxuICBULFxyXG4gIFRJbmRpdmlkdWFsU3RhdGUgZXh0ZW5kcyBGb3JtQ29udHJvbFNpZ25hbDxcclxuICAgIFQsXHJcbiAgICBhbnksXHJcbiAgICBhbnksXHJcbiAgICBhbnlcclxuICA+ID0gRm9ybUNvbnRyb2xTaWduYWw8VCwgYW55LCBhbnksIGFueT4sXHJcbiAgVFBhcmVudCA9IHVuZGVmaW5lZCxcclxuPihcclxuICBpbml0aWFsOiBUW10gfCBEZXJpdmVkU2lnbmFsPFRQYXJlbnQsIFRbXT4sXHJcbiAgZmFjdG9yeTogKHZhbDogRGVyaXZlZFNpZ25hbDxUW10sIFQ+LCBpZHg6IG51bWJlcikgPT4gVEluZGl2aWR1YWxTdGF0ZSxcclxuICBvcHQ/OiBDcmVhdGVGb3JtQXJyYXlTaWduYWxPcHRpb25zPFQsIFRJbmRpdmlkdWFsU3RhdGU+LFxyXG4pOiBGb3JtQXJyYXlTaWduYWw8VCwgVEluZGl2aWR1YWxTdGF0ZSwgVFBhcmVudD4ge1xyXG4gIGNvbnN0IGVxID0gb3B0Py5lcXVhbCA/PyBPYmplY3QuaXM7XHJcblxyXG4gIGNvbnN0IGFycmF5RXF1YWwgPSAoYTogVFtdLCBiOiBUW10pID0+IHtcclxuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICghYS5sZW5ndGgpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIHJldHVybiBhLmV2ZXJ5KCh2LCBpKSA9PiBlcSh2LCBiW2ldKSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgbWluID0gY29tcHV0ZWQoKCkgPT4gb3B0Py5taW4/LigpID8/IDApO1xyXG4gIGNvbnN0IG1heCA9IGNvbXB1dGVkKCgpID0+IG9wdD8ubWF4Py4oKSA/PyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7XHJcblxyXG4gIGNvbnN0IGFycmF5T3B0aW9uczogQ3JlYXRlRm9ybUNvbnRyb2xPcHRpb25zPFRbXSwgJ2FycmF5Jz4gPSB7XHJcbiAgICAuLi5vcHQsXHJcbiAgICBlcXVhbDogYXJyYXlFcXVhbCxcclxuICAgIGRpcnR5RXF1YWxpdHk6IChhLCBiKSA9PiBhLmxlbmd0aCA9PT0gYi5sZW5ndGgsXHJcbiAgICBjb250cm9sVHlwZTogJ2FycmF5JyxcclxuICB9O1xyXG5cclxuICBjb25zdCBjdHJsID0gZm9ybUNvbnRyb2w8VFtdLCBUUGFyZW50LCAnYXJyYXknPihcclxuICAgIGluaXRpYWwsXHJcbiAgICBhcnJheU9wdGlvbnMsXHJcbiAgKSBzYXRpc2ZpZXMgRm9ybUNvbnRyb2xTaWduYWw8VFtdLCBUUGFyZW50LCAnYXJyYXknPjtcclxuXHJcbiAgY29uc3QgbGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4gY3RybC52YWx1ZSgpLmxlbmd0aCk7XHJcblxyXG4gIGNvbnN0IHJlY29uY2lsZUNoaWxkcmVuID0gY3JlYXRlUmVjb25jaWxlQ2hpbGRyZW48VCwgVEluZGl2aWR1YWxTdGF0ZT4oXHJcbiAgICBmYWN0b3J5LFxyXG4gICAgeyBlcXVhbDogZXEgfSxcclxuICApO1xyXG5cclxuICAvLyBsaW5rZWRTaWduYWwgdXNlZCB0byByZS11c2UgcHJldmlvdXMgdmFsdWUgc28gdGhhdCBvbmx5IGxlbmd0aCBjaGFuZ2VzIGFyZSBhZmZlY3RlZCBhbmQgZXhpc3RpbmcgY29udHJvbHMgYXJlIGtlcHQsIGJ1dCB1cGRhdGVkXHJcbiAgY29uc3QgY2hpbGRyZW4gPSBsaW5rZWRTaWduYWw8bnVtYmVyLCBUSW5kaXZpZHVhbFN0YXRlW10+KHtcclxuICAgIHNvdXJjZTogKCkgPT4gbGVuZ3RoKCksXHJcbiAgICBjb21wdXRhdGlvbjogKGxlbiwgcHJldikgPT4gcmVjb25jaWxlQ2hpbGRyZW4obGVuLCBjdHJsLnZhbHVlLCBwcmV2Py52YWx1ZSksXHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IG93bkVycm9yID0gY29tcHV0ZWQoKCkgPT4gY3RybC5lcnJvcigpKTtcclxuXHJcbiAgY29uc3QgZXJyb3IgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+IHtcclxuICAgIGNvbnN0IG93biA9IG93bkVycm9yKCk7XHJcbiAgICBpZiAob3duKSByZXR1cm4gb3duO1xyXG4gICAgaWYgKCFjaGlsZHJlbigpLmxlbmd0aCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGNoaWxkcmVuKClcclxuICAgICAgLm1hcCgoYywgaWR4KSA9PiAoYy5lcnJvcigpID8gYCR7aWR4fTogJHtjLmVycm9yKCl9YCA6ICcnKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKVxyXG4gICAgICAuam9pbignXFxuJyk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGRpcnR5ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKGN0cmwuZGlydHkoKSkgcmV0dXJuIHRydWU7XHJcbiAgICBpZiAoIWNoaWxkcmVuKCkubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gY2hpbGRyZW4oKS5zb21lKChjKSA9PiBjLmRpcnR5KCkpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBtYXJrQWxsQXNUb3VjaGVkID0gKCkgPT4ge1xyXG4gICAgY3RybC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBmb3IgKGNvbnN0IGMgb2YgdW50cmFja2VkKGNoaWxkcmVuKSkge1xyXG4gICAgICBjLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IG1hcmtBbGxBc1ByaXN0aW5lID0gKCkgPT4ge1xyXG4gICAgY3RybC5tYXJrQWxsQXNQcmlzdGluZSgpO1xyXG4gICAgZm9yIChjb25zdCBjIG9mIHVudHJhY2tlZChjaGlsZHJlbikpIHtcclxuICAgICAgYy5tYXJrQWxsQXNQcmlzdGluZSgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IHRvUGFydGlhbFZhbHVlID0gb3B0Py50b1BhcnRpYWxWYWx1ZSA/PyAoKHY6IFQpID0+IHYpO1xyXG4gIGNvbnN0IHBhcnRpYWxWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghZGlydHkoKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIHJldHVybiBjaGlsZHJlbigpLm1hcCgoYykgPT4ge1xyXG4gICAgICBjb25zdCBwdiA9IGMucGFydGlhbFZhbHVlKCk7XHJcbiAgICAgIGlmIChwdikgcmV0dXJuIHB2O1xyXG4gICAgICBpZiAoYy5jb250cm9sVHlwZSA9PT0gJ2NvbnRyb2wnKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgLy8gcmV0dXJuIGZ1bGwgdmFsdWUgZm9yICBjaGlsZCBvYmplY3RzL2FycmF5cyBhcyB0aGlzIGNhbm5vdCBiZSBwYXJ0aWFsbHkgcGF0Y2hlZCB3aXRob3V0IGlkeFxyXG4gICAgICByZXR1cm4gdG9QYXJ0aWFsVmFsdWUoYy52YWx1ZSgpKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCB0b3VjaGVkID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PlxyXG4gICAgICBjdHJsLnRvdWNoZWQoKSB8fFxyXG4gICAgICAhIShjaGlsZHJlbigpLmxlbmd0aCAmJiBjaGlsZHJlbigpLnNvbWUoKGMpID0+IGMudG91Y2hlZCgpKSksXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgcmVjb25jaWxlID0gKG5ld1ZhbHVlOiBUW10pID0+IHtcclxuICAgIGNvbnN0IGN0cmxzID0gdW50cmFja2VkKGNoaWxkcmVuKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld1ZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGN0cmxzLmF0KGkpPy5yZWNvbmNpbGUobmV3VmFsdWVbaV0pOyAvLyByZWNvbmNpbGUgZXhpc3RpbmcgY29udHJvbHMgdGhhdCBhcmUgcmVsZXZhbnQgYWRkaXRpb24vcmVtb3ZhbCB3aWxsIGJlIGhhbmRsZWQgYWZ0ZXIgY3RybC5yZWNvbmNpbGUgdGhyb3VnaCBsaW5rZWRTaWduYWxcclxuICAgIH1cclxuXHJcbiAgICBjdHJsLnJlY29uY2lsZShtZXJnZUFycmF5KG5ld1ZhbHVlLCB1bnRyYWNrZWQoY3RybC52YWx1ZSkpKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBmb3JjZVJlY29uY2lsZSA9IChuZXdWYWx1ZTogVFtdKSA9PiB7XHJcbiAgICBjb25zdCBjdHJscyA9IHVudHJhY2tlZChjaGlsZHJlbik7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdWYWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjdHJscy5hdChpKT8uZm9yY2VSZWNvbmNpbGUobmV3VmFsdWVbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGN0cmwuZm9yY2VSZWNvbmNpbGUobmV3VmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGNoaWxkcmVuVmFsaWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAoIWNoaWxkcmVuKCkubGVuZ3RoKSByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiBjaGlsZHJlbigpLmV2ZXJ5KChkKSA9PiBkLnZhbGlkKCkpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBjaGlsZHJlblBlbmRpbmcgPSBjb21wdXRlZChcclxuICAgICgpID0+ICEhY2hpbGRyZW4oKS5sZW5ndGggJiYgY2hpbGRyZW4oKS5zb21lKChkKSA9PiBkLnBlbmRpbmcoKSksXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIC4uLmN0cmwsXHJcbiAgICBvd25FcnJvcixcclxuICAgIGVycm9yLFxyXG4gICAgdmFsaWQ6IGNvbXB1dGVkKCgpID0+IGN0cmwudmFsaWQoKSAmJiBjaGlsZHJlblZhbGlkKCkpLFxyXG4gICAgcGVuZGluZzogY29tcHV0ZWQoKCkgPT4gY3RybC5wZW5kaW5nKCkgfHwgY2hpbGRyZW5QZW5kaW5nKCkpLFxyXG4gICAgdG91Y2hlZCxcclxuICAgIGNoaWxkcmVuLFxyXG4gICAgZGlydHksXHJcbiAgICBtYXJrQWxsQXNUb3VjaGVkLFxyXG4gICAgbWFya0FsbEFzUHJpc3RpbmUsXHJcbiAgICBtaW4sXHJcbiAgICBtYXgsXHJcbiAgICBwYXJ0aWFsVmFsdWUsXHJcbiAgICBjYW5BZGQ6IGNvbXB1dGVkKFxyXG4gICAgICAoKSA9PiAhY3RybC5kaXNhYmxlZCgpICYmICFjdHJsLnJlYWRvbmx5KCkgJiYgbGVuZ3RoKCkgPCBtYXgoKSxcclxuICAgICksXHJcbiAgICBjYW5SZW1vdmU6IGNvbXB1dGVkKFxyXG4gICAgICAoKSA9PiAhY3RybC5kaXNhYmxlZCgpICYmICFjdHJsLnJlYWRvbmx5KCkgJiYgbGVuZ3RoKCkgPiBtaW4oKSxcclxuICAgICksXHJcbiAgICByZWNvbmNpbGUsXHJcbiAgICBmb3JjZVJlY29uY2lsZSxcclxuICAgIHJlc2V0OiAoKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgYyBvZiB1bnRyYWNrZWQoY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgYy5yZXNldCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGN0cmwucmVzZXQoKTtcclxuICAgIH0sXHJcbiAgICByZXNldFdpdGhJbml0aWFsOiAoaW5pdGlhbDogVFtdKSA9PiB7XHJcbiAgICAgIGNvbnN0IGN0cmxzID0gdW50cmFja2VkKGNoaWxkcmVuKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbml0aWFsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY3RybHMuYXQoaSk/LnJlc2V0V2l0aEluaXRpYWwoaW5pdGlhbFtpXSk7XHJcbiAgICAgIH1cclxuICAgICAgY3RybC5yZXNldFdpdGhJbml0aWFsKGluaXRpYWwpO1xyXG4gICAgfSxcclxuICAgIHB1c2g6IChuZXh0KSA9PiBjdHJsLnZhbHVlLnVwZGF0ZSgoY3VyKSA9PiBbLi4uY3VyLCBuZXh0XSksXHJcbiAgICByZW1vdmU6IChpZHgpID0+XHJcbiAgICAgIGN0cmwudmFsdWUudXBkYXRlKChjdXIpID0+IGN1ci5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGlkeCkpLFxyXG4gIH07XHJcbn1cclxuIl19","import { computed, isSignal, signal, untracked, } from '@angular/core';\nimport { entries, mergeIfObject, values } from '@mmstack/object';\nimport { isDerivation, toFakeSignalDerivation, } from '@mmstack/primitives';\nimport { formControl, } from './form-control';\n/**\n * Creates a `FormGroupSignal`, which aggregates a set of child form controls into a single object.\n *\n * @typeParam T - The type of the form group's value (an object).\n * @typeParam TDerivations - A record where keys are the names of the child controls and values are the `FormControlSignal` instances.\n * @typeParam TParent - The type of the parent form control's value (if this group is nested within another group or array).\n * @param initial - The initial value of the form group (or a `WritableSignal` or `DerivedSignal` if the group is nested).\n * @param providedChildren - An object containing the child `FormControlSignal` instances, or a function that returns such an object.\n * Using a function allows for dynamic creation of child controls (e.g., in response to changes in other signals).\n * @param options - Optional configuration options for the form group.\n * @returns A `FormGroupSignal` instance.\n *\n * @example\n * // Create a simple form group:\n * const user = signal({ name: 'John Doe', age: 30 });\n * const form = formGroup(user, {\n * name: formControl(derived(user, 'name')),\n * age: formControl(derived(user, 'age')),\n * })\n *\n * // Create a nested form group:\n * const user = signal({ name: 'John', age: 30, address: {street: \"Some street\"} });\n *\n * const address = derived(user, 'address');\n * const userForm = formGroup(user, {\n * name: formControl(derived(user, 'name')),\n * age: formControl(derived(user, 'age')),\n * address: formGroup(address, {\n * street: formControl(derived(address, (address) => address.street), {\n * validator: () => (value) => value ? \"\" : \"required!\"\n * }) // you can create deeply nested structures.\n * })\n * });\n *\n * // Create a form group with dynamically created children replaced rare FormRecord requirements.\n * const showAddress = signal(false);\n * type Characteristic = {\n * valueType: 'string';\n * value: string;\n * } | {\n * valueType: 'number';\n * value: number;\n * }\n * const char = signal<Characteristic>({ valueType: 'string', value: '' });\n * const charForm = formGroup(char, () => {\n * if (char().valueType === 'string) return createStringControl(char);\n * return createNumberControl(char);\n * });\n *\n */\nexport function formGroup(initial, providedChildren, opt) {\n const valueSignal = isSignal(initial) ? initial : signal(initial);\n // we fake a derivation if not present, so that .from is present on the signal\n const value = isDerivation(valueSignal)\n ? valueSignal\n : toFakeSignalDerivation(valueSignal);\n // we allow for a function/signal to be passed, this case should only be used if the child controls change dependent upon something, say if a formControl is flipped into a formGroup.\n const children = typeof providedChildren === 'function'\n ? computed(() => providedChildren())\n : computed(() => providedChildren);\n // array allows for easier handling\n const derivationsArray = computed(() => values(children()));\n const childrenDirty = computed(() => !!derivationsArray().length && derivationsArray().some((d) => d.dirty()));\n // by default dont compare object references, just use childrenDirtySignal\n const baseDirtyEq = opt?.dirtyEquality ?? opt?.equal ?? (() => true);\n // function which calls a signal becomes a signal\n const dirtyEquality = (a, b) => {\n return baseDirtyEq(a, b) && !childrenDirty();\n };\n // group control\n const ctrl = formControl(value, {\n ...opt,\n dirtyEquality,\n controlType: 'group',\n readonly: () => {\n // readonly if is readonly or all children are readonly\n if (opt?.readonly?.())\n return true;\n return (!!derivationsArray().length &&\n derivationsArray().every((d) => d.readonly()));\n },\n disable: () => {\n if (opt?.disable?.())\n return true;\n return (!!derivationsArray().length &&\n derivationsArray().every((d) => d.disabled()));\n },\n });\n const childrenTouched = computed(() => !!derivationsArray().length &&\n derivationsArray().some((d) => d.touched()));\n const touched = computed(() => ctrl.touched() || childrenTouched());\n const childError = computed(() => {\n if (!derivationsArray().length)\n return '';\n return derivationsArray()\n .map((d) => (d.error() ? `${d.label()}: ${d.error()}` : ''))\n .filter(Boolean)\n .join('\\n');\n });\n const error = computed(() => {\n const ownError = ctrl.error();\n if (ownError)\n return ownError;\n return childError() ? 'INVALID' : '';\n });\n const markAllAsTouched = () => {\n ctrl.markAllAsTouched();\n for (const ctrl of untracked(derivationsArray)) {\n ctrl.markAllAsTouched();\n }\n };\n const markAllAsPristine = () => {\n ctrl.markAllAsPristine();\n for (const ctrl of untracked(derivationsArray)) {\n ctrl.markAllAsPristine();\n }\n };\n const reconcile = (newValue) => {\n // set the children values based on the derivation of the new value\n for (const ctrl of untracked(derivationsArray)) {\n const from = ctrl.from;\n if (!from)\n continue;\n ctrl.reconcile(from(newValue));\n }\n ctrl.reconcile(mergeIfObject(newValue, untracked(value)));\n };\n const forceReconcile = (newValue) => {\n for (const ctrl of untracked(derivationsArray)) {\n const from = ctrl.from;\n if (!from)\n continue;\n ctrl.forceReconcile(from(newValue));\n }\n ctrl.forceReconcile(newValue);\n };\n const createBaseValueFn = opt?.createBasePartialValue;\n const basePartialValue = createBaseValueFn\n ? computed(() => createBaseValueFn(ctrl.value()))\n : computed(() => ({}));\n const partialValue = computed(() => {\n const obj = {\n ...basePartialValue(),\n };\n if (!ctrl.dirty())\n return obj;\n for (const [key, ctrl] of entries(children())) {\n const pv = ctrl.partialValue();\n if (pv === undefined)\n continue;\n obj[key] = pv;\n }\n return obj;\n });\n const childrenValid = computed(() => {\n if (!derivationsArray().length)\n return true;\n return derivationsArray().every((d) => d.valid());\n });\n const childrenPending = computed(() => !!derivationsArray().length &&\n derivationsArray().some((d) => d.pending()));\n return {\n ...ctrl,\n children,\n partialValue,\n reconcile,\n forceReconcile,\n ownError: ctrl.error,\n touched,\n error,\n valid: computed(() => ctrl.valid() && childrenValid()),\n pending: computed(() => ctrl.pending() || childrenPending()),\n markAllAsPristine,\n markAllAsTouched,\n reset: () => {\n for (const ctrl of untracked(derivationsArray)) {\n ctrl.reset();\n }\n ctrl.reset();\n },\n resetWithInitial: (initial) => {\n for (const ctrl of untracked(derivationsArray)) {\n const from = ctrl.from;\n if (from)\n ctrl.resetWithInitial(from(initial));\n else\n ctrl.reset();\n }\n ctrl.resetWithInitial(initial);\n },\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zvcm0vY29yZS9zcmMvbGliL2Zvcm0tZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLHNCQUFzQixHQUV2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQStEeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpREc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUt2QixPQUEwRCxFQUMxRCxnQkFBcUQsRUFDckQsR0FBNkM7SUFFN0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRSw4RUFBOEU7SUFDOUUsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFhLFdBQVcsQ0FBQztRQUNqRCxDQUFDLENBQUMsV0FBVztRQUNiLENBQUMsQ0FBQyxzQkFBc0IsQ0FBYSxXQUFXLENBQUMsQ0FBQztJQUVwRCxzTEFBc0w7SUFDdEwsTUFBTSxRQUFRLEdBQ1osT0FBTyxnQkFBZ0IsS0FBSyxVQUFVO1FBQ3BDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFdkMsbUNBQW1D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UyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdkIsSUFBSSxJQUFJO29CQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs7b0JBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgY29tcHV0ZWQsXHJcbiAgaXNTaWduYWwsXHJcbiAgc2lnbmFsLFxyXG4gIHVudHJhY2tlZCxcclxuICB0eXBlIFNpZ25hbCxcclxuICB0eXBlIFdyaXRhYmxlU2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBlbnRyaWVzLCBtZXJnZUlmT2JqZWN0LCB2YWx1ZXMgfSBmcm9tICdAbW1zdGFjay9vYmplY3QnO1xyXG5pbXBvcnQge1xyXG4gIGlzRGVyaXZhdGlvbixcclxuICB0b0Zha2VTaWduYWxEZXJpdmF0aW9uLFxyXG4gIHR5cGUgRGVyaXZlZFNpZ25hbCxcclxufSBmcm9tICdAbW1zdGFjay9wcmltaXRpdmVzJztcclxuaW1wb3J0IHtcclxuICBmb3JtQ29udHJvbCxcclxuICB0eXBlIENyZWF0ZUZvcm1Db250cm9sT3B0aW9ucyxcclxuICB0eXBlIEZvcm1Db250cm9sU2lnbmFsLFxyXG59IGZyb20gJy4vZm9ybS1jb250cm9sJztcclxuaW1wb3J0IHsgdHlwZSBTaWduYWxWYWx1ZSB9IGZyb20gJy4vc2lnbmFsLXZhbHVlLnR5cGUnO1xyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHRoZSBwYXJ0aWFsIHZhbHVlIHR5cGVzIGZyb20gYSByZWNvcmQgb2YgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMuXHJcbiAqIFRoaXMgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGBwYXJ0aWFsVmFsdWVgIHR5cGUgZm9yIGBGb3JtR3JvdXBTaWduYWxgLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbnR5cGUgRGVyaXZhdGlvblBhcnRpYWxWYWx1ZXM8XHJcbiAgVERlcml2YXRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgRm9ybUNvbnRyb2xTaWduYWw8YW55LCBhbnksIGFueSwgYW55Pj4sXHJcbj4gPSB7XHJcbiAgW0sgaW4ga2V5b2YgVERlcml2YXRpb25zXTogRXhjbHVkZTxcclxuICAgIFNpZ25hbFZhbHVlPFREZXJpdmF0aW9uc1tLXVsncGFydGlhbFZhbHVlJ10+LFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgPjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgZ3JvdXAgb2YgZm9ybSBjb250cm9scywgc2ltaWxhciB0byBBbmd1bGFyJ3MgYEZvcm1Hcm91cGAuICBJdCBhZ2dyZWdhdGVzXHJcbiAqIHRoZSB2YWx1ZXMgYW5kIHN0YXRlcyBvZiBpdHMgY2hpbGQgY29udHJvbHMgaW50byBhIHNpbmdsZSBvYmplY3QuXHJcbiAqXHJcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBmb3JtIGdyb3VwJ3MgdmFsdWUgKGFuIG9iamVjdCkuXHJcbiAqIEB0eXBlUGFyYW0gVERlcml2YXRpb25zIC0gQSByZWNvcmQgd2hlcmUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBjaGlsZCBjb250cm9scyBhbmQgdmFsdWVzIGFyZSB0aGUgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMuXHJcbiAqIEB0eXBlUGFyYW0gVFBhcmVudCAtIFRoZSB0eXBlIG9mIHRoZSBwYXJlbnQgZm9ybSBjb250cm9sJ3MgdmFsdWUgKGlmIHRoaXMgZ3JvdXAgaXMgbmVzdGVkKS5cclxuICovXHJcbmV4cG9ydCB0eXBlIEZvcm1Hcm91cFNpZ25hbDxcclxuICBULFxyXG4gIFREZXJpdmF0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEZvcm1Db250cm9sU2lnbmFsPGFueSwgVCwgYW55LCBhbnk+PixcclxuICBUUGFyZW50ID0gdW5kZWZpbmVkLFxyXG4+ID0gRm9ybUNvbnRyb2xTaWduYWw8XHJcbiAgVCxcclxuICBUUGFyZW50LFxyXG4gICdncm91cCcsXHJcbiAgUGFydGlhbDxEZXJpdmF0aW9uUGFydGlhbFZhbHVlczxURGVyaXZhdGlvbnM+PlxyXG4+ICYge1xyXG4gIC8qKlxyXG4gICAqIEEgc2lnbmFsIHRoYXQgaG9sZHMgYSByZWNvcmQgb2YgdGhlIGNoaWxkIGZvcm0gY29udHJvbHMuICBUaGUga2V5cyBhcmUgdGhlIG5hbWVzXHJcbiAgICogb2YgdGhlIGNvbnRyb2xzLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIGBGb3JtQ29udHJvbFNpZ25hbGAgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIGNoaWxkcmVuOiBTaWduYWw8VERlcml2YXRpb25zPjtcclxuICAvKipcclxuICAgKiBBIHNpZ25hbCB0aGF0IGhvbGRzIHRoZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGdyb3VwIGl0c2VsZiAoZXhjbHVkaW5nIGNoaWxkIGVycm9ycykuXHJcbiAgICovXHJcbiAgb3duRXJyb3I6IFNpZ25hbDxzdHJpbmc+O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgYEZvcm1Hcm91cFNpZ25hbGAuICBFeHRlbmRzIGBDcmVhdGVGb3JtQ29udHJvbE9wdGlvbnNgLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybUdyb3VwT3B0aW9uczxcclxuICBULFxyXG4gIFREZXJpdmF0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEZvcm1Db250cm9sU2lnbmFsPGFueSwgVCwgYW55LCBhbnk+PixcclxuPiA9IENyZWF0ZUZvcm1Db250cm9sT3B0aW9uczxULCAnZ3JvdXAnPiAmIHtcclxuICAvKipcclxuICAgKiBBbiBvcHRpb25hbCBmdW5jdGlvbiB0byBjcmVhdGUgYSBiYXNlIG9iamVjdCBmb3IgdGhlIGBwYXJ0aWFsVmFsdWVgIHNpZ25hbC5cclxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHByZS1wb3B1bGF0ZSB0aGUgcGFydGlhbCB2YWx1ZSB3aXRoIGRlZmF1bHQgdmFsdWVzIG9yXHJcbiAgICogdG8gcGVyZm9ybSBjdXN0b20gbG9naWMgYmVmb3JlIG1lcmdpbmcgaW4gdGhlIHBhcnRpYWwgdmFsdWVzIGZyb20gY2hpbGQgY29udHJvbHMuXHJcbiAgICovXHJcbiAgY3JlYXRlQmFzZVBhcnRpYWxWYWx1ZT86IChcclxuICAgIHZhbHVlOiBULFxyXG4gICkgPT4gUGFydGlhbDxEZXJpdmF0aW9uUGFydGlhbFZhbHVlczxURGVyaXZhdGlvbnM+PjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgYEZvcm1Hcm91cFNpZ25hbGAsIHdoaWNoIGFnZ3JlZ2F0ZXMgYSBzZXQgb2YgY2hpbGQgZm9ybSBjb250cm9scyBpbnRvIGEgc2luZ2xlIG9iamVjdC5cclxuICpcclxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGZvcm0gZ3JvdXAncyB2YWx1ZSAoYW4gb2JqZWN0KS5cclxuICogQHR5cGVQYXJhbSBURGVyaXZhdGlvbnMgLSAgQSByZWNvcmQgd2hlcmUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBjaGlsZCBjb250cm9scyBhbmQgdmFsdWVzIGFyZSB0aGUgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMuXHJcbiAqIEB0eXBlUGFyYW0gVFBhcmVudCAtIFRoZSB0eXBlIG9mIHRoZSBwYXJlbnQgZm9ybSBjb250cm9sJ3MgdmFsdWUgKGlmIHRoaXMgZ3JvdXAgaXMgbmVzdGVkIHdpdGhpbiBhbm90aGVyIGdyb3VwIG9yIGFycmF5KS5cclxuICogQHBhcmFtIGluaXRpYWwgLSBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgZm9ybSBncm91cCAob3IgYSBgV3JpdGFibGVTaWduYWxgIG9yIGBEZXJpdmVkU2lnbmFsYCBpZiB0aGUgZ3JvdXAgaXMgbmVzdGVkKS5cclxuICogQHBhcmFtIHByb3ZpZGVkQ2hpbGRyZW4gLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgY2hpbGQgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMsIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHN1Y2ggYW4gb2JqZWN0LlxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIGEgZnVuY3Rpb24gYWxsb3dzIGZvciBkeW5hbWljIGNyZWF0aW9uIG9mIGNoaWxkIGNvbnRyb2xzIChlLmcuLCBpbiByZXNwb25zZSB0byBjaGFuZ2VzIGluIG90aGVyIHNpZ25hbHMpLlxyXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGZvcm0gZ3JvdXAuXHJcbiAqIEByZXR1cm5zIEEgYEZvcm1Hcm91cFNpZ25hbGAgaW5zdGFuY2UuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vIENyZWF0ZSBhIHNpbXBsZSBmb3JtIGdyb3VwOlxyXG4gKiAgY29uc3QgdXNlciA9IHNpZ25hbCh7IG5hbWU6ICdKb2huIERvZScsIGFnZTogMzAgfSk7XHJcbiAqICBjb25zdCBmb3JtID0gZm9ybUdyb3VwKHVzZXIsIHtcclxuICogIG5hbWU6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ25hbWUnKSksXHJcbiAqICBhZ2U6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ2FnZScpKSxcclxuICogIH0pXHJcbiAqXHJcbiAqIC8vIENyZWF0ZSBhIG5lc3RlZCBmb3JtIGdyb3VwOlxyXG4gKiAgY29uc3QgdXNlciA9IHNpZ25hbCh7IG5hbWU6ICdKb2huJywgYWdlOiAzMCwgYWRkcmVzczoge3N0cmVldDogXCJTb21lIHN0cmVldFwifSB9KTtcclxuICpcclxuICogY29uc3QgYWRkcmVzcyA9IGRlcml2ZWQodXNlciwgJ2FkZHJlc3MnKTtcclxuICogY29uc3QgdXNlckZvcm0gPSBmb3JtR3JvdXAodXNlciwge1xyXG4gKiAgIG5hbWU6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ25hbWUnKSksXHJcbiAqICAgYWdlOiBmb3JtQ29udHJvbChkZXJpdmVkKHVzZXIsICdhZ2UnKSksXHJcbiAqICAgYWRkcmVzczogZm9ybUdyb3VwKGFkZHJlc3MsIHtcclxuICogICAgICAgc3RyZWV0OiBmb3JtQ29udHJvbChkZXJpdmVkKGFkZHJlc3MsIChhZGRyZXNzKSA9PiBhZGRyZXNzLnN0cmVldCksIHtcclxuICogICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4gKHZhbHVlKSA9PiB2YWx1ZSA/IFwiXCIgOiBcInJlcXVpcmVkIVwiXHJcbiAqICAgICAgIH0pIC8vIHlvdSBjYW4gY3JlYXRlIGRlZXBseSBuZXN0ZWQgc3RydWN0dXJlcy5cclxuICogICB9KVxyXG4gKiB9KTtcclxuICpcclxuICogLy8gQ3JlYXRlIGEgZm9ybSBncm91cCB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY2hpbGRyZW4gcmVwbGFjZWQgcmFyZSBGb3JtUmVjb3JkIHJlcXVpcmVtZW50cy5cclxuICogY29uc3Qgc2hvd0FkZHJlc3MgPSBzaWduYWwoZmFsc2UpO1xyXG4gKiB0eXBlIENoYXJhY3RlcmlzdGljID0ge1xyXG4gKiAgdmFsdWVUeXBlOiAnc3RyaW5nJztcclxuICogIHZhbHVlOiBzdHJpbmc7XHJcbiAqIH0gfCB7XHJcbiAqICB2YWx1ZVR5cGU6ICdudW1iZXInO1xyXG4gKiAgdmFsdWU6IG51bWJlcjtcclxuICogfVxyXG4gKiBjb25zdCBjaGFyID0gc2lnbmFsPENoYXJhY3RlcmlzdGljPih7IHZhbHVlVHlwZTogJ3N0cmluZycsIHZhbHVlOiAnJyB9KTtcclxuICogY29uc3QgY2hhckZvcm0gPSBmb3JtR3JvdXAoY2hhciwgKCkgPT4ge1xyXG4gKiAgaWYgKGNoYXIoKS52YWx1ZVR5cGUgPT09ICdzdHJpbmcpIHJldHVybiBjcmVhdGVTdHJpbmdDb250cm9sKGNoYXIpO1xyXG4gKiAgcmV0dXJuIGNyZWF0ZU51bWJlckNvbnRyb2woY2hhcik7XHJcbiAqIH0pO1xyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1Hcm91cDxcclxuICBULFxyXG4gIFREZXJpdmF0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEZvcm1Db250cm9sU2lnbmFsPGFueSwgVCwgYW55LCBhbnk+PixcclxuICBUUGFyZW50ID0gdW5kZWZpbmVkLFxyXG4+KFxyXG4gIGluaXRpYWw6IERlcml2ZWRTaWduYWw8VFBhcmVudCwgVD4gfCBUIHwgV3JpdGFibGVTaWduYWw8VD4sXHJcbiAgcHJvdmlkZWRDaGlsZHJlbjogKCgpID0+IFREZXJpdmF0aW9ucykgfCBURGVyaXZhdGlvbnMsXHJcbiAgb3B0PzogQ3JlYXRlRm9ybUdyb3VwT3B0aW9uczxULCBURGVyaXZhdGlvbnM+LFxyXG4pOiBGb3JtR3JvdXBTaWduYWw8VCwgVERlcml2YXRpb25zLCBUUGFyZW50PiB7XHJcbiAgY29uc3QgdmFsdWVTaWduYWwgPSBpc1NpZ25hbChpbml0aWFsKSA/IGluaXRpYWwgOiBzaWduYWwoaW5pdGlhbCk7XHJcbiAgLy8gd2UgZmFrZSBhIGRlcml2YXRpb24gaWYgbm90IHByZXNlbnQsIHNvIHRoYXQgLmZyb20gaXMgcHJlc2VudCBvbiB0aGUgc2lnbmFsXHJcbiAgY29uc3QgdmFsdWUgPSBpc0Rlcml2YXRpb248VFBhcmVudCwgVD4odmFsdWVTaWduYWwpXHJcbiAgICA/IHZhbHVlU2lnbmFsXHJcbiAgICA6IHRvRmFrZVNpZ25hbERlcml2YXRpb248VFBhcmVudCwgVD4odmFsdWVTaWduYWwpO1xyXG5cclxuICAvLyB3ZSBhbGxvdyBmb3IgYSBmdW5jdGlvbi9zaWduYWwgdG8gYmUgcGFzc2VkLCB0aGlzIGNhc2Ugc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB0aGUgY2hpbGQgY29udHJvbHMgY2hhbmdlIGRlcGVuZGVudCB1cG9uIHNvbWV0aGluZywgc2F5IGlmIGEgZm9ybUNvbnRyb2wgaXMgZmxpcHBlZCBpbnRvIGEgZm9ybUdyb3VwLlxyXG4gIGNvbnN0IGNoaWxkcmVuID1cclxuICAgIHR5cGVvZiBwcm92aWRlZENoaWxkcmVuID09PSAnZnVuY3Rpb24nXHJcbiAgICAgID8gY29tcHV0ZWQoKCkgPT4gcHJvdmlkZWRDaGlsZHJlbigpKVxyXG4gICAgICA6IGNvbXB1dGVkKCgpID0+IHByb3ZpZGVkQ2hpbGRyZW4pO1xyXG5cclxuICAvLyBhcnJheSBhbGxvd3MgZm9yIGVhc2llciBoYW5kbGluZ1xyXG4gIGNvbnN0IGRlcml2YXRpb25zQXJyYXkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZXMoY2hpbGRyZW4oKSkpO1xyXG5cclxuICBjb25zdCBjaGlsZHJlbkRpcnR5ID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PlxyXG4gICAgICAhIWRlcml2YXRpb25zQXJyYXkoKS5sZW5ndGggJiYgZGVyaXZhdGlvbnNBcnJheSgpLnNvbWUoKGQpID0+IGQuZGlydHkoKSksXHJcbiAgKTtcclxuXHJcbiAgLy8gYnkgZGVmYXVsdCBkb250IGNvbXBhcmUgb2JqZWN0IHJlZmVyZW5jZXMsIGp1c3QgdXNlIGNoaWxkcmVuRGlydHlTaWduYWxcclxuICBjb25zdCBiYXNlRGlydHlFcSA9IG9wdD8uZGlydHlFcXVhbGl0eSA/PyBvcHQ/LmVxdWFsID8/ICgoKSA9PiB0cnVlKTtcclxuXHJcbiAgLy8gZnVuY3Rpb24gd2hpY2ggY2FsbHMgYSBzaWduYWwgYmVjb21lcyBhIHNpZ25hbFxyXG4gIGNvbnN0IGRpcnR5RXF1YWxpdHkgPSAoYTogVCwgYjogVCkgPT4ge1xyXG4gICAgcmV0dXJuIGJhc2VEaXJ0eUVxKGEsIGIpICYmICFjaGlsZHJlbkRpcnR5KCk7XHJcbiAgfTtcclxuXHJcbiAgLy8gZ3JvdXAgY29udHJvbFxyXG4gIGNvbnN0IGN0cmwgPSBmb3JtQ29udHJvbDxULCBUUGFyZW50LCAnZ3JvdXAnPih2YWx1ZSwge1xyXG4gICAgLi4ub3B0LFxyXG4gICAgZGlydHlFcXVhbGl0eSxcclxuICAgIGNvbnRyb2xUeXBlOiAnZ3JvdXAnLFxyXG4gICAgcmVhZG9ubHk6ICgpID0+IHtcclxuICAgICAgLy8gcmVhZG9ubHkgaWYgaXMgcmVhZG9ubHkgb3IgYWxsIGNoaWxkcmVuIGFyZSByZWFkb25seVxyXG4gICAgICBpZiAob3B0Py5yZWFkb25seT8uKCkpIHJldHVybiB0cnVlO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgICEhZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCAmJlxyXG4gICAgICAgIGRlcml2YXRpb25zQXJyYXkoKS5ldmVyeSgoZCkgPT4gZC5yZWFkb25seSgpKVxyXG4gICAgICApO1xyXG4gICAgfSxcclxuICAgIGRpc2FibGU6ICgpID0+IHtcclxuICAgICAgaWYgKG9wdD8uZGlzYWJsZT8uKCkpIHJldHVybiB0cnVlO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgICEhZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCAmJlxyXG4gICAgICAgIGRlcml2YXRpb25zQXJyYXkoKS5ldmVyeSgoZCkgPT4gZC5kaXNhYmxlZCgpKVxyXG4gICAgICApO1xyXG4gICAgfSxcclxuICB9KSBzYXRpc2ZpZXMgRm9ybUNvbnRyb2xTaWduYWw8VCwgVFBhcmVudCwgJ2dyb3VwJz47XHJcblxyXG4gIGNvbnN0IGNoaWxkcmVuVG91Y2hlZCA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgISFkZXJpdmF0aW9uc0FycmF5KCkubGVuZ3RoICYmXHJcbiAgICAgIGRlcml2YXRpb25zQXJyYXkoKS5zb21lKChkKSA9PiBkLnRvdWNoZWQoKSksXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgdG91Y2hlZCA9IGNvbXB1dGVkKCgpID0+IGN0cmwudG91Y2hlZCgpIHx8IGNoaWxkcmVuVG91Y2hlZCgpKTtcclxuXHJcbiAgY29uc3QgY2hpbGRFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGRlcml2YXRpb25zQXJyYXkoKVxyXG4gICAgICAubWFwKChkKSA9PiAoZC5lcnJvcigpID8gYCR7ZC5sYWJlbCgpfTogJHtkLmVycm9yKCl9YCA6ICcnKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKVxyXG4gICAgICAuam9pbignXFxuJyk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGVycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgb3duRXJyb3IgPSBjdHJsLmVycm9yKCk7XHJcbiAgICBpZiAob3duRXJyb3IpIHJldHVybiBvd25FcnJvcjtcclxuICAgIHJldHVybiBjaGlsZEVycm9yKCkgPyAnSU5WQUxJRCcgOiAnJztcclxuICB9KTtcclxuXHJcbiAgY29uc3QgbWFya0FsbEFzVG91Y2hlZCA9ICgpID0+IHtcclxuICAgIGN0cmwubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICBjdHJsLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb25zdCBtYXJrQWxsQXNQcmlzdGluZSA9ICgpID0+IHtcclxuICAgIGN0cmwubWFya0FsbEFzUHJpc3RpbmUoKTtcclxuICAgIGZvciAoY29uc3QgY3RybCBvZiB1bnRyYWNrZWQoZGVyaXZhdGlvbnNBcnJheSkpIHtcclxuICAgICAgY3RybC5tYXJrQWxsQXNQcmlzdGluZSgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IHJlY29uY2lsZSA9IChuZXdWYWx1ZTogVCkgPT4ge1xyXG4gICAgLy8gc2V0IHRoZSBjaGlsZHJlbiB2YWx1ZXMgYmFzZWQgb24gdGhlIGRlcml2YXRpb24gb2YgdGhlIG5ldyB2YWx1ZVxyXG4gICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICBjb25zdCBmcm9tID0gY3RybC5mcm9tO1xyXG4gICAgICBpZiAoIWZyb20pIGNvbnRpbnVlO1xyXG4gICAgICBjdHJsLnJlY29uY2lsZShmcm9tKG5ld1ZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBjdHJsLnJlY29uY2lsZShtZXJnZUlmT2JqZWN0KG5ld1ZhbHVlLCB1bnRyYWNrZWQodmFsdWUpKSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZm9yY2VSZWNvbmNpbGUgPSAobmV3VmFsdWU6IFQpID0+IHtcclxuICAgIGZvciAoY29uc3QgY3RybCBvZiB1bnRyYWNrZWQoZGVyaXZhdGlvbnNBcnJheSkpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IGN0cmwuZnJvbTtcclxuICAgICAgaWYgKCFmcm9tKSBjb250aW51ZTtcclxuICAgICAgY3RybC5mb3JjZVJlY29uY2lsZShmcm9tKG5ld1ZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBjdHJsLmZvcmNlUmVjb25jaWxlKG5ld1ZhbHVlKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBjcmVhdGVCYXNlVmFsdWVGbiA9IG9wdD8uY3JlYXRlQmFzZVBhcnRpYWxWYWx1ZTtcclxuXHJcbiAgY29uc3QgYmFzZVBhcnRpYWxWYWx1ZTogU2lnbmFsPFxyXG4gICAgUGFydGlhbDxEZXJpdmF0aW9uUGFydGlhbFZhbHVlczxURGVyaXZhdGlvbnM+PlxyXG4gID4gPSBjcmVhdGVCYXNlVmFsdWVGblxyXG4gICAgPyBjb21wdXRlZCgoKSA9PiBjcmVhdGVCYXNlVmFsdWVGbihjdHJsLnZhbHVlKCkpKVxyXG4gICAgOiBjb21wdXRlZCgoKSA9PiAoe30pKTtcclxuXHJcbiAgY29uc3QgcGFydGlhbFZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgb2JqOiBQYXJ0aWFsPERlcml2YXRpb25QYXJ0aWFsVmFsdWVzPFREZXJpdmF0aW9ucz4+ID0ge1xyXG4gICAgICAuLi5iYXNlUGFydGlhbFZhbHVlKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICghY3RybC5kaXJ0eSgpKSByZXR1cm4gb2JqO1xyXG5cclxuICAgIGZvciAoY29uc3QgW2tleSwgY3RybF0gb2YgZW50cmllcyhjaGlsZHJlbigpKSkge1xyXG4gICAgICBjb25zdCBwdiA9IGN0cmwucGFydGlhbFZhbHVlKCk7XHJcblxyXG4gICAgICBpZiAocHYgPT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgIG9ialtrZXldID0gcHY7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgY2hpbGRyZW5WYWxpZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gZGVyaXZhdGlvbnNBcnJheSgpLmV2ZXJ5KChkKSA9PiBkLnZhbGlkKCkpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBjaGlsZHJlblBlbmRpbmcgPSBjb21wdXRlZChcclxuICAgICgpID0+XHJcbiAgICAgICEhZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCAmJlxyXG4gICAgICBkZXJpdmF0aW9uc0FycmF5KCkuc29tZSgoZCkgPT4gZC5wZW5kaW5nKCkpLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAuLi5jdHJsLFxyXG4gICAgY2hpbGRyZW4sXHJcbiAgICBwYXJ0aWFsVmFsdWUsXHJcbiAgICByZWNvbmNpbGUsXHJcbiAgICBmb3JjZVJlY29uY2lsZSxcclxuICAgIG93bkVycm9yOiBjdHJsLmVycm9yLFxyXG4gICAgdG91Y2hlZCxcclxuICAgIGVycm9yLFxyXG4gICAgdmFsaWQ6IGNvbXB1dGVkKCgpID0+IGN0cmwudmFsaWQoKSAmJiBjaGlsZHJlblZhbGlkKCkpLFxyXG4gICAgcGVuZGluZzogY29tcHV0ZWQoKCkgPT4gY3RybC5wZW5kaW5nKCkgfHwgY2hpbGRyZW5QZW5kaW5nKCkpLFxyXG4gICAgbWFya0FsbEFzUHJpc3RpbmUsXHJcbiAgICBtYXJrQWxsQXNUb3VjaGVkLFxyXG4gICAgcmVzZXQ6ICgpID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICAgIGN0cmwucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgICBjdHJsLnJlc2V0KCk7XHJcbiAgICB9LFxyXG4gICAgcmVzZXRXaXRoSW5pdGlhbDogKGluaXRpYWw6IFQpID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICAgIGNvbnN0IGZyb20gPSBjdHJsLmZyb207XHJcbiAgICAgICAgaWYgKGZyb20pIGN0cmwucmVzZXRXaXRoSW5pdGlhbChmcm9tKGluaXRpYWwpKTtcclxuICAgICAgICBlbHNlIGN0cmwucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgICBjdHJsLnJlc2V0V2l0aEluaXRpYWwoaW5pdGlhbCk7XHJcbiAgICB9LFxyXG4gIH07XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW1zdGFjay1mb3JtLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mb3JtL2NvcmUvc3JjL21tc3RhY2stZm9ybS1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mmstack-form-core.mjs","sources":["../tmp-esm2022/lib/form-control.js","../tmp-esm2022/lib/form-array.js","../tmp-esm2022/lib/form-group.js","../tmp-esm2022/mmstack-form-core.js"],"sourcesContent":["import { computed, isSignal, signal, untracked, } from '@angular/core';\nimport { v7 } from 'uuid';\n/**\n * Creates a `FormControlSignal`, a reactive form control that holds a value and tracks its\n * validity, dirty state, touched state, and other metadata.\n *\n * @typeParam T - The type of the form control's value.\n * @typeParam TParent - The type of the parent form control's value (if this control is part of a group or array).\n * @typeParam TControlType - The type of the control. Defaults to `'control'`.\n * @typeParam TPartialValue - The type of value when patching\n * @param initial - The initial value of the control, or a `DerivedSignal` if this control is part of a `formGroup` or `formArray`.\n * @param options - Optional configuration options for the control.\n * @returns A `FormControlSignal` instance.\n *\n * @example\n * // Create a simple form control:\n * const name = formControl('Initial Name');\n *\n * // Create a form control with validation:\n * const age = formControl(0, {\n * validator: () => (value) => value >= 18 ? '' : 'Must be at least 18',\n * });\n *\n * // Create a derived form control (equivalent to the above, but more explicit):\n * const user = signal({ name: 'John Doe', age: 30 });\n * const name = formControl(derived(user, {\n * from: (u) => u.name,\n * onChange: (newName) => user.update(u => ({...u, name: newName}))\n * }));\n *\n * // Create a form group with nested controls:\n * const user = signal({ name: 'John Doe', age: 30 });\n * const form = formGroup(user, {\n * name: formControl(derived(user, 'name')),\n * age: formControl(derived(user, 'age')),\n * })\n */\nexport function formControl(initial, opt) {\n const value = isSignal(initial) ? initial : signal(initial, opt);\n const initialValue = signal(untracked(value), ...(ngDevMode ? [{ debugName: \"initialValue\" }] : []));\n const eq = opt?.equal ?? Object.is;\n const dirtyEq = opt?.dirtyEquality ?? eq;\n const disabled = computed(() => opt?.disable?.() ?? false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n const readonly = computed(() => opt?.readonly?.() ?? false, ...(ngDevMode ? [{ debugName: \"readonly\" }] : []));\n const dirty = computed(() => !dirtyEq(value(), initialValue()), ...(ngDevMode ? [{ debugName: \"dirty\" }] : []));\n const touched = signal(false, ...(ngDevMode ? [{ debugName: \"touched\" }] : []));\n const validator = computed(() => opt?.validator?.() ?? (() => ''), ...(ngDevMode ? [{ debugName: \"validator\" }] : []));\n const error = computed(() => {\n if (opt?.overrideValidation)\n return opt.overrideValidation();\n if (disabled() || readonly())\n return '';\n return validator()(value());\n }, ...(ngDevMode ? [{ debugName: \"error\" }] : []));\n const markAsTouched = () => {\n touched.set(true);\n opt?.onTouched?.();\n };\n const markAllAsTouched = markAsTouched;\n const markAsPristine = () => touched.set(false);\n const markAllAsPristine = markAsPristine;\n const label = computed(() => opt?.label?.() ?? '', ...(ngDevMode ? [{ debugName: \"label\" }] : []));\n const partialValue = computed(() => (dirty() ? value() : undefined), ...(ngDevMode ? [{ debugName: \"partialValue\" }] : []));\n const internalReconcile = (newValue, force = false) => {\n const isDirty = untracked(dirty);\n if (!isDirty || force) {\n // very dangerous use of untracked here, don't do this everywhere :)\n // thanks to u/synalx for the idea to use untracked here\n untracked(() => {\n initialValue.set(newValue);\n value.set(newValue);\n });\n }\n };\n const pending = computed(() => opt?.pending?.() ?? false, ...(ngDevMode ? [{ debugName: \"pending\" }] : []));\n return {\n id: opt?.id?.() ?? v7(),\n value,\n dirty,\n touched,\n error,\n label,\n required: computed(() => opt?.required?.() ?? false),\n disabled,\n readonly,\n pending,\n valid: computed(() => !pending() && !error()),\n hint: computed(() => opt?.hint?.() ?? ''),\n markAsTouched,\n markAllAsTouched,\n markAsPristine,\n markAllAsPristine,\n from: (isSignal(initial) ? initial.from : undefined),\n reconcile: (newValue) => internalReconcile(newValue),\n forceReconcile: (newValue) => internalReconcile(newValue, true),\n reset: () => {\n opt?.onReset?.();\n value.set(untracked(initialValue));\n },\n resetWithInitial: (initial) => {\n opt?.onReset?.();\n initialValue.set(initial);\n value.set(initial);\n },\n equal: eq,\n controlType: (opt?.controlType ?? 'control'),\n partialValue: partialValue,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZm9ybS9jb3JlL3NyYy9saWIvZm9ybS1jb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBS1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQTRHMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQU16QixPQUFzQyxFQUN0QyxHQUErQztJQUUvQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyx3REFBQyxDQUFDO0lBQzlDLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUVuQyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztJQUV6QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksS0FBSyxvREFBQyxDQUFDO0lBQzNELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxLQUFLLG9EQUFDLENBQUM7SUFFNUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFlB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QUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FJMUM7UUFDVCxTQUFTLEVBQUUsQ0FBQyxRQUFXLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztRQUN2RCxjQUFjLEVBQUUsQ0FBQyxRQUFXLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7UUFDbEUsS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUNWLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELGdCQUFnQixFQUFFLENBQUMsT0FBVSxFQUFFLEVBQUU7WUFDL0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxLQUFLLEVBQUUsRUFBRTtRQUNULFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxXQUFXLElBQUksU0FBUyxDQUFpQjtRQUM1RCxZQUFZLEVBQUUsWUFBcUM7S0FDcEQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGNvbXB1dGVkLFxyXG4gIGlzU2lnbmFsLFxyXG4gIHNpZ25hbCxcclxuICB1bnRyYWNrZWQsXHJcbiAgdHlwZSBDcmVhdGVTaWduYWxPcHRpb25zLFxyXG4gIHR5cGUgU2lnbmFsLFxyXG4gIHR5cGUgVmFsdWVFcXVhbGl0eUZuLFxyXG4gIHR5cGUgV3JpdGFibGVTaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHR5cGUgRGVyaXZlZFNpZ25hbCB9IGZyb20gJ0BtbXN0YWNrL3ByaW1pdGl2ZXMnO1xyXG5pbXBvcnQgeyB2NyB9IGZyb20gJ3V1aWQnO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgdGhlIHR5cGUgb2YgYSBmb3JtIGNvbnRyb2wuXHJcbiAqIC0gYGNvbnRyb2xgOiBBIHNpbmdsZSBmb3JtIGNvbnRyb2wgKGUuZy4sIGFuIGlucHV0IGZpZWxkKS5cclxuICogLSBgYXJyYXlgOiBBbiBhcnJheSBvZiBmb3JtIGNvbnRyb2xzIChsaWtlIEFuZ3VsYXIncyBgRm9ybUFycmF5YCkuXHJcbiAqIC0gYGdyb3VwYDogQSBncm91cCBvZiBmb3JtIGNvbnRyb2xzIChsaWtlIEFuZ3VsYXIncyBgRm9ybUdyb3VwYCkuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBDb250cm9sVHlwZSA9ICdjb250cm9sJyB8ICdhcnJheScgfCAnZ3JvdXAnO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSByZWFjdGl2ZSBmb3JtIGNvbnRyb2wuICBJdCBob2xkcyB0aGUgdmFsdWUsIHZhbGlkYXRpb24gc3RhdHVzLCBhbmQgb3RoZXJcclxuICogbWV0YWRhdGEgZm9yIGEgZm9ybSBmaWVsZC4gIFRoaXMgaXMgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIHJlYWN0aXZlIGZvcm1zXHJcbiAqIHdpdGggc2lnbmFscy5cclxuICpcclxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGZvcm0gY29udHJvbCdzIHZhbHVlLlxyXG4gKiBAdHlwZVBhcmFtIFRQYXJlbnQgLSBUaGUgdHlwZSBvZiB0aGUgcGFyZW50IGZvcm0gY29udHJvbCdzIHZhbHVlIChpZiB0aGlzIGNvbnRyb2wgaXMgcGFydCBvZiBhIGdyb3VwIG9yIGFycmF5KS4gRGVmYXVsdHMgdG8gYHVuZGVmaW5lZGAuXHJcbiAqIEB0eXBlUGFyYW0gVENvbnRyb2xUeXBlIC0gVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wgKCdjb250cm9sJywgJ2FycmF5Jywgb3IgJ2dyb3VwJykuIERlZmF1bHRzIHRvICdjb250cm9sJy5cclxuICogQHR5cGVQYXJhbSBUUGFydGlhbFZhbHVlIC0gIFRoZSB0eXBlIG9mIHRoZSBwYXJ0aWFsIHZhbHVlLCB1c2VkIGZvciBwYXRjaGluZy5cclxuICovXHJcbmV4cG9ydCB0eXBlIEZvcm1Db250cm9sU2lnbmFsPFxyXG4gIFQsXHJcbiAgVFBhcmVudCA9IHVuZGVmaW5lZCxcclxuICBUQ29udHJvbFR5cGUgZXh0ZW5kcyBDb250cm9sVHlwZSA9ICdjb250cm9sJyxcclxuICBUUGFydGlhbFZhbHVlID0gVCB8IHVuZGVmaW5lZCxcclxuPiA9IHtcclxuICAvKiogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbnRyb2wuIFVzZWQgZm9yIHRyYWNraW5nIGluIGBAZm9yYCBsb29wcy4gKi9cclxuICBpZDogc3RyaW5nO1xyXG4gIC8qKiBUaGUgbWFpbiB2YWx1ZSBzaWduYWwgZm9yIHRoZSBjb250cm9sLiAqL1xyXG4gIHZhbHVlOiBXcml0YWJsZVNpZ25hbDxUPjtcclxuICAvKiogQSBzaWduYWwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjb250cm9sJ3MgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZC4gKi9cclxuICBkaXJ0eTogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIC8qKiBBIHNpZ25hbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wgaGFzIGJlZW4gaW50ZXJhY3RlZCB3aXRoIChlLmcuLCBibHVycmVkKS4gKi9cclxuICB0b3VjaGVkOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgLyoqIEEgc2lnbmFsIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlIChlbXB0eSBzdHJpbmcgaWYgdmFsaWQpLiAqL1xyXG4gIGVycm9yOiBTaWduYWw8c3RyaW5nPjtcclxuICAvKiogQSBzaWduYWwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIHBlbmRpbmcgKi9cclxuICBwZW5kaW5nOiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgLyoqIEEgc2lnbmFsIGluZGljYXRpbmcgd2hldGhlciB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC4gKi9cclxuICAvKiogQSBzaWduYWwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIGluIGEgdmFsaWQgc3RhdGUgKHdpdGhvdXQgZXJyb3JzICYgbm90IHBlbmRpbmcpICovXHJcbiAgdmFsaWQ6IFNpZ25hbDxib29sZWFuPjtcclxuICBkaXNhYmxlZDogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIC8qKiBBIHNpZ25hbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgcmVhZC1vbmx5LiAqL1xyXG4gIHJlYWRvbmx5OiBTaWduYWw8Ym9vbGVhbj47XHJcbiAgLyoqIEEgc2lnbmFsIGluZGljYXRpbmcgd2hldGhlciB0aGUgY29udHJvbCBpcyByZXF1aXJlZC4gKi9cclxuICByZXF1aXJlZDogU2lnbmFsPGJvb2xlYW4+O1xyXG4gIC8qKiBBIHNpZ25hbCBjb250YWluaW5nIHRoZSBsYWJlbCBmb3IgdGhlIGNvbnRyb2wuICovXHJcbiAgbGFiZWw6IFNpZ25hbDxzdHJpbmc+O1xyXG4gIC8qKiBBIHNpZ25hbCBjb250YWluaW5nIHRoZSBoaW50IHRleHQgZm9yIHRoZSBjb250cm9sLiAqL1xyXG4gIGhpbnQ6IFNpZ25hbDxzdHJpbmc+O1xyXG4gIC8qKiBNYXJrcyB0aGUgY29udHJvbCBhcyB0b3VjaGVkLiAqL1xyXG4gIG1hcmtBc1RvdWNoZWQ6ICgpID0+IHZvaWQ7XHJcbiAgLyoqIE1hcmtzIHRoZSBjb250cm9sIGFuZCBhbGwgaXRzIGNoaWxkIGNvbnRyb2xzIChpZiBhbnkpIGFzIHRvdWNoZWQuICovXHJcbiAgbWFya0FsbEFzVG91Y2hlZDogKCkgPT4gdm9pZDtcclxuICAvKiogTWFya3MgdGhlIGNvbnRyb2wgYXMgcHJpc3RpbmUgKG5vdCB0b3VjaGVkKS4gKi9cclxuICBtYXJrQXNQcmlzdGluZTogKCkgPT4gdm9pZDtcclxuICAvKiogTWFya3MgdGhlIGNvbnRyb2wgYW5kIGFsbCBpdHMgY2hpbGQgY29udHJvbHMgKGlmIGFueSkgYXMgcHJpc3RpbmUuICovXHJcbiAgbWFya0FsbEFzUHJpc3RpbmU6ICgpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogUmVzZXRzIHRoZSBjb250cm9sIHRvIGEgbmV3IHZhbHVlIGFuZCBzZXRzIGEgbmV3IGluaXRpYWwgdmFsdWUuIFRoaXMgaXMgaW50ZW5kZWQgZm9yXHJcbiAgICogc2NlbmFyaW9zIHdoZXJlIHRoZSB1bmRlcmx5aW5nIGRhdGEgaXMgdXBkYXRlZCBleHRlcm5hbGx5IChlLmcuLCBkYXRhIGNvbWluZyBmcm9tXHJcbiAgICogdGhlIHNlcnZlcikuICBJZiB0aGUgY29udHJvbCBpcyBub3QgZGlydHksIHRoZSB2YWx1ZSBpcyB1cGRhdGVkLiBJZiB0aGUgY29udHJvbCAqaXMqXHJcbiAgICogZGlydHksIHRoZSB2YWx1ZSBpcyAqbm90KiB1cGRhdGVkIChwcmVzZXJ2aW5nIHVzZXIgY2hhbmdlcykuXHJcbiAgICovXHJcbiAgcmVjb25jaWxlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XHJcbiAgLyoqXHJcbiAgICogU2ltaWxhciB0byBgcmVjb25jaWxlYCwgYnV0IGZvcmNlcyB0aGUgdXBkYXRlIGV2ZW4gaWYgdGhlIGNvbnRyb2wgaXMgZGlydHkuXHJcbiAgICovXHJcbiAgZm9yY2VSZWNvbmNpbGU6IChuZXdWYWx1ZTogVCkgPT4gdm9pZDtcclxuICAvKiogUmVzZXRzIHRoZSBjb250cm9sJ3MgdmFsdWUgdG8gaXRzIGluaXRpYWwgdmFsdWUuICovXHJcbiAgcmVzZXQ6ICgpID0+IHZvaWQ7XHJcbiAgLyoqIFJlc2V0cyB0aGUgY29udHJvbCdzIHZhbHVlIGFuZCBpbml0aWFsIHZhbHVlLiAqL1xyXG4gIHJlc2V0V2l0aEluaXRpYWw6IChpbml0aWFsOiBUKSA9PiB2b2lkO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBkZXJpdmF0aW9uIGZ1bmN0aW9uIHVzZWQgdG8gY3JlYXRlIHRoaXMgY29udHJvbCBpZiBpdCdzIHBhcnQgb2YgYSBgZm9ybUdyb3VwYCBvciBgZm9ybUFycmF5YC5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBmcm9tPzogRGVyaXZlZFNpZ25hbDxUUGFyZW50LCBUPlsnZnJvbSddO1xyXG4gIC8qKiBUaGUgZXF1YWxpdHkgZnVuY3Rpb24gdXNlZCB0byBjb21wYXJlIHZhbHVlcy4gRGVmYXVsdHMgdG8gYE9iamVjdC5pc2AuICovXHJcbiAgZXF1YWw6IChhOiBULCBiOiBUKSA9PiBib29sZWFuO1xyXG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgY29udHJvbCAoJ2NvbnRyb2wnLCAnYXJyYXknLCBvciAnZ3JvdXAnKS4gKi9cclxuICBjb250cm9sVHlwZTogVENvbnRyb2xUeXBlO1xyXG4gIC8qKlxyXG4gICAqIEEgc2lnbmFsIHJlcHJlc2VudGluZyB0aGUgcGFydGlhbCB2YWx1ZSBvZiB0aGUgY29udHJvbCwgc3VpdGFibGUgZm9yIHBhdGNoaW5nIGRhdGEgb24gYSBzZXJ2ZXIuXHJcbiAgICogSXQgY29udGFpbnMgdGhlIGNoYW5nZWQgdmFsdWUgaWYgYGRpcnR5YCBpcyBgdHJ1ZWAuXHJcbiAgICovXHJcbiAgcGFydGlhbFZhbHVlOiBTaWduYWw8VFBhcnRpYWxWYWx1ZT47XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBDcmVhdGVGb3JtQ29udHJvbE9wdGlvbnM8XHJcbiAgVCxcclxuICBUQ29udHJvbFR5cGUgZXh0ZW5kcyBDb250cm9sVHlwZSA9IENvbnRyb2xUeXBlLFxyXG4+ID0gQ3JlYXRlU2lnbmFsT3B0aW9uczxUPiAmIHtcclxuICB2YWxpZGF0b3I/OiAoKSA9PiAodmFsdWU6IFQpID0+IHN0cmluZztcclxuICBvblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xyXG4gIGRpc2FibGU/OiAoKSA9PiBib29sZWFuO1xyXG4gIHJlYWRvbmx5PzogKCkgPT4gYm9vbGVhbjtcclxuICByZXF1aXJlZD86ICgpID0+IGJvb2xlYW47XHJcbiAgbGFiZWw/OiAoKSA9PiBzdHJpbmc7XHJcbiAgaWQ/OiAoKSA9PiBzdHJpbmc7XHJcbiAgaGludD86ICgpID0+IHN0cmluZztcclxuICBkaXJ0eUVxdWFsaXR5PzogVmFsdWVFcXVhbGl0eUZuPFQ+O1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGNvbnRyb2xUeXBlPzogVENvbnRyb2xUeXBlO1xyXG4gIG92ZXJyaWRlVmFsaWRhdGlvbj86ICgpID0+IHN0cmluZztcclxuICBwZW5kaW5nPzogKCkgPT4gYm9vbGVhbjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgYEZvcm1Db250cm9sU2lnbmFsYCwgYSByZWFjdGl2ZSBmb3JtIGNvbnRyb2wgdGhhdCBob2xkcyBhIHZhbHVlIGFuZCB0cmFja3MgaXRzXHJcbiAqIHZhbGlkaXR5LCBkaXJ0eSBzdGF0ZSwgdG91Y2hlZCBzdGF0ZSwgYW5kIG90aGVyIG1ldGFkYXRhLlxyXG4gKlxyXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgZm9ybSBjb250cm9sJ3MgdmFsdWUuXHJcbiAqIEB0eXBlUGFyYW0gVFBhcmVudCAtIFRoZSB0eXBlIG9mIHRoZSBwYXJlbnQgZm9ybSBjb250cm9sJ3MgdmFsdWUgKGlmIHRoaXMgY29udHJvbCBpcyBwYXJ0IG9mIGEgZ3JvdXAgb3IgYXJyYXkpLlxyXG4gKiBAdHlwZVBhcmFtIFRDb250cm9sVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBjb250cm9sLiBEZWZhdWx0cyB0byBgJ2NvbnRyb2wnYC5cclxuICogQHR5cGVQYXJhbSBUUGFydGlhbFZhbHVlIC0gVGhlIHR5cGUgb2YgdmFsdWUgd2hlbiBwYXRjaGluZ1xyXG4gKiBAcGFyYW0gaW5pdGlhbCAtIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBjb250cm9sLCBvciBhIGBEZXJpdmVkU2lnbmFsYCBpZiB0aGlzIGNvbnRyb2wgaXMgcGFydCBvZiBhIGBmb3JtR3JvdXBgIG9yIGBmb3JtQXJyYXlgLlxyXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGNvbnRyb2wuXHJcbiAqIEByZXR1cm5zIEEgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gQ3JlYXRlIGEgc2ltcGxlIGZvcm0gY29udHJvbDpcclxuICogY29uc3QgbmFtZSA9IGZvcm1Db250cm9sKCdJbml0aWFsIE5hbWUnKTtcclxuICpcclxuICogLy8gQ3JlYXRlIGEgZm9ybSBjb250cm9sIHdpdGggdmFsaWRhdGlvbjpcclxuICogY29uc3QgYWdlID0gZm9ybUNvbnRyb2woMCwge1xyXG4gKiAgIHZhbGlkYXRvcjogKCkgPT4gKHZhbHVlKSA9PiB2YWx1ZSA+PSAxOCA/ICcnIDogJ011c3QgYmUgYXQgbGVhc3QgMTgnLFxyXG4gKiB9KTtcclxuICpcclxuICogLy8gQ3JlYXRlIGEgZGVyaXZlZCBmb3JtIGNvbnRyb2wgKGVxdWl2YWxlbnQgdG8gdGhlIGFib3ZlLCBidXQgbW9yZSBleHBsaWNpdCk6XHJcbiAqICBjb25zdCB1c2VyID0gc2lnbmFsKHsgbmFtZTogJ0pvaG4gRG9lJywgYWdlOiAzMCB9KTtcclxuICogIGNvbnN0IG5hbWUgPSBmb3JtQ29udHJvbChkZXJpdmVkKHVzZXIsIHtcclxuICogICAgZnJvbTogKHUpID0+IHUubmFtZSxcclxuICogICAgb25DaGFuZ2U6IChuZXdOYW1lKSA9PiB1c2VyLnVwZGF0ZSh1ID0+ICh7Li4udSwgbmFtZTogbmV3TmFtZX0pKVxyXG4gKiAgfSkpO1xyXG4gKlxyXG4gKiAvLyBDcmVhdGUgYSBmb3JtIGdyb3VwIHdpdGggbmVzdGVkIGNvbnRyb2xzOlxyXG4gKiBjb25zdCB1c2VyID0gc2lnbmFsKHsgbmFtZTogJ0pvaG4gRG9lJywgYWdlOiAzMCB9KTtcclxuICogY29uc3QgZm9ybSA9IGZvcm1Hcm91cCh1c2VyLCB7XHJcbiAqICBuYW1lOiBmb3JtQ29udHJvbChkZXJpdmVkKHVzZXIsICduYW1lJykpLFxyXG4gKiAgYWdlOiBmb3JtQ29udHJvbChkZXJpdmVkKHVzZXIsICdhZ2UnKSksXHJcbiAqIH0pXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZm9ybUNvbnRyb2w8XHJcbiAgVCxcclxuICBUUGFyZW50ID0gdW5kZWZpbmVkLFxyXG4gIFRDb250cm9sVHlwZSBleHRlbmRzIENvbnRyb2xUeXBlID0gJ2NvbnRyb2wnLFxyXG4gIFRQYXJ0aWFsVmFsdWUgPSBUIHwgdW5kZWZpbmVkLFxyXG4+KFxyXG4gIGluaXRpYWw6IERlcml2ZWRTaWduYWw8VFBhcmVudCwgVD4gfCBULFxyXG4gIG9wdD86IENyZWF0ZUZvcm1Db250cm9sT3B0aW9uczxULCBUQ29udHJvbFR5cGU+LFxyXG4pOiBGb3JtQ29udHJvbFNpZ25hbDxULCBUUGFyZW50LCBUQ29udHJvbFR5cGUsIFRQYXJ0aWFsVmFsdWU+IHtcclxuICBjb25zdCB2YWx1ZSA9IGlzU2lnbmFsKGluaXRpYWwpID8gaW5pdGlhbCA6IHNpZ25hbChpbml0aWFsLCBvcHQpO1xyXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHNpZ25hbCh1bnRyYWNrZWQodmFsdWUpKTtcclxuICBjb25zdCBlcSA9IG9wdD8uZXF1YWwgPz8gT2JqZWN0LmlzO1xyXG5cclxuICBjb25zdCBkaXJ0eUVxID0gb3B0Py5kaXJ0eUVxdWFsaXR5ID8/IGVxO1xyXG5cclxuICBjb25zdCBkaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IG9wdD8uZGlzYWJsZT8uKCkgPz8gZmFsc2UpO1xyXG4gIGNvbnN0IHJlYWRvbmx5ID0gY29tcHV0ZWQoKCkgPT4gb3B0Py5yZWFkb25seT8uKCkgPz8gZmFsc2UpO1xyXG5cclxuICBjb25zdCBkaXJ0eSA9IGNvbXB1dGVkKCgpID0+ICFkaXJ0eUVxKHZhbHVlKCksIGluaXRpYWxWYWx1ZSgpKSk7XHJcblxyXG4gIGNvbnN0IHRvdWNoZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBjb25zdCB2YWxpZGF0b3IgPSBjb21wdXRlZCgoKSA9PiBvcHQ/LnZhbGlkYXRvcj8uKCkgPz8gKCgpID0+ICcnKSk7XHJcblxyXG4gIGNvbnN0IGVycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKG9wdD8ub3ZlcnJpZGVWYWxpZGF0aW9uKSByZXR1cm4gb3B0Lm92ZXJyaWRlVmFsaWRhdGlvbigpO1xyXG4gICAgaWYgKGRpc2FibGVkKCkgfHwgcmVhZG9ubHkoKSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHZhbGlkYXRvcigpKHZhbHVlKCkpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBtYXJrQXNUb3VjaGVkID0gKCkgPT4ge1xyXG4gICAgdG91Y2hlZC5zZXQodHJ1ZSk7XHJcbiAgICBvcHQ/Lm9uVG91Y2hlZD8uKCk7XHJcbiAgfTtcclxuICBjb25zdCBtYXJrQWxsQXNUb3VjaGVkID0gbWFya0FzVG91Y2hlZDtcclxuXHJcbiAgY29uc3QgbWFya0FzUHJpc3RpbmUgPSAoKSA9PiB0b3VjaGVkLnNldChmYWxzZSk7XHJcbiAgY29uc3QgbWFya0FsbEFzUHJpc3RpbmUgPSBtYXJrQXNQcmlzdGluZTtcclxuXHJcbiAgY29uc3QgbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBvcHQ/LmxhYmVsPy4oKSA/PyAnJyk7XHJcblxyXG4gIGNvbnN0IHBhcnRpYWxWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IChkaXJ0eSgpID8gdmFsdWUoKSA6IHVuZGVmaW5lZCkpO1xyXG5cclxuICBjb25zdCBpbnRlcm5hbFJlY29uY2lsZSA9IChuZXdWYWx1ZTogVCwgZm9yY2UgPSBmYWxzZSkgPT4ge1xyXG4gICAgY29uc3QgaXNEaXJ0eSA9IHVudHJhY2tlZChkaXJ0eSk7XHJcblxyXG4gICAgaWYgKCFpc0RpcnR5IHx8IGZvcmNlKSB7XHJcbiAgICAgIC8vIHZlcnkgZGFuZ2Vyb3VzIHVzZSBvZiB1bnRyYWNrZWQgaGVyZSwgZG9uJ3QgZG8gdGhpcyBldmVyeXdoZXJlIDopXHJcbiAgICAgIC8vIHRoYW5rcyB0byAgdS9zeW5hbHggZm9yIHRoZSBpZGVhIHRvIHVzZSB1bnRyYWNrZWQgaGVyZVxyXG5cclxuICAgICAgdW50cmFja2VkKCgpID0+IHtcclxuICAgICAgICBpbml0aWFsVmFsdWUuc2V0KG5ld1ZhbHVlKTtcclxuICAgICAgICB2YWx1ZS5zZXQobmV3VmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb25zdCBwZW5kaW5nID0gY29tcHV0ZWQoKCkgPT4gb3B0Py5wZW5kaW5nPy4oKSA/PyBmYWxzZSk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBpZDogb3B0Py5pZD8uKCkgPz8gdjcoKSxcclxuICAgIHZhbHVlLFxyXG4gICAgZGlydHksXHJcbiAgICB0b3VjaGVkLFxyXG4gICAgZXJyb3IsXHJcbiAgICBsYWJlbCxcclxuICAgIHJlcXVpcmVkOiBjb21wdXRlZCgoKSA9PiBvcHQ/LnJlcXVpcmVkPy4oKSA/PyBmYWxzZSksXHJcbiAgICBkaXNhYmxlZCxcclxuICAgIHJlYWRvbmx5LFxyXG4gICAgcGVuZGluZyxcclxuICAgIHZhbGlkOiBjb21wdXRlZCgoKSA9PiAhcGVuZGluZygpICYmICFlcnJvcigpKSxcclxuICAgIGhpbnQ6IGNvbXB1dGVkKCgpID0+IG9wdD8uaGludD8uKCkgPz8gJycpLFxyXG4gICAgbWFya0FzVG91Y2hlZCxcclxuICAgIG1hcmtBbGxBc1RvdWNoZWQsXHJcbiAgICBtYXJrQXNQcmlzdGluZSxcclxuICAgIG1hcmtBbGxBc1ByaXN0aW5lLFxyXG4gICAgZnJvbTogKGlzU2lnbmFsKGluaXRpYWwpID8gaW5pdGlhbC5mcm9tIDogdW5kZWZpbmVkKSBhcyBGb3JtQ29udHJvbFNpZ25hbDxcclxuICAgICAgVCxcclxuICAgICAgVFBhcmVudCxcclxuICAgICAgVENvbnRyb2xUeXBlXHJcbiAgICA+Wydmcm9tJ10sXHJcbiAgICByZWNvbmNpbGU6IChuZXdWYWx1ZTogVCkgPT4gaW50ZXJuYWxSZWNvbmNpbGUobmV3VmFsdWUpLFxyXG4gICAgZm9yY2VSZWNvbmNpbGU6IChuZXdWYWx1ZTogVCkgPT4gaW50ZXJuYWxSZWNvbmNpbGUobmV3VmFsdWUsIHRydWUpLFxyXG4gICAgcmVzZXQ6ICgpID0+IHtcclxuICAgICAgb3B0Py5vblJlc2V0Py4oKTtcclxuICAgICAgdmFsdWUuc2V0KHVudHJhY2tlZChpbml0aWFsVmFsdWUpKTtcclxuICAgIH0sXHJcbiAgICByZXNldFdpdGhJbml0aWFsOiAoaW5pdGlhbDogVCkgPT4ge1xyXG4gICAgICBvcHQ/Lm9uUmVzZXQ/LigpO1xyXG4gICAgICBpbml0aWFsVmFsdWUuc2V0KGluaXRpYWwpO1xyXG4gICAgICB2YWx1ZS5zZXQoaW5pdGlhbCk7XHJcbiAgICB9LFxyXG4gICAgZXF1YWw6IGVxLFxyXG4gICAgY29udHJvbFR5cGU6IChvcHQ/LmNvbnRyb2xUeXBlID8/ICdjb250cm9sJykgYXMgVENvbnRyb2xUeXBlLFxyXG4gICAgcGFydGlhbFZhbHVlOiBwYXJ0aWFsVmFsdWUgYXMgU2lnbmFsPFRQYXJ0aWFsVmFsdWU+LFxyXG4gIH07XHJcbn1cclxuIl19","import { computed, linkedSignal, untracked, } from '@angular/core';\nimport { mergeArray } from '@mmstack/object';\nimport { derived } from '@mmstack/primitives';\nimport { formControl, } from './form-control';\nfunction createReconcileChildren(factory, opt) {\n return (length, source, prev) => {\n if (!prev) {\n const nextControls = [];\n for (let i = 0; i < length; i++) {\n nextControls.push(factory(derived(source, i, { equal: opt?.equal }), i));\n }\n return nextControls;\n }\n if (length === prev.length)\n return prev;\n const next = [...prev];\n if (length < prev.length) {\n next.splice(length);\n }\n else if (length > prev.length) {\n for (let i = prev.length; i < length; i++) {\n next.push(factory(derived(source, i, { equal: opt?.equal }), i));\n }\n }\n return next;\n };\n}\nexport function formArray(initial, factory, opt) {\n const eq = opt?.equal ?? Object.is;\n const arrayEqual = (a, b) => {\n if (a.length !== b.length)\n return false;\n if (!a.length)\n return true;\n return a.every((v, i) => eq(v, b[i]));\n };\n const min = computed(() => opt?.min?.() ?? 0, ...(ngDevMode ? [{ debugName: \"min\" }] : []));\n const max = computed(() => opt?.max?.() ?? Number.MAX_SAFE_INTEGER, ...(ngDevMode ? [{ debugName: \"max\" }] : []));\n const arrayOptions = {\n ...opt,\n equal: arrayEqual,\n dirtyEquality: (a, b) => a.length === b.length,\n controlType: 'array',\n };\n const ctrl = formControl(initial, arrayOptions);\n const length = computed(() => ctrl.value().length, ...(ngDevMode ? [{ debugName: \"length\" }] : []));\n const reconcileChildren = createReconcileChildren(factory, { equal: eq });\n // linkedSignal used to re-use previous value so that only length changes are affected and existing controls are kept, but updated\n const children = linkedSignal({\n source: () => length(),\n computation: (len, prev) => reconcileChildren(len, ctrl.value, prev?.value),\n });\n const ownError = computed(() => ctrl.error(), ...(ngDevMode ? [{ debugName: \"ownError\" }] : []));\n const error = computed(() => {\n const own = ownError();\n if (own)\n return own;\n if (!children().length)\n return '';\n return children()\n .map((c, idx) => (c.error() ? `${idx}: ${c.error()}` : ''))\n .filter(Boolean)\n .join('\\n');\n }, ...(ngDevMode ? [{ debugName: \"error\" }] : []));\n const dirty = computed(() => {\n if (ctrl.dirty())\n return true;\n if (!children().length)\n return false;\n return children().some((c) => c.dirty());\n }, ...(ngDevMode ? [{ debugName: \"dirty\" }] : []));\n const markAllAsTouched = () => {\n ctrl.markAllAsTouched();\n for (const c of untracked(children)) {\n c.markAllAsTouched();\n }\n };\n const markAllAsPristine = () => {\n ctrl.markAllAsPristine();\n for (const c of untracked(children)) {\n c.markAllAsPristine();\n }\n };\n const toPartialValue = opt?.toPartialValue ?? ((v) => v);\n const partialValue = computed(() => {\n if (!dirty())\n return undefined;\n return children().map((c) => {\n const pv = c.partialValue();\n if (pv)\n return pv;\n if (c.controlType === 'control')\n return undefined;\n // return full value for child objects/arrays as this cannot be partially patched without idx\n return toPartialValue(c.value());\n });\n }, ...(ngDevMode ? [{ debugName: \"partialValue\" }] : []));\n const touched = computed(() => ctrl.touched() ||\n !!(children().length && children().some((c) => c.touched())), ...(ngDevMode ? [{ debugName: \"touched\" }] : []));\n const reconcile = (newValue) => {\n const ctrls = untracked(children);\n for (let i = 0; i < newValue.length; i++) {\n ctrls.at(i)?.reconcile(newValue[i]); // reconcile existing controls that are relevant addition/removal will be handled after ctrl.reconcile through linkedSignal\n }\n ctrl.reconcile(mergeArray(newValue, untracked(ctrl.value)));\n };\n const forceReconcile = (newValue) => {\n const ctrls = untracked(children);\n for (let i = 0; i < newValue.length; i++) {\n ctrls.at(i)?.forceReconcile(newValue[i]);\n }\n ctrl.forceReconcile(newValue);\n };\n const childrenValid = computed(() => {\n if (!children().length)\n return true;\n return children().every((d) => d.valid());\n }, ...(ngDevMode ? [{ debugName: \"childrenValid\" }] : []));\n const childrenPending = computed(() => !!children().length && children().some((d) => d.pending()), ...(ngDevMode ? [{ debugName: \"childrenPending\" }] : []));\n return {\n ...ctrl,\n ownError,\n error,\n valid: computed(() => ctrl.valid() && childrenValid()),\n pending: computed(() => ctrl.pending() || childrenPending()),\n touched,\n children,\n dirty,\n markAllAsTouched,\n markAllAsPristine,\n min,\n max,\n partialValue,\n canAdd: computed(() => !ctrl.disabled() && !ctrl.readonly() && length() < max()),\n canRemove: computed(() => !ctrl.disabled() && !ctrl.readonly() && length() > min()),\n reconcile,\n forceReconcile,\n reset: () => {\n for (const c of untracked(children)) {\n c.reset();\n }\n ctrl.reset();\n },\n resetWithInitial: (initial) => {\n const ctrls = untracked(children);\n for (let i = 0; i < initial.length; i++) {\n ctrls.at(i)?.resetWithInitial(initial[i]);\n }\n ctrl.resetWithInitial(initial);\n },\n push: (next) => ctrl.value.update((cur) => [...cur, next]),\n remove: (idx) => ctrl.value.update((cur) => cur.filter((_, i) => i !== idx)),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zvcm0vY29yZS9zcmMvbGliL2Zvcm0tYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBQ1osU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ2xFLE9BQU8sRUFDTCxXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQXlDeEIsU0FBUyx1QkFBdUIsQ0FJOUIsT0FBc0UsRUFDdEUsR0FBdUM7SUFFdkMsT0FBTyxDQUNMLE1BQWMsRUFDZCxNQUEyQixFQUMzQixJQUF5QixFQUNMLEVBQUU7UUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBRXhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDaEMsWUFBWSxDQUFDLElBQUksQ0FDZixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RELENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFeEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRXZCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixJ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S0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7S0FDOUQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGNvbXB1dGVkLFxyXG4gIGxpbmtlZFNpZ25hbCxcclxuICB1bnRyYWNrZWQsXHJcbiAgdHlwZSBTaWduYWwsXHJcbiAgdHlwZSBXcml0YWJsZVNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWVyZ2VBcnJheSB9IGZyb20gJ0BtbXN0YWNrL29iamVjdCc7XHJcbmltcG9ydCB7IGRlcml2ZWQsIHR5cGUgRGVyaXZlZFNpZ25hbCB9IGZyb20gJ0BtbXN0YWNrL3ByaW1pdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG4gIGZvcm1Db250cm9sLFxyXG4gIHR5cGUgQ3JlYXRlRm9ybUNvbnRyb2xPcHRpb25zLFxyXG4gIHR5cGUgRm9ybUNvbnRyb2xTaWduYWwsXHJcbn0gZnJvbSAnLi9mb3JtLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyB0eXBlIFNpZ25hbFZhbHVlIH0gZnJvbSAnLi9zaWduYWwtdmFsdWUudHlwZSc7XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtQXJyYXlTaWduYWw8XHJcbiAgVCxcclxuICBUSW5kaXZpZHVhbFN0YXRlIGV4dGVuZHMgRm9ybUNvbnRyb2xTaWduYWw8XHJcbiAgICBULFxyXG4gICAgYW55LFxyXG4gICAgYW55LFxyXG4gICAgYW55XHJcbiAgPiA9IEZvcm1Db250cm9sU2lnbmFsPFQsIGFueSwgYW55LCBhbnk+LFxyXG4gIFRQYXJlbnQgPSB1bmRlZmluZWQsXHJcbj4gPSBGb3JtQ29udHJvbFNpZ25hbDxcclxuICBUW10sXHJcbiAgVFBhcmVudCxcclxuICAnYXJyYXknLFxyXG4gIHwgRXhjbHVkZTxTaWduYWxWYWx1ZTxUSW5kaXZpZHVhbFN0YXRlWydwYXJ0aWFsVmFsdWUnXT4sIG51bGwgfCB1bmRlZmluZWQ+W11cclxuICB8IHVuZGVmaW5lZFxyXG4+ICYge1xyXG4gIG93bkVycm9yOiBTaWduYWw8c3RyaW5nPjtcclxuICBjaGlsZHJlbjogU2lnbmFsPFRJbmRpdmlkdWFsU3RhdGVbXT47XHJcbiAgcHVzaDogKHZhbHVlOiBUKSA9PiB2b2lkOyAvLyBhZGQgbmV3IGNvbnRyb2wgd2l0aCB2YWx1ZVxyXG4gIHJlbW92ZTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7IC8vIHJlbW92ZSBhdCBpbmRleFxyXG4gIG1pbjogU2lnbmFsPG51bWJlcj47IC8vIGZvciBkaXNwbGF5IHB1cnBvc2VzXHJcbiAgbWF4OiBTaWduYWw8bnVtYmVyPjsgLy8gZm9yIGRpc3BsYXkgcHVycG9zZXNcclxuICBjYW5BZGQ6IFNpZ25hbDxib29sZWFuPjsgLy8gZGlzYWJsZSBhZGQgYnV0dG9uIGlmIGZhbHNlXHJcbiAgY2FuUmVtb3ZlOiBTaWduYWw8Ym9vbGVhbj47IC8vIGRpc2FibGUgcmVtb3ZlIGJ1dHRvbnMgaWYgZmFsc2VcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIENyZWF0ZUZvcm1BcnJheVNpZ25hbE9wdGlvbnM8XHJcbiAgVCxcclxuICBUSW5kaXZpZHVhbFN0YXRlIGV4dGVuZHMgRm9ybUNvbnRyb2xTaWduYWw8VCwgYW55LCBhbnksIGFueT4sXHJcbj4gPSBPbWl0PENyZWF0ZUZvcm1Db250cm9sT3B0aW9uczxUW10+LCAnZXF1YWwnPiAmIHtcclxuICBtaW4/OiAoKSA9PiBudW1iZXI7XHJcbiAgbWF4PzogKCkgPT4gbnVtYmVyO1xyXG4gIGVxdWFsPzogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW47XHJcbiAgdG9QYXJ0aWFsVmFsdWU/OiAoXHJcbiAgICB2OiBULFxyXG4gICkgPT4gRXhjbHVkZTxTaWduYWxWYWx1ZTxUSW5kaXZpZHVhbFN0YXRlWydwYXJ0aWFsVmFsdWUnXT4sIG51bGwgfCB1bmRlZmluZWQ+O1xyXG59O1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlUmVjb25jaWxlQ2hpbGRyZW48XHJcbiAgVCxcclxuICBUSW5kaXZpZHVhbFN0YXRlIGV4dGVuZHMgRm9ybUNvbnRyb2xTaWduYWw8VCwgYW55LCBhbnksIGFueT4sXHJcbj4oXHJcbiAgZmFjdG9yeTogKHZhbDogRGVyaXZlZFNpZ25hbDxUW10sIFQ+LCBpZHg6IG51bWJlcikgPT4gVEluZGl2aWR1YWxTdGF0ZSxcclxuICBvcHQ6IHsgZXF1YWw6IChhOiBULCBiOiBUKSA9PiBib29sZWFuIH0sXHJcbikge1xyXG4gIHJldHVybiAoXHJcbiAgICBsZW5ndGg6IG51bWJlcixcclxuICAgIHNvdXJjZTogV3JpdGFibGVTaWduYWw8VFtdPixcclxuICAgIHByZXY/OiBUSW5kaXZpZHVhbFN0YXRlW10sXHJcbiAgKTogVEluZGl2aWR1YWxTdGF0ZVtdID0+IHtcclxuICAgIGlmICghcHJldikge1xyXG4gICAgICBjb25zdCBuZXh0Q29udHJvbHMgPSBbXTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBuZXh0Q29udHJvbHMucHVzaChcclxuICAgICAgICAgIGZhY3RvcnkoZGVyaXZlZChzb3VyY2UsIGksIHsgZXF1YWw6IG9wdD8uZXF1YWwgfSksIGkpLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuZXh0Q29udHJvbHM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGxlbmd0aCA9PT0gcHJldi5sZW5ndGgpIHJldHVybiBwcmV2O1xyXG5cclxuICAgIGNvbnN0IG5leHQgPSBbLi4ucHJldl07XHJcblxyXG4gICAgaWYgKGxlbmd0aCA8IHByZXYubGVuZ3RoKSB7XHJcbiAgICAgIG5leHQuc3BsaWNlKGxlbmd0aCk7XHJcbiAgICB9IGVsc2UgaWYgKGxlbmd0aCA+IHByZXYubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSBwcmV2Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbmV4dC5wdXNoKGZhY3RvcnkoZGVyaXZlZChzb3VyY2UsIGksIHsgZXF1YWw6IG9wdD8uZXF1YWwgfSksIGkpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXh0O1xyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtQXJyYXk8XHJcbiAgVCxcclxuICBUSW5kaXZpZHVhbFN0YXRlIGV4dGVuZHMgRm9ybUNvbnRyb2xTaWduYWw8XHJcbiAgICBULFxyXG4gICAgYW55LFxyXG4gICAgYW55LFxyXG4gICAgYW55XHJcbiAgPiA9IEZvcm1Db250cm9sU2lnbmFsPFQsIGFueSwgYW55LCBhbnk+LFxyXG4gIFRQYXJlbnQgPSB1bmRlZmluZWQsXHJcbj4oXHJcbiAgaW5pdGlhbDogVFtdIHwgRGVyaXZlZFNpZ25hbDxUUGFyZW50LCBUW10+LFxyXG4gIGZhY3Rvcnk6ICh2YWw6IERlcml2ZWRTaWduYWw8VFtdLCBUPiwgaWR4OiBudW1iZXIpID0+IFRJbmRpdmlkdWFsU3RhdGUsXHJcbiAgb3B0PzogQ3JlYXRlRm9ybUFycmF5U2lnbmFsT3B0aW9uczxULCBUSW5kaXZpZHVhbFN0YXRlPixcclxuKTogRm9ybUFycmF5U2lnbmFsPFQsIFRJbmRpdmlkdWFsU3RhdGUsIFRQYXJlbnQ+IHtcclxuICBjb25zdCBlcSA9IG9wdD8uZXF1YWwgPz8gT2JqZWN0LmlzO1xyXG5cclxuICBjb25zdCBhcnJheUVxdWFsID0gKGE6IFRbXSwgYjogVFtdKSA9PiB7XHJcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoIWEubGVuZ3RoKSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gYS5ldmVyeSgodiwgaSkgPT4gZXEodiwgYltpXSkpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IG1pbiA9IGNvbXB1dGVkKCgpID0+IG9wdD8ubWluPy4oKSA/PyAwKTtcclxuICBjb25zdCBtYXggPSBjb21wdXRlZCgoKSA9PiBvcHQ/Lm1heD8uKCkgPz8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO1xyXG5cclxuICBjb25zdCBhcnJheU9wdGlvbnM6IENyZWF0ZUZvcm1Db250cm9sT3B0aW9uczxUW10sICdhcnJheSc+ID0ge1xyXG4gICAgLi4ub3B0LFxyXG4gICAgZXF1YWw6IGFycmF5RXF1YWwsXHJcbiAgICBkaXJ0eUVxdWFsaXR5OiAoYSwgYikgPT4gYS5sZW5ndGggPT09IGIubGVuZ3RoLFxyXG4gICAgY29udHJvbFR5cGU6ICdhcnJheScsXHJcbiAgfTtcclxuXHJcbiAgY29uc3QgY3RybCA9IGZvcm1Db250cm9sPFRbXSwgVFBhcmVudCwgJ2FycmF5Jz4oXHJcbiAgICBpbml0aWFsLFxyXG4gICAgYXJyYXlPcHRpb25zLFxyXG4gICkgc2F0aXNmaWVzIEZvcm1Db250cm9sU2lnbmFsPFRbXSwgVFBhcmVudCwgJ2FycmF5Jz47XHJcblxyXG4gIGNvbnN0IGxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IGN0cmwudmFsdWUoKS5sZW5ndGgpO1xyXG5cclxuICBjb25zdCByZWNvbmNpbGVDaGlsZHJlbiA9IGNyZWF0ZVJlY29uY2lsZUNoaWxkcmVuPFQsIFRJbmRpdmlkdWFsU3RhdGU+KFxyXG4gICAgZmFjdG9yeSxcclxuICAgIHsgZXF1YWw6IGVxIH0sXHJcbiAgKTtcclxuXHJcbiAgLy8gbGlua2VkU2lnbmFsIHVzZWQgdG8gcmUtdXNlIHByZXZpb3VzIHZhbHVlIHNvIHRoYXQgb25seSBsZW5ndGggY2hhbmdlcyBhcmUgYWZmZWN0ZWQgYW5kIGV4aXN0aW5nIGNvbnRyb2xzIGFyZSBrZXB0LCBidXQgdXBkYXRlZFxyXG4gIGNvbnN0IGNoaWxkcmVuID0gbGlua2VkU2lnbmFsPG51bWJlciwgVEluZGl2aWR1YWxTdGF0ZVtdPih7XHJcbiAgICBzb3VyY2U6ICgpID0+IGxlbmd0aCgpLFxyXG4gICAgY29tcHV0YXRpb246IChsZW4sIHByZXYpID0+IHJlY29uY2lsZUNoaWxkcmVuKGxlbiwgY3RybC52YWx1ZSwgcHJldj8udmFsdWUpLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBvd25FcnJvciA9IGNvbXB1dGVkKCgpID0+IGN0cmwuZXJyb3IoKSk7XHJcblxyXG4gIGNvbnN0IGVycm9yID0gY29tcHV0ZWQoKCk6IHN0cmluZyA9PiB7XHJcbiAgICBjb25zdCBvd24gPSBvd25FcnJvcigpO1xyXG4gICAgaWYgKG93bikgcmV0dXJuIG93bjtcclxuICAgIGlmICghY2hpbGRyZW4oKS5sZW5ndGgpIHJldHVybiAnJztcclxuICAgIHJldHVybiBjaGlsZHJlbigpXHJcbiAgICAgIC5tYXAoKGMsIGlkeCkgPT4gKGMuZXJyb3IoKSA/IGAke2lkeH06ICR7Yy5lcnJvcigpfWAgOiAnJykpXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcclxuICAgICAgLmpvaW4oJ1xcbicpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBkaXJ0eSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmIChjdHJsLmRpcnR5KCkpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKCFjaGlsZHJlbigpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGNoaWxkcmVuKCkuc29tZSgoYykgPT4gYy5kaXJ0eSgpKTtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgbWFya0FsbEFzVG91Y2hlZCA9ICgpID0+IHtcclxuICAgIGN0cmwubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgZm9yIChjb25zdCBjIG9mIHVudHJhY2tlZChjaGlsZHJlbikpIHtcclxuICAgICAgYy5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBjb25zdCBtYXJrQWxsQXNQcmlzdGluZSA9ICgpID0+IHtcclxuICAgIGN0cmwubWFya0FsbEFzUHJpc3RpbmUoKTtcclxuICAgIGZvciAoY29uc3QgYyBvZiB1bnRyYWNrZWQoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGMubWFya0FsbEFzUHJpc3RpbmUoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb25zdCB0b1BhcnRpYWxWYWx1ZSA9IG9wdD8udG9QYXJ0aWFsVmFsdWUgPz8gKCh2OiBUKSA9PiB2KTtcclxuICBjb25zdCBwYXJ0aWFsVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAoIWRpcnR5KCkpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gY2hpbGRyZW4oKS5tYXAoKGMpID0+IHtcclxuICAgICAgY29uc3QgcHYgPSBjLnBhcnRpYWxWYWx1ZSgpO1xyXG4gICAgICBpZiAocHYpIHJldHVybiBwdjtcclxuICAgICAgaWYgKGMuY29udHJvbFR5cGUgPT09ICdjb250cm9sJykgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIC8vIHJldHVybiBmdWxsIHZhbHVlIGZvciAgY2hpbGQgb2JqZWN0cy9hcnJheXMgYXMgdGhpcyBjYW5ub3QgYmUgcGFydGlhbGx5IHBhdGNoZWQgd2l0aG91dCBpZHhcclxuICAgICAgcmV0dXJuIHRvUGFydGlhbFZhbHVlKGMudmFsdWUoKSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgdG91Y2hlZCA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgY3RybC50b3VjaGVkKCkgfHxcclxuICAgICAgISEoY2hpbGRyZW4oKS5sZW5ndGggJiYgY2hpbGRyZW4oKS5zb21lKChjKSA9PiBjLnRvdWNoZWQoKSkpLFxyXG4gICk7XHJcblxyXG4gIGNvbnN0IHJlY29uY2lsZSA9IChuZXdWYWx1ZTogVFtdKSA9PiB7XHJcbiAgICBjb25zdCBjdHJscyA9IHVudHJhY2tlZChjaGlsZHJlbik7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdWYWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjdHJscy5hdChpKT8ucmVjb25jaWxlKG5ld1ZhbHVlW2ldKTsgLy8gcmVjb25jaWxlIGV4aXN0aW5nIGNvbnRyb2xzIHRoYXQgYXJlIHJlbGV2YW50IGFkZGl0aW9uL3JlbW92YWwgd2lsbCBiZSBoYW5kbGVkIGFmdGVyIGN0cmwucmVjb25jaWxlIHRocm91Z2ggbGlua2VkU2lnbmFsXHJcbiAgICB9XHJcblxyXG4gICAgY3RybC5yZWNvbmNpbGUobWVyZ2VBcnJheShuZXdWYWx1ZSwgdW50cmFja2VkKGN0cmwudmFsdWUpKSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZm9yY2VSZWNvbmNpbGUgPSAobmV3VmFsdWU6IFRbXSkgPT4ge1xyXG4gICAgY29uc3QgY3RybHMgPSB1bnRyYWNrZWQoY2hpbGRyZW4pO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3VmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY3RybHMuYXQoaSk/LmZvcmNlUmVjb25jaWxlKG5ld1ZhbHVlW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICBjdHJsLmZvcmNlUmVjb25jaWxlKG5ld1ZhbHVlKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBjaGlsZHJlblZhbGlkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgaWYgKCFjaGlsZHJlbigpLmxlbmd0aCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gY2hpbGRyZW4oKS5ldmVyeSgoZCkgPT4gZC52YWxpZCgpKTtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgY2hpbGRyZW5QZW5kaW5nID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PiAhIWNoaWxkcmVuKCkubGVuZ3RoICYmIGNoaWxkcmVuKCkuc29tZSgoZCkgPT4gZC5wZW5kaW5nKCkpLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAuLi5jdHJsLFxyXG4gICAgb3duRXJyb3IsXHJcbiAgICBlcnJvcixcclxuICAgIHZhbGlkOiBjb21wdXRlZCgoKSA9PiBjdHJsLnZhbGlkKCkgJiYgY2hpbGRyZW5WYWxpZCgpKSxcclxuICAgIHBlbmRpbmc6IGNvbXB1dGVkKCgpID0+IGN0cmwucGVuZGluZygpIHx8IGNoaWxkcmVuUGVuZGluZygpKSxcclxuICAgIHRvdWNoZWQsXHJcbiAgICBjaGlsZHJlbixcclxuICAgIGRpcnR5LFxyXG4gICAgbWFya0FsbEFzVG91Y2hlZCxcclxuICAgIG1hcmtBbGxBc1ByaXN0aW5lLFxyXG4gICAgbWluLFxyXG4gICAgbWF4LFxyXG4gICAgcGFydGlhbFZhbHVlLFxyXG4gICAgY2FuQWRkOiBjb21wdXRlZChcclxuICAgICAgKCkgPT4gIWN0cmwuZGlzYWJsZWQoKSAmJiAhY3RybC5yZWFkb25seSgpICYmIGxlbmd0aCgpIDwgbWF4KCksXHJcbiAgICApLFxyXG4gICAgY2FuUmVtb3ZlOiBjb21wdXRlZChcclxuICAgICAgKCkgPT4gIWN0cmwuZGlzYWJsZWQoKSAmJiAhY3RybC5yZWFkb25seSgpICYmIGxlbmd0aCgpID4gbWluKCksXHJcbiAgICApLFxyXG4gICAgcmVjb25jaWxlLFxyXG4gICAgZm9yY2VSZWNvbmNpbGUsXHJcbiAgICByZXNldDogKCkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGMgb2YgdW50cmFja2VkKGNoaWxkcmVuKSkge1xyXG4gICAgICAgIGMucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgICBjdHJsLnJlc2V0KCk7XHJcbiAgICB9LFxyXG4gICAgcmVzZXRXaXRoSW5pdGlhbDogKGluaXRpYWw6IFRbXSkgPT4ge1xyXG4gICAgICBjb25zdCBjdHJscyA9IHVudHJhY2tlZChjaGlsZHJlbik7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5pdGlhbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGN0cmxzLmF0KGkpPy5yZXNldFdpdGhJbml0aWFsKGluaXRpYWxbaV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGN0cmwucmVzZXRXaXRoSW5pdGlhbChpbml0aWFsKTtcclxuICAgIH0sXHJcbiAgICBwdXNoOiAobmV4dCkgPT4gY3RybC52YWx1ZS51cGRhdGUoKGN1cikgPT4gWy4uLmN1ciwgbmV4dF0pLFxyXG4gICAgcmVtb3ZlOiAoaWR4KSA9PlxyXG4gICAgICBjdHJsLnZhbHVlLnVwZGF0ZSgoY3VyKSA9PiBjdXIuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpZHgpKSxcclxuICB9O1xyXG59XHJcbiJdfQ==","import { computed, isSignal, signal, untracked, } from '@angular/core';\nimport { entries, mergeIfObject, values } from '@mmstack/object';\nimport { isDerivation, toFakeSignalDerivation, } from '@mmstack/primitives';\nimport { formControl, } from './form-control';\n/**\n * Creates a `FormGroupSignal`, which aggregates a set of child form controls into a single object.\n *\n * @typeParam T - The type of the form group's value (an object).\n * @typeParam TDerivations - A record where keys are the names of the child controls and values are the `FormControlSignal` instances.\n * @typeParam TParent - The type of the parent form control's value (if this group is nested within another group or array).\n * @param initial - The initial value of the form group (or a `WritableSignal` or `DerivedSignal` if the group is nested).\n * @param providedChildren - An object containing the child `FormControlSignal` instances, or a function that returns such an object.\n * Using a function allows for dynamic creation of child controls (e.g., in response to changes in other signals).\n * @param options - Optional configuration options for the form group.\n * @returns A `FormGroupSignal` instance.\n *\n * @example\n * // Create a simple form group:\n * const user = signal({ name: 'John Doe', age: 30 });\n * const form = formGroup(user, {\n * name: formControl(derived(user, 'name')),\n * age: formControl(derived(user, 'age')),\n * })\n *\n * // Create a nested form group:\n * const user = signal({ name: 'John', age: 30, address: {street: \"Some street\"} });\n *\n * const address = derived(user, 'address');\n * const userForm = formGroup(user, {\n * name: formControl(derived(user, 'name')),\n * age: formControl(derived(user, 'age')),\n * address: formGroup(address, {\n * street: formControl(derived(address, (address) => address.street), {\n * validator: () => (value) => value ? \"\" : \"required!\"\n * }) // you can create deeply nested structures.\n * })\n * });\n *\n * // Create a form group with dynamically created children replaced rare FormRecord requirements.\n * const showAddress = signal(false);\n * type Characteristic = {\n * valueType: 'string';\n * value: string;\n * } | {\n * valueType: 'number';\n * value: number;\n * }\n * const char = signal<Characteristic>({ valueType: 'string', value: '' });\n * const charForm = formGroup(char, () => {\n * if (char().valueType === 'string) return createStringControl(char);\n * return createNumberControl(char);\n * });\n *\n */\nexport function formGroup(initial, providedChildren, opt) {\n const valueSignal = isSignal(initial) ? initial : signal(initial);\n // we fake a derivation if not present, so that .from is present on the signal\n const value = isDerivation(valueSignal)\n ? valueSignal\n : toFakeSignalDerivation(valueSignal);\n // we allow for a function/signal to be passed, this case should only be used if the child controls change dependent upon something, say if a formControl is flipped into a formGroup.\n const children = typeof providedChildren === 'function'\n ? computed(() => providedChildren())\n : computed(() => providedChildren);\n // array allows for easier handling\n const derivationsArray = computed(() => values(children()), ...(ngDevMode ? [{ debugName: \"derivationsArray\" }] : []));\n const childrenDirty = computed(() => !!derivationsArray().length && derivationsArray().some((d) => d.dirty()), ...(ngDevMode ? [{ debugName: \"childrenDirty\" }] : []));\n // by default dont compare object references, just use childrenDirtySignal\n const baseDirtyEq = opt?.dirtyEquality ?? opt?.equal ?? (() => true);\n // function which calls a signal becomes a signal\n const dirtyEquality = (a, b) => {\n return baseDirtyEq(a, b) && !childrenDirty();\n };\n // group control\n const ctrl = formControl(value, {\n ...opt,\n dirtyEquality,\n controlType: 'group',\n readonly: () => {\n // readonly if is readonly or all children are readonly\n if (opt?.readonly?.())\n return true;\n return (!!derivationsArray().length &&\n derivationsArray().every((d) => d.readonly()));\n },\n disable: () => {\n if (opt?.disable?.())\n return true;\n return (!!derivationsArray().length &&\n derivationsArray().every((d) => d.disabled()));\n },\n });\n const childrenTouched = computed(() => !!derivationsArray().length &&\n derivationsArray().some((d) => d.touched()), ...(ngDevMode ? [{ debugName: \"childrenTouched\" }] : []));\n const touched = computed(() => ctrl.touched() || childrenTouched(), ...(ngDevMode ? [{ debugName: \"touched\" }] : []));\n const childError = computed(() => {\n if (!derivationsArray().length)\n return '';\n return derivationsArray()\n .map((d) => (d.error() ? `${d.label()}: ${d.error()}` : ''))\n .filter(Boolean)\n .join('\\n');\n }, ...(ngDevMode ? [{ debugName: \"childError\" }] : []));\n const error = computed(() => {\n const ownError = ctrl.error();\n if (ownError)\n return ownError;\n return childError() ? 'INVALID' : '';\n }, ...(ngDevMode ? [{ debugName: \"error\" }] : []));\n const markAllAsTouched = () => {\n ctrl.markAllAsTouched();\n for (const ctrl of untracked(derivationsArray)) {\n ctrl.markAllAsTouched();\n }\n };\n const markAllAsPristine = () => {\n ctrl.markAllAsPristine();\n for (const ctrl of untracked(derivationsArray)) {\n ctrl.markAllAsPristine();\n }\n };\n const reconcile = (newValue) => {\n // set the children values based on the derivation of the new value\n for (const ctrl of untracked(derivationsArray)) {\n const from = ctrl.from;\n if (!from)\n continue;\n ctrl.reconcile(from(newValue));\n }\n ctrl.reconcile(mergeIfObject(newValue, untracked(value)));\n };\n const forceReconcile = (newValue) => {\n for (const ctrl of untracked(derivationsArray)) {\n const from = ctrl.from;\n if (!from)\n continue;\n ctrl.forceReconcile(from(newValue));\n }\n ctrl.forceReconcile(newValue);\n };\n const createBaseValueFn = opt?.createBasePartialValue;\n const basePartialValue = createBaseValueFn\n ? computed(() => createBaseValueFn(ctrl.value()))\n : computed(() => ({}));\n const partialValue = computed(() => {\n const obj = {\n ...basePartialValue(),\n };\n if (!ctrl.dirty())\n return obj;\n for (const [key, ctrl] of entries(children())) {\n const pv = ctrl.partialValue();\n if (pv === undefined)\n continue;\n obj[key] = pv;\n }\n return obj;\n }, ...(ngDevMode ? [{ debugName: \"partialValue\" }] : []));\n const childrenValid = computed(() => {\n if (!derivationsArray().length)\n return true;\n return derivationsArray().every((d) => d.valid());\n }, ...(ngDevMode ? [{ debugName: \"childrenValid\" }] : []));\n const childrenPending = computed(() => !!derivationsArray().length &&\n derivationsArray().some((d) => d.pending()), ...(ngDevMode ? [{ debugName: \"childrenPending\" }] : []));\n return {\n ...ctrl,\n children,\n partialValue,\n reconcile,\n forceReconcile,\n ownError: ctrl.error,\n touched,\n error,\n valid: computed(() => ctrl.valid() && childrenValid()),\n pending: computed(() => ctrl.pending() || childrenPending()),\n markAllAsPristine,\n markAllAsTouched,\n reset: () => {\n for (const ctrl of untracked(derivationsArray)) {\n ctrl.reset();\n }\n ctrl.reset();\n },\n resetWithInitial: (initial) => {\n for (const ctrl of untracked(derivationsArray)) {\n const from = ctrl.from;\n if (from)\n ctrl.resetWithInitial(from(initial));\n else\n ctrl.reset();\n }\n ctrl.resetWithInitial(initial);\n },\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Zvcm0vY29yZS9zcmMvbGliL2Zvcm0tZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLHNCQUFzQixHQUV2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFDTCxXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQStEeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpREc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUt2QixPQUEwRCxFQUMxRCxnQkFBcUQsRUFDckQsR0FBNkM7SUFFN0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRSw4RUFBOEU7SUFDOUUsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFhLFdBQVcsQ0FBQztRQUNqRCxDQUFDLENBQUMsV0FBVztRQUNiLENBQUMsQ0FBQyxzQkFBc0IsQ0FBYSxXQUFXLENBQUMsQ0FBQztJQUVwRCxzTEFBc0w7SUFDdEwsTUFBTSxRQUFRLEdBQ1osT0FBTyxnQkFBZ0IsS0FBSyxVQUFVO1FBQ3BDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFdkMsbUNBQW1D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LElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDdkIsSUFBSSxJQUFJO29CQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs7b0JBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgY29tcHV0ZWQsXHJcbiAgaXNTaWduYWwsXHJcbiAgc2lnbmFsLFxyXG4gIHVudHJhY2tlZCxcclxuICB0eXBlIFNpZ25hbCxcclxuICB0eXBlIFdyaXRhYmxlU2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBlbnRyaWVzLCBtZXJnZUlmT2JqZWN0LCB2YWx1ZXMgfSBmcm9tICdAbW1zdGFjay9vYmplY3QnO1xyXG5pbXBvcnQge1xyXG4gIGlzRGVyaXZhdGlvbixcclxuICB0b0Zha2VTaWduYWxEZXJpdmF0aW9uLFxyXG4gIHR5cGUgRGVyaXZlZFNpZ25hbCxcclxufSBmcm9tICdAbW1zdGFjay9wcmltaXRpdmVzJztcclxuaW1wb3J0IHtcclxuICBmb3JtQ29udHJvbCxcclxuICB0eXBlIENyZWF0ZUZvcm1Db250cm9sT3B0aW9ucyxcclxuICB0eXBlIEZvcm1Db250cm9sU2lnbmFsLFxyXG59IGZyb20gJy4vZm9ybS1jb250cm9sJztcclxuaW1wb3J0IHsgdHlwZSBTaWduYWxWYWx1ZSB9IGZyb20gJy4vc2lnbmFsLXZhbHVlLnR5cGUnO1xyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHRoZSBwYXJ0aWFsIHZhbHVlIHR5cGVzIGZyb20gYSByZWNvcmQgb2YgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMuXHJcbiAqIFRoaXMgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGBwYXJ0aWFsVmFsdWVgIHR5cGUgZm9yIGBGb3JtR3JvdXBTaWduYWxgLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcbnR5cGUgRGVyaXZhdGlvblBhcnRpYWxWYWx1ZXM8XHJcbiAgVERlcml2YXRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgRm9ybUNvbnRyb2xTaWduYWw8YW55LCBhbnksIGFueSwgYW55Pj4sXHJcbj4gPSB7XHJcbiAgW0sgaW4ga2V5b2YgVERlcml2YXRpb25zXTogRXhjbHVkZTxcclxuICAgIFNpZ25hbFZhbHVlPFREZXJpdmF0aW9uc1tLXVsncGFydGlhbFZhbHVlJ10+LFxyXG4gICAgdW5kZWZpbmVkXHJcbiAgPjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRzIGEgZ3JvdXAgb2YgZm9ybSBjb250cm9scywgc2ltaWxhciB0byBBbmd1bGFyJ3MgYEZvcm1Hcm91cGAuICBJdCBhZ2dyZWdhdGVzXHJcbiAqIHRoZSB2YWx1ZXMgYW5kIHN0YXRlcyBvZiBpdHMgY2hpbGQgY29udHJvbHMgaW50byBhIHNpbmdsZSBvYmplY3QuXHJcbiAqXHJcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBmb3JtIGdyb3VwJ3MgdmFsdWUgKGFuIG9iamVjdCkuXHJcbiAqIEB0eXBlUGFyYW0gVERlcml2YXRpb25zIC0gQSByZWNvcmQgd2hlcmUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBjaGlsZCBjb250cm9scyBhbmQgdmFsdWVzIGFyZSB0aGUgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMuXHJcbiAqIEB0eXBlUGFyYW0gVFBhcmVudCAtIFRoZSB0eXBlIG9mIHRoZSBwYXJlbnQgZm9ybSBjb250cm9sJ3MgdmFsdWUgKGlmIHRoaXMgZ3JvdXAgaXMgbmVzdGVkKS5cclxuICovXHJcbmV4cG9ydCB0eXBlIEZvcm1Hcm91cFNpZ25hbDxcclxuICBULFxyXG4gIFREZXJpdmF0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEZvcm1Db250cm9sU2lnbmFsPGFueSwgVCwgYW55LCBhbnk+PixcclxuICBUUGFyZW50ID0gdW5kZWZpbmVkLFxyXG4+ID0gRm9ybUNvbnRyb2xTaWduYWw8XHJcbiAgVCxcclxuICBUUGFyZW50LFxyXG4gICdncm91cCcsXHJcbiAgUGFydGlhbDxEZXJpdmF0aW9uUGFydGlhbFZhbHVlczxURGVyaXZhdGlvbnM+PlxyXG4+ICYge1xyXG4gIC8qKlxyXG4gICAqIEEgc2lnbmFsIHRoYXQgaG9sZHMgYSByZWNvcmQgb2YgdGhlIGNoaWxkIGZvcm0gY29udHJvbHMuICBUaGUga2V5cyBhcmUgdGhlIG5hbWVzXHJcbiAgICogb2YgdGhlIGNvbnRyb2xzLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIGBGb3JtQ29udHJvbFNpZ25hbGAgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIGNoaWxkcmVuOiBTaWduYWw8VERlcml2YXRpb25zPjtcclxuICAvKipcclxuICAgKiBBIHNpZ25hbCB0aGF0IGhvbGRzIHRoZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2Ugb2YgdGhlIGdyb3VwIGl0c2VsZiAoZXhjbHVkaW5nIGNoaWxkIGVycm9ycykuXHJcbiAgICovXHJcbiAgb3duRXJyb3I6IFNpZ25hbDxzdHJpbmc+O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgYEZvcm1Hcm91cFNpZ25hbGAuICBFeHRlbmRzIGBDcmVhdGVGb3JtQ29udHJvbE9wdGlvbnNgLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgQ3JlYXRlRm9ybUdyb3VwT3B0aW9uczxcclxuICBULFxyXG4gIFREZXJpdmF0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEZvcm1Db250cm9sU2lnbmFsPGFueSwgVCwgYW55LCBhbnk+PixcclxuPiA9IENyZWF0ZUZvcm1Db250cm9sT3B0aW9uczxULCAnZ3JvdXAnPiAmIHtcclxuICAvKipcclxuICAgKiBBbiBvcHRpb25hbCBmdW5jdGlvbiB0byBjcmVhdGUgYSBiYXNlIG9iamVjdCBmb3IgdGhlIGBwYXJ0aWFsVmFsdWVgIHNpZ25hbC5cclxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHByZS1wb3B1bGF0ZSB0aGUgcGFydGlhbCB2YWx1ZSB3aXRoIGRlZmF1bHQgdmFsdWVzIG9yXHJcbiAgICogdG8gcGVyZm9ybSBjdXN0b20gbG9naWMgYmVmb3JlIG1lcmdpbmcgaW4gdGhlIHBhcnRpYWwgdmFsdWVzIGZyb20gY2hpbGQgY29udHJvbHMuXHJcbiAgICovXHJcbiAgY3JlYXRlQmFzZVBhcnRpYWxWYWx1ZT86IChcclxuICAgIHZhbHVlOiBULFxyXG4gICkgPT4gUGFydGlhbDxEZXJpdmF0aW9uUGFydGlhbFZhbHVlczxURGVyaXZhdGlvbnM+PjtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgYEZvcm1Hcm91cFNpZ25hbGAsIHdoaWNoIGFnZ3JlZ2F0ZXMgYSBzZXQgb2YgY2hpbGQgZm9ybSBjb250cm9scyBpbnRvIGEgc2luZ2xlIG9iamVjdC5cclxuICpcclxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGZvcm0gZ3JvdXAncyB2YWx1ZSAoYW4gb2JqZWN0KS5cclxuICogQHR5cGVQYXJhbSBURGVyaXZhdGlvbnMgLSAgQSByZWNvcmQgd2hlcmUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBjaGlsZCBjb250cm9scyBhbmQgdmFsdWVzIGFyZSB0aGUgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMuXHJcbiAqIEB0eXBlUGFyYW0gVFBhcmVudCAtIFRoZSB0eXBlIG9mIHRoZSBwYXJlbnQgZm9ybSBjb250cm9sJ3MgdmFsdWUgKGlmIHRoaXMgZ3JvdXAgaXMgbmVzdGVkIHdpdGhpbiBhbm90aGVyIGdyb3VwIG9yIGFycmF5KS5cclxuICogQHBhcmFtIGluaXRpYWwgLSBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgZm9ybSBncm91cCAob3IgYSBgV3JpdGFibGVTaWduYWxgIG9yIGBEZXJpdmVkU2lnbmFsYCBpZiB0aGUgZ3JvdXAgaXMgbmVzdGVkKS5cclxuICogQHBhcmFtIHByb3ZpZGVkQ2hpbGRyZW4gLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgY2hpbGQgYEZvcm1Db250cm9sU2lnbmFsYCBpbnN0YW5jZXMsIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHN1Y2ggYW4gb2JqZWN0LlxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIGEgZnVuY3Rpb24gYWxsb3dzIGZvciBkeW5hbWljIGNyZWF0aW9uIG9mIGNoaWxkIGNvbnRyb2xzIChlLmcuLCBpbiByZXNwb25zZSB0byBjaGFuZ2VzIGluIG90aGVyIHNpZ25hbHMpLlxyXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGZvcm0gZ3JvdXAuXHJcbiAqIEByZXR1cm5zIEEgYEZvcm1Hcm91cFNpZ25hbGAgaW5zdGFuY2UuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vIENyZWF0ZSBhIHNpbXBsZSBmb3JtIGdyb3VwOlxyXG4gKiAgY29uc3QgdXNlciA9IHNpZ25hbCh7IG5hbWU6ICdKb2huIERvZScsIGFnZTogMzAgfSk7XHJcbiAqICBjb25zdCBmb3JtID0gZm9ybUdyb3VwKHVzZXIsIHtcclxuICogIG5hbWU6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ25hbWUnKSksXHJcbiAqICBhZ2U6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ2FnZScpKSxcclxuICogIH0pXHJcbiAqXHJcbiAqIC8vIENyZWF0ZSBhIG5lc3RlZCBmb3JtIGdyb3VwOlxyXG4gKiAgY29uc3QgdXNlciA9IHNpZ25hbCh7IG5hbWU6ICdKb2huJywgYWdlOiAzMCwgYWRkcmVzczoge3N0cmVldDogXCJTb21lIHN0cmVldFwifSB9KTtcclxuICpcclxuICogY29uc3QgYWRkcmVzcyA9IGRlcml2ZWQodXNlciwgJ2FkZHJlc3MnKTtcclxuICogY29uc3QgdXNlckZvcm0gPSBmb3JtR3JvdXAodXNlciwge1xyXG4gKiAgIG5hbWU6IGZvcm1Db250cm9sKGRlcml2ZWQodXNlciwgJ25hbWUnKSksXHJcbiAqICAgYWdlOiBmb3JtQ29udHJvbChkZXJpdmVkKHVzZXIsICdhZ2UnKSksXHJcbiAqICAgYWRkcmVzczogZm9ybUdyb3VwKGFkZHJlc3MsIHtcclxuICogICAgICAgc3RyZWV0OiBmb3JtQ29udHJvbChkZXJpdmVkKGFkZHJlc3MsIChhZGRyZXNzKSA9PiBhZGRyZXNzLnN0cmVldCksIHtcclxuICogICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4gKHZhbHVlKSA9PiB2YWx1ZSA/IFwiXCIgOiBcInJlcXVpcmVkIVwiXHJcbiAqICAgICAgIH0pIC8vIHlvdSBjYW4gY3JlYXRlIGRlZXBseSBuZXN0ZWQgc3RydWN0dXJlcy5cclxuICogICB9KVxyXG4gKiB9KTtcclxuICpcclxuICogLy8gQ3JlYXRlIGEgZm9ybSBncm91cCB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY2hpbGRyZW4gcmVwbGFjZWQgcmFyZSBGb3JtUmVjb3JkIHJlcXVpcmVtZW50cy5cclxuICogY29uc3Qgc2hvd0FkZHJlc3MgPSBzaWduYWwoZmFsc2UpO1xyXG4gKiB0eXBlIENoYXJhY3RlcmlzdGljID0ge1xyXG4gKiAgdmFsdWVUeXBlOiAnc3RyaW5nJztcclxuICogIHZhbHVlOiBzdHJpbmc7XHJcbiAqIH0gfCB7XHJcbiAqICB2YWx1ZVR5cGU6ICdudW1iZXInO1xyXG4gKiAgdmFsdWU6IG51bWJlcjtcclxuICogfVxyXG4gKiBjb25zdCBjaGFyID0gc2lnbmFsPENoYXJhY3RlcmlzdGljPih7IHZhbHVlVHlwZTogJ3N0cmluZycsIHZhbHVlOiAnJyB9KTtcclxuICogY29uc3QgY2hhckZvcm0gPSBmb3JtR3JvdXAoY2hhciwgKCkgPT4ge1xyXG4gKiAgaWYgKGNoYXIoKS52YWx1ZVR5cGUgPT09ICdzdHJpbmcpIHJldHVybiBjcmVhdGVTdHJpbmdDb250cm9sKGNoYXIpO1xyXG4gKiAgcmV0dXJuIGNyZWF0ZU51bWJlckNvbnRyb2woY2hhcik7XHJcbiAqIH0pO1xyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1Hcm91cDxcclxuICBULFxyXG4gIFREZXJpdmF0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIEZvcm1Db250cm9sU2lnbmFsPGFueSwgVCwgYW55LCBhbnk+PixcclxuICBUUGFyZW50ID0gdW5kZWZpbmVkLFxyXG4+KFxyXG4gIGluaXRpYWw6IERlcml2ZWRTaWduYWw8VFBhcmVudCwgVD4gfCBUIHwgV3JpdGFibGVTaWduYWw8VD4sXHJcbiAgcHJvdmlkZWRDaGlsZHJlbjogKCgpID0+IFREZXJpdmF0aW9ucykgfCBURGVyaXZhdGlvbnMsXHJcbiAgb3B0PzogQ3JlYXRlRm9ybUdyb3VwT3B0aW9uczxULCBURGVyaXZhdGlvbnM+LFxyXG4pOiBGb3JtR3JvdXBTaWduYWw8VCwgVERlcml2YXRpb25zLCBUUGFyZW50PiB7XHJcbiAgY29uc3QgdmFsdWVTaWduYWwgPSBpc1NpZ25hbChpbml0aWFsKSA/IGluaXRpYWwgOiBzaWduYWwoaW5pdGlhbCk7XHJcbiAgLy8gd2UgZmFrZSBhIGRlcml2YXRpb24gaWYgbm90IHByZXNlbnQsIHNvIHRoYXQgLmZyb20gaXMgcHJlc2VudCBvbiB0aGUgc2lnbmFsXHJcbiAgY29uc3QgdmFsdWUgPSBpc0Rlcml2YXRpb248VFBhcmVudCwgVD4odmFsdWVTaWduYWwpXHJcbiAgICA/IHZhbHVlU2lnbmFsXHJcbiAgICA6IHRvRmFrZVNpZ25hbERlcml2YXRpb248VFBhcmVudCwgVD4odmFsdWVTaWduYWwpO1xyXG5cclxuICAvLyB3ZSBhbGxvdyBmb3IgYSBmdW5jdGlvbi9zaWduYWwgdG8gYmUgcGFzc2VkLCB0aGlzIGNhc2Ugc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB0aGUgY2hpbGQgY29udHJvbHMgY2hhbmdlIGRlcGVuZGVudCB1cG9uIHNvbWV0aGluZywgc2F5IGlmIGEgZm9ybUNvbnRyb2wgaXMgZmxpcHBlZCBpbnRvIGEgZm9ybUdyb3VwLlxyXG4gIGNvbnN0IGNoaWxkcmVuID1cclxuICAgIHR5cGVvZiBwcm92aWRlZENoaWxkcmVuID09PSAnZnVuY3Rpb24nXHJcbiAgICAgID8gY29tcHV0ZWQoKCkgPT4gcHJvdmlkZWRDaGlsZHJlbigpKVxyXG4gICAgICA6IGNvbXB1dGVkKCgpID0+IHByb3ZpZGVkQ2hpbGRyZW4pO1xyXG5cclxuICAvLyBhcnJheSBhbGxvd3MgZm9yIGVhc2llciBoYW5kbGluZ1xyXG4gIGNvbnN0IGRlcml2YXRpb25zQXJyYXkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZXMoY2hpbGRyZW4oKSkpO1xyXG5cclxuICBjb25zdCBjaGlsZHJlbkRpcnR5ID0gY29tcHV0ZWQoXHJcbiAgICAoKSA9PlxyXG4gICAgICAhIWRlcml2YXRpb25zQXJyYXkoKS5sZW5ndGggJiYgZGVyaXZhdGlvbnNBcnJheSgpLnNvbWUoKGQpID0+IGQuZGlydHkoKSksXHJcbiAgKTtcclxuXHJcbiAgLy8gYnkgZGVmYXVsdCBkb250IGNvbXBhcmUgb2JqZWN0IHJlZmVyZW5jZXMsIGp1c3QgdXNlIGNoaWxkcmVuRGlydHlTaWduYWxcclxuICBjb25zdCBiYXNlRGlydHlFcSA9IG9wdD8uZGlydHlFcXVhbGl0eSA/PyBvcHQ/LmVxdWFsID8/ICgoKSA9PiB0cnVlKTtcclxuXHJcbiAgLy8gZnVuY3Rpb24gd2hpY2ggY2FsbHMgYSBzaWduYWwgYmVjb21lcyBhIHNpZ25hbFxyXG4gIGNvbnN0IGRpcnR5RXF1YWxpdHkgPSAoYTogVCwgYjogVCkgPT4ge1xyXG4gICAgcmV0dXJuIGJhc2VEaXJ0eUVxKGEsIGIpICYmICFjaGlsZHJlbkRpcnR5KCk7XHJcbiAgfTtcclxuXHJcbiAgLy8gZ3JvdXAgY29udHJvbFxyXG4gIGNvbnN0IGN0cmwgPSBmb3JtQ29udHJvbDxULCBUUGFyZW50LCAnZ3JvdXAnPih2YWx1ZSwge1xyXG4gICAgLi4ub3B0LFxyXG4gICAgZGlydHlFcXVhbGl0eSxcclxuICAgIGNvbnRyb2xUeXBlOiAnZ3JvdXAnLFxyXG4gICAgcmVhZG9ubHk6ICgpID0+IHtcclxuICAgICAgLy8gcmVhZG9ubHkgaWYgaXMgcmVhZG9ubHkgb3IgYWxsIGNoaWxkcmVuIGFyZSByZWFkb25seVxyXG4gICAgICBpZiAob3B0Py5yZWFkb25seT8uKCkpIHJldHVybiB0cnVlO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgICEhZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCAmJlxyXG4gICAgICAgIGRlcml2YXRpb25zQXJyYXkoKS5ldmVyeSgoZCkgPT4gZC5yZWFkb25seSgpKVxyXG4gICAgICApO1xyXG4gICAgfSxcclxuICAgIGRpc2FibGU6ICgpID0+IHtcclxuICAgICAgaWYgKG9wdD8uZGlzYWJsZT8uKCkpIHJldHVybiB0cnVlO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgICEhZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCAmJlxyXG4gICAgICAgIGRlcml2YXRpb25zQXJyYXkoKS5ldmVyeSgoZCkgPT4gZC5kaXNhYmxlZCgpKVxyXG4gICAgICApO1xyXG4gICAgfSxcclxuICB9KSBzYXRpc2ZpZXMgRm9ybUNvbnRyb2xTaWduYWw8VCwgVFBhcmVudCwgJ2dyb3VwJz47XHJcblxyXG4gIGNvbnN0IGNoaWxkcmVuVG91Y2hlZCA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT5cclxuICAgICAgISFkZXJpdmF0aW9uc0FycmF5KCkubGVuZ3RoICYmXHJcbiAgICAgIGRlcml2YXRpb25zQXJyYXkoKS5zb21lKChkKSA9PiBkLnRvdWNoZWQoKSksXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgdG91Y2hlZCA9IGNvbXB1dGVkKCgpID0+IGN0cmwudG91Y2hlZCgpIHx8IGNoaWxkcmVuVG91Y2hlZCgpKTtcclxuXHJcbiAgY29uc3QgY2hpbGRFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGRlcml2YXRpb25zQXJyYXkoKVxyXG4gICAgICAubWFwKChkKSA9PiAoZC5lcnJvcigpID8gYCR7ZC5sYWJlbCgpfTogJHtkLmVycm9yKCl9YCA6ICcnKSlcclxuICAgICAgLmZpbHRlcihCb29sZWFuKVxyXG4gICAgICAuam9pbignXFxuJyk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGVycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgb3duRXJyb3IgPSBjdHJsLmVycm9yKCk7XHJcbiAgICBpZiAob3duRXJyb3IpIHJldHVybiBvd25FcnJvcjtcclxuICAgIHJldHVybiBjaGlsZEVycm9yKCkgPyAnSU5WQUxJRCcgOiAnJztcclxuICB9KTtcclxuXHJcbiAgY29uc3QgbWFya0FsbEFzVG91Y2hlZCA9ICgpID0+IHtcclxuICAgIGN0cmwubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICBjdHJsLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb25zdCBtYXJrQWxsQXNQcmlzdGluZSA9ICgpID0+IHtcclxuICAgIGN0cmwubWFya0FsbEFzUHJpc3RpbmUoKTtcclxuICAgIGZvciAoY29uc3QgY3RybCBvZiB1bnRyYWNrZWQoZGVyaXZhdGlvbnNBcnJheSkpIHtcclxuICAgICAgY3RybC5tYXJrQWxsQXNQcmlzdGluZSgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IHJlY29uY2lsZSA9IChuZXdWYWx1ZTogVCkgPT4ge1xyXG4gICAgLy8gc2V0IHRoZSBjaGlsZHJlbiB2YWx1ZXMgYmFzZWQgb24gdGhlIGRlcml2YXRpb24gb2YgdGhlIG5ldyB2YWx1ZVxyXG4gICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICBjb25zdCBmcm9tID0gY3RybC5mcm9tO1xyXG4gICAgICBpZiAoIWZyb20pIGNvbnRpbnVlO1xyXG4gICAgICBjdHJsLnJlY29uY2lsZShmcm9tKG5ld1ZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBjdHJsLnJlY29uY2lsZShtZXJnZUlmT2JqZWN0KG5ld1ZhbHVlLCB1bnRyYWNrZWQodmFsdWUpKSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZm9yY2VSZWNvbmNpbGUgPSAobmV3VmFsdWU6IFQpID0+IHtcclxuICAgIGZvciAoY29uc3QgY3RybCBvZiB1bnRyYWNrZWQoZGVyaXZhdGlvbnNBcnJheSkpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IGN0cmwuZnJvbTtcclxuICAgICAgaWYgKCFmcm9tKSBjb250aW51ZTtcclxuICAgICAgY3RybC5mb3JjZVJlY29uY2lsZShmcm9tKG5ld1ZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICBjdHJsLmZvcmNlUmVjb25jaWxlKG5ld1ZhbHVlKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBjcmVhdGVCYXNlVmFsdWVGbiA9IG9wdD8uY3JlYXRlQmFzZVBhcnRpYWxWYWx1ZTtcclxuXHJcbiAgY29uc3QgYmFzZVBhcnRpYWxWYWx1ZTogU2lnbmFsPFxyXG4gICAgUGFydGlhbDxEZXJpdmF0aW9uUGFydGlhbFZhbHVlczxURGVyaXZhdGlvbnM+PlxyXG4gID4gPSBjcmVhdGVCYXNlVmFsdWVGblxyXG4gICAgPyBjb21wdXRlZCgoKSA9PiBjcmVhdGVCYXNlVmFsdWVGbihjdHJsLnZhbHVlKCkpKVxyXG4gICAgOiBjb21wdXRlZCgoKSA9PiAoe30pKTtcclxuXHJcbiAgY29uc3QgcGFydGlhbFZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgb2JqOiBQYXJ0aWFsPERlcml2YXRpb25QYXJ0aWFsVmFsdWVzPFREZXJpdmF0aW9ucz4+ID0ge1xyXG4gICAgICAuLi5iYXNlUGFydGlhbFZhbHVlKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICghY3RybC5kaXJ0eSgpKSByZXR1cm4gb2JqO1xyXG5cclxuICAgIGZvciAoY29uc3QgW2tleSwgY3RybF0gb2YgZW50cmllcyhjaGlsZHJlbigpKSkge1xyXG4gICAgICBjb25zdCBwdiA9IGN0cmwucGFydGlhbFZhbHVlKCk7XHJcblxyXG4gICAgICBpZiAocHYgPT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgIG9ialtrZXldID0gcHY7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9KTtcclxuXHJcbiAgY29uc3QgY2hpbGRyZW5WYWxpZCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICghZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gZGVyaXZhdGlvbnNBcnJheSgpLmV2ZXJ5KChkKSA9PiBkLnZhbGlkKCkpO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdCBjaGlsZHJlblBlbmRpbmcgPSBjb21wdXRlZChcclxuICAgICgpID0+XHJcbiAgICAgICEhZGVyaXZhdGlvbnNBcnJheSgpLmxlbmd0aCAmJlxyXG4gICAgICBkZXJpdmF0aW9uc0FycmF5KCkuc29tZSgoZCkgPT4gZC5wZW5kaW5nKCkpLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICAuLi5jdHJsLFxyXG4gICAgY2hpbGRyZW4sXHJcbiAgICBwYXJ0aWFsVmFsdWUsXHJcbiAgICByZWNvbmNpbGUsXHJcbiAgICBmb3JjZVJlY29uY2lsZSxcclxuICAgIG93bkVycm9yOiBjdHJsLmVycm9yLFxyXG4gICAgdG91Y2hlZCxcclxuICAgIGVycm9yLFxyXG4gICAgdmFsaWQ6IGNvbXB1dGVkKCgpID0+IGN0cmwudmFsaWQoKSAmJiBjaGlsZHJlblZhbGlkKCkpLFxyXG4gICAgcGVuZGluZzogY29tcHV0ZWQoKCkgPT4gY3RybC5wZW5kaW5nKCkgfHwgY2hpbGRyZW5QZW5kaW5nKCkpLFxyXG4gICAgbWFya0FsbEFzUHJpc3RpbmUsXHJcbiAgICBtYXJrQWxsQXNUb3VjaGVkLFxyXG4gICAgcmVzZXQ6ICgpID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICAgIGN0cmwucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgICBjdHJsLnJlc2V0KCk7XHJcbiAgICB9LFxyXG4gICAgcmVzZXRXaXRoSW5pdGlhbDogKGluaXRpYWw6IFQpID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjdHJsIG9mIHVudHJhY2tlZChkZXJpdmF0aW9uc0FycmF5KSkge1xyXG4gICAgICAgIGNvbnN0IGZyb20gPSBjdHJsLmZyb207XHJcbiAgICAgICAgaWYgKGZyb20pIGN0cmwucmVzZXRXaXRoSW5pdGlhbChmcm9tKGluaXRpYWwpKTtcclxuICAgICAgICBlbHNlIGN0cmwucmVzZXQoKTtcclxuICAgICAgfVxyXG4gICAgICBjdHJsLnJlc2V0V2l0aEluaXRpYWwoaW5pdGlhbCk7XHJcbiAgICB9LFxyXG4gIH07XHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW1zdGFjay1mb3JtLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mb3JtL2NvcmUvc3JjL21tc3RhY2stZm9ybS1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmstack/form-core",
3
- "version": "20.0.1",
3
+ "version": "20.0.2",
4
4
  "keywords": [
5
5
  "angular",
6
6
  "signals",
@@ -19,13 +19,13 @@
19
19
  },
20
20
  "homepage": "https://github.com/mihajm/mmstack/blob/master/packages/form/core",
21
21
  "dependencies": {
22
- "@mmstack/primitives": "^20.0.1",
22
+ "@mmstack/primitives": "^20.0.2",
23
23
  "@mmstack/object": "^20.0.0",
24
24
  "uuid": "~11.1.0",
25
25
  "tslib": "^2.3.0"
26
26
  },
27
27
  "peerDependencies": {
28
- "@angular/core": "~20.0.3"
28
+ "@angular/core": "~20.1.0"
29
29
  },
30
30
  "sideEffects": false,
31
31
  "module": "fesm2022/mmstack-form-core.mjs",