@aerogel/core 0.0.0-next.63f6c97c7c6f262bf6bfb3aa64528e4b599c46ea → 0.0.0-next.824cf5311c4335d119158f507dad094ed4f4f0b6

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