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