@aerogel/core 0.0.0-next.88c59e62f64db70aedfbc4c31b5bbc287be44483 → 0.0.0-next.8e6b2bcc764fa682decbb41aa6848c77a744dec3

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