@aerogel/core 0.0.0-next.b18f4e0acd39431045c2f444c711303890143193 → 0.0.0-next.b243de4e2590f02709edeebd8c13b74087592c04

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 (62) 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 +405 -59
  4. package/dist/aerogel-core.esm.js +1 -1
  5. package/dist/aerogel-core.esm.js.map +1 -1
  6. package/package.json +3 -3
  7. package/src/bootstrap/bootstrap.test.ts +0 -1
  8. package/src/bootstrap/index.ts +5 -4
  9. package/src/components/AGAppSnackbars.vue +1 -1
  10. package/src/components/composition.ts +23 -0
  11. package/src/components/forms/AGForm.vue +9 -10
  12. package/src/components/forms/AGInput.vue +2 -0
  13. package/src/components/headless/forms/AGHeadlessButton.ts +3 -0
  14. package/src/components/headless/forms/AGHeadlessButton.vue +23 -12
  15. package/src/components/headless/forms/AGHeadlessInput.ts +10 -4
  16. package/src/components/headless/forms/AGHeadlessInput.vue +18 -5
  17. package/src/components/headless/forms/AGHeadlessInputDescription.vue +28 -0
  18. package/src/components/headless/forms/AGHeadlessInputInput.vue +44 -5
  19. package/src/components/headless/forms/AGHeadlessInputTextArea.vue +43 -0
  20. package/src/components/headless/forms/composition.ts +10 -0
  21. package/src/components/headless/forms/index.ts +4 -0
  22. package/src/components/index.ts +2 -0
  23. package/src/components/interfaces.ts +24 -0
  24. package/src/components/lib/AGErrorMessage.vue +2 -2
  25. package/src/components/lib/AGMarkdown.vue +9 -4
  26. package/src/components/lib/AGMeasured.vue +1 -0
  27. package/src/components/modals/AGConfirmModal.ts +9 -3
  28. package/src/components/modals/AGConfirmModal.vue +2 -2
  29. package/src/components/modals/AGPromptModal.ts +9 -3
  30. package/src/components/modals/AGPromptModal.vue +2 -2
  31. package/src/directives/index.ts +2 -0
  32. package/src/directives/measure.ts +33 -5
  33. package/src/errors/Errors.ts +15 -18
  34. package/src/errors/index.ts +1 -10
  35. package/src/errors/utils.ts +19 -0
  36. package/src/forms/Form.test.ts +28 -0
  37. package/src/forms/Form.ts +65 -8
  38. package/src/forms/index.ts +3 -1
  39. package/src/forms/utils.ts +34 -3
  40. package/src/forms/validation.ts +19 -0
  41. package/src/jobs/Job.ts +5 -0
  42. package/src/jobs/index.ts +7 -0
  43. package/src/lang/DefaultLangProvider.ts +43 -0
  44. package/src/lang/Lang.state.ts +11 -0
  45. package/src/lang/Lang.ts +44 -29
  46. package/src/main.ts +3 -0
  47. package/src/services/App.state.ts +15 -1
  48. package/src/services/App.ts +4 -1
  49. package/src/services/Cache.ts +43 -0
  50. package/src/services/Events.test.ts +39 -0
  51. package/src/services/Events.ts +100 -30
  52. package/src/services/Service.ts +37 -5
  53. package/src/services/index.ts +4 -1
  54. package/src/services/store.ts +8 -5
  55. package/src/testing/index.ts +25 -0
  56. package/src/testing/setup.ts +19 -0
  57. package/src/ui/UI.state.ts +7 -0
  58. package/src/ui/UI.ts +41 -11
  59. package/src/ui/index.ts +1 -0
  60. package/src/ui/utils.ts +16 -0
  61. package/src/utils/vue.ts +11 -2
  62. package/vite.config.ts +4 -1
@@ -1,2 +1,2 @@
1
- import{ref as e,computed as t,watch as r,inject as s,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 k,h as S,mergeProps as C,normalizeClass as j,createTextVNode as M,toDisplayString as $,renderList as E,withModifiers as H,readonly as T,useSlots as R,createApp as I,resolveDirective as L,withDirectives as P}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 O from"@babel/runtime/helpers/esm/defineProperty";import{JSError as B,MagicObject as V,PromisedValue as z,objectOnly as q,isEmpty as D,Storage as U,objectDeepClone as F,facade as N,arr as K,tap as W,updateLocationQueryParameters as Q,forever as Z,fail as Y,after as J,uuid as X,toString as ee,isObject as te,objectWithoutEmpty as re,objectWithout as se,noop as oe,stringExcerpt as ne}from"@noeldemartin/utils";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 O(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 V{constructor(){super(),O(this,"_name",void 0),O(this,"_booted",void 0),O(this,"_computedStateKeys",void 0),O(this,"_store",void 0);const e=this.getComputedStateDefinition();var t,r;this._name=this.getName()??new.target.name,this._booted=new z,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&(t=this._name,r={state:()=>this.getInitialState(),getters:e},Ae(),ae(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=q(e,t);if(D(r))return;const s=U.get(this._name);s&&U.set(this._name,{...s,...this.serializePersistedState(F(r))})}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()&&!D(e))if(U.has(this._name)){const e=U.require(this._name);this.setState(e)}else U.set(this._name,q(this.getState(),e))}}O(Ge,"persist",[]);class ke extends Ge{constructor(){super(...arguments),O(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]??=K([])).push(t),()=>this.off(e,t)}once(e,t){let r=null;return W((()=>r&&this.off(e,r)),(s=>{(this.listeners[e]??=K([])).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 Se=N(new ke),Ce=we({name:"app",initialState:{plugins:{},environment:ce.environment,sourceUrl:ce.sourceUrl},computed:{development:e=>"development"===e.environment,testing:e=>"testing"===e.environment}});class je extends Ce{constructor(){super(...arguments),O(this,"ready",new z),O(this,"mounted",new z)}isReady(){return this.ready.isResolved()}isMounted(){return this.mounted.isResolved()}async whenReady(e){return await this.ready.then(e)}async reload(e){e&&Q(e),location.reload(),await Z()}plugin(e){return this.plugins[e]??null}async boot(){Se.once("application-ready",(()=>this.ready.resolve())),Se.once("application-mounted",(()=>this.mounted.resolve()))}}var Me=N(new je);function $e(e){return e}async function Ee(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];Me.setState("plugins",e.reduce(((e,t)=>(t.name&&(e[t.name]=t),e)),{})),await Promise.all(e.map((e=>e.install(...r)))??[])}function He(e){return{type:Array,default:e??(()=>[])}}function Te(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function Re(){return e()}function Ie(s){const o=e(),n=t(s);return r(n,(async()=>o.value=await n.value),{immediate:!0}),o}function Le(e){return e}function Pe(e,t){const r=Object.values(e);return{type:String,default:t??r[0]??null,validator:e=>r.includes(e)}}function Oe(e){const t=s(e);return t?o(t):void 0}function Be(e,t){return Oe(e)??Y(t??`Could not resolve '${e}' injection key`)}function Ve(e,t){return s(e)??Y(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:r}=t;!1!==r&&e.focus()}},measure:{mounted(e,t){let{value:r}=t;const s=e.getBoundingClientRect();e.style.setProperty("--width",`${s.width}px`),e.style.setProperty("--height",`${s.height}px`),r?.()}}};var Je={install(e,t){const r={...Ye,...t.directives};for(const[t,s]of Object.entries(r))e.directive(t,s)}};const Xe={$app:Me,$events:Se};async function et(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),Me.development&&Object.assign(window,t)}var tt={async install(e,t){const r={...Xe,...t.services};e.use(xe??Ae()),await et(e,r)}},rt=we({name:"ui",initialState:{modals:[],snackbars:[]}});const st={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",ErrorReportModal:"error-report-modal",LoadingModal:"loading-modal",PromptModal:"prompt-modal",Snackbar:"snackbar",StartupCrash:"startup-crash"};class ot extends rt{constructor(){super(...arguments),O(this,"modalCallbacks",{}),O(this,"components",{})}requireComponent(e){return this.components[e]??Y(`UI Component '${e}' is not defined!`)}alert(e,t){this.openModal(this.requireComponent(st.AlertModal),"string"!=typeof t?{message:e}:{title:e,message:t})}async confirm(e,t,r){const s=await this.openModal(this.requireComponent(st.ConfirmModal),"string"!=typeof t?{message:e,...t??{}}:{title:e,message:t,...r??{}});return await s.beforeClose??!1}async prompt(e,t,r){const s=await this.openModal(this.requireComponent(st.PromptModal),"string"!=typeof t?{message:e,...t??{}}:{title:e,message:t,...r??{}});return await s.beforeClose??null}async loading(e,t){const r=await this.openModal(this.requireComponent(st.LoadingModal),"string"!=typeof e?{}:{message:e});try{t="string"==typeof e?t:e;const[r]=await Promise.all([t,J({seconds:1})]);return r}finally{await this.closeModal(r.id)}}showSnackbar(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r={id:X(),properties:{message:e,...t},component:t.component??n(this.requireComponent(st.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=X(),s={},o={id:r,properties:t??{},component:n(e),beforeClose:new Promise((e=>s.willClose=e)),afterClose:new Promise((e=>s.closed=e))},l=this.modals.at(-1),i=this.modals.concat(o);return this.modalCallbacks[o.id]=s,this.setState({modals:i}),await a(),await(l&&Se.emit("hide-modal",{id:l.id})),await Promise.all([l||Se.emit("show-overlays-backdrop"),Se.emit("show-modal",{id:o.id})]),o}async closeModal(e,t){await Se.emit("close-modal",{id:e,result:t})}async boot(){this.watchModalEvents(),this.watchMountedEvent()}watchModalEvents(){Se.on("modal-will-close",(e=>{let{modal:t,result:r}=e;this.modalCallbacks[t.id]?.willClose?.(r),1===this.modals.length&&Se.emit("hide-overlays-backdrop")})),Se.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&&Se.emit("show-modal",{id:s.id}))}))}watchMountedEvent(){Se.once("application-mounted",(async()=>{const e=document.getElementById("splash");e&&("0"!==window.getComputedStyle(e).opacity&&(e.style.opacity="0",await J({ms:600})),e.remove())}))}}var nt=N(new ot);var at=N(new class extends Ge{constructor(){super(),O(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,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"),ee(s))}),r):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=N(new class extends ct{constructor(){super(...arguments),O(this,"forceReporting",!1),O(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(st.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 r=await this.createErrorReport(e),s={report:r,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(st.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 B?e.message:te(e)?ee(e.message??e.description??"Unknown error object"):it("errors.unknown","Unknown Error")}logError(e){console.error(e),te(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):te(e)?re({title:ee(e.name??e.title??it("errors.unknown","Unknown Error")),description:ee(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 r=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=r,globalThis.onerror=(e,t,s,o,n)=>r(n??e),globalThis.onunhandledrejection=e=>r(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 r=Se.on(e,t);l((()=>r()))}function _t(){const e=i(),r=t((()=>e.class));return[t((()=>se(e,"class"))),r]}function bt(e){let t=oe;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,r)=>(t[r]=e[r],t)),{})}const At={cancellable:Te(!0),title:Ze()};function wt(){return At}function Gt(e){return xt(e,At)}function kt(e){return{close:async()=>e.value?.close(),cancellable:t((()=>!!e.value?.cancellable))}}var St=u({__name:"AGHeadlessModal",props:wt(),setup(t,{expose:r}){const s=t,o=e(null),n=e(!0),a=e(!1),{modal:l}=Be("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||(Se.emit("modal-will-close",{modal:l,result:e}),await i(),a.value=!0,Se.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)}()})),r({close:c,cancellable:d(s,"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))}});St.__file="src/components/headless/modals/AGHeadlessModal.vue";var Ct=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,r)=>(p(),m(_(e.modal.component),b(y(e.modal.properties)),null,16))}});Ct.__file="src/components/modals/AGModalContext.vue";const jt=k("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var Mt=u({__name:"AGHeadlessModalPanel",setup(e){const r=Be("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),s=t((()=>nt.modals[r.childIndex]??null));return(e,t)=>(p(),m(f(de),null,{default:h((()=>[v(e.$slots,"default"),s.value?(p(),x(A,{key:0},[jt,w(Ct,{"child-index":f(r).childIndex+1,modal:s.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,r)=>(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:W(new ye,(e=>{e.link=function(e,t,r){return ye.prototype.link.apply(this,[e,t,r]).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:Te(),langKey:Ze(),langParams:De(),text:Ze()},setup(e){const r=e,s=t((()=>r.text??(r.langKey&&lt(r.langKey,r.langParams??{})))),o=t((()=>{if(!s.value)return null;let e=Et(s.value);return r.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),n=()=>S(r.as??(r.inline?"span":"div"),{class:r.inline?"":"prose",innerHTML:o.value});return(e,t)=>(p(),m(n))}});Ht.__file="src/components/lib/AGMarkdown.vue";const Tt={class:"fixed inset-0 flex items-center justify-center p-8"};var Rt=u({inheritAttrs:!1,__name:"AGModal",props:wt(),setup(t,{expose:r}){const s=t,o=e();return r(kt(o)),(e,t)=>(p(),m(St,C({ref_key:"$modal",ref:o},s,{class:"relative z-50"}),{default:h((({close:t})=>[k("div",Tt,[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),k("div",C({class:"flex max-h-full flex-col overflow-auto"},e.$attrs),[v(e.$slots,"default",{close:t})],16)])),_:2},1024)])])),_:3},16))}});Rt.__file="src/components/modals/AGModal.vue";const It={title:Ze(),message:Qe()};function Lt(){return It}var Pt=u({__name:"AGAlertModal",props:Lt(),setup:e=>(e,t)=>(p(),m(Rt,{title:e.title},{default:h((()=>[w(Ht,{text:e.message},null,8,["text"])])),_:1},8,["title"]))});Pt.__file="src/components/modals/AGAlertModal.vue";const Ot={title:Ze(),message:Qe(),acceptText:Ze(),cancelText:Ze()};function Bt(){return Ot}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:Te()},setup(e){const{href:r,url:s,route:o,routeParams:n,routeQuery:a,submit:l}=e,i=t((()=>o?{tag:"router-link",props:{to:re({name:o,params:n,query:a})}}:r||s?{tag:"a",props:{target:"_blank",href:r||s}}:{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:Pe(ut,ut.Primary)},setup(e){const r=e,s=t((()=>{switch(r.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:j(["px-2.5 py-1.5 focus-visible:outline focus-visible:outline-2",s.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:Bt(),setup(e){const t=e,{renderedAcceptText:r,renderedCancelText:s}=Vt(t);return(e,t)=>(p(),m(Rt,{cancellable:!1,title:e.title},{default:h((({close:t})=>[w(Ht,{text:e.message},null,8,["text"]),k("div",Dt,[w(qt,{onClick:e=>t(!0)},{default:h((()=>[M($(f(r)),1)])),_:2},1032,["onClick"]),w(qt,{color:"secondary",onClick:e=>t()},{default:h((()=>[M($(f(s)),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=[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 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=[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 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(r){const s=e(0),o=t((()=>r.reports[s.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:s,details:n,nextReportText:l,previousReportText:a,report:o}}const er={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},tr=[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 rr={name:"mdi-console",render:function(e,t){return p(),x("svg",er,[...tr])}};const sr={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},or=[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 nr={name:"zondicons-copy",render:function(e,t){return p(),x("svg",sr,[...or])}};const ar={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},lr=[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 ir={name:"mdi-github",render:function(e,t){return p(),x("svg",ar,[...lr])}};const cr={class:"flex"};var ur=u({__name:"AGErrorReportModalButtons",props:{report:We()},setup(e){const r=e,s=t((()=>r.report.description?`${r.report.title}: ${r.report.description}`:r.report.title)),o=t((()=>{if(!Me.sourceUrl)return!1;const e=encodeURIComponent(s.value),t=encodeURIComponent(["[Please, explain here what you were trying to do when this error appeared]","","Error details:","```",ne(r.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((()=>W([{id:"clipboard",description:"Copy to clipboard",iconComponent:nr,async handler(){await navigator.clipboard.writeText(`${s.value}\n\n${r.report.details}`),nt.showSnackbar(it("errors.copiedToClipboard","Debug information copied to clipboard"))}},{id:"console",description:"Log to console",iconComponent:rr,handler(){const e=r.report.error??r.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:ir,url:o.value})}))));return(e,t)=>(p(),x("div",cr,[(p(!0),x(A,null,E(n.value,((t,r)=>v(e.$slots,"default",C(t,{key:r}),(()=>[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))]))}});ur.__file="src/components/modals/AGErrorReportModalButtons.vue";var dr=u({__name:"AGErrorReportModalTitle",props:{report:We(),currentReport:qe(),totalReports:qe()},setup(e){const r=e,s=t((()=>!r.totalReports||r.totalReports<=1?r.report.title:`${r.report.title} (${r.currentReport}/${r.totalReports})`));return(e,t)=>(p(),m(Ht,{text:s.value,inline:""},null,8,["text"]))}});dr.__file="src/components/modals/AGErrorReportModalTitle.vue";const pr={class:"flex items-center justify-between text-lg font-medium"},mr={class:"flex items-center"},fr=["textContent"];var hr=u({__name:"AGErrorReportModal",props:Jt(),setup(e){const t=e,{activeReportIndex:r,details:s,nextReportText:o,previousReportText:n,report:a}=Xt(t);return(e,t)=>(p(),m(Rt,null,{default:h((()=>[k("div",null,[k("h2",pr,[k("div",mr,[w(dr,{report:f(a),"current-report":f(r)+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(r),title:f(n),"aria-label":f(n),onClick:t[0]||(t[0]=e=>r.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(r)===e.reports.length-1,title:f(o),"aria-label":f(o),onClick:t[1]||(t[1]=e=>r.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(ur,{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)]),k("pre",{class:"h-full overflow-auto bg-gray-200 p-4 text-xs text-red-900",textContent:$(f(s))},null,8,fr)])),_:1}))}});hr.__file="src/components/modals/AGErrorReportModal.vue";const vr={message:Ze()};function gr(){return vr}function _r(e){return{renderedMessage:t((()=>e.message??it("ui.loading","Loading...")))}}var br=u({__name:"AGLoadingModal",props:gr(),setup(e){const t=e,{renderedMessage:r}=_r(t);return(e,t)=>(p(),m(Rt,{cancellable:!1},{default:h((()=>[w(Ht,{text:f(r)},null,8,["text"])])),_:1}))}});br.__file="src/components/modals/AGLoadingModal.vue";const yr={title:Ze(),message:Qe(),label:Ze(),defaultValue:Ze(),placeholder:Ze(),acceptText:Ze(),cancelText:Ze()};function xr(){return yr}function Ar(e){return{renderedAcceptText:t((()=>e.acceptText??it("ui.accept","Ok"))),renderedCancelText:t((()=>e.cancelText??it("ui.cancel","Cancel")))}}var wr=u({__name:"AGForm",props:{form:De()},emits:["submit"],setup(e,{emit:t}){const r=e,s=t;function o(){r.form&&!r.form.submit()||s("submit")}return g("form",r.form),(e,t)=>(p(),x("form",{onSubmit:H(o,["prevent"])},[v(e.$slots,"default")],32))}});wr.__file="src/components/forms/AGForm.vue";const Gr={name:Ze(),label:Ze()};function kr(){return Gr}function Sr(e){return xt(e,Gr)}var Cr=u({__name:"AGHeadlessInput",props:{as:Ze("div"),modelValue:ze([String,Number,Boolean]),...kr()},emits:["update:modelValue"],setup(e,{expose:r,emit:o}){const n=o,a=e,l=t((()=>i&&a.name?i.errors[a.name]??null:null)),i=s("form",null),c={id:`input-${X()}`,name:t((()=>a.name)),label:t((()=>a.label)),value:t((()=>i&&a.name?i.getFieldValue(a.name):a.modelValue)),errors:T(l),update(e){i&&a.name?i.setFieldValue(a.name,e):n("update:modelValue",e)}};return g("input",c),r(c),(t,r)=>e.as?(p(),m(_(e.as),{key:0},{default:h((()=>[v(t.$slots,"default")])),_:3})):v(t.$slots,"default",{key:1})}});Cr.__file="src/components/headless/forms/AGHeadlessInput.vue";const jr=["id"];var Mr=u({__name:"AGHeadlessInputError",setup(e){const r=Be("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),s=t((()=>r.errors?it(`errors.${r.errors[0]}`,`Error: ${r.errors[0]}`):null));return(e,t)=>s.value?(p(),x("p",{key:0,id:`${f(r).id}-error`},$(s.value),9,jr)):G("v-if",!0)}});Mr.__file="src/components/headless/forms/AGHeadlessInputError.vue";const $r=["id","type","value","aria-invalid","aria-describedby","checked"];var Er=u({__name:"AGHeadlessInputInput",props:{type:Ze("text")},setup(r){const s=r,o=e(),n=Be("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),a=t((()=>n.value)),l=t((()=>{if("checkbox"===s.type)return!!a.value}));function i(){o.value&&n.update("checkbox"===s.type?o.value.checked:o.value.value)}return(e,t)=>(p(),x("input",{id:f(n).id,ref_key:"$input",ref:o,type:r.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,$r))}});Er.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const Hr=["for"];var Tr=u({__name:"AGHeadlessInputLabel",setup(e){const r=Be("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>"),s=R(),o=t((()=>!(!r.label&&!s.default)));return(e,t)=>o.value?(p(),x("label",{key:0,for:f(r).id},[v(e.$slots,"default",{},(()=>[M($(f(r).label),1)]))],8,Hr)):G("v-if",!0)}});Tr.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";const Rr={class:"absolute bottom-0 left-0 translate-y-full"};var Ir=u({inheritAttrs:!1,__name:"AGInput",props:kr(),setup(e){const t=e,r=Re(),[s,o]=_t();return(e,n)=>(p(),m(Cr,C({ref_key:"$input",ref:r,class:["relative flex flex-col items-center",f(o)]},t),{default:h((()=>[w(Tr,{class:"sr-only"}),w(Er,C(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(r)?.errors}]}),null,16,["class"]),k("div",Rr,[w(Mr,{class:"mt-1 text-sm text-red-500"})])])),_:1},16,["class"]))}});Ir.__file="src/components/forms/AGInput.vue";const Lr={String:"string",Number:"number",Boolean:"boolean",Object:"object"},Pr=new WeakMap;class Or extends V{constructor(r){super(),O(this,"errors",void 0),O(this,"_fields",void 0),O(this,"_data",void 0),O(this,"_submitted",void 0),O(this,"_errors",void 0),this._fields=r,this._submitted=e(!1),this._data=this.getInitialData(r),this._errors=this.getInitialErrors(r),Pr.set(this,t((()=>!Object.values(this._errors).some((e=>null!==e))))),this.errors=T(this._errors)}get valid(){return!!Pr.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[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 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 Br(e){return new Or(e)}function Vr(e){return{default:e,type:Lr.Boolean}}function zr(e){return{default:e,type:Lr.Boolean,rules:"required"}}function qr(e){return{default:e,type:Lr.Number,rules:"required"}}function Dr(e){return{default:e,type:Lr.String,rules:"required"}}function Ur(e){return{default:e,type:Lr.Number}}function Fr(e){return{default:e,type:Lr.String}}const Nr={class:"mt-2 flex flex-row-reverse gap-2"};var Kr=u({__name:"AGPromptModal",props:xr(),setup(e){const t=e,r=Br({draft:Dr(t.defaultValue??"")}),{renderedAcceptText:s,renderedCancelText:o}=Ar(t);return(e,t)=>(p(),m(Rt,{cancellable:!1,title:e.title},{default:h((({close:t})=>[w(Ht,{text:e.message},null,8,["text"]),w(wr,{form:f(r),onSubmit:e=>t(f(r).draft)},{default:h((()=>[w(Ir,{name:"draft",placeholder:e.placeholder,label:e.label},null,8,["placeholder","label"]),k("div",Nr,[w(qt,{submit:""},{default:h((()=>[M($(f(s)),1)])),_:1}),w(qt,{color:"secondary",onClick:e=>t()},{default:h((()=>[M($(f(o)),1)])),_:2},1032,["onClick"])])])),_:2},1032,["form","onSubmit"])])),_:1},8,["title"]))}});Kr.__file="src/components/modals/AGPromptModal.vue";const Wr={class:"pointer-events-auto"};var Qr=u({__name:"AGHeadlessSnackbar",setup:e=>(e,t)=>(p(),x("div",Wr,[v(e.$slots,"default")]))});Qr.__file="src/components/headless/snackbars/AGHeadlessSnackbar.vue";const Zr=se(ut,["Primary","Clear"]),Yr={id:Qe(),message:Qe(),actions:He((()=>[])),color:Pe(Zr,ut.Secondary)};function Jr(){return Yr}function Xr(e){return{activate:function(t){t.handler?.(),t.dismiss&&nt.hideSnackbar(e.id)}}}var es=u({__name:"AGSnackbar",props:Jr(),setup(e){const r=e,{activate:s}=Xr(r),o=t((()=>r.color===ut.Danger?"bg-red-200 text-red-900":"bg-gray-900 text-white"));return(e,t)=>(p(),m(Qr,{class:j(["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,r)=>(p(),m(qt,{key:r,color:e.color,onClick:e=>f(s)(t)},{default:h((()=>[M($(t.text),1)])),_:2},1032,["color","onClick"])))),128))])),_:1},8,["class"]))}});es.__file="src/components/snackbars/AGSnackbar.vue";const ts={class:"grid flex-grow place-items-center"},rs={class:"flex flex-col items-center space-y-6 p-8"},ss={class:"mt-2 text-center text-4xl font-medium text-red-600"},os={class:"mt-4 flex flex-col space-y-4"};var ns=u({__name:"AGStartupCrash",setup:e=>(e,t)=>(p(),x("div",ts,[k("div",rs,[k("h1",ss,$(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"]),k("div",os,[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})])])]))});ns.__file="src/components/lib/AGStartupCrash.vue";const as={$ui:nt};var ls={async install(e,t){const r={[st.AlertModal]:Pt,[st.ConfirmModal]:Ut,[st.ErrorReportModal]:hr,[st.LoadingModal]:br,[st.PromptModal]:Kr,[st.Snackbar]:es,[st.StartupCrash]:ns};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return nt.registerComponent(t,r)})),await et(e,as)}};async function is(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=[Je,ft,vt,tt,ls,...t.plugins??[]];await Ee(r,e,t),await(t.install?.(e)),Se.emit("application-ready")}async function cs(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=I(e);await is(r,t),r.mount("#app"),r._container?.classList.remove("loading"),Se.emit("application-mounted")}const us={key:0};var ds=u({__name:"AGAppModals",setup(e){const r=t((()=>nt.modals[0]??null));return(e,t)=>r.value?(p(),x("aside",us,[w(Ct,{"child-index":1,modal:r.value},null,8,["modal"])])):G("v-if",!0)}});ds.__file="src/components/AGAppModals.vue";const ps={"aria-live":"assertive",class:"z-60 pointer-events-none fixed inset-0 flex items-end px-4 py-6 sm:p-6"},ms={class:"flex w-full flex-col items-end space-y-4"};const fs={render:function(e,t){return p(),x("div",ps,[k("div",ms,[(p(!0),x(A,null,E(e.$ui.snackbars,(e=>(p(),m(_(e.component),C({id:e.id,key:e.id},e.properties),null,16,["id"])))),128))])])},__file:"src/components/AGAppSnackbars.vue"};var hs=fs,vs=u({__name:"AGAppOverlays",setup(t){const r=e(null),s=e(!0);return gt("show-overlays-backdrop",(async()=>{r.value&&s.value&&(s.value=!1,r.value.classList.remove("opacity-0"))})),gt("hide-overlays-backdrop",(async()=>{r.value&&!s.value&&(s.value=!0,r.value.classList.add("opacity-0"))})),(e,t)=>(p(),x(A,null,[k("div",{id:"aerogel-overlays-backdrop",ref_key:"$backdrop",ref:r,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),w(ds),w(hs)],64))}});vs.__file="src/components/AGAppOverlays.vue";const gs={class:"flex min-h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var _s=u({__name:"AGAppLayout",setup:e=>(e,t)=>(p(),x("div",gs,[e.$errors.hasStartupErrors?v(e.$slots,"startup-crash",{key:0},(()=>[(p(),m(_(e.$ui.requireComponent(f(st).StartupCrash))))])):v(e.$slots,"default",{key:1}),w(vs)]))});_s.__file="src/components/AGAppLayout.vue";const bs={class:"ml-2"};var ys=u({inheritAttrs:!1,__name:"AGCheckbox",props:{name:Ze()},emits:["update:modelValue"],setup(e){const t=Re();return(r,s)=>(p(),m(Cr,{ref_key:"$input",ref:t,name:e.name,class:"flex","onUpdate:modelValue":s[0]||(s[0]=e=>r.$emit("update:modelValue",e))},{default:h((()=>[w(Er,C(r.$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"]),k("div",bs,[r.$slots.default?(p(),m(Tr,{key:0},{default:h((()=>[v(r.$slots,"default")])),_:3})):G("v-if",!0),w(Mr,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});ys.__file="src/components/forms/AGCheckbox.vue";const xs={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},As=[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 ws={name:"zondicons-cheveron-down",render:function(e,t){return p(),x("svg",xs,[...As])}};const Gs={name:Ze(),label:Ze(),options:Ue(),noSelectionText:Ze(),optionsText:ze()},ks=["update:modelValue"];function Ss(){return Gs}function Cs(){return[...ks]}function js(e){return xt(e,Gs)}var Ms=u({__name:"AGHeadlessSelect",props:{modelValue:ze(),...Ss()},emits:Cs(),setup(e,{expose:r,emit:o}){const n=o,a=e,l=t((()=>"function"==typeof a.optionsText?a.optionsText:"string"==typeof a.optionsText?e=>ee(e[a.optionsText]):e=>ee(e))),i=s("form",null),c=t((()=>a.noSelectionText??it("select.noSelection","-"))),u=t((()=>i&&a.name?i.getFieldValue(a.name):a.modelValue)),d=t((()=>i&&a.name?i.errors[a.name]??null:null));function _(e){i&&a.name?i.setFieldValue(a.name,e):n("update:modelValue",e)}const b={id:`select-${X()}`,noSelectionText:c,selectedOption:u,errors:d,options:t((()=>a.options)),label:t((()=>a.label)),buttonText:t((()=>null===u.value?c.value:l.value(u.value))),renderText:l,update:_};return g("select",b),r(b),(e,t)=>(p(),m(f(me),{"model-value":u.value,"onUpdate:modelValue":t[0]||(t[0]=e=>_(e))},{default:h((({value:t,open:r,disabled:s})=>[v(e.$slots,"default",{value:t,open:r,disabled:s})])),_:3},8,["model-value"]))}});Ms.__file="src/components/headless/forms/AGHeadlessSelect.vue";var $s=u({__name:"AGHeadlessSelectButton",props:{textClass:Ze()},setup(e){const t=Be("select","<AGHeadlessSelectButton> must be a child of a <AGHeadlessSelect>");return(r,s)=>(p(),m(f(fe),null,{default:h((({value:s,open:o,disabled:n})=>[v(r.$slots,"default",{value:s,open:o,disabled:n},(()=>[k("span",{class:j(e.textClass)},$(f(t)?.buttonText),3)])),v(r.$slots,"icon")])),_:3}))}});$s.__file="src/components/headless/forms/AGHeadlessSelectButton.vue";const Es=["id"];var Hs=u({__name:"AGHeadlessSelectError",setup(e){const r=Be("select","<AGHeadlessSelectError> must be a child of a <AGHeadlessSelect>"),s=t((()=>r.errors?it(`errors.${r.errors[0]}`,`Error: ${r.errors[0]}`):null));return(e,t)=>s.value?(p(),x("p",{key:0,id:`${f(r).id}-error`},$(s.value),9,Es)):G("v-if",!0)}});Hs.__file="src/components/headless/forms/AGHeadlessSelectError.vue";var Ts=u({__name:"AGHeadlessSelectLabel",setup(e){const r=Be("select","<AGHeadlessSelectLabel> must be a child of a <AGHeadlessSelect>"),s=R(),o=t((()=>!(!r.label&&!s.default)));return(e,t)=>o.value?(p(),m(f(he),{key:0},{default:h((({open:t,disabled:s})=>[v(e.$slots,"default",{open:t,disabled:s},(()=>[M($(f(r).label),1)]))])),_:3})):G("v-if",!0)}});Ts.__file="src/components/headless/forms/AGHeadlessSelectLabel.vue";var Rs=u({__name:"AGHeadlessSelectOption",props:{value:Ne(),selectedClass:Ze(),unselectedClass:Ze(),activeClass:Ze(),inactiveClass:Ze()},setup(e){const t=Be("select","<AGHeadlessSelectOption> must be a child of a <AGHeadlessSelect>");return(r,s)=>(p(),m(f(ve),{value:e.value,as:"template"},{default:h((({active:s,selected:o,disabled:n})=>[v(r.$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})},$(f(t).renderText(e.value)),3)]))])),_:3},8,["value"]))}});Rs.__file="src/components/headless/forms/AGHeadlessSelectOption.vue";const Is={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};var Ls=u({__name:"AGSelect",props:Ss(),emits:Cs(),setup(e){const t=e,r=Re();return(e,s)=>(p(),m(Ms,C(t,{ref_key:"$select",ref:r,as:"div","onUpdate:modelValue":s[0]||(s[0]=t=>e.$emit("update:modelValue",t))}),{default:h((()=>[w(Ts,{class:"block text-sm font-medium leading-6 text-gray-900"}),k("div",{class:j(["relative",{"mt-2":f(r)?.label}])},[w($s,{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":f(r)?.errors}]),"text-class":"block truncate"},{icon:h((()=>[k("span",Is,[w(f(ws),{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(r)?.options??[],((e,t)=>(p(),m(Rs,{key:t,value:e,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(Hs,{class:"mt-2 text-sm text-red-600"})])),_:1},16))}});Ls.__file="src/components/forms/AGSelect.vue";var Ps=u({__name:"AGErrorMessage",props:{error:We()},setup(e){const r=e,s=t((()=>dt.getErrorMessage(r.error)));return(e,t)=>(p(),m(Ht,{text:s.value,inline:""},null,8,["text"]))}});Ps.__file="src/components/lib/AGErrorMessage.vue";var Os=u({__name:"AGLink",setup:e=>(e,t)=>(p(),m(zt,{class:"font-medium hover:underline"},{default:h((()=>[v(e.$slots,"default")])),_:3}))});Os.__file="src/components/lib/AGLink.vue";var Bs=u({__name:"AGMeasured",props:{as:Ze("span")},setup(t){const r=e(!1);return(e,s)=>{const o=L("measure");return P((p(),m(_(t.as),{class:j({"!invisible !absolute !w-auto":!r.value})},{default:h((()=>[v(e.$slots,"default")])),_:3},8,["class"])),[[o,()=>r.value=!0]])}}});Bs.__file="src/components/lib/AGMeasured.vue";var Vs=u({__name:"AGModalTitle",setup:e=>(e,t)=>(p(),m($t,{class:"mb-2 font-semibold"},{default:h((()=>[v(e.$slots,"default")])),_:3}))});Vs.__file="src/components/modals/AGModalTitle.vue";export{Pt as AGAlertModal,_s as AGAppLayout,vs as AGAppOverlays,qt as AGButton,ys as AGCheckbox,Ut as AGConfirmModal,Ps as AGErrorMessage,ur as AGErrorReportModalButtons,dr as AGErrorReportModalTitle,wr as AGForm,zt as AGHeadlessButton,Cr as AGHeadlessInput,Mr as AGHeadlessInputError,Er as AGHeadlessInputInput,Tr as AGHeadlessInputLabel,St as AGHeadlessModal,Mt as AGHeadlessModalPanel,$t as AGHeadlessModalTitle,Ms as AGHeadlessSelect,$s as AGHeadlessSelectButton,Hs as AGHeadlessSelectError,Ts as AGHeadlessSelectLabel,Rs as AGHeadlessSelectOption,Qr as AGHeadlessSnackbar,Ir as AGInput,Os as AGLink,br as AGLoadingModal,Ht as AGMarkdown,Bs as AGMeasured,Rt as AGModal,Ct as AGModalContext,Vs as AGModalTitle,Kr as AGPromptModal,Ls as AGSelect,es as AGSnackbar,ns as AGStartupCrash,Me as App,je as AppService,ut as Colors,dt as Errors,Se as Events,ke as EventsService,Lr as FormFieldTypes,at as Lang,Ge as Service,Zr as SnackbarColors,nt as UI,st as UIComponents,ot as UIService,It as alertModalProps,He as arrayProp,Vr as booleanInput,Te as booleanProp,et as bootServices,cs as bootstrap,is as bootstrapApplication,Re as componentRef,Ie as computedAsync,Ot as confirmModalProps,Le as defineDirective,$e as definePlugin,we as defineServiceState,Pe as enumProp,Yt as errorReportModalProps,Sr as extractInputProps,Gt as extractModalProps,js as extractSelectProps,Ve as injectOrFail,Oe as injectReactive,Be as injectReactiveOrFail,Gr as inputProps,Ee as installPlugins,vr as loadingModalProps,ze as mixedProp,At as modalProps,Ur as numberInput,qe as numberProp,De as objectProp,bt as onCleanMounted,yr as promptModalProps,yt as removeInteractiveClasses,Ue as requiredArrayProp,zr as requiredBooleanInput,Fe as requiredEnumProp,Ne as requiredMixedProp,qr as requiredNumberInput,Ke as requiredNumberProp,We as requiredObjectProp,Dr as requiredStringInput,Qe as requiredStringProp,ks as selectEmits,Gs as selectProps,Yr as snackbarProps,Fr as stringInput,Ze as stringProp,lt as translate,it as translateWithDefault,Lt as useAlertModalProps,Vt as useConfirmModal,Bt as useConfirmModalProps,Xt as useErrorReportModal,Jt as useErrorReportModalProps,gt as useEvent,Br as useForm,_t as useInputAttrs,kr as useInputProps,_r as useLoadingModal,gr as useLoadingModalProps,kt as useModalExpose,wt as useModalProps,Ar as usePromptModal,xr as usePromptModalProps,Cs as useSelectEmits,Ss as useSelectProps,Xr as useSnackbar,Jr 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 b,normalizeProps as _,guardReactiveProps as y,createElementBlock as x,Fragment as w,createVNode as A,createCommentVNode as k,createElementVNode as S,h as G,mergeProps as C,customRef as $,normalizeClass as j,createTextVNode as M,toDisplayString as E,renderList as H,watchEffect as L,withModifiers as T,readonly as I,useSlots as R,createApp as P,resolveDirective as B,withDirectives as D}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 q from"@babel/runtime/helpers/esm/defineProperty";import O from"virtual:aerogel";import{JSError as V,tap as F,MagicObject as z,PromisedValue as U,Storage as N,objectOnly as W,isEmpty as K,objectDeepClone as Q,fail as Z,facade as Y,arrayRemove as J,updateLocationQueryParameters as X,forever as ee,after as te,uuid as se,isObject as re,objectWithoutEmpty as oe,toString as ne,objectWithout as ae,noop as le,stringExcerpt as ie,arrayFrom as ce}from"@noeldemartin/utils";import"core-js/modules/esnext.async-iterator.for-each.js";import"core-js/modules/esnext.iterator.for-each.js";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{createPinia as ue,setActivePinia as de,defineStore as pe}from"pinia";import"core-js/modules/esnext.weak-map.delete-all.js";import"core-js/modules/esnext.weak-map.emplace.js";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.find.js";import"core-js/modules/esnext.iterator.find.js";import"core-js/modules/esnext.async-iterator.some.js";import"core-js/modules/esnext.iterator.some.js";import{Dialog as me,DialogPanel as fe,DialogTitle as he,Listbox as ve,ListboxButton as ge,ListboxLabel as be,ListboxOption as _e,ListboxOptions as ye}from"@headlessui/vue";export{ListboxOptions as AGHeadlessSelectOptions}from"@headlessui/vue";import xe from"dompurify";import{marked as we,Renderer as Ae}from"marked";class ServiceBootError extends V{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}let ke=null;function Se(){return ke??Ge()}function Ge(){return F(ue(),(e=>{ke=e,de(e)}))}function Ce(){return ke??Se()}function $e(e,t){return Se(),pe(e,t)()}function je(e){var t;return q(t=class extends Me{usesStore(){return!0}getName(){return e.name??null}getInitialState(){return"function"==typeof e.initialState?e.initialState():Object.entries(e.initialState).reduce(((e,t)=>{let[s,r]=t;try{r=structuredClone(r)}catch(e){console.warn(`Could not clone '${s}' state from ${this.getName()} service, this may cause problems if you're using multiple instances of the service (for example, in unit tests).\nTo fix this problem, declare your initialState as a function instead.`)}return e[s]=r,e}),{})}getComputedStateDefinition(){return e.computed??{}}serializePersistedState(t){return e.serialize?.(t)??t}},"persist",e.persist??[]),t}class Me extends z{constructor(){super(),q(this,"_name",void 0),q(this,"_booted",void 0),q(this,"_computedStateKeys",void 0),q(this,"_store",void 0);const e=this.getComputedStateDefinition();this._name=this.getName()??new.target.name,this._booted=new U,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&$e(this._name,{state:()=>this.getInitialState(),getters:e})}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}hasPersistedState(){return N.has(this._name)}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=W(e,t);if(K(s))return;const r=N.get(this._name);r&&N.set(this._name,{...r,...this.serializePersistedState(Q(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()&&!K(e))if(N.has(this._name)){const e=N.require(this._name);this.setState(e)}else N.set(this._name,W(this.getState(),e))}requireStore(){return this._store?this._store:Z(`Failed getting '${this._name}' store`)}}q(Me,"persist",[]);const Ee={Low:-256,Default:0,High:256};class He extends Me{constructor(){super(...arguments),q(this,"listeners",{})}async boot(){Object.entries(globalThis.__aerogelEvents__??{}).forEach((e=>{let[t,s]=e;return this.on(t,s)}))}async emit(e,t){const s=this.listeners[e]??{priorities:[],handlers:{}};for(const e of s.priorities)await Promise.all(s.handlers[e]?.map((e=>e(t)))??[])}on(e,t,s){const r="function"==typeof t?{}:t,o="function"==typeof t?t:s;return this.registerListener(e,r,o),()=>this.off(e,o)}once(e,t,s){let r=null;const o="function"==typeof t?{}:t,n="function"==typeof t?t:s;return F((()=>r&&this.off(e,r)),(t=>{r=function(){return t(),n(...arguments)},this.registerListener(e,o,n)}))}off(e,t){const s=this.listeners[e];if(!s)return;const r=[...s.priorities];for(const e of r)J(s.handlers[e]??[],t),0===s.handlers[e]?.length&&(delete s.handlers[e],J(s.priorities,e));0===s.priorities.length&&delete this.listeners[e]}registerListener(e,t,s){const r=t.priority??0;e in this.listeners||(this.listeners[e]={priorities:[],handlers:{}});const o=this.listeners[e]?.priorities??Z(`priorities missing for event '${e}'`),n=this.listeners[e]?.handlers??Z(`handlers missing for event '${e}'`);o.includes(r)||(o.push(r),o.sort(((e,t)=>t-e)),n[r]=[]),n[r]?.push(s)}}var Le=Y(He),Te=je({name:"app",initialState:{plugins:{},environment:O.environment,version:O.version,sourceUrl:O.sourceUrl},computed:{development:e=>"development"===e.environment,testing:e=>"test"===e.environment||"testing"===e.environment,versionName(e){return this.development?"dev."+O.sourceHash.toString().substring(0,7):`v${e.version}`},versionUrl(e){return e.sourceUrl+(this.development?`/tree/${O.sourceHash}`:`/releases/tag/${this.versionName}`)}}});class Ie extends Te{constructor(){super(...arguments),q(this,"name",O.name),q(this,"ready",new U),q(this,"mounted",new U)}isReady(){return this.ready.isResolved()}isMounted(){return this.mounted.isResolved()}async whenReady(e){return await this.ready.then(e)}async reload(e){e&&X(e),location.reload(),await ee()}plugin(e){return this.plugins[e]??null}async boot(){Le.once("application-ready",(()=>this.ready.resolve())),Le.once("application-mounted",(()=>this.mounted.resolve()))}}var Re=Y(Ie);function Pe(e){return e}async function Be(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),r=1;r<t;r++)s[r-1]=arguments[r];Re.setState("plugins",e.reduce(((e,t)=>(t.name&&(e[t.name]=t),e)),{})),await Promise.all(e.map((e=>e.install(...s)))??[])}function De(e){return{type:Array,default:e??(()=>[])}}function qe(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function Oe(){return e()}function Ve(r){const o=e(),n=t(r);return s(n,(async()=>o.value=await n.value),{immediate:!0}),o}function Fe(e){return e}function ze(e,t){const s=Object.values(e);return{type:String,default:t??s[0]??null,validator:e=>s.includes(e)}}function Ue(e){const t=r(e);return t?o(t):void 0}function Ne(e,t){return Ue(e)??Z(t??`Could not resolve '${e}' injection key`)}function We(e,t){return r(e)??Z(t??`Could not resolve '${e}' injection key`)}function Ke(){return{type:Function,default:null}}function Qe(e,t){return{type:e,default:t??null}}function Ze(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function Ye(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function Je(){return{type:Array,required:!0}}function Xe(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}}function et(e){return{type:e,required:!0}}function tt(){return{type:Number,required:!0}}function st(){return{type:Object,required:!0}}function rt(){return{type:String,required:!0}}function ot(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}var nt={mounted(e,t){let{value:s}=t;!1!==s&&e.focus()}};const at=new WeakMap;const lt={"initial-focus":nt,measure:{mounted(e,t){let{value:s}=t;const r="function"==typeof s?s:null,o=()=>{const t=e.getBoundingClientRect();e.style.setProperty("--width",`${t.width}px`),e.style.setProperty("--height",`${t.height}px`),r?.({width:t.width,height:t.height})};at.set(e,F(new ResizeObserver(o)).observe(e)),o()},unmounted(e){at.get(e)?.unobserve(e),at.delete(e)}}};var it={install(e,t){const s={...lt,...t.directives};for(const[t,r]of Object.entries(s))e.directive(t,r)}};class ct extends Me{constructor(){super(...arguments),q(this,"cache",void 0)}async get(e){const t=await this.open();return await t.match(e)??null}async store(e,t){const s=await this.open();await s.put(e,t)}async replace(e,t){const s=await this.open();0!==(await s.keys(e)).length&&await s.put(e,t)}async open(){return this.cache=this.cache??F(new U,(e=>{caches.open("app").then((t=>e.resolve(t)))}))}}var ut=Y(ct);const dt={$app:Re,$events:Le};async function pt(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),Re.development&&Object.assign(window,t)}var mt={async install(e,t){const s={...dt,...t.services};e.use(Ce()),await pt(e,s)}};const ft=768,ht={Mobile:"mobile",Desktop:"desktop"};function vt(){return globalThis.innerWidth>768?ht.Desktop:ht.Mobile}var gt=je({name:"ui",initialState:{modals:[],snackbars:[],layout:vt()},computed:{mobile:e=>{let{layout:t}=e;return t===ht.Mobile},desktop:e=>{let{layout:t}=e;return t===ht.Desktop}}});const bt={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",ErrorReportModal:"error-report-modal",LoadingModal:"loading-modal",PromptModal:"prompt-modal",Snackbar:"snackbar",StartupCrash:"startup-crash"};class _t extends gt{constructor(){super(...arguments),q(this,"modalCallbacks",{}),q(this,"components",{})}requireComponent(e){return this.components[e]??Z(`UI Component '${e}' is not defined!`)}alert(e,t){this.openModal(this.requireComponent(bt.AlertModal),"string"!=typeof t?{message:e}:{title:e,message:t})}async confirm(e,t,s){const r=await this.openModal(this.requireComponent(bt.ConfirmModal),"string"!=typeof t?{message:e,...t??{}}:{title:e,message:t,...s??{}});return await r.beforeClose??!1}async prompt(e,t,s){const r=s?.trim??!0,o=await this.openModal(this.requireComponent(bt.PromptModal),"string"!=typeof t?{message:e,...t??{}}:{title:e,message:t,...s??{}}),n=await o.beforeClose;return(r&&"string"==typeof n?n?.trim():n)??null}async loading(e,t){const s=await this.openModal(this.requireComponent(bt.LoadingModal),"string"!=typeof e?{}:{message:e});try{t="function"==typeof(t="string"==typeof e?t:e)?Promise.resolve(t()):t;const[s]=await Promise.all([t,te({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:se(),properties:{message:e,...t},component:n(t.component??this.requireComponent(bt.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=se(),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&&Le.emit("hide-modal",{id:l.id})),await Promise.all([l||Le.emit("show-overlays-backdrop"),Le.emit("show-modal",{id:o.id})]),o}async closeModal(e,t){await Le.emit("close-modal",{id:e,result:t})}async boot(){this.watchModalEvents(),this.watchMountedEvent(),this.watchViewportBreakpoints()}watchModalEvents(){Le.on("modal-will-close",(e=>{let{modal:t,result:s}=e;this.modalCallbacks[t.id]?.willClose?.(s),1===this.modals.length&&Le.emit("hide-overlays-backdrop")})),Le.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&&Le.emit("show-modal",{id:r.id}))}))}watchMountedEvent(){Le.once("application-mounted",(async()=>{if(!globalThis.document||!globalThis.getComputedStyle)return;const e=globalThis.document.getElementById("splash");e&&("0"!==globalThis.getComputedStyle(e).opacity&&(e.style.opacity="0",await te({ms:600})),e.remove())}))}watchViewportBreakpoints(){if(!globalThis.matchMedia)return;globalThis.matchMedia("(min-width: 768px)").addEventListener("change",(()=>this.setState({layout:vt()})))}}var yt=Y(_t);class xt{constructor(e,t){q(this,"locale",void 0),q(this,"fallbackLocale",void 0),this.locale=e,this.fallbackLocale=t}getLocale(){return this.locale}async setLocale(e){this.locale=e}getFallbackLocale(){return this.fallbackLocale}async setFallbackLocale(e){this.fallbackLocale=e}getLocales(){return["en"]}translate(e){return Re.development&&console.warn("Lang provider is missing"),e}translateWithDefault(e,t){return Re.development&&console.warn("Lang provider is missing"),t}}var wt=je({name:"lang",persist:["locale","fallbackLocale"],initialState:{locale:null,locales:["en"],fallbackLocale:"en"}});var At=Y(class extends wt{constructor(){super(),q(this,"provider",void 0),this.provider=new xt(this.getState("locale")??this.getBrowserLocale(),this.getState("fallbackLocale"))}async setProvider(e){this.provider=e,this.locales=e.getLocales(),await e.setLocale(this.locale??this.getBrowserLocale()),await e.setFallbackLocale(this.fallbackLocale)}translate(e,t){return this.provider.translate(e,t)??e}translateWithDefault(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.provider.translateWithDefault(e,t,s)}getBrowserLocale(){const e=this.getState("locales");return navigator.languages.find((t=>e.includes(t)))??"en"}async boot(){globalThis.document&&this.requireStore().$subscribe((async()=>{await this.provider.setLocale(this.locale??this.getBrowserLocale()),await this.provider.setFallbackLocale(this.fallbackLocale),this.locale?document.querySelector("html")?.setAttribute("lang",this.locale):document.querySelector("html")?.removeAttribute("lang")}),{immediate:!0})}});const kt=At.translate.bind(At),St=At.translateWithDefault.bind(At);var Gt=je({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 Ct={Primary:"primary",Secondary:"secondary",Danger:"danger",Clear:"clear"};var $t=Y(class extends Gt{constructor(){super(...arguments),q(this,"forceReporting",!1),q(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?yt.openModal(yt.requireComponent(bt.ErrorReportModal),{reports:t}):yt.alert(St("errors.inspectEmpty","Nothing to inspect!"))}async report(e,t){if(await Le.emit("error",{error:e,message:t}),Re.testing)throw e;if(Re.development&&this.logError(e),!this.enabled)throw e;if(!Re.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};yt.showSnackbar(t??St("errors.notice","Something went wrong, but it's not your fault. Try again!"),{color:Ct.Danger,actions:[{text:St("errors.viewDetails","View details"),dismiss:!0,handler:()=>yt.openModal(yt.requireComponent(bt.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})))})}logError(e){console.error(e),re(e)&&e.cause&&this.logError(e.cause)}async createErrorReport(e){return"string"==typeof e?{title:e}:e instanceof Error||e instanceof V?this.createErrorReportFromError(e):re(e)?oe({title:ne(e.name??e.title??St("errors.unknown","Unknown Error")),description:ne(e.message??e.description??St("errors.unknownDescription","Unknown error object")),error:e}):{title:St("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}}});function jt(e){return"string"==typeof e?e:e instanceof Error||e instanceof V?e.message:re(e)?ne(e.message??e.description??"Unknown error object"):St("errors.unknown","Unknown Error")}const Mt={$errors:$t};function Et(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>!1;const s=e=>t(e)||(e=>($t.report(e),!0))(e);e.config.errorHandler=s,globalThis.onerror=(e,t,r,o,n)=>s(n??e),globalThis.onunhandledrejection=e=>s(e.reason)}var Ht={async install(e,t){Et(e,t.handleError),await pt(e,Mt)}};const Lt={$lang:At};var Tt={async install(e){e.config.globalProperties.$t??=kt,e.config.globalProperties.$td=St,await pt(e,Lt)}},It={async install(){"testing"===import.meta.env.MODE&&(globalThis.testingRuntime={on:function(){return Le.on(...arguments)}})}};function Rt(e,t){const s=Le.on(e,t);l((()=>s()))}function Pt(){const e=i(),s=t((()=>e.class));return[t((()=>ae(e,"class"))),s]}function Bt(e){let t=le;c((()=>t=e())),l((()=>t()))}function Dt(e){return e.split(/\s+/).filter((e=>!/^(hover|focus|focus-visible):/.test(e))).join(" ").trim()}function qt(e,t){return Object.keys(t).reduce(((t,s)=>(t[s]=e[s],t)),{})}const Ot={cancellable:qe(!0),title:ot()};function Vt(){return Ot}function Ft(e){return qt(e,Ot)}function zt(e){return{close:async()=>e.value?.close(),cancellable:t((()=>!!e.value?.cancellable))}}var Ut=u({__name:"AGHeadlessModal",props:Vt(),setup(t,{expose:s}){const r=t,o=e(null),n=e(!0),a=e(!1),{modal:l}=Ne("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||(Le.emit("modal-will-close",{modal:l,result:e}),await i(),a.value=!0,Le.emit("modal-closed",{modal:l,result:e}))}return Rt("close-modal",(async({id:e,result:t})=>{e===l.id&&await c(t)})),Rt("hide-modal",(async({id:e})=>{e===l.id&&await i()})),Rt("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(me),{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))}});Ut.__file="src/components/headless/modals/AGHeadlessModal.vue";var Nt=u({__name:"AGModalContext",props:{modal:st(),childIndex:tt()},setup(e){const t=e;return g("modal",{modal:d(t,"modal"),childIndex:d(t,"childIndex")}),(t,s)=>(p(),m(b(e.modal.component),_(y(e.modal.properties)),null,16))}});Nt.__file="src/components/modals/AGModalContext.vue";const Wt=S("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var Kt=u({__name:"AGHeadlessModalPanel",setup(e){const s=Ne("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),r=t((()=>yt.modals[s.childIndex]??null));return(e,t)=>(p(),m(f(fe),null,{default:h((()=>[v(e.$slots,"default"),r.value?(p(),x(w,{key:0},[Wt,A(Nt,{"child-index":f(s).childIndex+1,modal:r.value},null,8,["child-index","modal"])],64)):k("v-if",!0)])),_:3}))}});Kt.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";var Qt=u({__name:"AGHeadlessModalTitle",props:{as:ot("h2")},setup:e=>(t,s)=>(p(),m(f(he),{as:e.as},{default:h((()=>[v(t.$slots,"default")])),_:3},8,["as"]))});function Zt(e){return t=we(e,{mangle:!1,headerIds:!1,renderer:F(new Ae,(e=>{e.link=function(e,t,s){return Ae.prototype.link.apply(this,[e,t,s]).replace("<a",'<a target="_blank"')}}))}),xe.sanitize(t,{ADD_ATTR:["target"]});var t}Qt.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";var Yt=u({__name:"AGMarkdown",props:{as:ot(),inline:qe(),langKey:ot(),langParams:Qe(),text:ot()},setup(e){const s=e,r=i(),o=t((()=>s.text??(s.langKey&&kt(s.langKey,s.langParams??{})))),n=t((()=>{if(!o.value)return null;let e=Zt(o.value);return s.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),a=()=>G(s.as??(s.inline?"span":"div"),{innerHTML:n.value,...r,class:`${r.class??""} ${s.inline?"":"prose"}`});return(e,t)=>(p(),m(a))}});Yt.__file="src/components/lib/AGMarkdown.vue";const Jt={class:"fixed inset-0 flex items-center justify-center p-8"};var Xt=u({inheritAttrs:!1,__name:"AGModal",props:Vt(),setup(t,{expose:s}){const r=t,o=e();return s(zt(o)),(e,t)=>(p(),m(Ut,C({ref_key:"$modal",ref:o},r,{class:"relative z-50"}),{default:h((({close:t})=>[S("div",Jt,[A(Kt,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white p-4"},{default:h((()=>[e.title?(p(),m(Qt,{key:0,class:"mb-2 text-lg font-semibold"},{default:h((()=>[A(Yt,{text:e.title,inline:""},null,8,["text"])])),_:1})):k("v-if",!0),S("div",C({class:"flex max-h-full flex-col overflow-auto"},e.$attrs),[v(e.$slots,"default",{close:t})],16)])),_:2},1024)])])),_:3},16))}});Xt.__file="src/components/modals/AGModal.vue";const es={title:ot(),message:rt()};function ts(){return es}var ss=u({__name:"AGAlertModal",props:ts(),setup:e=>(e,t)=>(p(),m(Xt,{title:e.title},{default:h((()=>[A(Yt,{text:e.message},null,8,["text"])])),_:1},8,["title"]))});ss.__file="src/components/modals/AGAlertModal.vue";const rs={title:ot(),message:rt(),acceptText:ot(),acceptColor:ze(Ct,Ct.Primary),cancelText:ot(),cancelColor:ze(Ct,Ct.Clear)};function os(){return rs}function ns(e){return{renderedAcceptText:t((()=>e.acceptText??St("ui.accept","Ok"))),renderedCancelText:t((()=>e.cancelText??St("ui.cancel","Cancel")))}}function as(e){return e instanceof HTMLElement?e:ls(e)?e.$el:void 0}function ls(e){return re(e)&&"$el"in e}function is(){return $(((e,t)=>{let s;return{get:()=>(e(),s),set(e){s=as(e),t()}}}))}var cs=u({__name:"AGHeadlessButton",props:{as:Ye(),href:ot(),url:ot(),route:ot(),routeParams:Ye((()=>({}))),routeQuery:Ye((()=>({}))),submit:qe()},setup(e,{expose:s}){const r=e,o=is(),n=t((()=>r.as?{as:r.as,props:{}}:r.route?{as:"router-link",props:{to:oe({name:r.route,params:r.routeParams,query:r.routeQuery})}}:r.href||r.url?{as:"a",props:{target:"_blank",href:r.href||r.url}}:{as:"button",props:{type:r.submit?"submit":"button"}}));return s({$el:o}),(e,t)=>(p(),m(b(n.value.as),C({ref_key:"$root",ref:o},n.value.props),{default:h((()=>[v(e.$slots,"default")])),_:3},16))}});cs.__file="src/components/headless/forms/AGHeadlessButton.vue";var us=u({__name:"AGButton",props:{color:ze(Ct,Ct.Primary)},setup(e){const s=e,r=t((()=>{switch(s.color){case Ct.Secondary:return["text-white bg-gray-600","hover:bg-gray-500","focus-visible:outline-offset-2 focus-visible:outline-gray-600"].join(" ");case Ct.Clear:return"hover:bg-gray-500/20 focus-visible:outline-gray-500/60";case Ct.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(cs,{class:j(["px-2.5 py-1.5 focus-visible:outline focus-visible:outline-2",r.value])},{default:h((()=>[v(e.$slots,"default")])),_:3},8,["class"]))}});us.__file="src/components/forms/AGButton.vue";const ds={class:"mt-2 flex flex-row-reverse gap-2"};var ps=u({__name:"AGConfirmModal",props:os(),setup(e){const t=e,{renderedAcceptText:s,renderedCancelText:r}=ns(t);return(e,t)=>(p(),m(Xt,{cancellable:!1,title:e.title},{default:h((({close:t})=>[A(Yt,{text:e.message},null,8,["text"]),S("div",ds,[A(us,{color:e.acceptColor,onClick:e=>t(!0)},{default:h((()=>[M(E(f(s)),1)])),_:2},1032,["color","onClick"]),A(us,{color:e.cancelColor,onClick:e=>t()},{default:h((()=>[M(E(f(r)),1)])),_:2},1032,["color","onClick"])])])),_:1},8,["title"]))}});ps.__file="src/components/modals/AGConfirmModal.vue";const ms={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},fs=[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 hs={name:"zondicons-cheveron-right",render:function(e,t){return p(),x("svg",ms,[...fs])}};const vs={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},gs=[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 bs={name:"zondicons-cheveron-left",render:function(e,t){return p(),x("svg",vs,[...gs])}};const _s={reports:Je()};function ys(){return _s}function xs(s){const r=e(0),o=t((()=>s.reports[r.value])),n=t((()=>o.value.details?.trim()||St("errors.detailsEmpty","This error is missing a stacktrace."))),a=St("errors.previousReport","Show previous report"),l=St("errors.nextReport","Show next report");return{activeReportIndex:r,details:n,nextReportText:l,previousReportText:a,report:o}}const ws={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},As=[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 ks={name:"mdi-console",render:function(e,t){return p(),x("svg",ws,[...As])}};const Ss={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Gs=[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 Cs={name:"zondicons-copy",render:function(e,t){return p(),x("svg",Ss,[...Gs])}};const $s={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},js=[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 Ms={name:"mdi-github",render:function(e,t){return p(),x("svg",$s,[...js])}};const Es={class:"flex"};var Hs=u({__name:"AGErrorReportModalButtons",props:{report:st()},setup(e){const s=e,r=t((()=>s.report.description?`${s.report.title}: ${s.report.description}`:s.report.title)),o=t((()=>{if(!Re.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:","```",ie(s.report.details??"Details missing from report",1800-e.length-Re.sourceUrl.length).trim(),"```"].join("\n"));return`${Re.sourceUrl}/issues/new?title=${e}&body=${t}`})),n=t((()=>F([{id:"clipboard",description:"Copy to clipboard",iconComponent:Cs,async handler(){await navigator.clipboard.writeText(`${r.value}\n\n${s.report.details}`),yt.showSnackbar(St("errors.copiedToClipboard","Debug information copied to clipboard"))}},{id:"console",description:"Log to console",iconComponent:ks,handler(){const e=s.report.error??s.report;window.error=e,console.error(e),yt.showSnackbar(St("errors.addedToConsole","You can now use the **error** variable in the console"))}}],(e=>{o.value&&e.push({id:"github",description:"Report in GitHub",iconComponent:Ms,url:o.value})}))));return(e,t)=>(p(),x("div",Es,[(p(!0),x(w,null,H(n.value,((t,s)=>v(e.$slots,"default",C(t,{key:s}),(()=>[A(us,{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(b(t.iconComponent),{class:"h-4 w-4","aria-hidden":"true"}))])),_:2},1032,["url","title","aria-label","onClick"])])))),128))]))}});Hs.__file="src/components/modals/AGErrorReportModalButtons.vue";var Ls=u({__name:"AGErrorReportModalTitle",props:{report:st(),currentReport:Ze(),totalReports:Ze()},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(Yt,{text:r.value,inline:""},null,8,["text"]))}});Ls.__file="src/components/modals/AGErrorReportModalTitle.vue";const Ts={class:"flex items-center justify-between text-lg font-medium"},Is={class:"flex items-center"},Rs=["textContent"];var Ps=u({__name:"AGErrorReportModal",props:ys(),setup(e){const t=e,{activeReportIndex:s,details:r,nextReportText:o,previousReportText:n,report:a}=xs(t);return(e,t)=>(p(),m(Xt,null,{default:h((()=>[S("div",null,[S("h2",Ts,[S("div",Is,[A(Ls,{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(w,{key:0},[A(us,{color:"clear",disabled:0===f(s),title:f(n),"aria-label":f(n),onClick:t[0]||(t[0]=e=>s.value--)},{default:h((()=>[A(f(bs),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"]),A(us,{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((()=>[A(f(hs),{"aria-hidden":"true",class:"h-4 w-4"})])),_:1},8,["disabled","title","aria-label"])],64)):k("v-if",!0)]),A(Hs,{report:f(a)},null,8,["report"])]),f(a).description?(p(),m(Yt,{key:0,text:f(a).description,class:"mt-2"},null,8,["text"])):k("v-if",!0)]),S("pre",{class:"h-full overflow-auto bg-gray-200 p-4 text-xs text-red-900",textContent:E(f(r))},null,8,Rs)])),_:1}))}});Ps.__file="src/components/modals/AGErrorReportModal.vue";const Bs={message:ot()};function Ds(){return Bs}function qs(e){return{renderedMessage:t((()=>e.message??St("ui.loading","Loading...")))}}var Os=u({__name:"AGLoadingModal",props:Ds(),setup(e){const t=e,{renderedMessage:s}=qs(t);return(e,t)=>(p(),m(Xt,{cancellable:!1},{default:h((()=>[A(Yt,{text:f(s)},null,8,["text"])])),_:1}))}});Os.__file="src/components/modals/AGLoadingModal.vue";const Vs={title:ot(),message:rt(),label:ot(),defaultValue:ot(),placeholder:ot(),acceptText:ot(),acceptColor:ze(Ct,Ct.Primary),cancelText:ot(),cancelColor:ze(Ct,Ct.Clear)};function Fs(){return Vs}function zs(e){return{renderedAcceptText:t((()=>e.acceptText??St("ui.accept","Ok"))),renderedCancelText:t((()=>e.cancelText??St("ui.cancel","Cancel")))}}var Us=u({__name:"AGForm",props:{form:Ye()},emits:["submit"],setup(e,{emit:t}){let s;const r=e,o=t;return L((e=>{s?.(),s=r.form?.on("submit",(()=>o("submit"))),e((()=>s?.()))})),g("form",r.form),(t,s)=>(p(),x("form",{onSubmit:s[0]||(s[0]=T((t=>e.form?.submit()),["prevent"]))},[v(t.$slots,"default")],32))}});Us.__file="src/components/forms/AGForm.vue";const Ns={name:ot(),label:ot(),description:ot(),modelValue:Qe([String,Number,Boolean])};function Ws(){return Ns}function Ks(e){return qt(e,Ns)}var Qs=u({__name:"AGHeadlessInput",props:{as:ot("div"),...Ws()},emits:["update:modelValue"],setup(s,{expose:o,emit:n}){const a=n,l=s,i=e(),c=t((()=>u&&l.name?u.errors[l.name]??null:null)),u=r("form",null),d={$el:i,id:`input-${se()}`,name:t((()=>l.name)),label:t((()=>l.label)),description:t((()=>l.description)),value:t((()=>u&&l.name?u.getFieldValue(l.name):l.modelValue)),errors:I(c),required:t((()=>l.name&&u?u.getFieldRules(l.name).includes("required"):null)),update(e){u&&l.name?u.setFieldValue(l.name,e):a("update:modelValue",e)},__setElement(e){i.value=e}};return g("input",d),o(d),(e,t)=>s.as?(p(),m(b(s.as),{key:0},{default:h((()=>[v(e.$slots,"default")])),_:3})):v(e.$slots,"default",{key:1})}});Qs.__file="src/components/headless/forms/AGHeadlessInput.vue";var Zs=u({inheritAttrs:!1,__name:"AGHeadlessInputDescription",setup(e){const s=Ne("input","<AGHeadlessInputDescription> must be a child of a <AGHeadlessInput>"),r=t((()=>"string"==typeof s.description?s.description:"")),o=t((()=>!!s.description));return(e,t)=>v(e.$slots,"default",{id:`${f(s).id}-description`},(()=>[o.value?(p(),m(Yt,C({key:0},e.$attrs,{id:`${f(s).id}-description`,text:r.value}),null,16,["id","text"])):k("v-if",!0)]))}});Zs.__file="src/components/headless/forms/AGHeadlessInputDescription.vue";const Ys=["id"];var Js=u({__name:"AGHeadlessInputError",setup(e){const s=Ne("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),r=t((()=>s.errors?St(`errors.${s.errors[0]}`,`Error: ${s.errors[0]}`):null));return(e,t)=>r.value?(p(),x("p",{key:0,id:`${f(s).id}-error`},E(r.value),9,Ys)):k("v-if",!0)}});function Xs(e,t){const s=r("form",null),o=s?.on("focus",(s=>e.name===s&&t()));l((()=>o?.()))}Js.__file="src/components/headless/forms/AGHeadlessInputError.vue";const er=["id","name","type","required","aria-invalid","aria-describedby","checked"];var tr=u({__name:"AGHeadlessInputInput",props:{type:ot("text")},setup(s){const r=s,o=e(),n=Ne("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),a=t((()=>n.name??void 0)),l=t((()=>n.value)),i=t((()=>{if("checkbox"===r.type)return!!l.value}));function c(){o.value&&n.update(function(){if(!o.value)return null;switch(r.type){case"checkbox":return o.value.checked;case"date":return o.value.valueAsDate;default:return o.value.value}}())}return Xs(n,(()=>o.value?.focus())),L((()=>n.__setElement(o.value))),L((()=>{o.value&&("date"!==r.type?o.value.value=l.value:o.value.valueAsDate=l.value)})),(e,t)=>(p(),x("input",{id:f(n).id,ref_key:"$input",ref:o,name:a.value,type:s.type,required:f(n).required??void 0,"aria-invalid":f(n).errors?"true":"false","aria-describedby":f(n).errors?`${f(n).id}-error`:f(n).description?`${f(n).id}-description`:void 0,checked:i.value,onInput:c},null,40,er))}});tr.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const sr=["for"];var rr=u({__name:"AGHeadlessInputLabel",setup(e){const s=Ne("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>"),r=R(),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(E(f(s).label),1)]))],8,sr)):k("v-if",!0)}});rr.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";const or={class:"absolute bottom-0 left-0 translate-y-full"};var nr=u({inheritAttrs:!1,__name:"AGInput",props:Ws(),setup(e){const t=e,s=Oe(),[r,o]=Pt();return(e,n)=>(p(),m(Qs,C({ref_key:"$input",ref:s,class:["relative flex flex-col items-center",f(o)]},t),{default:h((()=>[A(rr,{class:"sr-only"}),A(tr,C(f(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":f(s)?.errors}]}),null,16,["class"]),A(Zs),S("div",or,[A(Js,{class:"mt-1 text-sm text-red-500"})])])),_:1},16,["class"]))}});nr.__file="src/components/forms/AGInput.vue";const ar={...{required:e=>e?void 0:"required"}};function lr(e,t){ar[e]=t}function ir(e,t){const s=ar[t]?.(e);return s?ce(s):[]}const cr={String:"string",Number:"number",Boolean:"boolean",Object:"object",Date:"date"},ur=new WeakMap;class dr extends z{constructor(s){super(),q(this,"errors",void 0),q(this,"_fields",void 0),q(this,"_data",void 0),q(this,"_submitted",void 0),q(this,"_errors",void 0),q(this,"_listeners",{}),this._fields=s,this._submitted=e(!1),this._data=this.getInitialData(s),this._errors=this.getInitialErrors(s),ur.set(this,t((()=>!Object.values(this._errors).some((e=>null!==e))))),this.errors=I(this._errors)}get valid(){return!!ur.get(this)?.value}get submitted(){return this._submitted.value}setFieldValue(e,t){const s=this._fields[e]??Z(`Trying to set undefined '${ne(e)}' field`);this._data[e]=s.type===cr.String&&(s.trim??1)?ne(t).trim():t,this._submitted.value&&this.validate()}getFieldValue(e){return this._data[e]}getFieldRules(e){return this._fields[e]?.rules?.split("|")??[]}data(){return{...this._data}}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(){this._submitted.value=!0;const e=this.validate();return e&&this._listeners.submit?.forEach((e=>e())),e}on(e,t){return this._listeners[e]??=[],this._listeners[e]?.push(t),()=>this.off(e,t)}off(e,t){J(this._listeners[e]??[],t)}async focus(e){await a(),this._listeners.focus?.forEach((t=>t(e)))}__get(e){return e in this._fields?this.getFieldValue(e):super.__get(e)}__set(e,t){e in this._fields?this.setFieldValue(e,t):super.__set(e,t)}getFieldErrors(e,t){const s=[],r=this._data[e],o=t.rules?.split("|")??[];for(const e of o)"required"!==e&&null==r||s.push(...ir(r,e));return 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 pr(e){return new dr(e)}function mr(e){return{default:e,type:cr.Boolean,rules:(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).rules}}function fr(e){return{default:e,type:cr.Date,rules:(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).rules}}function hr(e){return{default:e,type:cr.Boolean,rules:"required"}}function vr(e){return{default:e,type:cr.Date,rules:"required"}}function gr(e){return{default:e,type:cr.Number,rules:"required"}}function br(e){return{default:e,type:cr.String,rules:"required"}}function _r(e){return{default:e,type:cr.Number,rules:(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).rules}}function yr(e){return{default:e,type:cr.String,rules:(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).rules}}const xr={class:"mt-2 flex flex-row-reverse gap-2"};var wr=u({__name:"AGPromptModal",props:Fs(),setup(e){const t=e,s=pr({draft:br(t.defaultValue??"")}),{renderedAcceptText:r,renderedCancelText:o}=zs(t);return(e,t)=>(p(),m(Xt,{cancellable:!1,title:e.title},{default:h((({close:t})=>[A(Yt,{text:e.message},null,8,["text"]),A(Us,{form:f(s),onSubmit:e=>t(f(s).draft)},{default:h((()=>[A(nr,{name:"draft",placeholder:e.placeholder,label:e.label},null,8,["placeholder","label"]),S("div",xr,[A(us,{color:e.acceptColor,submit:""},{default:h((()=>[M(E(f(r)),1)])),_:1},8,["color"]),A(us,{color:e.cancelColor,onClick:e=>t()},{default:h((()=>[M(E(f(o)),1)])),_:2},1032,["color","onClick"])])])),_:2},1032,["form","onSubmit"])])),_:1},8,["title"]))}});wr.__file="src/components/modals/AGPromptModal.vue";const Ar={class:"pointer-events-auto"};var kr=u({__name:"AGHeadlessSnackbar",setup:e=>(e,t)=>(p(),x("div",Ar,[v(e.$slots,"default")]))});kr.__file="src/components/headless/snackbars/AGHeadlessSnackbar.vue";const Sr=ae(Ct,["Primary","Clear"]),Gr={id:rt(),message:rt(),actions:De((()=>[])),color:ze(Sr,Ct.Secondary)};function Cr(){return Gr}function $r(e){return{activate:function(t){t.handler?.(),t.dismiss&&yt.hideSnackbar(e.id)}}}var jr=u({__name:"AGSnackbar",props:Cr(),setup(e){const s=e,{activate:r}=$r(s),o=t((()=>s.color===Ct.Danger?"bg-red-200 text-red-900":"bg-gray-900 text-white"));return(e,t)=>(p(),m(kr,{class:j(["flex flex-row items-center justify-center gap-3 p-4",o.value])},{default:h((()=>[A(Yt,{text:e.message,inline:""},null,8,["text"]),(p(!0),x(w,null,H(e.actions,((t,s)=>(p(),m(us,{key:s,color:e.color,onClick:e=>f(r)(t)},{default:h((()=>[M(E(t.text),1)])),_:2},1032,["color","onClick"])))),128))])),_:1},8,["class"]))}});jr.__file="src/components/snackbars/AGSnackbar.vue";const Mr={class:"grid flex-grow place-items-center"},Er={class:"flex flex-col items-center space-y-6 p-8"},Hr={class:"mt-2 text-center text-4xl font-medium text-red-600"},Lr={class:"mt-4 flex flex-col space-y-4"};var Tr=u({__name:"AGStartupCrash",setup:e=>(e,t)=>(p(),x("div",Mr,[S("div",Er,[S("h1",Hr,E(e.$td("startupCrash.title","Something went wrong!")),1),A(Yt,{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",Lr,[A(us,{color:"danger",onClick:t[0]||(t[0]=t=>e.$app.reload())},{default:h((()=>[M(E(e.$td("startupCrash.reload","Try again")),1)])),_:1}),A(us,{color:"danger",onClick:t[1]||(t[1]=t=>e.$errors.inspect(e.$errors.startupErrors))},{default:h((()=>[M(E(e.$td("startupCrash.inspect","View error details")),1)])),_:1})])])]))});Tr.__file="src/components/lib/AGStartupCrash.vue";const Ir={$ui:yt};var Rr={async install(e,t){const s={[bt.AlertModal]:ss,[bt.ConfirmModal]:ps,[bt.ErrorReportModal]:Ps,[bt.LoadingModal]:Os,[bt.PromptModal]:wr,[bt.Snackbar]:jr,[bt.StartupCrash]:Tr};Object.entries({...s,...t.components}).forEach((e=>{let[t,s]=e;return yt.registerComponent(t,s)})),await pt(e,Ir)}};async function Pr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=[It,it,Ht,Tt,mt,Rr,...t.plugins??[]];await Be(s,e,t),await(t.install?.(e)),await Le.emit("application-ready")}async function Br(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=P(e);await Pr(s,t),s.mount("#app"),s._container?.classList.remove("loading"),await Le.emit("application-mounted")}const Dr={key:0};var qr=u({__name:"AGAppModals",setup(e){const s=t((()=>yt.modals[0]??null));return(e,t)=>s.value?(p(),x("aside",Dr,[A(Nt,{"child-index":1,modal:s.value},null,8,["modal"])])):k("v-if",!0)}});qr.__file="src/components/AGAppModals.vue";const Or={"aria-live":"assertive",class:"pointer-events-none fixed inset-0 z-50 flex items-end px-4 py-6 sm:p-6"},Vr={class:"flex w-full flex-col items-end space-y-4"};const Fr={render:function(e,t){return p(),x("div",Or,[S("div",Vr,[(p(!0),x(w,null,H(e.$ui.snackbars,(e=>(p(),m(b(e.component),C({id:e.id,key:e.id},e.properties),null,16,["id"])))),128))])])},__file:"src/components/AGAppSnackbars.vue"};var zr=Fr,Ur=u({__name:"AGAppOverlays",setup(t){const s=e(null),r=e(!0);return Rt("show-overlays-backdrop",(async()=>{s.value&&r.value&&(r.value=!1,s.value.classList.remove("opacity-0"))})),Rt("hide-overlays-backdrop",(async()=>{s.value&&!r.value&&(r.value=!0,s.value.classList.add("opacity-0"))})),(e,t)=>(p(),x(w,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),A(qr),A(zr)],64))}});Ur.__file="src/components/AGAppOverlays.vue";const Nr={class:"flex min-h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var Wr=u({__name:"AGAppLayout",setup:e=>(e,t)=>(p(),x("div",Nr,[e.$errors.hasStartupErrors?v(e.$slots,"startup-crash",{key:0},(()=>[(p(),m(b(e.$ui.requireComponent(f(bt).StartupCrash))))])):v(e.$slots,"default",{key:1}),A(Ur)]))});Wr.__file="src/components/AGAppLayout.vue";const Kr={class:"ml-2"};var Qr=u({inheritAttrs:!1,__name:"AGCheckbox",props:{name:ot()},emits:["update:modelValue"],setup(e){const t=Oe();return(s,r)=>(p(),m(Qs,{ref_key:"$input",ref:t,name:e.name,class:"flex","onUpdate:modelValue":r[0]||(r[0]=e=>s.$emit("update:modelValue",e))},{default:h((()=>[A(tr,C(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",Kr,[s.$slots.default?(p(),m(rr,{key:0},{default:h((()=>[v(s.$slots,"default")])),_:3})):k("v-if",!0),A(Js,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});Qr.__file="src/components/forms/AGCheckbox.vue";const Zr={viewBox:"0 0 20 20",width:"1.2em",height:"1.2em"},Yr=[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 Jr={name:"zondicons-cheveron-down",render:function(e,t){return p(),x("svg",Zr,[...Yr])}};const Xr={name:ot(),label:ot(),options:Je(),noSelectionText:ot(),optionsText:Qe()},eo=["update:modelValue"];function to(){return Xr}function so(){return[...eo]}function ro(e){return qt(e,Xr)}var oo=u({__name:"AGHeadlessSelect",props:{modelValue:Qe(),...to()},emits:so(),setup(e,{expose:s,emit:o}){const n=o,a=e,l=t((()=>"function"==typeof a.optionsText?a.optionsText:"string"==typeof a.optionsText?e=>ne(e[a.optionsText]):e=>ne(e))),i=r("form",null),c=t((()=>a.noSelectionText??St("select.noSelection","-"))),u=t((()=>i&&a.name?i.getFieldValue(a.name):a.modelValue)),d=t((()=>i&&a.name?i.errors[a.name]??null:null));function b(e){i&&a.name?i.setFieldValue(a.name,e):n("update:modelValue",e)}const _={id:`select-${se()}`,noSelectionText:c,selectedOption:u,errors:d,options:t((()=>a.options)),label:t((()=>a.label)),buttonText:t((()=>null===u.value?c.value:l.value(u.value))),renderText:l,update:b};return g("select",_),s(_),(e,t)=>(p(),m(f(ve),{"model-value":u.value,"onUpdate:modelValue":t[0]||(t[0]=e=>b(e))},{default:h((({value:t,open:s,disabled:r})=>[v(e.$slots,"default",{value:t,open:s,disabled:r})])),_:3},8,["model-value"]))}});oo.__file="src/components/headless/forms/AGHeadlessSelect.vue";var no=u({__name:"AGHeadlessSelectButton",props:{textClass:ot()},setup(e){const t=Ne("select","<AGHeadlessSelectButton> must be a child of a <AGHeadlessSelect>");return(s,r)=>(p(),m(f(ge),null,{default:h((({value:r,open:o,disabled:n})=>[v(s.$slots,"default",{value:r,open:o,disabled:n},(()=>[S("span",{class:j(e.textClass)},E(f(t)?.buttonText),3)])),v(s.$slots,"icon")])),_:3}))}});no.__file="src/components/headless/forms/AGHeadlessSelectButton.vue";const ao=["id"];var lo=u({__name:"AGHeadlessSelectError",setup(e){const s=Ne("select","<AGHeadlessSelectError> must be a child of a <AGHeadlessSelect>"),r=t((()=>s.errors?St(`errors.${s.errors[0]}`,`Error: ${s.errors[0]}`):null));return(e,t)=>r.value?(p(),x("p",{key:0,id:`${f(s).id}-error`},E(r.value),9,ao)):k("v-if",!0)}});lo.__file="src/components/headless/forms/AGHeadlessSelectError.vue";var io=u({__name:"AGHeadlessSelectLabel",setup(e){const s=Ne("select","<AGHeadlessSelectLabel> must be a child of a <AGHeadlessSelect>"),r=R(),o=t((()=>!(!s.label&&!r.default)));return(e,t)=>o.value?(p(),m(f(be),{key:0},{default:h((({open:t,disabled:r})=>[v(e.$slots,"default",{open:t,disabled:r},(()=>[M(E(f(s).label),1)]))])),_:3})):k("v-if",!0)}});io.__file="src/components/headless/forms/AGHeadlessSelectLabel.vue";var co=u({__name:"AGHeadlessSelectOption",props:{value:et(),selectedClass:ot(),unselectedClass:ot(),activeClass:ot(),inactiveClass:ot()},setup(e){const t=Ne("select","<AGHeadlessSelectOption> must be a child of a <AGHeadlessSelect>");return(s,r)=>(p(),m(f(_e),{value:e.value,as:"template"},{default:h((({active:r,selected:o,disabled:n})=>[v(s.$slots,"default",{active:r,selected:o,disabled:n},(()=>[S("li",{class:j({[e.activeClass??"active"]:r,[e.inactiveClass??"inactive"]:!r,[e.selectedClass??"selected"]:o,[e.unselectedClass??"unselected"]:!o})},E(f(t).renderText(e.value)),3)]))])),_:3},8,["value"]))}});co.__file="src/components/headless/forms/AGHeadlessSelectOption.vue";const uo={class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2"};var po=u({__name:"AGSelect",props:to(),emits:so(),setup(e){const t=e,s=Oe();return(e,r)=>(p(),m(oo,C(t,{ref_key:"$select",ref:s,as:"div","onUpdate:modelValue":r[0]||(r[0]=t=>e.$emit("update:modelValue",t))}),{default:h((()=>[A(io,{class:"block text-sm font-medium leading-6 text-gray-900"}),S("div",{class:j(["relative",{"mt-2":f(s)?.label}])},[A(no,{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":f(s)?.errors}]),"text-class":"block truncate"},{icon:h((()=>[S("span",uo,[A(f(Jr),{class:"h-5 w-5 text-gray-400"})])])),_:1},8,["class"]),A(f(ye),{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(w,null,H(f(s)?.options??[],((e,t)=>(p(),m(co,{key:t,value:e,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(lo,{class:"mt-2 text-sm text-red-600"})])),_:1},16))}});po.__file="src/components/forms/AGSelect.vue";const mo=["id","name","required","value","aria-invalid","aria-describedby"];var fo=u({__name:"AGHeadlessInputTextArea",setup(s){const r=e(),o=Ne("input","<AGHeadlessInputTextArea> must be a child of a <AGHeadlessInput>"),n=t((()=>o.name??void 0)),a=t((()=>o.value));function l(){r.value&&o.update(r.value.value)}return L((()=>o.__setElement(r.value))),Xs(o,(()=>r.value?.focus())),(e,t)=>(p(),x("textarea",{id:f(o).id,ref_key:"$textArea",ref:r,name:n.value,required:f(o).required??void 0,value:a.value,"aria-invalid":f(o).errors?"true":"false","aria-describedby":f(o).errors?`${f(o).id}-error`:f(o).description?`${f(o).id}-description`:void 0,onInput:l},null,40,mo))}});fo.__file="src/components/headless/forms/AGHeadlessInputTextArea.vue";var ho=u({__name:"AGErrorMessage",props:{error:st()},setup(e){const s=e,r=t((()=>jt(s.error)));return(e,t)=>(p(),m(Yt,{text:r.value,inline:""},null,8,["text"]))}});ho.__file="src/components/lib/AGErrorMessage.vue";var vo=u({__name:"AGLink",setup:e=>(e,t)=>(p(),m(cs,{class:"font-medium hover:underline"},{default:h((()=>[v(e.$slots,"default")])),_:3}))});vo.__file="src/components/lib/AGLink.vue";var go=u({__name:"AGMeasured",props:{as:ot("span")},setup(t){const s=e(!1);return(e,r)=>{const o=B("measure");return D((p(),m(b(t.as),{class:j({"!invisible !absolute !w-auto":!s.value})},{default:h((()=>[v(e.$slots,"default")])),_:3},8,["class"])),[[o,()=>s.value=!0]])}}});go.__file="src/components/lib/AGMeasured.vue";var bo=u({__name:"AGModalTitle",setup:e=>(e,t)=>(p(),m(Qt,{class:"mb-2 font-semibold"},{default:h((()=>[v(e.$slots,"default")])),_:3}))});bo.__file="src/components/modals/AGModalTitle.vue";class _o{}async function yo(e){await e.run()}export{ss as AGAlertModal,Wr as AGAppLayout,Ur as AGAppOverlays,us as AGButton,Qr as AGCheckbox,ps as AGConfirmModal,ho as AGErrorMessage,Hs as AGErrorReportModalButtons,Ls as AGErrorReportModalTitle,Us as AGForm,cs as AGHeadlessButton,Qs as AGHeadlessInput,Zs as AGHeadlessInputDescription,Js as AGHeadlessInputError,tr as AGHeadlessInputInput,rr as AGHeadlessInputLabel,fo as AGHeadlessInputTextArea,Ut as AGHeadlessModal,Kt as AGHeadlessModalPanel,Qt as AGHeadlessModalTitle,oo as AGHeadlessSelect,no as AGHeadlessSelectButton,lo as AGHeadlessSelectError,io as AGHeadlessSelectLabel,co as AGHeadlessSelectOption,kr as AGHeadlessSnackbar,nr as AGInput,vo as AGLink,Os as AGLoadingModal,Yt as AGMarkdown,go as AGMeasured,Xt as AGModal,Nt as AGModalContext,bo as AGModalTitle,wr as AGPromptModal,po as AGSelect,jr as AGSnackbar,Tr as AGStartupCrash,Re as App,Ie as AppService,ut as Cache,ct as CacheService,Ct as Colors,$t as Errors,Ee as EventListenerPriorities,Le as Events,He as EventsService,dr as Form,cr as FormFieldTypes,_o as Job,At as Lang,ht as Layouts,ft as MOBILE_BREAKPOINT,Me as Service,Sr as SnackbarColors,yt as UI,bt as UIComponents,_t as UIService,es as alertModalProps,De as arrayProp,mr as booleanInput,qe as booleanProp,pt as bootServices,Br as bootstrap,Pr as bootstrapApplication,Oe as componentRef,Ve as computedAsync,rs as confirmModalProps,fr as dateInput,Fe as defineDirective,lr as defineFormValidationRule,Pe as definePlugin,je as defineServiceState,$e as defineServiceStore,yo as dispatch,is as elementRef,ze as enumProp,_s as errorReportModalProps,Ks as extractInputProps,Ft as extractModalProps,ro as extractSelectProps,vt as getCurrentLayout,as as getElement,jt as getErrorMessage,Ce as getPiniaStore,ls as hasElement,We as injectOrFail,Ue as injectReactive,Ne as injectReactiveOrFail,Ns as inputProps,Be as installPlugins,Ke as listenerProp,Bs as loadingModalProps,Qe as mixedProp,Ot as modalProps,_r as numberInput,Ze as numberProp,Ye as objectProp,Bt as onCleanMounted,Xs as onFormFocus,Vs as promptModalProps,Dt as removeInteractiveClasses,Je as requiredArrayProp,hr as requiredBooleanInput,vr as requiredDateInput,Xe as requiredEnumProp,et as requiredMixedProp,gr as requiredNumberInput,tt as requiredNumberProp,st as requiredObjectProp,br as requiredStringInput,rt as requiredStringProp,Ge as resetPiniaStore,eo as selectEmits,Xr as selectProps,Gr as snackbarProps,yr as stringInput,ot as stringProp,kt as translate,St as translateWithDefault,ts as useAlertModalProps,ns as useConfirmModal,os as useConfirmModalProps,xs as useErrorReportModal,ys as useErrorReportModalProps,Rt as useEvent,pr as useForm,Pt as useInputAttrs,Ws as useInputProps,qs as useLoadingModal,Ds as useLoadingModalProps,zt as useModalExpose,Vt as useModalProps,zs as usePromptModal,Fs as usePromptModalProps,so as useSelectEmits,to as useSelectProps,$r as useSnackbar,Cr as useSnackbarProps,ir as validate,ar as validators};
2
2
  //# sourceMappingURL=aerogel-core.esm.js.map