@aerogel/core 0.0.0-next.88c59e62f64db70aedfbc4c31b5bbc287be44483 → 0.0.0-next.9487bb13082b9d479112445804d906125ded5cbc
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/aerogel-core.cjs.js +1 -1
- package/dist/aerogel-core.cjs.js.map +1 -1
- package/dist/aerogel-core.d.ts +203 -21
- package/dist/aerogel-core.esm.js +1 -1
- package/dist/aerogel-core.esm.js.map +1 -1
- package/histoire.config.ts +7 -0
- package/package.json +5 -2
- package/postcss.config.js +6 -0
- package/src/assets/histoire.css +3 -0
- package/src/components/forms/AGSelect.story.vue +28 -0
- package/src/components/forms/AGSelect.vue +53 -0
- package/src/components/forms/index.ts +1 -0
- package/src/components/headless/forms/AGHeadlessInput.vue +3 -3
- package/src/components/headless/forms/AGHeadlessSelect.ts +19 -7
- package/src/components/headless/forms/AGHeadlessSelect.vue +56 -24
- package/src/components/headless/forms/AGHeadlessSelectButton.vue +24 -0
- package/src/components/headless/forms/AGHeadlessSelectError.vue +26 -0
- package/src/components/headless/forms/AGHeadlessSelectLabel.vue +21 -0
- package/src/components/headless/forms/AGHeadlessSelectOption.ts +0 -4
- package/src/components/headless/forms/AGHeadlessSelectOption.vue +39 -0
- package/src/components/headless/forms/index.ts +5 -3
- package/src/forms/Form.ts +8 -3
- package/src/main.histoire.ts +1 -0
- package/src/utils/vue.ts +1 -1
- package/tailwind.config.js +4 -0
- package/src/components/headless/forms/AGHeadlessSelectButton.ts +0 -3
- package/src/components/headless/forms/AGHeadlessSelectLabel.ts +0 -3
package/dist/aerogel-core.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { ListboxButton as AGHeadlessSelectButton } from '@headlessui/vue';
|
|
2
|
-
import { ListboxLabel as AGHeadlessSelectLabel } from '@headlessui/vue';
|
|
3
|
-
import { ListboxOption as AGHeadlessSelectOption } from '@headlessui/vue';
|
|
4
1
|
import { ListboxOptions as AGHeadlessSelectOptions } from '@headlessui/vue';
|
|
5
2
|
import { AllowedComponentProps } from 'vue';
|
|
6
3
|
import type { App as App_2 } from 'vue';
|
|
@@ -454,11 +451,23 @@ as: string;
|
|
|
454
451
|
|
|
455
452
|
export declare const AGHeadlessSelect: DefineComponent< {
|
|
456
453
|
options: {
|
|
457
|
-
type?: PropType<
|
|
454
|
+
type?: PropType<IAGSelectOptionValue[]> | undefined;
|
|
458
455
|
validator?(value: unknown): boolean;
|
|
459
456
|
} & {
|
|
460
457
|
required: true;
|
|
461
458
|
};
|
|
459
|
+
label: {
|
|
460
|
+
type?: PropType<string | null> | undefined;
|
|
461
|
+
validator?(value: unknown): boolean;
|
|
462
|
+
} & {
|
|
463
|
+
default: string | (() => string | null) | null;
|
|
464
|
+
};
|
|
465
|
+
noSelectionText: {
|
|
466
|
+
type?: PropType<string | null> | undefined;
|
|
467
|
+
validator?(value: unknown): boolean;
|
|
468
|
+
} & {
|
|
469
|
+
default: string | (() => string | null) | null;
|
|
470
|
+
};
|
|
462
471
|
name: {
|
|
463
472
|
type?: PropType<string | null> | undefined;
|
|
464
473
|
validator?(value: unknown): boolean;
|
|
@@ -466,20 +475,32 @@ validator?(value: unknown): boolean;
|
|
|
466
475
|
default: string | (() => string | null) | null;
|
|
467
476
|
};
|
|
468
477
|
modelValue: {
|
|
469
|
-
type?: PropType<
|
|
478
|
+
type?: PropType<IAGSelectOptionValue> | undefined;
|
|
470
479
|
validator?(value: unknown): boolean;
|
|
471
480
|
} & {
|
|
472
|
-
default:
|
|
481
|
+
default: IAGSelectOptionValue | (() => IAGSelectOptionValue);
|
|
473
482
|
};
|
|
474
483
|
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
475
484
|
[key: string]: any;
|
|
476
485
|
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
477
486
|
options: {
|
|
478
|
-
type?: PropType<
|
|
487
|
+
type?: PropType<IAGSelectOptionValue[]> | undefined;
|
|
479
488
|
validator?(value: unknown): boolean;
|
|
480
489
|
} & {
|
|
481
490
|
required: true;
|
|
482
491
|
};
|
|
492
|
+
label: {
|
|
493
|
+
type?: PropType<string | null> | undefined;
|
|
494
|
+
validator?(value: unknown): boolean;
|
|
495
|
+
} & {
|
|
496
|
+
default: string | (() => string | null) | null;
|
|
497
|
+
};
|
|
498
|
+
noSelectionText: {
|
|
499
|
+
type?: PropType<string | null> | undefined;
|
|
500
|
+
validator?(value: unknown): boolean;
|
|
501
|
+
} & {
|
|
502
|
+
default: string | (() => string | null) | null;
|
|
503
|
+
};
|
|
483
504
|
name: {
|
|
484
505
|
type?: PropType<string | null> | undefined;
|
|
485
506
|
validator?(value: unknown): boolean;
|
|
@@ -487,23 +508,118 @@ validator?(value: unknown): boolean;
|
|
|
487
508
|
default: string | (() => string | null) | null;
|
|
488
509
|
};
|
|
489
510
|
modelValue: {
|
|
490
|
-
type?: PropType<
|
|
511
|
+
type?: PropType<IAGSelectOptionValue> | undefined;
|
|
491
512
|
validator?(value: unknown): boolean;
|
|
492
513
|
} & {
|
|
493
|
-
default:
|
|
514
|
+
default: IAGSelectOptionValue | (() => IAGSelectOptionValue);
|
|
494
515
|
};
|
|
495
516
|
}>> & {
|
|
496
517
|
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
497
518
|
}, {
|
|
498
519
|
name: string | null;
|
|
499
|
-
modelValue:
|
|
520
|
+
modelValue: IAGSelectOptionValue;
|
|
521
|
+
label: string | null;
|
|
522
|
+
noSelectionText: string | null;
|
|
500
523
|
}, {}>;
|
|
501
524
|
|
|
502
|
-
export
|
|
525
|
+
export declare const AGHeadlessSelectButton: DefineComponent< {
|
|
526
|
+
textClass: {
|
|
527
|
+
type?: PropType<string | null> | undefined;
|
|
528
|
+
validator?(value: unknown): boolean;
|
|
529
|
+
} & {
|
|
530
|
+
default: string | (() => string | null) | null;
|
|
531
|
+
};
|
|
532
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
533
|
+
[key: string]: any;
|
|
534
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
535
|
+
textClass: {
|
|
536
|
+
type?: PropType<string | null> | undefined;
|
|
537
|
+
validator?(value: unknown): boolean;
|
|
538
|
+
} & {
|
|
539
|
+
default: string | (() => string | null) | null;
|
|
540
|
+
};
|
|
541
|
+
}>>, {
|
|
542
|
+
textClass: string | null;
|
|
543
|
+
}, {}>;
|
|
503
544
|
|
|
504
|
-
export {
|
|
545
|
+
export declare const AGHeadlessSelectError: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
546
|
+
[key: string]: any;
|
|
547
|
+
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
505
548
|
|
|
506
|
-
export {
|
|
549
|
+
export declare const AGHeadlessSelectLabel: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
550
|
+
[key: string]: any;
|
|
551
|
+
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
552
|
+
|
|
553
|
+
export declare const AGHeadlessSelectOption: DefineComponent< {
|
|
554
|
+
value: {
|
|
555
|
+
type?: PropType<IAGSelectOptionValue> | undefined;
|
|
556
|
+
validator?(value: unknown): boolean;
|
|
557
|
+
} & {
|
|
558
|
+
required: true;
|
|
559
|
+
};
|
|
560
|
+
selectedClass: {
|
|
561
|
+
type?: PropType<string | null> | undefined;
|
|
562
|
+
validator?(value: unknown): boolean;
|
|
563
|
+
} & {
|
|
564
|
+
default: string | (() => string | null) | null;
|
|
565
|
+
};
|
|
566
|
+
unselectedClass: {
|
|
567
|
+
type?: PropType<string | null> | undefined;
|
|
568
|
+
validator?(value: unknown): boolean;
|
|
569
|
+
} & {
|
|
570
|
+
default: string | (() => string | null) | null;
|
|
571
|
+
};
|
|
572
|
+
activeClass: {
|
|
573
|
+
type?: PropType<string | null> | undefined;
|
|
574
|
+
validator?(value: unknown): boolean;
|
|
575
|
+
} & {
|
|
576
|
+
default: string | (() => string | null) | null;
|
|
577
|
+
};
|
|
578
|
+
inactiveClass: {
|
|
579
|
+
type?: PropType<string | null> | undefined;
|
|
580
|
+
validator?(value: unknown): boolean;
|
|
581
|
+
} & {
|
|
582
|
+
default: string | (() => string | null) | null;
|
|
583
|
+
};
|
|
584
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
585
|
+
[key: string]: any;
|
|
586
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
587
|
+
value: {
|
|
588
|
+
type?: PropType<IAGSelectOptionValue> | undefined;
|
|
589
|
+
validator?(value: unknown): boolean;
|
|
590
|
+
} & {
|
|
591
|
+
required: true;
|
|
592
|
+
};
|
|
593
|
+
selectedClass: {
|
|
594
|
+
type?: PropType<string | null> | undefined;
|
|
595
|
+
validator?(value: unknown): boolean;
|
|
596
|
+
} & {
|
|
597
|
+
default: string | (() => string | null) | null;
|
|
598
|
+
};
|
|
599
|
+
unselectedClass: {
|
|
600
|
+
type?: PropType<string | null> | undefined;
|
|
601
|
+
validator?(value: unknown): boolean;
|
|
602
|
+
} & {
|
|
603
|
+
default: string | (() => string | null) | null;
|
|
604
|
+
};
|
|
605
|
+
activeClass: {
|
|
606
|
+
type?: PropType<string | null> | undefined;
|
|
607
|
+
validator?(value: unknown): boolean;
|
|
608
|
+
} & {
|
|
609
|
+
default: string | (() => string | null) | null;
|
|
610
|
+
};
|
|
611
|
+
inactiveClass: {
|
|
612
|
+
type?: PropType<string | null> | undefined;
|
|
613
|
+
validator?(value: unknown): boolean;
|
|
614
|
+
} & {
|
|
615
|
+
default: string | (() => string | null) | null;
|
|
616
|
+
};
|
|
617
|
+
}>>, {
|
|
618
|
+
selectedClass: string | null;
|
|
619
|
+
unselectedClass: string | null;
|
|
620
|
+
activeClass: string | null;
|
|
621
|
+
inactiveClass: string | null;
|
|
622
|
+
}, {}>;
|
|
507
623
|
|
|
508
624
|
export { AGHeadlessSelectOptions }
|
|
509
625
|
|
|
@@ -681,6 +797,51 @@ export declare const AGModalTitle: DefineComponent< {}, (_ctx: any, _cache: a
|
|
|
681
797
|
[key: string]: any;
|
|
682
798
|
}>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
|
|
683
799
|
|
|
800
|
+
export declare const AGSelect: DefineComponent< {
|
|
801
|
+
options: {
|
|
802
|
+
type?: PropType<IAGSelectOptionValue[]> | undefined;
|
|
803
|
+
validator?(value: unknown): boolean;
|
|
804
|
+
} & {
|
|
805
|
+
required: true;
|
|
806
|
+
};
|
|
807
|
+
label: {
|
|
808
|
+
type?: PropType<string | null> | undefined;
|
|
809
|
+
validator?(value: unknown): boolean;
|
|
810
|
+
} & {
|
|
811
|
+
default: string | (() => string | null) | null;
|
|
812
|
+
};
|
|
813
|
+
noSelectionText: {
|
|
814
|
+
type?: PropType<string | null> | undefined;
|
|
815
|
+
validator?(value: unknown): boolean;
|
|
816
|
+
} & {
|
|
817
|
+
default: string | (() => string | null) | null;
|
|
818
|
+
};
|
|
819
|
+
}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
|
|
820
|
+
[key: string]: any;
|
|
821
|
+
}>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
|
|
822
|
+
options: {
|
|
823
|
+
type?: PropType<IAGSelectOptionValue[]> | undefined;
|
|
824
|
+
validator?(value: unknown): boolean;
|
|
825
|
+
} & {
|
|
826
|
+
required: true;
|
|
827
|
+
};
|
|
828
|
+
label: {
|
|
829
|
+
type?: PropType<string | null> | undefined;
|
|
830
|
+
validator?(value: unknown): boolean;
|
|
831
|
+
} & {
|
|
832
|
+
default: string | (() => string | null) | null;
|
|
833
|
+
};
|
|
834
|
+
noSelectionText: {
|
|
835
|
+
type?: PropType<string | null> | undefined;
|
|
836
|
+
validator?(value: unknown): boolean;
|
|
837
|
+
} & {
|
|
838
|
+
default: string | (() => string | null) | null;
|
|
839
|
+
};
|
|
840
|
+
}>>, {
|
|
841
|
+
label: string | null;
|
|
842
|
+
noSelectionText: string | null;
|
|
843
|
+
}, {}>;
|
|
844
|
+
|
|
684
845
|
export declare const AGSnackbar: DefineComponent< {
|
|
685
846
|
id: {
|
|
686
847
|
type?: PropType<string> | undefined;
|
|
@@ -937,7 +1098,6 @@ declare class Form<Fields extends FormFieldDefinitions = FormFieldDefinitions> e
|
|
|
937
1098
|
errors: DeepReadonly<UnwrapNestedRefs<FormErrors<Fields>>>;
|
|
938
1099
|
private _fields;
|
|
939
1100
|
private _data;
|
|
940
|
-
private _valid;
|
|
941
1101
|
private _submitted;
|
|
942
1102
|
private _errors;
|
|
943
1103
|
constructor(fields: Fields);
|
|
@@ -1007,9 +1167,14 @@ export declare interface IAGHeadlessModal extends IAGModal {
|
|
|
1007
1167
|
}
|
|
1008
1168
|
|
|
1009
1169
|
export declare interface IAGHeadlessSelect {
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1170
|
+
id: string;
|
|
1171
|
+
label: ComputedRef<string | null>;
|
|
1172
|
+
noSelectionText: ComputedRef<string>;
|
|
1173
|
+
buttonText: ComputedRef<string>;
|
|
1174
|
+
selectedOption: ComputedRef<IAGSelectOption | undefined>;
|
|
1175
|
+
options: ComputedRef<IAGSelectOption[]>;
|
|
1176
|
+
errors: DeepReadonly<Ref<string[] | null>>;
|
|
1177
|
+
update(value: IAGSelectOptionValue): void;
|
|
1013
1178
|
}
|
|
1014
1179
|
|
|
1015
1180
|
export declare type IAGHeadlessSelectOptionSlotProps = {
|
|
@@ -1031,6 +1196,13 @@ export declare interface IAGModalSlotProps {
|
|
|
1031
1196
|
close(result?: unknown): Promise<void>;
|
|
1032
1197
|
}
|
|
1033
1198
|
|
|
1199
|
+
export declare interface IAGSelectOption {
|
|
1200
|
+
value: string | number | boolean | object | null;
|
|
1201
|
+
text: string;
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
export declare type IAGSelectOptionValue = string | number | boolean | object | null;
|
|
1205
|
+
|
|
1034
1206
|
export declare function injectOrFail<T>(key: InjectionKey<T> | string, errorMessage?: string): T;
|
|
1035
1207
|
|
|
1036
1208
|
export declare function injectReactive<T extends object>(key: InjectionKey<T> | string): UnwrapNestedRefs<T> | undefined;
|
|
@@ -1101,7 +1273,7 @@ export declare function requiredBooleanInput(defaultValue?: boolean): FormFieldD
|
|
|
1101
1273
|
|
|
1102
1274
|
export declare function requiredEnumProp<Enum extends Record<string, unknown>>(enumeration: Enum): RequiredProp<Enum[keyof Enum]>;
|
|
1103
1275
|
|
|
1104
|
-
export declare function requiredMixedProp<T>(type
|
|
1276
|
+
export declare function requiredMixedProp<T>(type?: PropType<T>): RequiredProp<T>;
|
|
1105
1277
|
|
|
1106
1278
|
export declare function requiredNumberInput(defaultValue?: number): FormFieldDefinition<typeof FormFieldTypes.Number, 'required'>;
|
|
1107
1279
|
|
|
@@ -1117,15 +1289,25 @@ export declare function requiredStringInput(defaultValue?: string): FormFieldDef
|
|
|
1117
1289
|
|
|
1118
1290
|
export declare function requiredStringProp(): RequiredProp<string>;
|
|
1119
1291
|
|
|
1120
|
-
export declare type SelectOptionValue = string | number | boolean | object | null;
|
|
1121
|
-
|
|
1122
1292
|
export declare const selectProps: {
|
|
1123
1293
|
options: {
|
|
1124
|
-
type?: PropType<
|
|
1294
|
+
type?: PropType<IAGSelectOptionValue[]> | undefined;
|
|
1125
1295
|
validator?(value: unknown): boolean;
|
|
1126
1296
|
} & {
|
|
1127
1297
|
required: true;
|
|
1128
1298
|
};
|
|
1299
|
+
label: {
|
|
1300
|
+
type?: PropType<string | null> | undefined;
|
|
1301
|
+
validator?(value: unknown): boolean;
|
|
1302
|
+
} & {
|
|
1303
|
+
default: string | (() => string | null) | null;
|
|
1304
|
+
};
|
|
1305
|
+
noSelectionText: {
|
|
1306
|
+
type?: PropType<string | null> | undefined;
|
|
1307
|
+
validator?(value: unknown): boolean;
|
|
1308
|
+
} & {
|
|
1309
|
+
default: string | (() => string | null) | null;
|
|
1310
|
+
};
|
|
1129
1311
|
};
|
|
1130
1312
|
|
|
1131
1313
|
export declare class Service<State extends ServiceState = DefaultServiceState, ComputedState extends ServiceState = {}, ServiceStorage extends Partial<State> = Partial<State>> extends MagicObject {
|
package/dist/aerogel-core.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ref as e,inject as t,reactive as r,markRaw as s,nextTick as o,onUnmounted as n,useAttrs as a,computed as l,onMounted as i,defineComponent as u,toRef as c,openBlock as d,createBlock as p,unref as m,withCtx as f,renderSlot as h,provide as v,resolveDynamicComponent as g,normalizeProps as _,guardReactiveProps as b,createElementBlock as y,Fragment as x,createVNode as A,createCommentVNode as w,createElementVNode as k,mergeProps as G,h as j,normalizeClass as S,createTextVNode as M,toDisplayString as $,renderList as C,readonly as E,createApp as H,withModifiers as I}from"vue";import"core-js/modules/esnext.async-iterator.reduce.js";import"core-js/modules/esnext.iterator.constructor.js";import"core-js/modules/esnext.iterator.reduce.js";import"core-js/modules/esnext.async-iterator.map.js";import"core-js/modules/esnext.iterator.map.js";import{JSError as L,MagicObject as R,PromisedValue as O,objectOnly as P,isEmpty as B,Storage as V,objectDeepClone as q,facade as D,arr as T,tap as z,fail as U,uuid as F,toString as N,isObject as K,objectWithoutEmpty as Q,objectWithout as W,noop as Z,stringExcerpt as Y}from"@noeldemartin/utils";import J from"@babel/runtime/helpers/esm/defineProperty";import"core-js/modules/esnext.set.add-all.js";import"core-js/modules/esnext.set.delete-all.js";import"core-js/modules/esnext.set.difference.js";import"core-js/modules/esnext.set.every.js";import"core-js/modules/esnext.set.filter.js";import"core-js/modules/esnext.set.find.js";import"core-js/modules/esnext.set.intersection.js";import"core-js/modules/esnext.set.is-disjoint-from.js";import"core-js/modules/esnext.set.is-subset-of.js";import"core-js/modules/esnext.set.is-superset-of.js";import"core-js/modules/esnext.set.join.js";import"core-js/modules/esnext.set.map.js";import"core-js/modules/esnext.set.reduce.js";import"core-js/modules/esnext.set.some.js";import"core-js/modules/esnext.set.symmetric-difference.js";import"core-js/modules/esnext.set.union.js";import{defineStore as X,createPinia as ee,setActivePinia as te}from"pinia";import re from"virtual:aerogel";import"core-js/modules/esnext.async-iterator.filter.js";import"core-js/modules/esnext.iterator.filter.js";import"core-js/modules/esnext.string.at.js";import"core-js/modules/esnext.async-iterator.some.js";import"core-js/modules/esnext.iterator.some.js";import"core-js/modules/esnext.async-iterator.for-each.js";import"core-js/modules/esnext.iterator.for-each.js";import{Dialog as se,DialogPanel as oe,Listbox as ne,DialogTitle as ae}from"@headlessui/vue";export{ListboxButton as AGHeadlessSelectButton,ListboxLabel as AGHeadlessSelectLabel,ListboxOption as AGHeadlessSelectOption,ListboxOptions as AGHeadlessSelectOptions}from"@headlessui/vue";import le from"dompurify";import{marked as ie,Renderer as ue}from"marked";class ServiceBootError extends L{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}let ce=null;function de(){return ce||(ce=ee(),te(ce)),ce}function pe(e){var t;return J(t=class extends me{usesStore(){return!0}getName(){return e.name??null}getInitialState(){return e.initialState}getComputedStateDefinition(){return e.computed??{}}serializePersistedState(t){return e.serialize?.(t)??t}},"persist",e.persist??[]),t}class me extends R{constructor(){super(),J(this,"_name",void 0),J(this,"_booted",void 0),J(this,"_computedStateKeys",void 0),J(this,"_store",void 0);const e=this.getComputedStateDefinition();var t,r;this._name=this.getName()??new.target.name,this._booted=new O,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&(t=this._name,r={state:()=>this.getInitialState(),getters:e},de(),X(t,r)())}get booted(){return this._booted}launch(){const handleError=e=>this._booted.reject(new ServiceBootError(this._name,e));try{this.frameworkBoot().then((()=>this.boot())).then((()=>this._booted.resolve())).catch(handleError)}catch(e){handleError(e)}return this._booted}hasState(e){return!!this._store&&(e in this._store.$state||this._computedStateKeys.has(e))}getState(e){const t=this._store;return e?t?t[e]:void 0:t||{}}setState(e,t){if(!this._store)return;const r="string"==typeof e?{[e]:t}:e;Object.assign(this._store.$state,r),this.onStateUpdated(r)}__get(e){return this.hasState(e)?this.getState(e):super.__get(e)}__set(e,t){this.setState({[e]:t})}onStateUpdated(e){const t=this.constructor.persist,r=P(e,t);if(B(r))return;const s=V.require(this._name);V.set(this._name,{...s,...this.serializePersistedState(q(r))})}usesStore(){return!1}getName(){return null}getInitialState(){return{}}getComputedStateDefinition(){return{}}serializePersistedState(e){return e}async frameworkBoot(){this.restorePersistedState()}async boot(){}restorePersistedState(){const e=this.constructor.persist;if(this.usesStore()&&!B(e))if(V.has(this._name)){const e=V.require(this._name);this.setState(e)}else V.set(this._name,P(this.getState(),e))}}J(me,"persist",[]);class fe extends me{constructor(){super(...arguments),J(this,"listeners",{})}async emit(e,t){const r=[...this.listeners[e]??[]];await Promise.all(r.map((e=>e(t)))??[])}on(e,t){return(this.listeners[e]??=T([])).push(t),()=>this.off(e,t)}once(e,t){let r=null;return z((()=>r&&this.off(e,r)),(s=>{(this.listeners[e]??=T([])).push(r=function(){return s(),t(...arguments)})}))}off(e,t){const r=this.listeners[e];r&&(r.remove(t),r.isEmpty()&&delete this.listeners[e])}}var he=D(new fe),ve=pe({name:"app",initialState:{plugins:{},environment:re.environment,sourceUrl:re.sourceUrl,isMounted:!1},computed:{development:e=>"development"===e.environment,testing:e=>"testing"===e.environment}});class ge extends ve{plugin(e){return this.plugins[e]??null}async boot(){he.once("application-mounted",(()=>this.setState({isMounted:!0})))}}var _e=D(new ge);function be(e){return e}async function ye(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];_e.setState("plugins",e.reduce(((e,t)=>(t.name&&(e[t.name]=t),e)),{})),await Promise.all(e.map((e=>e.install(...r)))??[])}function xe(e){return{type:Array,default:e??(()=>[])}}function Ae(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function we(){return e()}function ke(e){return e}function Ge(e,t){const r=Object.values(e);return{type:String,default:t??r[0]??null,validator:e=>r.includes(e)}}function je(e){const s=t(e);return s?r(s):void 0}function Se(e,t){return je(e)??U(t??`Could not resolve '${e}' injection key`)}function Me(e,r){return t(e)??U(r??`Could not resolve '${e}' injection key`)}function $e(e){return{type:e,default:null}}function Ce(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function Ee(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function He(){return{type:Array,required:!0}}function Ie(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}}function Le(e){return{type:e,required:!0}}function Re(){return{type:Number,required:!0}}function Oe(){return{type:Object,required:!0}}function Pe(){return{type:String,required:!0}}function Be(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}const Ve={"initial-focus":{mounted(e,t){let{value:r}=t;!1!==r&&e.focus()}}};var qe={install(e,t){const r={...Ve,...t.directives};for(const[t,s]of Object.entries(r))e.directive(t,s)}};const De={$app:_e,$events:he};async function Te(e,t){await Promise.all(Object.entries(t).map((async t=>{let[r,s]=t;await s.launch().catch((t=>e.config.errorHandler?.(t,null,`Failed launching ${r}.`)))}))),Object.assign(e.config.globalProperties,t),_e.development&&Object.assign(window,t)}var ze={async install(e,t){const r={...De,...t.services};e.use(ce??de()),await Te(e,r)}},Ue=pe({name:"ui",initialState:{modals:[],snackbars:[]}});const Fe={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",ErrorReportModal:"error-report-modal",LoadingModal:"loading-modal",Snackbar:"snackbar"};var Ne=D(new class extends Ue{constructor(){super(...arguments),J(this,"modalCallbacks",{}),J(this,"components",{})}requireComponent(e){return this.components[e]??U(`UI Component '${e}' is not defined!`)}alert(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e};this.openModal(this.requireComponent(Fe.AlertModal),r)}async confirm(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e},s=await this.openModal(this.requireComponent(Fe.ConfirmModal),r);return await s.beforeClose??!1}async loading(e,t){t="string"==typeof e?t:e;const r="string"==typeof e?e:void 0,s=await this.openModal(this.requireComponent(Fe.LoadingModal),{message:r}),o=await t;return await this.closeModal(s.id),o}showSnackbar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r={id:F(),properties:{message:e,...t},component:t.component??s(this.requireComponent(Fe.Snackbar))};this.setState("snackbars",this.snackbars.concat(r)),setTimeout((()=>this.hideSnackbar(r.id)),5e3)}hideSnackbar(e){this.setState("snackbars",this.snackbars.filter((t=>t.id!==e)))}registerComponent(e,t){this.components[e]=t}async openModal(e,t){const r=F(),n={},a={id:r,properties:t??{},component:s(e),beforeClose:new Promise((e=>n.willClose=e)),afterClose:new Promise((e=>n.closed=e))},l=this.modals.at(-1),i=this.modals.concat(a);return this.modalCallbacks[a.id]=n,this.setState({modals:i}),await o(),await(l&&he.emit("hide-modal",{id:l.id})),await Promise.all([l||he.emit("show-overlays-backdrop"),he.emit("show-modal",{id:a.id})]),a}async closeModal(e,t){await he.emit("close-modal",{id:e,result:t})}async boot(){this.watchModalEvents()}watchModalEvents(){he.on("modal-will-close",(e=>{let{modal:t,result:r}=e;this.modalCallbacks[t.id]?.willClose?.(r),1===this.modals.length&&he.emit("hide-overlays-backdrop")})),he.on("modal-closed",(async e=>{let{modal:t,result:r}=e;this.setState("modals",this.modals.filter((e=>e.id!==t.id))),this.modalCallbacks[t.id]?.closed?.(r),delete this.modalCallbacks[t.id];const s=this.modals.at(-1);await(s&&he.emit("show-modal",{id:s.id}))}))}});var Ke=D(new class extends me{constructor(){super(),J(this,"provider",void 0),this.provider={translate:e=>(_e.development&&console.warn("Lang provider is missing"),e)}}setProvider(e){this.provider=e}translate(e,t){return this.provider.translate(e,t)??e}translateWithDefault(e,t,r){r??=t;const s="string"==typeof t?{}:t??{},o=this.provider.translate(e,s)??e;return o===e?Object.entries(s).reduce(((e,t)=>{let[r,s]=t;return e.replace(new RegExp(`\\{\\s*${r}\\s*\\}`,"g"),N(s))}),r):o}});const Qe=Ke.translate.bind(Ke),We=Ke.translateWithDefault.bind(Ke);var Ze=pe({name:"errors",initialState:{logs:[],startupErrors:[]},computed:{hasErrors:e=>{let{logs:t}=e;return t.length>0},hasNewErrors:e=>{let{logs:t}=e;return t.some((e=>!e.seen))},hasStartupErrors:e=>{let{startupErrors:t}=e;return t.length>0}}});const Ye={Primary:"primary",Secondary:"secondary",Danger:"danger",Clear:"clear"};var Je=D(new class extends Ze{constructor(){super(...arguments),J(this,"forceReporting",!1),J(this,"enabled",!0)}enable(){this.enabled=!0}disable(){this.enabled=!1}async inspect(e){const t=Array.isArray(e)?e:[await this.createErrorReport(e)];0!==t.length?Ne.openModal(Ne.requireComponent(Fe.ErrorReportModal),{reports:t}):Ne.alert(We("errors.inspectEmpty","Nothing to inspect!"))}async report(e,t){if((_e.development||_e.testing)&&this.logError(e),!this.enabled)throw e;if(!_e.isMounted){const t=await this.createStartupErrorReport(e);return void(t&&this.setState({startupErrors:this.startupErrors.concat(t)}))}const r=await this.createErrorReport(e),s={report:r,seen:!1,date:new Date};Ne.showSnackbar(t??We("errors.notice","Something went wrong, but it's not your fault. Try again!"),{color:Ye.Danger,actions:[{text:We("errors.viewDetails","View details"),dismiss:!0,handler:()=>Ne.openModal(Ne.requireComponent(Fe.ErrorReportModal),{reports:[r]})}]}),this.setState({logs:[s].concat(this.logs)})}see(e){this.setState({logs:this.logs.map((t=>t.report!==e?t:{...t,seen:!0}))})}seeAll(){this.setState({logs:this.logs.map((e=>({...e,seen:!0})))})}getErrorMessage(e){return"string"==typeof e?e:e instanceof Error||e instanceof L?e.message:K(e)?N(e.message??e.description??"Unknown error object"):We("errors.unknown","Unknown Error")}logError(e){console.error(e),K(e)&&e.cause&&this.logError(e.cause)}async createErrorReport(e){return"string"==typeof e?{title:e}:e instanceof Error||e instanceof L?this.createErrorReportFromError(e):K(e)?Q({title:N(e.name??e.title??We("errors.unknown","Unknown Error")),description:N(e.message??e.description??We("errors.unknownDescription","Unknown error object")),error:e}):{title:We("errors.unknown","Unknown Error"),error:e}}async createStartupErrorReport(e){return e instanceof ServiceBootError?e.cause instanceof ServiceBootError?null:this.createErrorReport(e.cause):this.createErrorReport(e)}createErrorReportFromError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{title:e.name,description:e.message,details:e.stack,error:e,...t}}});const Xe={$errors:Je};function et(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>!1;return z((t=>e(t)||(e=>Je.instance?(Je.report(e),!0):(console.warn("Errors service hasn't been initialized properly!"),console.error(e),!0))(t)),(e=>{globalThis.onerror=(t,r,s,o,n)=>e(n??t),globalThis.onunhandledrejection=t=>e(t.reason)}))}var tt={async install(e,t){const r=et(t.handleError);e.config.errorHandler=r,await Te(e,Xe)}};const rt={$lang:Ke};var st={async install(e){e.config.globalProperties.$t??=Qe,e.config.globalProperties.$td=We,await Te(e,rt)}};function ot(e,t){const r=he.on(e,t);n((()=>r()))}function nt(){const e=a(),t=l((()=>e.class));return[l((()=>W(e,"class"))),t]}function at(e){let t=Z;i((()=>t=e())),n((()=>t()))}var lt=u({__name:"AGHeadlessModal",props:{cancellable:Ae(!0)},setup(t,{expose:r}){const s=t,o=e(null),n=e(!0),a=e(!1),{modal:l}=Se("modal","could not obtain modal reference from <AGHeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead");async function i(){o.value?.$el&&(n.value=!0)}async function u(e){a.value||(he.emit("modal-will-close",{modal:l,result:e}),await i(),a.value=!0,he.emit("modal-closed",{modal:l,result:e}))}return ot("close-modal",(async({id:e,result:t})=>{e===l.id&&await u(t)})),ot("hide-modal",(async({id:e})=>{e===l.id&&await i()})),ot("show-modal",(async({id:e})=>{e===l.id&&await async function(){o.value?.$el&&(n.value=!1)}()})),r({close:u,cancellable:c(s,"cancellable")}),(e,r)=>(d(),p(m(se),{ref_key:"$root",ref:o,open:!0,onClose:r[0]||(r[0]=e=>t.cancellable&&u())},{default:f((()=>[h(e.$slots,"default",{close:u})])),_:3},512))}});lt.__file="src/components/headless/modals/AGHeadlessModal.vue";var it=u({__name:"AGModalContext",props:{modal:Oe(),childIndex:Re()},setup(e){const t=e;return v("modal",{modal:c(t,"modal"),childIndex:c(t,"childIndex")}),(t,r)=>(d(),p(g(e.modal.component),_(b(e.modal.properties)),null,16))}});it.__file="src/components/modals/AGModalContext.vue";const ut=k("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var ct=u({__name:"AGHeadlessModalPanel",setup(e){const t=Se("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),r=l((()=>Ne.modals[t.childIndex]??null));return(e,s)=>(d(),p(m(oe),null,{default:f((()=>[h(e.$slots,"default"),r.value?(d(),y(x,{key:0},[ut,A(it,{"child-index":m(t).childIndex+1,modal:r.value},null,8,["child-index","modal"])],64)):w("v-if",!0)])),_:3}))}});ct.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const dt={class:"fixed inset-0 flex items-center justify-center p-8"};var pt=u({inheritAttrs:!1,__name:"AGModal",props:{cancellable:Ae(!0)},setup(t,{expose:r}){const s=e();return r({close:async()=>s.value?.close(),cancellable:l((()=>!!s.value?.cancellable))}),(e,r)=>(d(),p(lt,{ref_key:"$headlessModal",ref:s,cancellable:t.cancellable,class:"relative z-50"},{default:f((({close:t})=>[k("div",dt,[A(ct,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white"},{default:f((()=>[k("div",G({class:"flex max-h-full flex-col overflow-auto p-4"},e.$attrs),[h(e.$slots,"default",{close:t})],16)])),_:2},1024)])])),_:3},8,["cancellable"]))}});function mt(e){return t=ie(e,{mangle:!1,headerIds:!1,renderer:z(new ue,(e=>{e.link=function(e,t,r){return ue.prototype.link.apply(this,[e,t,r]).replace("<a",'<a target="_blank"')}}))}),le.sanitize(t,{ADD_ATTR:["target"]});var t}pt.__file="src/components/modals/AGModal.vue";var ft=u({__name:"AGMarkdown",props:{as:Be(),inline:Ae(),langKey:Be(),langParams:Ee(),text:Be()},setup(e){const t=e,r=l((()=>t.text??(t.langKey&&Qe(t.langKey,t.langParams??{})))),s=l((()=>{if(!r.value)return null;let e=mt(r.value);return t.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),o=()=>j(t.as??(t.inline?"span":"div"),{class:t.inline?"":"prose",innerHTML:s.value});return(e,t)=>(d(),p(o))}});ft.__file="src/components/basic/AGMarkdown.vue";var ht=u({__name:"AGAlertModal",props:{title:Be(),message:Pe()},setup:e=>(t,r)=>(d(),p(pt,null,{default:f((()=>[e.title?(d(),p(ft,{key:0,text:e.title,as:"h2",class:"font-semibold",inline:""},null,8,["text"])):w("v-if",!0),A(ft,{text:e.message},null,8,["text"])])),_:1}))});ht.__file="src/components/modals/AGAlertModal.vue";var vt=u({__name:"AGHeadlessButton",props:{href:Be(),url:Be(),route:Be(),routeParams:Ee((()=>({}))),routeQuery:Ee((()=>({}))),submit:Ae()},setup(e){const{href:t,url:r,route:s,routeParams:o,routeQuery:n,submit:a}=e,i=l((()=>s?{tag:"router-link",props:{to:Q({name:s,params:o,query:n})}}:t||r?{tag:"a",props:{target:"_blank",href:t||r}}:{tag:"button",props:{type:a?"submit":"button"}}));return(e,t)=>(d(),p(g(i.value.tag),_(b(i.value.props)),{default:f((()=>[h(e.$slots,"default")])),_:3},16))}});vt.__file="src/components/headless/forms/AGHeadlessButton.vue";var gt=u({__name:"AGButton",props:{color:Ge(Ye,Ye.Primary)},setup(e){const t=e,r=l((()=>{switch(t.color){case Ye.Secondary:return["text-white bg-gray-600","hover:bg-gray-500","focus-visible:outline-offset-2 focus-visible:outline-gray-600"].join(" ");case Ye.Clear:return"hover:bg-gray-500/20 focus-visible:outline-gray-500/60";case Ye.Danger:return["text-white bg-red-600","hover:bg-red-500","focus-visible:outline-offset-2 focus-visible:outline-red-600"].join(" ");default:return["text-white bg-indigo-600","hover:bg-indigo-500","focus-visible:outline-offset-2 focus-visible:outline-indigo-600"].join(" ")}}));return(e,t)=>(d(),p(vt,{class:S(["px-2.5 py-1.5 focus-visible:outline focus-visible:outline-2",r.value])},{default:f((()=>[h(e.$slots,"default")])),_:3},8,["class"]))}});gt.__file="src/components/forms/AGButton.vue";const _t={class:"mt-2 flex flex-row-reverse gap-2"};var bt=u({__name:"AGConfirmModal",props:{title:Be(),message:Pe()},setup:e=>(t,r)=>(d(),p(pt,{cancellable:!1},{default:f((({close:r})=>[e.title?(d(),p(ft,{key:0,text:e.title,as:"h1"},null,8,["text"])):w("v-if",!0),A(ft,{text:e.message},null,8,["text"]),k("div",_t,[A(gt,{onClick:e=>r(!0)},{default:f((()=>[M($(t.$td("ui.ok","OK")),1)])),_:2},1032,["onClick"]),A(gt,{color:"secondary",onClick:e=>r()},{default:f((()=>[M($(t.$td("ui.cancel","Cancel")),1)])),_:2},1032,["onClick"])])])),_:1}))});bt.__file="src/components/modals/AGConfirmModal.vue";const yt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},xt=[k("path",{fill:"currentColor",d:"m12.95 10.707l.707-.707L8 4.343L6.586 5.757L10.828 10l-4.242 4.243L8 15.657l4.95-4.95z"},null,-1)];var At={name:"zondicons-cheveron-right",render:function(e,t){return d(),y("svg",yt,xt)}};const wt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},kt=[k("path",{fill:"currentColor",d:"M7.05 9.293L6.343 10L12 15.657l1.414-1.414L9.172 10l4.242-4.243L12 4.343z"},null,-1)];var Gt={name:"zondicons-cheveron-left",render:function(e,t){return d(),y("svg",wt,kt)}};const jt={reports:He()};function St(){return jt}const Mt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},$t=[k("path",{fill:"currentColor",d:"M20 19V7H4v12h16m0-16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16m-7 14v-2h5v2h-5m-3.42-4L5.57 9H8.4l3.3 3.3c.39.39.39 1.03 0 1.42L8.42 17H5.59l3.99-4Z"},null,-1)];var Ct={name:"mdi-console",render:function(e,t){return d(),y("svg",Mt,$t)}};const Et={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Ht=[k("path",{fill:"currentColor",d:"M6 6V2c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-4v4a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8c0-1.1.9-2 2-2h4zm2 0h4a2 2 0 0 1 2 2v4h4V2H8v4zM2 8v10h10V8H2z"},null,-1)];var It={name:"zondicons-copy",render:function(e,t){return d(),y("svg",Et,Ht)}};const Lt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Rt=[k("path",{fill:"currentColor",d:"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2Z"},null,-1)];var Ot={name:"mdi-github",render:function(e,t){return d(),y("svg",Lt,Rt)}};const Pt={class:"flex"};var Bt=u({__name:"AGErrorReportModalButtons",props:{report:Oe()},setup(e){const t=e,r=l((()=>t.report.description?`${t.report.title}: ${t.report.description}`:t.report.title)),s=l((()=>{if(!_e.sourceUrl)return!1;const e=encodeURIComponent(r.value),s=encodeURIComponent(["[Please, explain here what you were trying to do when this error appeared]","","Error details:","```",Y(t.report.details??"Details missing from report",1800-e.length-_e.sourceUrl.length).trim(),"```"].join("\n"));return`${_e.sourceUrl}/issues/new?title=${e}&body=${s}`})),o=l((()=>z([{id:"clipboard",description:"Copy to clipboard",iconComponent:It,async handler(){await navigator.clipboard.writeText(`${r.value}\n\n${t.report.details}`),Ne.showSnackbar(We("errors.copiedToClipboard","Debug information copied to clipboard"))}},{id:"console",description:"Log to console",iconComponent:Ct,handler(){window.error=t.report.error,console.error(t.report.error),Ne.showSnackbar(We("errors.addedToConsole","You can now use the **error** variable in the console"))}}],(e=>{s.value&&e.push({id:"github",description:"Report in GitHub",iconComponent:Ot,url:s.value})}))));return(e,t)=>(d(),y("div",Pt,[(d(!0),y(x,null,C(o.value,((t,r)=>h(e.$slots,"default",G(t,{key:r}),(()=>[A(gt,{color:"clear",url:t.url,title:e.$td(`errors.report_${t.id}`,t.description),"aria-label":e.$td(`errors.report_${t.id}`,t.description),onClick:t.handler},{default:f((()=>[(d(),p(g(t.iconComponent),{class:"h-4 w-4","aria-hidden":"true"}))])),_:2},1032,["url","title","aria-label","onClick"])])))),128))]))}});Bt.__file="src/components/modals/AGErrorReportModalButtons.vue";var Vt=u({__name:"AGErrorReportModalTitle",props:{report:Oe(),currentReport:Ce(),totalReports:Ce()},setup(e){const t=e,r=l((()=>!t.totalReports||t.totalReports<=1?t.report.title:`${t.report.title} (${t.currentReport}/${t.totalReports})`));return(e,t)=>(d(),p(ft,{text:r.value,inline:""},null,8,["text"]))}});Vt.__file="src/components/modals/AGErrorReportModalTitle.vue";const qt={class:"flex items-center justify-between text-lg font-medium"},Dt={class:"flex items-center"},Tt=["textContent"];var zt=u({__name:"AGErrorReportModal",props:St(),setup(t){const r=t,s=e(0),o=l((()=>r.reports[s.value]));return(e,t)=>(d(),p(pt,null,{default:f((()=>[k("div",null,[k("h2",qt,[k("div",Dt,[A(Vt,{report:o.value,"current-report":s.value+1,"total-reports":e.reports.length},null,8,["report","current-report","total-reports"]),e.reports.length>1?(d(),y(x,{key:0},[A(gt,{color:"clear",disabled:0===s.value,title:e.$td("errors.previousReport","Show previous report"),"aria-label":e.$td("errors.previousReport","Show previous report"),onClick:t[0]||(t[0]=e=>s.value--)},{default:f((()=>[A(m(Gt),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"]),A(gt,{color:"clear",disabled:s.value===e.reports.length-1,title:e.$td("errors.nextReport","Show next report"),"aria-label":e.$td("errors.nextReport","Show next report"),onClick:t[1]||(t[1]=e=>s.value++)},{default:f((()=>[A(m(At),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"])],64)):w("v-if",!0)]),A(Bt,{report:o.value},null,8,["report"])]),o.value.description?(d(),p(ft,{key:0,text:o.value.description,class:"mt-2"},null,8,["text"])):w("v-if",!0)]),k("pre",{class:"h-full overflow-auto bg-gray-200 p-4 text-xs text-red-900",textContent:$(o.value.details??e.$td("errors.detailsEmpty","This error is missing a stacktrace."))},null,8,Tt)])),_:1}))}});zt.__file="src/components/modals/AGErrorReportModal.vue";var Ut=u({__name:"AGLoadingModal",props:{message:Be()},setup(e){const t=e,r=l((()=>t.message??We("ui.loading","Loading...")));return(e,t)=>(d(),p(pt,{cancellable:!1},{default:f((()=>[A(ft,{text:r.value},null,8,["text"])])),_:1}))}});Ut.__file="src/components/modals/AGLoadingModal.vue";const Ft={options:He()};function Nt(){return Ft}function Kt(e){return Object.keys(Ft).reduce(((t,r)=>{const s=r;return t[s]=e[s],t}),{})}var Qt=u({__name:"AGHeadlessInput",props:{as:Be("div"),name:Be(),modelValue:$e([String,Number,Boolean])},emits:["update:modelValue"],setup(e,{expose:r,emit:s}){const o=e,n=l((()=>a&&o.name?a.errors[o.name]??null:null)),a=t("form",null),i={id:`input-${F()}`,value:l((()=>a&&o.name?a.getFieldValue(o.name):o.modelValue)),errors:E(n),update(e){a&&o.name?a.setFieldValue(o.name,e):s("update:modelValue",e)}};return v("input",i),r(i),(t,r)=>e.as?(d(),p(g(e.as),{key:0},{default:f((()=>[h(t.$slots,"default")])),_:3})):h(t.$slots,"default",{key:1})}});Qt.__file="src/components/headless/forms/AGHeadlessInput.vue";const Wt=["id"];var Zt=u({__name:"AGHeadlessInputError",setup(e){const t=Se("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),r=l((()=>t.errors?We(`errors.${t.errors[0]}`,`Error: ${t.errors[0]}`):null));return(e,s)=>r.value?(d(),y("p",{key:0,id:`${m(t).id}-error`},$(r.value),9,Wt)):w("v-if",!0)}});Zt.__file="src/components/headless/forms/AGHeadlessInputError.vue";const Yt=["id","type","value","aria-invalid","aria-describedby","checked"];var Jt=u({__name:"AGHeadlessInputInput",props:{type:Be("text")},setup(t){const r=t,s=e(),o=Se("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),n=l((()=>o.value)),a=l((()=>{if("checkbox"===r.type)return!!n.value}));function i(){s.value&&o.update("checkbox"===r.type?s.value.checked:s.value.value)}return(e,r)=>(d(),y("input",{id:m(o).id,ref_key:"$input",ref:s,type:t.type,value:n.value,"aria-invalid":m(o).errors?"true":"false","aria-describedby":m(o).errors?`${m(o).id}-error`:void 0,checked:a.value,onInput:i},null,40,Yt))}});Jt.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const Xt=["for"];var er=u({__name:"AGHeadlessInputLabel",setup(e){const t=Se("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>");return(e,r)=>(d(),y("label",{for:m(t).id},[h(e.$slots,"default")],8,Xt))}});er.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";var tr=u({__name:"AGHeadlessSelect",props:{name:Be(),modelValue:$e(),...Nt()},emits:["update:modelValue"],setup(e,{expose:r,emit:s}){const o=e,n=t("form",null),a={value:l((()=>n&&o.name?n.getFieldValue(o.name):o.modelValue)),options:o.options,update(e){n&&o.name?n.setFieldValue(o.name,e):s("update:modelValue",e)}};return r(a),(e,t)=>(d(),p(m(ne),{"model-value":a.value.value,"onUpdate:modelValue":t[0]||(t[0]=e=>a.update(e))},{default:f((()=>[h(e.$slots,"default")])),_:3},8,["model-value"]))}});tr.__file="src/components/headless/forms/AGHeadlessSelect.vue";var rr=u({__name:"AGHeadlessModalTitle",props:{as:Be("h2")},setup:e=>(t,r)=>(d(),p(m(ae),{as:e.as},{default:f((()=>[h(t.$slots,"default")])),_:3},8,["as"]))});rr.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const sr={class:"pointer-events-auto"};var or=u({__name:"AGHeadlessSnackbar",setup:e=>(e,t)=>(d(),y("div",sr,[h(e.$slots,"default")]))});or.__file="src/components/headless/snackbars/AGHeadlessSnackbar.vue";const nr=W(Ye,["Primary","Clear"]),ar={id:Pe(),message:Pe(),actions:xe((()=>[])),color:Ge(nr,Ye.Secondary)};function lr(){return ar}var ir=u({__name:"AGSnackbar",props:lr(),setup(e){const t=e,r=l((()=>t.color===Ye.Danger?"bg-red-200 text-red-900":"bg-gray-900 text-white"));return(e,s)=>(d(),p(or,{class:S(["flex flex-row items-center justify-center gap-3 p-4",r.value])},{default:f((()=>[A(ft,{text:e.message,inline:""},null,8,["text"]),(d(!0),y(x,null,C(e.actions,((r,s)=>(d(),p(gt,{key:s,color:e.color,onClick:e=>function(e){e.handler?.(),e.dismiss&&Ne.hideSnackbar(t.id)}(r)},{default:f((()=>[M($(r.text),1)])),_:2},1032,["color","onClick"])))),128))])),_:1},8,["class"]))}});ir.__file="src/components/snackbars/AGSnackbar.vue";const ur={$ui:Ne};var cr={async install(e,t){const r={[Fe.AlertModal]:ht,[Fe.ConfirmModal]:bt,[Fe.ErrorReportModal]:zt,[Fe.LoadingModal]:Ut,[Fe.Snackbar]:ir};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return Ne.registerComponent(t,r)})),await Te(e,ur)}};async function dr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=[qe,tt,st,ze,cr,...t.plugins??[]],s=H(e);await ye(r,s,t),s.mount("#app"),s._container?.classList.remove("loading"),he.emit("application-mounted")}const pr={key:0};var mr=u({__name:"AGAppModals",setup(e){const t=l((()=>Ne.modals[0]??null));return(e,r)=>t.value?(d(),y("aside",pr,[A(it,{"child-index":1,modal:t.value},null,8,["modal"])])):w("v-if",!0)}});mr.__file="src/components/AGAppModals.vue";const fr={"aria-live":"assertive",class:"z-60 pointer-events-none fixed inset-0 flex items-end px-4 py-6 sm:p-6"},hr={class:"flex w-full flex-col items-center space-y-4 sm:items-end"};const vr={render:function(e,t){return d(),y("div",fr,[k("div",hr,[(d(!0),y(x,null,C(e.$ui.snackbars,(e=>(d(),p(g(e.component),G({id:e.id,key:e.id},e.properties),null,16,["id"])))),128))])])},__file:"src/components/AGAppSnackbars.vue"};var gr=vr,_r=u({__name:"AGAppOverlays",setup(t){const r=e(null),s=e(!0);return ot("show-overlays-backdrop",(async()=>{r.value&&s.value&&(s.value=!1,r.value.classList.remove("opacity-0"))})),ot("hide-overlays-backdrop",(async()=>{r.value&&!s.value&&(s.value=!0,r.value.classList.add("opacity-0"))})),(e,t)=>(d(),y(x,null,[k("div",{ref_key:"$backdrop",ref:r,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),A(mr),A(gr)],64))}});_r.__file="src/components/AGAppOverlays.vue";const br={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var yr=u({__name:"AGAppLayout",setup:e=>(e,t)=>(d(),y("div",br,[h(e.$slots,"default"),A(_r)]))});yr.__file="src/components/AGAppLayout.vue";var xr=u({__name:"AGErrorMessage",props:{error:Oe()},setup(e){const t=e,r=l((()=>Je.getErrorMessage(t.error)));return(e,t)=>(d(),p(ft,{text:r.value,inline:""},null,8,["text"]))}});xr.__file="src/components/basic/AGErrorMessage.vue";var Ar=u({__name:"AGLink",setup:e=>(e,t)=>(d(),p(vt,{class:"font-medium hover:underline"},{default:f((()=>[h(e.$slots,"default")])),_:3}))});Ar.__file="src/components/basic/AGLink.vue";const wr={class:"ml-2"};var kr=u({inheritAttrs:!1,__name:"AGCheckbox",props:{name:Be()},setup(e){const t=we();return(r,s)=>(d(),p(Qt,{ref_key:"$input",ref:t,name:e.name,class:"flex"},{default:f((()=>[A(Jt,G(r.$attrs,{type:"checkbox",class:{"text-indigo-600 focus:ring-indigo-600":!m(t)?.errors,"border-red-200 text-red-600 focus:ring-red-600":m(t)?.errors}}),null,16,["class"]),k("div",wr,[r.$slots.default?(d(),p(er,{key:0},{default:f((()=>[h(r.$slots,"default")])),_:3})):w("v-if",!0),A(Zt,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});kr.__file="src/components/forms/AGCheckbox.vue";const Gr=["onSubmit"];var jr=u({__name:"AGForm",props:{form:Ee()},emits:["submit"],setup(e,{emit:t}){const r=e;function s(){r.form&&!r.form.submit()||t("submit")}return v("form",r.form),(e,t)=>(d(),y("form",{onSubmit:I(s,["prevent"])},[h(e.$slots,"default")],40,Gr))}});jr.__file="src/components/forms/AGForm.vue";const Sr={class:"absolute bottom-0 left-0 translate-y-full"};var Mr=u({inheritAttrs:!1,__name:"AGInput",props:{name:Be()},setup(e){const t=we(),[r,s]=nt();return(o,n)=>(d(),p(Qt,{ref_key:"$input",ref:t,class:S(["relative flex flex-col items-center",m(s)]),name:e.name},{default:f((()=>[A(Jt,G(m(r),{class:["block w-full border-0 py-1.5 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600",{"ring-1 ring-red-500":m(t)?.errors}]}),null,16,["class"]),k("div",Sr,[A(Zt,{class:"mt-1 text-sm text-red-500"})])])),_:1},8,["class","name"]))}});Mr.__file="src/components/forms/AGInput.vue";var $r=u({__name:"AGModalTitle",setup:e=>(e,t)=>(d(),p(rr,{class:"mb-2 font-semibold"},{default:f((()=>[h(e.$slots,"default")])),_:3}))});$r.__file="src/components/modals/AGModalTitle.vue";const Cr={String:"string",Number:"number",Boolean:"boolean",Object:"object"};class Er extends R{constructor(t){super(),J(this,"errors",void 0),J(this,"_fields",void 0),J(this,"_data",void 0),J(this,"_valid",void 0),J(this,"_submitted",void 0),J(this,"_errors",void 0),this._fields=t,this._submitted=e(!1),this._data=this.getInitialData(t),this._errors=this.getInitialErrors(t),this._valid=l((()=>!Object.values(this._errors).some((e=>null!==e)))),this.errors=E(this._errors)}get valid(){return this._valid.value}get submitted(){return this._submitted.value}setFieldValue(e,t){this._data[e]=t,this._submitted.value&&this.validate()}getFieldValue(e){return this._data[e]}validate(){const e=Object.entries(this._fields).reduce(((e,t)=>{let[r,s]=t;return e[r]=this.getFieldErrors(r,s),e}),{});return this.resetErrors(e),this.valid}reset(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._submitted.value=!1,e.keepData||this.resetData(),e.keepErrors||this.resetErrors()}submit(){return this._submitted.value=!0,this.validate()}__get(e){return e in this._fields?this._data[e]:super.__get(e)}__set(e,t){e in this._fields?Object.assign(this._data,{[e]:t}):super.__set(e,t)}getFieldErrors(e,t){const r=[];return t.rules?.includes("required")&&!this._data[e]&&r.push("required"),r.length>0?r:null}getInitialData(e){if(this.static().isConjuring())return{};const t=Object.entries(e).reduce(((e,t)=>{let[r,s]=t;return e[r]=s.default??null,e}),{});return r(t)}getInitialErrors(e){if(this.static().isConjuring())return{};const t=Object.keys(e).reduce(((e,t)=>(e[t]=null,e)),{});return r(t)}resetData(){for(const[e,t]of Object.entries(this._fields))this._data[e]=t.default??null}resetErrors(e){Object.keys(this._errors).forEach((e=>delete this._errors[e])),e&&Object.assign(this._errors,e)}}function Hr(e){return new Er(e)}function Ir(e){return{default:e,type:Cr.Boolean}}function Lr(e){return{default:e,type:Cr.Boolean,rules:"required"}}function Rr(e){return{default:e,type:Cr.Number,rules:"required"}}function Or(e){return{default:e,type:Cr.String,rules:"required"}}function Pr(e){return{default:e,type:Cr.Number}}function Br(e){return{default:e,type:Cr.String}}export{ht as AGAlertModal,yr as AGAppLayout,_r as AGAppOverlays,gt as AGButton,kr as AGCheckbox,bt as AGConfirmModal,xr as AGErrorMessage,Bt as AGErrorReportModalButtons,Vt as AGErrorReportModalTitle,jr as AGForm,vt as AGHeadlessButton,Qt as AGHeadlessInput,Zt as AGHeadlessInputError,Jt as AGHeadlessInputInput,er as AGHeadlessInputLabel,lt as AGHeadlessModal,ct as AGHeadlessModalPanel,rr as AGHeadlessModalTitle,tr as AGHeadlessSelect,or as AGHeadlessSnackbar,Mr as AGInput,Ar as AGLink,Ut as AGLoadingModal,ft as AGMarkdown,pt as AGModal,it as AGModalContext,$r as AGModalTitle,ir as AGSnackbar,_e as App,ge as AppService,Ye as Colors,Je as Errors,he as Events,fe as EventsService,Cr as FormFieldTypes,Ke as Lang,me as Service,nr as SnackbarColors,Ne as UI,Fe as UIComponents,xe as arrayProp,Ir as booleanInput,Ae as booleanProp,Te as bootServices,dr as bootstrapApplication,we as componentRef,ke as defineDirective,be as definePlugin,pe as defineServiceState,Ge as enumProp,jt as errorReportModalProps,Kt as extractSelectProps,Me as injectOrFail,je as injectReactive,Se as injectReactiveOrFail,ye as installPlugins,$e as mixedProp,Pr as numberInput,Ce as numberProp,Ee as objectProp,at as onCleanMounted,He as requiredArrayProp,Lr as requiredBooleanInput,Ie as requiredEnumProp,Le as requiredMixedProp,Rr as requiredNumberInput,Re as requiredNumberProp,Oe as requiredObjectProp,Or as requiredStringInput,Pe as requiredStringProp,Ft as selectProps,ar as snackbarProps,Br as stringInput,Be as stringProp,Qe as translate,We as translateWithDefault,St as useErrorReportModalProps,ot as useEvent,Hr as useForm,nt as useInputAttrs,Nt as useSelectProps,lr as useSnackbarProps};
|
|
1
|
+
import{ref as e,inject as t,reactive as s,markRaw as r,nextTick as o,onUnmounted as n,useAttrs as a,computed as l,onMounted as i,defineComponent as u,toRef as c,openBlock as d,createBlock as p,unref as m,withCtx as f,renderSlot as v,provide as h,resolveDynamicComponent as g,normalizeProps as _,guardReactiveProps as b,createElementBlock as y,Fragment as x,createVNode as A,createCommentVNode as w,createElementVNode as k,mergeProps as G,h as S,normalizeClass as j,createTextVNode as M,toDisplayString as C,renderList as $,readonly as E,createApp as H,withModifiers as I}from"vue";import"core-js/modules/esnext.async-iterator.reduce.js";import"core-js/modules/esnext.iterator.constructor.js";import"core-js/modules/esnext.iterator.reduce.js";import"core-js/modules/esnext.async-iterator.map.js";import"core-js/modules/esnext.iterator.map.js";import{JSError as L,MagicObject as R,PromisedValue as O,objectOnly as B,isEmpty as P,Storage as T,objectDeepClone as V,facade as q,arr as z,tap as D,fail as U,uuid as F,toString as N,isObject as K,objectWithoutEmpty as W,objectWithout as Q,noop as Z,stringExcerpt as Y}from"@noeldemartin/utils";import J from"@babel/runtime/helpers/esm/defineProperty";import"core-js/modules/esnext.set.add-all.js";import"core-js/modules/esnext.set.delete-all.js";import"core-js/modules/esnext.set.difference.js";import"core-js/modules/esnext.set.every.js";import"core-js/modules/esnext.set.filter.js";import"core-js/modules/esnext.set.find.js";import"core-js/modules/esnext.set.intersection.js";import"core-js/modules/esnext.set.is-disjoint-from.js";import"core-js/modules/esnext.set.is-subset-of.js";import"core-js/modules/esnext.set.is-superset-of.js";import"core-js/modules/esnext.set.join.js";import"core-js/modules/esnext.set.map.js";import"core-js/modules/esnext.set.reduce.js";import"core-js/modules/esnext.set.some.js";import"core-js/modules/esnext.set.symmetric-difference.js";import"core-js/modules/esnext.set.union.js";import{defineStore as X,createPinia as ee,setActivePinia as te}from"pinia";import se from"virtual:aerogel";import"core-js/modules/esnext.async-iterator.filter.js";import"core-js/modules/esnext.iterator.filter.js";import"core-js/modules/esnext.string.at.js";import"core-js/modules/esnext.async-iterator.some.js";import"core-js/modules/esnext.iterator.some.js";import"core-js/modules/esnext.async-iterator.for-each.js";import"core-js/modules/esnext.iterator.for-each.js";import{Dialog as re,DialogPanel as oe,Listbox as ne,ListboxButton as ae,ListboxLabel as le,ListboxOption as ie,DialogTitle as ue,ListboxOptions as ce}from"@headlessui/vue";export{ListboxOptions as AGHeadlessSelectOptions}from"@headlessui/vue";import de from"dompurify";import{marked as pe,Renderer as me}from"marked";import"core-js/modules/esnext.weak-map.delete-all.js";import"core-js/modules/esnext.weak-map.emplace.js";class ServiceBootError extends L{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}let fe=null;function ve(){return fe||(fe=ee(),te(fe)),fe}function he(e){var t;return J(t=class extends ge{usesStore(){return!0}getName(){return e.name??null}getInitialState(){return e.initialState}getComputedStateDefinition(){return e.computed??{}}serializePersistedState(t){return e.serialize?.(t)??t}},"persist",e.persist??[]),t}class ge extends R{constructor(){super(),J(this,"_name",void 0),J(this,"_booted",void 0),J(this,"_computedStateKeys",void 0),J(this,"_store",void 0);const e=this.getComputedStateDefinition();var t,s;this._name=this.getName()??new.target.name,this._booted=new O,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&(t=this._name,s={state:()=>this.getInitialState(),getters:e},ve(),X(t,s)())}get booted(){return this._booted}launch(){const handleError=e=>this._booted.reject(new ServiceBootError(this._name,e));try{this.frameworkBoot().then((()=>this.boot())).then((()=>this._booted.resolve())).catch(handleError)}catch(e){handleError(e)}return this._booted}hasState(e){return!!this._store&&(e in this._store.$state||this._computedStateKeys.has(e))}getState(e){const t=this._store;return e?t?t[e]:void 0:t||{}}setState(e,t){if(!this._store)return;const s="string"==typeof e?{[e]:t}:e;Object.assign(this._store.$state,s),this.onStateUpdated(s)}__get(e){return this.hasState(e)?this.getState(e):super.__get(e)}__set(e,t){this.setState({[e]:t})}onStateUpdated(e){const t=this.constructor.persist,s=B(e,t);if(P(s))return;const r=T.require(this._name);T.set(this._name,{...r,...this.serializePersistedState(V(s))})}usesStore(){return!1}getName(){return null}getInitialState(){return{}}getComputedStateDefinition(){return{}}serializePersistedState(e){return e}async frameworkBoot(){this.restorePersistedState()}async boot(){}restorePersistedState(){const e=this.constructor.persist;if(this.usesStore()&&!P(e))if(T.has(this._name)){const e=T.require(this._name);this.setState(e)}else T.set(this._name,B(this.getState(),e))}}J(ge,"persist",[]);class _e extends ge{constructor(){super(...arguments),J(this,"listeners",{})}async emit(e,t){const s=[...this.listeners[e]??[]];await Promise.all(s.map((e=>e(t)))??[])}on(e,t){return(this.listeners[e]??=z([])).push(t),()=>this.off(e,t)}once(e,t){let s=null;return D((()=>s&&this.off(e,s)),(r=>{(this.listeners[e]??=z([])).push(s=function(){return r(),t(...arguments)})}))}off(e,t){const s=this.listeners[e];s&&(s.remove(t),s.isEmpty()&&delete this.listeners[e])}}var be=q(new _e),ye=he({name:"app",initialState:{plugins:{},environment:se.environment,sourceUrl:se.sourceUrl,isMounted:!1},computed:{development:e=>"development"===e.environment,testing:e=>"testing"===e.environment}});class xe extends ye{plugin(e){return this.plugins[e]??null}async boot(){be.once("application-mounted",(()=>this.setState({isMounted:!0})))}}var Ae=q(new xe);function we(e){return e}async function ke(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];Ae.setState("plugins",e.reduce(((e,t)=>(t.name&&(e[t.name]=t),e)),{})),await Promise.all(e.map((e=>e.install(...s)))??[])}function Ge(e){return{type:Array,default:e??(()=>[])}}function Se(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function je(){return e()}function Me(e){return e}function Ce(e,t){const s=Object.values(e);return{type:String,default:t??s[0]??null,validator:e=>s.includes(e)}}function $e(e){const r=t(e);return r?s(r):void 0}function Ee(e,t){return $e(e)??U(t??`Could not resolve '${e}' injection key`)}function He(e,s){return t(e)??U(s??`Could not resolve '${e}' injection key`)}function Ie(e){return{type:e,default:null}}function Le(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function Re(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function Oe(){return{type:Array,required:!0}}function Be(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}}function Pe(e){return{type:e,required:!0}}function Te(){return{type:Number,required:!0}}function Ve(){return{type:Object,required:!0}}function qe(){return{type:String,required:!0}}function ze(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}const De={"initial-focus":{mounted(e,t){let{value:s}=t;!1!==s&&e.focus()}}};var Ue={install(e,t){const s={...De,...t.directives};for(const[t,r]of Object.entries(s))e.directive(t,r)}};const Fe={$app:Ae,$events:be};async function Ne(e,t){await Promise.all(Object.entries(t).map((async t=>{let[s,r]=t;await r.launch().catch((t=>e.config.errorHandler?.(t,null,`Failed launching ${s}.`)))}))),Object.assign(e.config.globalProperties,t),Ae.development&&Object.assign(window,t)}var Ke={async install(e,t){const s={...Fe,...t.services};e.use(fe??ve()),await Ne(e,s)}},We=he({name:"ui",initialState:{modals:[],snackbars:[]}});const Qe={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",ErrorReportModal:"error-report-modal",LoadingModal:"loading-modal",Snackbar:"snackbar"};var Ze=q(new class extends We{constructor(){super(...arguments),J(this,"modalCallbacks",{}),J(this,"components",{})}requireComponent(e){return this.components[e]??U(`UI Component '${e}' is not defined!`)}alert(e,t){const s="string"==typeof t?{title:e,message:t}:{message:e};this.openModal(this.requireComponent(Qe.AlertModal),s)}async confirm(e,t){const s="string"==typeof t?{title:e,message:t}:{message:e},r=await this.openModal(this.requireComponent(Qe.ConfirmModal),s);return await r.beforeClose??!1}async loading(e,t){t="string"==typeof e?t:e;const s="string"==typeof e?e:void 0,r=await this.openModal(this.requireComponent(Qe.LoadingModal),{message:s}),o=await t;return await this.closeModal(r.id),o}showSnackbar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s={id:F(),properties:{message:e,...t},component:t.component??r(this.requireComponent(Qe.Snackbar))};this.setState("snackbars",this.snackbars.concat(s)),setTimeout((()=>this.hideSnackbar(s.id)),5e3)}hideSnackbar(e){this.setState("snackbars",this.snackbars.filter((t=>t.id!==e)))}registerComponent(e,t){this.components[e]=t}async openModal(e,t){const s=F(),n={},a={id:s,properties:t??{},component:r(e),beforeClose:new Promise((e=>n.willClose=e)),afterClose:new Promise((e=>n.closed=e))},l=this.modals.at(-1),i=this.modals.concat(a);return this.modalCallbacks[a.id]=n,this.setState({modals:i}),await o(),await(l&&be.emit("hide-modal",{id:l.id})),await Promise.all([l||be.emit("show-overlays-backdrop"),be.emit("show-modal",{id:a.id})]),a}async closeModal(e,t){await be.emit("close-modal",{id:e,result:t})}async boot(){this.watchModalEvents()}watchModalEvents(){be.on("modal-will-close",(e=>{let{modal:t,result:s}=e;this.modalCallbacks[t.id]?.willClose?.(s),1===this.modals.length&&be.emit("hide-overlays-backdrop")})),be.on("modal-closed",(async e=>{let{modal:t,result:s}=e;this.setState("modals",this.modals.filter((e=>e.id!==t.id))),this.modalCallbacks[t.id]?.closed?.(s),delete this.modalCallbacks[t.id];const r=this.modals.at(-1);await(r&&be.emit("show-modal",{id:r.id}))}))}});var Ye=q(new class extends ge{constructor(){super(),J(this,"provider",void 0),this.provider={translate:e=>(Ae.development&&console.warn("Lang provider is missing"),e)}}setProvider(e){this.provider=e}translate(e,t){return this.provider.translate(e,t)??e}translateWithDefault(e,t,s){s??=t;const r="string"==typeof t?{}:t??{},o=this.provider.translate(e,r)??e;return o===e?Object.entries(r).reduce(((e,t)=>{let[s,r]=t;return e.replace(new RegExp(`\\{\\s*${s}\\s*\\}`,"g"),N(r))}),s):o}});const Je=Ye.translate.bind(Ye),Xe=Ye.translateWithDefault.bind(Ye);var et=he({name:"errors",initialState:{logs:[],startupErrors:[]},computed:{hasErrors:e=>{let{logs:t}=e;return t.length>0},hasNewErrors:e=>{let{logs:t}=e;return t.some((e=>!e.seen))},hasStartupErrors:e=>{let{startupErrors:t}=e;return t.length>0}}});const tt={Primary:"primary",Secondary:"secondary",Danger:"danger",Clear:"clear"};var st=q(new class extends et{constructor(){super(...arguments),J(this,"forceReporting",!1),J(this,"enabled",!0)}enable(){this.enabled=!0}disable(){this.enabled=!1}async inspect(e){const t=Array.isArray(e)?e:[await this.createErrorReport(e)];0!==t.length?Ze.openModal(Ze.requireComponent(Qe.ErrorReportModal),{reports:t}):Ze.alert(Xe("errors.inspectEmpty","Nothing to inspect!"))}async report(e,t){if((Ae.development||Ae.testing)&&this.logError(e),!this.enabled)throw e;if(!Ae.isMounted){const t=await this.createStartupErrorReport(e);return void(t&&this.setState({startupErrors:this.startupErrors.concat(t)}))}const s=await this.createErrorReport(e),r={report:s,seen:!1,date:new Date};Ze.showSnackbar(t??Xe("errors.notice","Something went wrong, but it's not your fault. Try again!"),{color:tt.Danger,actions:[{text:Xe("errors.viewDetails","View details"),dismiss:!0,handler:()=>Ze.openModal(Ze.requireComponent(Qe.ErrorReportModal),{reports:[s]})}]}),this.setState({logs:[r].concat(this.logs)})}see(e){this.setState({logs:this.logs.map((t=>t.report!==e?t:{...t,seen:!0}))})}seeAll(){this.setState({logs:this.logs.map((e=>({...e,seen:!0})))})}getErrorMessage(e){return"string"==typeof e?e:e instanceof Error||e instanceof L?e.message:K(e)?N(e.message??e.description??"Unknown error object"):Xe("errors.unknown","Unknown Error")}logError(e){console.error(e),K(e)&&e.cause&&this.logError(e.cause)}async createErrorReport(e){return"string"==typeof e?{title:e}:e instanceof Error||e instanceof L?this.createErrorReportFromError(e):K(e)?W({title:N(e.name??e.title??Xe("errors.unknown","Unknown Error")),description:N(e.message??e.description??Xe("errors.unknownDescription","Unknown error object")),error:e}):{title:Xe("errors.unknown","Unknown Error"),error:e}}async createStartupErrorReport(e){return e instanceof ServiceBootError?e.cause instanceof ServiceBootError?null:this.createErrorReport(e.cause):this.createErrorReport(e)}createErrorReportFromError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{title:e.name,description:e.message,details:e.stack,error:e,...t}}});const rt={$errors:st};function ot(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>!1;return D((t=>e(t)||(e=>st.instance?(st.report(e),!0):(console.warn("Errors service hasn't been initialized properly!"),console.error(e),!0))(t)),(e=>{globalThis.onerror=(t,s,r,o,n)=>e(n??t),globalThis.onunhandledrejection=t=>e(t.reason)}))}var nt={async install(e,t){const s=ot(t.handleError);e.config.errorHandler=s,await Ne(e,rt)}};const at={$lang:Ye};var lt={async install(e){e.config.globalProperties.$t??=Je,e.config.globalProperties.$td=Xe,await Ne(e,at)}};function it(e,t){const s=be.on(e,t);n((()=>s()))}function ut(){const e=a(),t=l((()=>e.class));return[l((()=>Q(e,"class"))),t]}function ct(e){let t=Z;i((()=>t=e())),n((()=>t()))}var dt=u({__name:"AGHeadlessModal",props:{cancellable:Se(!0)},setup(t,{expose:s}){const r=t,o=e(null),n=e(!0),a=e(!1),{modal:l}=Ee("modal","could not obtain modal reference from <AGHeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead");async function i(){o.value?.$el&&(n.value=!0)}async function u(e){a.value||(be.emit("modal-will-close",{modal:l,result:e}),await i(),a.value=!0,be.emit("modal-closed",{modal:l,result:e}))}return it("close-modal",(async({id:e,result:t})=>{e===l.id&&await u(t)})),it("hide-modal",(async({id:e})=>{e===l.id&&await i()})),it("show-modal",(async({id:e})=>{e===l.id&&await async function(){o.value?.$el&&(n.value=!1)}()})),s({close:u,cancellable:c(r,"cancellable")}),(e,s)=>(d(),p(m(re),{ref_key:"$root",ref:o,open:!0,onClose:s[0]||(s[0]=e=>t.cancellable&&u())},{default:f((()=>[v(e.$slots,"default",{close:u})])),_:3},512))}});dt.__file="src/components/headless/modals/AGHeadlessModal.vue";var pt=u({__name:"AGModalContext",props:{modal:Ve(),childIndex:Te()},setup(e){const t=e;return h("modal",{modal:c(t,"modal"),childIndex:c(t,"childIndex")}),(t,s)=>(d(),p(g(e.modal.component),_(b(e.modal.properties)),null,16))}});pt.__file="src/components/modals/AGModalContext.vue";const mt=k("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var ft=u({__name:"AGHeadlessModalPanel",setup(e){const t=Ee("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),s=l((()=>Ze.modals[t.childIndex]??null));return(e,r)=>(d(),p(m(oe),null,{default:f((()=>[v(e.$slots,"default"),s.value?(d(),y(x,{key:0},[mt,A(pt,{"child-index":m(t).childIndex+1,modal:s.value},null,8,["child-index","modal"])],64)):w("v-if",!0)])),_:3}))}});ft.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const vt={class:"fixed inset-0 flex items-center justify-center p-8"};var ht=u({inheritAttrs:!1,__name:"AGModal",props:{cancellable:Se(!0)},setup(t,{expose:s}){const r=e();return s({close:async()=>r.value?.close(),cancellable:l((()=>!!r.value?.cancellable))}),(e,s)=>(d(),p(dt,{ref_key:"$headlessModal",ref:r,cancellable:t.cancellable,class:"relative z-50"},{default:f((({close:t})=>[k("div",vt,[A(ft,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white"},{default:f((()=>[k("div",G({class:"flex max-h-full flex-col overflow-auto p-4"},e.$attrs),[v(e.$slots,"default",{close:t})],16)])),_:2},1024)])])),_:3},8,["cancellable"]))}});function gt(e){return t=pe(e,{mangle:!1,headerIds:!1,renderer:D(new me,(e=>{e.link=function(e,t,s){return me.prototype.link.apply(this,[e,t,s]).replace("<a",'<a target="_blank"')}}))}),de.sanitize(t,{ADD_ATTR:["target"]});var t}ht.__file="src/components/modals/AGModal.vue";var _t=u({__name:"AGMarkdown",props:{as:ze(),inline:Se(),langKey:ze(),langParams:Re(),text:ze()},setup(e){const t=e,s=l((()=>t.text??(t.langKey&&Je(t.langKey,t.langParams??{})))),r=l((()=>{if(!s.value)return null;let e=gt(s.value);return t.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),o=()=>S(t.as??(t.inline?"span":"div"),{class:t.inline?"":"prose",innerHTML:r.value});return(e,t)=>(d(),p(o))}});_t.__file="src/components/basic/AGMarkdown.vue";var bt=u({__name:"AGAlertModal",props:{title:ze(),message:qe()},setup:e=>(t,s)=>(d(),p(ht,null,{default:f((()=>[e.title?(d(),p(_t,{key:0,text:e.title,as:"h2",class:"font-semibold",inline:""},null,8,["text"])):w("v-if",!0),A(_t,{text:e.message},null,8,["text"])])),_:1}))});bt.__file="src/components/modals/AGAlertModal.vue";var yt=u({__name:"AGHeadlessButton",props:{href:ze(),url:ze(),route:ze(),routeParams:Re((()=>({}))),routeQuery:Re((()=>({}))),submit:Se()},setup(e){const{href:t,url:s,route:r,routeParams:o,routeQuery:n,submit:a}=e,i=l((()=>r?{tag:"router-link",props:{to:W({name:r,params:o,query:n})}}:t||s?{tag:"a",props:{target:"_blank",href:t||s}}:{tag:"button",props:{type:a?"submit":"button"}}));return(e,t)=>(d(),p(g(i.value.tag),_(b(i.value.props)),{default:f((()=>[v(e.$slots,"default")])),_:3},16))}});yt.__file="src/components/headless/forms/AGHeadlessButton.vue";var xt=u({__name:"AGButton",props:{color:Ce(tt,tt.Primary)},setup(e){const t=e,s=l((()=>{switch(t.color){case tt.Secondary:return["text-white bg-gray-600","hover:bg-gray-500","focus-visible:outline-offset-2 focus-visible:outline-gray-600"].join(" ");case tt.Clear:return"hover:bg-gray-500/20 focus-visible:outline-gray-500/60";case tt.Danger:return["text-white bg-red-600","hover:bg-red-500","focus-visible:outline-offset-2 focus-visible:outline-red-600"].join(" ");default:return["text-white bg-indigo-600","hover:bg-indigo-500","focus-visible:outline-offset-2 focus-visible:outline-indigo-600"].join(" ")}}));return(e,t)=>(d(),p(yt,{class:j(["px-2.5 py-1.5 focus-visible:outline focus-visible:outline-2",s.value])},{default:f((()=>[v(e.$slots,"default")])),_:3},8,["class"]))}});xt.__file="src/components/forms/AGButton.vue";const At={class:"mt-2 flex flex-row-reverse gap-2"};var wt=u({__name:"AGConfirmModal",props:{title:ze(),message:qe()},setup:e=>(t,s)=>(d(),p(ht,{cancellable:!1},{default:f((({close:s})=>[e.title?(d(),p(_t,{key:0,text:e.title,as:"h1"},null,8,["text"])):w("v-if",!0),A(_t,{text:e.message},null,8,["text"]),k("div",At,[A(xt,{onClick:e=>s(!0)},{default:f((()=>[M(C(t.$td("ui.ok","OK")),1)])),_:2},1032,["onClick"]),A(xt,{color:"secondary",onClick:e=>s()},{default:f((()=>[M(C(t.$td("ui.cancel","Cancel")),1)])),_:2},1032,["onClick"])])])),_:1}))});wt.__file="src/components/modals/AGConfirmModal.vue";const kt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Gt=[k("path",{fill:"currentColor",d:"m12.95 10.707l.707-.707L8 4.343L6.586 5.757L10.828 10l-4.242 4.243L8 15.657l4.95-4.95z"},null,-1)];var St={name:"zondicons-cheveron-right",render:function(e,t){return d(),y("svg",kt,Gt)}};const jt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Mt=[k("path",{fill:"currentColor",d:"M7.05 9.293L6.343 10L12 15.657l1.414-1.414L9.172 10l4.242-4.243L12 4.343z"},null,-1)];var Ct={name:"zondicons-cheveron-left",render:function(e,t){return d(),y("svg",jt,Mt)}};const $t={reports:Oe()};function Et(){return $t}const Ht={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},It=[k("path",{fill:"currentColor",d:"M20 19V7H4v12h16m0-16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16m-7 14v-2h5v2h-5m-3.42-4L5.57 9H8.4l3.3 3.3c.39.39.39 1.03 0 1.42L8.42 17H5.59l3.99-4Z"},null,-1)];var Lt={name:"mdi-console",render:function(e,t){return d(),y("svg",Ht,It)}};const Rt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Ot=[k("path",{fill:"currentColor",d:"M6 6V2c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-4v4a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8c0-1.1.9-2 2-2h4zm2 0h4a2 2 0 0 1 2 2v4h4V2H8v4zM2 8v10h10V8H2z"},null,-1)];var Bt={name:"zondicons-copy",render:function(e,t){return d(),y("svg",Rt,Ot)}};const Pt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Tt=[k("path",{fill:"currentColor",d:"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33c.85 0 1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2Z"},null,-1)];var Vt={name:"mdi-github",render:function(e,t){return d(),y("svg",Pt,Tt)}};const qt={class:"flex"};var zt=u({__name:"AGErrorReportModalButtons",props:{report:Ve()},setup(e){const t=e,s=l((()=>t.report.description?`${t.report.title}: ${t.report.description}`:t.report.title)),r=l((()=>{if(!Ae.sourceUrl)return!1;const e=encodeURIComponent(s.value),r=encodeURIComponent(["[Please, explain here what you were trying to do when this error appeared]","","Error details:","```",Y(t.report.details??"Details missing from report",1800-e.length-Ae.sourceUrl.length).trim(),"```"].join("\n"));return`${Ae.sourceUrl}/issues/new?title=${e}&body=${r}`})),o=l((()=>D([{id:"clipboard",description:"Copy to clipboard",iconComponent:Bt,async handler(){await navigator.clipboard.writeText(`${s.value}\n\n${t.report.details}`),Ze.showSnackbar(Xe("errors.copiedToClipboard","Debug information copied to clipboard"))}},{id:"console",description:"Log to console",iconComponent:Lt,handler(){window.error=t.report.error,console.error(t.report.error),Ze.showSnackbar(Xe("errors.addedToConsole","You can now use the **error** variable in the console"))}}],(e=>{r.value&&e.push({id:"github",description:"Report in GitHub",iconComponent:Vt,url:r.value})}))));return(e,t)=>(d(),y("div",qt,[(d(!0),y(x,null,$(o.value,((t,s)=>v(e.$slots,"default",G(t,{key:s}),(()=>[A(xt,{color:"clear",url:t.url,title:e.$td(`errors.report_${t.id}`,t.description),"aria-label":e.$td(`errors.report_${t.id}`,t.description),onClick:t.handler},{default:f((()=>[(d(),p(g(t.iconComponent),{class:"h-4 w-4","aria-hidden":"true"}))])),_:2},1032,["url","title","aria-label","onClick"])])))),128))]))}});zt.__file="src/components/modals/AGErrorReportModalButtons.vue";var Dt=u({__name:"AGErrorReportModalTitle",props:{report:Ve(),currentReport:Le(),totalReports:Le()},setup(e){const t=e,s=l((()=>!t.totalReports||t.totalReports<=1?t.report.title:`${t.report.title} (${t.currentReport}/${t.totalReports})`));return(e,t)=>(d(),p(_t,{text:s.value,inline:""},null,8,["text"]))}});Dt.__file="src/components/modals/AGErrorReportModalTitle.vue";const Ut={class:"flex items-center justify-between text-lg font-medium"},Ft={class:"flex items-center"},Nt=["textContent"];var Kt=u({__name:"AGErrorReportModal",props:Et(),setup(t){const s=t,r=e(0),o=l((()=>s.reports[r.value]));return(e,t)=>(d(),p(ht,null,{default:f((()=>[k("div",null,[k("h2",Ut,[k("div",Ft,[A(Dt,{report:o.value,"current-report":r.value+1,"total-reports":e.reports.length},null,8,["report","current-report","total-reports"]),e.reports.length>1?(d(),y(x,{key:0},[A(xt,{color:"clear",disabled:0===r.value,title:e.$td("errors.previousReport","Show previous report"),"aria-label":e.$td("errors.previousReport","Show previous report"),onClick:t[0]||(t[0]=e=>r.value--)},{default:f((()=>[A(m(Ct),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"]),A(xt,{color:"clear",disabled:r.value===e.reports.length-1,title:e.$td("errors.nextReport","Show next report"),"aria-label":e.$td("errors.nextReport","Show next report"),onClick:t[1]||(t[1]=e=>r.value++)},{default:f((()=>[A(m(St),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"])],64)):w("v-if",!0)]),A(zt,{report:o.value},null,8,["report"])]),o.value.description?(d(),p(_t,{key:0,text:o.value.description,class:"mt-2"},null,8,["text"])):w("v-if",!0)]),k("pre",{class:"h-full overflow-auto bg-gray-200 p-4 text-xs text-red-900",textContent:C(o.value.details??e.$td("errors.detailsEmpty","This error is missing a stacktrace."))},null,8,Nt)])),_:1}))}});Kt.__file="src/components/modals/AGErrorReportModal.vue";var Wt=u({__name:"AGLoadingModal",props:{message:ze()},setup(e){const t=e,s=l((()=>t.message??Xe("ui.loading","Loading...")));return(e,t)=>(d(),p(ht,{cancellable:!1},{default:f((()=>[A(_t,{text:s.value},null,8,["text"])])),_:1}))}});Wt.__file="src/components/modals/AGLoadingModal.vue";const Qt={options:Oe(),label:ze(),noSelectionText:ze()};function Zt(){return Qt}function Yt(e){return Object.keys(Qt).reduce(((t,s)=>{const r=s;return t[r]=e[r],t}),{})}var Jt=u({__name:"AGHeadlessInput",props:{as:ze("div"),name:ze(),modelValue:Ie([String,Number,Boolean])},emits:["update:modelValue"],setup(e,{expose:s,emit:r}){const o=e,n=l((()=>a&&o.name?a.errors[o.name]??null:null)),a=t("form",null),i={id:`input-${F()}`,value:l((()=>a&&o.name?a.getFieldValue(o.name):o.modelValue)),errors:E(n),update(e){a&&o.name?a.setFieldValue(o.name,e):r("update:modelValue",e)}};return h("input",i),s(i),(t,s)=>e.as?(d(),p(g(e.as),{key:0},{default:f((()=>[v(t.$slots,"default")])),_:3})):v(t.$slots,"default",{key:1})}});Jt.__file="src/components/headless/forms/AGHeadlessInput.vue";const Xt=["id"];var es=u({__name:"AGHeadlessInputError",setup(e){const t=Ee("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),s=l((()=>t.errors?Xe(`errors.${t.errors[0]}`,`Error: ${t.errors[0]}`):null));return(e,r)=>s.value?(d(),y("p",{key:0,id:`${m(t).id}-error`},C(s.value),9,Xt)):w("v-if",!0)}});es.__file="src/components/headless/forms/AGHeadlessInputError.vue";const ts=["id","type","value","aria-invalid","aria-describedby","checked"];var ss=u({__name:"AGHeadlessInputInput",props:{type:ze("text")},setup(t){const s=t,r=e(),o=Ee("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),n=l((()=>o.value)),a=l((()=>{if("checkbox"===s.type)return!!n.value}));function i(){r.value&&o.update("checkbox"===s.type?r.value.checked:r.value.value)}return(e,s)=>(d(),y("input",{id:m(o).id,ref_key:"$input",ref:r,type:t.type,value:n.value,"aria-invalid":m(o).errors?"true":"false","aria-describedby":m(o).errors?`${m(o).id}-error`:void 0,checked:a.value,onInput:i},null,40,ts))}});ss.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const rs=["for"];var os=u({__name:"AGHeadlessInputLabel",setup(e){const t=Ee("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>");return(e,s)=>(d(),y("label",{for:m(t).id},[v(e.$slots,"default")],8,rs))}});os.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";var ns=u({__name:"AGHeadlessSelect",props:{name:ze(),modelValue:Ie(),...Zt()},emits:["update:modelValue"],setup(e,{expose:s,emit:r}){const o=e,n=t("form",null),a=l((()=>o.noSelectionText??Xe("select.noSelection","-"))),i=l((()=>o.options.map((e=>({value:e,text:N(K(e)&&"text"in e?e.text:e)}))))),u=l((()=>{const e=n&&o.name?n.getFieldValue(o.name):o.modelValue;return i.value.find((t=>t.value===e))})),c=l((()=>n&&o.name?n.errors[o.name]??null:null));function g(e){n&&o.name?n.setFieldValue(o.name,e):r("update:modelValue",e)}const _={id:`select-${F()}`,options:i,noSelectionText:a,selectedOption:u,errors:c,label:l((()=>o.label)),buttonText:l((()=>u.value?.text??a.value)),update:g};return h("select",_),s(_),(e,t)=>(d(),p(m(ne),{"model-value":u.value?.value,"onUpdate:modelValue":t[0]||(t[0]=e=>g(e))},{default:f((({value:t,open:s,disabled:r})=>[v(e.$slots,"default",{value:t,open:s,disabled:r})])),_:3},8,["model-value"]))}});ns.__file="src/components/headless/forms/AGHeadlessSelect.vue";var as=u({__name:"AGHeadlessSelectButton",props:{textClass:ze()},setup(e){const t=Ee("select","<AGHeadlessSelectButton> must be a child of a <AGHeadlessSelect>");return(s,r)=>(d(),p(m(ae),null,{default:f((({value:r,open:o,disabled:n})=>[v(s.$slots,"default",{value:r,open:o,disabled:n},(()=>[k("span",{class:j(e.textClass)},C(m(t)?.buttonText),3)])),v(s.$slots,"icon")])),_:3}))}});as.__file="src/components/headless/forms/AGHeadlessSelectButton.vue";const ls=["id"];var is=u({__name:"AGHeadlessSelectError",setup(e){const t=Ee("select","<AGHeadlessSelectError> must be a child of a <AGHeadlessSelect>"),s=l((()=>t.errors?Xe(`errors.${t.errors[0]}`,`Error: ${t.errors[0]}`):null));return(e,r)=>s.value?(d(),y("p",{key:0,id:`${m(t).id}-error`},C(s.value),9,ls)):w("v-if",!0)}});is.__file="src/components/headless/forms/AGHeadlessSelectError.vue";var us=u({__name:"AGHeadlessSelectLabel",setup(e){const t=Ee("select","<AGHeadlessSelectLabel> must be a child of a <AGHeadlessSelect>");return(e,s)=>m(t).label?(d(),p(m(le),{key:0},{default:f((({open:s,disabled:r})=>[v(e.$slots,"default",{open:s,disabled:r},(()=>[M(C(m(t).label),1)]))])),_:3})):w("v-if",!0)}});us.__file="src/components/headless/forms/AGHeadlessSelectLabel.vue";var cs=u({__name:"AGHeadlessSelectOption",props:{value:Pe(),selectedClass:ze(),unselectedClass:ze(),activeClass:ze(),inactiveClass:ze()},setup(e){const t=e,s=Ee("select","<AGHeadlessSelectOption> must be a child of a <AGHeadlessSelect>"),r=l((()=>s.options.find((e=>e.value===t.value))));return(t,s)=>(d(),p(m(ie),{value:e.value,as:"template"},{default:f((({active:s,selected:o,disabled:n})=>[v(t.$slots,"default",{active:s,selected:o,disabled:n},(()=>[k("li",{class:j({[e.activeClass??"active"]:s,[e.inactiveClass??"inactive"]:!s,[e.selectedClass??"selected"]:o,[e.unselectedClass??"unselected"]:!o})},C(r.value?.text),3)]))])),_:3},8,["value"]))}});cs.__file="src/components/headless/forms/AGHeadlessSelectOption.vue";var ds=u({__name:"AGHeadlessModalTitle",props:{as:ze("h2")},setup:e=>(t,s)=>(d(),p(m(ue),{as:e.as},{default:f((()=>[v(t.$slots,"default")])),_:3},8,["as"]))});ds.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const ps={class:"pointer-events-auto"};var ms=u({__name:"AGHeadlessSnackbar",setup:e=>(e,t)=>(d(),y("div",ps,[v(e.$slots,"default")]))});ms.__file="src/components/headless/snackbars/AGHeadlessSnackbar.vue";const fs=Q(tt,["Primary","Clear"]),vs={id:qe(),message:qe(),actions:Ge((()=>[])),color:Ce(fs,tt.Secondary)};function hs(){return vs}var gs=u({__name:"AGSnackbar",props:hs(),setup(e){const t=e,s=l((()=>t.color===tt.Danger?"bg-red-200 text-red-900":"bg-gray-900 text-white"));return(e,r)=>(d(),p(ms,{class:j(["flex flex-row items-center justify-center gap-3 p-4",s.value])},{default:f((()=>[A(_t,{text:e.message,inline:""},null,8,["text"]),(d(!0),y(x,null,$(e.actions,((s,r)=>(d(),p(xt,{key:r,color:e.color,onClick:e=>function(e){e.handler?.(),e.dismiss&&Ze.hideSnackbar(t.id)}(s)},{default:f((()=>[M(C(s.text),1)])),_:2},1032,["color","onClick"])))),128))])),_:1},8,["class"]))}});gs.__file="src/components/snackbars/AGSnackbar.vue";const _s={$ui:Ze};var bs={async install(e,t){const s={[Qe.AlertModal]:bt,[Qe.ConfirmModal]:wt,[Qe.ErrorReportModal]:Kt,[Qe.LoadingModal]:Wt,[Qe.Snackbar]:gs};Object.entries({...s,...t.components}).forEach((e=>{let[t,s]=e;return Ze.registerComponent(t,s)})),await Ne(e,_s)}};async function ys(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=[Ue,nt,lt,Ke,bs,...t.plugins??[]],r=H(e);await ke(s,r,t),r.mount("#app"),r._container?.classList.remove("loading"),be.emit("application-mounted")}const xs={key:0};var As=u({__name:"AGAppModals",setup(e){const t=l((()=>Ze.modals[0]??null));return(e,s)=>t.value?(d(),y("aside",xs,[A(pt,{"child-index":1,modal:t.value},null,8,["modal"])])):w("v-if",!0)}});As.__file="src/components/AGAppModals.vue";const ws={"aria-live":"assertive",class:"z-60 pointer-events-none fixed inset-0 flex items-end px-4 py-6 sm:p-6"},ks={class:"flex w-full flex-col items-center space-y-4 sm:items-end"};const Gs={render:function(e,t){return d(),y("div",ws,[k("div",ks,[(d(!0),y(x,null,$(e.$ui.snackbars,(e=>(d(),p(g(e.component),G({id:e.id,key:e.id},e.properties),null,16,["id"])))),128))])])},__file:"src/components/AGAppSnackbars.vue"};var Ss=Gs,js=u({__name:"AGAppOverlays",setup(t){const s=e(null),r=e(!0);return it("show-overlays-backdrop",(async()=>{s.value&&r.value&&(r.value=!1,s.value.classList.remove("opacity-0"))})),it("hide-overlays-backdrop",(async()=>{s.value&&!r.value&&(r.value=!0,s.value.classList.add("opacity-0"))})),(e,t)=>(d(),y(x,null,[k("div",{ref_key:"$backdrop",ref:s,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),A(As),A(Ss)],64))}});js.__file="src/components/AGAppOverlays.vue";const Ms={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var Cs=u({__name:"AGAppLayout",setup:e=>(e,t)=>(d(),y("div",Ms,[v(e.$slots,"default"),A(js)]))});Cs.__file="src/components/AGAppLayout.vue";var $s=u({__name:"AGErrorMessage",props:{error:Ve()},setup(e){const t=e,s=l((()=>st.getErrorMessage(t.error)));return(e,t)=>(d(),p(_t,{text:s.value,inline:""},null,8,["text"]))}});$s.__file="src/components/basic/AGErrorMessage.vue";var Es=u({__name:"AGLink",setup:e=>(e,t)=>(d(),p(yt,{class:"font-medium hover:underline"},{default:f((()=>[v(e.$slots,"default")])),_:3}))});Es.__file="src/components/basic/AGLink.vue";const Hs={class:"ml-2"};var Is=u({inheritAttrs:!1,__name:"AGCheckbox",props:{name:ze()},setup(e){const t=je();return(s,r)=>(d(),p(Jt,{ref_key:"$input",ref:t,name:e.name,class:"flex"},{default:f((()=>[A(ss,G(s.$attrs,{type:"checkbox",class:{"text-indigo-600 focus:ring-indigo-600":!m(t)?.errors,"border-red-200 text-red-600 focus:ring-red-600":m(t)?.errors}}),null,16,["class"]),k("div",Hs,[s.$slots.default?(d(),p(os,{key:0},{default:f((()=>[v(s.$slots,"default")])),_:3})):w("v-if",!0),A(es,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});Is.__file="src/components/forms/AGCheckbox.vue";const Ls=["onSubmit"];var Rs=u({__name:"AGForm",props:{form:Re()},emits:["submit"],setup(e,{emit:t}){const s=e;function r(){s.form&&!s.form.submit()||t("submit")}return h("form",s.form),(e,t)=>(d(),y("form",{onSubmit:I(r,["prevent"])},[v(e.$slots,"default")],40,Ls))}});Rs.__file="src/components/forms/AGForm.vue";const Os={class:"absolute bottom-0 left-0 translate-y-full"};var Bs=u({inheritAttrs:!1,__name:"AGInput",props:{name:ze()},setup(e){const t=je(),[s,r]=ut();return(o,n)=>(d(),p(Jt,{ref_key:"$input",ref:t,class:j(["relative flex flex-col items-center",m(r)]),name:e.name},{default:f((()=>[A(ss,G(m(s),{class:["block w-full border-0 py-1.5 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600",{"ring-1 ring-red-500":m(t)?.errors}]}),null,16,["class"]),k("div",Os,[A(es,{class:"mt-1 text-sm text-red-500"})])])),_:1},8,["class","name"]))}});Bs.__file="src/components/forms/AGInput.vue";const Ps={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Ts=[k("path",{fill:"currentColor",d:"m9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828L5.757 6.586L4.343 8z"},null,-1)];var Vs={name:"zondicons-cheveron-down",render:function(e,t){return d(),y("svg",Ps,Ts)}};const qs={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};var zs=u({__name:"AGSelect",props:Zt(),setup(e){const t=e,s=je();return(e,r)=>(d(),p(ns,G(t,{ref_key:"$select",ref:s,as:"div"}),{default:f((()=>[A(us,{class:"block text-sm font-medium leading-6 text-gray-900"}),k("div",{class:j(["relative",{"mt-2":m(s)?.label}])},[A(as,{class:j(["relative w-full cursor-default bg-white py-1.5 pl-3 pr-10 text-left text-gray-900 ring-1 ring-inset ring-gray-300 focus:outline-none focus:ring-2 focus:ring-indigo-600",{"ring-1 ring-red-500":m(s)?.errors}]),"text-class":"block truncate"},{icon:f((()=>[k("span",qs,[A(m(Vs),{class:"h-5 w-5 text-gray-400"})])])),_:1},8,["class"]),A(m(ce),{class:"absolute z-10 mt-1 max-h-60 w-full overflow-auto border bg-white py-1 text-base ring-1 ring-black ring-opacity-5 focus:outline-none"},{default:f((()=>[(d(!0),y(x,null,$(m(s)?.options??[],((e,t)=>(d(),p(cs,{key:t,value:e.value,class:"relative block cursor-default select-none truncate py-2 pl-3 pr-9","selected-class":"font-semibold","unselected-class":"font-normal","active-class":"bg-indigo-600 text-white","inactive-class":"text-gray-900"},null,8,["value"])))),128))])),_:1})],2),A(is,{class:"mt-2 text-sm text-red-600"})])),_:1},16))}});zs.__file="src/components/forms/AGSelect.vue";var Ds=u({__name:"AGModalTitle",setup:e=>(e,t)=>(d(),p(ds,{class:"mb-2 font-semibold"},{default:f((()=>[v(e.$slots,"default")])),_:3}))});Ds.__file="src/components/modals/AGModalTitle.vue";const Us={String:"string",Number:"number",Boolean:"boolean",Object:"object"},Fs=new WeakMap;class Ns extends R{constructor(t){super(),J(this,"errors",void 0),J(this,"_fields",void 0),J(this,"_data",void 0),J(this,"_submitted",void 0),J(this,"_errors",void 0),this._fields=t,this._submitted=e(!1),this._data=this.getInitialData(t),this._errors=this.getInitialErrors(t),Fs.set(this,l((()=>!Object.values(this._errors).some((e=>null!==e))))),this.errors=E(this._errors)}get valid(){return!!Fs.get(this)?.value}get submitted(){return this._submitted.value}setFieldValue(e,t){this._data[e]=t,this._submitted.value&&this.validate()}getFieldValue(e){return this._data[e]}validate(){const e=Object.entries(this._fields).reduce(((e,t)=>{let[s,r]=t;return e[s]=this.getFieldErrors(s,r),e}),{});return this.resetErrors(e),this.valid}reset(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._submitted.value=!1,e.keepData||this.resetData(),e.keepErrors||this.resetErrors()}submit(){return this._submitted.value=!0,this.validate()}__get(e){return e in this._fields?this._data[e]:super.__get(e)}__set(e,t){e in this._fields?Object.assign(this._data,{[e]:t}):super.__set(e,t)}getFieldErrors(e,t){const s=[];return t.rules?.includes("required")&&!this._data[e]&&s.push("required"),s.length>0?s:null}getInitialData(e){if(this.static().isConjuring())return{};const t=Object.entries(e).reduce(((e,t)=>{let[s,r]=t;return e[s]=r.default??null,e}),{});return s(t)}getInitialErrors(e){if(this.static().isConjuring())return{};const t=Object.keys(e).reduce(((e,t)=>(e[t]=null,e)),{});return s(t)}resetData(){for(const[e,t]of Object.entries(this._fields))this._data[e]=t.default??null}resetErrors(e){Object.keys(this._errors).forEach((e=>delete this._errors[e])),e&&Object.assign(this._errors,e)}}function Ks(e){return new Ns(e)}function Ws(e){return{default:e,type:Us.Boolean}}function Qs(e){return{default:e,type:Us.Boolean,rules:"required"}}function Zs(e){return{default:e,type:Us.Number,rules:"required"}}function Ys(e){return{default:e,type:Us.String,rules:"required"}}function Js(e){return{default:e,type:Us.Number}}function Xs(e){return{default:e,type:Us.String}}export{bt as AGAlertModal,Cs as AGAppLayout,js as AGAppOverlays,xt as AGButton,Is as AGCheckbox,wt as AGConfirmModal,$s as AGErrorMessage,zt as AGErrorReportModalButtons,Dt as AGErrorReportModalTitle,Rs as AGForm,yt as AGHeadlessButton,Jt as AGHeadlessInput,es as AGHeadlessInputError,ss as AGHeadlessInputInput,os as AGHeadlessInputLabel,dt as AGHeadlessModal,ft as AGHeadlessModalPanel,ds as AGHeadlessModalTitle,ns as AGHeadlessSelect,as as AGHeadlessSelectButton,is as AGHeadlessSelectError,us as AGHeadlessSelectLabel,cs as AGHeadlessSelectOption,ms as AGHeadlessSnackbar,Bs as AGInput,Es as AGLink,Wt as AGLoadingModal,_t as AGMarkdown,ht as AGModal,pt as AGModalContext,Ds as AGModalTitle,zs as AGSelect,gs as AGSnackbar,Ae as App,xe as AppService,tt as Colors,st as Errors,be as Events,_e as EventsService,Us as FormFieldTypes,Ye as Lang,ge as Service,fs as SnackbarColors,Ze as UI,Qe as UIComponents,Ge as arrayProp,Ws as booleanInput,Se as booleanProp,Ne as bootServices,ys as bootstrapApplication,je as componentRef,Me as defineDirective,we as definePlugin,he as defineServiceState,Ce as enumProp,$t as errorReportModalProps,Yt as extractSelectProps,He as injectOrFail,$e as injectReactive,Ee as injectReactiveOrFail,ke as installPlugins,Ie as mixedProp,Js as numberInput,Le as numberProp,Re as objectProp,ct as onCleanMounted,Oe as requiredArrayProp,Qs as requiredBooleanInput,Be as requiredEnumProp,Pe as requiredMixedProp,Zs as requiredNumberInput,Te as requiredNumberProp,Ve as requiredObjectProp,Ys as requiredStringInput,qe as requiredStringProp,Qt as selectProps,vs as snackbarProps,Xs as stringInput,ze as stringProp,Je as translate,Xe as translateWithDefault,Et as useErrorReportModalProps,it as useEvent,Ks as useForm,ut as useInputAttrs,Zt as useSelectProps,hs as useSnackbarProps};
|
|
2
2
|
//# sourceMappingURL=aerogel-core.esm.js.map
|