@aerogel/core 0.0.0-next.9487bb13082b9d479112445804d906125ded5cbc → 0.0.0-next.980a397d575dcb5ff8c5a0bff769d09f938ea03c

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