@regle/core 1.27.1 → 1.28.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/regle-core.d.ts +60 -33
- package/dist/regle-core.js +137 -61
- package/dist/regle-core.min.js +2 -2
- package/package.json +7 -7
package/dist/regle-core.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.28.0-beta.1
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
@@ -195,7 +195,7 @@ type DefaultValidators = {
|
|
|
195
195
|
url: RegleRuleWithParamsDefinition<unknown, string, [options?: UrlOptions | undefined], false, boolean, unknown, string>;
|
|
196
196
|
};
|
|
197
197
|
interface inferRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>> {
|
|
198
|
-
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends
|
|
198
|
+
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends ReglePartialRuleTreeInput<Unwrap<TState extends Record<string, any> ? TState : {}>, Partial<ExtendedRulesDeclarations> & TCustomRules>, TDecl extends RegleRuleDeclInput<NonNullable<TState>, Partial<ExtendedRulesDeclarations> & TCustomRules>>(state: Maybe<TState> | DeepReactiveState<TState>, rulesFactory: Unwrap<TState> extends MaybeInput<PrimitiveTypes> ? TDecl : Unwrap<TState> extends Record<string, any> ? TRules : {}): NonNullable<Unwrap<TState>> extends PrimitiveTypes ? TDecl : TRules;
|
|
199
199
|
}
|
|
200
200
|
/**
|
|
201
201
|
* Type helper to provide autocomplete and type-checking for your form rules.
|
|
@@ -387,7 +387,7 @@ declare function extendRegleConfig<TRootCustomRules extends Partial<ExtendedRule
|
|
|
387
387
|
declare function defineRegleOptions<T extends GlobalConfigOptions<Partial<ExtendedRulesDeclarationsOverrides>, RegleShortcutDefinition<any>>>(options: T): T;
|
|
388
388
|
type useRegleFnOptions<TState extends Record<string, any> | MaybeInput<PrimitiveTypes>, TRules extends ReglePartialRuleTree<NonNullable<JoinDiscriminatedUnions<TState>>, CustomRulesDeclarationTree>, TAdditionalOptions extends Record<string, any>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>> = TState extends Record<string, any> ? Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<JoinDiscriminatedUnions<TState>, TRules, TValidationGroups> & TAdditionalOptions : Partial<DeepMaybeRef<RegleBehaviourOptions & FieldOnlyRegleBehaviourOptions>> & TAdditionalOptions;
|
|
389
389
|
interface useRegleFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>, TShortcuts extends RegleShortcutDefinition<any> = never, TAdditionalReturnProperties extends Record<string, any> = {}, TAdditionalOptions extends Record<string, any> = {}> {
|
|
390
|
-
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends
|
|
390
|
+
<TState extends MaybeRef<Record<string, any> | MaybeInput<PrimitiveTypes>>, TRules extends ReglePartialRuleTreeInput<JoinDiscriminatedUnions<Unwrap<TState>>, Partial<ExtendedRulesDeclarations & Omit<TCustomRules, keyof DefaultValidatorsTree>>>, TDecl extends RegleRuleDeclInput<WidenPrimitiveLiterals<NonNullable<Unwrap<TState>>>, Partial<ExtendedRulesDeclarations & TCustomRules>>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>>(...params: [state: Maybe<TState> | DeepReactiveState<TState>, rulesFactory: Unwrap<TState> extends MaybeInput<PrimitiveTypes> ? MaybeRefOrGetter<TDecl> : Unwrap<TState> extends Record<string, any> ? MaybeComputedOrGetter<TRules> : {}, ...(HaveAnyRequiredProps<useRegleFnOptions<Unwrap<TState>, TRules, TAdditionalOptions, TValidationGroups>> extends true ? [options: useRegleFnOptions<Unwrap<NoInferLegacy<TState>>, TRules, TAdditionalOptions, TValidationGroups>] : [options?: useRegleFnOptions<Unwrap<NoInferLegacy<TState>>, TRules, TAdditionalOptions, TValidationGroups>])]): NonNullable<Unwrap<TState>> extends PrimitiveTypes ? RegleSingleField<WidenPrimitiveLiterals<Unwrap<TState>>, TDecl, TShortcuts, TAdditionalReturnProperties> : Regle<Unwrap<TState> extends Record<string, any> ? Unwrap<TState> : {}, UnwrapSimple<TRules> extends Record<string, any> ? UnwrapSimple<TRules> : {}, TValidationGroups, TShortcuts, TAdditionalReturnProperties>;
|
|
391
391
|
__config?: GlobalConfigOptions<TCustomRules, TShortcuts>;
|
|
392
392
|
}
|
|
393
393
|
/**
|
|
@@ -573,7 +573,7 @@ declare function getErrors<TRegle extends SuperCompatibleRegleRoot | SuperCompat
|
|
|
573
573
|
declare function getIssues<TRegle extends SuperCompatibleRegleRoot | SuperCompatibleRegleStatus, TPath extends Paths<TRegle['$issues']>>(r$: MaybeRefOrGetter<TRegle>, path: TPath | (string & {})): IsStringLiteral<TPath> extends true ? Get<TRegle['$issues'], TPath & string> : RegleFieldIssue[] | undefined;
|
|
574
574
|
type useRulesFnOptions<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState = InferInput<TRules>> = Partial<DeepMaybeRef<RegleBehaviourOptions>> & LocalRegleBehaviourOptions<JoinDiscriminatedUnions<TState extends Record<string, any> ? Unwrap<TState> : {}>, TState extends Record<string, any> ? (TRules extends Record<string, any> ? TRules : {}) : {}, TValidationGroups>;
|
|
575
575
|
interface useRulesFn<TCustomRules extends Partial<ExtendedRulesDeclarationsOverrides>, TShortcuts extends RegleShortcutDefinition<any> = never> {
|
|
576
|
-
<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends
|
|
576
|
+
<TRules extends RegleUnknownRulesTree | RegleRuleDecl, TDecl extends RegleRuleDeclInput<NonNullable<TState>, Partial<ExtendedRulesDeclarations> & TCustomRules>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]>, TState extends Record<string, any> = InferInput<TRules>>(rulesFactory: TState extends Record<string, any> ? MaybeRef<TRules> | ((...args: any[]) => TRules) : {}, options?: useRulesFnOptions<TRules, TValidationGroups, TState>): NonNullable<TState> extends PrimitiveTypes ? Raw<RegleFieldStatus<NonNullable<TState>, TDecl, TShortcuts>> & StandardSchemaV1<TState> : Raw<RegleRoot<TState extends Record<string, any> ? Unwrap<TState> : {}, TRules extends Record<string, any> ? TRules : {}, TValidationGroups, TShortcuts>> & StandardSchemaV1<TState>;
|
|
577
577
|
__config?: GlobalConfigOptions<TCustomRules, TShortcuts>;
|
|
578
578
|
}
|
|
579
579
|
/**
|
|
@@ -706,6 +706,16 @@ interface RegleBehaviourOptions {
|
|
|
706
706
|
* @default false
|
|
707
707
|
*/
|
|
708
708
|
disabled?: boolean | undefined;
|
|
709
|
+
/**
|
|
710
|
+
* Number of milliseconds every async field should wait before executing its rules.
|
|
711
|
+
*
|
|
712
|
+
* Applies to every async field in the form. A per-field `$debounce` always takes priority over this global value.
|
|
713
|
+
*
|
|
714
|
+
* Set to `0` to disable the default debounce on async rules.
|
|
715
|
+
*
|
|
716
|
+
* @default 200 (for fields with async rules)
|
|
717
|
+
*/
|
|
718
|
+
debounce?: number | undefined;
|
|
709
719
|
}
|
|
710
720
|
interface LocalRegleBehaviourOptions<TState extends Record<string, any>, TRules extends ReglePartialRuleTree<TState>, TValidationGroups extends Record<string, RegleValidationGroupEntry[]> = {}> {
|
|
711
721
|
/**
|
|
@@ -778,10 +788,6 @@ interface RegleValidationGroupOutput {
|
|
|
778
788
|
$silentErrors: string[];
|
|
779
789
|
}
|
|
780
790
|
type FieldRegleBehaviourOptions<TValue extends unknown = unknown> = AddDollarToOptions<RegleBehaviourOptions> & {
|
|
781
|
-
/**
|
|
782
|
-
* Let you declare the number of milliseconds the rule needs to wait before executing. Useful for async or heavy computations.
|
|
783
|
-
*/
|
|
784
|
-
$debounce?: number;
|
|
785
791
|
/**
|
|
786
792
|
* Override the default `$edited` handler.
|
|
787
793
|
*/
|
|
@@ -1290,13 +1296,14 @@ type RegleRoot<TState extends object | Record<string, unknown> = {}, TRules exte
|
|
|
1290
1296
|
$groups: { readonly [TKey in keyof TValidationGroups]: RegleValidationGroupOutput };
|
|
1291
1297
|
});
|
|
1292
1298
|
type ComputeNestedFieldStatus<TState extends Record<string, any>, TRules extends Record<string, any>, TKey extends keyof TState, TShortcuts extends RegleShortcutDefinition> = TKey extends string ? IsUnion<NonNullable<TRules[TKey]>> extends true ? ExtendOnlyRealRecord<TState[TKey]> extends true ? MaybeVariantStatus<NonNullable<TState>[TKey], NonNullable<TRules[TKey]>, TShortcuts> : InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts> : InferRegleStatusType<NonNullable<TRules[TKey]>, NonNullable<TState>, TKey, TShortcuts> : never;
|
|
1293
|
-
type
|
|
1299
|
+
type $IsFieldLevelRule<TRule> = NonNullable<TRule> extends MaybeRef<RegleRuleDecl> ? true : false;
|
|
1300
|
+
type ProcessNestedFields<TState extends Record<string, any> | undefined, TRules extends ReglePartialRuleTree<NonNullable<TState>>, TShortcuts extends RegleShortcutDefinition = {}, TIsFields extends boolean = false> = Or<HasNamedKeys<TState>, TIsFields> extends true ? { readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? $IsFieldLevelRule<TRules[TKey]> extends true ? IsEmptyObject<TRules[TKey]> extends true ? TKey : never : never : TKey]: ComputeNestedFieldStatus<NonNullable<TState>, TRules, TKey, TShortcuts> } & (IsEmptyObject<TRules> extends true ? { readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? $IsFieldLevelRule<TRules[TKey]> extends true ? IsEmptyObject<TRules[TKey]> extends true ? never : TKey : TKey : never]: ComputeNestedFieldStatus<NonNullable<TState>, TRules, TKey, TShortcuts> | (isUndefinedOrNull<TState[TKey]> extends true ? undefined : never) } : { readonly [TKey in keyof TState as TRules[TKey] extends NonNullable<TRules[TKey]> ? $IsFieldLevelRule<TRules[TKey]> extends true ? IsEmptyObject<TRules[TKey]> extends true ? never : TKey : TKey : never]-?: ComputeNestedFieldStatus<NonNullable<TState>, TRules, TKey, TShortcuts> }) : {
|
|
1294
1301
|
[x: string]: RegleCommonStatus<unknown, unknown>;
|
|
1295
1302
|
};
|
|
1296
1303
|
/**
|
|
1297
1304
|
* @public
|
|
1298
1305
|
*/
|
|
1299
|
-
type RegleStatus<TState extends object | Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState
|
|
1306
|
+
type RegleStatus<TState extends object | Record<string, any> | undefined = Record<string, any>, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = {}, _TFields = ProcessNestedFields<TState, TRules, TShortcuts, true>> = Omit<RegleCommonStatus<TState, TState, TRules>, '$issues' | '$errors'> & {
|
|
1300
1307
|
/** Represents all the children of your object. You can access any nested child at any depth to get the relevant data you need for your form. */readonly $fields: _TFields;
|
|
1301
1308
|
/**
|
|
1302
1309
|
* Collection of all the issues, collected for all children properties and nested forms.
|
|
@@ -1315,8 +1322,8 @@ type RegleStatus<TState extends object | Record<string, any> | undefined = Recor
|
|
|
1315
1322
|
$setExternalIssues(issues: RegleExternalIssueTree<TState>): void; /** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
1316
1323
|
$extractDirtyFields: (filterNullishValues?: boolean) => DeepPartial<TState>; /** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
1317
1324
|
$validate: (forceValues?: JoinDiscriminatedUnions<TState> extends EmptyObject ? any : HasNamedKeys<JoinDiscriminatedUnions<TState>> extends true ? IsUnknown<JoinDiscriminatedUnions<TState>> extends true ? any : JoinDiscriminatedUnions<TState> : any) => Promise<RegleResult<JoinDiscriminatedUnions<TState>, TRules>>;
|
|
1318
|
-
} & (HasNamedKeys<TState> extends true ? _TFields : {}) & CustomNestedProperties & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> }) & (TRules['$self'] extends
|
|
1319
|
-
/** Represents the status of the parent object. Status only concern the object itself and not its children */readonly $self: RegleFieldStatus<
|
|
1325
|
+
} & (HasNamedKeys<TState> extends true ? _TFields : {}) & CustomNestedProperties & ([TShortcuts['nested']] extends [never] ? {} : { [K in keyof TShortcuts['nested']]: ReturnType<NonNullable<TShortcuts['nested']>[K]> }) & (TRules['$self'] extends RegleRuleDeclInput<any, Partial<ExtendedRulesDeclarations>> ? {
|
|
1326
|
+
/** Represents the status of the parent object. Status only concern the object itself and not its children */readonly $self: RegleFieldStatus<TState, NonNullable<TRules['$self']>, TShortcuts>;
|
|
1320
1327
|
} : {});
|
|
1321
1328
|
/**
|
|
1322
1329
|
* @internal
|
|
@@ -1350,7 +1357,7 @@ type $InternalRegleStatusType = $InternalRegleCollectionStatus | $InternalRegleS
|
|
|
1350
1357
|
/**
|
|
1351
1358
|
* @public
|
|
1352
1359
|
*/
|
|
1353
|
-
type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any
|
|
1360
|
+
type RegleFieldStatus<TState extends any = any, TRules extends RegleFormPropertyType<any> = Record<string, any>, TShortcuts extends RegleShortcutDefinition = never> = Omit<RegleCommonStatus<TState, TState, TRules>, '$value' | '$silentValue' | '$initialValue' | '$originalValue' | '$issues' | '$errors'> & {
|
|
1354
1361
|
/** A reference to the original validated model. It can be used to bind your form with v-model.*/$value: MaybeOutput<UnwrapNestedRefs<TState>>; /** $value variant that will not "touch" the field and update the value silently, running only the rules, so you can easily swap values without impacting user interaction. */
|
|
1355
1362
|
$silentValue: MaybeOutput<UnwrapNestedRefs<TState>>;
|
|
1356
1363
|
/**
|
|
@@ -1379,12 +1386,12 @@ type RegleFieldStatus<TState extends any = any, TRules extends RegleFormProperty
|
|
|
1379
1386
|
readonly $externalIssues: RegleFieldIssue[]; /** Stores active tooltips messages of the current field */
|
|
1380
1387
|
readonly $tooltips: string[]; /** Represents the inactive status. Is true when this state have empty rules */
|
|
1381
1388
|
readonly $inactive: boolean; /** Adds runtime rules to the field. */
|
|
1382
|
-
$addRules: (rules:
|
|
1389
|
+
$addRules: (rules: RegleRuleDeclInput<TState>) => void;
|
|
1383
1390
|
/**
|
|
1384
1391
|
* Adds runtime rules to the field.
|
|
1385
1392
|
* @deprecated Use `$addRules` instead. This alias will be removed in a future version.
|
|
1386
1393
|
*/
|
|
1387
|
-
addRules: (rules:
|
|
1394
|
+
addRules: (rules: RegleRuleDeclInput<TState>) => void; /** Sets the external errors for the field. */
|
|
1388
1395
|
$setExternalErrors(errors: string[]): void; /** Sets the external issues for the field. */
|
|
1389
1396
|
$setExternalIssues(issues: RegleFieldIssue[]): void; /** Will return a copy of your state with only the fields that are dirty. By default it will filter out nullish values or objects, but you can override it with the first parameter $extractDirtyFields(false). */
|
|
1390
1397
|
$extractDirtyFields: (filterNullishValues?: boolean) => MaybeOutput<TState>; /** Sets all properties as dirty, triggering all rules. It returns a promise that will either resolve to false or a type safe copy of your form state. Values that had the required rule will be transformed into a non-nullable value (type only). */
|
|
@@ -1409,9 +1416,9 @@ interface $InternalRegleFieldStatus extends $InternalRegleCommonStatus {
|
|
|
1409
1416
|
readonly $isDebouncing: boolean;
|
|
1410
1417
|
readonly $schemaMode?: boolean;
|
|
1411
1418
|
readonly '~modifiers'?: FieldRegleBehaviourOptions;
|
|
1412
|
-
$addRules: (rules:
|
|
1419
|
+
$addRules: (rules: RegleRuleDeclInput) => void;
|
|
1413
1420
|
/** @deprecated Use `$addRules` instead. */
|
|
1414
|
-
addRules: (rules:
|
|
1421
|
+
addRules: (rules: RegleRuleDeclInput) => void;
|
|
1415
1422
|
$extractDirtyFields: (filterNullishValues?: boolean) => any;
|
|
1416
1423
|
$validate: (forceValues?: unknown) => Promise<$InternalRegleResult>;
|
|
1417
1424
|
/**
|
|
@@ -1652,8 +1659,15 @@ interface $InternalRegleCollectionStatus extends Omit<$InternalRegleStatus, '$fi
|
|
|
1652
1659
|
/**
|
|
1653
1660
|
* @public
|
|
1654
1661
|
*/
|
|
1655
|
-
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1656
|
-
|
|
1662
|
+
type ReglePartialRuleTree<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = { [TKey in keyof TForm]?: RegleFormPropertyType<TForm[TKey], TCustomRules> } & SelfObjectValidationDecl<TForm, TCustomRules>;
|
|
1663
|
+
/**
|
|
1664
|
+
* Rule tree type for rule *input* sites (useRegle, inferRules, satisfies RegleComputedRules).
|
|
1665
|
+
* Uses the full validator catalog for autocomplete and strict checking.
|
|
1666
|
+
*
|
|
1667
|
+
* @public
|
|
1668
|
+
*/
|
|
1669
|
+
type ReglePartialRuleTreeInput<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = ReglePartialRuleTree<TForm, TCustomRules>;
|
|
1670
|
+
type SelfObjectValidationDecl<TForm extends Record<string, any> = Record<string, any>, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = {
|
|
1657
1671
|
$self?: MaybeRefOrComputedRef<RegleRuleDecl<TForm, TCustomRules>>;
|
|
1658
1672
|
};
|
|
1659
1673
|
/**
|
|
@@ -1682,7 +1696,13 @@ type $InternalReglePartialRuleTree = {
|
|
|
1682
1696
|
/**
|
|
1683
1697
|
* @public
|
|
1684
1698
|
*/
|
|
1685
|
-
type RegleFormPropertyType<TValue = any, TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1699
|
+
type RegleFormPropertyType<TValue = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = [NonNullable<TValue>] extends [never] ? MaybeRefOrComputedRef<RegleRuleDecl<TValue, TCustomRules>> : NonNullable<TValue> extends PrimitiveTypes ? MaybeRefOrComputedRef<RegleRuleDecl<NonNullable<TValue>, TCustomRules>> : NonNullable<TValue> extends Array<any> ? RegleCollectionRuleDecl<TValue, TCustomRules> : NonNullable<TValue> extends Ref<infer V> ? RegleFormPropertyType<V, TCustomRules> : NonNullable<TValue> extends Record<string, any> ? NonNullable<TValue> extends RegleStatic<infer U> ? MaybeRefOrComputedRef<RegleRuleDecl<Raw<U>, TCustomRules>> : ReglePartialRuleTree<NonNullable<TValue>, TCustomRules> : MaybeRefOrComputedRef<RegleRuleDecl<NonNullable<TValue>, TCustomRules>>;
|
|
1700
|
+
/**
|
|
1701
|
+
* Form property rules for rule *input* sites.
|
|
1702
|
+
*
|
|
1703
|
+
* @public
|
|
1704
|
+
*/
|
|
1705
|
+
type RegleFormPropertyTypeInput<TValue = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>> = RegleFormPropertyType<TValue, TCustomRules>;
|
|
1686
1706
|
/**
|
|
1687
1707
|
* @internal
|
|
1688
1708
|
* @reference {@link RegleFormPropertyType}
|
|
@@ -1692,9 +1712,16 @@ type $InternalFormPropertyTypes = MaybeRefOrComputedRef<$InternalRegleRuleDecl>
|
|
|
1692
1712
|
* @public
|
|
1693
1713
|
* Rule tree for a form property
|
|
1694
1714
|
*/
|
|
1695
|
-
type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1715
|
+
type RegleRuleDecl<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = {}, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions<TValue>> = TOptions & { [TKey in keyof RemoveIndexSignature<TCustomRules>]?: NonNullable<TCustomRules[TKey]> extends RegleRuleDefinitionLight<infer TParams, boolean, infer TMetadata> ? RegleRuleDefinitionLight<ParamsToLooseParams<TParams>, boolean, TMetadata> | InlineRuleDeclaration<TValue, ParamsToLooseParams<TParams>, any> : TCustomRules[TKey] } & {
|
|
1696
1716
|
[x: string]: FormRuleDeclaration<TValue, any[]> | boolean | number | undefined | RegleImmediateDirtyMode;
|
|
1697
1717
|
};
|
|
1718
|
+
/**
|
|
1719
|
+
* Rule declaration type for rule *input* sites (useRegle, inferRules, $addRules).
|
|
1720
|
+
* Uses the full validator catalog for autocomplete and strict checking.
|
|
1721
|
+
*
|
|
1722
|
+
* @public
|
|
1723
|
+
*/
|
|
1724
|
+
type RegleRuleDeclInput<TValue extends any = any, TCustomRules extends Partial<ExtendedRulesDeclarations> = Partial<ExtendedRulesDeclarations>, TOptions extends Record<string, unknown> = FieldRegleBehaviourOptions<TValue>> = RegleRuleDecl<TValue, TCustomRules, TOptions>;
|
|
1698
1725
|
/**
|
|
1699
1726
|
* @internal
|
|
1700
1727
|
* @reference {@link RegleRuleDecl}
|
|
@@ -1706,7 +1733,7 @@ type $InternalRegleRuleDecl = FieldRegleBehaviourOptions & CollectionRegleBehavi
|
|
|
1706
1733
|
type RegleCollectionRuleDeclKeyProperty = {
|
|
1707
1734
|
$key?: PropertyKey;
|
|
1708
1735
|
};
|
|
1709
|
-
type CollectionEachRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1736
|
+
type CollectionEachRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = IsAny<TValue> extends true ? {
|
|
1710
1737
|
$each?: RegleCollectionEachRules<TValue, TCustomRules>;
|
|
1711
1738
|
} : MaybeNullable<TValue> extends true ? {
|
|
1712
1739
|
/**
|
|
@@ -1726,9 +1753,9 @@ type CollectionEachRuleDecl<TValue = any[], TCustomRules extends Partial<Extende
|
|
|
1726
1753
|
/**
|
|
1727
1754
|
* @public
|
|
1728
1755
|
*/
|
|
1729
|
-
type RegleCollectionRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1756
|
+
type RegleCollectionRuleDecl<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = (CollectionEachRuleDecl<TValue, TCustomRules> & RegleRuleDecl<NonNullable<TValue>, TCustomRules, CollectionRegleBehaviourOptions>) | (CollectionEachRuleDecl<TValue, TCustomRules> & CollectionRegleBehaviourOptions);
|
|
1730
1757
|
/** @public */
|
|
1731
|
-
type RegleCollectionEachRules<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> =
|
|
1758
|
+
type RegleCollectionEachRules<TValue = any[], TCustomRules extends Partial<ExtendedRulesDeclarations> = {}> = MaybeGetter<RegleFormPropertyType<ArrayElement<NonNullable<TValue>>, TCustomRules>, ArrayElement<TValue>, RegleCollectionRuleDeclKeyProperty, RegleFormPropertyType<ArrayElement<NonNullable<TValue>>, TCustomRules>>;
|
|
1732
1759
|
/**
|
|
1733
1760
|
* @internal
|
|
1734
1761
|
* @reference {@link RegleCollectionRuleDecl}
|
|
@@ -1753,19 +1780,19 @@ type RegleErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TIssue exten
|
|
|
1753
1780
|
type RegleIssuesTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false, TRules extends ReglePartialRuleTree<NonNullable<TState>> = Record<string, any>> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { readonly [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], false, true, TSchema, K extends keyof TRules ? TRules[K] extends RegleFormPropertyType<Record<string, any>> ? TRules[K] : EmptyObject : EmptyObject> } & {
|
|
1754
1781
|
readonly $self?: RegleFieldIssue[];
|
|
1755
1782
|
};
|
|
1756
|
-
type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({
|
|
1757
|
-
|
|
1783
|
+
type RegleExternalErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({ [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, TSchema> } & {
|
|
1784
|
+
$self?: RegleFieldIssue[];
|
|
1758
1785
|
}) | Record<Paths<TState> | (string & {}), string[]>;
|
|
1759
|
-
type RegleExternalIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({
|
|
1760
|
-
|
|
1786
|
+
type RegleExternalIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : ({ [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true, TSchema> } & {
|
|
1787
|
+
$self?: RegleExternalFieldIssue[];
|
|
1761
1788
|
}) | Partial<Record<Paths<TState> | (string & {}), RegleExternalFieldIssue[]>>;
|
|
1762
|
-
type RegleExternalSchemaErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : {
|
|
1763
|
-
type RegleExternalSchemaIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : {
|
|
1789
|
+
type RegleExternalSchemaErrorTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true, TSchema> };
|
|
1790
|
+
type RegleExternalSchemaIssueTree<TState = MaybeRef<Record<string, any> | any[]>, TSchema extends boolean = false> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : { [K in keyof JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>]?: RegleValidationErrors<JoinDiscriminatedUnions<UnwrapMaybeRef<TState>>[K], true, true, TSchema> };
|
|
1764
1791
|
type ErrorMessageOrIssue<TIssue extends boolean, TRules extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = TIssue extends true ? RegleFieldIssue<TRules>[] : string[];
|
|
1765
1792
|
type ExternalErrorMessageOrIssue<TIssue extends boolean> = TIssue extends true ? RegleExternalFieldIssue[] : string[];
|
|
1766
1793
|
type RegleValidationErrors<TState extends Record<string, any> | any[] | unknown = never, TExternal extends boolean = false, TIssue extends boolean = false, TSchema extends boolean = false, TRules extends RegleFormPropertyType<Record<string, any>> = EmptyObject> = IsAny<TState> extends true ? any : IsUnknown<TState> extends true ? any : HasNamedKeys<TState> extends true ? NonNullable<TState> extends Array<infer U> ? TSchema extends false ? TExternal extends false ? RegleCollectionErrors<U, TIssue, TSchema> : RegleExternalCollectionErrors<U, TIssue, TSchema> : RegleCollectionErrors<U, TIssue, TSchema> : NonNullable<TState> extends Date | File ? TExternal extends true ? ExternalErrorMessageOrIssue<TIssue> : ErrorMessageOrIssue<TIssue, TRules> : NonNullable<TState> extends Record<string, any> ? IsRegleStatic<NonNullable<TState>> extends true ? TExternal extends true ? ExternalErrorMessageOrIssue<TIssue> : ErrorMessageOrIssue<TIssue, TRules> : TExternal extends false ? RegleErrorTree<TState, TIssue, TSchema> : TIssue extends true ? RegleExternalIssueTree<TState, TSchema> : RegleExternalErrorTree<TState, TSchema> : TExternal extends true ? ExternalErrorMessageOrIssue<TIssue> : ErrorMessageOrIssue<TIssue, TRules> : any;
|
|
1767
1794
|
interface RegleIssueCustomMetadata {}
|
|
1768
|
-
type RegleFieldIssue<TRules extends RegleFormPropertyType<unknown
|
|
1795
|
+
type RegleFieldIssue<TRules extends RegleFormPropertyType<unknown> = EmptyObject> = {
|
|
1769
1796
|
readonly $property: string;
|
|
1770
1797
|
readonly $type?: string;
|
|
1771
1798
|
readonly $message: string;
|
|
@@ -1784,7 +1811,7 @@ type RegleFieldIssue<TRules extends RegleFormPropertyType<unknown, Partial<Exten
|
|
|
1784
1811
|
readonly $rule: string;
|
|
1785
1812
|
} }[keyof ComputeFieldRules<any, TRules>]);
|
|
1786
1813
|
type RegleExternalFieldIssue = Pick<RegleFieldIssue, '$message'> & Partial<Omit<RegleFieldIssue, '$message'>> & Record<string, unknown>;
|
|
1787
|
-
type ComputeFieldRules<TState extends any, TRules extends MaybeRef<RegleFormPropertyType<unknown
|
|
1814
|
+
type ComputeFieldRules<TState extends any, TRules extends MaybeRef<RegleFormPropertyType<unknown>>> = IsEmptyObject<UnwrapRef<TRules>> extends true ? {
|
|
1788
1815
|
readonly [x: string]: RegleRuleStatus<TState, any[], any>;
|
|
1789
1816
|
} : { readonly [TRuleKey in keyof UnwrapRef<TRules> as TRuleKey extends '$each' | keyof FieldRegleBehaviourOptions ? never : TRuleKey]: RegleRuleStatus<TState, UnwrapRef<TRules>[TRuleKey] extends RegleRuleDefinitionLight<infer TParams, any> ? TParams : [], UnwrapRef<TRules>[TRuleKey] extends RegleRuleDefinitionLight<any, any, infer TMetadata> ? TMetadata : UnwrapRef<TRules>[TRuleKey] extends InlineRuleDeclaration<any, any[], infer TReturn> ? TReturn extends Promise<infer P> ? P : TReturn : RegleRuleMetadataDefinition> };
|
|
1790
1817
|
type RegleCollectionErrors<TState extends any, TIssue extends boolean = false, TSchema extends boolean = false> = {
|
|
@@ -2325,4 +2352,4 @@ declare function isRegleInstance(value: unknown): boolean;
|
|
|
2325
2352
|
* @see {@link https://reglejs.dev/introduction/devtools Documentation}
|
|
2326
2353
|
*/
|
|
2327
2354
|
declare const RegleVuePlugin: Plugin;
|
|
2328
|
-
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type CustomCollectionProperties, type CustomFieldProperties, type CustomNestedProperties, type CustomRules, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type DumbJoinDiscriminatedUnions, type ExtendedRulesDeclarations, type ExtendedRulesDeclarationsOverrides, type FormRuleDeclaration, type GlobalConfigOverrides, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferOutput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleSettings, type InferRegleShortcuts, type InferRegleStatusType, type InferRegleValidationResult, type InferSafeOutput, type InferValidOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, type LazyJoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MeasurableValue, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type ParamsToLooseParams, type Prettify, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalFieldIssue, type RegleExternalIssueTree, type RegleExternalSchemaErrorTree, type RegleExternalSchemaIssueTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleInternalRuleDefs, type RegleIssueCustomMetadata, type RegleIssuesTree, type RegleLike, type ReglePartialRuleTree, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDefinition, type RegleRuleDefinitionLight, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleRuleWithParamsDefinitionInput, type RegleShortcutDefinition, type RegleSingleField, type RegleStatic, type RegleStaticImpl, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, RegleVuePlugin, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type TupleToPlainObj, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UnwrapStatic, type UrlOptions, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRegleOptions, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, type inferRulesFn, type isEditedHandlerFn, isRegleInstance, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, type useScopedRegleFn, variantToRef };
|
|
2355
|
+
export { type $InternalRegleStatus, type AllRulesDeclarations, type ArrayElement, type CommonAlphaOptions, type CommonComparisonOptions, type CreateScopedUseRegleOptions, type CustomCollectionProperties, type CustomFieldProperties, type CustomNestedProperties, type CustomRules, type DeepMaybeRef, type DeepPartial, type DeepReactiveState, type DefaultValidatorsTree, type DumbJoinDiscriminatedUnions, type ExtendedRulesDeclarations, type ExtendedRulesDeclarationsOverrides, type FormRuleDeclaration, type GlobalConfigOverrides, type HasNamedKeys, type HaveAnyRequiredProps, type InferInput, type InferOutput, type InferRegleRoot, type InferRegleRule, type InferRegleRules, type InferRegleSettings, type InferRegleShortcuts, type InferRegleStatusType, type InferRegleValidationResult, type InferSafeOutput, type InferValidOutput, type InlineRuleDeclaration, InternalRuleType, type IsRegleStatic, type JoinDiscriminatedUnions, type LazyJoinDiscriminatedUnions, type LocalRegleBehaviourOptions, type Maybe, type MaybeInput, type MaybeOutput, type MaybeReadonly, type MaybeVariantStatus, type MeasurableValue, type MergedRegles, type MergedScopedRegles, type NarrowVariant, type NarrowVariantExtracts, type NarrowVariantFieldExtracts, type NoInferLegacy, type NonEmptyTuple, type ParamsToLooseParams, type Prettify, type PrimitiveTypes, type Regle, type RegleBehaviourOptions, type RegleCollectionErrors, type RegleCollectionRuleDecl, type RegleCollectionRuleDefinition, type RegleCollectionStatus, type RegleCommonStatus, type RegleComputedRules, type RegleCustomFieldStatus, type RegleEnforceCustomRequiredRules, type RegleEnforceRequiredRules, type RegleErrorTree, type RegleExternalCollectionErrors, type RegleExternalErrorTree, type RegleExternalFieldIssue, type RegleExternalIssueTree, type RegleExternalSchemaErrorTree, type RegleExternalSchemaIssueTree, type RegleFieldIssue, type RegleFieldStatus, type RegleFormPropertyType, type RegleFormPropertyTypeInput, type RegleInternalRuleDefs, type RegleIssueCustomMetadata, type RegleIssuesTree, type RegleLike, type ReglePartialRuleTree, type ReglePartialRuleTreeInput, type RegleResult, type RegleRoot, type RegleRuleCore, type RegleRuleDecl, type RegleRuleDeclInput, type RegleRuleDefinition, type RegleRuleDefinitionLight, type RegleRuleDefinitionProcessor, type RegleRuleDefinitionWithMetadataProcessor, type RegleRuleInit, type RegleRuleMetadataConsumer, type RegleRuleMetadataDefinition, type RegleRuleMetadataExtended, type RegleRuleRaw, type RegleRuleStatus, type RegleRuleTypeReturn, type RegleRuleWithParamsDefinition, type RegleRuleWithParamsDefinitionInput, type RegleShortcutDefinition, type RegleSingleField, type RegleStatic, type RegleStaticImpl, type RegleStatus, type RegleUniversalParams, type RegleUnknownRulesTree, type RegleValidationErrors, type RegleValidationGroupEntry, type RegleValidationGroupOutput, type RegleRuleTree as RegleValidationTree, RegleVuePlugin, type ResolvedRegleBehaviourOptions, type ScopedInstancesRecord, type ScopedInstancesRecordLike, type SuperCompatibleRegle, type SuperCompatibleRegleCollectionErrors, type SuperCompatibleRegleCollectionStatus, type SuperCompatibleRegleFieldStatus, type SuperCompatibleRegleResult, type SuperCompatibleRegleRoot, type SuperCompatibleRegleRuleStatus, type SuperCompatibleRegleStatus, type TupleToPlainObj, type Unwrap, type UnwrapRegleUniversalParams, type UnwrapRuleWithParams, type UnwrapStatic, type UrlOptions, type UseScopedRegleOptions, createRule, createScopedUseRegle, createVariant, defineRegleConfig, defineRegleOptions, defineRules, extendRegleConfig, flatErrors, getErrors, getIssues, inferRules, type inferRulesFn, type isEditedHandlerFn, isRegleInstance, markStatic, mergeRegles, narrowVariant, refineRules, unwrapRuleParameters, useCollectScope, type useCollectScopeFn, useRegle, type useRegleFn, useRootStorage, useRules, type useRulesFn, useScopedRegle, type useScopedRegleFn, variantToRef };
|
package/dist/regle-core.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.28.0-beta.1
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { computed, effectScope, getCurrentInstance, getCurrentScope, inject, isRef, markRaw, nextTick, onMounted, onScopeDispose, reactive, readonly, ref, shallowRef, toRef, toValue, triggerRef, unref, version, watch, watchEffect } from "vue";
|
|
8
|
-
import { setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
8
|
+
import { onDevToolsClientConnected, setupDevtoolsPlugin } from "@vue/devtools-api";
|
|
9
|
+
import { DevToolsMessagingHookKeys, DevToolsV6PluginAPIHookKeys, devtoolsContext, devtoolsState, getInspector } from "@vue/devtools-kit";
|
|
9
10
|
/**
|
|
10
11
|
* Server side friendly way of checking for a File
|
|
11
12
|
*/
|
|
@@ -661,6 +662,12 @@ function mergeArrayGroupProperties(entries, property) {
|
|
|
661
662
|
return all.concat(fetchedProperty);
|
|
662
663
|
}, []);
|
|
663
664
|
}
|
|
665
|
+
const regleSymbol = Symbol("regle");
|
|
666
|
+
const regleConfigSymbol = Symbol("regle-config");
|
|
667
|
+
const REGLE_FLAGS = { REGLE_STATIC: "__regle_static" };
|
|
668
|
+
function isRegleDevtoolsTestEnv() {
|
|
669
|
+
return Boolean(typeof globalThis !== "undefined" && ("__vitest_worker__" in globalThis || "__JEST_GLOBAL__" in globalThis || typeof window !== "undefined" && "Cypress" in window || typeof process !== "undefined" && process.env && (process.env.VITEST || process.env.JEST_WORKER_ID || process.env.NODE_ENV === "test" || process.env.PLAYWRIGHT_TEST)));
|
|
670
|
+
}
|
|
664
671
|
const COLORS = {
|
|
665
672
|
ERROR: {
|
|
666
673
|
text: 16777215,
|
|
@@ -753,30 +760,78 @@ const INSPECTOR_IDS = {
|
|
|
753
760
|
COMPONENTS: "components",
|
|
754
761
|
TIMELINE: "regle-timeline"
|
|
755
762
|
};
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
function
|
|
760
|
-
|
|
763
|
+
/**
|
|
764
|
+
* Bypasses Vue Devtools high-performance mode, where `api.sendInspectorTree()` is a no-op.
|
|
765
|
+
*/
|
|
766
|
+
async function syncInspectorToClient(inspectorId, app) {
|
|
767
|
+
const inspector = getInspector(inspectorId, app);
|
|
768
|
+
const treePayload = {
|
|
769
|
+
app,
|
|
770
|
+
inspectorId,
|
|
771
|
+
filter: inspector?.treeFilter ?? "",
|
|
772
|
+
rootNodes: []
|
|
773
|
+
};
|
|
774
|
+
await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
775
|
+
await Promise.all(callbacks.map((cb) => cb(treePayload)));
|
|
776
|
+
}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE, treePayload);
|
|
777
|
+
await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
778
|
+
await Promise.all(callbacks.map((cb) => cb({
|
|
779
|
+
inspectorId,
|
|
780
|
+
rootNodes: treePayload.rootNodes
|
|
781
|
+
})));
|
|
782
|
+
}, DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT, {
|
|
783
|
+
inspectorId,
|
|
784
|
+
rootNodes: treePayload.rootNodes
|
|
785
|
+
});
|
|
786
|
+
const nodeId = inspector?.selectedNodeId ?? "";
|
|
787
|
+
const statePayload = {
|
|
788
|
+
app,
|
|
789
|
+
inspectorId,
|
|
790
|
+
nodeId,
|
|
791
|
+
state: {}
|
|
792
|
+
};
|
|
793
|
+
const stateCtx = { currentTab: `custom-inspector:${inspectorId}` };
|
|
794
|
+
if (nodeId) await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
795
|
+
await Promise.all(callbacks.map((cb) => cb(statePayload, stateCtx)));
|
|
796
|
+
}, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE, statePayload);
|
|
797
|
+
await devtoolsContext.hooks.callHookWith(async (callbacks) => {
|
|
798
|
+
await Promise.all(callbacks.map((cb) => cb({
|
|
799
|
+
inspectorId,
|
|
800
|
+
nodeId,
|
|
801
|
+
state: statePayload.state
|
|
802
|
+
})));
|
|
803
|
+
}, DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT, {
|
|
804
|
+
inspectorId,
|
|
805
|
+
nodeId,
|
|
806
|
+
state: statePayload.state
|
|
807
|
+
});
|
|
761
808
|
}
|
|
762
|
-
function
|
|
809
|
+
async function emitInspectorState(api, app) {
|
|
810
|
+
const inspectorId = INSPECTOR_IDS.INSPECTOR;
|
|
811
|
+
if (app && (devtoolsState.clientConnected || devtoolsState.connected)) {
|
|
812
|
+
await syncInspectorToClient(inspectorId, app);
|
|
813
|
+
return;
|
|
814
|
+
}
|
|
815
|
+
api.sendInspectorTree(inspectorId);
|
|
816
|
+
api.sendInspectorState(inspectorId);
|
|
817
|
+
}
|
|
818
|
+
const REGLE_DEVTOOLS_GLOBAL_KEY = "__REGLE_DEVTOOLS_REGISTRY__";
|
|
819
|
+
function createRegleDevtoolsRegistry() {
|
|
763
820
|
const loggedWarning = ref(false);
|
|
764
821
|
const devtoolsApi = shallowRef();
|
|
822
|
+
const devtoolsApp = shallowRef();
|
|
765
823
|
const instances = shallowRef(/* @__PURE__ */ new Map());
|
|
766
824
|
const watchers = shallowRef(/* @__PURE__ */ new Map());
|
|
767
|
-
const
|
|
768
|
-
const looseIdCounter = ref(0);
|
|
825
|
+
const instanceIndexCounter = ref(0);
|
|
769
826
|
let pendingNotifyFrame;
|
|
770
|
-
function setApi(api) {
|
|
827
|
+
function setApi(api, app) {
|
|
771
828
|
devtoolsApi.value = api;
|
|
829
|
+
if (app) devtoolsApp.value = app;
|
|
772
830
|
}
|
|
773
831
|
function register(r$, options) {
|
|
774
|
-
const
|
|
775
|
-
const
|
|
776
|
-
const
|
|
777
|
-
idCounters.value.set(idPath, perComponentCounter);
|
|
778
|
-
const id = `${options?.uid?.toString() ?? "regle"}#${++looseIdCounter.value}`;
|
|
779
|
-
const name = `r\$ #${options?.name ?? perComponentCounter}`;
|
|
832
|
+
const instanceIndex = ++instanceIndexCounter.value;
|
|
833
|
+
const id = `${options?.uid?.toString() ?? "regle"}#${instanceIndex}`;
|
|
834
|
+
const name = `r\$ #${options?.name ?? instanceIndex}`;
|
|
780
835
|
instances.value.set(id, {
|
|
781
836
|
id,
|
|
782
837
|
name,
|
|
@@ -802,7 +857,7 @@ function useRegleDevtoolsRegistry() {
|
|
|
802
857
|
return id;
|
|
803
858
|
}
|
|
804
859
|
function notifyDevtools() {
|
|
805
|
-
if (devtoolsApi.value) emitInspectorState(devtoolsApi.value);
|
|
860
|
+
if (devtoolsApi.value) emitInspectorState(devtoolsApi.value, devtoolsApp.value);
|
|
806
861
|
}
|
|
807
862
|
function scheduleNotifyDevtools() {
|
|
808
863
|
if (pendingNotifyFrame != null) return;
|
|
@@ -834,6 +889,7 @@ function useRegleDevtoolsRegistry() {
|
|
|
834
889
|
}
|
|
835
890
|
return {
|
|
836
891
|
devtoolsApi,
|
|
892
|
+
devtoolsApp,
|
|
837
893
|
register,
|
|
838
894
|
unregister,
|
|
839
895
|
getAll,
|
|
@@ -844,7 +900,13 @@ function useRegleDevtoolsRegistry() {
|
|
|
844
900
|
loggedWarning
|
|
845
901
|
};
|
|
846
902
|
}
|
|
847
|
-
|
|
903
|
+
function getRegleDevtoolsRegistry() {
|
|
904
|
+
if (typeof globalThis === "undefined") return createRegleDevtoolsRegistry();
|
|
905
|
+
const globalRegistry = globalThis;
|
|
906
|
+
globalRegistry[REGLE_DEVTOOLS_GLOBAL_KEY] ??= createRegleDevtoolsRegistry();
|
|
907
|
+
return globalRegistry[REGLE_DEVTOOLS_GLOBAL_KEY];
|
|
908
|
+
}
|
|
909
|
+
const regleDevtoolsRegistry = getRegleDevtoolsRegistry();
|
|
848
910
|
/**
|
|
849
911
|
* To be used by `useRegle` like composables.
|
|
850
912
|
*/
|
|
@@ -1142,10 +1204,6 @@ function handleEditInspectorState(payload) {
|
|
|
1142
1204
|
}
|
|
1143
1205
|
}
|
|
1144
1206
|
}
|
|
1145
|
-
async function emitInspectorState(api) {
|
|
1146
|
-
api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
1147
|
-
api.sendInspectorState(INSPECTOR_IDS.INSPECTOR);
|
|
1148
|
-
}
|
|
1149
1207
|
function buildNodeTags(fieldOrR$, componentName) {
|
|
1150
1208
|
const tags = [];
|
|
1151
1209
|
let isDisabled = false;
|
|
@@ -1369,7 +1427,7 @@ function filterInspectorTree(nodes, filter) {
|
|
|
1369
1427
|
}
|
|
1370
1428
|
return filtered;
|
|
1371
1429
|
}
|
|
1372
|
-
var version$1 = "1.
|
|
1430
|
+
var version$1 = "1.28.0-beta.1";
|
|
1373
1431
|
function createDevtools(app) {
|
|
1374
1432
|
setupDevtoolsPlugin({
|
|
1375
1433
|
id: "regle-devtools",
|
|
@@ -1380,7 +1438,29 @@ function createDevtools(app) {
|
|
|
1380
1438
|
componentStateTypes: ["Regles"],
|
|
1381
1439
|
app
|
|
1382
1440
|
}, (api) => {
|
|
1383
|
-
regleDevtoolsRegistry.setApi(api);
|
|
1441
|
+
regleDevtoolsRegistry.setApi(api, app);
|
|
1442
|
+
api.on.getInspectorTree(async (payload) => {
|
|
1443
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1444
|
+
const nodes = buildInspectorTree(regleDevtoolsRegistry.getAll(), payload.filter);
|
|
1445
|
+
if (nodes.length > 0) payload.rootNodes = nodes;
|
|
1446
|
+
else payload.rootNodes = [{
|
|
1447
|
+
id: "empty-regles",
|
|
1448
|
+
label: "No Regles instances found",
|
|
1449
|
+
children: []
|
|
1450
|
+
}];
|
|
1451
|
+
}
|
|
1452
|
+
});
|
|
1453
|
+
api.on.getInspectorState((payload) => {
|
|
1454
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1455
|
+
const state = buildInspectorState(payload.nodeId, (id) => regleDevtoolsRegistry.get(id));
|
|
1456
|
+
if (!state) api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
1457
|
+
if (state) payload.state = state;
|
|
1458
|
+
else payload.state = {};
|
|
1459
|
+
}
|
|
1460
|
+
});
|
|
1461
|
+
api.on.editInspectorState((payload) => {
|
|
1462
|
+
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload);
|
|
1463
|
+
});
|
|
1384
1464
|
api.addInspector({
|
|
1385
1465
|
id: INSPECTOR_IDS.INSPECTOR,
|
|
1386
1466
|
label: "Regle",
|
|
@@ -1426,29 +1506,10 @@ function createDevtools(app) {
|
|
|
1426
1506
|
}
|
|
1427
1507
|
]
|
|
1428
1508
|
});
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1432
|
-
const nodes = buildInspectorTree(regleDevtoolsRegistry.getAll(), payload.filter);
|
|
1433
|
-
if (nodes.length > 0) payload.rootNodes = nodes;
|
|
1434
|
-
else payload.rootNodes = [{
|
|
1435
|
-
id: "empty-regles",
|
|
1436
|
-
label: "No Regles instances found",
|
|
1437
|
-
children: []
|
|
1438
|
-
}];
|
|
1439
|
-
}
|
|
1440
|
-
});
|
|
1441
|
-
api.on.getInspectorState((payload) => {
|
|
1442
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) {
|
|
1443
|
-
const state = buildInspectorState(payload.nodeId, (id) => regleDevtoolsRegistry.get(id));
|
|
1444
|
-
if (!state) api.sendInspectorTree(INSPECTOR_IDS.INSPECTOR);
|
|
1445
|
-
if (state) payload.state = state;
|
|
1446
|
-
else payload.state = {};
|
|
1447
|
-
}
|
|
1448
|
-
});
|
|
1449
|
-
api.on.editInspectorState((payload) => {
|
|
1450
|
-
if (payload.inspectorId === INSPECTOR_IDS.INSPECTOR) handleEditInspectorState(payload);
|
|
1509
|
+
onDevToolsClientConnected(() => {
|
|
1510
|
+
regleDevtoolsRegistry.notifyDevtools();
|
|
1451
1511
|
});
|
|
1512
|
+
regleDevtoolsRegistry.notifyDevtools();
|
|
1452
1513
|
});
|
|
1453
1514
|
}
|
|
1454
1515
|
/**
|
|
@@ -1675,6 +1736,12 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
1675
1736
|
return isRuleDef(rule.value) && rule.value._async;
|
|
1676
1737
|
});
|
|
1677
1738
|
const $maybePending = ref(false);
|
|
1739
|
+
/**
|
|
1740
|
+
* Monotonic token identifying the latest validation run.
|
|
1741
|
+
* Any async run that resolves after a newer run has started is considered stale
|
|
1742
|
+
* and must not write its result, to avoid an outdated value overwriting a fresh one.
|
|
1743
|
+
*/
|
|
1744
|
+
let $lastParseId = 0;
|
|
1678
1745
|
const { $pending, $valid, $metadata, $validating } = storage.trySetRuleStatusRef(`${cachePath}.${ruleKey}`);
|
|
1679
1746
|
function $watch() {
|
|
1680
1747
|
scope = effectScope();
|
|
@@ -1770,7 +1837,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
1770
1837
|
$valid.value = true;
|
|
1771
1838
|
if (scopeState.$fieldDirty.value) $pending.value = true;
|
|
1772
1839
|
}
|
|
1773
|
-
async function computeAsyncResult() {
|
|
1840
|
+
async function computeAsyncResult(parseId) {
|
|
1774
1841
|
let ruleResult = false;
|
|
1775
1842
|
try {
|
|
1776
1843
|
const validator = scopeState.$validator.value;
|
|
@@ -1784,7 +1851,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
1784
1851
|
let validatorResult;
|
|
1785
1852
|
if (resultOrPromise instanceof Promise) validatorResult = await resultOrPromise;
|
|
1786
1853
|
else validatorResult = resultOrPromise;
|
|
1787
|
-
if (state.value !== cachedValue) return
|
|
1854
|
+
if (parseId !== $lastParseId || state.value !== cachedValue) return $valid.value;
|
|
1788
1855
|
if (typeof validatorResult === "boolean") ruleResult = validatorResult;
|
|
1789
1856
|
else {
|
|
1790
1857
|
const { $valid, ...rest } = validatorResult;
|
|
@@ -1794,7 +1861,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
1794
1861
|
} catch {
|
|
1795
1862
|
ruleResult = false;
|
|
1796
1863
|
} finally {
|
|
1797
|
-
$pending.value = false;
|
|
1864
|
+
if (parseId === $lastParseId) $pending.value = false;
|
|
1798
1865
|
}
|
|
1799
1866
|
return ruleResult;
|
|
1800
1867
|
}
|
|
@@ -1815,22 +1882,26 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
1815
1882
|
}
|
|
1816
1883
|
}
|
|
1817
1884
|
async function $parse() {
|
|
1885
|
+
const parseId = ++$lastParseId;
|
|
1818
1886
|
try {
|
|
1819
1887
|
$validating.value = true;
|
|
1820
1888
|
let ruleResult = false;
|
|
1821
1889
|
$maybePending.value = true;
|
|
1822
|
-
if (isRuleDef(rule.value) && rule.value._async) ruleResult = await computeAsyncResult();
|
|
1890
|
+
if (isRuleDef(rule.value) && rule.value._async) ruleResult = await computeAsyncResult(parseId);
|
|
1823
1891
|
else {
|
|
1824
1892
|
const validator = scopeState.$validator.value;
|
|
1825
1893
|
ruleResult = computeSyncResult(validator);
|
|
1826
1894
|
}
|
|
1895
|
+
if (parseId !== $lastParseId) return $valid.value;
|
|
1827
1896
|
$valid.value = ruleResult;
|
|
1828
1897
|
return ruleResult;
|
|
1829
1898
|
} catch {
|
|
1830
1899
|
return false;
|
|
1831
1900
|
} finally {
|
|
1832
|
-
$
|
|
1833
|
-
|
|
1901
|
+
if (parseId === $lastParseId) {
|
|
1902
|
+
$validating.value = false;
|
|
1903
|
+
$maybePending.value = false;
|
|
1904
|
+
}
|
|
1834
1905
|
}
|
|
1835
1906
|
}
|
|
1836
1907
|
/**
|
|
@@ -1849,6 +1920,7 @@ function createReactiveRuleStatus({ customMessages, rule, ruleKey, state, path,
|
|
|
1849
1920
|
}
|
|
1850
1921
|
}
|
|
1851
1922
|
function $reset() {
|
|
1923
|
+
$lastParseId++;
|
|
1852
1924
|
$valid.value = true;
|
|
1853
1925
|
$metadata.value = {};
|
|
1854
1926
|
$pending.value = false;
|
|
@@ -2026,6 +2098,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2026
2098
|
});
|
|
2027
2099
|
const $debounce = computed(() => {
|
|
2028
2100
|
if ($localOptions.value.$debounce != null) return $localOptions.value.$debounce;
|
|
2101
|
+
if (toValue(options.debounce) != null) return toValue(options.debounce);
|
|
2029
2102
|
if (scopeState.$haveAnyAsyncRule.value) return DEFAULT_DEBOUNCE_TIME;
|
|
2030
2103
|
return 0;
|
|
2031
2104
|
});
|
|
@@ -2122,8 +2195,13 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2122
2195
|
const $edited = ref(false);
|
|
2123
2196
|
function isEditedHandler(currentValue, initialValue) {
|
|
2124
2197
|
if (initialValue instanceof Date && currentValue instanceof Date) return toDate(initialValue).getTime() !== toDate(currentValue).getTime();
|
|
2125
|
-
else if (initialValue == null)
|
|
2126
|
-
|
|
2198
|
+
else if (initialValue == null) {
|
|
2199
|
+
if (typeof currentValue === "boolean") {
|
|
2200
|
+
if (initialValue === void 0) return currentValue === true;
|
|
2201
|
+
return currentValue != null;
|
|
2202
|
+
}
|
|
2203
|
+
return currentValue != null && currentValue !== "";
|
|
2204
|
+
} else if (Array.isArray(currentValue) && Array.isArray(initialValue)) return !isEqual(currentValue, initialValue, $localOptions.value.$deepCompare);
|
|
2127
2205
|
return initialValue !== currentValue;
|
|
2128
2206
|
}
|
|
2129
2207
|
watchEffect(() => {
|
|
@@ -2302,8 +2380,6 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2302
2380
|
}
|
|
2303
2381
|
function $reset(options, fromParent) {
|
|
2304
2382
|
abortCommit();
|
|
2305
|
-
$clearExternalErrors();
|
|
2306
|
-
$clearExternalIssues();
|
|
2307
2383
|
scopeState.$dirty.value = false;
|
|
2308
2384
|
storage.setDirtyEntry(cachePath, false);
|
|
2309
2385
|
if (!fromParent) if (options?.toOriginalState) {
|
|
@@ -2317,7 +2393,7 @@ function createReactiveFieldStatus({ state, rulesDef, customMessages, path, cach
|
|
|
2317
2393
|
initialState.value = cloneDeep(newInitialState);
|
|
2318
2394
|
state.value = cloneDeep(newInitialState);
|
|
2319
2395
|
} else initialState.value = isObject(state.value) && !isStatic(state.value) ? cloneDeep(state.value) : Array.isArray(state.value) ? [...state.value] : state.value;
|
|
2320
|
-
if (options?.clearExternalErrors) {
|
|
2396
|
+
if (options?.clearExternalErrors !== false) {
|
|
2321
2397
|
$clearExternalErrors();
|
|
2322
2398
|
$clearExternalIssues();
|
|
2323
2399
|
}
|
|
@@ -2805,7 +2881,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
2805
2881
|
const $modifiers = computed(() => {
|
|
2806
2882
|
return {
|
|
2807
2883
|
$deepCompare: $localOptions.value.$deepCompare ?? false,
|
|
2808
|
-
$debounce: $localOptions.value.$debounce ?? 0,
|
|
2884
|
+
$debounce: $localOptions.value.$debounce ?? toValue(options.debounce) ?? 0,
|
|
2809
2885
|
$lazy: $localOptions.value.$lazy ?? false,
|
|
2810
2886
|
$rewardEarly: $rewardEarly.value,
|
|
2811
2887
|
$autoDirty: $autoDirty.value,
|
|
@@ -2910,7 +2986,7 @@ function createReactiveCollectionStatus({ state, rulesDef, customMessages, path,
|
|
|
2910
2986
|
initialState.value = cloneDeep(newInitialState);
|
|
2911
2987
|
state.value = cloneDeep(newInitialState);
|
|
2912
2988
|
} else initialState.value = cloneDeep(state.value);
|
|
2913
|
-
if (options?.clearExternalErrors) {
|
|
2989
|
+
if (options?.clearExternalErrors !== false) {
|
|
2914
2990
|
$clearExternalErrors();
|
|
2915
2991
|
$clearExternalIssues();
|
|
2916
2992
|
}
|
|
@@ -3482,7 +3558,7 @@ function createReactiveNestedStatus({ rulesDef, state, path = "", cachePath, roo
|
|
|
3482
3558
|
for (const field of Object.values($fields.value)) field?.$reset(options, true);
|
|
3483
3559
|
$selfStatus.value?.$reset(options, true);
|
|
3484
3560
|
}
|
|
3485
|
-
if (options?.clearExternalErrors
|
|
3561
|
+
if (options?.clearExternalErrors !== false) {
|
|
3486
3562
|
$clearExternalErrors();
|
|
3487
3563
|
$clearExternalIssues();
|
|
3488
3564
|
}
|
package/dist/regle-core.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @regle/core v1.
|
|
2
|
+
* @regle/core v1.28.0-beta.1
|
|
3
3
|
* (c) 2026 Victor Garcia
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,inject as i,isRef as a,markRaw as o,nextTick as s,onMounted as c,onScopeDispose as l,reactive as u,readonly as d,ref as f,shallowRef as p,toRef as m,toValue as h,triggerRef as g,unref as _,version as v,watch as y,watchEffect as b}from"vue";import{setupDevtoolsPlugin as x}from"@vue/devtools-api";function S(e){return e?.constructor?.name==`File`}function C(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function w(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function T(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function E(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function D(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function O(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function k(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function A(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):S(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:C(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const j=Symbol(`regle-rule`);function M(e){let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}function N(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>N(e,t+1)))),r==`Map`&&(n=new Map([...e].map(e=>[N(e[0],t+1),N(e[1],t+1)]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,M(e))),r==`Array`||r==`Object`){n=Array.isArray(e)?[]:{};for(let r in e)n[r]=N(e[r],t+1)}return n}function ee(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function P(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function F(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!F(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(C(e)&&C(t)&&s&&(r||!r&&n)&&!F(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var I=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function L(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new I)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new I):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new I):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}function R(e,t,r){if(!a(e))return r?.(),u(e);let i=f(!1);return n()&&c(async()=>{await s(),typeof window<`u`&&window.requestAnimationFrame(()=>{i.value=!0})}),u(new Proxy({},{get(n,a,o){if(r?.(),t.value&&a!==`$value`&&i.value)return Reflect.get(n,a,o);if(e.value!==void 0)return _(Reflect.get(e.value,a,o))},set(t,n,i){return r?.(),a(e.value[n])&&!a(i)?e.value[n].value=i:e.value[n]=i,!0},deleteProperty(t,n){return r?.(),Reflect.deleteProperty(e.value,n)},has(t,n){return r?.(),e.value===void 0?!1:Reflect.has(e.value,n)},ownKeys(){return r?.(),e.value===void 0?[]:Object.keys(e.value)},getOwnPropertyDescriptor(){return r?.(),{enumerable:!0,configurable:!0}}}))}const te={Inline:`__inline`,Async:`__async`};function z(e){try{return e.map(e=>h(e))}catch{return[]}}function B(t){return t.map(t=>t instanceof Function?e(t):a(t)?t:m(()=>t))}function V(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function H(e,...t){let{validator:n,type:r,async:i}=e,a=i||r===te.Async||n.constructor.name===`AsyncFunction`;return o({validator(n,...r){return e.validator(n,...z(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:z(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:z(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:z(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...z(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:a,_params:B(t),_brand:j})}function U(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=H({...e,async:n},...t);if(V(e.validator)>1){let t=function(...t){return H(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}const W=Symbol.for(`regle:instance`);function ne(e){return typeof e==`object`&&!!e&&W in e}function G(e){return C(e.value)}function re(n,r,i){let a=t(),o;return o=n instanceof Function?a.run(()=>({computedEach:e(()=>n(r,i??0))})).computedEach:n,{scope:a,unwrapped:o}}const K={LessThan:-1,EqualTo:0,GreaterThan:1};function ie(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return K.GreaterThan;if(i>t)return K.LessThan;if(!isNaN(t)&&isNaN(i))return K.GreaterThan;if(isNaN(t)&&!isNaN(i))return K.LessThan}return K.EqualTo}const ae=ie(v,`3.5.0`)!==-1;function q(){return Math.floor(Math.random()*Date.now()).toString()}function oe(){return typeof window>`u`?q():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function se(e){return r()?(l(e),!0):!1}function ce(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function le(e,t){return e.some(e=>t?e?.[t]:!1)}function ue(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}const de=Symbol(`regle`),J=Symbol(`regle-config`),Y={REGLE_STATIC:`__regle_static`};function fe(){return!!(typeof globalThis<`u`&&(`__vitest_worker__`in globalThis||`__JEST_GLOBAL__`in globalThis||typeof window<`u`&&`Cypress`in window||typeof process<`u`&&process.env&&(process.env.VITEST||process.env.JEST_WORKER_ID||process.env.NODE_ENV===`test`||process.env.PLAYWRIGHT_TEST)))}const X={ERROR:{text:16777215,bg:15680580},INVALID:{text:16777215,bg:16747520},CORRECT:{text:16777215,bg:1096065},VALID:{text:16777215,bg:292951},PENDING:{text:16777215,bg:16096779},DIRTY:{text:2042167,bg:16708551},COMPONENT:{text:16777215,bg:6514417},PRISTINE:{text:1120295,bg:16777215},INACTIVE:{text:0,bg:11581118},OPTIONAL:{text:0,bg:11581118},DISABLED:{text:15680580,bg:15067115}},Z={PRISTINE:`Field is not touched yet`,DIRTY:`Field have been touched`,ERROR:`Field has errors`,CORRECT:`Field is dirty and all actives rules are valid`,VALID:`Field rules are all valid`,PENDING:`Field is pending`,INACTIVE:`Field is inactive`,OPTIONAL:`Field is not required`,DISABLED:`Validation reactivity is paused by the disabled modifier`},pe={DIRTY:`All nested fields have been touched`,ERROR:`Some nested fields have errors`,CORRECT:`All nested fields are correct`,PENDING:`Some nested fields are pending`},me={INACTIVE:`The rule is not active`,INVALID:`Rule is invalid`,VALID:`Rule is valid`,PENDING:`Rule validator is pending`},he={ROOT:[`$invalid`,`$dirty`,`$error`,`$pending`,`$valid`,`$ready`],FIELD:[`$value`,`$invalid`,`$dirty`,`$error`,`$pending`,`$errors`]},ge={INSPECTOR:`regle-inspector`,COMPONENTS:`components`,TIMELINE:`regle-timeline`};function _e(e,t){return!Se(e.value)&&(G(e)||C(t.value)&&!A(t.value)&&!Object.entries(t.value).some(([e,t])=>be(t)||typeof t==`function`))}function ve(e,t){return!!e.value&&C(e.value)&&`$each`in e.value||Array.isArray(t.value)}function ye(e){return!!e.value&&(C(e.value)||G(e.value))}function be(e){return(C(e)||typeof e==`function`)&&`_validator`in e}function xe(e){return typeof e.value==`function`?`_validator`in e.value:!0}function Se(e){return C(e)&&D(e,Y.REGLE_STATIC)&&e[Y.REGLE_STATIC]===!0}function Ce(e){return C(e)&&`$fields`in e}function Q(e){return!!e&&`$each`in e}function we(e){return!!e&&`$rules`in e}function Te(e){return typeof e==`function`}function Ee(e,t){return t.filter(t=>t in e&&!Te(e[t])).map(t=>{let n=!1;return t===`$value`&&(n=!0),{key:t,value:e[t],editable:n}})}function De(e,t){return Object.entries(e).filter(([n])=>!t.includes(n)&&n.startsWith(`$`)&&!Te(e[n])).map(([e,t])=>({key:e,value:t,editable:!1})).sort((e,t)=>e.key.localeCompare(t.key))}function Oe(e){if(!e.includes(`:field:`))return null;let[t,,n]=e.split(`:`);return{instanceId:t,fieldName:n}}function ke(e,t){return`${e}:field:${t}`}function Ae(e){if(!e.includes(`:rule:`))return null;let t=e.split(`:rule:`);if(t.length!==2)return null;let n=t[0],r=t[1],i=Oe(n);return i?{...i,ruleName:r}:null}function je(e,t,n){return`${ke(e,t)}:rule:${n}`}function Me(e){let t={},n=Ee(e,he.FIELD);n.length>0&&(t.State=n);let r=De(e,[...he.FIELD,`$rules`,`$fields`,`$modifiers`,`$deepCompare`,`$clearExternalErrorsOnValidate`,`$silent`,`$isArrayOrRegleStatic`,`$schemaMode`,`$immediateDirty`]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Ne(e){let t={},n=[`$type`,`$valid`,`$active`,`$pending`,`$message`,`$tooltip`],r=Ee(e,n);r.length>0&&(t[`Rule State`]=r),e.$params&&Array.isArray(e.$params)&&e.$params.length>0&&(t.Parameters=[{key:`$params`,value:e.$params,editable:!1}]),e.$metadata!==void 0&&e.$metadata!==!0&&e.$metadata!==!1&&(t.Metadata=[{key:`$metadata`,value:e.$metadata,objectType:`reactive`,editable:!1}]);let i=De(e,[...n,`$params`,`$metadata`,`$haveAsync`,`$validating`,`$fieldDirty`,`$fieldInvalid`,`$fieldPending`,`$fieldCorrect`,`$fieldError`,`$maybePending`]);return i.length>0&&(t[`Other Properties`]=i),t}function Pe(e){let t={},n=Ee(e,he.ROOT);n.length>0&&(t.State=n);let r=De(e,[...he.ROOT,`$fields`,`$modifiers`,`$path`,`$clearExternalErrorsOnValidate`,`$silent`]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Fe(e,t){if(!e||!t)return null;let n=t.match(/[^.[\]]+/g);if(!n)return null;let r=e;for(let e of n){if(!r)return null;let t=parseInt(e);if(!isNaN(t))if(Q(r)&&Array.isArray(r.$each))r=r.$each[t];else return null;else if(Q(r)&&r.$self&&r.$self)r=r.$self;else if(Ce(r)&&r.$fields&&r.$fields[e])r=r.$fields[e];else if(r[e])r=r[e];else return null}return r}function Ie(e,t){let n=Ae(e);if(n){let{instanceId:e,fieldName:r,ruleName:i}=n,a=t(e);if(!a||!a.r$.$fields)return null;let o=Fe(a.r$.$fields,r);if(!o||!(`$rules`in o))return null;let s=o.$rules[i];return s?Ne(s):null}let r=Oe(e);if(r){let{instanceId:e,fieldName:n}=r,i=t(e);if(!i||!i.r$.$fields)return null;let a=Fe(i.r$.$fields,n);return a?Me(a):null}let i=t(e);return i?Pe(i.r$):null}function Le(e){if(e.includes(`:rule:`))return;let t=Oe(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Fe(r.r$.$fields,n);e&&typeof e.$validate==`function`&&e.$validate()}}else{let t=$.get(e);t&&typeof t.r$.$validate==`function`&&t.r$.$validate()}$.notifyDevtools()}function Re(e,t=!1){let n=Oe(e);if(n){let{instanceId:e,fieldName:r}=n,i=$.get(e);if(i&&i.r$.$fields){let e=Fe(i.r$.$fields,r);e&&typeof e.$reset==`function`&&e.$reset({toOriginalState:t})}}else{let n=$.get(e);n&&typeof n.r$.$reset==`function`&&n.r$.$reset({toOriginalState:t})}$.notifyDevtools()}function ze(e){if(e.includes(`:rule:`))return;let t=Oe(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Fe(r.r$.$fields,n);e&&typeof e.$touch==`function`&&e.$touch()}}else{let t=$.get(e);t&&typeof t.r$.$touch==`function`&&t.r$.$touch()}$.notifyDevtools()}function Be(e){let{nodeId:t,path:n,state:r}=e;if(!n.includes(`$value`)||!Oe(t))return;let[i,a,o]=t?.split(`:`)??[],s=$.get(i);if(s&&s.r$.$fields){let e=Fe(s.r$.$fields,o);e&&`$value`in e&&(e.$value=r.value,$.notifyDevtools())}}async function Ve(e){e.sendInspectorTree(ge.INSPECTOR),e.sendInspectorState(ge.INSPECTOR)}function He(){let e=f(!1),t=p(),n=p(new Map),r=p(new Map),i=p(new Map),a=f(0),o;function s(e){t.value=e}function c(e,t){let o=t?.filePath??`loose`,s=i.value.get(o),c=s?s+1:1;i.value.set(o,c);let d=`${t?.uid?.toString()??`regle`}#${++a.value}`,f=`r\$ #${t?.name??c}`;n.value.set(d,{id:d,name:f,r$:e,componentName:t?.componentName,filePath:t?.filePath});let p=y([()=>e.$value,()=>e.$externalErrors,()=>e.$externalIssues,()=>e.$error,()=>e.$invalid,()=>e.$pending],()=>u(),{deep:!0,flush:`post`});return r.value.set(d,p),window.requestAnimationFrame(()=>{l()}),d}function l(){t.value&&Ve(t.value)}function u(){o??=window.requestAnimationFrame(()=>{o=void 0,l()})}function d(e){let t=r.value.get(e);t&&(t(),r.value.delete(e)),n.value.delete(e),l()}function m(){return Array.from(n.value.values())}function h(e){return n.value.get(e)}function g(){r.value.forEach(e=>e()),r.value.clear(),n.value.clear(),l()}return{devtoolsApi:t,register:c,unregister:d,getAll:m,get:h,clear:g,setApi:s,notifyDevtools:l,loggedWarning:e}}const $=He();function Ue(e,t){if(typeof window>`u`||!(typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__)||fe())return()=>{};if(!i(de,void 0)&&!$.loggedWarning.value&&$.devtoolsApi)return $.loggedWarning.value=!0,console.warn(`📏 Regle Devtools are not available. Install Regle plugin in your app to enable them. https://reglejs.dev/introduction/devtools`),()=>{};let r=n(),a=r?.type?.name||r?.type?.__name,o;r&&r.type&&typeof r.type==`object`&&`__file`in r.type&&(o=r.type.__file);let s=$.register(e,{name:t?.name,componentName:a,uid:r?.uid,filePath:o});function c(){$.unregister(s)}return se(c),c}function We(){let e=p(new Map),t=p(new Map),n=p(new Map),i=p(new Map),a=p(new Map),o=p(new Map),s=p(new Map);function c(e){let n=t.value.get(e);if(n)return n;{let n=f({});return t.value.set(e,n),n}}function u(e){let t=n.value.get(e);if(t)return t;{let t=f([]);return n.value.set(e,t),t}}function d(e,t){o.value.set(e,t)}function m(e){return o.value.get(e)}function h(e,t,n){s.value.set(`${e}-${t}`,n)}function g(e,t){return s.value.get(`${e}-${t}`)}function _(e,t){e&&t!=null&&s.value.delete(`${e}-${t}`)}function v(e,t){i.value.set(e,t)}function y(e){return i.value.get(e)??!1}function b(t,n){e.value.set(t,n)}function x(t,n){let r=e.value.get(t);if(r)return S(n,r)?{valid:!0}:{valid:!1}}function S(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];if(!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`)return!1;if(`_params`in r){if(!r._params)return!0;if(Array.isArray(r._params))return r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=z(`_params`in i&&Array.isArray(i._params)?i._params:[]),n=z(r._params);return e?.[t]===n?.[t]}})}})}function C(e){let t=a.value.get(e);if(t)return t;{let t=f(!1),n=f(!0),r=f({}),i=f(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}function w(){e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear(),s.value.clear()}return r()&&l(w),{clearAll:w,addRuleDeclEntry:b,setDirtyEntry:v,checkRuleDeclEntry:x,getDirtyState:y,trySetRuleStatusRef:C,getFieldsEntry:c,getCollectionsEntry:u,getArrayStatus:g,addArrayStatus:h,deleteArrayStatus:_,arrayStatusStorage:s,addAdditionalRulesEntry:d,getAdditionalRulesEntry:m}}function Ge({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors&&Array.isArray(e.$externalErrors)&&!e.$externalIssues?.length?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=e.$error&&e.$externalIssues&&Array.isArray(e.$externalIssues)?e.$externalIssues.map(t=>({...t,$property:t.$property??e.fieldName,$rule:t.$rule??`external`})):[],a=[];return e.$schemaErrors&&e.$error&&(a=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i,...a]}function Ke({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function qe(e){return C(e)&&`$each`in e}function Je(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!C(e)))return e;if(qe(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>Ye(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>Ye(t,n,[e])).flat()}function Ye(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!C(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(qe(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>Ye(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>Ye(n,t,r?.concat(e))).flat()}function Xe({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:l}){let d=t(),p={},m,h=e(()=>be(r.value)&&r.value._async),g=f(!1),{$pending:_,$valid:v,$metadata:b,$validating:x}=c.trySetRuleStatusRef(`${s}.${i}`);function S(){d=t(),p=d.run(()=>{let t=f(!1),s=f(!1),c=f(!0),l=f(!1),u=f(!1),d=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:u.value,$invalid:c.value,$rule:{$valid:v.value,$invalid:!v.value,$pending:_.value},$params:S.value,...b.value})),p=e(()=>{try{return xe(r)?typeof r.value.active==`function`?r.value.active(d.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(d.value):a),xe(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](d.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return A(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),y=e(()=>xe(r)&&r.value.type?r.value.type:i),x=e(()=>xe(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:z(r.value._params??[]));return{$active:p,$message:h,$type:y,$validator:x,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:u,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=y(p?.$params,()=>{(!l.$silent.value||l.$rewardEarly.value&&p.$fieldError.value)&&E()},{deep:ae?1:!0})}S();function C(){v.value=!0,p.$fieldDirty.value&&(_.value=!0)}async function w(){let e=!1;try{let t=p.$validator.value;if(typeof t!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let n=t(a.value,...p.$params.value),r=a.value;C();let i;if(i=n instanceof Promise?await n:n,a.value!==r)return!0;if(typeof i==`boolean`)e=i;else{let{$valid:t,...n}=i;e=t,b.value=n}}catch{e=!1}finally{_.value=!1}return e}function T(e,t=!0){if(be(r.value)&&r.value._async)return!0;let n=e(a.value,...p.$params.value);if(n instanceof Promise)return!0;if(n!=null){if(typeof n==`boolean`)return n;{let{$valid:e,...t}=n;return b.value=t,e}}return!0}async function E(){try{x.value=!0;let e=!1;if(g.value=!0,be(r.value)&&r.value._async)e=await w();else{let t=p.$validator.value;e=T(t)}return v.value=e,e}catch{return!1}finally{x.value=!1,g.value=!1}}function D(){try{return x.value=!0,T(p.$validator.value)}catch{return!1}finally{x.value=!1}}function O(){v.value=!0,b.value={},_.value=!1,x.value=!1,S()}function k(){m(),d.stop(),d=t()}return u({...p,$pending:_,$valid:v,$metadata:b,$haveAsync:h,$maybePending:g,$validating:x,$parse:E,$parseSync:D,$unwatch:k,$watch:S,$reset:O})}function Ze(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t,!0);return n?{value:r,issues:[]}:{issues:Je(i,{includePath:!0})}}}}}function Qe(e){return e===!0?`eager`:e===!1||e==null?!1:e}function $e(e){return C(e)&&!Se(e)?Object.values(e).some(e=>$e(e)):Array.isArray(e)?e.some(e=>$e(e)):!A(e)}function et(e,t,n){return e===`eager`?!0:e===`non-empty`?$e(n):e===`lazy-non-empty`?$e(t):!1}function tt(e,t,n,r=!1){return e===`eager`?!0:e===`non-empty`?r&&!A(n):e===`lazy-non-empty`?!A(t):!1}function nt({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:c,storage:l,options:d,externalErrors:p,externalIssues:g,schemaErrors:_,schemaMode:v,onUnwatch:x,$isArray:S,initialState:w,rootInitialState:T,originalState:E,shortcuts:D,overrides:O,onValidate:k}){let j=t(),M,I=[],R,te,z,B,V=()=>{},H,U=()=>{},W=f(!1),ne=f(l.getAdditionalRulesEntry(o)??{});function G(e){ne.value=e??{},l.addAdditionalRulesEntry(o,e??{}),K(),V()}function re(e){G(e)}function K(){let e={...r.value,...ne.value},t=[];for(let r in e){if(r.startsWith(`$`)||r.startsWith(`~`))continue;let s=e[r];if(!s)continue;let c=m(()=>s);t.push([r,Xe({modifiers:{$silent:M.$silent,$rewardEarly:M.$rewardEarly},customMessages:i,rule:c,ruleKey:r,state:n,path:a,cachePath:o,storage:l,$debounce:Y.value.$debounce})])}J.value=Object.fromEntries(t),l.addRuleDeclEntry(o,e)}function ie(){let e={...r.value,...ne.value},t=l.checkRuleDeclEntry(o,e),n={};for(let t in e)t.startsWith(`$`)&&(n[t]=e[t]);return Y.value=n,t}function q(){let e=ie();le(),K(),M.processShortcuts(),oe(),se(),e?.valid!=null&&(M.$dirty.value=l.getDirtyState(o),(M.$dirty.value&&!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&V()),l.addRuleDeclEntry(o,r.value)}function oe(){V=M.$debounce.value>0?P(de,M.$debounce.value,{trackDebounceRef:W}):de}function se(){U=M.$debounce.value>0?P(()=>{M.$dirty.value=!0},M.$debounce.value):()=>{M.$dirty.value=!0}}function ce(){if(J.value)for(let e of Object.values(J.value))e.$unwatch();te(),B?.(),M.$dirty.value&&l.setDirtyEntry(o,M.$dirty.value),R?.(),j.stop(),j=t();for(let e of I)e.stop();I=[],x?.(),z?.()}function le(){if(J.value)for(let e of Object.values(J.value))e.$watch();M=j.run(()=>{let r=f(!1),i=f(!1),a=e(()=>r.value),o=e(()=>S||Se(n.value)),s=e(()=>Y.value.$debounce==null?M.$haveAnyAsyncRule.value?200:0:Y.value.$debounce),l=e(()=>Y.value.$deepCompare==null?!1:Y.value.$deepCompare),m=e(()=>Y.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy)===!0:Y.value.$lazy),y=e(()=>Y.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:Qe(h(d.immediateDirty)):Qe(Y.value.$immediateDirty)),x=e(()=>Y.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly)===!0:!!Y.value.$rewardEarly),C=e(()=>Y.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!E.value:h(d.clearExternalErrorsOnChange)===!0:!!Y.value.$clearExternalErrorsOnChange),T=e(()=>Y.value.$clearExternalErrorsOnValidate==null?h(d.clearExternalErrorsOnValidate)==null?!1:h(d.clearExternalErrorsOnValidate)===!0:!!Y.value.$clearExternalErrorsOnValidate),E=e(()=>x.value?!0:Y.value.$silent==null?h(d.silent)==null?!1:h(d.silent)===!0:Y.value.$silent),k=e(()=>Y.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty)===!0:Y.value.$autoDirty),j=e(()=>{if(Y.value.$isEdited!=null)return Y.value.$isEdited;if(O?.isEdited!=null)return O.isEdited}),N=e(()=>{for(let e of Object.values(J.value))if(e.$validating)return!0;return!1}),P=e({get:()=>n.value,set(e){R(),n.value=e,ue()}}),L=e(()=>W.value?ie.value&&r.value:ie.value&&!K.value&&r.value),te=e(()=>Ge({field:{$rules:J.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:ae.value}})),z=e(()=>Ge({field:{$rules:J.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:ae.value},silent:!0})),B=e(()=>te.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=f(!1);function U(e,t){return t instanceof Date&&e instanceof Date?ee(t).getTime()!==ee(e).getTime():t==null?e!=null&&e!==``:Array.isArray(e)&&Array.isArray(t)?!F(e,t,Y.value.$deepCompare):t!==e}b(()=>{r.value?j.value?H.value=j.value(n.value,w.value,U):H.value=U(n.value,w.value):H.value=!1});let ne=e(()=>H.value),G=e(()=>Ke({field:{$rules:J.value}})),re=e(()=>!(ie.value||K.value)),K=e(()=>i.value||!x.value?Object.entries(J.value).some(([e,t])=>t.$pending):!1),ie=e(()=>p?.value?.length||g?.value?.length||_?.value?.length?!0:q.value?!1:Object.values(J.value).some(e=>!e.$valid||e.$maybePending)),ae=e(()=>c??d.id??`root`),q=e(()=>!v&&!Object.keys(J.value).some(e=>!e.startsWith(`$`))),oe=e(()=>{if(p?.value?.length||g?.value?.length||q.value||W.value)return!1;if(r.value&&!A(n.value)&&!N.value&&!K.value){if(v)return!_?.value?.length;{let e=Object.values(J.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),se=e(()=>Object.values(J.value).some(e=>e.$haveAsync)),ce=e(()=>({$debounce:s.value,$lazy:m.value,$rewardEarly:x.value,$autoDirty:k.value,$silent:E.value,$clearExternalErrorsOnChange:C.value,$clearExternalErrorsOnValidate:T.value,$immediateDirty:y.value,$isEdited:j.value,$disabled:h(d.disabled)??!1}));function le(){D?.fields&&Object.entries(D.fields).forEach(([e,i])=>{let o=t();de[e]=o.run(()=>{let e=f();return b(()=>{e.value=i(u({$dirty:r,$externalErrors:p?.value??[],$externalIssues:g?.value??[],$value:n,$silentValue:P,$rules:J,$error:L,$pending:K,$invalid:ie,$correct:oe,$errors:B,$ready:re,$silentErrors:V,$anyDirty:a,$tooltips:G,$name:ae,$inactive:q,$edited:H,$anyEdited:ne}))}),e}),I.push(o)})}let de={};return{$error:L,$pending:K,$invalid:ie,$correct:oe,$debounce:s,$deepCompare:l,$lazy:m,$immediateDirty:y,$ready:re,$issues:te,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:x,$autoDirty:k,$silent:E,$clearExternalErrorsOnChange:C,$clearExternalErrorsOnValidate:T,$anyDirty:a,$edited:H,$anyEdited:ne,$name:ae,$haveAnyAsyncRule:se,$shortcuts:de,$validating:N,$tooltips:G,$dirty:r,processShortcuts:le,$silentValue:P,$inactive:q,$modifiers:ce,$isArrayOrRegleStatic:o}}),ue(),te=y(M.$dirty,e=>{l.setDirtyEntry(o,e),Object.values(J.value).forEach(t=>{t.$fieldDirty=e})}),B=y([M.$error,M.$correct,M.$invalid,M.$pending],()=>{Object.values(J.value).forEach(e=>{e.$fieldError=M.$error.value,e.$fieldInvalid=M.$invalid.value,e.$fieldPending=M.$pending.value,e.$fieldCorrect=M.$correct.value})}),z=y(M.$haveAnyAsyncRule,oe)}function ue(){R=y(n,()=>{M.$autoDirty.value&&!M.$silent.value&&(M.$dirty.value||U()),r.value instanceof Function&&q(),(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&V(),M.$clearExternalErrorsOnChange.value&&(xe(),Q())},{deep:M.$isArrayOrRegleStatic.value?!0:ae?1:!0})}async function de(){try{let{promise:e}=pe(Promise.allSettled(Object.values(J.value).map(e=>e.$parse())));await e}catch{}}let J=f({}),Y=f({});q();function fe(){tt(M.$immediateDirty.value,w.value,T?.value??w.value,a===``)&&(M.$dirty.value=!0)}function X(e,t){if(Z(),xe(),Q(),M.$dirty.value=!1,l.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=N(E),w.value=N(E);else if(e?.toInitialState)n.value=N(w.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,w.value=N(t),n.value=N(t)}else w.value=C(n.value)&&!Se(n.value)?N(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors&&(xe(),Q()),!t&&!e?.keepValidationState)for(let e of Object.values(J.value))e.$reset();if(!M.$lazy.value&&!M.$silent.value&&!t)for(let e of Object.values(J.value))e.$parse();fe()}function Z(){`cancel`in V&&V.cancel()}function pe(e){return H&&H.abort(),H=L(e),H}function me(){Z(),H&&H.abort()}function he(e=!0,t=!1){M.$dirty.value||U(),t&&e?(!M.$silent.value||M.$rewardEarly.value&&M.$error.value)&&(Z(),V()):e&&(Z(),V())}async function ge(e){return e&&(n.value=e),await s(),_e()}async function _e(e){try{if(e&&(n.value=e),v)return k?(he(!1),k()):{valid:!1,data:n.value,errors:M.$errors.value,issues:M.$issues.value};let t=n.value;if(M.$clearExternalErrorsOnValidate.value&&(xe(),Q()),M.$autoDirty.value&&!M.$silent.value&&M.$dirty.value&&!M.$validating.value&&!M.$pending.value&&!W.value&&!A(J.value))return{valid:!M.$invalid.value,data:t,errors:M.$errors.value,issues:M.$issues.value};if(M.$dirty.value||(M.$dirty.value=!0),A(J.value))return{valid:!0,data:t,errors:M.$errors.value,issues:M.$issues.value};me();let{promise:r}=pe(Promise.allSettled(Object.values(J.value).map(e=>e.$parse()))),i=await r;return await s(),{valid:i.every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:M.$errors.value,issues:M.$issues.value}}catch{return{valid:!1,data:n.value,errors:M.$errors.value,issues:M.$issues.value}}}function ve(e){try{return e&&(n.value=e),M.$dirty.value||(M.$dirty.value=!0),v?!1:(M.$clearExternalErrorsOnValidate.value&&(xe(),Q()),Object.values(J.value).map(e=>e.$parseSync()).every(e=>!!e))}catch{return!1}}function ye(e=!0){return M.$dirty.value?n.value:e?{_null:!0}:null}function be(e){p&&(p.value=e),Q()}function xe(){p?.value?.length&&(p.value=[])}function Ce(e){g&&(g.value=e),xe()}function Q(){g?.value?.length&&(g.value=[])}!M.$lazy.value&&!M.$dirty.value&&!M.$silent.value&&de(),fe();let{$shortcuts:we,$validating:Te,$autoDirty:Ee,$rewardEarly:De,$clearExternalErrorsOnChange:Oe,$clearExternalErrorsOnValidate:ke,$haveAnyAsyncRule:Ae,$debounce:je,$lazy:Me,...Ne}=M,Pe=u({...Ne,$externalErrors:p,$externalIssues:g,$value:n,$output:n,$initialValue:w,$originalValue:E,$rules:J,...we,$path:a,$isDebouncing:W,$reset:X,$touch:he,$validate:ge,$validateSync:ve,$validateWithoutRaceconditions:_e,$unwatch:ce,$watch:le,$extractDirtyFields:ye,$clearExternalErrors:xe,$clearExternalIssues:Q,$abort:me,$addRules:G,addRules:re,$schemaMode:v,"~modifiers":M.$modifiers,$setExternalErrors:be,$setExternalIssues:Ce,...Ze(ge)});return Object.defineProperty(Pe,Symbol.for(`regle:instance`),{value:!0}),Pe}function rt({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,externalIssues:d,schemaErrors:p,initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x,currentIndexes:S}){let w=e(()=>h(l)),T=s.value?.$id??w.value.$key??oe(),E=`${r}.${String(T)}`,D=f(i),O=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:T,enumerable:!1,configurable:!1,writable:!1}}));let k=ot({index:i,state:s,rulesDef:w,nestedReactiveRules:!0,customMessages:c,path:O,cachePath:E,storage:o,options:a,externalErrors:m(u?.value??[],i),externalIssues:m(d?.value??[],i),schemaErrors:e(()=>p?.value?.[D.value]),initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x});return k&&(k.$id=s.value?.$id??String(T),S?.set(k.$id,D),o.addArrayStatus(t,k.$id,k)),s.value&&(!C(s.value)||Se(s.value))&&b&&k?.$touch(),k}function it({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:l,externalIssues:d,schemaErrors:p,schemaMode:g,initialState:_,originalState:v,shortcuts:x,fieldName:S,overrides:C}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=f(),j=f(n.value),M=f({}),ee,P,F=f({}),I=s.getCollectionsEntry(a),L=new Map;D=E.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>be(e)||typeof e==`function`):!1:!1)})),R(),V();function R(){M.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=oe(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),j.value=F.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||g)?I.value=n.value.map((t,n)=>{let{scope:u,unwrapped:f}=re(r.value.$each,m(()=>t),n);u&&O.push(u);let h=m(_.value??[],n),y=m(l?.value??{},`$each`),b=m(d?.value??{},`$each`),w=e(()=>p?.value?.$each);return rt({$id:k.value,path:a,cachePath:o,customMessages:i,rules:f??{},stateValue:m(()=>t),index:n,options:c,storage:s,externalErrors:y,externalIssues:b,schemaErrors:w,initialState:h,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L})||null}).filter(e=>!!e):(I.value=[],L.clear()),F.value=nt({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:m(l?.value??{},`$self`),externalIssues:m(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:_,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C})}function te(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||g)){let t=[...I.value],o=new Set;I.value=n.value.map((t,n)=>{let u=m(()=>t);if(t.$id&&I.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);if(e){let r=L.get(t.$id);return r&&(r.value=n),o.add(t.$id),e.$value=u,e}return null}else{let{scope:t,unwrapped:f}=re(r.value.$each,u,n);t&&O.push(t);let h=m(l?.value??{},`$each`),y=m(d?.value??{},`$each`),b=e(()=>p?.value?.$each??[]),w=rt({$id:k.value,path:a,cachePath:a,customMessages:i,rules:f??{},stateValue:u,index:n,options:c,storage:s,externalErrors:h,externalIssues:y,schemaErrors:b,initialState:m(_.value??[],n),originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L});return w?(w.$id&&o.add(w.$id),w):null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())});for(let e of L.keys())o.has(e)||L.delete(e)}else I.value=[],L.clear()}function z(){ee=y(n,()=>{P?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?R():te(),B()},{deep:ae?1:!0,flush:`pre`}),B()}function B(){P=y(n,()=>{T.$autoDirty.value&&!T.$silent.value&&F.value.$touch(!1,!0)},{flush:`post`})}function V(){z(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){ee?.(),P?.(),n.value=e,z()}}),i=e(()=>F.value.$dirty&&(!I.value.length||I.value.every(e=>e.$dirty))),o=e(()=>F.value.$anyDirty||I.value.some(e=>e.$anyDirty)),s=e(()=>F.value.$invalid||I.value.some(e=>e.$invalid)),l=e(()=>(g?F.value.$correct:A(F.value.$rules)?!0:F.value.$correct)&&(!I.value.length||I.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),d=e(()=>F.value.$error||I.value.some(e=>e.$error)),p=e(()=>!(s.value||m.value)),m=e(()=>F.value.$pending||I.value.some(e=>e.$pending)),y=e(()=>!!I.value.length&&I.value.every(e=>e.$edited)),w=e(()=>F.value.$anyEdited||I.value.some(e=>e.$anyEdited)),T=e(()=>({$self:F.value.$issues,$each:I.value.map(e=>e.$issues)})),E=e(()=>({$self:F.value.$errors,$each:I.value.map(e=>e.$errors)})),D=e(()=>({$self:F.value.$silentErrors,$each:I.value.map(e=>e.$silentErrors)})),k=e(()=>M.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly)===!0:M.value.$rewardEarly),j=e(()=>k.value?!0:M.value.$silent==null?h(c.silent)==null?!1:h(c.silent)===!0:M.value.$silent),N=e(()=>M.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty)===!0:M.value.$autoDirty),L=e(()=>M.value.$immediateDirty==null?h(c.immediateDirty)==null?!1:Qe(h(c.immediateDirty)):Qe(M.value.$immediateDirty)),R=e(()=>M.value.$clearExternalErrorsOnChange==null?h(c.clearExternalErrorsOnChange)==null?!0:h(c.clearExternalErrorsOnChange)===!0:M.value.$clearExternalErrorsOnChange),te=e(()=>M.value.$clearExternalErrorsOnValidate==null?h(c.clearExternalErrorsOnValidate)==null?!1:h(c.clearExternalErrorsOnValidate)===!0:M.value.$clearExternalErrorsOnValidate),B=e(()=>{if(M.value.$isEdited!=null)return M.value.$isEdited;if(C?.isEdited!=null)return C.isEdited}),V=e(()=>S??c.id??`root`),H=e(()=>({$deepCompare:M.value.$deepCompare??!1,$debounce:M.value.$debounce??0,$lazy:M.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:N.value,$silent:j.value,$clearExternalErrorsOnChange:R.value,$clearExternalErrorsOnValidate:te.value,$immediateDirty:L.value,$isEdited:B.value,$disabled:h(c.disabled)??!1}));function U(){x?.collections&&Object.entries(x?.collections).forEach(([e,c])=>{let h=t();W[e]=h.run(()=>{let e=f();return b(()=>{e.value=c(u({$dirty:i,$error:d,$path:a,$silentValue:r,$pending:m,$invalid:s,$correct:l,$errors:E,$silentErrors:D,$initialValue:_,$originalValue:v,$ready:p,$anyDirty:o,$name:V,$each:I,$self:F,$value:n,$output:n,$edited:y,$anyEdited:w,$issues:T}))}),e}),O.push(h)})}let W={};return U(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:l,$error:d,$pending:m,$errors:E,$silentErrors:D,$ready:p,$name:V,$shortcuts:W,$silentValue:r,$edited:y,$anyEdited:w,$rewardEarly:k,$silent:j,$autoDirty:N,$issues:T,$modifiers:H}}),D.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){ee?.(),F.value&&F.value.$unwatch(),I.value&&I.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function U(e=!0,t=!1){F.value.$touch(e,t),I.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(H(),!t)if(e?.toOriginalState)n.value=N(v),_.value=N(v);else if(e?.toInitialState)n.value=N(_.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,_.value=N(t),n.value=N(t)}else _.value=N(n.value);e?.clearExternalErrors&&(se(),le()),e?.keepValidationState||(F.value.$reset(e,t),I.value.forEach(t=>{t.$reset(e,!0)})),t||R()}function ne(){F.value.$abort(),I.value.forEach(e=>{e.$abort()})}async function G(e){return e&&(n.value=e),K()}async function K(e){e&&(n.value=e);let t=n.value;try{return ne(),{valid:(await Promise.allSettled([F.value.$validateWithoutRaceconditions(e),...I.value.map(e=>e.$validateWithoutRaceconditions())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function ie(e){e&&(n.value=e);try{return[F.value.$validateSync(e),...I.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function q(e){l&&(l.value=e),le()}function se(){F.value.$clearExternalErrors(),I.value.forEach(e=>{e.$clearExternalErrors()})}function ce(e){d&&(d.value=e),se()}function le(){F.value.$clearExternalIssues(),I.value.forEach(e=>{e.$clearExternalIssues()})}function ue(e=!0){let t=I.value.map(t=>{if(Ce(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>A(e))&&(t=[]),t}let{$shortcuts:de,...J}=T;return u({$self:F,...J,...de,$path:a,$each:I,$value:n,$output:n,$initialValue:_,$originalValue:v,$validate:G,$validateSync:ie,$validateWithoutRaceconditions:K,$unwatch:H,$watch:V,$touch:U,$reset:W,$abort:ne,$extractDirtyFields:ue,$clearExternalErrors:se,$clearExternalIssues:le,$setExternalErrors:q,$setExternalIssues:ce,"~modifiers":T.$modifiers,...Ze(G)})}function at({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:c,externalIssues:l,schemaErrors:p,rootInitialState:g,rootSchemaErrors:v,validationGroups:x,initialState:S,originalState:w,fieldName:T,nestedReactiveRules:E,...D}){let O=t(),k,j=[],M=null,ee=null,P=null,F=null,I=null,L=f(void 0);async function R(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),s=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let s=m(r.value??{},n),u=m(()=>o),d=m(c?.value??{},n),f=m(l?.value??{},n),h=e(()=>p?.value?.[n]),g=m(S?.value??{},n);return t.push([n,ot({state:s,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,externalIssues:f,schemaErrors:h,initialState:g,originalState:w?.[n],fieldName:n,...D})]),t},[])),u=Object.fromEntries(Array.from(new Set([...Object.keys(h(c)??{}),...Object.keys(h(l)??{})])).filter(e=>!(e in n.value)).map(t=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t),f=i?`${i}.${t}`:t,h=a?`${a}.${t}`:t;return[t,ot({state:n,rulesDef:e(()=>({})),path:f,cachePath:h,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:w?.[t],fieldName:t,...D})]})),d=Object.fromEntries(Object.entries(h(p)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,s=m(r.value??{},t),u=m(c?.value??{},t),d=m(l?.value??{},t),f=e(()=>p?.value?.[t]),h=m(S?.value??{},t);return[t,ot({state:s,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,externalIssues:d,schemaErrors:f,initialState:h,originalState:w?.[t],fieldName:t,...D})]})),f=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t);return[t,ot({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:w?.[t],fieldName:t,...D})]}));z.value={...s,...u,...d,...f},t&&U()}function te(){n.value.$self&&(L.value=nt({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:f(void 0),externalIssues:f(void 0),schemaErrors:f(void 0),initialState:S??f(void 0),originalState:w,fieldName:`$self`,...D}))}let z=D.storage.getFieldsEntry(a);R(),te();function B(){c&&(P=y(c,()=>{W(),R()},{deep:!0}))}function V(){l&&(F=y(l,()=>{W(),R()},{deep:!0}))}function H(){I=y(r,()=>{W(),R(),k.$autoDirty.value&&!k.$silent.value&&q(!1,!0),k.$clearExternalErrorsOnChange.value&&(G(),K())},{flush:`post`})}function U(){(o||E)&&(M?.(),M=y(n,()=>{W(),R()},{deep:!0,flush:`pre`}),B(),V()),v&&(ee?.(),ee=y(()=>v.value?Object.keys(v.value).sort().join(`\0`):``,()=>{W(),R()},{flush:`post`})),H(),k=O.run(()=>{let a=e({get:()=>r.value,set(e){W(),r.value=e,R(),k.$autoDirty.value&&!k.$silent.value&&q(!1,!0),k.$clearExternalErrorsOnChange.value&&(G(),K())}}),o=d(a),s=e({get:()=>r.value,set(e){W(),r.value=e,R()}}),c=e(()=>{let e=z.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),l=e(()=>{let e=z.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),p=e(()=>{if(L.value?.$invalid)return!0;let e=z.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),m=e(()=>{let e=Object.entries(z.value).reduce((e,[t,n])=>((!we(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!A(n.value.$self);if(e.length||t){let t=L.value?.$correct??!0,n=!1;return n=D.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>we(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),g=e(()=>{if(L.value?.$error)return!0;let e=z.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),v=e(()=>h(D.options.rewardEarly)==null?!1:h(D.options.rewardEarly)),y=e(()=>h(D.options.silent)==null?!!v.value:h(D.options.silent)===!0),C=e(()=>h(D.options.autoDirty)==null?!0:h(D.options.autoDirty)===!0),E=e(()=>h(D.options.immediateDirty)==null?!1:Qe(h(D.options.immediateDirty))),O=e(()=>h(D.options.lazy)==null?!1:h(D.options.lazy)===!0),M=e(()=>h(D.options.clearExternalErrorsOnChange)==null?!0:h(D.options.clearExternalErrorsOnChange)===!0),N=e(()=>h(D.options.clearExternalErrorsOnValidate)==null?!1:h(D.options.clearExternalErrorsOnValidate)===!0),ee=e(()=>!(p.value||F.value)),P=f(!1),F=e(()=>{if(L.value?.$pending||P.value)return!0;let e=z.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),I=e(()=>{let e={...L.value&&{$self:L.value?.$issues??[]}};for(let t in z.value)e[t]=z.value[t]?.$issues;return e}),te=e(()=>{let e={...L.value&&{$self:L.value?.$errors??[]}};for(let t in z.value)e[t]=z.value[t]?.$errors;return e}),B=e(()=>{let e={...L.value&&{$self:L.value?.$silentErrors??[]}};for(let t in z.value)e[t]=z.value[t]?.$silentErrors;return e}),V=e(()=>{if(L.value?.$edited)return!0;if(!Object.keys(z.value).length)return!1;for(let e in z.value)if(!z.value[e]?.$edited)return!1;return!0}),H=e(()=>{if(L.value?.$anyEdited)return!0;for(let e in z.value)if(z.value[e]?.$anyEdited)return!0;return!1}),U=e(()=>T??D.options.id??`root`),ne=e(()=>({autoDirty:C.value,lazy:O.value,rewardEarly:v.value,silent:y.value,clearExternalErrorsOnChange:M.value,clearExternalErrorsOnValidate:N.value,immediateDirty:E.value,id:h(D.options.id),disabled:h(D.options.disabled)}));function re(){D.shortcuts?.nested&&Object.entries(D.shortcuts.nested).forEach(([e,n])=>{let a=t();ae[e]=a.run(()=>{let e=f();return b(()=>{e.value=n(u({$dirty:c,$path:i,$value:r,$output:r,$silentValue:s,$error:g,$originalValue:w,$pending:F,$invalid:p,$correct:m,$ready:ee,$anyDirty:l,$name:U,$silentErrors:B,$initialValue:S,$errors:te,$fields:z,$edited:V,$anyEdited:H,$issues:I,$self:L,"~modifiers":_(D.options)}))}),e}),j.push(a)})}let ie=e({get:()=>x?Object.fromEntries(Object.entries(x?.(z.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,le(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,ue(t,e)]))}]:[])):{},set(){}}),ae={};return re(),{$dirty:c,$anyDirty:l,$invalid:p,$correct:m,$error:g,$pending:F,$issues:I,$errors:te,$silentErrors:B,$clearExternalErrorsOnValidate:N,$clearExternalErrorsOnChange:M,$ready:ee,$name:U,$shortcuts:ae,$groups:ie,$silentValue:s,$immediateDirty:E,$edited:V,$anyEdited:H,$localPending:P,$autoDirty:C,$silent:y,$value:a,$output:o,$modifiers:ne}})}function W(){if(M?.(),P?.(),F?.(),I?.(),ee?.(),j.forEach(e=>e.stop()),j=[],k={},z.value)for(let e of Object.values(z.value))e?.$unwatch()}function ne(e){c&&(c.value=e),K()}function G(){c&&!A(c.value)&&(c.value={})}function re(e){l&&(l.value=e),G()}function K(){l&&!A(l.value)&&(l.value={})}function ie(){k&&k.$immediateDirty.value!==`lazy-non-empty`&&et(k.$immediateDirty.value,S.value,g?.value??S.value)&&q(!0,!1)}function ae(e,t){if(P?.(),W(),!t)if(e?.toOriginalState)r.value=N({...w}),S.value=N({...w});else if(e?.toInitialState)r.value=N({...S.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=N(t),r.value=N(t)}else S.value=N(r.value);if(!e?.keepValidationState){for(let t of Object.values(z.value))t?.$reset(e,!0);L.value?.$reset(e,!0)}e?.clearExternalErrors===!1&&(G(),K()),B(),V(),t||(R(),ie())}function q(e=!0,t=!1){for(let n of Object.values(z.value))n?.$touch(e,t);L.value?.$touch(e,t)}function oe(e){return e.filter(([e,t])=>C(t)&&!Se(t)?!(t&&typeof t==`object`&&`_null`in t)&&!A(t):Array.isArray(t)?t.length:!0)}function se(e=!0){let t=Object.entries(z.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=oe(t)),Object.fromEntries(t)}function ce(){for(let e of Object.values(z.value))e.$abort();L.value?.$abort()}async function de(e){return e&&(r.value=e),await s(),J()}async function J(e){try{if(e&&(r.value=e),D.schemaMode)return D.onValidate?(q(!1),k.$localPending.value=!0,D.onValidate()):{valid:!1,data:r.value,errors:k.$errors.value,issues:k.$issues.value};{let e=r.value;ce(),k.$clearExternalErrorsOnValidate.value&&(G(),K());let t=[...Object.values(z.value).map(e=>e.$validateWithoutRaceconditions()),...L.value?[L.value?.$validateWithoutRaceconditions()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:k.$errors.value,issues:k.$issues.value}}}catch{return{valid:!1,data:r.value,errors:k.$errors.value,issues:k.$issues.value}}finally{k.$localPending.value=!1}}function Y(e){try{return e&&(r.value=e),k.$clearExternalErrorsOnValidate.value&&(G(),K()),[...Object.values(z.value).map(e=>e.$validateSync()),...L.value?[L.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}ie();let{$shortcuts:fe,$localPending:X,...Z}=k,pe=u({...Z,...fe,$path:i,$initialValue:S,$originalValue:w,$self:L,$externalErrors:c,$externalIssues:l,$fields:z,$reset:ae,$touch:q,$validate:de,$unwatch:W,$watch:U,$setExternalErrors:ne,$setExternalIssues:re,$clearExternalErrors:G,$clearExternalIssues:K,$extractDirtyFields:se,$abort:ce,$validateSync:Y,$validateWithoutRaceconditions:J,...o?{"~modifiers":k.$modifiers}:{},...Ze(de)});return Object.defineProperty(pe,Symbol.for(`regle:instance`),{value:!0}),b(()=>{for(let e of Object.keys(pe).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete pe[e];for(let e of Object.values(z.value))e?.$name&&Object.assign(pe,{[e.$name]:e})}),pe}function ot({rulesDef:e,...n}){if(ve(e,n.state))return it({rulesDef:e,...n});if(_e(n.state,e)){if(G(n.state))return at({rulesDef:e,...n});{let r=t().run(()=>{let e=m(n.state.value?n.state:f({}));return y(()=>n.state.value,t=>{e.value=t},{deep:!0}),y(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return at({rulesDef:e,...a,state:r.fakeState})}}else if(ye(e))return nt({rulesDef:a(e.value)?e.value:e,...n})}function st(e){return e&&C(e)&&Object.keys(e).some(e=>e.includes(`.`))?E(e):e}function ct(e){return Array.isArray(e)?e.length>0:C(e)&&Object.keys(e).length>0}function lt(e){return Array.isArray(e)?[]:{}}function ut(e){let t=f(),n=f(),r,i,a,o,s=!1;function c(){let t=lt(n.value??e.externalIssues?.value);n.value=t,e.externalIssues&&(e.externalIssues.value=t)}function l(){let n=lt(t.value??e.externalErrors?.value);t.value=n,e.externalErrors&&(e.externalErrors.value=n)}function u(n,r=!1){if(s)return;s=!0;let i=st(n);t.value=i,r&&e.externalErrors&&(e.externalErrors.value=i),ct(i)&&c(),s=!1}function d(t,r=!1){if(s)return;s=!0;let i=st(t);n.value=i,r&&e.externalIssues&&(e.externalIssues.value=i),ct(i)&&l(),s=!1}function p(){r?.(),a?.(),r=y(()=>e.externalErrors?.value,e=>u(e),{deep:!0}),a=y(()=>e.externalIssues?.value,e=>d(e),{deep:!0})}function m(){i?.(),o?.(),i=y(()=>t.value,e=>u(e,!0),{deep:!0}),o=y(()=>n.value,e=>d(e,!0),{deep:!0})}function h(){g(),u(e.externalErrors?.value),d(e.externalIssues?.value),m()}function g(){i?.(),r?.(),o?.(),a?.(),i=void 0,r=void 0,o=void 0,a=void 0}return{externalErrors:t,externalIssues:n,start:h,watchOptionRefs:p,stop:g}}function dt({initialState:e,originalState:n,options:i,scopeRules:a,state:o,customRules:c,shortcuts:u,schemaErrors:d,schemaMode:p=!1,onValidate:m,overrides:g}){let _=We(),v=f(!1),b=new Set,x,S=f(),C=ut(i),w;function T(){w=y(()=>h(i.disabled),async e=>{e?O():(E(),C.start(),C.watchOptionRefs())})}function E(){_e(o,a)?S.value=at({rootRules:a,rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,validationGroups:i.validationGroups,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:m,overrides:g}):ye(a)&&(S.value=nt({rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaMode:p,schemaErrors:d,onValidate:m,overrides:g}))}function D(){w=void 0}function O(){S.value?.$unwatch(),C.stop()}function k(){v.value||(v.value=!0,x=t(!0),x.run(()=>{C.start(),E(),h(i.disabled)?s().then(()=>{S.value?.$unwatch()}):C.watchOptionRefs(),T()}))}function A(){v.value&&(v.value=!1,O(),w?.(),D(),x?.stop(),x=void 0,S.value=void 0,_.clearAll())}function j(){let e=r();!e||b.has(e)||(v.value||k(),b.add(e),l(()=>{b.delete(e),b.size||A()}))}k(),j();function M(){typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!fe()&&S.value&&Ue(S.value,{name:h(i.id)})}return M(),{regle:S,bindToCurrentScope:j}}function ft({state:t,rulesFactory:n,options:r,globalOptions:o,customRules:s,shortcuts:c,overrides:l}){let u=a(n)?n:typeof n==`function`?void 0:e(()=>n),d=i(J,void 0)??{},m={...d.modifiers,...o},h=()=>({...d.rules?.(),...s?.()}),_={...d.shortcuts,...c},v={...d.overrides,...l},y={...m,...r},x,S=p(u??{});typeof n==`function`&&(x=b(()=>{S.value=n(t),g(S)}));let w=f(C(t.value)?{...N(t.value)}:N(t.value)),T=C(t.value)?{...N(t.value)}:N(t.value);se(()=>{x?.()});let{regle:E,bindToCurrentScope:D}=dt({scopeRules:S,state:t,options:y,initialState:w,originalState:T,customRules:h,shortcuts:_,overrides:v});return{regle:E,bindToCurrentScope:D}}function pt(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s,c){let l=a(t)?t:f(t),u=e(()=>h(c?.disabled)??!1),{regle:d,bindToCurrentScope:p}=ft({state:l,rulesFactory:s,options:c,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return{r$:R(d,u,()=>{d.value||p()})}}return s}const mt=pt();function ht(){function e(e,t){return t}return e}const gt=ht();function _t(e,t){return w(h(e).$errors,String(t))}function vt(e,t){return w(h(e).$issues,String(t))}function yt(e){let t={};if(Object.entries(e).some(([e,t])=>be(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&C(r)&&`$each`in r&&r.$each&&C(r.$each)?t[n]=[yt(r.$each)]:C(r)&&!A(r)&&!Object.entries(r).some(([e,t])=>be(t)||typeof t==`function`)?t[n]=yt(r):t[n]=null}return t}function bt(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s){let c=a(t)?t:typeof t==`function`?void 0:e(()=>t),l=f(yt(c?.value)),u=e(()=>h(s?.disabled)??!1),{regle:d,bindToCurrentScope:p}=ft({state:l,rulesFactory:c,options:s,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return R(d,u,()=>{d.value||p()})}return s}const xt=bt();function St(e){if(k(e)){let t=e,n=class extends t{constructor(...e){return super(...e),Ct(this)}};return Object.defineProperty(n,"name",{value:t.name}),Ct(n)}return Ct(e)}function Ct(e){return!D(e,Y.REGLE_STATIC)&&Object.isExtensible(e)&&O(e,Y.REGLE_STATIC,!0),e}function wt({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=pt({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=bt({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:ht(),useRules:a}}function Tt(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?T(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?T(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?T(a.overrides,i):a.overrides??i,u=pt({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:ht()}}function Et(e){return e}function Dt(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),l=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),v=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),y=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(e){Object.values(t).forEach(t=>{t.$setExternalErrors(e)})}function E(e){Object.values(t).forEach(t=>{t.$setExternalIssues(e)})}function D(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}function O(){Object.values(t).forEach(e=>{e.$clearExternalIssues()})}function k(e){try{return e&&(i.value=e),Object.values(t).every(t=>t.$validateSync(e))}catch{return!1}}async function A(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}let j=u({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$output:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:l,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:y,$reset:S,$touch:C,$validate:A,$validateSync:k,$extractDirtyFields:w,$clearExternalErrors:D,$clearExternalIssues:O,$setExternalErrors:T,$setExternalIssues:E});return b(()=>{if(!r){for(let e of Object.keys(j).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete j[e];for(let[e,t]of Object.entries(x.value))Object.assign(j,{[e]:t})}}),j}function Ot(t,n){function r(r){let i=e(()=>h(r)),a=u({});c();let o=f(l(t.value)),s=u({r$:o});function c(){i.value&&(typeof i.value==`string`&&!t.value[i.value]?t.value[i.value]={}:Array.isArray(i.value)&&i.value.forEach(e=>{t.value[e]||(t.value[e]={})}))}y(i,c),y(t,e=>{o.value=l(e)},{deep:!0});function l(e){return i.value?typeof i.value==`string`?Dt(e[i.value]??{},!n.asRecord):(Object.keys(a).forEach(e=>{delete a[e]}),i.value.forEach(t=>{Object.entries(e[t]).forEach(([e,t])=>{Object.assign(a,{[e]:t})})}),Dt(a,!n.asRecord)):Dt(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function kt(t,r){let i=r??mt;return{useScopedRegle:((r,a,o)=>{let{namespace:s,scopeKey:l,id:u,...d}=o??{};i.__config??={};let p=e(()=>u??l),m=e(()=>h(s)),g=f(`${Object.keys(t.value).length+1}-${oe()}`),_=e(()=>p.value??`instance-${g.value}`),{r$:v}=i(r,a,{...d,id:p.value});x(),se(b),y(m,(e,t)=>{b(t),x()}),n()&&c(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&b()});function b(e){let n=e??m.value;n?t.value[n]&&delete t.value[n][_.value]:t.value[`~~global`][_.value]&&delete t.value[`~~global`][_.value]}function x(){m.value?(t.value[m.value]||(t.value[m.value]={}),t.value[m.value][_.value]=v):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][_.value]=v)}return{r$:v,dispose:b,register:x}})}}function At(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):ce(()=>f({"~~global":{}})))(),{useScopedRegle:n}=kt(t,e?.customUseRegle),{useCollectScope:r}=Ot(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:jt,useScopedRegle:Mt}=At(),Nt=jt,Pt=Mt;function Ft(t,n,r){let i=e(()=>h(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(be(t))return h(t._params?.[0])===i.value}})||r.find(e=>C(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function It(e,t,n){return!!e&&t in e&&C(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function Lt(e,t,n,r){let i=a(e)?m(e.value,`$fields`):m(e,`$fields`),o=f();return y(i,async()=>{await s(),It(i.value,t,n)?o.value=m(e).value:o.value=void 0},{immediate:!0,flush:`pre`}),o}function Rt(e){return e}function zt(e,t){return n=>T({...e},t(n))}var Bt=`1.27.1`;function Vt(e,t){let n=[],r=!1;we(e)?r=e[`~modifiers`]?.$disabled??!1:Ce(e)?r=e[`~modifiers`]?.disabled??!1:Q(e)&&(r=e[`~modifiers`]?.$disabled??!1);let i=we(e)?(`required`in e.$rules&&!e.$rules.required.$active||A(e.$rules))&&!e.$schemaMode:!1,a=Ce(e)||Q(e);return e.$error?n.push({label:`error`,textColor:X.ERROR.text,backgroundColor:X.ERROR.bg,tooltip:a?pe.ERROR:Z.ERROR}):e.$correct&&n.push({label:`correct`,textColor:X.CORRECT.text,backgroundColor:X.CORRECT.bg,tooltip:a?pe.CORRECT:Z.CORRECT}),e.$pending&&n.push({label:`pending`,textColor:X.PENDING.text,backgroundColor:X.PENDING.bg,tooltip:a?pe.PENDING:Z.PENDING}),r&&n.push({label:`disabled`,textColor:X.DISABLED.text,backgroundColor:X.DISABLED.bg,tooltip:Z.DISABLED}),i&&(n.push({label:`optional`,textColor:X.OPTIONAL.text,backgroundColor:X.OPTIONAL.bg,tooltip:Z.OPTIONAL}),!e.$invalid&&e.$dirty&&n.push({label:`valid`,textColor:X.VALID.text,backgroundColor:X.VALID.bg,tooltip:Z.VALID})),e.$dirty?n.push({label:`dirty`,textColor:X.DIRTY.text,backgroundColor:X.DIRTY.bg,tooltip:a?pe.DIRTY:Z.DIRTY}):i||n.push({label:`pristine`,textColor:X.PRISTINE.text,backgroundColor:X.PRISTINE.bg,tooltip:Z.PRISTINE}),t&&n.push({label:`<${t}.vue>`,textColor:X.COMPONENT.text,backgroundColor:X.COMPONENT.bg}),n}function Ht(e){let t=[];return e.$active?e.$valid?e.$valid&&t.push({label:`valid`,textColor:X.VALID.text,backgroundColor:X.VALID.bg,tooltip:me.VALID}):t.push({label:`invalid`,textColor:X.INVALID.text,backgroundColor:X.INVALID.bg,tooltip:me.INVALID}):t.push({label:`inactive`,textColor:X.INACTIVE.text,backgroundColor:X.INACTIVE.bg,tooltip:me.INACTIVE}),e.$pending&&t.push({label:`pending`,textColor:X.PENDING.text,backgroundColor:X.PENDING.bg,tooltip:me.PENDING}),t}function Ut(e,t,n){let r=[];return!e.$rules||typeof e.$rules!=`object`||Object.entries(e.$rules).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=Ht(i);r.push({id:je(t,n,e),label:`⚙️ ${e}`,tags:a,children:[]})}}),r}function Wt(e,t,n){let r=[];if(!e.$each||!Array.isArray(e.$each))return r;if(e.$each.forEach((e,i)=>{if(e&&typeof e==`object`){let a=Vt(e),o=`${n}[${i}]`,s=[];Ce(e)?s=Gt(e.$fields,t,o):we(e)&&(s=Ut(e,t,o)),r.push({id:ke(t,o),label:`[${i}]`,tags:a,children:s})}}),e.$self&&typeof e.$self==`object`){let i=Vt(e.$self),a=`${n}[$self]`;r.unshift({id:ke(t,a),label:`$self`,tags:i,children:Ut(e.$self,t,a)})}return r}function Gt(e,t,n){let r=[];return Object.entries(e).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=n?`${n}.${e}`:e,o=Vt(i),s=!1,c=!1,l=[];Q(i)?(l=Wt(i,t,a),s=!0,l.length===0&&(c=!0)):Ce(i)?l=Gt({...i.$fields,...i.$self&&{$self:i.$self}},t,a):we(i)&&(l=Ut(i,t,a));let u=l.filter(e=>e.label!==`$self`);r.push({id:ke(t,a),label:`${s?`${e}[${u.length}]`:e}${c?` (empty)`:``}`,tags:o,children:l})}}),r}function Kt(e,t){let n=[];return we(e)?Ut(e,t,`root`):(!(`$fields`in e)||typeof e.$fields!=`object`||Object.entries(e.$fields).forEach(([e,r])=>{if(r&&typeof r==`object`){let i=Vt(r),a=[],o=!1;Q(r)?(a=Wt(r,t,e),o=!0):Ce(r)?a=Gt({...r.$fields,...r.$self&&{$self:r.$self}},t,e):we(r)&&(a=Ut(r,t,e));let s=a.filter(e=>e.label!==`$self`);n.push({id:ke(t,e),label:`${o?`${e}[${s.length}]`:e}`,tags:i,children:a})}}),n)}function qt(e,t){let n=e.map(e=>{let{r$:t,id:n,name:r,componentName:i}=e;return{id:n,label:r,tags:Vt(t,i),children:Kt(t,n)}});return!t||t.trim()===``?n:Jt(n,t)}function Jt(e,t){let n=t.toLowerCase(),r=[];for(let i of e){let e=i.label.toLowerCase().includes(n),a=i.tags?.some(e=>e.label.toLowerCase().includes(n))??!1,o=i.children?Jt(i.children,t):[];(e||a||o.length>0)&&r.push({...i,children:o.length>0?o:i.children})}return r}function Yt(e){x({id:`regle-devtools`,label:`Regle`,logo:`https://reglejs.dev/logo_main.png`,packageName:`@regle/core`,homepage:`https://reglejs.dev`,componentStateTypes:[`Regles`],app:e},e=>{$.setApi(e),e.addInspector({id:ge.INSPECTOR,label:`Regle`,noSelectionText:`No instance selected`,icon:`rule`,treeFilterPlaceholder:`Filter state`,stateFilterPlaceholder:`Filter validation status`,actions:[{icon:`confirmation_number`,tooltip:`Log Regle version`,action:()=>{console.info(`Regle version`,Bt)}}],nodeActions:[{icon:`check`,tooltip:`Validate`,action:e=>{Le(e)}},{icon:`touch_app`,action:e=>{ze(e)},tooltip:`Touch the instance with $touch`},{icon:`refresh`,tooltip:`Reset validation state`,action:e=>{Re(e)}},{icon:`restore`,tooltip:`Restore to original state`,action:e=>{Re(e,!0)}}]}),$.notifyDevtools(),e.on.getInspectorTree(async e=>{if(e.inspectorId===ge.INSPECTOR){let t=qt($.getAll(),e.filter);t.length>0?e.rootNodes=t:e.rootNodes=[{id:`empty-regles`,label:`No Regles instances found`,children:[]}]}}),e.on.getInspectorState(t=>{if(t.inspectorId===ge.INSPECTOR){let n=Ie(t.nodeId,e=>$.get(e));n||e.sendInspectorTree(ge.INSPECTOR),n?t.state=n:t.state={}}}),e.on.editInspectorState(e=>{e.inspectorId===ge.INSPECTOR&&Be(e)})})}const Xt={install(e,t){e.provide(de,Bt),t&&e.provide(J,t),typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!fe()&&Yt(e)}};export{te as InternalRuleType,Xt as RegleVuePlugin,U as createRule,At as createScopedUseRegle,Ft as createVariant,wt as defineRegleConfig,Et as defineRegleOptions,Rt as defineRules,Tt as extendRegleConfig,Je as flatErrors,_t as getErrors,vt as getIssues,gt as inferRules,ne as isRegleInstance,St as markStatic,Dt as mergeRegles,It as narrowVariant,zt as refineRules,z as unwrapRuleParameters,Nt as useCollectScope,mt as useRegle,dt as useRootStorage,xt as useRules,Pt as useScopedRegle,Lt as variantToRef};
|
|
7
|
+
import{computed as e,effectScope as t,getCurrentInstance as n,getCurrentScope as r,inject as i,isRef as a,markRaw as o,nextTick as s,onMounted as c,onScopeDispose as l,reactive as u,readonly as d,ref as f,shallowRef as p,toRef as m,toValue as h,triggerRef as g,unref as _,version as v,watch as y,watchEffect as b}from"vue";import{DevToolsMessagingHookKeys as x,DevToolsV6PluginAPIHookKeys as S,devtoolsContext as C,devtoolsState as w,getInspector as T}from"@vue/devtools-kit";import{onDevToolsClientConnected as E,setupDevtoolsPlugin as D}from"@vue/devtools-api";function O(e){return e?.constructor?.name==`File`}function k(e){return e&&(e instanceof Date||e.constructor.name==`File`||e.constructor.name==`FileList`)?!1:typeof e==`object`&&!!e&&!Array.isArray(e)}function A(e,t,n){if(!e)return n;var r,i;if(Array.isArray(t)&&(r=t.slice(0)),typeof t==`string`&&(r=t.split(`.`)),typeof t==`symbol`&&(r=[t]),!Array.isArray(r))throw Error(`props arg must be an array, a string or a symbol`);for(;r.length;)if(i=r.shift(),!e||!i||(e=e[i],e===void 0))return n;return e}function j(e,...t){for(var n=[].slice.call(arguments),r,i=n.length;r=n[i-1],i--;)if(!r||typeof r!=`object`&&typeof r!=`function`)throw Error(`expected object, got `+r);for(var a=n[0],o=n.slice(1),s=o.length,i=0;i<s;i++){var c=o[i];for(var l in c)a[l]=c[l]}return a}function M(e){let t={};for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;let r=e[n],i=n.split(`.`),a=t;for(let e=0;e<i.length;e++){let t=i[e],n=e===i.length-1,o=t.match(/^\d+$/)?Number(t):null;if(o!==null){if(Array.isArray(a))if(n)a[o]=r;else{if(typeof a[o]!=`object`||a[o]===null){let t=i[e+1];a[o]=t&&t.match(/^\d+$/)?{$each:[],$self:[]}:{}}a=`$each`in a[o]?a[o].$each:a[o]}}else if(n)if(Array.isArray(a[t])){let e=a[t].slice();a[t]={},a[t].$self=e}else typeof a[t]==`object`&&a[t]!==null&&`$each`in a[t]?a[t].$self=r:a[t]=r;else{let n=i[e+1];if(Array.isArray(a[t])){let e=a[t].slice();a[t]={$each:[]},a[t].$self=e}(typeof a[t]!=`object`||a[t]===null||Array.isArray(a[t])&&!n.match(/^\d+$/))&&(n&&n.match(/^\d+$/)?a[t]={$each:[],$self:[]}:a[t]={}),a=`$each`in a[t]?a[t].$each:a[t]}}}return t}function N(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function P(e,t,n,r=!1){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})}function F(e){return typeof e==`function`&&!!e.prototype&&`constructor`in e.prototype&&e.prototype.constructor===e}function I(e,t=!0,n=!0){return e==null?!0:e instanceof Date?isNaN(e.getTime()):O(e)?e.size<=0:Array.isArray(e)?t?e.length===0:!1:k(e)?e==null?!0:n?Object.keys(e).length===0:!1:!String(e).length}const L=Symbol(`regle-rule`);function R(e){let t=[];return e.global&&t.push(`g`),e.ignoreCase&&t.push(`i`),e.multiline&&t.push(`m`),e.sticky&&t.push(`y`),e.unicode&&t.push(`u`),t.join(``)}function z(e,t=0){if(t>20)return e;let n=e,r={}.toString.call(e).slice(8,-1);if(r==`Set`&&(n=new Set([...e].map(e=>z(e,t+1)))),r==`Map`&&(n=new Map([...e].map(e=>[z(e[0],t+1),z(e[1],t+1)]))),r==`Date`&&(n=new Date(e.getTime())),r==`RegExp`&&(n=RegExp(e.source,R(e))),r==`Array`||r==`Object`){n=Array.isArray(e)?[]:{};for(let r in e)n[r]=z(e[r],t+1)}return n}function ee(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e==`object`&&t===`[object Date]`?new Date(e.getTime()):typeof e==`number`||t===`[object Number]`||typeof e==`string`||t===`[object String]`?new Date(e):new Date(NaN)}function B(e,t,{immediate:n=!1,trackDebounceRef:r}={}){let i,a=(...a)=>{r&&(r.value=!0);function o(){r&&(r.value=!1)}return new Promise((r,s)=>{function c(e){r(e),o()}if(clearTimeout(i),i=setTimeout(()=>{if(o(),i=void 0,!n)try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}},t),n){o();try{Promise.resolve(e.apply(this,[...a])).then(c).catch(e=>s(e)).finally(o)}catch(e){s(e)}}})};return a.cancel=()=>{clearTimeout(i),i=void 0,r&&(r.value=!1)},a}function te(e,t,n=!1,r=!0){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var i,a,o;if(Array.isArray(e)&&Array.isArray(t)){if(i=e.length,i!=t.length)return!1;if(r||!r&&n){for(a=i;a--!==0;)if(!te(e[a],t[a],n,!1))return!1}return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(o=Object.keys(e),i=o.length,i!==Object.keys(t).length)return!1;for(a=i;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[a]))return!1;for(a=i;a--!==0;){var s=o[a];if(k(e)&&k(t)&&s&&(r||!r&&n)&&!te(e[s],t[s],n,!1))return!1}return!0}return e!==e&&t!==t}var V=class extends Error{constructor(e=`Promise was aborted`){super(e),this.name=`AbortError`}};function H(e){let t=new AbortController,{signal:n}=t,r=new Promise((t,r)=>{function i(){r(new V)}n.addEventListener(`abort`,i),e.then(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new V):t(e)}).catch(e=>{n.removeEventListener(`abort`,i),n.aborted?r(new V):r(e)})});function i(e){t.abort(e)}return{promise:r,abort:i,signal:n}}function U(e,t,r){if(!a(e))return r?.(),u(e);let i=f(!1);return n()&&c(async()=>{await s(),typeof window<`u`&&window.requestAnimationFrame(()=>{i.value=!0})}),u(new Proxy({},{get(n,a,o){if(r?.(),t.value&&a!==`$value`&&i.value)return Reflect.get(n,a,o);if(e.value!==void 0)return _(Reflect.get(e.value,a,o))},set(t,n,i){return r?.(),a(e.value[n])&&!a(i)?e.value[n].value=i:e.value[n]=i,!0},deleteProperty(t,n){return r?.(),Reflect.deleteProperty(e.value,n)},has(t,n){return r?.(),e.value===void 0?!1:Reflect.has(e.value,n)},ownKeys(){return r?.(),e.value===void 0?[]:Object.keys(e.value)},getOwnPropertyDescriptor(){return r?.(),{enumerable:!0,configurable:!0}}}))}const W={Inline:`__inline`,Async:`__async`};function G(e){try{return e.map(e=>h(e))}catch{return[]}}function K(t){return t.map(t=>t instanceof Function?e(t):a(t)?t:m(()=>t))}function ne(e){let t=e.toString().replace(/\/\/.*$/gm,``).replace(/\/\*[\s\S]*?\*\//g,``).match(/^(?:async\s*)?(?:function\b.*?\(|\((.*?)\)|(\w+))\s*=>|\((.*?)\)\s*=>|function.*?\((.*?)\)|\((.*?)\)/);return t?(t[0]||t[1]||t[2]||t[3]||t[4]||``).split(`,`).map(e=>e.trim()).filter(e=>e.length>0).length:0}function q(e,...t){let{validator:n,type:r,async:i}=e,a=i||r===W.Async||n.constructor.name===`AsyncFunction`;return o({validator(n,...r){return e.validator(n,...G(r.length?r:t))},message(n){return typeof e.message==`function`?e.message({...n,$params:G(n?.$params?.length?n.$params:t)}):e.message},active(n){return typeof e.active==`function`?e.active({...n,$params:G(n?.$params?.length?n.$params:t)}):e.active??!0},tooltip(n){return typeof e.tooltip==`function`?e.tooltip({...n,$params:G(n?.$params?.length?n.$params:t)}):e.tooltip??[]},exec(n){let r=e.validator(n,...G(t)),i;return r instanceof Promise?r.then(e=>(i=e,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)):(i=r,typeof i==`object`&&`$valid`in i?i.$valid:typeof i==`boolean`?i:!1)},type:r,_validator:e.validator,_message:e.message,_active:e.active,_tooltip:e.tooltip,_type:e.type,_message_patched:!1,_tooltip_patched:!1,_async:a,_params:K(t),_brand:L})}function re(e){if(typeof e.validator==`function`){let t=[],n=e.async??e.validator.constructor.name===`AsyncFunction`,r=q({...e,async:n},...t);if(ne(e.validator)>1){let t=function(...t){return q(e,...t)};return t.validator=r.validator,t.message=r.message,t.active=r.active,t.tooltip=r.tooltip,t.type=r.type,t.exec=r.exec,t._validator=r.validator,t._message=r.message,t._active=r.active,t._tooltip=r.tooltip,t._type=e.type,t._message_pacthed=!1,t._tooltip_pacthed=!1,t._async=n,t}else return r}throw Error(`[createRule] validator must be a function`)}const J=Symbol.for(`regle:instance`);function Y(e){return typeof e==`object`&&!!e&&J in e}function ie(e){return k(e.value)}function ae(n,r,i){let a=t(),o;return o=n instanceof Function?a.run(()=>({computedEach:e(()=>n(r,i??0))})).computedEach:n,{scope:a,unwrapped:o}}const oe={LessThan:-1,EqualTo:0,GreaterThan:1};function se(e,t){let n=String(e).split(`.`),r=String(t).split(`.`);for(let e=0;e<Math.min(n.length,r.length);e++){let t=Number(n[e]),i=Number(r[e]);if(t>i)return oe.GreaterThan;if(i>t)return oe.LessThan;if(!isNaN(t)&&isNaN(i))return oe.GreaterThan;if(isNaN(t)&&!isNaN(i))return oe.LessThan}return oe.EqualTo}const ce=se(v,`3.5.0`)!==-1;function le(){return Math.floor(Math.random()*Date.now()).toString()}function X(){return typeof window>`u`?le():window.crypto.getRandomValues(new Uint32Array(1))[0].toString(10)}function Z(e){return r()?(l(e),!0):!1}function ue(e){let n=!1,r,i=t(!0);return((...t)=>(n||=(r=i.run(()=>e(...t)),!0),r))}function de(e,t){return e.some(e=>t?e?.[t]:!1)}function fe(e,t){return t?e.reduce((e,n)=>{let r=n?.[t]||[];return e.concat(r)},[]):[]}const pe=Symbol(`regle`),me=Symbol(`regle-config`),he={REGLE_STATIC:`__regle_static`};function ge(){return!!(typeof globalThis<`u`&&(`__vitest_worker__`in globalThis||`__JEST_GLOBAL__`in globalThis||typeof window<`u`&&`Cypress`in window||typeof process<`u`&&process.env&&(process.env.VITEST||process.env.JEST_WORKER_ID||process.env.NODE_ENV===`test`||process.env.PLAYWRIGHT_TEST)))}const Q={ERROR:{text:16777215,bg:15680580},INVALID:{text:16777215,bg:16747520},CORRECT:{text:16777215,bg:1096065},VALID:{text:16777215,bg:292951},PENDING:{text:16777215,bg:16096779},DIRTY:{text:2042167,bg:16708551},COMPONENT:{text:16777215,bg:6514417},PRISTINE:{text:1120295,bg:16777215},INACTIVE:{text:0,bg:11581118},OPTIONAL:{text:0,bg:11581118},DISABLED:{text:15680580,bg:15067115}},_e={PRISTINE:`Field is not touched yet`,DIRTY:`Field have been touched`,ERROR:`Field has errors`,CORRECT:`Field is dirty and all actives rules are valid`,VALID:`Field rules are all valid`,PENDING:`Field is pending`,INACTIVE:`Field is inactive`,OPTIONAL:`Field is not required`,DISABLED:`Validation reactivity is paused by the disabled modifier`},ve={DIRTY:`All nested fields have been touched`,ERROR:`Some nested fields have errors`,CORRECT:`All nested fields are correct`,PENDING:`Some nested fields are pending`},ye={INACTIVE:`The rule is not active`,INVALID:`Rule is invalid`,VALID:`Rule is valid`,PENDING:`Rule validator is pending`},be={ROOT:[`$invalid`,`$dirty`,`$error`,`$pending`,`$valid`,`$ready`],FIELD:[`$value`,`$invalid`,`$dirty`,`$error`,`$pending`,`$errors`]},xe={INSPECTOR:`regle-inspector`,COMPONENTS:`components`,TIMELINE:`regle-timeline`};async function Se(e,t){let n=T(e,t),r={app:t,inspectorId:e,filter:n?.treeFilter??``,rootNodes:[]};await C.hooks.callHookWith(async e=>{await Promise.all(e.map(e=>e(r)))},S.GET_INSPECTOR_TREE,r),await C.hooks.callHookWith(async t=>{await Promise.all(t.map(t=>t({inspectorId:e,rootNodes:r.rootNodes})))},x.SEND_INSPECTOR_TREE_TO_CLIENT,{inspectorId:e,rootNodes:r.rootNodes});let i=n?.selectedNodeId??``,a={app:t,inspectorId:e,nodeId:i,state:{}},o={currentTab:`custom-inspector:${e}`};i&&await C.hooks.callHookWith(async e=>{await Promise.all(e.map(e=>e(a,o)))},S.GET_INSPECTOR_STATE,a),await C.hooks.callHookWith(async t=>{await Promise.all(t.map(t=>t({inspectorId:e,nodeId:i,state:a.state})))},x.SEND_INSPECTOR_STATE_TO_CLIENT,{inspectorId:e,nodeId:i,state:a.state})}async function Ce(e,t){let n=xe.INSPECTOR;if(t&&(w.clientConnected||w.connected)){await Se(n,t);return}e.sendInspectorTree(n),e.sendInspectorState(n)}const we=`__REGLE_DEVTOOLS_REGISTRY__`;function Te(){let e=f(!1),t=p(),n=p(),r=p(new Map),i=p(new Map),a=f(0),o;function s(e,r){t.value=e,r&&(n.value=r)}function c(e,t){let n=++a.value,o=`${t?.uid?.toString()??`regle`}#${n}`,s=`r\$ #${t?.name??n}`;r.value.set(o,{id:o,name:s,r$:e,componentName:t?.componentName,filePath:t?.filePath});let c=y([()=>e.$value,()=>e.$externalErrors,()=>e.$externalIssues,()=>e.$error,()=>e.$invalid,()=>e.$pending],()=>u(),{deep:!0,flush:`post`});return i.value.set(o,c),window.requestAnimationFrame(()=>{l()}),o}function l(){t.value&&Ce(t.value,n.value)}function u(){o??=window.requestAnimationFrame(()=>{o=void 0,l()})}function d(e){let t=i.value.get(e);t&&(t(),i.value.delete(e)),r.value.delete(e),l()}function m(){return Array.from(r.value.values())}function h(e){return r.value.get(e)}function g(){i.value.forEach(e=>e()),i.value.clear(),r.value.clear(),l()}return{devtoolsApi:t,devtoolsApp:n,register:c,unregister:d,getAll:m,get:h,clear:g,setApi:s,notifyDevtools:l,loggedWarning:e}}function Ee(){if(typeof globalThis>`u`)return Te();let e=globalThis;return e[we]??=Te(),e[we]}const $=Ee();function De(e,t){if(typeof window>`u`||!(typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__)||ge())return()=>{};if(!i(pe,void 0)&&!$.loggedWarning.value&&$.devtoolsApi)return $.loggedWarning.value=!0,console.warn(`📏 Regle Devtools are not available. Install Regle plugin in your app to enable them. https://reglejs.dev/introduction/devtools`),()=>{};let r=n(),a=r?.type?.name||r?.type?.__name,o;r&&r.type&&typeof r.type==`object`&&`__file`in r.type&&(o=r.type.__file);let s=$.register(e,{name:t?.name,componentName:a,uid:r?.uid,filePath:o});function c(){$.unregister(s)}return Z(c),c}function Oe(){let e=p(new Map),t=p(new Map),n=p(new Map),i=p(new Map),a=p(new Map),o=p(new Map),s=p(new Map);function c(e){let n=t.value.get(e);if(n)return n;{let n=f({});return t.value.set(e,n),n}}function u(e){let t=n.value.get(e);if(t)return t;{let t=f([]);return n.value.set(e,t),t}}function d(e,t){o.value.set(e,t)}function m(e){return o.value.get(e)}function h(e,t,n){s.value.set(`${e}-${t}`,n)}function g(e,t){return s.value.get(`${e}-${t}`)}function _(e,t){e&&t!=null&&s.value.delete(`${e}-${t}`)}function v(e,t){i.value.set(e,t)}function y(e){return i.value.get(e)??!1}function b(t,n){e.value.set(t,n)}function x(t,n){let r=e.value.get(t);if(r)return S(n,r)?{valid:!0}:{valid:!1}}function S(e,t){let n=Object.keys(t),r=Object.keys(e);return r.length!==n.length||!r.every(e=>n.includes(e))?!1:r.every(n=>{let r=e[n],i=t[n];if(!i||!r||typeof r==`function`||typeof i==`function`||typeof r==`number`||typeof r==`boolean`||typeof r==`string`)return!1;if(`_params`in r){if(!r._params)return!0;if(Array.isArray(r._params))return r._params?.every((e,t)=>{if(typeof i==`number`||typeof i==`boolean`||typeof i==`string`)return!0;{let e=G(`_params`in i&&Array.isArray(i._params)?i._params:[]),n=G(r._params);return e?.[t]===n?.[t]}})}})}function C(e){let t=a.value.get(e);if(t)return t;{let t=f(!1),n=f(!0),r=f({}),i=f(!1);return a.value.set(e,{$pending:t,$valid:n,$metadata:r,$validating:i}),{$pending:t,$valid:n,$metadata:r,$validating:i}}}function w(){e.value.clear(),t.value.clear(),n.value.clear(),i.value.clear(),a.value.clear(),o.value.clear(),s.value.clear()}return r()&&l(w),{clearAll:w,addRuleDeclEntry:b,setDirtyEntry:v,checkRuleDeclEntry:x,getDirtyState:y,trySetRuleStatusRef:C,getFieldsEntry:c,getCollectionsEntry:u,getArrayStatus:g,addArrayStatus:h,deleteArrayStatus:_,arrayStatusStorage:s,addAdditionalRulesEntry:d,getAdditionalRulesEntry:m}}function ke(e,t){return!Pe(e.value)&&(ie(e)||k(t.value)&&!I(t.value)&&!Object.entries(t.value).some(([e,t])=>Me(t)||typeof t==`function`))}function Ae(e,t){return!!e.value&&k(e.value)&&`$each`in e.value||Array.isArray(t.value)}function je(e){return!!e.value&&(k(e.value)||ie(e.value))}function Me(e){return(k(e)||typeof e==`function`)&&`_validator`in e}function Ne(e){return typeof e.value==`function`?`_validator`in e.value:!0}function Pe(e){return k(e)&&N(e,he.REGLE_STATIC)&&e[he.REGLE_STATIC]===!0}function Fe(e){return k(e)&&`$fields`in e}function Ie(e){return!!e&&`$each`in e}function Le(e){return!!e&&`$rules`in e}function Re({field:e,silent:t=!1}){let n=Object.entries(e.$rules??{}).map(([n,r])=>{let i=``;if(t&&!r.$valid)i=r.$message;else if(!r.$valid&&e.$error&&!r.$validating)i=r.$message;else return null;return{$message:i,$property:e.fieldName,$rule:n,$type:r.$type,...typeof r.$metadata==`object`?r.$metadata:{}}}).filter(e=>!!e).reduce((e,t)=>(typeof t.$message==`string`?e.push(t):e.push(...t.$message.map(e=>({...t,$message:e}))),e),[]),r=e.$error&&e.$externalErrors&&Array.isArray(e.$externalErrors)&&!e.$externalIssues?.length?e.$externalErrors.map(t=>({$message:t,$property:e.fieldName,$rule:`external`,$type:void 0})):[],i=e.$error&&e.$externalIssues&&Array.isArray(e.$externalIssues)?e.$externalIssues.map(t=>({...t,$property:t.$property??e.fieldName,$rule:t.$rule??`external`})):[],a=[];return e.$schemaErrors&&e.$error&&(a=!Array.isArray(e.$schemaErrors)&&`$self`in e.$schemaErrors?e.$schemaErrors.$self??[]:e.$schemaErrors??[]),[...n,...r,...i,...a]}function ze({field:e}){let t=[];for(let n of Object.values(e.$rules??{})){let e=n.$tooltip;e&&(typeof e==`string`?t.push(e):t.push(...e))}return t}function Be(e){return k(e)&&`$each`in e}function Ve(e,t){let{includePath:n=!1}=t??{};if(Array.isArray(e)&&e.every(e=>!k(e)))return e;if(Be(e)){let t=n?e.$self?.map(e=>({message:e,path:[]}))??[]:e.$self??[],r=e.$each?.map(e=>He(e,n))??[];return t?.concat(r.flat())}else return Object.entries(e).map(([e,t])=>He(t,n,[e])).flat()}function He(e,t=!1,n){let r=t&&!n?[]:n;if(Array.isArray(e)&&e.every(e=>!k(e)))return t?e.map(e=>({message:e,path:r??[]})):e;if(Be(e)){let n=r?.length?e.$self?.map(e=>({message:e,path:r??[]}))??[]:e.$self??[],i=e.$each?.map((e,n)=>He(e,t,r?.concat(n)))??[];return n?.concat(i.flat())}else return Object.entries(e).map(([e,n])=>He(n,t,r?.concat(e))).flat()}function Ue({customMessages:n,rule:r,ruleKey:i,state:a,path:o,cachePath:s,storage:c,modifiers:l}){let d=t(),p={},m,h=e(()=>Me(r.value)&&r.value._async),g=f(!1),_=0,{$pending:v,$valid:b,$metadata:x,$validating:S}=c.trySetRuleStatusRef(`${s}.${i}`);function C(){d=t(),p=d.run(()=>{let t=f(!1),s=f(!1),c=f(!0),l=f(!1),u=f(!1),d=e(()=>({$value:a.value,$error:s.value,$dirty:t.value,$pending:l.value,$correct:u.value,$invalid:c.value,$rule:{$valid:b.value,$invalid:!b.value,$pending:v.value},$params:S.value,...x.value})),p=e(()=>{try{return Ne(r)?typeof r.value.active==`function`?r.value.active(d.value):!!r.value.active:!0}catch(e){return console.error(`Error in "active" function for "${o}.${i}" rule`,{cause:e}),!0}});function m(e){try{let t=``,a=n?n[i]?.[e]:void 0;if(a&&(t=typeof a==`function`?a(d.value):a),Ne(r)){let n=`_${e}_patched`;a&&!r.value[n]||(t=typeof r.value[e]==`function`?r.value[e](d.value):r.value[e]??``)}return t}catch(t){return console.error(`Error in "${e}" function for "${o}.${i}" rule`,{cause:t}),``}}let h=e(()=>{let e=m(`message`);return I(e)&&(e=`This field is not valid`),e}),g=e(()=>m(`tooltip`)),_=e(()=>Ne(r)&&r.value.type?r.value.type:i),y=e(()=>Ne(r)?r.value.validator:r.value),S=e(()=>typeof r.value==`function`?[]:G(r.value._params??[]));return{$active:p,$message:h,$type:_,$validator:y,$params:S,$path:e(()=>`${o}.${i}`),$tooltip:g,$fieldCorrect:u,$fieldError:s,$fieldDirty:t,$fieldPending:l,$fieldInvalid:c}}),m=y(p?.$params,()=>{(!l.$silent.value||l.$rewardEarly.value&&p.$fieldError.value)&&D()},{deep:ce?1:!0})}C();function w(){b.value=!0,p.$fieldDirty.value&&(v.value=!0)}async function T(e){let t=!1;try{let n=p.$validator.value;if(typeof n!=`function`)return console.error(`${o}: Incorrect rule format, it needs to be either a function or created with "createRule".`),!1;let r=n(a.value,...p.$params.value),i=a.value;w();let s;if(s=r instanceof Promise?await r:r,e!==_||a.value!==i)return b.value;if(typeof s==`boolean`)t=s;else{let{$valid:e,...n}=s;t=e,x.value=n}}catch{t=!1}finally{e===_&&(v.value=!1)}return t}function E(e,t=!0){if(Me(r.value)&&r.value._async)return!0;let n=e(a.value,...p.$params.value);if(n instanceof Promise)return!0;if(n!=null){if(typeof n==`boolean`)return n;{let{$valid:e,...t}=n;return x.value=t,e}}return!0}async function D(){let e=++_;try{S.value=!0;let t=!1;if(g.value=!0,Me(r.value)&&r.value._async)t=await T(e);else{let e=p.$validator.value;t=E(e)}return e===_?(b.value=t,t):b.value}catch{return!1}finally{e===_&&(S.value=!1,g.value=!1)}}function O(){try{return S.value=!0,E(p.$validator.value)}catch{return!1}finally{S.value=!1}}function k(){_++,b.value=!0,x.value={},v.value=!1,S.value=!1,C()}function A(){m(),d.stop(),d=t()}return u({...p,$pending:v,$valid:b,$metadata:x,$haveAsync:h,$maybePending:g,$validating:S,$parse:D,$parseSync:O,$unwatch:A,$watch:C,$reset:k})}function We(e){return{"~standard":{version:1,vendor:`regle`,validate:async t=>{let{valid:n,data:r,errors:i}=await e(t,!0);return n?{value:r,issues:[]}:{issues:Ve(i,{includePath:!0})}}}}}function Ge(e){return e===!0?`eager`:e===!1||e==null?!1:e}function Ke(e){return k(e)&&!Pe(e)?Object.values(e).some(e=>Ke(e)):Array.isArray(e)?e.some(e=>Ke(e)):!I(e)}function qe(e,t,n){return e===`eager`?!0:e===`non-empty`?Ke(n):e===`lazy-non-empty`?Ke(t):!1}function Je(e,t,n,r=!1){return e===`eager`?!0:e===`non-empty`?r&&!I(n):e===`lazy-non-empty`?!I(t):!1}function Ye({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,fieldName:c,storage:l,options:d,externalErrors:p,externalIssues:g,schemaErrors:_,schemaMode:v,onUnwatch:x,$isArray:S,initialState:C,rootInitialState:w,originalState:T,shortcuts:E,overrides:D,onValidate:O}){let A=t(),j,M=[],N,P,F,L,R=()=>{},V,U=()=>{},W=f(!1),G=f(l.getAdditionalRulesEntry(o)??{});function K(e){G.value=e??{},l.addAdditionalRulesEntry(o,e??{}),q(),R()}function ne(e){K(e)}function q(){let e={...r.value,...G.value},t=[];for(let r in e){if(r.startsWith(`$`)||r.startsWith(`~`))continue;let s=e[r];if(!s)continue;let c=m(()=>s);t.push([r,Ue({modifiers:{$silent:j.$silent,$rewardEarly:j.$rewardEarly},customMessages:i,rule:c,ruleKey:r,state:n,path:a,cachePath:o,storage:l,$debounce:Z.value.$debounce})])}X.value=Object.fromEntries(t),l.addRuleDeclEntry(o,e)}function re(){let e={...r.value,...G.value},t=l.checkRuleDeclEntry(o,e),n={};for(let t in e)t.startsWith(`$`)&&(n[t]=e[t]);return Z.value=n,t}function J(){let e=re();oe(),q(),j.processShortcuts(),Y(),ie(),e?.valid!=null&&(j.$dirty.value=l.getDirtyState(o),(j.$dirty.value&&!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&R()),l.addRuleDeclEntry(o,r.value)}function Y(){R=j.$debounce.value>0?B(le,j.$debounce.value,{trackDebounceRef:W}):le}function ie(){U=j.$debounce.value>0?B(()=>{j.$dirty.value=!0},j.$debounce.value):()=>{j.$dirty.value=!0}}function ae(){if(X.value)for(let e of Object.values(X.value))e.$unwatch();P(),L?.(),j.$dirty.value&&l.setDirtyEntry(o,j.$dirty.value),N?.(),A.stop(),A=t();for(let e of M)e.stop();M=[],x?.(),F?.()}function oe(){if(X.value)for(let e of Object.values(X.value))e.$watch();j=A.run(()=>{let r=f(!1),i=f(!1),a=e(()=>r.value),o=e(()=>S||Pe(n.value)),s=e(()=>Z.value.$debounce==null?h(d.debounce)==null?j.$haveAnyAsyncRule.value?200:0:h(d.debounce):Z.value.$debounce),l=e(()=>Z.value.$deepCompare==null?!1:Z.value.$deepCompare),m=e(()=>Z.value.$lazy==null?h(d.lazy)==null?!1:h(d.lazy)===!0:Z.value.$lazy),y=e(()=>Z.value.$immediateDirty==null?h(d.immediateDirty)==null?!1:Ge(h(d.immediateDirty)):Ge(Z.value.$immediateDirty)),x=e(()=>Z.value.$rewardEarly==null?h(d.rewardEarly)==null?!1:h(d.rewardEarly)===!0:!!Z.value.$rewardEarly),w=e(()=>Z.value.$clearExternalErrorsOnChange==null?h(d.clearExternalErrorsOnChange)==null?!O.value:h(d.clearExternalErrorsOnChange)===!0:!!Z.value.$clearExternalErrorsOnChange),T=e(()=>Z.value.$clearExternalErrorsOnValidate==null?h(d.clearExternalErrorsOnValidate)==null?!1:h(d.clearExternalErrorsOnValidate)===!0:!!Z.value.$clearExternalErrorsOnValidate),O=e(()=>x.value?!0:Z.value.$silent==null?h(d.silent)==null?!1:h(d.silent)===!0:Z.value.$silent),k=e(()=>Z.value.$autoDirty==null?h(d.autoDirty)==null?!0:h(d.autoDirty)===!0:Z.value.$autoDirty),A=e(()=>{if(Z.value.$isEdited!=null)return Z.value.$isEdited;if(D?.isEdited!=null)return D.isEdited}),P=e(()=>{for(let e of Object.values(X.value))if(e.$validating)return!0;return!1}),F=e({get:()=>n.value,set(e){N(),n.value=e,se()}}),L=e(()=>W.value?re.value&&r.value:re.value&&!q.value&&r.value),R=e(()=>Re({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:J.value}})),z=e(()=>Re({field:{$rules:X.value,$error:L.value,$externalErrors:p?.value,$externalIssues:g?.value,$schemaErrors:_?.value,fieldName:J.value},silent:!0})),B=e(()=>R.value.map(e=>e.$message)),V=e(()=>z.value.map(e=>e.$message)),H=f(!1);function U(e,t){return t instanceof Date&&e instanceof Date?ee(t).getTime()!==ee(e).getTime():t==null?typeof e==`boolean`?t===void 0?e===!0:e!=null:e!=null&&e!==``:Array.isArray(e)&&Array.isArray(t)?!te(e,t,Z.value.$deepCompare):t!==e}b(()=>{r.value?A.value?H.value=A.value(n.value,C.value,U):H.value=U(n.value,C.value):H.value=!1});let G=e(()=>H.value),K=e(()=>ze({field:{$rules:X.value}})),ne=e(()=>!(re.value||q.value)),q=e(()=>i.value||!x.value?Object.entries(X.value).some(([e,t])=>t.$pending):!1),re=e(()=>p?.value?.length||g?.value?.length||_?.value?.length?!0:Y.value?!1:Object.values(X.value).some(e=>!e.$valid||e.$maybePending)),J=e(()=>c??d.id??`root`),Y=e(()=>!v&&!Object.keys(X.value).some(e=>!e.startsWith(`$`))),ie=e(()=>{if(p?.value?.length||g?.value?.length||Y.value||W.value)return!1;if(r.value&&!I(n.value)&&!P.value&&!q.value){if(v)return!_?.value?.length;{let e=Object.values(X.value);for(let t of e)if(t.$active&&!t.$valid)return!1;return e.some(e=>e.$active)}}return!1}),ae=e(()=>Object.values(X.value).some(e=>e.$haveAsync)),oe=e(()=>({$debounce:s.value,$lazy:m.value,$rewardEarly:x.value,$autoDirty:k.value,$silent:O.value,$clearExternalErrorsOnChange:w.value,$clearExternalErrorsOnValidate:T.value,$immediateDirty:y.value,$isEdited:A.value,$disabled:h(d.disabled)??!1}));function ce(){E?.fields&&Object.entries(E.fields).forEach(([e,i])=>{let o=t();le[e]=o.run(()=>{let e=f();return b(()=>{e.value=i(u({$dirty:r,$externalErrors:p?.value??[],$externalIssues:g?.value??[],$value:n,$silentValue:F,$rules:X,$error:L,$pending:q,$invalid:re,$correct:ie,$errors:B,$ready:ne,$silentErrors:V,$anyDirty:a,$tooltips:K,$name:J,$inactive:Y,$edited:H,$anyEdited:G}))}),e}),M.push(o)})}let le={};return{$error:L,$pending:q,$invalid:re,$correct:ie,$debounce:s,$deepCompare:l,$lazy:m,$immediateDirty:y,$ready:ne,$issues:R,$silentIssues:z,$errors:B,$silentErrors:V,$rewardEarly:x,$autoDirty:k,$silent:O,$clearExternalErrorsOnChange:w,$clearExternalErrorsOnValidate:T,$anyDirty:a,$edited:H,$anyEdited:G,$name:J,$haveAnyAsyncRule:ae,$shortcuts:le,$validating:P,$tooltips:K,$dirty:r,processShortcuts:ce,$silentValue:F,$inactive:Y,$modifiers:oe,$isArrayOrRegleStatic:o}}),se(),P=y(j.$dirty,e=>{l.setDirtyEntry(o,e),Object.values(X.value).forEach(t=>{t.$fieldDirty=e})}),L=y([j.$error,j.$correct,j.$invalid,j.$pending],()=>{Object.values(X.value).forEach(e=>{e.$fieldError=j.$error.value,e.$fieldInvalid=j.$invalid.value,e.$fieldPending=j.$pending.value,e.$fieldCorrect=j.$correct.value})}),F=y(j.$haveAnyAsyncRule,Y)}function se(){N=y(n,()=>{j.$autoDirty.value&&!j.$silent.value&&(j.$dirty.value||U()),r.value instanceof Function&&J(),(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&R(),j.$clearExternalErrorsOnChange.value&&(be(),Se())},{deep:j.$isArrayOrRegleStatic.value?!0:ce?1:!0})}async function le(){try{let{promise:e}=pe(Promise.allSettled(Object.values(X.value).map(e=>e.$parse())));await e}catch{}}let X=f({}),Z=f({});J();function ue(){Je(j.$immediateDirty.value,C.value,w?.value??C.value,a===``)&&(j.$dirty.value=!0)}function de(e,t){if(fe(),j.$dirty.value=!1,l.setDirtyEntry(o,!1),!t)if(e?.toOriginalState)n.value=z(T),C.value=z(T);else if(e?.toInitialState)n.value=z(C.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,C.value=z(t),n.value=z(t)}else C.value=k(n.value)&&!Pe(n.value)?z(n.value):Array.isArray(n.value)?[...n.value]:n.value;if(e?.clearExternalErrors!==!1&&(be(),Se()),!t&&!e?.keepValidationState)for(let e of Object.values(X.value))e.$reset();if(!j.$lazy.value&&!j.$silent.value&&!t)for(let e of Object.values(X.value))e.$parse();ue()}function fe(){`cancel`in R&&R.cancel()}function pe(e){return V&&V.abort(),V=H(e),V}function me(){fe(),V&&V.abort()}function he(e=!0,t=!1){j.$dirty.value||U(),t&&e?(!j.$silent.value||j.$rewardEarly.value&&j.$error.value)&&(fe(),R()):e&&(fe(),R())}async function ge(e){return e&&(n.value=e),await s(),Q()}async function Q(e){try{if(e&&(n.value=e),v)return O?(he(!1),O()):{valid:!1,data:n.value,errors:j.$errors.value,issues:j.$issues.value};let t=n.value;if(j.$clearExternalErrorsOnValidate.value&&(be(),Se()),j.$autoDirty.value&&!j.$silent.value&&j.$dirty.value&&!j.$validating.value&&!j.$pending.value&&!W.value&&!I(X.value))return{valid:!j.$invalid.value,data:t,errors:j.$errors.value,issues:j.$issues.value};if(j.$dirty.value||(j.$dirty.value=!0),I(X.value))return{valid:!0,data:t,errors:j.$errors.value,issues:j.$issues.value};me();let{promise:r}=pe(Promise.allSettled(Object.values(X.value).map(e=>e.$parse()))),i=await r;return await s(),{valid:i.every(e=>e.status===`fulfilled`&&e.value===!0),data:t,errors:j.$errors.value,issues:j.$issues.value}}catch{return{valid:!1,data:n.value,errors:j.$errors.value,issues:j.$issues.value}}}function _e(e){try{return e&&(n.value=e),j.$dirty.value||(j.$dirty.value=!0),v?!1:(j.$clearExternalErrorsOnValidate.value&&(be(),Se()),Object.values(X.value).map(e=>e.$parseSync()).every(e=>!!e))}catch{return!1}}function ve(e=!0){return j.$dirty.value?n.value:e?{_null:!0}:null}function ye(e){p&&(p.value=e),Se()}function be(){p?.value?.length&&(p.value=[])}function xe(e){g&&(g.value=e),be()}function Se(){g?.value?.length&&(g.value=[])}!j.$lazy.value&&!j.$dirty.value&&!j.$silent.value&&le(),ue();let{$shortcuts:Ce,$validating:we,$autoDirty:Te,$rewardEarly:Ee,$clearExternalErrorsOnChange:$,$clearExternalErrorsOnValidate:De,$haveAnyAsyncRule:Oe,$debounce:ke,$lazy:Ae,...je}=j,Me=u({...je,$externalErrors:p,$externalIssues:g,$value:n,$output:n,$initialValue:C,$originalValue:T,$rules:X,...Ce,$path:a,$isDebouncing:W,$reset:de,$touch:he,$validate:ge,$validateSync:_e,$validateWithoutRaceconditions:Q,$unwatch:ae,$watch:oe,$extractDirtyFields:ve,$clearExternalErrors:be,$clearExternalIssues:Se,$abort:me,$addRules:K,addRules:ne,$schemaMode:v,"~modifiers":j.$modifiers,$setExternalErrors:ye,$setExternalIssues:xe,...We(ge)});return Object.defineProperty(Me,Symbol.for(`regle:instance`),{value:!0}),Me}function Xe({$id:t,path:n,cachePath:r,index:i,options:a,storage:o,stateValue:s,customMessages:c,rules:l,externalErrors:u,externalIssues:d,schemaErrors:p,initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x,currentIndexes:S}){let C=e(()=>h(l)),w=s.value?.$id??C.value.$key??X(),T=`${r}.${String(w)}`,E=f(i),D=`${n}.${i}`;typeof s.value==`object`&&s.value!=null&&(s.value.$id||Object.defineProperties(s.value,{$id:{value:w,enumerable:!1,configurable:!1,writable:!1}}));let O=$e({index:i,state:s,rulesDef:C,nestedReactiveRules:!0,customMessages:c,path:D,cachePath:T,storage:o,options:a,externalErrors:m(u?.value??[],i),externalIssues:m(d?.value??[],i),schemaErrors:e(()=>p?.value?.[E.value]),initialState:g,originalState:_,shortcuts:v,fieldName:y,schemaMode:b,overrides:x});return O&&(O.$id=s.value?.$id??String(w),S?.set(O.$id,E),o.addArrayStatus(t,O.$id,O)),s.value&&(!k(s.value)||Pe(s.value))&&b&&O?.$touch(),O}function Ze({state:n,rulesDef:r,customMessages:i,path:a,cachePath:o,storage:s,options:c,externalErrors:l,externalIssues:d,schemaErrors:p,schemaMode:g,initialState:_,originalState:v,shortcuts:x,fieldName:S,overrides:C}){let w=t(),T,E=t(),D,O=[];if(!Array.isArray(n.value)&&!r.value.$each)return;let k=f(),A=f(n.value),j=f({}),M,N,P=f({}),F=s.getCollectionsEntry(a),L=new Map;D=E.run(()=>({isPrimitiveArray:e(()=>n.value?.length?Array.isArray(n.value)&&n.value.length?n.value.every(e=>typeof e!=`object`):r.value.$each&&!(r.value.$each instanceof Function)?Object.values(r.value.$each).every(e=>Me(e)||typeof e==`function`):!1:!1)})),R(),V();function R(){j.value=Object.fromEntries(Object.entries(r.value).filter(([e])=>e.startsWith(`$`))),typeof n.value==`object`&&(n.value!=null&&!n.value?.$id&&n.value!==null?(k.value=X(),Object.defineProperties(n.value,{$id:{value:k.value,enumerable:!1,configurable:!1,writable:!1}})):n.value?.$id&&(k.value=n.value.$id)),A.value=P.value.$value,Array.isArray(n.value)&&(!D.isPrimitiveArray.value||g)?F.value=n.value.map((t,n)=>{let{scope:u,unwrapped:f}=ae(r.value.$each,m(()=>t),n);u&&O.push(u);let h=m(_.value??[],n),y=m(l?.value??{},`$each`),b=m(d?.value??{},`$each`),w=e(()=>p?.value?.$each);return Xe({$id:k.value,path:a,cachePath:o,customMessages:i,rules:f??{},stateValue:m(()=>t),index:n,options:c,storage:s,externalErrors:y,externalIssues:b,schemaErrors:w,initialState:h,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L})||null}).filter(e=>!!e):(F.value=[],L.clear()),P.value=Ye({state:n,rulesDef:r,customMessages:i,path:a,cachePath:a,storage:s,options:c,externalErrors:m(l?.value??{},`$self`),externalIssues:m(d?.value??{},`$self`),schemaErrors:e(()=>p?.value?.$self),$isArray:!0,initialState:_,originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C})}function ee(){if(Array.isArray(n.value)&&(!D.isPrimitiveArray.value||g)){let t=[...F.value],o=new Set;F.value=n.value.map((t,n)=>{let u=m(()=>t);if(t.$id&&F.value.find(e=>e.$id===t.$id)){let e=s.getArrayStatus(k.value,t.$id);if(e){let r=L.get(t.$id);return r&&(r.value=n),o.add(t.$id),e.$value=u,e}return null}else{let{scope:t,unwrapped:f}=ae(r.value.$each,u,n);t&&O.push(t);let h=m(l?.value??{},`$each`),y=m(d?.value??{},`$each`),b=e(()=>p?.value?.$each??[]),w=Xe({$id:k.value,path:a,cachePath:a,customMessages:i,rules:f??{},stateValue:u,index:n,options:c,storage:s,externalErrors:h,externalIssues:y,schemaErrors:b,initialState:m(_.value??[],n),originalState:v,shortcuts:x,fieldName:S,schemaMode:g,overrides:C,currentIndexes:L});return w?(w.$id&&o.add(w.$id),w):null}}).filter(e=>!!e),t.filter(e=>!n.value?.find(t=>e.$id===t.$id)).forEach((e,t)=>{s.deleteArrayStatus(k.value,t.toString())});for(let e of L.keys())o.has(e)||L.delete(e)}else F.value=[],L.clear()}function B(){M=y(n,()=>{N?.(),n.value!=null&&!Object.hasOwn(n.value,`$id`)&&!k.value?R():ee(),te()},{deep:ce?1:!0,flush:`pre`}),te()}function te(){N=y(n,()=>{T.$autoDirty.value&&!T.$silent.value&&P.value.$touch(!1,!0)},{flush:`post`})}function V(){B(),w=t(),T=w.run(()=>{let r=e({get:()=>n.value,set(e){M?.(),N?.(),n.value=e,B()}}),i=e(()=>P.value.$dirty&&(!F.value.length||F.value.every(e=>e.$dirty))),o=e(()=>P.value.$anyDirty||F.value.some(e=>e.$anyDirty)),s=e(()=>P.value.$invalid||F.value.some(e=>e.$invalid)),l=e(()=>(g?P.value.$correct:I(P.value.$rules)?!0:P.value.$correct)&&(!F.value.length||F.value.every(e=>e.$correct||e.$anyDirty&&!e.$invalid))),d=e(()=>P.value.$error||F.value.some(e=>e.$error)),p=e(()=>!(s.value||m.value)),m=e(()=>P.value.$pending||F.value.some(e=>e.$pending)),y=e(()=>!!F.value.length&&F.value.every(e=>e.$edited)),w=e(()=>P.value.$anyEdited||F.value.some(e=>e.$anyEdited)),T=e(()=>({$self:P.value.$issues,$each:F.value.map(e=>e.$issues)})),E=e(()=>({$self:P.value.$errors,$each:F.value.map(e=>e.$errors)})),D=e(()=>({$self:P.value.$silentErrors,$each:F.value.map(e=>e.$silentErrors)})),k=e(()=>j.value.$rewardEarly==null?h(c.rewardEarly)==null?!1:h(c.rewardEarly)===!0:j.value.$rewardEarly),A=e(()=>k.value?!0:j.value.$silent==null?h(c.silent)==null?!1:h(c.silent)===!0:j.value.$silent),L=e(()=>j.value.$autoDirty==null?h(c.autoDirty)==null?!0:h(c.autoDirty)===!0:j.value.$autoDirty),R=e(()=>j.value.$immediateDirty==null?h(c.immediateDirty)==null?!1:Ge(h(c.immediateDirty)):Ge(j.value.$immediateDirty)),z=e(()=>j.value.$clearExternalErrorsOnChange==null?h(c.clearExternalErrorsOnChange)==null?!0:h(c.clearExternalErrorsOnChange)===!0:j.value.$clearExternalErrorsOnChange),ee=e(()=>j.value.$clearExternalErrorsOnValidate==null?h(c.clearExternalErrorsOnValidate)==null?!1:h(c.clearExternalErrorsOnValidate)===!0:j.value.$clearExternalErrorsOnValidate),te=e(()=>{if(j.value.$isEdited!=null)return j.value.$isEdited;if(C?.isEdited!=null)return C.isEdited}),V=e(()=>S??c.id??`root`),H=e(()=>({$deepCompare:j.value.$deepCompare??!1,$debounce:j.value.$debounce??h(c.debounce)??0,$lazy:j.value.$lazy??!1,$rewardEarly:k.value,$autoDirty:L.value,$silent:A.value,$clearExternalErrorsOnChange:z.value,$clearExternalErrorsOnValidate:ee.value,$immediateDirty:R.value,$isEdited:te.value,$disabled:h(c.disabled)??!1}));function U(){x?.collections&&Object.entries(x?.collections).forEach(([e,c])=>{let h=t();W[e]=h.run(()=>{let e=f();return b(()=>{e.value=c(u({$dirty:i,$error:d,$path:a,$silentValue:r,$pending:m,$invalid:s,$correct:l,$errors:E,$silentErrors:D,$initialValue:_,$originalValue:v,$ready:p,$anyDirty:o,$name:V,$each:F,$self:P,$value:n,$output:n,$edited:y,$anyEdited:w,$issues:T}))}),e}),O.push(h)})}let W={};return U(),{$dirty:i,$anyDirty:o,$invalid:s,$correct:l,$error:d,$pending:m,$errors:E,$silentErrors:D,$ready:p,$name:V,$shortcuts:W,$silentValue:r,$edited:y,$anyEdited:w,$rewardEarly:k,$silent:A,$autoDirty:L,$issues:T,$modifiers:H}}),D.isPrimitiveArray.value&&r.value.$each&&console.warn(`${a} is a Array of primitives. Tracking can be lost when reassigning the Array. We advise to use an Array of objects instead`)}function H(){M?.(),P.value&&P.value.$unwatch(),F.value&&F.value.forEach(e=>{`$dirty`in e&&e.$unwatch()}),w.stop(),w=t(),E.stop(),E=t(!0),O.forEach(e=>e.stop()),O=[]}function U(e=!0,t=!1){P.value.$touch(e,t),F.value.forEach(n=>{n.$touch(e,t)})}function W(e,t){if(H(),!t)if(e?.toOriginalState)n.value=z(v),_.value=z(v);else if(e?.toInitialState)n.value=z(_.value);else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,_.value=z(t),n.value=z(t)}else _.value=z(n.value);e?.clearExternalErrors!==!1&&(J(),ie()),e?.keepValidationState||(P.value.$reset(e,t),F.value.forEach(t=>{t.$reset(e,!0)})),t||R()}function G(){P.value.$abort(),F.value.forEach(e=>{e.$abort()})}async function K(e){return e&&(n.value=e),ne()}async function ne(e){e&&(n.value=e);let t=n.value;try{return G(),{valid:(await Promise.allSettled([P.value.$validateWithoutRaceconditions(e),...F.value.map(e=>e.$validateWithoutRaceconditions())])).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:t,errors:T.$errors.value,issues:T.$issues.value}}catch{return{valid:!1,data:t,errors:T.$errors.value,issues:T.$issues.value}}}function q(e){e&&(n.value=e);try{return[P.value.$validateSync(e),...F.value.map(e=>e.$validateSync())].every(e=>!!e)}catch{return!1}}function re(e){l&&(l.value=e),ie()}function J(){P.value.$clearExternalErrors(),F.value.forEach(e=>{e.$clearExternalErrors()})}function Y(e){d&&(d.value=e),J()}function ie(){P.value.$clearExternalIssues(),F.value.forEach(e=>{e.$clearExternalIssues()})}function oe(e=!0){let t=F.value.map(t=>{if(Fe(t))return t.$extractDirtyFields(e)});return e&&t.every(e=>I(e))&&(t=[]),t}let{$shortcuts:se,...le}=T;return u({$self:P,...le,...se,$path:a,$each:F,$value:n,$output:n,$initialValue:_,$originalValue:v,$validate:K,$validateSync:q,$validateWithoutRaceconditions:ne,$unwatch:H,$watch:V,$touch:U,$reset:W,$abort:G,$extractDirtyFields:oe,$clearExternalErrors:J,$clearExternalIssues:ie,$setExternalErrors:re,$setExternalIssues:Y,"~modifiers":T.$modifiers,...We(K)})}function Qe({rulesDef:n,state:r,path:i=``,cachePath:a,rootRules:o,externalErrors:c,externalIssues:l,schemaErrors:p,rootInitialState:g,rootSchemaErrors:v,validationGroups:x,initialState:S,originalState:C,fieldName:w,nestedReactiveRules:T,...E}){let D=t(),O,A=[],j=null,M=null,N=null,P=null,F=null,L=f(void 0);async function R(t=!0){let o=Object.entries(n.value).filter(([e])=>e!==`$self`),s=Object.fromEntries(o.reduce((t,[n,o])=>{if(!o)return t;let s=m(r.value??{},n),u=m(()=>o),d=m(c?.value??{},n),f=m(l?.value??{},n),h=e(()=>p?.value?.[n]),g=m(S?.value??{},n);return t.push([n,$e({state:s,rulesDef:u,path:i?`${i}.${n}`:n,cachePath:a?`${a}.${n}`:n,externalErrors:d,externalIssues:f,schemaErrors:h,initialState:g,originalState:C?.[n],fieldName:n,...E})]),t},[])),u=Object.fromEntries(Array.from(new Set([...Object.keys(h(c)??{}),...Object.keys(h(l)??{})])).filter(e=>!(e in n.value)).map(t=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t),f=i?`${i}.${t}`:t,h=a?`${a}.${t}`:t;return[t,$e({state:n,rulesDef:e(()=>({})),path:f,cachePath:h,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:C?.[t],fieldName:t,...E})]})),d=Object.fromEntries(Object.entries(h(p)??{}).map(([t])=>{let n=i?`${i}.${t}`:t,o=a?`${a}.${t}`:t,s=m(r.value??{},t),u=m(c?.value??{},t),d=m(l?.value??{},t),f=e(()=>p?.value?.[t]),h=m(S?.value??{},t);return[t,$e({state:s,rulesDef:e(()=>({})),path:n,cachePath:o,externalErrors:u,externalIssues:d,schemaErrors:f,initialState:h,originalState:C?.[t],fieldName:t,...E})]})),f=Object.fromEntries(Object.entries(r.value??{}).filter(([e])=>!(e in n.value)&&!(e in(u??{}))&&!(e in(d??{}))).map(([t])=>{let n=m(r.value??{},t),o=m(c?.value??{},t),s=m(l?.value??{},t),u=e(()=>p?.value?.[t]),d=m(S?.value??{},t);return[t,$e({state:n,rulesDef:e(()=>({})),path:i?`${i}.${t}`:t,cachePath:a?`${a}.${t}`:t,externalErrors:o,externalIssues:s,schemaErrors:u,initialState:d,originalState:C?.[t],fieldName:t,...E})]}));B.value={...s,...u,...d,...f},t&&U()}function ee(){n.value.$self&&(L.value=Ye({state:r,rulesDef:e(()=>n.value.$self??{}),path:i,cachePath:a,externalErrors:f(void 0),externalIssues:f(void 0),schemaErrors:f(void 0),initialState:S??f(void 0),originalState:C,fieldName:`$self`,...E}))}let B=E.storage.getFieldsEntry(a);R(),ee();function te(){c&&(N=y(c,()=>{W(),R()},{deep:!0}))}function V(){l&&(P=y(l,()=>{W(),R()},{deep:!0}))}function H(){F=y(r,()=>{W(),R(),O.$autoDirty.value&&!O.$silent.value&&Y(!1,!0),O.$clearExternalErrorsOnChange.value&&(K(),q())},{flush:`post`})}function U(){(o||T)&&(j?.(),j=y(n,()=>{W(),R()},{deep:!0,flush:`pre`}),te(),V()),v&&(M?.(),M=y(()=>v.value?Object.keys(v.value).sort().join(`\0`):``,()=>{W(),R()},{flush:`post`})),H(),O=D.run(()=>{let a=e({get:()=>r.value,set(e){W(),r.value=e,R(),O.$autoDirty.value&&!O.$silent.value&&Y(!1,!0),O.$clearExternalErrorsOnChange.value&&(K(),q())}}),o=d(a),s=e({get:()=>r.value,set(e){W(),r.value=e,R()}}),c=e(()=>{let e=B.value,t=Object.keys(e);if(!t.length)return!1;for(let n of t)if(!e[n]?.$dirty)return!1;return!0}),l=e(()=>{let e=B.value;for(let t in e)if(e[t]?.$anyDirty)return!0;return!1}),p=e(()=>{if(L.value?.$invalid)return!0;let e=B.value,t=Object.entries(e);if(!t.length)return!1;for(let[e,n]of t)if(n?.$invalid)return!0;return!1}),m=e(()=>{let e=Object.entries(B.value).reduce((e,[t,n])=>((!Le(n)||!n.$inactive)&&e.push([t,n]),e),[]),t=n.value.$self&&!I(n.value.$self);if(e.length||t){let t=L.value?.$correct??!0,n=!1;return n=E.schemaMode?e.every(([e,t])=>t.$correct):e.every(([e,t])=>Le(t)?`required`in t.$rules&&t.$rules.required.$active?t.$correct:!t.$invalid&&!t.$pending&&!t.$isDebouncing:t?.$correct),t&&n}return!1}),g=e(()=>{if(L.value?.$error)return!0;let e=B.value;if(!Object.keys(e).length)return!1;for(let t in e)if(e[t]?.$error)return!0;return!1}),v=e(()=>h(E.options.rewardEarly)==null?!1:h(E.options.rewardEarly)),y=e(()=>h(E.options.silent)==null?!!v.value:h(E.options.silent)===!0),T=e(()=>h(E.options.autoDirty)==null?!0:h(E.options.autoDirty)===!0),D=e(()=>h(E.options.immediateDirty)==null?!1:Ge(h(E.options.immediateDirty))),k=e(()=>h(E.options.lazy)==null?!1:h(E.options.lazy)===!0),j=e(()=>h(E.options.clearExternalErrorsOnChange)==null?!0:h(E.options.clearExternalErrorsOnChange)===!0),M=e(()=>h(E.options.clearExternalErrorsOnValidate)==null?!1:h(E.options.clearExternalErrorsOnValidate)===!0),N=e(()=>!(p.value||F.value)),P=f(!1),F=e(()=>{if(L.value?.$pending||P.value)return!0;let e=B.value;for(let t in e)if(e[t]?.$pending)return!0;return!1}),z=e(()=>{let e={...L.value&&{$self:L.value?.$issues??[]}};for(let t in B.value)e[t]=B.value[t]?.$issues;return e}),ee=e(()=>{let e={...L.value&&{$self:L.value?.$errors??[]}};for(let t in B.value)e[t]=B.value[t]?.$errors;return e}),te=e(()=>{let e={...L.value&&{$self:L.value?.$silentErrors??[]}};for(let t in B.value)e[t]=B.value[t]?.$silentErrors;return e}),V=e(()=>{if(L.value?.$edited)return!0;if(!Object.keys(B.value).length)return!1;for(let e in B.value)if(!B.value[e]?.$edited)return!1;return!0}),H=e(()=>{if(L.value?.$anyEdited)return!0;for(let e in B.value)if(B.value[e]?.$anyEdited)return!0;return!1}),U=e(()=>w??E.options.id??`root`),G=e(()=>({autoDirty:T.value,lazy:k.value,rewardEarly:v.value,silent:y.value,clearExternalErrorsOnChange:j.value,clearExternalErrorsOnValidate:M.value,immediateDirty:D.value,id:h(E.options.id),disabled:h(E.options.disabled)}));function ne(){E.shortcuts?.nested&&Object.entries(E.shortcuts.nested).forEach(([e,n])=>{let a=t();J[e]=a.run(()=>{let e=f();return b(()=>{e.value=n(u({$dirty:c,$path:i,$value:r,$output:r,$silentValue:s,$error:g,$originalValue:C,$pending:F,$invalid:p,$correct:m,$ready:N,$anyDirty:l,$name:U,$silentErrors:te,$initialValue:S,$errors:ee,$fields:B,$edited:V,$anyEdited:H,$issues:z,$self:L,"~modifiers":_(E.options)}))}),e}),A.push(a)})}let re=e({get:()=>x?Object.fromEntries(Object.entries(x?.(B.value)??{}).map(([e,t])=>t.length?[e,{...Object.fromEntries([`$invalid`,`$error`,`$pending`,`$dirty`,`$correct`].map(e=>[e,de(t,e)])),...Object.fromEntries([`$errors`,`$silentErrors`].map(e=>[e,fe(t,e)]))}]:[])):{},set(){}}),J={};return ne(),{$dirty:c,$anyDirty:l,$invalid:p,$correct:m,$error:g,$pending:F,$issues:z,$errors:ee,$silentErrors:te,$clearExternalErrorsOnValidate:M,$clearExternalErrorsOnChange:j,$ready:N,$name:U,$shortcuts:J,$groups:re,$silentValue:s,$immediateDirty:D,$edited:V,$anyEdited:H,$localPending:P,$autoDirty:T,$silent:y,$value:a,$output:o,$modifiers:G}})}function W(){if(j?.(),N?.(),P?.(),F?.(),M?.(),A.forEach(e=>e.stop()),A=[],O={},B.value)for(let e of Object.values(B.value))e?.$unwatch()}function G(e){c&&(c.value=e),q()}function K(){c&&!I(c.value)&&(c.value={})}function ne(e){l&&(l.value=e),K()}function q(){l&&!I(l.value)&&(l.value={})}function re(){O&&O.$immediateDirty.value!==`lazy-non-empty`&&qe(O.$immediateDirty.value,S.value,g?.value??S.value)&&Y(!0,!1)}function J(e,t){if(N?.(),W(),!t)if(e?.toOriginalState)r.value=z({...C}),S.value=z({...C});else if(e?.toInitialState)r.value=z({...S.value});else if(e?.toState){let t;t=typeof e?.toState==`function`?e?.toState():e?.toState,S.value=z(t),r.value=z(t)}else S.value=z(r.value);if(!e?.keepValidationState){for(let t of Object.values(B.value))t?.$reset(e,!0);L.value?.$reset(e,!0)}e?.clearExternalErrors!==!1&&(K(),q()),te(),V(),t||(R(),re())}function Y(e=!0,t=!1){for(let n of Object.values(B.value))n?.$touch(e,t);L.value?.$touch(e,t)}function ie(e){return e.filter(([e,t])=>k(t)&&!Pe(t)?!(t&&typeof t==`object`&&`_null`in t)&&!I(t):Array.isArray(t)?t.length:!0)}function ae(e=!0){let t=Object.entries(B.value).map(([t,n])=>[t,n.$extractDirtyFields(e)]);return e&&(t=ie(t)),Object.fromEntries(t)}function oe(){for(let e of Object.values(B.value))e.$abort();L.value?.$abort()}async function se(e){return e&&(r.value=e),await s(),ce()}async function ce(e){try{if(e&&(r.value=e),E.schemaMode)return E.onValidate?(Y(!1),O.$localPending.value=!0,E.onValidate()):{valid:!1,data:r.value,errors:O.$errors.value,issues:O.$issues.value};{let e=r.value;oe(),O.$clearExternalErrorsOnValidate.value&&(K(),q());let t=[...Object.values(B.value).map(e=>e.$validateWithoutRaceconditions()),...L.value?[L.value?.$validateWithoutRaceconditions()]:[]];return{valid:(await Promise.allSettled(t)).every(e=>e.status===`fulfilled`&&e?.value?.valid===!0),data:e,errors:O.$errors.value,issues:O.$issues.value}}}catch{return{valid:!1,data:r.value,errors:O.$errors.value,issues:O.$issues.value}}finally{O.$localPending.value=!1}}function le(e){try{return e&&(r.value=e),O.$clearExternalErrorsOnValidate.value&&(K(),q()),[...Object.values(B.value).map(e=>e.$validateSync()),...L.value?[L.value?.$validateSync()]:[]].every(e=>!!e)}catch{return!1}}re();let{$shortcuts:X,$localPending:Z,...ue}=O,pe=u({...ue,...X,$path:i,$initialValue:S,$originalValue:C,$self:L,$externalErrors:c,$externalIssues:l,$fields:B,$reset:J,$touch:Y,$validate:se,$unwatch:W,$watch:U,$setExternalErrors:G,$setExternalIssues:ne,$clearExternalErrors:K,$clearExternalIssues:q,$extractDirtyFields:ae,$abort:oe,$validateSync:le,$validateWithoutRaceconditions:ce,...o?{"~modifiers":O.$modifiers}:{},...We(se)});return Object.defineProperty(pe,Symbol.for(`regle:instance`),{value:!0}),b(()=>{for(let e of Object.keys(pe).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete pe[e];for(let e of Object.values(B.value))e?.$name&&Object.assign(pe,{[e.$name]:e})}),pe}function $e({rulesDef:e,...n}){if(Ae(e,n.state))return Ze({rulesDef:e,...n});if(ke(n.state,e)){if(ie(n.state))return Qe({rulesDef:e,...n});{let r=t().run(()=>{let e=m(n.state.value?n.state:f({}));return y(()=>n.state.value,t=>{e.value=t},{deep:!0}),y(e,e=>{n.state.value=e},{deep:!0}),{fakeState:e}}),{state:i,...a}=n;return Qe({rulesDef:e,...a,state:r.fakeState})}}else if(je(e))return Ye({rulesDef:a(e.value)?e.value:e,...n})}function et(e){return e&&k(e)&&Object.keys(e).some(e=>e.includes(`.`))?M(e):e}function tt(e){return Array.isArray(e)?e.length>0:k(e)&&Object.keys(e).length>0}function nt(e){return Array.isArray(e)?[]:{}}function rt(e){let t=f(),n=f(),r,i,a,o,s=!1;function c(){let t=nt(n.value??e.externalIssues?.value);n.value=t,e.externalIssues&&(e.externalIssues.value=t)}function l(){let n=nt(t.value??e.externalErrors?.value);t.value=n,e.externalErrors&&(e.externalErrors.value=n)}function u(n,r=!1){if(s)return;s=!0;let i=et(n);t.value=i,r&&e.externalErrors&&(e.externalErrors.value=i),tt(i)&&c(),s=!1}function d(t,r=!1){if(s)return;s=!0;let i=et(t);n.value=i,r&&e.externalIssues&&(e.externalIssues.value=i),tt(i)&&l(),s=!1}function p(){r?.(),a?.(),r=y(()=>e.externalErrors?.value,e=>u(e),{deep:!0}),a=y(()=>e.externalIssues?.value,e=>d(e),{deep:!0})}function m(){i?.(),o?.(),i=y(()=>t.value,e=>u(e,!0),{deep:!0}),o=y(()=>n.value,e=>d(e,!0),{deep:!0})}function h(){g(),u(e.externalErrors?.value),d(e.externalIssues?.value),m()}function g(){i?.(),r?.(),o?.(),a?.(),i=void 0,r=void 0,o=void 0,a=void 0}return{externalErrors:t,externalIssues:n,start:h,watchOptionRefs:p,stop:g}}function it({initialState:e,originalState:n,options:i,scopeRules:a,state:o,customRules:c,shortcuts:u,schemaErrors:d,schemaMode:p=!1,onValidate:m,overrides:g}){let _=Oe(),v=f(!1),b=new Set,x,S=f(),C=rt(i),w;function T(){w=y(()=>h(i.disabled),async e=>{e?O():(E(),C.start(),C.watchOptionRefs())})}function E(){ke(o,a)?S.value=Qe({rootRules:a,rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,validationGroups:i.validationGroups,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaErrors:d,rootSchemaErrors:d,schemaMode:p,onValidate:m,overrides:g}):je(a)&&(S.value=Ye({rulesDef:a,state:o,customMessages:c?.(),storage:_,options:i,rootInitialState:e,externalErrors:C.externalErrors,externalIssues:C.externalIssues,initialState:e,originalState:n,shortcuts:u,fieldName:void 0,path:``,cachePath:``,schemaMode:p,schemaErrors:d,onValidate:m,overrides:g}))}function D(){w=void 0}function O(){S.value?.$unwatch(),C.stop()}function k(){v.value||(v.value=!0,x=t(!0),x.run(()=>{C.start(),E(),h(i.disabled)?s().then(()=>{S.value?.$unwatch()}):C.watchOptionRefs(),T()}))}function A(){v.value&&(v.value=!1,O(),w?.(),D(),x?.stop(),x=void 0,S.value=void 0,_.clearAll())}function j(){let e=r();!e||b.has(e)||(v.value||k(),b.add(e),l(()=>{b.delete(e),b.size||A()}))}k(),j();function M(){typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!ge()&&S.value&&De(S.value,{name:h(i.id)})}return M(),{regle:S,bindToCurrentScope:j}}function at({state:t,rulesFactory:n,options:r,globalOptions:o,customRules:s,shortcuts:c,overrides:l}){let u=a(n)?n:typeof n==`function`?void 0:e(()=>n),d=i(me,void 0)??{},m={...d.modifiers,...o},h=()=>({...d.rules?.(),...s?.()}),_={...d.shortcuts,...c},v={...d.overrides,...l},y={...m,...r},x,S=p(u??{});typeof n==`function`&&(x=b(()=>{S.value=n(t),g(S)}));let C=f(k(t.value)?{...z(t.value)}:z(t.value)),w=k(t.value)?{...z(t.value)}:z(t.value);Z(()=>{x?.()});let{regle:T,bindToCurrentScope:E}=it({scopeRules:S,state:t,options:y,initialState:C,originalState:w,customRules:h,shortcuts:_,overrides:v});return{regle:T,bindToCurrentScope:E}}function ot(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s,c){let l=a(t)?t:f(t),u=e(()=>h(c?.disabled)??!1),{regle:d,bindToCurrentScope:p}=at({state:l,rulesFactory:s,options:c,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return{r$:U(d,u,()=>{d.value||p()})}}return s}const st=ot();function ct(){function e(e,t){return t}return e}const lt=ct();function ut(e,t){return A(h(e).$errors,String(t))}function dt(e,t){return A(h(e).$issues,String(t))}function ft(e){let t={};if(Object.entries(e).some(([e,t])=>Me(t)||typeof t==`function`))return null;for(let n in e){let r=e[n];r&&k(r)&&`$each`in r&&r.$each&&k(r.$each)?t[n]=[ft(r.$each)]:k(r)&&!I(r)&&!Object.entries(r).some(([e,t])=>Me(t)||typeof t==`function`)?t[n]=ft(r):t[n]=null}return t}function pt(t){let{rules:n,modifiers:r={},shortcuts:i,overrides:o}=t??{};function s(t,s){let c=a(t)?t:typeof t==`function`?void 0:e(()=>t),l=f(ft(c?.value)),u=e(()=>h(s?.disabled)??!1),{regle:d,bindToCurrentScope:p}=at({state:l,rulesFactory:c,options:s,globalOptions:r,customRules:n,shortcuts:i,overrides:o});return U(d,u,()=>{d.value||p()})}return s}const mt=pt();function ht(e){if(F(e)){let t=e,n=class extends t{constructor(...e){return super(...e),gt(this)}};return Object.defineProperty(n,"name",{value:t.name}),gt(n)}return gt(e)}function gt(e){return!N(e,he.REGLE_STATIC)&&Object.isExtensible(e)&&P(e,he.REGLE_STATIC,!0),e}function _t({rules:e,modifiers:t,shortcuts:n,overrides:r}){let i=ot({rules:e,modifiers:t,shortcuts:n,overrides:r}),a=pt({rules:e,modifiers:t,shortcuts:n,overrides:r});return i.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},a.__config={rules:e,modifiers:t,shortcuts:n,overrides:r},{useRegle:i,inferRules:ct(),useRules:a}}function vt(e,{rules:t,modifiers:n,shortcuts:r,overrides:i}){let a=e.__config??{},o=()=>({...a.rules?.(),...t?.()}),s=a.modifiers&&n?j(a.modifiers,n):a.modifiers??n,c=a.shortcuts&&r?j(a.shortcuts,r):a.shortcuts??r,l=a.overrides&&i?j(a.overrides,i):a.overrides??i,u=ot({rules:o,modifiers:s,shortcuts:c,overrides:l});return u.__config={rules:o,modifiers:s,shortcuts:c,overrides:l},{useRegle:u,inferRules:ct()}}function yt(e){return e}function bt(t,n){let r=n??!1,i=e({get:()=>r?Object.values(t).map(e=>e.$value):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$value])),set:e=>{r||typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$value=n)}}),a=e({get:()=>Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentValue])),set:e=>{typeof e==`object`&&Object.entries(e).forEach(([e,n])=>t[e].$silentValue=n)}}),o=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$dirty)}),s=e(()=>Object.entries(t).some(([e,t])=>t?.$anyDirty)),c=e(()=>Object.entries(t).some(([e,t])=>t?.$invalid)),l=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$correct||t.$anyDirty&&!t.$invalid)}),d=e(()=>Object.entries(t).some(([e,t])=>t?.$error)),f=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$ready)}),p=e(()=>Object.entries(t).some(([e,t])=>t?.$pending)),m=e(()=>r?Object.entries(t).map(([e,t])=>t.$issues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$issues]))),h=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentIssues):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentIssues]))),g=e(()=>r?Object.entries(t).map(([e,t])=>t.$errors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$errors]))),_=e(()=>r?Object.entries(t).map(([e,t])=>t.$silentErrors):Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.$silentErrors]))),v=e(()=>{let e=Object.entries(t);return!!e.length&&e.every(([e,t])=>t?.$edited)}),y=e(()=>Object.entries(t).some(([e,t])=>t?.$anyEdited)),x=e(()=>r?Object.values(t):t);function S(e){Object.values(t).forEach(t=>{t.$reset(e)})}function C(){Object.values(t).forEach(e=>{e.$touch()})}function w(e=!0){return Object.values(t).map(t=>t.$extractDirtyFields(e))}function T(e){Object.values(t).forEach(t=>{t.$setExternalErrors(e)})}function E(e){Object.values(t).forEach(t=>{t.$setExternalIssues(e)})}function D(){Object.values(t).forEach(e=>{e.$clearExternalErrors()})}function O(){Object.values(t).forEach(e=>{e.$clearExternalIssues()})}function k(e){try{return e&&(i.value=e),Object.values(t).every(t=>t.$validateSync(e))}catch{return!1}}async function A(e){try{e&&(i.value=e);let n=i.value;return{valid:(await Promise.allSettled(Object.values(t).map(e=>e.$validate()))).every(e=>e.status===`fulfilled`?e.value.valid===!0:!1),data:n,errors:g.value,issues:m.value}}catch{return{valid:!1,data:i.value,errors:g.value,issues:m.value}}}let j=u({...!r&&{$silentValue:a},$errors:g,$issues:m,$silentIssues:h,$silentErrors:_,$instances:x,$value:i,$output:i,$dirty:o,$anyDirty:s,$invalid:c,$correct:l,$error:d,$pending:p,$ready:f,$edited:v,$anyEdited:y,$reset:S,$touch:C,$validate:A,$validateSync:k,$extractDirtyFields:w,$clearExternalErrors:D,$clearExternalIssues:O,$setExternalErrors:T,$setExternalIssues:E});return b(()=>{if(!r){for(let e of Object.keys(j).filter(e=>!e.startsWith(`$`)&&!e.startsWith(`~`)))delete j[e];for(let[e,t]of Object.entries(x.value))Object.assign(j,{[e]:t})}}),j}function xt(t,n){function r(r){let i=e(()=>h(r)),a=u({});c();let o=f(l(t.value)),s=u({r$:o});function c(){i.value&&(typeof i.value==`string`&&!t.value[i.value]?t.value[i.value]={}:Array.isArray(i.value)&&i.value.forEach(e=>{t.value[e]||(t.value[e]={})}))}y(i,c),y(t,e=>{o.value=l(e)},{deep:!0});function l(e){return i.value?typeof i.value==`string`?bt(e[i.value]??{},!n.asRecord):(Object.keys(a).forEach(e=>{delete a[e]}),i.value.forEach(t=>{Object.entries(e[t]).forEach(([e,t])=>{Object.assign(a,{[e]:t})})}),bt(a,!n.asRecord)):bt(e[`~~global`]??{},!n.asRecord)}return{r$:s.r$}}return{useCollectScope:r}}function St(t,r){let i=r??st;return{useScopedRegle:((r,a,o)=>{let{namespace:s,scopeKey:l,id:u,...d}=o??{};i.__config??={};let p=e(()=>u??l),m=e(()=>h(s)),g=f(`${Object.keys(t.value).length+1}-${X()}`),_=e(()=>p.value??`instance-${g.value}`),{r$:v}=i(r,a,{...d,id:p.value});x(),Z(b),y(m,(e,t)=>{b(t),x()}),n()&&c(()=>{let e=n();typeof window<`u`&&e?.proxy?.$el?.parentElement&&document.documentElement&&!document.documentElement.contains(e?.proxy?.$el?.parentElement)&&b()});function b(e){let n=e??m.value;n?t.value[n]&&delete t.value[n][_.value]:t.value[`~~global`][_.value]&&delete t.value[`~~global`][_.value]}function x(){m.value?(t.value[m.value]||(t.value[m.value]={}),t.value[m.value][_.value]=v):(t.value[`~~global`]||(t.value[`~~global`]={}),t.value[`~~global`][_.value]=v)}return{r$:v,dispose:b,register:x}})}}function Ct(e){let t=(e?.customStore?()=>(e.customStore&&(e.customStore?.value[`~~global`]?e.customStore?.value&&(e.customStore.value={"~~global":{}}):e.customStore.value[`~~global`]={}),e.customStore):ue(()=>f({"~~global":{}})))(),{useScopedRegle:n}=St(t,e?.customUseRegle),{useCollectScope:r}=xt(t,{asRecord:e?.asRecord});return{useScopedRegle:n,useCollectScope:r}}const{useCollectScope:wt,useScopedRegle:Tt}=Ct(),Et=wt,Dt=Tt;function Ot(t,n,r){let i=e(()=>h(t)[n]);return e(()=>r.find(e=>{if(e[n]&&`literal`in e[n]){let t=e[n].literal;if(Me(t))return h(t._params?.[0])===i.value}})||r.find(e=>k(e[n])&&!Object.keys(e[n]).some(e=>e===`literal`))||{})}function kt(e,t,n){return!!e&&t in e&&k(e[t])&&`$value`in e[t]&&e[t]?.$value===n}function At(e,t,n,r){let i=a(e)?m(e.value,`$fields`):m(e,`$fields`),o=f();return y(i,async()=>{await s(),kt(i.value,t,n)?o.value=m(e).value:o.value=void 0},{immediate:!0,flush:`pre`}),o}function jt(e){return e}function Mt(e,t){return n=>j({...e},t(n))}var Nt=`1.28.0-beta.1`;function Pt(e){return typeof e==`function`}function Ft(e,t){return t.filter(t=>t in e&&!Pt(e[t])).map(t=>{let n=!1;return t===`$value`&&(n=!0),{key:t,value:e[t],editable:n}})}function It(e,t){return Object.entries(e).filter(([n])=>!t.includes(n)&&n.startsWith(`$`)&&!Pt(e[n])).map(([e,t])=>({key:e,value:t,editable:!1})).sort((e,t)=>e.key.localeCompare(t.key))}function Lt(e){if(!e.includes(`:field:`))return null;let[t,,n]=e.split(`:`);return{instanceId:t,fieldName:n}}function Rt(e,t){return`${e}:field:${t}`}function zt(e){if(!e.includes(`:rule:`))return null;let t=e.split(`:rule:`);if(t.length!==2)return null;let n=t[0],r=t[1],i=Lt(n);return i?{...i,ruleName:r}:null}function Bt(e,t,n){return`${Rt(e,t)}:rule:${n}`}function Vt(e){let t={},n=Ft(e,be.FIELD);n.length>0&&(t.State=n);let r=It(e,[...be.FIELD,`$rules`,`$fields`,`$modifiers`,`$deepCompare`,`$clearExternalErrorsOnValidate`,`$silent`,`$isArrayOrRegleStatic`,`$schemaMode`,`$immediateDirty`]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Ht(e){let t={},n=[`$type`,`$valid`,`$active`,`$pending`,`$message`,`$tooltip`],r=Ft(e,n);r.length>0&&(t[`Rule State`]=r),e.$params&&Array.isArray(e.$params)&&e.$params.length>0&&(t.Parameters=[{key:`$params`,value:e.$params,editable:!1}]),e.$metadata!==void 0&&e.$metadata!==!0&&e.$metadata!==!1&&(t.Metadata=[{key:`$metadata`,value:e.$metadata,objectType:`reactive`,editable:!1}]);let i=It(e,[...n,`$params`,`$metadata`,`$haveAsync`,`$validating`,`$fieldDirty`,`$fieldInvalid`,`$fieldPending`,`$fieldCorrect`,`$fieldError`,`$maybePending`]);return i.length>0&&(t[`Other Properties`]=i),t}function Ut(e){let t={},n=Ft(e,be.ROOT);n.length>0&&(t.State=n);let r=It(e,[...be.ROOT,`$fields`,`$modifiers`,`$path`,`$clearExternalErrorsOnValidate`,`$silent`]);return r.length>0&&(t[`Other Properties`]=r),e[`~modifiers`]&&(t.Modifiers=Object.entries(e[`~modifiers`]).map(([e,t])=>({key:e,value:t,editable:!1}))),t}function Wt(e,t){if(!e||!t)return null;let n=t.match(/[^.[\]]+/g);if(!n)return null;let r=e;for(let e of n){if(!r)return null;let t=parseInt(e);if(!isNaN(t))if(Ie(r)&&Array.isArray(r.$each))r=r.$each[t];else return null;else if(Ie(r)&&r.$self&&r.$self)r=r.$self;else if(Fe(r)&&r.$fields&&r.$fields[e])r=r.$fields[e];else if(r[e])r=r[e];else return null}return r}function Gt(e,t){let n=zt(e);if(n){let{instanceId:e,fieldName:r,ruleName:i}=n,a=t(e);if(!a||!a.r$.$fields)return null;let o=Wt(a.r$.$fields,r);if(!o||!(`$rules`in o))return null;let s=o.$rules[i];return s?Ht(s):null}let r=Lt(e);if(r){let{instanceId:e,fieldName:n}=r,i=t(e);if(!i||!i.r$.$fields)return null;let a=Wt(i.r$.$fields,n);return a?Vt(a):null}let i=t(e);return i?Ut(i.r$):null}function Kt(e){if(e.includes(`:rule:`))return;let t=Lt(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Wt(r.r$.$fields,n);e&&typeof e.$validate==`function`&&e.$validate()}}else{let t=$.get(e);t&&typeof t.r$.$validate==`function`&&t.r$.$validate()}$.notifyDevtools()}function qt(e,t=!1){let n=Lt(e);if(n){let{instanceId:e,fieldName:r}=n,i=$.get(e);if(i&&i.r$.$fields){let e=Wt(i.r$.$fields,r);e&&typeof e.$reset==`function`&&e.$reset({toOriginalState:t})}}else{let n=$.get(e);n&&typeof n.r$.$reset==`function`&&n.r$.$reset({toOriginalState:t})}$.notifyDevtools()}function Jt(e){if(e.includes(`:rule:`))return;let t=Lt(e);if(t){let{instanceId:e,fieldName:n}=t,r=$.get(e);if(r&&r.r$.$fields){let e=Wt(r.r$.$fields,n);e&&typeof e.$touch==`function`&&e.$touch()}}else{let t=$.get(e);t&&typeof t.r$.$touch==`function`&&t.r$.$touch()}$.notifyDevtools()}function Yt(e){let{nodeId:t,path:n,state:r}=e;if(!n.includes(`$value`)||!Lt(t))return;let[i,a,o]=t?.split(`:`)??[],s=$.get(i);if(s&&s.r$.$fields){let e=Wt(s.r$.$fields,o);e&&`$value`in e&&(e.$value=r.value,$.notifyDevtools())}}function Xt(e,t){let n=[],r=!1;Le(e)?r=e[`~modifiers`]?.$disabled??!1:Fe(e)?r=e[`~modifiers`]?.disabled??!1:Ie(e)&&(r=e[`~modifiers`]?.$disabled??!1);let i=Le(e)?(`required`in e.$rules&&!e.$rules.required.$active||I(e.$rules))&&!e.$schemaMode:!1,a=Fe(e)||Ie(e);return e.$error?n.push({label:`error`,textColor:Q.ERROR.text,backgroundColor:Q.ERROR.bg,tooltip:a?ve.ERROR:_e.ERROR}):e.$correct&&n.push({label:`correct`,textColor:Q.CORRECT.text,backgroundColor:Q.CORRECT.bg,tooltip:a?ve.CORRECT:_e.CORRECT}),e.$pending&&n.push({label:`pending`,textColor:Q.PENDING.text,backgroundColor:Q.PENDING.bg,tooltip:a?ve.PENDING:_e.PENDING}),r&&n.push({label:`disabled`,textColor:Q.DISABLED.text,backgroundColor:Q.DISABLED.bg,tooltip:_e.DISABLED}),i&&(n.push({label:`optional`,textColor:Q.OPTIONAL.text,backgroundColor:Q.OPTIONAL.bg,tooltip:_e.OPTIONAL}),!e.$invalid&&e.$dirty&&n.push({label:`valid`,textColor:Q.VALID.text,backgroundColor:Q.VALID.bg,tooltip:_e.VALID})),e.$dirty?n.push({label:`dirty`,textColor:Q.DIRTY.text,backgroundColor:Q.DIRTY.bg,tooltip:a?ve.DIRTY:_e.DIRTY}):i||n.push({label:`pristine`,textColor:Q.PRISTINE.text,backgroundColor:Q.PRISTINE.bg,tooltip:_e.PRISTINE}),t&&n.push({label:`<${t}.vue>`,textColor:Q.COMPONENT.text,backgroundColor:Q.COMPONENT.bg}),n}function Zt(e){let t=[];return e.$active?e.$valid?e.$valid&&t.push({label:`valid`,textColor:Q.VALID.text,backgroundColor:Q.VALID.bg,tooltip:ye.VALID}):t.push({label:`invalid`,textColor:Q.INVALID.text,backgroundColor:Q.INVALID.bg,tooltip:ye.INVALID}):t.push({label:`inactive`,textColor:Q.INACTIVE.text,backgroundColor:Q.INACTIVE.bg,tooltip:ye.INACTIVE}),e.$pending&&t.push({label:`pending`,textColor:Q.PENDING.text,backgroundColor:Q.PENDING.bg,tooltip:ye.PENDING}),t}function Qt(e,t,n){let r=[];return!e.$rules||typeof e.$rules!=`object`||Object.entries(e.$rules).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=Zt(i);r.push({id:Bt(t,n,e),label:`⚙️ ${e}`,tags:a,children:[]})}}),r}function $t(e,t,n){let r=[];if(!e.$each||!Array.isArray(e.$each))return r;if(e.$each.forEach((e,i)=>{if(e&&typeof e==`object`){let a=Xt(e),o=`${n}[${i}]`,s=[];Fe(e)?s=en(e.$fields,t,o):Le(e)&&(s=Qt(e,t,o)),r.push({id:Rt(t,o),label:`[${i}]`,tags:a,children:s})}}),e.$self&&typeof e.$self==`object`){let i=Xt(e.$self),a=`${n}[$self]`;r.unshift({id:Rt(t,a),label:`$self`,tags:i,children:Qt(e.$self,t,a)})}return r}function en(e,t,n){let r=[];return Object.entries(e).forEach(([e,i])=>{if(i&&typeof i==`object`){let a=n?`${n}.${e}`:e,o=Xt(i),s=!1,c=!1,l=[];Ie(i)?(l=$t(i,t,a),s=!0,l.length===0&&(c=!0)):Fe(i)?l=en({...i.$fields,...i.$self&&{$self:i.$self}},t,a):Le(i)&&(l=Qt(i,t,a));let u=l.filter(e=>e.label!==`$self`);r.push({id:Rt(t,a),label:`${s?`${e}[${u.length}]`:e}${c?` (empty)`:``}`,tags:o,children:l})}}),r}function tn(e,t){let n=[];return Le(e)?Qt(e,t,`root`):(!(`$fields`in e)||typeof e.$fields!=`object`||Object.entries(e.$fields).forEach(([e,r])=>{if(r&&typeof r==`object`){let i=Xt(r),a=[],o=!1;Ie(r)?(a=$t(r,t,e),o=!0):Fe(r)?a=en({...r.$fields,...r.$self&&{$self:r.$self}},t,e):Le(r)&&(a=Qt(r,t,e));let s=a.filter(e=>e.label!==`$self`);n.push({id:Rt(t,e),label:`${o?`${e}[${s.length}]`:e}`,tags:i,children:a})}}),n)}function nn(e,t){let n=e.map(e=>{let{r$:t,id:n,name:r,componentName:i}=e;return{id:n,label:r,tags:Xt(t,i),children:tn(t,n)}});return!t||t.trim()===``?n:rn(n,t)}function rn(e,t){let n=t.toLowerCase(),r=[];for(let i of e){let e=i.label.toLowerCase().includes(n),a=i.tags?.some(e=>e.label.toLowerCase().includes(n))??!1,o=i.children?rn(i.children,t):[];(e||a||o.length>0)&&r.push({...i,children:o.length>0?o:i.children})}return r}function an(e){D({id:`regle-devtools`,label:`Regle`,logo:`https://reglejs.dev/logo_main.png`,packageName:`@regle/core`,homepage:`https://reglejs.dev`,componentStateTypes:[`Regles`],app:e},t=>{$.setApi(t,e),t.on.getInspectorTree(async e=>{if(e.inspectorId===xe.INSPECTOR){let t=nn($.getAll(),e.filter);t.length>0?e.rootNodes=t:e.rootNodes=[{id:`empty-regles`,label:`No Regles instances found`,children:[]}]}}),t.on.getInspectorState(e=>{if(e.inspectorId===xe.INSPECTOR){let n=Gt(e.nodeId,e=>$.get(e));n||t.sendInspectorTree(xe.INSPECTOR),n?e.state=n:e.state={}}}),t.on.editInspectorState(e=>{e.inspectorId===xe.INSPECTOR&&Yt(e)}),t.addInspector({id:xe.INSPECTOR,label:`Regle`,noSelectionText:`No instance selected`,icon:`rule`,treeFilterPlaceholder:`Filter state`,stateFilterPlaceholder:`Filter validation status`,actions:[{icon:`confirmation_number`,tooltip:`Log Regle version`,action:()=>{console.info(`Regle version`,Nt)}}],nodeActions:[{icon:`check`,tooltip:`Validate`,action:e=>{Kt(e)}},{icon:`touch_app`,action:e=>{Jt(e)},tooltip:`Touch the instance with $touch`},{icon:`refresh`,tooltip:`Reset validation state`,action:e=>{qt(e)}},{icon:`restore`,tooltip:`Restore to original state`,action:e=>{qt(e,!0)}}]}),E(()=>{$.notifyDevtools()}),$.notifyDevtools()})}const on={install(e,t){e.provide(pe,Nt),t&&e.provide(me,t),typeof window<`u`&&typeof __VUE_PROD_DEVTOOLS__<`u`&&__VUE_PROD_DEVTOOLS__&&!ge()&&an(e)}};export{W as InternalRuleType,on as RegleVuePlugin,re as createRule,Ct as createScopedUseRegle,Ot as createVariant,_t as defineRegleConfig,yt as defineRegleOptions,jt as defineRules,vt as extendRegleConfig,Ve as flatErrors,ut as getErrors,dt as getIssues,lt as inferRules,Y as isRegleInstance,ht as markStatic,bt as mergeRegles,kt as narrowVariant,Mt as refineRules,G as unwrapRuleParameters,Et as useCollectScope,st as useRegle,it as useRootStorage,mt as useRules,Dt as useScopedRegle,At as variantToRef};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.28.0-beta.1",
|
|
4
4
|
"description": "Headless form validation library for Vue",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"regle",
|
|
@@ -50,19 +50,19 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@standard-schema/spec": "1.1.0",
|
|
52
52
|
"@vue/devtools-api": "7.7.9",
|
|
53
|
+
"@vue/devtools-kit": "7.7.9",
|
|
53
54
|
"type-fest": "5.7.0"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
56
57
|
"@total-typescript/ts-reset": "0.6.1",
|
|
57
|
-
"@types/node": "24.
|
|
58
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
59
|
-
"@vue/
|
|
60
|
-
"
|
|
61
|
-
"tsdown": "0.22.1",
|
|
58
|
+
"@types/node": "24.13.2",
|
|
59
|
+
"@typescript/native-preview": "7.0.0-dev.20260616.1",
|
|
60
|
+
"@vue/test-utils": "2.4.11",
|
|
61
|
+
"tsdown": "0.22.2",
|
|
62
62
|
"typescript": "6.0.3",
|
|
63
63
|
"vitest": "4.1.8",
|
|
64
64
|
"vue": "3.5.35",
|
|
65
|
-
"vue-tsc": "3.3.
|
|
65
|
+
"vue-tsc": "3.3.5"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
68
|
"pinia": ">=2.2.5",
|