@aerogel/core 0.0.0-next.59bf5f7cc06e728d0cf6c00de28f1da48d7d6b8e → 0.0.0-next.926bde19326fe7b6b24b277666936862b64d8295

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/aerogel-core.cjs.js +1 -1
  2. package/dist/aerogel-core.d.ts +39 -201
  3. package/dist/aerogel-core.esm.js +1 -1
  4. package/package.json +1 -2
  5. package/src/bootstrap/index.ts +1 -4
  6. package/src/components/basic/AGMarkdown.vue +3 -3
  7. package/src/components/forms/AGButton.vue +8 -21
  8. package/src/components/forms/AGInput.vue +4 -8
  9. package/src/components/forms/index.ts +1 -2
  10. package/src/components/headless/forms/AGHeadlessInput.ts +2 -2
  11. package/src/components/headless/forms/AGHeadlessInput.vue +3 -3
  12. package/src/components/headless/forms/AGHeadlessInputError.vue +1 -1
  13. package/src/components/headless/forms/AGHeadlessInputInput.vue +3 -15
  14. package/src/components/headless/modals/AGHeadlessModalPanel.vue +1 -5
  15. package/src/components/modals/AGModal.vue +2 -20
  16. package/src/components/modals/index.ts +1 -2
  17. package/src/forms/Form.ts +9 -12
  18. package/src/forms/utils.ts +0 -17
  19. package/src/lang/Lang.ts +3 -11
  20. package/src/lang/index.ts +4 -2
  21. package/src/main.ts +0 -1
  22. package/src/services/App.state.ts +0 -3
  23. package/src/services/App.ts +1 -11
  24. package/src/services/Service.ts +44 -126
  25. package/src/services/index.ts +4 -18
  26. package/src/ui/UI.state.ts +0 -1
  27. package/src/ui/UI.ts +0 -15
  28. package/src/ui/index.ts +0 -2
  29. package/src/utils/index.ts +0 -1
  30. package/src/components/forms/AGCheckbox.vue +0 -35
  31. package/src/components/modals/AGLoadingModal.vue +0 -19
  32. package/src/errors/Errors.state.ts +0 -31
  33. package/src/errors/Errors.ts +0 -132
  34. package/src/errors/index.ts +0 -21
  35. package/src/lang/utils.ts +0 -4
  36. package/src/services/store.ts +0 -27
  37. package/src/utils/composition/forms.ts +0 -11
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("core-js/modules/esnext.async-iterator.map.js"),require("core-js/modules/esnext.iterator.map.js");var e=require("vue");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");var t=require("@noeldemartin/utils"),r=require("@babel/runtime/helpers/defineProperty");require("core-js/modules/esnext.set.add-all.js"),require("core-js/modules/esnext.set.delete-all.js"),require("core-js/modules/esnext.set.difference.js"),require("core-js/modules/esnext.set.every.js"),require("core-js/modules/esnext.set.filter.js"),require("core-js/modules/esnext.set.find.js"),require("core-js/modules/esnext.set.intersection.js"),require("core-js/modules/esnext.set.is-disjoint-from.js"),require("core-js/modules/esnext.set.is-subset-of.js"),require("core-js/modules/esnext.set.is-superset-of.js"),require("core-js/modules/esnext.set.join.js"),require("core-js/modules/esnext.set.map.js"),require("core-js/modules/esnext.set.reduce.js"),require("core-js/modules/esnext.set.some.js"),require("core-js/modules/esnext.set.symmetric-difference.js"),require("core-js/modules/esnext.set.union.js");var o=require("pinia");require("core-js/modules/esnext.string.at.js"),require("core-js/modules/esnext.async-iterator.filter.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.async-iterator.reduce.js"),require("core-js/modules/esnext.iterator.reduce.js"),require("core-js/modules/esnext.async-iterator.some.js"),require("core-js/modules/esnext.iterator.some.js");var s=require("@headlessui/vue"),n=require("dompurify"),a=require("marked");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=l(r),u=l(n);function c(e){return e}function d(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function p(){return e.ref()}function m(e){return e}function f(t){const r=e.inject(t);return r?e.reactive(r):void 0}function h(e,r){return f(e)??t.fail(r??`Could not resolve '${e}' injection key`)}function v(e){return{type:e,default:null}}function g(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function x(){return{type:Number,required:!0}}function _(){return{type:Object,required:!0}}function b(){return{type:String,required:!0}}function y(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}const k={"initial-focus":{mounted(e,t){let{value:r}=t;!1!==r&&e.focus()}}};var j={install(e){Object.entries(k).forEach((t=>{let[r,o]=t;return e.directive(r,o)}))}};class ServiceBootError extends t.JSError{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}let A=null;function S(){return A||(A=o.createPinia(),o.setActivePinia(A)),A}function w(e){var t;return t=class extends C{usesStore(){return!0}getName(){return e.name??null}getInitialState(){return e.initialState}getComputedStateDefinition(){return e.computed??{}}serializePersistedState(t){return e.serialize?.(t)??t}},i.default(t,"persist",e.persist??[]),t}class C extends t.MagicObject{constructor(){super(),i.default(this,"_name",void 0),i.default(this,"_booted",void 0),i.default(this,"_computedStateKeys",void 0),i.default(this,"_store",void 0);const e=this.getComputedStateDefinition();var r,s;this._name=this.getName()??new.target.name,this._booted=new t.PromisedValue,this._computedStateKeys=new Set(Object.keys(e)),this._store=this.usesStore()&&(r=this._name,s={state:()=>this.getInitialState(),getters:e},S(),o.defineStore(r,s)())}get booted(){return this._booted}launch(){const handleError=e=>this._booted.reject(new ServiceBootError(this._name,e));try{this.boot().then((()=>this._booted.resolve())).catch(handleError)}catch(e){handleError(e)}return this._booted}hasState(e){return!!this._store&&(e in this._store.$state||this._computedStateKeys.has(e))}getState(e){const t=this._store;return e?t?t[e]:void 0:t||{}}setState(e,t){if(!this._store)return;const r="string"==typeof e?{[e]:t}:e;Object.assign(this._store.$state,r),this.onStateUpdated(r)}__get(e){return this.hasState(e)?this.getState(e):super.__get(e)}__set(e,t){this.setState({[e]:t})}onStateUpdated(e){const r=this.constructor.persist,o=t.objectOnly(e,r);if(t.isEmpty(o))return;const s=t.Storage.require(this._name);t.Storage.set(this._name,{...s,...this.serializePersistedState(t.objectDeepClone(o))})}usesStore(){return!1}getName(){return null}getInitialState(){return{}}getComputedStateDefinition(){return{}}serializePersistedState(e){return e}async boot(){this.restorePersistedState()}restorePersistedState(){const e=this.constructor.persist;if(this.usesStore()&&!t.isEmpty(e))if(t.Storage.has(this._name)){const e=t.Storage.require(this._name);this.setState(e)}else t.Storage.set(this._name,t.objectOnly(this.getState(),e))}}i.default(C,"persist",[]);class E extends C{constructor(){super(...arguments),i.default(this,"listeners",{})}async emit(e,t){const r=[...this.listeners[e]??[]];await Promise.all(r.map((e=>e(t)))??[])}on(e,r){return(this.listeners[e]??=t.arr([])).push(r),()=>this.off(e,r)}once(e,r){let o=null;return t.tap((()=>o&&this.off(e,o)),(s=>{(this.listeners[e]??=t.arr([])).push(o=function(){return s(),r(...arguments)})}))}off(e,t){const r=this.listeners[e];r&&(r.remove(t),r.isEmpty()&&delete this.listeners[e])}}var G=t.facade(new E),B=w({name:"app",initialState:{environment:__AG_ENV,isMounted:!1},computed:{isDevelopment:e=>"development"===e.environment,isTesting:e=>"testing"===e.environment}});class q extends B{async boot(){await super.boot(),G.once("application-mounted",(()=>this.setState({isMounted:!0})))}}var M=t.facade(new q);const I={$app:M,$events:G};async function P(e,t){await Promise.all(Object.entries(t).map((async e=>{let[t,r]=e;await r.launch().catch((e=>console.error(e)))}))),Object.assign(e.config.globalProperties,t)}var $={async install(e,t){const r={...I,...t.services};e.use(A??S()),await P(e,r)}},N=w({name:"ui",initialState:{modals:[]}});const V={AlertModal:"alert-modal",ConfirmModal:"confirm-modal",LoadingModal:"loading-modal"};var H=t.facade(new class extends N{constructor(){super(...arguments),i.default(this,"modalCallbacks",{}),i.default(this,"components",{})}alert(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e};this.openModal(this.requireComponent(V.AlertModal),r)}async confirm(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e},o=await this.openModal(this.requireComponent(V.ConfirmModal),r);return await o.beforeClose??!1}async loading(e,t){t="string"==typeof e?t:e;const r="string"==typeof e?e:void 0,o=await this.openModal(this.requireComponent(V.LoadingModal),{message:r}),s=await t;return await this.closeModal(o.id),s}registerComponent(e,t){this.components[e]=t}async openModal(r,o){const s=t.uuid(),n={},a={id:s,properties:o??{},component:e.markRaw(r),beforeClose:new Promise((e=>n.willClose=e)),afterClose:new Promise((e=>n.closed=e))},l=this.modals.at(-1),i=this.modals.concat(a);return this.modalCallbacks[a.id]=n,this.setState({modals:i}),await e.nextTick(),await(l&&G.emit("hide-modal",{id:l.id})),await Promise.all([l||G.emit("show-overlays-backdrop"),G.emit("show-modal",{id:a.id})]),a}async closeModal(e,t){await G.emit("close-modal",{id:e,result:t})}async boot(){await super.boot(),this.watchModalEvents()}requireComponent(e){return this.components[e]??t.fail(`UI Component '${e}' is not defined!`)}watchModalEvents(){G.on("modal-will-close",(e=>{let{modal:t,result:r}=e;this.modalCallbacks[t.id]?.willClose?.(r),1===this.modals.length&&G.emit("hide-overlays-backdrop")})),G.on("modal-closed",(async e=>{let{modal:t,result:r}=e;this.setState({modals:this.modals.filter((e=>e.id!==t.id))}),this.modalCallbacks[t.id]?.closed?.(r),delete this.modalCallbacks[t.id];const o=this.modals.at(-1);await(o&&G.emit("show-modal",{id:o.id}))}))}});var O=t.facade(new class extends C{constructor(){super(),i.default(this,"provider",void 0),this.provider={translate:e=>(M.isDevelopment&&console.warn("Lang provider is missing"),e)}}setProvider(e){this.provider=e}translate(e,t){return this.provider.translate(e,t)??e}translateWithDefault(e,r,o){o??=r;const s="string"==typeof r?{}:r??{},n=this.provider.translate(e,s)??e;return n===e?Object.entries(s).reduce(((e,r)=>{let[o,s]=r;return e.replace(new RegExp(`\\{\\s*${o}\\s*\\}`,"g"),t.toString(s))}),o):n}});const D=O.translate.bind(O),R=O.translateWithDefault.bind(O);var L=w({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}}});var F=t.facade(new class extends L{constructor(){super(...arguments),i.default(this,"forceReporting",!1),i.default(this,"enabled",!0)}enable(){this.enabled=!0}disable(){this.enabled=!1}async inspect(e){Array.isArray(e)||await this.createErrorReport(e)}async report(e,t){if((M.isDevelopment||M.isTesting)&&this.logError(e),!this.enabled)throw e;if(!M.isMounted){const t=await this.createStartupErrorReport(e);return void(t&&this.setState({startupErrors:this.startupErrors.concat(t)}))}const r={report:await this.createErrorReport(e),seen:!1,date:new Date};H.alert(t??"Something went wrong, but it's not your fault! (look at the console for details)"),this.setState({logs:[r].concat(this.logs)})}see(e){this.setState({logs:this.logs.map((t=>t.report!==e?t:{...t,seen:!0}))})}seeAll(){this.setState({logs:this.logs.map((e=>({...e,seen:!0})))})}logError(e){console.error(e),t.isObject(e)&&e.cause&&this.logError(e.cause)}async createErrorReport(e){return"string"==typeof e?{title:e}:e instanceof Error||e instanceof t.JSError?this.createErrorReportFromError(e):{title:D("errors.unknown"),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 T={$errors:F};var z={async install(e){await P(e,T)}};const K={$lang:O};var U={async install(e){e.config.globalProperties.$t??=D,e.config.globalProperties.$td=R,await P(e,K)}};function W(t,r){const o=G.on(t,r);e.onUnmounted((()=>o()))}function J(){const r=e.useAttrs(),o=e.computed((()=>r.class));return[e.computed((()=>t.objectWithout(r,"class"))),o]}var Q=e.defineComponent({__name:"AGHeadlessModal",props:{cancellable:d(!0)},setup(t,{expose:r}){const o=t,n=e.ref(null),a=e.ref(!0),l=e.ref(!1),{modal:i}=h("modal","could not obtain modal reference from <AGHeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead");async function u(){n.value?.$el&&(a.value=!0)}async function c(e){l.value||(G.emit("modal-will-close",{modal:i,result:e}),await u(),l.value=!0,G.emit("modal-closed",{modal:i,result:e}))}return W("close-modal",(async({id:e,result:t})=>{e===i.id&&await c(t)})),W("hide-modal",(async({id:e})=>{e===i.id&&await u()})),W("show-modal",(async({id:e})=>{e===i.id&&await async function(){n.value?.$el&&(a.value=!1)}()})),r({close:c,cancellable:e.toRef(o,"cancellable")}),(r,o)=>(e.openBlock(),e.createBlock(e.unref(s.Dialog),{ref_key:"$root",ref:n,open:!0,onClose:o[0]||(o[0]=e=>t.cancellable&&c())},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default",{close:c})])),_:3},512))}});Q.__file="src/components/headless/modals/AGHeadlessModal.vue";var X=e.defineComponent({__name:"AGModalContext",props:{modal:_(),childIndex:x()},setup(t){const r=t;return e.provide("modal",{modal:e.toRef(r,"modal"),childIndex:e.toRef(r,"childIndex")}),(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.modal.component),e.normalizeProps(e.guardReactiveProps(t.modal.properties)),null,16))}});X.__file="src/components/modals/AGModalContext.vue";const Y=e.createElementVNode("div",{class:"pointer-events-none fixed inset-0 z-50 bg-black/30"},null,-1);var Z=e.defineComponent({__name:"AGHeadlessModalPanel",setup(t){const r=h("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),o=e.computed((()=>H.modals[r.childIndex]??null));return(t,n)=>(e.openBlock(),e.createBlock(e.unref(s.DialogPanel),null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default"),o.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Y,e.createVNode(X,{"child-index":e.unref(r).childIndex+1,modal:o.value},null,8,["child-index","modal"])],64)):e.createCommentVNode("v-if",!0)])),_:3}))}});Z.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const ee={class:"fixed inset-0 flex items-center justify-center"},te={class:"flex max-h-full flex-col overflow-auto p-4"};var re=e.defineComponent({__name:"AGModal",props:{cancellable:d(!0)},setup(t,{expose:r}){const o=e.ref();return r({close:async()=>o.value?.close(),cancellable:e.computed((()=>!!o.value?.cancellable))}),(r,s)=>(e.openBlock(),e.createBlock(Q,{ref_key:"$headlessModal",ref:o,cancellable:t.cancellable,class:"relative z-50"},{default:e.withCtx((({close:t})=>[e.createElementVNode("div",ee,[e.createVNode(Z,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white"},{default:e.withCtx((()=>[e.createElementVNode("div",te,[e.renderSlot(r.$slots,"default",{close:t})])])),_:2},1024)])])),_:3},8,["cancellable"]))}});function oe(e){return t=a.marked(e,{mangle:!1,headerIds:!1}),u.default.sanitize(t,{ADD_ATTR:["target"]});var t}re.__file="src/components/modals/AGModal.vue";var se=e.defineComponent({__name:"AGMarkdown",props:{as:y("div"),langKey:y(),text:y(),inline:d(),raw:d()},setup(t){const r=t,o=e.computed((()=>r.text??(r.langKey&&D(r.langKey)))),s=e.computed((()=>{if(!o.value)return null;let e=oe(o.value);return r.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),n=()=>e.h(r.as,{class:r.raw?"":"prose",innerHTML:s.value});return(t,r)=>(e.openBlock(),e.createBlock(n))}});se.__file="src/components/basic/AGMarkdown.vue";var ne=e.defineComponent({__name:"AGAlertModal",props:{title:y(),message:b()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(re,null,{default:e.withCtx((()=>[t.title?(e.openBlock(),e.createBlock(se,{key:0,text:t.title,as:"h2",class:"font-semibold",raw:"",inline:""},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(se,{text:t.message},null,8,["text"])])),_:1}))});ne.__file="src/components/modals/AGAlertModal.vue";var ae=e.defineComponent({__name:"AGHeadlessButton",props:{url:y(),route:y(),routeParams:g((()=>({}))),routeQuery:g((()=>({}))),submit:d()},setup(r){const{url:o,route:s,routeParams:n,routeQuery:a,submit:l}=r,i=e.computed((()=>s?{tag:"router-link",props:{to:t.objectWithoutEmpty({name:s,params:n,query:a})}}:o?{tag:"a",props:{target:"_blank",href:o}}:{tag:"button",props:{type:l?"submit":"button"}}));return(t,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value.tag),e.normalizeProps(e.guardReactiveProps(i.value.props)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},16))}});ae.__file="src/components/headless/forms/AGHeadlessButton.vue";var le=e.defineComponent({__name:"AGButton",props:{clear:d(),secondary:d()},setup(t){const r=t,o=e.computed((()=>r.secondary?"text-white bg-gray-600 hover:bg-gray-500 focus-visible:outline-offset-2 focus-visible:outline-gray-600":r.clear?"hover:bg-gray-500/20 focus-visible:outline-gray-500/60":["text-white bg-indigo-600","hover:bg-indigo-500","focus-visible:outline-offset-2 focus-visible:outline-indigo-600"].join(" ")));return(t,r)=>(e.openBlock(),e.createBlock(ae,{class:e.normalizeClass(["px-2.5 py-1.5 focus-visible:outline focus-visible:outline-2",o.value])},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},8,["class"]))}});le.__file="src/components/forms/AGButton.vue";const ie={class:"mt-2 flex flex-row-reverse gap-2"};var ue=e.defineComponent({__name:"AGConfirmModal",props:{title:y(),message:b()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(re,{cancellable:!1},{default:e.withCtx((({close:o})=>[t.title?(e.openBlock(),e.createBlock(se,{key:0,text:t.title,as:"h1"},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(se,{text:t.message},null,8,["text"]),e.createElementVNode("div",ie,[e.createVNode(le,{onClick:e=>o(!0)},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.ok","OK")),1)])),_:2},1032,["onClick"]),e.createVNode(le,{secondary:"",onClick:e=>o()},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.cancel","Cancel")),1)])),_:2},1032,["onClick"])])])),_:1}))});ue.__file="src/components/modals/AGConfirmModal.vue";var ce=e.defineComponent({__name:"AGLoadingModal",props:{message:y()},setup(t){const r=t,o=e.computed((()=>r.message??R("ui.loading","Loading...")));return(t,r)=>(e.openBlock(),e.createBlock(re,{cancellable:!1},{default:e.withCtx((()=>[e.createVNode(se,{text:o.value},null,8,["text"])])),_:1}))}});ce.__file="src/components/modals/AGLoadingModal.vue";const de={$ui:H};var pe={async install(e,t){const r={[V.AlertModal]:ne,[V.ConfirmModal]:ue,[V.LoadingModal]:ce};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return H.registerComponent(t,r)})),await P(e,de)}};const me={key:0};var fe=e.defineComponent({__name:"AGAppOverlays",setup(t){const r=e.ref(null),o=e.ref(!0),s=e.computed((()=>H.modals[0]??null));return W("show-overlays-backdrop",(async()=>{r.value&&o.value&&(o.value=!1,r.value.classList.remove("opacity-0"))})),W("hide-overlays-backdrop",(async()=>{r.value&&!o.value&&(o.value=!0,r.value.classList.add("opacity-0"))})),(t,o)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"$backdrop",ref:r,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),s.value?(e.openBlock(),e.createElementBlock("aside",me,[e.createVNode(X,{"child-index":1,modal:s.value},null,8,["modal"])])):e.createCommentVNode("v-if",!0)],64))}});fe.__file="src/components/AGAppOverlays.vue";const he={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var ve=e.defineComponent({__name:"AGAppLayout",setup:t=>(t,r)=>(e.openBlock(),e.createElementBlock("div",he,[e.renderSlot(t.$slots,"default"),e.createVNode(fe)]))});ve.__file="src/components/AGAppLayout.vue";var ge=e.defineComponent({__name:"AGHeadlessInput",props:{as:y("div"),name:y(),modelValue:v([String,Number,Boolean])},emits:["update:modelValue"],setup(r,{expose:o,emit:s}){const n=r,a=e.computed((()=>l&&n.name?l.errors[n.name]??null:null)),l=e.inject("form",null),i={id:`input-${t.uuid()}`,value:e.computed((()=>l&&n.name?l.getFieldValue(n.name):n.modelValue)),errors:e.readonly(a),update(e){l&&n.name?l.setFieldValue(n.name,e):s("update:modelValue",e)}};return e.provide("input",i),o(i),(t,o)=>r.as?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.as),{key:0},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3})):e.renderSlot(t.$slots,"default",{key:1})}});ge.__file="src/components/headless/forms/AGHeadlessInput.vue";const xe=["id"];var _e=e.defineComponent({__name:"AGHeadlessInputError",setup(t){const r=h("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),o=e.computed((()=>r.errors?R(`errors.${r.errors[0]}`,`Error: ${r.errors[0]}`):null));return(t,s)=>o.value?(e.openBlock(),e.createElementBlock("p",{key:0,id:`${e.unref(r).id}-error`},e.toDisplayString(o.value),9,xe)):e.createCommentVNode("v-if",!0)}});_e.__file="src/components/headless/forms/AGHeadlessInputError.vue";const be=["id","type","value","aria-invalid","aria-describedby","checked"];var ye=e.defineComponent({__name:"AGHeadlessInputInput",props:{type:y("text")},setup(t){const r=t,o=e.ref(),s=h("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),n=e.computed((()=>s.value)),a=e.computed((()=>{if("checkbox"===r.type)return!!n.value}));function l(){o.value&&s.update("checkbox"===r.type?o.value.checked:o.value.value)}return(r,i)=>(e.openBlock(),e.createElementBlock("input",{id:e.unref(s).id,ref_key:"$input",ref:o,type:t.type,value:n.value,"aria-invalid":e.unref(s).errors?"true":"false","aria-describedby":e.unref(s).errors?`${e.unref(s).id}-error`:void 0,checked:a.value,onInput:l},null,40,be))}});ye.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const ke=["for"];var je=e.defineComponent({__name:"AGHeadlessInputLabel",setup(t){const r=h("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>");return(t,o)=>(e.openBlock(),e.createElementBlock("label",{for:e.unref(r).id},[e.renderSlot(t.$slots,"default")],8,ke))}});je.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";const Ae={class:"ml-2"};var Se=e.defineComponent({inheritAttrs:!1,__name:"AGCheckbox",props:{name:y()},setup(t){const r=p();return(o,s)=>(e.openBlock(),e.createBlock(ge,{ref_key:"$input",ref:r,name:t.name,class:"flex"},{default:e.withCtx((()=>[e.createVNode(ye,e.mergeProps(o.$attrs,{type:"checkbox",class:{"text-indigo-600 focus:ring-indigo-600":!e.unref(r)?.errors,"border-red-200 text-red-600 focus:ring-red-600":e.unref(r)?.errors}}),null,16,["class"]),e.createElementVNode("div",Ae,[o.$slots.default?(e.openBlock(),e.createBlock(je,{key:0},{default:e.withCtx((()=>[e.renderSlot(o.$slots,"default")])),_:3})):e.createCommentVNode("v-if",!0),e.createVNode(_e,{class:"text-sm text-red-600"})])])),_:3},8,["name"]))}});Se.__file="src/components/forms/AGCheckbox.vue";const we=["onSubmit"];var Ce=e.defineComponent({__name:"AGForm",props:{form:g()},emits:["submit"],setup(t,{emit:r}){const o=t;function s(){o.form&&!o.form.submit()||r("submit")}return e.provide("form",o.form),(t,r)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(s,["prevent"])},[e.renderSlot(t.$slots,"default")],40,we))}});Ce.__file="src/components/forms/AGForm.vue";const Ee={class:"absolute bottom-0 left-0 translate-y-full"};var Ge=e.defineComponent({inheritAttrs:!1,__name:"AGInput",props:{name:y()},setup(t){const r=p(),[o,s]=J();return(n,a)=>(e.openBlock(),e.createBlock(ge,{ref_key:"$input",ref:r,class:e.normalizeClass(["relative flex flex-col items-center",e.unref(s)]),name:t.name},{default:e.withCtx((()=>[e.createVNode(ye,e.mergeProps(e.unref(o),{class:["block w-full border-0 py-1.5 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600",{"ring-1 ring-red-500":e.unref(r)?.errors}]}),null,16,["class"]),e.createElementVNode("div",Ee,[e.createVNode(_e,{class:"mt-1 text-sm text-red-500"})])])),_:1},8,["class","name"]))}});Ge.__file="src/components/forms/AGInput.vue";var Be=e.defineComponent({__name:"AGHeadlessModalTitle",props:{as:y("h2")},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(e.unref(s.DialogTitle),{as:t.as},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default")])),_:3},8,["as"]))});Be.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const qe={String:"string",Number:"number",Boolean:"boolean"};class Me extends t.MagicObject{constructor(t){super(),i.default(this,"errors",void 0),i.default(this,"_fields",void 0),i.default(this,"_data",void 0),i.default(this,"_valid",void 0),i.default(this,"_submitted",void 0),i.default(this,"_errors",void 0),this._fields=t,this._submitted=e.ref(!1),this._data=this.getInitialData(t),this._errors=this.getInitialErrors(t),this._valid=e.computed((()=>!Object.values(this._errors).some((e=>null!==e)))),this.errors=e.readonly(this._errors)}get valid(){return this._valid.value}get submitted(){return this._submitted.value}setFieldValue(e,t){this._data[e]=t,this._submitted.value&&this.validate()}getFieldValue(e){return this._data[e]}validate(){const e=Object.entries(this._fields).reduce(((e,t)=>{let[r,o]=t;return e[r]=this.getFieldErrors(r,o),e}),{});return this.resetErrors(e),this.valid}reset(){this._submitted.value=!1,this.resetData(),this.resetErrors()}submit(){return this._submitted.value=!0,this.validate()}__get(e){return e in this._fields?this._data[e]:super.__get(e)}__set(e,t){e in this._fields?Object.assign(this._data,{[e]:t}):super.__set(e,t)}getFieldErrors(e,t){const r=[];return t.rules?.includes("required")&&!this._data[e]&&r.push("required"),r.length>0?r:null}getInitialData(t){if(this.static().isConjuring())return{};const r=Object.entries(t).reduce(((e,t)=>{let[r,o]=t;return e[r]=o.default??null,e}),{});return e.reactive(r)}getInitialErrors(t){if(this.static().isConjuring())return{};const r=Object.keys(t).reduce(((e,t)=>(e[t]=null,e)),{});return e.reactive(r)}resetData(){for(const[e,t]of Object.entries(this._fields))this._data[e]=t.default??null}resetErrors(e){Object.keys(this._errors).forEach((e=>delete this._errors[e])),e&&Object.assign(this._errors,e)}}exports.AGAlertModal=ne,exports.AGAppLayout=ve,exports.AGAppOverlays=fe,exports.AGButton=le,exports.AGCheckbox=Se,exports.AGConfirmModal=ue,exports.AGForm=Ce,exports.AGHeadlessButton=ae,exports.AGHeadlessInput=ge,exports.AGHeadlessInputError=_e,exports.AGHeadlessInputInput=ye,exports.AGHeadlessInputLabel=je,exports.AGHeadlessModal=Q,exports.AGHeadlessModalPanel=Z,exports.AGHeadlessModalTitle=Be,exports.AGInput=Ge,exports.AGLoadingModal=ce,exports.AGMarkdown=se,exports.AGModal=re,exports.AGModalContext=X,exports.App=M,exports.AppService=q,exports.Errors=F,exports.Events=G,exports.EventsService=E,exports.FormFieldTypes=qe,exports.Lang=O,exports.Service=C,exports.UI=H,exports.UIComponents=V,exports.arrayProp=function(e){return{type:Array,default:e??(()=>[])}},exports.booleanInput=function(e){return{default:e,type:qe.Boolean}},exports.booleanProp=d,exports.bootServices=P,exports.bootstrapApplication=async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=[j,z,U,$,pe,...r.plugins??[]],s=e.createApp(t);await Promise.all(o.map((e=>e.install(s,r)))??[]),s.mount("#app"),G.emit("application-mounted")},exports.componentRef=p,exports.defineDirective=m,exports.definePlugin=c,exports.defineServiceState=w,exports.enumProp=function(e,t){const r=Object.values(e);return{type:String,default:t??r[0]??null,validator:e=>r.includes(e)}},exports.injectOrFail=function(r,o){return e.inject(r)??t.fail(o??`Could not resolve '${r}' injection key`)},exports.injectReactive=f,exports.injectReactiveOrFail=h,exports.mixedProp=v,exports.numberInput=function(e){return{default:e,type:qe.Number}},exports.numberProp=function(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},exports.objectProp=g,exports.onCleanMounted=function(r){let o=t.noop;e.onMounted((()=>o=r())),e.onUnmounted((()=>o()))},exports.requiredArrayProp=function(){return{type:Array,required:!0}},exports.requiredBooleanInput=function(e){return{default:e,type:qe.Boolean,rules:"required"}},exports.requiredEnumProp=function(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}},exports.requiredMixedProp=function(e){return{type:e,required:!0}},exports.requiredNumberInput=function(e){return{default:e,type:qe.Number,rules:"required"}},exports.requiredNumberProp=x,exports.requiredObjectProp=_,exports.requiredStringInput=function(e){return{default:e,type:qe.String,rules:"required"}},exports.requiredStringProp=b,exports.stringInput=function(e){return{default:e,type:qe.String}},exports.stringProp=y,exports.translate=D,exports.translateWithDefault=R,exports.useEvent=W,exports.useForm=function(e){return new Me(e)},exports.useInputAttrs=J;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("core-js/modules/esnext.async-iterator.map.js"),require("core-js/modules/esnext.iterator.map.js");var e=require("vue");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");var t=require("@noeldemartin/utils"),r=require("@babel/runtime/helpers/defineProperty");require("core-js/modules/esnext.async-iterator.reduce.js"),require("core-js/modules/esnext.iterator.reduce.js"),require("core-js/modules/esnext.string.at.js"),require("core-js/modules/esnext.async-iterator.filter.js"),require("core-js/modules/esnext.iterator.filter.js");var o=require("@headlessui/vue"),s=require("dompurify"),n=require("marked");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("core-js/modules/esnext.async-iterator.some.js"),require("core-js/modules/esnext.iterator.some.js");var l=a(r),i=a(s);function u(e){return e}function d(){return{type:Boolean,default:arguments.length>0&&void 0!==arguments[0]&&arguments[0]}}function c(){return e.ref()}function p(e){return e}function m(t){const r=e.inject(t);return r?e.reactive(r):void 0}function f(e,r){return m(e)??t.fail(r??`Could not resolve '${e}' injection key`)}function v(){return{type:Object,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}function h(){return{type:Number,required:!0}}function _(){return{type:Object,required:!0}}function x(){return{type:String,required:!0}}function g(){return{type:String,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}}const b={"initial-focus":{mounted(e,t){let{value:r}=t;!1!==r&&e.focus()}}};var y={install(e){Object.entries(b).forEach((t=>{let[r,o]=t;return e.directive(r,o)}))}};class ServiceBootError extends t.JSError{constructor(e,t){super(`Service '${e}' failed booting`,{cause:t})}}function k(e){return class extends A{getInitialState(){return e.initialState}getComputedStateDefinition(){return e.computed??{}}}}class A extends t.MagicObject{constructor(){super(),l.default(this,"_namespace",void 0),l.default(this,"_booted",void 0),l.default(this,"_state",void 0),l.default(this,"_computedState",void 0),this._namespace=new.target.name,this._booted=new t.PromisedValue,this._state=e.reactive(this.getInitialState()),this._computedState=Object.entries(this.getComputedStateDefinition()).reduce(((t,r)=>{let[o,s]=r;return t[o]=e.computed((()=>s(this._state))),t}),{})}get booted(){return this._booted}launch(e){const handleError=e=>this._booted.reject(new ServiceBootError(this._namespace,e));this._namespace=e??this._namespace;try{this.boot().then((()=>this._booted.resolve())).catch(handleError)}catch(e){handleError(e)}return this._booted}__get(e){return this.hasState(e)?this.getState(e):this.hasComputedState(e)?this.getComputedState(e):super.__get(e)}__set(e,t){this.setState({[e]:t})}hasState(e){return e in this._state}hasComputedState(e){return e in this._computedState}getState(e){return e?this._state[e]:this._state}getComputedState(e){return this._computedState[e]?.value}setState(e){Object.assign(this._state,e)}getInitialState(){return{}}getComputedStateDefinition(){return{}}async boot(){}}var C=k({initialState:{environment:__AG_ENV},computed:{isDevelopment:e=>"development"===e.environment}});class w extends C{}var G=t.facade(new w);class S extends A{constructor(){super(...arguments),l.default(this,"listeners",{})}async emit(e,t){const r=[...this.listeners[e]??[]];await Promise.all(r.map((e=>e(t)))??[])}on(e,r){return(this.listeners[e]??=t.arr([])).push(r),()=>this.off(e,r)}once(e,r){let o=null;return t.tap((()=>o&&this.off(e,o)),(s=>{(this.listeners[e]??=t.arr([])).push(o=function(){return s(),r(...arguments)})}))}off(e,t){const r=this.listeners[e];r&&(r.remove(t),r.isEmpty()&&delete this.listeners[e])}}var j=t.facade(new S);const B={$app:G,$events:j};async function M(e,t){await Promise.all(Object.entries(t).map((async e=>{let[t,r]=e;await r.launch(t.slice(1)).catch((e=>console.error(e)))}))),Object.assign(e.config.globalProperties,t)}var I={async install(e){await M(e,B)}};var q=t.facade(new class extends A{constructor(){super(),l.default(this,"provider",void 0),this.provider={translate:e=>(G.isDevelopment&&console.warn("Lang provider is missing"),e)}}setProvider(e){this.provider=e}translate(e,t){return this.provider.translate(e,t)??e}translateWithDefault(e,t,r){r??=t;const o="string"==typeof t?{}:t,s=this.provider.translate(e,o)??e;return s===e?r:s}});const P={$lang:q},E=q.translate.bind(q),$=q.translateWithDefault.bind(q);var H={async install(e){e.config.globalProperties.$t??=E,e.config.globalProperties.$td=$,await M(e,P)}},V=k({initialState:{modals:[]}});const N={AlertModal:"alert-modal",ConfirmModal:"confirm-modal"};var O=t.facade(new class extends V{constructor(){super(...arguments),l.default(this,"modalCallbacks",{}),l.default(this,"components",{})}alert(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e};this.openModal(this.requireComponent(N.AlertModal),r)}async confirm(e,t){const r="string"==typeof t?{title:e,message:t}:{message:e},o=await this.openModal(this.requireComponent(N.ConfirmModal),r);return await o.beforeClose??!1}registerComponent(e,t){this.components[e]=t}async openModal(r,o){const s=t.uuid(),n={},a={id:s,properties:o??{},component:e.markRaw(r),beforeClose:new Promise((e=>n.willClose=e)),afterClose:new Promise((e=>n.closed=e))},l=this.modals.at(-1),i=this.modals.concat(a);return this.modalCallbacks[a.id]=n,this.setState({modals:i}),await e.nextTick(),await(l&&j.emit("hide-modal",{id:l.id})),await Promise.all([l||j.emit("show-overlays-backdrop"),j.emit("show-modal",{id:a.id})]),a}async closeModal(e,t){await j.emit("close-modal",{id:e,result:t})}async boot(){await super.boot(),this.watchModalEvents()}requireComponent(e){return this.components[e]??t.fail(`UI Component '${e}' is not defined!`)}watchModalEvents(){j.on("modal-will-close",(e=>{let{modal:t,result:r}=e;this.modalCallbacks[t.id]?.willClose?.(r),1===this.modals.length&&j.emit("hide-overlays-backdrop")})),j.on("modal-closed",(async e=>{let{modal:t,result:r}=e;this.setState({modals:this.modals.filter((e=>e.id!==t.id))}),this.modalCallbacks[t.id]?.closed?.(r),delete this.modalCallbacks[t.id];const o=this.modals.at(-1);await(o&&j.emit("show-modal",{id:o.id}))}))}});function D(t,r){const o=j.on(t,r);e.onUnmounted((()=>o()))}var F=e.defineComponent({__name:"AGHeadlessModal",props:{cancellable:d(!0)},setup(t,{expose:r}){const s=t,n=e.ref(null),a=e.ref(!0),l=e.ref(!1),{modal:i}=f("modal","could not obtain modal reference from <AGHeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead");async function u(){n.value?.$el&&(a.value=!0)}async function d(e){l.value||(j.emit("modal-will-close",{modal:i,result:e}),await u(),l.value=!0,j.emit("modal-closed",{modal:i,result:e}))}return D("close-modal",(async({id:e,result:t})=>{e===i.id&&await d(t)})),D("hide-modal",(async({id:e})=>{e===i.id&&await u()})),D("show-modal",(async({id:e})=>{e===i.id&&await async function(){n.value?.$el&&(a.value=!1)}()})),r({close:d,cancellable:e.toRef(s,"cancellable")}),(r,s)=>(e.openBlock(),e.createBlock(e.unref(o.Dialog),{ref_key:"$root",ref:n,open:!0,onClose:s[0]||(s[0]=e=>t.cancellable&&d())},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default",{close:d})])),_:3},512))}});F.__file="src/components/headless/modals/AGHeadlessModal.vue";var L=e.defineComponent({__name:"AGModalContext",props:{modal:_(),childIndex:h()},setup(t){const r=t;return e.provide("modal",{modal:e.toRef(r,"modal"),childIndex:e.toRef(r,"childIndex")}),(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.modal.component),e.normalizeProps(e.guardReactiveProps(t.modal.properties)),null,16))}});L.__file="src/components/modals/AGModalContext.vue";var T=e.defineComponent({__name:"AGHeadlessModalPanel",setup(t){const r=f("modal","could not obtain modal reference from <AGHeadlessModalPanel>, did you render this component manually? Show it using $ui.openModal() instead"),s=e.computed((()=>O.modals[r.childIndex]??null));return(t,n)=>(e.openBlock(),e.createBlock(e.unref(o.DialogPanel),null,{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default"),s.value?(e.openBlock(),e.createBlock(L,{key:0,"child-index":e.unref(r).childIndex+1,modal:s.value},null,8,["child-index","modal"])):e.createCommentVNode("v-if",!0)])),_:3}))}});T.__file="src/components/headless/modals/AGHeadlessModalPanel.vue";const R={class:"fixed inset-0 flex items-center justify-center"},z={class:"flex max-h-full flex-col overflow-auto p-4"};var U=e.defineComponent({__name:"AGModal",setup:t=>(t,r)=>(e.openBlock(),e.createBlock(F,{class:"relative z-50"},{default:e.withCtx((({close:r})=>[e.createElementVNode("div",R,[e.createVNode(T,{class:"flex max-h-full max-w-full flex-col overflow-hidden bg-white"},{default:e.withCtx((()=>[e.createElementVNode("div",z,[e.renderSlot(t.$slots,"default",{close:r})])])),_:2},1024)])])),_:3}))});function K(e){return t=n.marked(e,{mangle:!1,headerIds:!1}),i.default.sanitize(t,{ADD_ATTR:["target"]});var t}U.__file="src/components/modals/AGModal.vue";var W=e.defineComponent({__name:"AGMarkdown",props:{as:g("div"),langKey:g(),text:g(),inline:d(),raw:d()},setup(t){const r=t,o=e.computed((()=>r.text??(r.langKey&&E(r.langKey)))),s=e.computed((()=>{if(!o.value)return null;let e=K(o.value);return r.inline&&(e=e.replace("<p>","<span>").replace("</p>","</span>")),e})),n=()=>e.h(r.as,{class:r.raw?"":"prose",innerHTML:s.value});return(t,r)=>(e.openBlock(),e.createBlock(n))}});W.__file="src/components/basic/AGMarkdown.vue";var Q=e.defineComponent({__name:"AGAlertModal",props:{title:g(),message:x()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(U,null,{default:e.withCtx((()=>[t.title?(e.openBlock(),e.createBlock(W,{key:0,text:t.title,as:"h2",class:"font-semibold",raw:"",inline:""},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(W,{text:t.message},null,8,["text"])])),_:1}))});Q.__file="src/components/modals/AGAlertModal.vue";var J=e.defineComponent({__name:"AGHeadlessButton",props:{url:g(),route:g(),routeParams:v((()=>({}))),routeQuery:v((()=>({}))),submit:d()},setup(r){const{url:o,route:s,routeParams:n,routeQuery:a,submit:l}=r,i=e.computed((()=>s?{tag:"router-link",props:{to:t.objectWithoutEmpty({name:s,params:n,query:a})}}:o?{tag:"a",props:{target:"_blank",href:o}}:{tag:"button",props:{type:l?"submit":"button"}}));return(t,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value.tag),e.normalizeProps(e.guardReactiveProps(i.value.props)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},16))}});J.__file="src/components/headless/forms/AGHeadlessButton.vue";var X=e.defineComponent({__name:"AGButton",props:{secondary:d()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(J,{class:e.normalizeClass(["px-2.5 py-1.5 text-white focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",{"bg-indigo-600 hover:bg-indigo-500 focus-visible:outline-indigo-600":!t.secondary,"bg-gray-600 hover:bg-gray-500 focus-visible:outline-gray-600":t.secondary}])},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default")])),_:3},8,["class"]))});X.__file="src/components/forms/AGButton.vue";const Y={class:"mt-2 flex flex-row-reverse gap-2"};var Z=e.defineComponent({__name:"AGConfirmModal",props:{title:g(),message:x()},setup:t=>(r,o)=>(e.openBlock(),e.createBlock(U,{cancellable:!1},{default:e.withCtx((({close:o})=>[t.title?(e.openBlock(),e.createBlock(W,{key:0,text:t.title,as:"h1"},null,8,["text"])):e.createCommentVNode("v-if",!0),e.createVNode(W,{text:t.message},null,8,["text"]),e.createElementVNode("div",Y,[e.createVNode(X,{onClick:e=>o(!0)},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.ok","OK")),1)])),_:2},1032,["onClick"]),e.createVNode(X,{secondary:"",onClick:e=>o()},{default:e.withCtx((()=>[e.createTextVNode(e.toDisplayString(r.$td("ui.cancel","Cancel")),1)])),_:2},1032,["onClick"])])])),_:1}))});Z.__file="src/components/modals/AGConfirmModal.vue";const ee={$ui:O};var te={async install(e,t){const r={[N.AlertModal]:Q,[N.ConfirmModal]:Z};Object.entries({...r,...t.components}).forEach((e=>{let[t,r]=e;return O.registerComponent(t,r)})),await M(e,ee)}};const re={key:0};var oe=e.defineComponent({__name:"AGAppOverlays",setup(t){const r=e.ref(null),o=e.ref(!0),s=e.computed((()=>O.modals[0]??null));return D("show-overlays-backdrop",(async()=>{r.value&&o.value&&(o.value=!1,r.value.classList.remove("opacity-0"))})),D("hide-overlays-backdrop",(async()=>{r.value&&!o.value&&(o.value=!0,r.value.classList.add("opacity-0"))})),(t,o)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"$backdrop",ref:r,class:"pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"},null,512),s.value?(e.openBlock(),e.createElementBlock("aside",re,[e.createVNode(L,{"child-index":1,modal:s.value},null,8,["modal"])])):e.createCommentVNode("v-if",!0)],64))}});oe.__file="src/components/AGAppOverlays.vue";const se={class:"flex h-full flex-col text-base font-normal leading-tight text-gray-900 antialiased"};var ne=e.defineComponent({__name:"AGAppLayout",setup:t=>(t,r)=>(e.openBlock(),e.createElementBlock("div",se,[e.renderSlot(t.$slots,"default"),e.createVNode(oe)]))});ne.__file="src/components/AGAppLayout.vue";const ae=["onSubmit"];var le=e.defineComponent({__name:"AGForm",props:{form:v()},emits:["submit"],setup(t,{emit:r}){const o=t;function s(){o.form&&!o.form.submit()||r("submit")}return e.provide("form",o.form),(t,r)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(s,["prevent"])},[e.renderSlot(t.$slots,"default")],40,ae))}});le.__file="src/components/forms/AGForm.vue";var ie=e.defineComponent({__name:"AGHeadlessInput",props:{as:g(),name:g(),modelValue:g()},emits:["update:modelValue"],setup(r,{expose:o,emit:s}){const n=r,a=e.computed((()=>l&&n.name?l.errors[n.name]??null:null)),l=e.inject("form",null),i={id:`input-${t.uuid()}`,value:e.computed((()=>l&&n.name?l.getFieldValue(n.name):n.modelValue)),errors:e.readonly(a),update(e){l&&n.name?l.setFieldValue(n.name,e):s("update:modelValue",e)}};return e.provide("input",i),o(i),(t,o)=>r.as?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.as),{key:0},{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3})):e.renderSlot(t.$slots,"default",{key:1})}});ie.__file="src/components/headless/forms/AGHeadlessInput.vue";const ue=["id","value","aria-invalid","aria-describedby"];var de=e.defineComponent({__name:"AGHeadlessInputInput",setup(t){const r=e.ref(),o=f("input","<AGHeadlessInputInput> must be a child of a <AGHeadlessInput>"),s=e.computed((()=>o.value));function n(){r.value&&o.update(r.value.value)}return(t,a)=>(e.openBlock(),e.createElementBlock("input",{id:e.unref(o).id,ref_key:"$input",ref:r,type:"text",value:s.value,"aria-invalid":e.unref(o).errors?"true":"false","aria-describedby":e.unref(o).errors?`${e.unref(o).id}-error`:void 0,onInput:n},null,40,ue))}});de.__file="src/components/headless/forms/AGHeadlessInputInput.vue";const ce=["id"];var pe=e.defineComponent({__name:"AGHeadlessInputError",setup(t){const r=f("input","<AGHeadlessInputError> must be a child of a <AGHeadlessInput>"),o=e.computed((()=>r.errors?$(`errors.${r.errors[0]}`,`Error: ${r.errors[0]}`):null));return(t,s)=>o.value?(e.openBlock(),e.createElementBlock("p",{key:0,id:`${e.unref(r).id}-error`},e.toDisplayString(o.value),9,ce)):e.createCommentVNode("v-if",!0)}});pe.__file="src/components/headless/forms/AGHeadlessInputError.vue";var me=e.defineComponent({inheritAttrs:!1,__name:"AGInput",props:{name:g()},setup(t){const r=c();return(o,s)=>(e.openBlock(),e.createBlock(ie,{ref_key:"$input",ref:r,as:"div",class:"flex flex-col items-center",name:t.name},{default:e.withCtx((()=>[e.createVNode(de,e.mergeProps(o.$attrs,{class:["block w-full border-0 py-1.5 text-gray-900 ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600",{"ring-1 ring-red-500":e.unref(r)?.errors}]}),null,16,["class"]),e.createVNode(pe,{class:"mt-1 text-sm text-red-500"})])),_:1},8,["name"]))}});me.__file="src/components/forms/AGInput.vue";const fe=["for"];var ve=e.defineComponent({__name:"AGHeadlessInputLabel",setup(t){const r=f("input","<AGHeadlessInputLabel> must be a child of a <AGHeadlessInput>");return(t,o)=>(e.openBlock(),e.createElementBlock("label",{for:e.unref(r).id},[e.renderSlot(t.$slots,"default")],8,fe))}});ve.__file="src/components/headless/forms/AGHeadlessInputLabel.vue";var he=e.defineComponent({__name:"AGHeadlessModalTitle",props:{as:g("h2")},setup:t=>(r,s)=>(e.openBlock(),e.createBlock(e.unref(o.DialogTitle),{as:t.as},{default:e.withCtx((()=>[e.renderSlot(r.$slots,"default")])),_:3},8,["as"]))});he.__file="src/components/headless/modals/AGHeadlessModalTitle.vue";const _e={String:"string",Number:"number"};class xe extends t.MagicObject{constructor(t){super(),l.default(this,"errors",void 0),l.default(this,"_fields",void 0),l.default(this,"_data",void 0),l.default(this,"_valid",void 0),l.default(this,"_submitted",void 0),l.default(this,"_errors",void 0),this._fields=t,this._submitted=e.ref(!1),this._data=this.getInitialData(t),this._errors=this.getInitialErrors(t),this._valid=e.computed((()=>!Object.values(this._errors).some((e=>null!==e)))),this.errors=e.readonly(this._errors)}get valid(){return this._valid.value}get submitted(){return this._submitted.value}setFieldValue(e,t){this._data[e]=t,this._submitted.value&&this.validate()}getFieldValue(e){return this._data[e]}validate(){const e=Object.entries(this._fields).reduce(((e,t)=>{let[r,o]=t;return e[r]=this.getFieldErrors(r,o),e}),{});return this.resetErrors(e),this.valid}reset(){this._submitted.value=!1,this.resetData(),this.resetErrors()}submit(){return this._submitted.value=!0,this.validate()}__get(e){return e in this._fields?this._data[e]:super.__get(e)}__set(e,t){e in this._fields?Object.assign(this._data,{[e]:t}):super.__set(e,t)}getFieldErrors(e,t){const r=[];return t.rules?.includes("required")&&!this._data[e]&&r.push("required"),r.length>0?r:null}getInitialData(t){if(this.static().isConjuring())return{};const r=Object.entries(t).reduce(((e,t)=>{let[r,o]=t;return e[r]=o.default??null,e}),{});return e.reactive(r)}getInitialErrors(t){if(this.static().isConjuring())return{};const r=Object.keys(t).reduce(((e,t)=>(e[t]=null,e)),{});return e.reactive(r)}resetData(){for(const[e,t]of Object.entries(this._fields))this._data[e]=t.default??null}resetErrors(e){Object.keys(this._errors).forEach((e=>delete this._errors[e])),e&&Object.assign(this._errors,e)}}exports.AGAlertModal=Q,exports.AGAppLayout=ne,exports.AGAppOverlays=oe,exports.AGButton=X,exports.AGConfirmModal=Z,exports.AGForm=le,exports.AGHeadlessButton=J,exports.AGHeadlessInput=ie,exports.AGHeadlessInputError=pe,exports.AGHeadlessInputInput=de,exports.AGHeadlessInputLabel=ve,exports.AGHeadlessModal=F,exports.AGHeadlessModalPanel=T,exports.AGHeadlessModalTitle=he,exports.AGInput=me,exports.AGMarkdown=W,exports.AGModal=U,exports.AGModalContext=L,exports.App=G,exports.AppService=w,exports.Events=j,exports.EventsService=S,exports.FormFieldTypes=_e,exports.Lang=q,exports.Service=A,exports.UI=O,exports.UIComponents=N,exports.arrayProp=function(e){return{type:Array,default:e??(()=>[])}},exports.booleanProp=d,exports.bootServices=M,exports.bootstrapApplication=async function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=[y,H,I,te,...r.plugins??[]],s=e.createApp(t);await Promise.all(o.map((e=>e.install(s,r)))??[]),s.mount("#app")},exports.componentRef=c,exports.defineDirective=p,exports.definePlugin=u,exports.defineServiceState=k,exports.enumProp=function(e,t){const r=Object.values(e);return{type:String,default:t??r[0]??null,validator:e=>r.includes(e)}},exports.injectOrFail=function(r,o){return e.inject(r)??t.fail(o??`Could not resolve '${r}' injection key`)},exports.injectReactive=m,exports.injectReactiveOrFail=f,exports.mixedProp=function(e){return{type:e,default:null}},exports.numberInput=function(e){return{default:e,type:_e.Number}},exports.numberProp=function(){return{type:Number,default:arguments.length>0&&void 0!==arguments[0]?arguments[0]:null}},exports.objectProp=v,exports.onCleanMounted=function(r){let o=t.noop;e.onMounted((()=>o=r())),e.onUnmounted((()=>o()))},exports.requiredArrayProp=function(){return{type:Array,required:!0}},exports.requiredEnumProp=function(e){const t=Object.values(e);return{type:String,required:!0,validator:e=>t.includes(e)}},exports.requiredMixedProp=function(e){return{type:e,required:!0}},exports.requiredNumberInput=function(e){return{default:e,type:_e.Number,rules:"required"}},exports.requiredNumberProp=h,exports.requiredObjectProp=_,exports.requiredStringInput=function(e){return{default:e,type:_e.String,rules:"required"}},exports.requiredStringProp=x,exports.stringInput=function(e){return{default:e,type:_e.String}},exports.stringProp=g,exports.translate=E,exports.translateWithDefault=$,exports.useEvent=D,exports.useForm=function(e){return new xe(e)};
2
2
  //# sourceMappingURL=aerogel-core.cjs.js.map
@@ -11,7 +11,6 @@ import type { Directive } from 'vue';
11
11
  import { ExtractPropTypes } from 'vue';
12
12
  import { Facade } from '@noeldemartin/utils';
13
13
  import type { InjectionKey } from 'vue';
14
- import type { JSError } from '@noeldemartin/utils';
15
14
  import type { LocationQuery } from 'vue-router';
16
15
  import { MagicObject } from '@noeldemartin/utils';
17
16
  import type { ObjectValues } from '@noeldemartin/utils';
@@ -70,12 +69,6 @@ export declare const AGAppOverlays: DefineComponent< {}, (_ctx: any, _cache:
70
69
  }>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
71
70
 
72
71
  export declare const AGButton: DefineComponent< {
73
- clear: {
74
- type: PropType<boolean>;
75
- validator?(value: unknown): boolean;
76
- } & {
77
- default: boolean | (() => boolean) | null;
78
- };
79
72
  secondary: {
80
73
  type: PropType<boolean>;
81
74
  validator?(value: unknown): boolean;
@@ -85,12 +78,6 @@ default: boolean | (() => boolean) | null;
85
78
  }, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
86
79
  [key: string]: any;
87
80
  }>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
88
- clear: {
89
- type: PropType<boolean>;
90
- validator?(value: unknown): boolean;
91
- } & {
92
- default: boolean | (() => boolean) | null;
93
- };
94
81
  secondary: {
95
82
  type: PropType<boolean>;
96
83
  validator?(value: unknown): boolean;
@@ -98,30 +85,9 @@ validator?(value: unknown): boolean;
98
85
  default: boolean | (() => boolean) | null;
99
86
  };
100
87
  }>>, {
101
- clear: boolean;
102
88
  secondary: boolean;
103
89
  }, {}>;
104
90
 
105
- export declare const AGCheckbox: DefineComponent< {
106
- name: {
107
- type: PropType<string | null>;
108
- validator?(value: unknown): boolean;
109
- } & {
110
- default: string | (() => string | null) | null;
111
- };
112
- }, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
113
- [key: string]: any;
114
- }>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
115
- name: {
116
- type: PropType<string | null>;
117
- validator?(value: unknown): boolean;
118
- } & {
119
- default: string | (() => string | null) | null;
120
- };
121
- }>>, {
122
- name: string | null;
123
- }, {}>;
124
-
125
91
  export declare const AGConfirmModal: DefineComponent< {
126
92
  title: {
127
93
  type: PropType<string | null>;
@@ -250,10 +216,10 @@ submit: boolean;
250
216
 
251
217
  export declare const AGHeadlessInput: DefineComponent< {
252
218
  as: {
253
- type: PropType<string>;
219
+ type: PropType<string | null>;
254
220
  validator?(value: unknown): boolean;
255
221
  } & {
256
- default: string | (() => string) | null;
222
+ default: string | (() => string | null) | null;
257
223
  };
258
224
  name: {
259
225
  type: PropType<string | null>;
@@ -262,19 +228,19 @@ validator?(value: unknown): boolean;
262
228
  default: string | (() => string | null) | null;
263
229
  };
264
230
  modelValue: {
265
- type: PropType<string | number | boolean | null>;
231
+ type: PropType<string | null>;
266
232
  validator?(value: unknown): boolean;
267
233
  } & {
268
- default: string | number | boolean | (() => string | number | boolean | null) | null;
234
+ default: string | (() => string | null) | null;
269
235
  };
270
236
  }, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
271
237
  [key: string]: any;
272
238
  }>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
273
239
  as: {
274
- type: PropType<string>;
240
+ type: PropType<string | null>;
275
241
  validator?(value: unknown): boolean;
276
242
  } & {
277
- default: string | (() => string) | null;
243
+ default: string | (() => string | null) | null;
278
244
  };
279
245
  name: {
280
246
  type: PropType<string | null>;
@@ -283,42 +249,26 @@ validator?(value: unknown): boolean;
283
249
  default: string | (() => string | null) | null;
284
250
  };
285
251
  modelValue: {
286
- type: PropType<string | number | boolean | null>;
252
+ type: PropType<string | null>;
287
253
  validator?(value: unknown): boolean;
288
254
  } & {
289
- default: string | number | boolean | (() => string | number | boolean | null) | null;
255
+ default: string | (() => string | null) | null;
290
256
  };
291
257
  }>> & {
292
258
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
293
259
  }, {
294
- as: string;
260
+ as: string | null;
295
261
  name: string | null;
296
- modelValue: string | number | boolean | null;
262
+ modelValue: string | null;
297
263
  }, {}>;
298
264
 
299
265
  export declare const AGHeadlessInputError: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
300
266
  [key: string]: any;
301
267
  }>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
302
268
 
303
- export declare const AGHeadlessInputInput: DefineComponent< {
304
- type: {
305
- type: PropType<string>;
306
- validator?(value: unknown): boolean;
307
- } & {
308
- default: string | (() => string) | null;
309
- };
310
- }, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
269
+ export declare const AGHeadlessInputInput: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
311
270
  [key: string]: any;
312
- }>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
313
- type: {
314
- type: PropType<string>;
315
- validator?(value: unknown): boolean;
316
- } & {
317
- default: string | (() => string) | null;
318
- };
319
- }>>, {
320
- type: string;
321
- }, {}>;
271
+ }>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
322
272
 
323
273
  export declare const AGHeadlessInputLabel: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
324
274
  [key: string]: any;
@@ -388,26 +338,6 @@ default: string | (() => string | null) | null;
388
338
  name: string | null;
389
339
  }, {}>;
390
340
 
391
- export declare const AGLoadingModal: DefineComponent< {
392
- message: {
393
- type: PropType<string | null>;
394
- validator?(value: unknown): boolean;
395
- } & {
396
- default: string | (() => string | null) | null;
397
- };
398
- }, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
399
- [key: string]: any;
400
- }>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
401
- message: {
402
- type: PropType<string | null>;
403
- validator?(value: unknown): boolean;
404
- } & {
405
- default: string | (() => string | null) | null;
406
- };
407
- }>>, {
408
- message: string | null;
409
- }, {}>;
410
-
411
341
  export declare const AGMarkdown: DefineComponent< {
412
342
  as: {
413
343
  type: PropType<string>;
@@ -480,25 +410,9 @@ inline: boolean;
480
410
  raw: boolean;
481
411
  }, {}>;
482
412
 
483
- export declare const AGModal: DefineComponent< {
484
- cancellable: {
485
- type: PropType<boolean>;
486
- validator?(value: unknown): boolean;
487
- } & {
488
- default: boolean | (() => boolean) | null;
489
- };
490
- }, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
413
+ export declare const AGModal: DefineComponent< {}, (_ctx: any, _cache: any) => VNode<RendererNode, RendererElement, {
491
414
  [key: string]: any;
492
- }>, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {
493
- cancellable: {
494
- type: PropType<boolean>;
495
- validator?(value: unknown): boolean;
496
- } & {
497
- default: boolean | (() => boolean) | null;
498
- };
499
- }>>, {
500
- cancellable: boolean;
501
- }, {}>;
415
+ }>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes< {}>>, {}, {}>;
502
416
 
503
417
  export declare const AGModalContext: DefineComponent< {
504
418
  modal: {
@@ -532,8 +446,7 @@ required: true;
532
446
 
533
447
  export declare const App: Facade<AppService, Constructor<AppService>>;
534
448
 
535
- export declare class AppService extends _default_2 {
536
- protected boot(): Promise<void>;
449
+ export declare class AppService extends _default {
537
450
  }
538
451
 
539
452
  export declare function arrayProp<T>(defaultValue?: () => T[]): OptionalProp<T[]>;
@@ -543,8 +456,6 @@ declare type BaseProp<T> = {
543
456
  validator?(value: unknown): boolean;
544
457
  };
545
458
 
546
- export declare function booleanInput(defaultValue?: boolean): FormFieldDefinition<typeof FormFieldTypes.Boolean>;
547
-
548
459
  export declare function booleanProp(defaultValue?: boolean): OptionalProp<boolean>;
549
460
 
550
461
  export declare function bootServices(app: App_2, services: Record<string, Service>): Promise<void>;
@@ -555,30 +466,17 @@ export declare function componentRef<T>(): Ref<UnwrapNestedRefs<T> | undefined>;
555
466
 
556
467
  export declare type ComputedStateDefinition<TState extends ServiceState, TComputedState extends ServiceState> = {
557
468
  [K in keyof TComputedState]: (state: TState) => TComputedState[K];
558
- } & ThisType<{
559
- readonly [K in keyof TComputedState]: TComputedState[K];
560
- }>;
469
+ };
561
470
 
562
471
  declare const _default: Constructor< {
563
- logs: ErrorReportLog[];
564
- startupErrors: ErrorReport[];
565
- }> & Constructor< {
566
- hasErrors: boolean;
567
- hasNewErrors: boolean;
568
- hasStartupErrors: boolean;
569
- }> & Constructor<Service<DefaultServiceState, {}, Partial<DefaultServiceState>>> & Service;
570
-
571
- declare const _default_2: Constructor< {
572
472
  environment: "production" | "development" | "testing";
573
- isMounted: boolean;
574
473
  }> & Constructor< {
575
474
  isDevelopment: boolean;
576
- isTesting: boolean;
577
- }> & Constructor<Service<DefaultServiceState, {}, Partial<DefaultServiceState>>> & Service;
475
+ }> & Constructor<Service<DefaultServiceState, {}>> & Service;
578
476
 
579
- declare const _default_3: Constructor< {
477
+ declare const _default_2: Constructor< {
580
478
  modals: Modal<unknown>[];
581
- }> & Constructor< {}> & Constructor<Service<DefaultServiceState, {}, Partial<DefaultServiceState>>> & Service;
479
+ }> & Constructor< {}> & Constructor<Service<DefaultServiceState, {}>> & Service;
582
480
 
583
481
  export declare type DefaultServices = typeof defaultServices;
584
482
 
@@ -587,56 +485,19 @@ declare const defaultServices: {
587
485
  $events: Facade<EventsService, Constructor<EventsService>>;
588
486
  };
589
487
 
590
- export declare type DefaultServiceState = any;
488
+ export declare type DefaultServiceState = {};
591
489
 
592
490
  export declare function defineDirective(directive: Directive): Directive;
593
491
 
594
492
  export declare function definePlugin<T extends Plugin_2>(plugin: T): T;
595
493
 
596
494
  export declare function defineServiceState<State extends ServiceState = ServiceState, ComputedState extends ServiceState = {}>(options: {
597
- name: string;
598
495
  initialState: State;
599
- persist?: (keyof State)[];
600
496
  computed?: ComputedStateDefinition<State, ComputedState>;
601
- serialize?: (state: Partial<State>) => Partial<State>;
602
- }): Constructor<State> & Constructor<ComputedState> & Constructor<Service<State, ComputedState, Partial<State>>>;
497
+ }): Constructor<State> & Constructor<ComputedState> & ServiceConstructor;
603
498
 
604
499
  export declare function enumProp<Enum extends Record<string, unknown>>(enumeration: Enum, defaultValue?: Enum[keyof Enum]): OptionalProp<Enum[keyof Enum]>;
605
500
 
606
- export declare interface ErrorReport {
607
- title: string;
608
- description?: string;
609
- details?: string;
610
- error?: Error | JSError | unknown;
611
- }
612
-
613
- export declare interface ErrorReportLog {
614
- report: ErrorReport;
615
- seen: boolean;
616
- date: Date;
617
- }
618
-
619
- export declare const Errors: Facade<ErrorsService, Constructor<ErrorsService>>;
620
-
621
- export declare type ErrorSource = string | Error | JSError | unknown;
622
-
623
- declare class ErrorsService extends _default {
624
- forceReporting: boolean;
625
- private enabled;
626
- enable(): void;
627
- disable(): void;
628
- inspect(error: ErrorSource | ErrorReport[]): Promise<void>;
629
- report(error: ErrorSource, message?: string): Promise<void>;
630
- see(report: ErrorReport): void;
631
- seeAll(): void;
632
- private logError;
633
- private createErrorReport;
634
- private createStartupErrorReport;
635
- private createErrorReportFromError;
636
- }
637
-
638
- export declare type ErrorsServices = typeof services;
639
-
640
501
  declare type EventListener_2<T = unknown> = (payload: T) => unknown;
641
502
  export { EventListener_2 as EventListener }
642
503
 
@@ -713,16 +574,15 @@ export declare type FormFieldType = ObjectValues<typeof FormFieldTypes>;
713
574
  export declare const FormFieldTypes: {
714
575
  readonly String: "string";
715
576
  readonly Number: "number";
716
- readonly Boolean: "boolean";
717
577
  };
718
578
 
719
- export declare type GetFormFieldValue<TType> = TType extends typeof FormFieldTypes.String ? string : TType extends typeof FormFieldTypes.Number ? number : TType extends typeof FormFieldTypes.Boolean ? boolean : never;
579
+ export declare type GetFormFieldValue<TType> = TType extends typeof FormFieldTypes.String ? string : TType extends typeof FormFieldTypes.Number ? number : never;
720
580
 
721
581
  export declare interface IAGHeadlessInput {
722
582
  id: string;
723
- value: ComputedRef<string | number | boolean | null>;
583
+ value: ComputedRef<string | number | null>;
724
584
  errors: DeepReadonly<Ref<string[] | null>>;
725
- update(value: string | number | boolean | null): void;
585
+ update(value: string | number | null): void;
726
586
  }
727
587
 
728
588
  export declare interface IAGHeadlessModal extends IAGModal {
@@ -754,7 +614,7 @@ declare class LangService extends Service {
754
614
  translateWithDefault(key: string, parameters: Record<string, unknown>, defaultMessage: string): string;
755
615
  }
756
616
 
757
- export declare type LangServices = typeof services_2;
617
+ export declare type LangServices = typeof services;
758
618
 
759
619
  export declare function mixedProp<T>(type: PropType<T>): OptionalProp<T | null>;
760
620
 
@@ -796,8 +656,6 @@ export { Plugin_2 as Plugin }
796
656
 
797
657
  export declare function requiredArrayProp<T>(): RequiredProp<T[]>;
798
658
 
799
- export declare function requiredBooleanInput(defaultValue?: boolean): FormFieldDefinition<typeof FormFieldTypes.Boolean, 'required'>;
800
-
801
659
  export declare function requiredEnumProp<Enum extends Record<string, unknown>>(enumeration: Enum): RequiredProp<Enum[keyof Enum]>;
802
660
 
803
661
  export declare function requiredMixedProp<T>(type: PropType<T>): RequiredProp<T>;
@@ -816,30 +674,25 @@ export declare function requiredStringInput(defaultValue?: string): FormFieldDef
816
674
 
817
675
  export declare function requiredStringProp(): RequiredProp<string>;
818
676
 
819
- export declare class Service<State extends ServiceState = DefaultServiceState, ComputedState extends ServiceState = {}, ServiceStorage extends Partial<State> = Partial<State>> extends MagicObject {
820
- static persist: string[];
821
- protected _name: string;
677
+ export declare class Service<State extends ServiceState = DefaultServiceState, ComputedState extends ServiceState = {}> extends MagicObject {
678
+ protected _namespace: string;
822
679
  private _booted;
823
- private _computedStateKeys;
824
- private _store?;
680
+ private _state;
681
+ private _computedState;
825
682
  constructor();
826
683
  get booted(): PromisedValue<void>;
827
- launch(): Promise<void>;
828
- hasState<P extends keyof State>(property: P): boolean;
829
- getState(): State;
830
- getState<P extends keyof State>(property: P): State[P];
831
- setState<P extends keyof State>(property: P, value: State[P]): void;
832
- setState(state: Partial<State>): void;
684
+ launch(namespace?: string): Promise<void>;
833
685
  protected __get(property: string): unknown;
834
686
  protected __set(property: string, value: unknown): void;
835
- protected onStateUpdated(state: Partial<State>): void;
836
- protected usesStore(): boolean;
837
- protected getName(): string | null;
687
+ protected hasState<P extends keyof State>(property: P): boolean;
688
+ protected hasComputedState<P extends keyof State>(property: P): boolean;
689
+ protected getState(): State;
690
+ protected getState<P extends keyof State>(property: P): State[P];
691
+ protected getComputedState<P extends keyof ComputedState>(property: P): ComputedState[P];
692
+ protected setState(state: Partial<State>): void;
838
693
  protected getInitialState(): State;
839
694
  protected getComputedStateDefinition(): ComputedStateDefinition<State, ComputedState>;
840
- protected serializePersistedState(state: Partial<State>): Partial<State>;
841
695
  protected boot(): Promise<void>;
842
- protected restorePersistedState(): void;
843
696
  }
844
697
 
845
698
  export declare type ServiceConstructor<T extends Service = Service> = Constructor<T> & typeof Service;
@@ -848,14 +701,10 @@ export declare interface Services extends DefaultServices {
848
701
  }
849
702
 
850
703
  declare const services: {
851
- $errors: Facade<ErrorsService, Constructor<ErrorsService>>;
852
- };
853
-
854
- declare const services_2: {
855
704
  $lang: Facade<LangService, Constructor<LangService>>;
856
705
  };
857
706
 
858
- declare const services_3: {
707
+ declare const services_2: {
859
708
  $ui: Facade<UIService, Constructor<UIService>>;
860
709
  };
861
710
 
@@ -881,18 +730,15 @@ export declare type UIComponent = ObjectValues<typeof UIComponents>;
881
730
  export declare const UIComponents: {
882
731
  readonly AlertModal: "alert-modal";
883
732
  readonly ConfirmModal: "confirm-modal";
884
- readonly LoadingModal: "loading-modal";
885
733
  };
886
734
 
887
- declare class UIService extends _default_3 {
735
+ declare class UIService extends _default_2 {
888
736
  private modalCallbacks;
889
737
  private components;
890
738
  alert(message: string): void;
891
739
  alert(title: string, message: string): void;
892
740
  confirm(message: string): Promise<boolean>;
893
741
  confirm(title: string, message: string): Promise<boolean>;
894
- loading<T>(operation: Promise<T>): Promise<T>;
895
- loading<T>(message: string, operation: Promise<T>): Promise<T>;
896
742
  registerComponent(name: UIComponent, component: Component): void;
897
743
  openModal<TModalComponent extends ModalComponent>(component: TModalComponent, properties?: ModalProperties<TModalComponent>): Promise<Modal<ModalResult<TModalComponent>>>;
898
744
  closeModal(id: string, result?: unknown): Promise<void>;
@@ -901,7 +747,7 @@ declare class UIService extends _default_3 {
901
747
  private watchModalEvents;
902
748
  }
903
749
 
904
- export declare type UIServices = typeof services_3;
750
+ export declare type UIServices = typeof services_2;
905
751
 
906
752
  export declare type UnknownEvent<T> = T extends keyof EventsPayload ? never : T;
907
753
 
@@ -913,12 +759,8 @@ export declare function useEvent<Event extends string>(event: UnknownEvent<Event
913
759
 
914
760
  export declare function useForm<const T extends FormFieldDefinitions>(fields: T): Form<T> & FormData_2<T>;
915
761
 
916
- export declare function useInputAttrs(): [ComputedRef<{}>, ComputedRef<unknown>];
917
-
918
762
  export { }
919
763
 
920
- interface Services extends ErrorsServices {}
921
-
922
764
  declare global {
923
765
  export const __AG_BASE_PATH: string | undefined;
924
766
  export const __AG_ENV: 'production' | 'development' | 'testing';
@@ -932,10 +774,6 @@ declare module '@vue/runtime-core' {
932
774
  }
933
775
  }
934
776
 
935
- interface AerogelOptions {
936
- services?: Record<string, Service>;
937
- }
938
-
939
777
  declare module '@vue/runtime-core' {
940
778
  interface ComponentCustomProperties extends Services {}
941
779
  }