@aerogel/core 0.0.0-next.a56c0f4966eb71571173f8502f3f36d357ceebc7 → 0.0.0-next.a68f133e2c9a1ae9ba84b4e2e42df909289e5fba

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