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