@aerogel/core 0.0.0-next.d824b40e5d06757cd9f47c9f771d916185df4f05 → 0.0.0-next.f1f5a990033d966dc0bb12d251110fbc9350dcc7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/aerogel-core.cjs.js +1 -1
  2. package/dist/aerogel-core.cjs.js.map +1 -1
  3. package/dist/aerogel-core.d.ts +641 -110
  4. package/dist/aerogel-core.esm.js +1 -1
  5. package/dist/aerogel-core.esm.js.map +1 -1
  6. package/histoire.config.ts +7 -0
  7. package/package.json +14 -5
  8. package/postcss.config.js +6 -0
  9. package/src/assets/histoire.css +3 -0
  10. package/src/bootstrap/bootstrap.test.ts +4 -3
  11. package/src/bootstrap/index.ts +18 -3
  12. package/src/components/AGAppLayout.vue +7 -2
  13. package/src/components/AGAppOverlays.vue +5 -1
  14. package/src/components/AGAppSnackbars.vue +1 -1
  15. package/src/components/forms/AGSelect.story.vue +28 -0
  16. package/src/components/forms/AGSelect.vue +53 -0
  17. package/src/components/forms/index.ts +5 -6
  18. package/src/components/headless/forms/AGHeadlessInput.ts +21 -1
  19. package/src/components/headless/forms/AGHeadlessInput.vue +8 -5
  20. package/src/components/headless/forms/AGHeadlessInputLabel.vue +8 -2
  21. package/src/components/headless/forms/AGHeadlessSelect.ts +39 -0
  22. package/src/components/headless/forms/AGHeadlessSelect.vue +76 -0
  23. package/src/components/headless/forms/AGHeadlessSelectButton.vue +24 -0
  24. package/src/components/headless/forms/AGHeadlessSelectError.vue +26 -0
  25. package/src/components/headless/forms/AGHeadlessSelectLabel.vue +24 -0
  26. package/src/components/headless/forms/AGHeadlessSelectOption.ts +4 -0
  27. package/src/components/headless/forms/AGHeadlessSelectOption.vue +39 -0
  28. package/src/components/headless/forms/AGHeadlessSelectOptions.ts +3 -0
  29. package/src/components/headless/forms/index.ts +9 -1
  30. package/src/components/headless/modals/AGHeadlessModal.ts +27 -0
  31. package/src/components/headless/modals/AGHeadlessModal.vue +3 -5
  32. package/src/components/headless/modals/index.ts +4 -6
  33. package/src/components/headless/snackbars/index.ts +23 -8
  34. package/src/components/index.ts +1 -1
  35. package/src/components/lib/AGMeasured.vue +15 -0
  36. package/src/components/lib/AGStartupCrash.vue +31 -0
  37. package/src/components/lib/index.ts +5 -0
  38. package/src/components/modals/AGAlertModal.ts +15 -0
  39. package/src/components/modals/AGAlertModal.vue +4 -15
  40. package/src/components/modals/AGConfirmModal.ts +27 -0
  41. package/src/components/modals/AGConfirmModal.vue +7 -11
  42. package/src/components/modals/AGErrorReportModal.ts +27 -1
  43. package/src/components/modals/AGErrorReportModal.vue +8 -16
  44. package/src/components/modals/AGErrorReportModalButtons.vue +4 -2
  45. package/src/components/modals/AGErrorReportModalTitle.vue +1 -1
  46. package/src/components/modals/AGLoadingModal.ts +23 -0
  47. package/src/components/modals/AGLoadingModal.vue +4 -8
  48. package/src/components/modals/AGModal.ts +1 -1
  49. package/src/components/modals/AGModal.vue +14 -12
  50. package/src/components/modals/index.ts +3 -0
  51. package/src/components/snackbars/AGSnackbar.vue +3 -9
  52. package/src/components/utils.ts +10 -0
  53. package/src/directives/index.ts +3 -1
  54. package/src/directives/measure.ts +12 -0
  55. package/src/errors/Errors.ts +10 -5
  56. package/src/errors/index.ts +9 -13
  57. package/src/forms/Form.ts +11 -3
  58. package/src/main.histoire.ts +1 -0
  59. package/src/services/App.state.ts +3 -3
  60. package/src/services/App.ts +10 -1
  61. package/src/services/Service.ts +8 -4
  62. package/src/services/index.ts +1 -1
  63. package/src/ui/UI.ts +77 -14
  64. package/src/ui/index.ts +6 -3
  65. package/src/utils/composition/events.ts +1 -0
  66. package/src/utils/index.ts +1 -0
  67. package/src/utils/tailwindcss.test.ts +26 -0
  68. package/src/utils/tailwindcss.ts +7 -0
  69. package/src/utils/vue.ts +13 -4
  70. package/tailwind.config.js +4 -0
  71. package/tsconfig.json +1 -1
  72. package/.eslintrc.js +0 -3
  73. package/dist/virtual.d.ts +0 -11
  74. package/src/components/basic/index.ts +0 -5
  75. package/src/types/virtual.d.ts +0 -11
  76. /package/src/components/{basic → lib}/AGErrorMessage.vue +0 -0
  77. /package/src/components/{basic → lib}/AGLink.vue +0 -0
  78. /package/src/components/{basic → lib}/AGMarkdown.vue +0 -0
@@ -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 w,createCommentVNode as A,createElementVNode as k,mergeProps as G,h as j,normalizeClass as S,createTextVNode as M,toDisplayString as C,renderList as E,readonly as $,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 R,MagicObject as L,PromisedValue as P,objectOnly as B,isEmpty as O,Storage as q,objectDeepClone as D,facade as T,arr as z,tap as V,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,DialogTitle as ne}from"@headlessui/vue";import ae from"dompurify";import{marked as le,Renderer as ie}from"marked";class ServiceBootError extends R{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}let ue=null;function ce(){return ue||(ue=ee(),te(ue)),ue}function de(e){var t;return J(t=class extends pe{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 pe extends L{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 P,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&(t=this._name,r={state:()=>this.getInitialState(),getters:e},ce(),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=B(e,t);if(O(r))return;const s=q.require(this._name);q.set(this._name,{...s,...this.serializePersistedState(D(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()&&!O(e))if(q.has(this._name)){const e=q.require(this._name);this.setState(e)}else q.set(this._name,B(this.getState(),e))}}J(pe,"persist",[]);class me extends pe{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]??=z([])).push(t),()=>this.off(e,t)}once(e,t){let r=null;return V((()=>r&&this.off(e,r)),(s=>{(this.listeners[e]??=z([])).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 fe=T(new me),he=de({name:"app",initialState:{plugins:{},environment:re.environment,sourceUrl:re.sourceUrl,isMounted:!1},computed:{development:e=>"development"===e.environment,testing:e=>"testing"===e.environment}});class ve extends he{plugin(e){return this.plugins[e]??null}async boot(){fe.once("application-mounted",(()=>this.setState({isMounted:!0})))}}var ge=T(new ve);function _e(e){return e}async function be(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];ge.setState("plugins",e.reduce(((e,t)=>(t.name&&(e[t.name]=t),e)),{})),await Promise.all(e.map((e=>e.install(...r)))??[])}function ye(e){return{type:Array,default:e??(()=>[])}}function xe(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function we(){return e()}function Ae(e){return e}function ke(e,t){const r=Object.values(e);return{type:String,default:t??r[0]??null,validator:e=>r.includes(e)}}function Ge(e){const s=t(e);return s?r(s):void 0}function je(e,t){return Ge(e)??U(t??`Could not resolve '${e}' injection key`)}function Se(e,r){return t(e)??U(r??`Could not resolve '${e}' injection key`)}function Me(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 $e(){return{type:Array,required:!0}}function He(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}}function Ie(e){return{type:e,required:!0}}function Re(){return{type:Number,required:!0}}function Le(){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 Oe={"initial-focus":{mounted(e,t){let{value:r}=t;!1!==r&&e.focus()}}};var qe={install(e,t){const r={...Oe,...t.directives};for(const[t,s]of Object.entries(r))e.directive(t,s)}};const De={$app:ge,$events:fe};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),ge.development&&Object.assign(window,t)}var ze={async install(e,t){const r={...De,...t.services};e.use(ue??ce()),await Te(e,r)}},Ve=de({name:"ui",initialState:{modals:[],snackbars:[]}});const Ue={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",ErrorReportModal:"error-report-modal",LoadingModal:"loading-modal",Snackbar:"snackbar"};var Fe=T(new class extends Ve{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(Ue.AlertModal),r)}async confirm(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e},s=await this.openModal(this.requireComponent(Ue.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(Ue.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(Ue.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&&fe.emit("hide-modal",{id:l.id})),await Promise.all([l||fe.emit("show-overlays-backdrop"),fe.emit("show-modal",{id:a.id})]),a}async closeModal(e,t){await fe.emit("close-modal",{id:e,result:t})}async boot(){this.watchModalEvents()}watchModalEvents(){fe.on("modal-will-close",(e=>{let{modal:t,result:r}=e;this.modalCallbacks[t.id]?.willClose?.(r),1===this.modals.length&&fe.emit("hide-overlays-backdrop")})),fe.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&&fe.emit("show-modal",{id:s.id}))}))}});var Ne=T(new class extends pe{constructor(){super(),J(this,"provider",void 0),this.provider={translate:e=>(ge.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 Ke=Ne.translate.bind(Ne),Qe=Ne.translateWithDefault.bind(Ne);var We=de({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 Ze={Primary:"primary",Secondary:"secondary",Danger:"danger",Clear:"clear"};var Ye=T(new class extends We{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?Fe.openModal(Fe.requireComponent(Ue.ErrorReportModal),{reports:t}):Fe.alert(Qe("errors.inspectEmpty","Nothing to inspect!"))}async report(e,t){if((ge.development||ge.testing)&&this.logError(e),!this.enabled)throw e;if(!ge.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};Fe.showSnackbar(t??Qe("errors.notice","Something went wrong, but it's not your fault. Try again!"),{color:Ze.Danger,actions:[{text:Qe("errors.viewDetails","View details"),dismiss:!0,handler:()=>Fe.openModal(Fe.requireComponent(Ue.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 R?e.message:K(e)?N(e.message??e.description??"Unknown error object"):Qe("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 R?this.createErrorReportFromError(e):K(e)?Q({title:N(e.name??e.title??Qe("errors.unknown","Unknown Error")),description:N(e.message??e.description??Qe("errors.unknownDescription","Unknown error object")),error:e}):{title:Qe("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 Je={$errors:Ye};function Xe(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>!1;return V((t=>e(t)||(e=>Ye.instance?(Ye.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 et={async install(e,t){const r=Xe(t.handleError);e.config.errorHandler=r,await Te(e,Je)}};const tt={$lang:Ne};var rt={async install(e){e.config.globalProperties.$t??=Ke,e.config.globalProperties.$td=Qe,await Te(e,tt)}};function st(e,t){const r=fe.on(e,t);n((()=>r()))}function ot(){const e=a(),t=l((()=>e.class));return[l((()=>W(e,"class"))),t]}function nt(e){let t=Z;i((()=>t=e())),n((()=>t()))}var at=u({__name:"AGHeadlessModal",props:{cancellable:xe(!0)},setup(t,{expose:r}){const s=t,o=e(null),n=e(!0),a=e(!1),{modal:l}=je("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||(fe.emit("modal-will-close",{modal:l,result:e}),await i(),a.value=!0,fe.emit("modal-closed",{modal:l,result:e}))}return st("close-modal",(async({id:e,result:t})=>{e===l.id&&await u(t)})),st("hide-modal",(async({id:e})=>{e===l.id&&await i()})),st("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))}});at.__file="src/components/headless/modals/AGHeadlessModal.vue";var lt=u({__name:"AGModalContext",props:{modal:Le(),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))}});lt.__file="src/components/modals/AGModalContext.vue";const it=k("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var ut=u({__name:"AGHeadlessModalPanel",setup(e){const t=je("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),r=l((()=>Fe.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},[it,w(lt,{"child-index":m(t).childIndex+1,modal:r.value},null,8,["child-index","modal"])],64)):A("v-if",!0)])),_:3}))}});ut.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const ct={class:"fixed inset-0 flex items-center justify-center p-8"};var dt=u({inheritAttrs:!1,__name:"AGModal",props:{cancellable:xe(!0)},setup(t,{expose:r}){const s=e();return r({close:async()=>s.value?.close(),cancellable:l((()=>!!s.value?.cancellable))}),(e,r)=>(d(),p(at,{ref_key:"$headlessModal",ref:s,cancellable:t.cancellable,class:"relative z-50"},{default:f((({close:t})=>[k("div",ct,[w(ut,{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 pt(e){return t=le(e,{mangle:!1,headerIds:!1,renderer:V(new ie,(e=>{e.link=function(e,t,r){return ie.prototype.link.apply(this,[e,t,r]).replace("<a",'<a target="_blank"')}}))}),ae.sanitize(t,{ADD_ATTR:["target"]});var t}dt.__file="src/components/modals/AGModal.vue";var mt=u({__name:"AGMarkdown",props:{as:Be(),inline:xe(),langKey:Be(),langParams:Ee(),text:Be()},setup(e){const t=e,r=l((()=>t.text??(t.langKey&&Ke(t.langKey,t.langParams??{})))),s=l((()=>{if(!r.value)return null;let e=pt(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))}});mt.__file="src/components/basic/AGMarkdown.vue";var ft=u({__name:"AGAlertModal",props:{title:Be(),message:Pe()},setup:e=>(t,r)=>(d(),p(dt,null,{default:f((()=>[e.title?(d(),p(mt,{key:0,text:e.title,as:"h2",class:"font-semibold",inline:""},null,8,["text"])):A("v-if",!0),w(mt,{text:e.message},null,8,["text"])])),_:1}))});ft.__file="src/components/modals/AGAlertModal.vue";var ht=u({__name:"AGHeadlessButton",props:{href:Be(),url:Be(),route:Be(),routeParams:Ee((()=>({}))),routeQuery:Ee((()=>({}))),submit:xe()},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))}});ht.__file="src/components/headless/forms/AGHeadlessButton.vue";var vt=u({__name:"AGButton",props:{color:ke(Ze,Ze.Primary)},setup(e){const t=e,r=l((()=>{switch(t.color){case Ze.Secondary:return["text-white bg-gray-600","hover:bg-gray-500","focus-visible:outline-offset-2 focus-visible:outline-gray-600"].join(" ");case Ze.Clear:return"hover:bg-gray-500/20 focus-visible:outline-gray-500/60";case Ze.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(ht,{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"]))}});vt.__file="src/components/forms/AGButton.vue";const gt={class:"mt-2 flex flex-row-reverse gap-2"};var _t=u({__name:"AGConfirmModal",props:{title:Be(),message:Pe()},setup:e=>(t,r)=>(d(),p(dt,{cancellable:!1},{default:f((({close:r})=>[e.title?(d(),p(mt,{key:0,text:e.title,as:"h1"},null,8,["text"])):A("v-if",!0),w(mt,{text:e.message},null,8,["text"]),k("div",gt,[w(vt,{onClick:e=>r(!0)},{default:f((()=>[M(C(t.$td("ui.ok","OK")),1)])),_:2},1032,["onClick"]),w(vt,{color:"secondary",onClick:e=>r()},{default:f((()=>[M(C(t.$td("ui.cancel","Cancel")),1)])),_:2},1032,["onClick"])])])),_:1}))});_t.__file="src/components/modals/AGConfirmModal.vue";const bt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},yt=[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 xt={name:"zondicons-cheveron-right",render:function(e,t){return d(),y("svg",bt,yt)}};const wt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},At=[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 kt={name:"zondicons-cheveron-left",render:function(e,t){return d(),y("svg",wt,At)}};const Gt={reports:$e()};function jt(){return Gt}const St={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Mt=[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",St,Mt)}};const Et={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},$t=[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 Ht={name:"zondicons-copy",render:function(e,t){return d(),y("svg",Et,$t)}};const It={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 Lt={name:"mdi-github",render:function(e,t){return d(),y("svg",It,Rt)}};const Pt={class:"flex"};var Bt=u({__name:"AGErrorReportModalButtons",props:{report:Le()},setup(e){const t=e,r=l((()=>t.report.description?`${t.report.title}: ${t.report.description}`:t.report.title)),s=l((()=>{if(!ge.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-ge.sourceUrl.length).trim(),"```"].join("\n"));return`${ge.sourceUrl}/issues/new?title=${e}&body=${s}`})),o=l((()=>V([{id:"clipboard",description:"Copy to clipboard",iconComponent:Ht,async handler(){await navigator.clipboard.writeText(`${r.value}\n\n${t.report.details}`),Fe.showSnackbar(Qe("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),Fe.showSnackbar(Qe("errors.addedToConsole","You can now use the **error** variable in the console"))}}],(e=>{s.value&&e.push({id:"github",description:"Report in GitHub",iconComponent:Lt,url:s.value})}))));return(e,t)=>(d(),y("div",Pt,[(d(!0),y(x,null,E(o.value,((t,r)=>h(e.$slots,"default",G(t,{key:r}),(()=>[w(vt,{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 Ot=u({__name:"AGErrorReportModalTitle",props:{report:Le(),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(mt,{text:r.value,inline:""},null,8,["text"]))}});Ot.__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:jt(),setup(t){const r=t,s=e(0),o=l((()=>r.reports[s.value]));return(e,t)=>(d(),p(dt,null,{default:f((()=>[k("div",null,[k("h2",qt,[k("div",Dt,[w(Ot,{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},[w(vt,{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((()=>[w(m(kt),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"]),w(vt,{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((()=>[w(m(xt),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"])],64)):A("v-if",!0)]),w(Bt,{report:o.value},null,8,["report"])]),o.value.description?(d(),p(mt,{key:0,text:o.value.description,class:"mt-2"},null,8,["text"])):A("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,Tt)])),_:1}))}});zt.__file="src/components/modals/AGErrorReportModal.vue";var Vt=u({__name:"AGLoadingModal",props:{message:Be()},setup(e){const t=e,r=l((()=>t.message??Qe("ui.loading","Loading...")));return(e,t)=>(d(),p(dt,{cancellable:!1},{default:f((()=>[w(mt,{text:r.value},null,8,["text"])])),_:1}))}});Vt.__file="src/components/modals/AGLoadingModal.vue";var Ut=u({__name:"AGHeadlessInput",props:{as:Be("div"),name:Be(),modelValue:Me([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:$(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})}});Ut.__file="src/components/headless/forms/AGHeadlessInput.vue";const Ft=["id"];var Nt=u({__name:"AGHeadlessInputError",setup(e){const t=je("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),r=l((()=>t.errors?Qe(`errors.${t.errors[0]}`,`Error: ${t.errors[0]}`):null));return(e,s)=>r.value?(d(),y("p",{key:0,id:`${m(t).id}-error`},C(r.value),9,Ft)):A("v-if",!0)}});Nt.__file="src/components/headless/forms/AGHeadlessInputError.vue";const Kt=["id","type","value","aria-invalid","aria-describedby","checked"];var Qt=u({__name:"AGHeadlessInputInput",props:{type:Be("text")},setup(t){const r=t,s=e(),o=je("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,Kt))}});Qt.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const Wt=["for"];var Zt=u({__name:"AGHeadlessInputLabel",setup(e){const t=je("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>");return(e,r)=>(d(),y("label",{for:m(t).id},[h(e.$slots,"default")],8,Wt))}});Zt.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";var Yt=u({__name:"AGHeadlessModalTitle",props:{as:Be("h2")},setup:e=>(t,r)=>(d(),p(m(ne),{as:e.as},{default:f((()=>[h(t.$slots,"default")])),_:3},8,["as"]))});Yt.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const Jt={class:"pointer-events-auto"};var Xt=u({__name:"AGHeadlessSnackbar",setup:e=>(e,t)=>(d(),y("div",Jt,[h(e.$slots,"default")]))});Xt.__file="src/components/headless/snackbars/AGHeadlessSnackbar.vue";const er=W(Ze,["Primary","Clear"]),tr={id:Pe(),message:Pe(),actions:ye((()=>[])),color:ke(er,Ze.Secondary)};function rr(){return tr}var sr=u({__name:"AGSnackbar",props:rr(),setup(e){const t=e,r=l((()=>t.color===Ze.Danger?"bg-red-200 text-red-900":"bg-gray-900 text-white"));return(e,s)=>(d(),p(Xt,{class:S(["flex flex-row items-center justify-center gap-3 p-4",r.value])},{default:f((()=>[w(mt,{text:e.message,inline:""},null,8,["text"]),(d(!0),y(x,null,E(e.actions,((r,s)=>(d(),p(vt,{key:s,color:e.color,onClick:e=>function(e){e.handler?.(),e.dismiss&&Fe.hideSnackbar(t.id)}(r)},{default:f((()=>[M(C(r.text),1)])),_:2},1032,["color","onClick"])))),128))])),_:1},8,["class"]))}});sr.__file="src/components/snackbars/AGSnackbar.vue";const or={$ui:Fe};var nr={async install(e,t){const r={[Ue.AlertModal]:ft,[Ue.ConfirmModal]:_t,[Ue.ErrorReportModal]:zt,[Ue.LoadingModal]:Vt,[Ue.Snackbar]:sr};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return Fe.registerComponent(t,r)})),await Te(e,or)}};async function ar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=[qe,et,rt,ze,nr,...t.plugins??[]],s=H(e);await be(r,s,t),s.mount("#app"),fe.emit("application-mounted")}const lr={key:0};var ir=u({__name:"AGAppModals",setup(e){const t=l((()=>Fe.modals[0]??null));return(e,r)=>t.value?(d(),y("aside",lr,[w(lt,{"child-index":1,modal:t.value},null,8,["modal"])])):A("v-if",!0)}});ir.__file="src/components/AGAppModals.vue";const ur={"aria-live":"assertive",class:"z-60 pointer-events-none fixed inset-0 flex items-end px-4 py-6 sm:p-6"},cr={class:"flex w-full flex-col items-center space-y-4 sm:items-end"};const dr={render:function(e,t){return d(),y("div",ur,[k("div",cr,[(d(!0),y(x,null,E(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 pr=dr,mr=u({__name:"AGAppOverlays",setup(t){const r=e(null),s=e(!0);return st("show-overlays-backdrop",(async()=>{r.value&&s.value&&(s.value=!1,r.value.classList.remove("opacity-0"))})),st("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),w(ir),w(pr)],64))}});mr.__file="src/components/AGAppOverlays.vue";const fr={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var hr=u({__name:"AGAppLayout",setup:e=>(e,t)=>(d(),y("div",fr,[h(e.$slots,"default"),w(mr)]))});hr.__file="src/components/AGAppLayout.vue";var vr=u({__name:"AGErrorMessage",props:{error:Le()},setup(e){const t=e,r=l((()=>Ye.getErrorMessage(t.error)));return(e,t)=>(d(),p(mt,{text:r.value,inline:""},null,8,["text"]))}});vr.__file="src/components/basic/AGErrorMessage.vue";var gr=u({__name:"AGLink",setup:e=>(e,t)=>(d(),p(ht,{class:"font-medium hover:underline"},{default:f((()=>[h(e.$slots,"default")])),_:3}))});gr.__file="src/components/basic/AGLink.vue";const _r={class:"ml-2"};var br=u({inheritAttrs:!1,__name:"AGCheckbox",props:{name:Be()},setup(e){const t=we();return(r,s)=>(d(),p(Ut,{ref_key:"$input",ref:t,name:e.name,class:"flex"},{default:f((()=>[w(Qt,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",_r,[r.$slots.default?(d(),p(Zt,{key:0},{default:f((()=>[h(r.$slots,"default")])),_:3})):A("v-if",!0),w(Nt,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});br.__file="src/components/forms/AGCheckbox.vue";const yr=["onSubmit"];var xr=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,yr))}});xr.__file="src/components/forms/AGForm.vue";const wr={class:"absolute bottom-0 left-0 translate-y-full"};var Ar=u({inheritAttrs:!1,__name:"AGInput",props:{name:Be()},setup(e){const t=we(),[r,s]=ot();return(o,n)=>(d(),p(Ut,{ref_key:"$input",ref:t,class:S(["relative flex flex-col items-center",m(s)]),name:e.name},{default:f((()=>[w(Qt,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",wr,[w(Nt,{class:"mt-1 text-sm text-red-500"})])])),_:1},8,["class","name"]))}});Ar.__file="src/components/forms/AGInput.vue";var kr=u({__name:"AGModalTitle",setup:e=>(e,t)=>(d(),p(Yt,{class:"mb-2 font-semibold"},{default:f((()=>[h(e.$slots,"default")])),_:3}))});kr.__file="src/components/modals/AGModalTitle.vue";const Gr={String:"string",Number:"number",Boolean:"boolean"};class jr extends L{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=$(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 Sr(e){return new jr(e)}function Mr(e){return{default:e,type:Gr.Boolean}}function Cr(e){return{default:e,type:Gr.Boolean,rules:"required"}}function Er(e){return{default:e,type:Gr.Number,rules:"required"}}function $r(e){return{default:e,type:Gr.String,rules:"required"}}function Hr(e){return{default:e,type:Gr.Number}}function Ir(e){return{default:e,type:Gr.String}}export{ft as AGAlertModal,hr as AGAppLayout,mr as AGAppOverlays,vt as AGButton,br as AGCheckbox,_t as AGConfirmModal,vr as AGErrorMessage,Bt as AGErrorReportModalButtons,Ot as AGErrorReportModalTitle,xr as AGForm,ht as AGHeadlessButton,Ut as AGHeadlessInput,Nt as AGHeadlessInputError,Qt as AGHeadlessInputInput,Zt as AGHeadlessInputLabel,at as AGHeadlessModal,ut as AGHeadlessModalPanel,Yt as AGHeadlessModalTitle,Xt as AGHeadlessSnackbar,Ar as AGInput,gr as AGLink,Vt as AGLoadingModal,mt as AGMarkdown,dt as AGModal,lt as AGModalContext,kr as AGModalTitle,sr as AGSnackbar,ge as App,ve as AppService,Ze as Colors,Ye as Errors,fe as Events,me as EventsService,Gr as FormFieldTypes,Ne as Lang,pe as Service,er as SnackbarColors,Fe as UI,Ue as UIComponents,ye as arrayProp,Mr as booleanInput,xe as booleanProp,Te as bootServices,ar as bootstrapApplication,we as componentRef,Ae as defineDirective,_e as definePlugin,de as defineServiceState,ke as enumProp,Gt as errorReportModalProps,Se as injectOrFail,Ge as injectReactive,je as injectReactiveOrFail,be as installPlugins,Me as mixedProp,Hr as numberInput,Ce as numberProp,Ee as objectProp,nt as onCleanMounted,$e as requiredArrayProp,Cr as requiredBooleanInput,He as requiredEnumProp,Ie as requiredMixedProp,Er as requiredNumberInput,Re as requiredNumberProp,Le as requiredObjectProp,$r as requiredStringInput,Pe as requiredStringProp,tr as snackbarProps,Ir as stringInput,Be as stringProp,Ke as translate,Qe as translateWithDefault,jt as useErrorReportModalProps,st as useEvent,Sr as useForm,ot as useInputAttrs,rr as useSnackbarProps};
1
+ import{ref as e,computed as t,watch as s,inject as r,reactive as o,markRaw as n,nextTick as a,onUnmounted as l,useAttrs as i,onMounted as c,defineComponent as u,toRef as d,openBlock as p,createBlock as m,unref as f,withCtx as h,renderSlot as v,provide as g,resolveDynamicComponent as _,normalizeProps as b,guardReactiveProps as y,createElementBlock as x,Fragment as A,createVNode as w,createCommentVNode as G,createElementVNode as S,h as k,mergeProps as j,normalizeClass as C,createTextVNode as M,toDisplayString as $,renderList as E,createApp as H,readonly as I,useSlots as L,withModifiers as R,resolveDirective as T,withDirectives as O}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 B,MagicObject as P,PromisedValue as V,objectOnly as z,isEmpty as q,Storage as D,objectDeepClone as U,facade as F,arr as N,tap as K,updateLocationQueryParameters as W,forever as Q,fail as Z,after as Y,uuid as J,toString as X,isObject as ee,objectWithoutEmpty as te,objectWithout as se,noop as re,stringExcerpt as oe}from"@noeldemartin/utils";import ne 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 ae,createPinia as le,setActivePinia as ie}from"pinia";import ce 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 ue,DialogPanel as de,DialogTitle as pe,Listbox as me,ListboxButton as fe,ListboxLabel as he,ListboxOption as ve,ListboxOptions as ge}from"@headlessui/vue";export{ListboxOptions as AGHeadlessSelectOptions}from"@headlessui/vue";import _e from"dompurify";import{marked as be,Renderer as ye}from"marked";import"core-js/modules/esnext.weak-map.delete-all.js";import"core-js/modules/esnext.weak-map.emplace.js";class ServiceBootError extends B{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}let xe=null;function Ae(){return xe||(xe=le(),ie(xe)),xe}function we(e){var t;return ne(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 P{constructor(){super(),ne(this,"_name",void 0),ne(this,"_booted",void 0),ne(this,"_computedStateKeys",void 0),ne(this,"_store",void 0);const e=this.getComputedStateDefinition();var t,s;this._name=this.getName()??new.target.name,this._booted=new V,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&(t=this._name,s={state:()=>this.getInitialState(),getters:e},Ae(),ae(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=z(e,t);if(q(s))return;const r=D.get(this._name);r&&D.set(this._name,{...r,...this.serializePersistedState(U(s))})}usesStore(){return!1}getName(){return null}getInitialState(){return{}}getComputedStateDefinition(){return{}}serializePersistedState(e){return e}async frameworkBoot(){this.initializePersistedState()}async boot(){}initializePersistedState(){const e=this.constructor.persist;if(this.usesStore()&&!q(e))if(D.has(this._name)){const e=D.require(this._name);this.setState(e)}else D.set(this._name,z(this.getState(),e))}}ne(Ge,"persist",[]);class Se extends Ge{constructor(){super(...arguments),ne(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]??=N([])).push(t),()=>this.off(e,t)}once(e,t){let s=null;return K((()=>s&&this.off(e,s)),(r=>{(this.listeners[e]??=N([])).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 ke=F(new Se),je=we({name:"app",initialState:{plugins:{},environment:ce.environment,sourceUrl:ce.sourceUrl,isMounted:!1},computed:{development:e=>"development"===e.environment,testing:e=>"testing"===e.environment}});class Ce extends je{async reload(e){e&&W(e),location.reload(),await Q()}plugin(e){return this.plugins[e]??null}async boot(){ke.once("application-mounted",(()=>this.setState({isMounted:!0})))}}var Me=F(new Ce);function $e(e){return e}async function Ee(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];Me.setState("plugins",e.reduce(((e,t)=>(t.name&&(e[t.name]=t),e)),{})),await Promise.all(e.map((e=>e.install(...s)))??[])}function He(e){return{type:Array,default:e??(()=>[])}}function Ie(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function Le(){return e()}function Re(r){const o=e(),n=t(r);return s(n,(async()=>o.value=await n.value),{immediate:!0}),o}function Te(e){return e}function Oe(e,t){const s=Object.values(e);return{type:String,default:t??s[0]??null,validator:e=>s.includes(e)}}function Be(e){const t=r(e);return t?o(t):void 0}function Pe(e,t){return Be(e)??Z(t??`Could not resolve '${e}' injection key`)}function Ve(e,t){return r(e)??Z(t??`Could not resolve '${e}' injection key`)}function ze(e){return{type:e,default:null}}function qe(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function De(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function Ue(){return{type:Array,required:!0}}function Fe(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}}function Ne(e){return{type:e,required:!0}}function Ke(){return{type:Number,required:!0}}function We(){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 Ye={"initial-focus":{mounted(e,t){let{value:s}=t;!1!==s&&e.focus()}},measure:{mounted(e,t){let{value:s}=t;const r=e.getBoundingClientRect();e.style.setProperty("--width",`${r.width}px`),e.style.setProperty("--height",`${r.height}px`),s?.()}}};var Je={install(e,t){const s={...Ye,...t.directives};for(const[t,r]of Object.entries(s))e.directive(t,r)}};const Xe={$app:Me,$events:ke};async function et(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),Me.development&&Object.assign(window,t)}var tt={async install(e,t){const s={...Xe,...t.services};e.use(xe??Ae()),await et(e,s)}},st=we({name:"ui",initialState:{modals:[],snackbars:[]}});const rt={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",ErrorReportModal:"error-report-modal",LoadingModal:"loading-modal",Snackbar:"snackbar",StartupCrash:"startup-crash"};class ot extends st{constructor(){super(...arguments),ne(this,"modalCallbacks",{}),ne(this,"components",{})}requireComponent(e){return this.components[e]??Z(`UI Component '${e}' is not defined!`)}alert(e,t){this.openModal(this.requireComponent(rt.AlertModal),"string"!=typeof t?{message:e}:{title:e,message:t})}async confirm(e,t,s){const r=await this.openModal(this.requireComponent(rt.ConfirmModal),"string"!=typeof t?{message:e,...t??{}}:{title:e,message:t,...s??{}});return await r.beforeClose??!1}async loading(e,t){const s=await this.openModal(this.requireComponent(rt.LoadingModal),"string"!=typeof e?{}:{message:e});try{t="string"==typeof e?t:e;const[s]=await Promise.all([t,Y({seconds:1})]);return s}finally{await this.closeModal(s.id)}}showSnackbar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s={id:J(),properties:{message:e,...t},component:t.component??n(this.requireComponent(rt.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=J(),r={},o={id:s,properties:t??{},component:n(e),beforeClose:new Promise((e=>r.willClose=e)),afterClose:new Promise((e=>r.closed=e))},l=this.modals.at(-1),i=this.modals.concat(o);return this.modalCallbacks[o.id]=r,this.setState({modals:i}),await a(),await(l&&ke.emit("hide-modal",{id:l.id})),await Promise.all([l||ke.emit("show-overlays-backdrop"),ke.emit("show-modal",{id:o.id})]),o}async closeModal(e,t){await ke.emit("close-modal",{id:e,result:t})}async boot(){this.watchModalEvents(),this.watchMountedEvent()}watchModalEvents(){ke.on("modal-will-close",(e=>{let{modal:t,result:s}=e;this.modalCallbacks[t.id]?.willClose?.(s),1===this.modals.length&&ke.emit("hide-overlays-backdrop")})),ke.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&&ke.emit("show-modal",{id:r.id}))}))}watchMountedEvent(){ke.once("application-mounted",(async()=>{const e=document.getElementById("splash");e&&("0"!==window.getComputedStyle(e).opacity&&(e.style.opacity="0",await Y({ms:600})),e.remove())}))}}var nt=F(new ot);var at=F(new class extends Ge{constructor(){super(),ne(this,"provider",void 0),this.provider={translate:e=>(Me.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"),X(r))}),s):o}});const lt=at.translate.bind(at),it=at.translateWithDefault.bind(at);var ct=we({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 ut={Primary:"primary",Secondary:"secondary",Danger:"danger",Clear:"clear"};var dt=F(new class extends ct{constructor(){super(...arguments),ne(this,"forceReporting",!1),ne(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?nt.openModal(nt.requireComponent(rt.ErrorReportModal),{reports:t}):nt.alert(it("errors.inspectEmpty","Nothing to inspect!"))}async report(e,t){if((Me.development||Me.testing)&&this.logError(e),!this.enabled)throw e;if(!Me.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};nt.showSnackbar(t??it("errors.notice","Something went wrong, but it's not your fault. Try again!"),{color:ut.Danger,actions:[{text:it("errors.viewDetails","View details"),dismiss:!0,handler:()=>nt.openModal(nt.requireComponent(rt.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 B?e.message:ee(e)?X(e.message??e.description??"Unknown error object"):it("errors.unknown","Unknown Error")}logError(e){console.error(e),ee(e)&&e.cause&&this.logError(e.cause)}async createErrorReport(e){return"string"==typeof e?{title:e}:e instanceof Error||e instanceof B?this.createErrorReportFromError(e):ee(e)?te({title:X(e.name??e.title??it("errors.unknown","Unknown Error")),description:X(e.message??e.description??it("errors.unknownDescription","Unknown error object")),error:e}):{title:it("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 pt={$errors:dt};function mt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>!1;const s=e=>t(e)||(e=>dt.instance?(dt.report(e),!0):(console.warn("Errors service hasn't been initialized properly!"),console.error(e),!0))(e);e.config.errorHandler=s,globalThis.onerror=(e,t,r,o,n)=>s(n??e),globalThis.onunhandledrejection=e=>s(e.reason)}var ft={async install(e,t){mt(e,t.handleError),await et(e,pt)}};const ht={$lang:at};var vt={async install(e){e.config.globalProperties.$t??=lt,e.config.globalProperties.$td=it,await et(e,ht)}};function gt(e,t){const s=ke.on(e,t);l((()=>s()))}function _t(){const e=i(),s=t((()=>e.class));return[t((()=>se(e,"class"))),s]}function bt(e){let t=re;c((()=>t=e())),l((()=>t()))}function yt(e){return e.split(/\s+/).filter((e=>!/^(hover|focus|focus-visible):/.test(e))).join(" ").trim()}function xt(e,t){return Object.keys(t).reduce(((t,s)=>(t[s]=e[s],t)),{})}const At={cancellable:Ie(!0),title:Ze()};function wt(){return At}function Gt(e){return xt(e,At)}function St(e){return{close:async()=>e.value?.close(),cancellable:t((()=>!!e.value?.cancellable))}}var kt=u({__name:"AGHeadlessModal",props:wt(),setup(t,{expose:s}){const r=t,o=e(null),n=e(!0),a=e(!1),{modal:l}=Pe("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 c(e){a.value||(ke.emit("modal-will-close",{modal:l,result:e}),await i(),a.value=!0,ke.emit("modal-closed",{modal:l,result:e}))}return gt("close-modal",(async({id:e,result:t})=>{e===l.id&&await c(t)})),gt("hide-modal",(async({id:e})=>{e===l.id&&await i()})),gt("show-modal",(async({id:e})=>{e===l.id&&await async function(){o.value?.$el&&(n.value=!1)}()})),s({close:c,cancellable:d(r,"cancellable")}),(e,t)=>(p(),m(f(ue),{ref_key:"$root",ref:o,open:!0,onClose:t[0]||(t[0]=t=>e.cancellable&&c())},{default:h((()=>[v(e.$slots,"default",{close:c})])),_:3},512))}});kt.__file="src/components/headless/modals/AGHeadlessModal.vue";var jt=u({__name:"AGModalContext",props:{modal:We(),childIndex:Ke()},setup(e){const t=e;return g("modal",{modal:d(t,"modal"),childIndex:d(t,"childIndex")}),(t,s)=>(p(),m(_(e.modal.component),b(y(e.modal.properties)),null,16))}});jt.__file="src/components/modals/AGModalContext.vue";const Ct=S("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var Mt=u({__name:"AGHeadlessModalPanel",setup(e){const s=Pe("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),r=t((()=>nt.modals[s.childIndex]??null));return(e,t)=>(p(),m(f(de),null,{default:h((()=>[v(e.$slots,"default"),r.value?(p(),x(A,{key:0},[Ct,w(jt,{"child-index":f(s).childIndex+1,modal:r.value},null,8,["child-index","modal"])],64)):G("v-if",!0)])),_:3}))}});Mt.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";var $t=u({__name:"AGHeadlessModalTitle",props:{as:Ze("h2")},setup:e=>(t,s)=>(p(),m(f(pe),{as:e.as},{default:h((()=>[v(t.$slots,"default")])),_:3},8,["as"]))});function Et(e){return t=be(e,{mangle:!1,headerIds:!1,renderer:K(new ye,(e=>{e.link=function(e,t,s){return ye.prototype.link.apply(this,[e,t,s]).replace("<a",'<a target="_blank"')}}))}),_e.sanitize(t,{ADD_ATTR:["target"]});var t}$t.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";var Ht=u({__name:"AGMarkdown",props:{as:Ze(),inline:Ie(),langKey:Ze(),langParams:De(),text:Ze()},setup(e){const s=e,r=t((()=>s.text??(s.langKey&&lt(s.langKey,s.langParams??{})))),o=t((()=>{if(!r.value)return null;let e=Et(r.value);return s.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),n=()=>k(s.as??(s.inline?"span":"div"),{class:s.inline?"":"prose",innerHTML:o.value});return(e,t)=>(p(),m(n))}});Ht.__file="src/components/lib/AGMarkdown.vue";const It={class:"fixed inset-0 flex items-center justify-center p-8"};var Lt=u({inheritAttrs:!1,__name:"AGModal",props:wt(),setup(t,{expose:s}){const r=t,o=e();return s(St(o)),(e,t)=>(p(),m(kt,j({ref_key:"$modal",ref:o},r,{class:"relative z-50"}),{default:h((({close:t})=>[S("div",It,[w(Mt,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white p-4"},{default:h((()=>[e.title?(p(),m($t,{key:0,class:"mb-2 text-lg font-semibold"},{default:h((()=>[w(Ht,{text:e.title,inline:""},null,8,["text"])])),_:1})):G("v-if",!0),S("div",j({class:"flex max-h-full flex-col overflow-auto"},e.$attrs),[v(e.$slots,"default",{close:t})],16)])),_:2},1024)])])),_:3},16))}});Lt.__file="src/components/modals/AGModal.vue";const Rt={title:Ze(),message:Qe()};function Tt(){return Rt}var Ot=u({__name:"AGAlertModal",props:Tt(),setup:e=>(e,t)=>(p(),m(Lt,{title:e.title},{default:h((()=>[w(Ht,{text:e.message},null,8,["text"])])),_:1},8,["title"]))});Ot.__file="src/components/modals/AGAlertModal.vue";const Bt={title:Ze(),message:Qe(),acceptText:Ze(),cancelText:Ze()};function Pt(){return Bt}function Vt(e){return{renderedAcceptText:t((()=>e.acceptText??it("ui.accept","Ok"))),renderedCancelText:t((()=>e.cancelText??it("ui.cancel","Cancel")))}}var zt=u({__name:"AGHeadlessButton",props:{href:Ze(),url:Ze(),route:Ze(),routeParams:De((()=>({}))),routeQuery:De((()=>({}))),submit:Ie()},setup(e){const{href:s,url:r,route:o,routeParams:n,routeQuery:a,submit:l}=e,i=t((()=>o?{tag:"router-link",props:{to:te({name:o,params:n,query:a})}}:s||r?{tag:"a",props:{target:"_blank",href:s||r}}:{tag:"button",props:{type:l?"submit":"button"}}));return(e,t)=>(p(),m(_(i.value.tag),b(y(i.value.props)),{default:h((()=>[v(e.$slots,"default")])),_:3},16))}});zt.__file="src/components/headless/forms/AGHeadlessButton.vue";var qt=u({__name:"AGButton",props:{color:Oe(ut,ut.Primary)},setup(e){const s=e,r=t((()=>{switch(s.color){case ut.Secondary:return["text-white bg-gray-600","hover:bg-gray-500","focus-visible:outline-offset-2 focus-visible:outline-gray-600"].join(" ");case ut.Clear:return"hover:bg-gray-500/20 focus-visible:outline-gray-500/60";case ut.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)=>(p(),m(zt,{class:C(["px-2.5 py-1.5 focus-visible:outline focus-visible:outline-2",r.value])},{default:h((()=>[v(e.$slots,"default")])),_:3},8,["class"]))}});qt.__file="src/components/forms/AGButton.vue";const Dt={class:"mt-2 flex flex-row-reverse gap-2"};var Ut=u({__name:"AGConfirmModal",props:Pt(),setup(e){const t=e,{renderedAcceptText:s,renderedCancelText:r}=Vt(t);return(e,t)=>(p(),m(Lt,{cancellable:!1,title:e.title},{default:h((({close:t})=>[w(Ht,{text:e.message},null,8,["text"]),S("div",Dt,[w(qt,{onClick:e=>t(!0)},{default:h((()=>[M($(f(s)),1)])),_:2},1032,["onClick"]),w(qt,{color:"secondary",onClick:e=>t()},{default:h((()=>[M($(f(r)),1)])),_:2},1032,["onClick"])])])),_:1},8,["title"]))}});Ut.__file="src/components/modals/AGConfirmModal.vue";const Ft={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Nt=[S("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 Kt={name:"zondicons-cheveron-right",render:function(e,t){return p(),x("svg",Ft,Nt)}};const Wt={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Qt=[S("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 Zt={name:"zondicons-cheveron-left",render:function(e,t){return p(),x("svg",Wt,Qt)}};const Yt={reports:Ue()};function Jt(){return Yt}function Xt(s){const r=e(0),o=t((()=>s.reports[r.value])),n=t((()=>o.value.details?.trim()||it("errors.detailsEmpty","This error is missing a stacktrace."))),a=it("errors.previousReport","Show previous report"),l=it("errors.nextReport","Show next report");return{activeReportIndex:r,details:n,nextReportText:l,previousReportText:a,report:o}}const es={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},ts=[S("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 ss={name:"mdi-console",render:function(e,t){return p(),x("svg",es,ts)}};const rs={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},os=[S("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 ns={name:"zondicons-copy",render:function(e,t){return p(),x("svg",rs,os)}};const as={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},ls=[S("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 is={name:"mdi-github",render:function(e,t){return p(),x("svg",as,ls)}};const cs={class:"flex"};var us=u({__name:"AGErrorReportModalButtons",props:{report:We()},setup(e){const s=e,r=t((()=>s.report.description?`${s.report.title}: ${s.report.description}`:s.report.title)),o=t((()=>{if(!Me.sourceUrl)return!1;const e=encodeURIComponent(r.value),t=encodeURIComponent(["[Please, explain here what you were trying to do when this error appeared]","","Error details:","```",oe(s.report.details??"Details missing from report",1800-e.length-Me.sourceUrl.length).trim(),"```"].join("\n"));return`${Me.sourceUrl}/issues/new?title=${e}&body=${t}`})),n=t((()=>K([{id:"clipboard",description:"Copy to clipboard",iconComponent:ns,async handler(){await navigator.clipboard.writeText(`${r.value}\n\n${s.report.details}`),nt.showSnackbar(it("errors.copiedToClipboard","Debug information copied to clipboard"))}},{id:"console",description:"Log to console",iconComponent:ss,handler(){const e=s.report.error??s.report;window.error=e,console.error(e),nt.showSnackbar(it("errors.addedToConsole","You can now use the **error** variable in the console"))}}],(e=>{o.value&&e.push({id:"github",description:"Report in GitHub",iconComponent:is,url:o.value})}))));return(e,t)=>(p(),x("div",cs,[(p(!0),x(A,null,E(n.value,((t,s)=>v(e.$slots,"default",j(t,{key:s}),(()=>[w(qt,{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:h((()=>[(p(),m(_(t.iconComponent),{class:"h-4 w-4","aria-hidden":"true"}))])),_:2},1032,["url","title","aria-label","onClick"])])))),128))]))}});us.__file="src/components/modals/AGErrorReportModalButtons.vue";var ds=u({__name:"AGErrorReportModalTitle",props:{report:We(),currentReport:qe(),totalReports:qe()},setup(e){const s=e,r=t((()=>!s.totalReports||s.totalReports<=1?s.report.title:`${s.report.title} (${s.currentReport}/${s.totalReports})`));return(e,t)=>(p(),m(Ht,{text:r.value,inline:""},null,8,["text"]))}});ds.__file="src/components/modals/AGErrorReportModalTitle.vue";const ps={class:"flex items-center justify-between text-lg font-medium"},ms={class:"flex items-center"},fs=["textContent"];var hs=u({__name:"AGErrorReportModal",props:Jt(),setup(e){const t=e,{activeReportIndex:s,details:r,nextReportText:o,previousReportText:n,report:a}=Xt(t);return(e,t)=>(p(),m(Lt,null,{default:h((()=>[S("div",null,[S("h2",ps,[S("div",ms,[w(ds,{report:f(a),"current-report":f(s)+1,"total-reports":e.reports.length},null,8,["report","current-report","total-reports"]),e.reports.length>1?(p(),x(A,{key:0},[w(qt,{color:"clear",disabled:0===f(s),title:f(n),"aria-label":f(n),onClick:t[0]||(t[0]=e=>s.value--)},{default:h((()=>[w(f(Zt),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"]),w(qt,{color:"clear",disabled:f(s)===e.reports.length-1,title:f(o),"aria-label":f(o),onClick:t[1]||(t[1]=e=>s.value++)},{default:h((()=>[w(f(Kt),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"])],64)):G("v-if",!0)]),w(us,{report:f(a)},null,8,["report"])]),f(a).description?(p(),m(Ht,{key:0,text:f(a).description,class:"mt-2"},null,8,["text"])):G("v-if",!0)]),S("pre",{class:"h-full overflow-auto bg-gray-200 p-4 text-xs text-red-900",textContent:$(f(r))},null,8,fs)])),_:1}))}});hs.__file="src/components/modals/AGErrorReportModal.vue";const vs={message:Ze()};function gs(){return vs}function _s(e){return{renderedMessage:t((()=>e.message??it("ui.loading","Loading...")))}}var bs=u({__name:"AGLoadingModal",props:gs(),setup(e){const t=e,{renderedMessage:s}=_s(t);return(e,t)=>(p(),m(Lt,{cancellable:!1},{default:h((()=>[w(Ht,{text:f(s)},null,8,["text"])])),_:1}))}});bs.__file="src/components/modals/AGLoadingModal.vue";const ys={class:"pointer-events-auto"};var xs=u({__name:"AGHeadlessSnackbar",setup:e=>(e,t)=>(p(),x("div",ys,[v(e.$slots,"default")]))});xs.__file="src/components/headless/snackbars/AGHeadlessSnackbar.vue";const As=se(ut,["Primary","Clear"]),ws={id:Qe(),message:Qe(),actions:He((()=>[])),color:Oe(As,ut.Secondary)};function Gs(){return ws}function Ss(e){return{activate:function(t){t.handler?.(),t.dismiss&&nt.hideSnackbar(e.id)}}}var ks=u({__name:"AGSnackbar",props:Gs(),setup(e){const s=e,{activate:r}=Ss(s),o=t((()=>s.color===ut.Danger?"bg-red-200 text-red-900":"bg-gray-900 text-white"));return(e,t)=>(p(),m(xs,{class:C(["flex flex-row items-center justify-center gap-3 p-4",o.value])},{default:h((()=>[w(Ht,{text:e.message,inline:""},null,8,["text"]),(p(!0),x(A,null,E(e.actions,((t,s)=>(p(),m(qt,{key:s,color:e.color,onClick:e=>f(r)(t)},{default:h((()=>[M($(t.text),1)])),_:2},1032,["color","onClick"])))),128))])),_:1},8,["class"]))}});ks.__file="src/components/snackbars/AGSnackbar.vue";const js={class:"grid flex-grow place-items-center"},Cs={class:"flex flex-col items-center space-y-6 p-8"},Ms={class:"mt-2 text-center text-4xl font-medium text-red-600"},$s={class:"mt-4 flex flex-col space-y-4"};var Es=u({__name:"AGStartupCrash",setup:e=>(e,t)=>(p(),x("div",js,[S("div",Cs,[S("h1",Ms,$(e.$td("startupCrash.title","Something went wrong!")),1),w(Ht,{text:e.$td("startupCrash.message","Something failed trying to start the application.\n\nHere's some things you can do:"),class:"mt-4 text-center"},null,8,["text"]),S("div",$s,[w(qt,{color:"danger",onClick:t[0]||(t[0]=t=>e.$app.reload())},{default:h((()=>[M($(e.$td("startupCrash.reload","Try again")),1)])),_:1}),w(qt,{color:"danger",onClick:t[1]||(t[1]=t=>e.$errors.inspect(e.$errors.startupErrors))},{default:h((()=>[M($(e.$td("startupCrash.inspect","View error details")),1)])),_:1})])])]))});Es.__file="src/components/lib/AGStartupCrash.vue";const Hs={$ui:nt};var Is={async install(e,t){const s={[rt.AlertModal]:Ot,[rt.ConfirmModal]:Ut,[rt.ErrorReportModal]:hs,[rt.LoadingModal]:bs,[rt.Snackbar]:ks,[rt.StartupCrash]:Es};Object.entries({...s,...t.components}).forEach((e=>{let[t,s]=e;return nt.registerComponent(t,s)})),await et(e,Hs)}};async function Ls(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=[Je,ft,vt,tt,Is,...t.plugins??[]];await Ee(s,e,t)}async function Rs(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=H(e);await Ls(s,t),s.mount("#app"),s._container?.classList.remove("loading"),ke.emit("application-mounted")}const Ts={key:0};var Os=u({__name:"AGAppModals",setup(e){const s=t((()=>nt.modals[0]??null));return(e,t)=>s.value?(p(),x("aside",Ts,[w(jt,{"child-index":1,modal:s.value},null,8,["modal"])])):G("v-if",!0)}});Os.__file="src/components/AGAppModals.vue";const Bs={"aria-live":"assertive",class:"z-60 pointer-events-none fixed inset-0 flex items-end px-4 py-6 sm:p-6"},Ps={class:"flex w-full flex-col items-end space-y-4"};const Vs={render:function(e,t){return p(),x("div",Bs,[S("div",Ps,[(p(!0),x(A,null,E(e.$ui.snackbars,(e=>(p(),m(_(e.component),j({id:e.id,key:e.id},e.properties),null,16,["id"])))),128))])])},__file:"src/components/AGAppSnackbars.vue"};var zs=Vs,qs=u({__name:"AGAppOverlays",setup(t){const s=e(null),r=e(!0);return gt("show-overlays-backdrop",(async()=>{s.value&&r.value&&(r.value=!1,s.value.classList.remove("opacity-0"))})),gt("hide-overlays-backdrop",(async()=>{s.value&&!r.value&&(r.value=!0,s.value.classList.add("opacity-0"))})),(e,t)=>(p(),x(A,null,[S("div",{id:"aerogel-overlays-backdrop",ref_key:"$backdrop",ref:s,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),w(Os),w(zs)],64))}});qs.__file="src/components/AGAppOverlays.vue";const Ds={class:"flex min-h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var Us=u({__name:"AGAppLayout",setup:e=>(e,t)=>(p(),x("div",Ds,[e.$errors.hasStartupErrors?v(e.$slots,"startup-crash",{key:0},(()=>[(p(),m(_(e.$ui.requireComponent(f(rt).StartupCrash))))])):v(e.$slots,"default",{key:1}),w(qs)]))});Us.__file="src/components/AGAppLayout.vue";const Fs={name:Ze(),label:Ze()};function Ns(){return Fs}function Ks(e){return xt(e,Fs)}var Ws=u({__name:"AGHeadlessInput",props:{as:Ze("div"),modelValue:ze([String,Number,Boolean]),...Ns()},emits:["update:modelValue"],setup(e,{expose:s,emit:o}){const n=e,a=t((()=>l&&n.name?l.errors[n.name]??null:null)),l=r("form",null),i={id:`input-${J()}`,name:t((()=>n.name)),label:t((()=>n.label)),value:t((()=>l&&n.name?l.getFieldValue(n.name):n.modelValue)),errors:I(a),update(e){l&&n.name?l.setFieldValue(n.name,e):o("update:modelValue",e)}};return g("input",i),s(i),(t,s)=>e.as?(p(),m(_(e.as),{key:0},{default:h((()=>[v(t.$slots,"default")])),_:3})):v(t.$slots,"default",{key:1})}});Ws.__file="src/components/headless/forms/AGHeadlessInput.vue";const Qs=["id"];var Zs=u({__name:"AGHeadlessInputError",setup(e){const s=Pe("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),r=t((()=>s.errors?it(`errors.${s.errors[0]}`,`Error: ${s.errors[0]}`):null));return(e,t)=>r.value?(p(),x("p",{key:0,id:`${f(s).id}-error`},$(r.value),9,Qs)):G("v-if",!0)}});Zs.__file="src/components/headless/forms/AGHeadlessInputError.vue";const Ys=["id","type","value","aria-invalid","aria-describedby","checked"];var Js=u({__name:"AGHeadlessInputInput",props:{type:Ze("text")},setup(s){const r=s,o=e(),n=Pe("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),a=t((()=>n.value)),l=t((()=>{if("checkbox"===r.type)return!!a.value}));function i(){o.value&&n.update("checkbox"===r.type?o.value.checked:o.value.value)}return(e,t)=>(p(),x("input",{id:f(n).id,ref_key:"$input",ref:o,type:s.type,value:a.value,"aria-invalid":f(n).errors?"true":"false","aria-describedby":f(n).errors?`${f(n).id}-error`:void 0,checked:l.value,onInput:i},null,40,Ys))}});Js.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const Xs=["for"];var er=u({__name:"AGHeadlessInputLabel",setup(e){const s=Pe("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>"),r=L(),o=t((()=>!(!s.label&&!r.default)));return(e,t)=>o.value?(p(),x("label",{key:0,for:f(s).id},[v(e.$slots,"default",{},(()=>[M($(f(s).label),1)]))],8,Xs)):G("v-if",!0)}});er.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";const tr={class:"ml-2"};var sr=u({inheritAttrs:!1,__name:"AGCheckbox",props:{name:Ze()},setup(e){const t=Le();return(s,r)=>(p(),m(Ws,{ref_key:"$input",ref:t,name:e.name,class:"flex"},{default:h((()=>[w(Js,j(s.$attrs,{type:"checkbox",class:{"text-indigo-600 focus:ring-indigo-600":!f(t)?.errors,"border-red-200 text-red-600 focus:ring-red-600":f(t)?.errors}}),null,16,["class"]),S("div",tr,[s.$slots.default?(p(),m(er,{key:0},{default:h((()=>[v(s.$slots,"default")])),_:3})):G("v-if",!0),w(Zs,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});sr.__file="src/components/forms/AGCheckbox.vue";const rr=["onSubmit"];var or=u({__name:"AGForm",props:{form:De()},emits:["submit"],setup(e,{emit:t}){const s=e;function r(){s.form&&!s.form.submit()||t("submit")}return g("form",s.form),(e,t)=>(p(),x("form",{onSubmit:R(r,["prevent"])},[v(e.$slots,"default")],40,rr))}});or.__file="src/components/forms/AGForm.vue";const nr={class:"absolute bottom-0 left-0 translate-y-full"};var ar=u({inheritAttrs:!1,__name:"AGInput",props:{name:Ze()},setup(e){const t=Le(),[s,r]=_t();return(o,n)=>(p(),m(Ws,{ref_key:"$input",ref:t,class:C(["relative flex flex-col items-center",f(r)]),name:e.name},{default:h((()=>[w(Js,j(f(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":f(t)?.errors}]}),null,16,["class"]),S("div",nr,[w(Zs,{class:"mt-1 text-sm text-red-500"})])])),_:1},8,["class","name"]))}});ar.__file="src/components/forms/AGInput.vue";const lr={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},ir=[S("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 cr={name:"zondicons-cheveron-down",render:function(e,t){return p(),x("svg",lr,ir)}};const ur={name:Ze(),label:Ze(),options:Ue(),noSelectionText:Ze()};function dr(){return ur}function pr(e){return xt(e,ur)}var mr=u({__name:"AGHeadlessSelect",props:{modelValue:ze(),...dr()},emits:["update:modelValue"],setup(e,{expose:s,emit:o}){const n=e,a=r("form",null),l=t((()=>n.noSelectionText??it("select.noSelection","-"))),i=t((()=>n.options.map((e=>({value:e,text:X(ee(e)&&"text"in e?e.text:e)}))))),c=t((()=>{const e=a&&n.name?a.getFieldValue(n.name):n.modelValue;return i.value.find((t=>t.value===e))})),u=t((()=>a&&n.name?a.errors[n.name]??null:null));function d(e){a&&n.name?a.setFieldValue(n.name,e):o("update:modelValue",e)}const _={id:`select-${J()}`,options:i,noSelectionText:l,selectedOption:c,errors:u,label:t((()=>n.label)),buttonText:t((()=>c.value?.text??l.value)),update:d};return g("select",_),s(_),(e,t)=>(p(),m(f(me),{"model-value":c.value?.value,"onUpdate:modelValue":t[0]||(t[0]=e=>d(e))},{default:h((({value:t,open:s,disabled:r})=>[v(e.$slots,"default",{value:t,open:s,disabled:r})])),_:3},8,["model-value"]))}});mr.__file="src/components/headless/forms/AGHeadlessSelect.vue";var fr=u({__name:"AGHeadlessSelectButton",props:{textClass:Ze()},setup(e){const t=Pe("select","<AGHeadlessSelectButton> must be a child of a <AGHeadlessSelect>");return(s,r)=>(p(),m(f(fe),null,{default:h((({value:r,open:o,disabled:n})=>[v(s.$slots,"default",{value:r,open:o,disabled:n},(()=>[S("span",{class:C(e.textClass)},$(f(t)?.buttonText),3)])),v(s.$slots,"icon")])),_:3}))}});fr.__file="src/components/headless/forms/AGHeadlessSelectButton.vue";const hr=["id"];var vr=u({__name:"AGHeadlessSelectError",setup(e){const s=Pe("select","<AGHeadlessSelectError> must be a child of a <AGHeadlessSelect>"),r=t((()=>s.errors?it(`errors.${s.errors[0]}`,`Error: ${s.errors[0]}`):null));return(e,t)=>r.value?(p(),x("p",{key:0,id:`${f(s).id}-error`},$(r.value),9,hr)):G("v-if",!0)}});vr.__file="src/components/headless/forms/AGHeadlessSelectError.vue";var gr=u({__name:"AGHeadlessSelectLabel",setup(e){const s=Pe("select","<AGHeadlessSelectLabel> must be a child of a <AGHeadlessSelect>"),r=L(),o=t((()=>!(!s.label&&!r.default)));return(e,t)=>o.value?(p(),m(f(he),{key:0},{default:h((({open:t,disabled:r})=>[v(e.$slots,"default",{open:t,disabled:r},(()=>[M($(f(s).label),1)]))])),_:3})):G("v-if",!0)}});gr.__file="src/components/headless/forms/AGHeadlessSelectLabel.vue";var _r=u({__name:"AGHeadlessSelectOption",props:{value:Ne(),selectedClass:Ze(),unselectedClass:Ze(),activeClass:Ze(),inactiveClass:Ze()},setup(e){const s=e,r=Pe("select","<AGHeadlessSelectOption> must be a child of a <AGHeadlessSelect>"),o=t((()=>r.options.find((e=>e.value===s.value))));return(t,s)=>(p(),m(f(ve),{value:e.value,as:"template"},{default:h((({active:s,selected:r,disabled:n})=>[v(t.$slots,"default",{active:s,selected:r,disabled:n},(()=>[S("li",{class:C({[e.activeClass??"active"]:s,[e.inactiveClass??"inactive"]:!s,[e.selectedClass??"selected"]:r,[e.unselectedClass??"unselected"]:!r})},$(o.value?.text),3)]))])),_:3},8,["value"]))}});_r.__file="src/components/headless/forms/AGHeadlessSelectOption.vue";const br={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};var yr=u({__name:"AGSelect",props:dr(),setup(e){const t=e,s=Le();return(e,r)=>(p(),m(mr,j(t,{ref_key:"$select",ref:s,as:"div"}),{default:h((()=>[w(gr,{class:"block text-sm font-medium leading-6 text-gray-900"}),S("div",{class:C(["relative",{"mt-2":f(s)?.label}])},[w(fr,{class:C(["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":f(s)?.errors}]),"text-class":"block truncate"},{icon:h((()=>[S("span",br,[w(f(cr),{class:"h-5 w-5 text-gray-400"})])])),_:1},8,["class"]),w(f(ge),{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:h((()=>[(p(!0),x(A,null,E(f(s)?.options??[],((e,t)=>(p(),m(_r,{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),w(vr,{class:"mt-2 text-sm text-red-600"})])),_:1},16))}});yr.__file="src/components/forms/AGSelect.vue";var xr=u({__name:"AGErrorMessage",props:{error:We()},setup(e){const s=e,r=t((()=>dt.getErrorMessage(s.error)));return(e,t)=>(p(),m(Ht,{text:r.value,inline:""},null,8,["text"]))}});xr.__file="src/components/lib/AGErrorMessage.vue";var Ar=u({__name:"AGLink",setup:e=>(e,t)=>(p(),m(zt,{class:"font-medium hover:underline"},{default:h((()=>[v(e.$slots,"default")])),_:3}))});Ar.__file="src/components/lib/AGLink.vue";var wr=u({__name:"AGMeasured",props:{as:Ze("span")},setup(t){const s=e(!1);return(e,r)=>{const o=T("measure");return O((p(),m(_(t.as),{class:C({"!invisible !absolute !w-auto":!s.value})},{default:h((()=>[v(e.$slots,"default")])),_:3},8,["class"])),[[o,()=>s.value=!0]])}}});wr.__file="src/components/lib/AGMeasured.vue";var Gr=u({__name:"AGModalTitle",setup:e=>(e,t)=>(p(),m($t,{class:"mb-2 font-semibold"},{default:h((()=>[v(e.$slots,"default")])),_:3}))});Gr.__file="src/components/modals/AGModalTitle.vue";const Sr={String:"string",Number:"number",Boolean:"boolean",Object:"object"},kr=new WeakMap;class jr extends P{constructor(s){super(),ne(this,"errors",void 0),ne(this,"_fields",void 0),ne(this,"_data",void 0),ne(this,"_submitted",void 0),ne(this,"_errors",void 0),this._fields=s,this._submitted=e(!1),this._data=this.getInitialData(s),this._errors=this.getInitialErrors(s),kr.set(this,t((()=>!Object.values(this._errors).some((e=>null!==e))))),this.errors=I(this._errors)}get valid(){return!!kr.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 o(t)}getInitialErrors(e){if(this.static().isConjuring())return{};const t=Object.keys(e).reduce(((e,t)=>(e[t]=null,e)),{});return o(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 Cr(e){return new jr(e)}function Mr(e){return{default:e,type:Sr.Boolean}}function $r(e){return{default:e,type:Sr.Boolean,rules:"required"}}function Er(e){return{default:e,type:Sr.Number,rules:"required"}}function Hr(e){return{default:e,type:Sr.String,rules:"required"}}function Ir(e){return{default:e,type:Sr.Number}}function Lr(e){return{default:e,type:Sr.String}}export{Ot as AGAlertModal,Us as AGAppLayout,qs as AGAppOverlays,qt as AGButton,sr as AGCheckbox,Ut as AGConfirmModal,xr as AGErrorMessage,us as AGErrorReportModalButtons,ds as AGErrorReportModalTitle,or as AGForm,zt as AGHeadlessButton,Ws as AGHeadlessInput,Zs as AGHeadlessInputError,Js as AGHeadlessInputInput,er as AGHeadlessInputLabel,kt as AGHeadlessModal,Mt as AGHeadlessModalPanel,$t as AGHeadlessModalTitle,mr as AGHeadlessSelect,fr as AGHeadlessSelectButton,vr as AGHeadlessSelectError,gr as AGHeadlessSelectLabel,_r as AGHeadlessSelectOption,xs as AGHeadlessSnackbar,ar as AGInput,Ar as AGLink,bs as AGLoadingModal,Ht as AGMarkdown,wr as AGMeasured,Lt as AGModal,jt as AGModalContext,Gr as AGModalTitle,yr as AGSelect,ks as AGSnackbar,Es as AGStartupCrash,Me as App,Ce as AppService,ut as Colors,dt as Errors,ke as Events,Se as EventsService,Sr as FormFieldTypes,at as Lang,Ge as Service,As as SnackbarColors,nt as UI,rt as UIComponents,ot as UIService,Rt as alertModalProps,He as arrayProp,Mr as booleanInput,Ie as booleanProp,et as bootServices,Rs as bootstrap,Ls as bootstrapApplication,Le as componentRef,Re as computedAsync,Bt as confirmModalProps,Te as defineDirective,$e as definePlugin,we as defineServiceState,Oe as enumProp,Yt as errorReportModalProps,Ks as extractInputProps,Gt as extractModalProps,pr as extractSelectProps,Ve as injectOrFail,Be as injectReactive,Pe as injectReactiveOrFail,Fs as inputProps,Ee as installPlugins,vs as loadingModalProps,ze as mixedProp,At as modalProps,Ir as numberInput,qe as numberProp,De as objectProp,bt as onCleanMounted,yt as removeInteractiveClasses,Ue as requiredArrayProp,$r as requiredBooleanInput,Fe as requiredEnumProp,Ne as requiredMixedProp,Er as requiredNumberInput,Ke as requiredNumberProp,We as requiredObjectProp,Hr as requiredStringInput,Qe as requiredStringProp,ur as selectProps,ws as snackbarProps,Lr as stringInput,Ze as stringProp,lt as translate,it as translateWithDefault,Tt as useAlertModalProps,Vt as useConfirmModal,Pt as useConfirmModalProps,Xt as useErrorReportModal,Jt as useErrorReportModalProps,gt as useEvent,Cr as useForm,_t as useInputAttrs,Ns as useInputProps,_s as useLoadingModal,gs as useLoadingModalProps,St as useModalExpose,wt as useModalProps,dr as useSelectProps,Ss as useSnackbar,Gs as useSnackbarProps};
2
2
  //# sourceMappingURL=aerogel-core.esm.js.map