@oneclick.dev/cms-core-modules 0.0.122 → 0.0.124
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/{ContentEditor-CoJjsV-m.js → ContentEditor-BcIUumah.js} +63 -59
- package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-DX1bTQKs.mjs} +27894 -26319
- package/dist/{Detail-Dk8E6_uF.mjs → Detail-B7pe808q.mjs} +15 -14
- package/dist/Detail-BESGmY7z.js +1 -0
- package/dist/{Detail-Cn9Bk0u0.mjs → Detail-B_Q7Qkuz.mjs} +26 -25
- package/dist/Detail-CNiLIEh9.js +1 -0
- package/dist/{Detail-B_scnidb.mjs → Detail-DNxAzeCs.mjs} +35 -34
- package/dist/Detail-t3tOcy3X.js +1 -0
- package/dist/Editor-D4evcdhv.mjs +768 -0
- package/dist/Editor-gLLtuJbY.js +1 -0
- package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-BjKpsqT9.js +1 -0
- package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-D5v5AhLe.mjs +76 -0
- package/dist/Knowledge-B66vxz--.js +1 -0
- package/dist/Knowledge-BnMTTuJ7.mjs +742 -0
- package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-bZidw6RT.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-8I_Z9cD_.mjs} +530 -530
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
- package/dist/Overview-BE4uYPx0.mjs +745 -0
- package/dist/Overview-CQRpFhbJ.mjs +286 -0
- package/dist/Overview-CTs7sX4d.js +1 -0
- package/dist/Overview-Cj89XXKN.js +1 -0
- package/dist/Overview-D_c18mbR.mjs +248 -0
- package/dist/Overview-g4Rcj245.js +1 -0
- package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
- package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
- package/dist/TableDataWidget-7qvC3Egd.js +1 -0
- package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
- package/dist/TableOverviewCard-AFq-puJs.js +1 -0
- package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
- package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
- package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
- package/dist/TableView-6mdrL3zx.js +4 -0
- package/dist/TableView-Du5nOE6R.mjs +8228 -0
- package/dist/Test-CzmOmi53.mjs +447 -0
- package/dist/Test-USDtNFY1.js +1 -0
- package/dist/UserDetail-DpUL3mhk.mjs +1483 -0
- package/dist/UserDetail-KRIfxaYd.js +1 -0
- package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
- package/dist/agenda-r9Gl85GL.js +1 -0
- package/dist/cms-core-modules.css +1 -1
- package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
- package/dist/dateRangePresets-CPWqst_x.js +1 -0
- package/dist/fuse-Deb-Iq39.mjs +1473 -0
- package/dist/fuse-_CGUd5Zq.js +1 -0
- package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
- package/dist/index-CQuN5rKx.js +1 -0
- package/dist/index-CnDGeInm.js +1 -0
- package/dist/index-CqDTc5Ig.mjs +20 -0
- package/dist/index-CyvvAdt4.js +1 -0
- package/dist/index-DIRD7t5_.mjs +20 -0
- package/dist/index-OJuBYR60.mjs +57 -0
- package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +671 -118
- package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
- package/dist/orders-DUa2PVoa.js +1 -0
- package/dist/reports-ChCsd1Gk.mjs +1107 -0
- package/dist/reports-DmJPm8uP.js +158 -0
- package/dist/row-item-C1dUyimV.mjs +204 -0
- package/dist/row-item-Cyo3m3MZ.js +1 -0
- package/dist/server-handlers.cjs.js +1 -1
- package/dist/server-handlers.mjs +1764 -605
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
- package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.d.ts +1 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.d.ts +7 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.d.ts +7 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/resizeHistory.d.ts +9 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +3 -1
- package/dist/src/firebaseAuthManager/components/DeleteUserDialog.vue.d.ts +25 -0
- package/dist/src/firebaseAuthManager/components/ReasonActionDialog.vue.d.ts +23 -0
- package/dist/src/firebaseAuthManager/components/UserStatusBadge.vue.d.ts +5 -0
- package/dist/src/firebaseAuthManager/config.d.ts +151 -0
- package/dist/src/firebaseAuthManager/index.d.ts +163 -0
- package/dist/src/firebaseAuthManager/index.vue.d.ts +14 -0
- package/dist/src/firebaseAuthManager/metadata.d.ts +2 -0
- package/dist/src/firebaseAuthManager/pages/Overview.vue.d.ts +2 -0
- package/dist/src/firebaseAuthManager/pages/UserDetail.vue.d.ts +2 -0
- package/dist/src/firebaseAuthManager/permissions.d.ts +5 -0
- package/dist/src/firebaseAuthManager/routes.d.ts +5 -0
- package/dist/src/firebaseAuthManager/server.d.ts +162 -0
- package/dist/src/firebaseAuthManager/types.d.ts +84 -0
- package/dist/src/formBuilder/components/FormPreviewDialog.vue.d.ts +12 -0
- package/dist/src/formBuilder/components/FormStatusBadge.vue.d.ts +9 -0
- package/dist/src/formBuilder/config.d.ts +31 -0
- package/dist/src/formBuilder/index.d.ts +44 -0
- package/dist/src/formBuilder/index.vue.d.ts +14 -0
- package/dist/src/formBuilder/lib/forms.d.ts +11 -0
- package/dist/src/formBuilder/metadata.d.ts +2 -0
- package/dist/src/formBuilder/pages/Editor.vue.d.ts +2 -0
- package/dist/src/formBuilder/pages/Overview.vue.d.ts +2 -0
- package/dist/src/formBuilder/permissions.d.ts +5 -0
- package/dist/src/formBuilder/routes.d.ts +5 -0
- package/dist/src/formBuilder/server.d.ts +87 -0
- package/dist/src/formBuilder/tools.d.ts +1 -0
- package/dist/src/formBuilder/types.d.ts +46 -0
- package/dist/src/helpbot/composables/useHelpbotApi.d.ts +18 -0
- package/dist/src/helpbot/config.d.ts +17 -0
- package/dist/src/helpbot/index.d.ts +29 -0
- package/dist/src/helpbot/index.vue.d.ts +2 -0
- package/dist/src/helpbot/metadata.d.ts +2 -0
- package/dist/src/helpbot/pages/Knowledge.vue.d.ts +4 -0
- package/dist/src/helpbot/pages/Overview.vue.d.ts +2 -0
- package/dist/src/helpbot/pages/Test.vue.d.ts +4 -0
- package/dist/src/helpbot/permissions.d.ts +5 -0
- package/dist/src/helpbot/routes.d.ts +5 -0
- package/dist/src/helpbot/types.d.ts +42 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/server-handlers.d.ts +2 -0
- package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
- package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
- package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
- package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
- package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
- package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
- package/dist/src/table/index.d.ts +339 -0
- package/dist/src/table/tool-sandbox.d.ts +13 -0
- package/dist/src/table/tool-utils.d.ts +11 -0
- package/dist/src/table/tools.d.ts +333 -1
- package/dist/src/table/types.d.ts +79 -0
- package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
- package/dist/tool-sandbox-DoF1PsyS.js +115 -0
- package/dist/types-9N-DKxNj.mjs +250 -0
- package/dist/types-BMraG1kN.js +1 -0
- package/dist/types-Cem0vPo_.js +1 -0
- package/dist/types-ibC3-e1N.mjs +2630 -0
- package/dist/useHelpbotApi-BIIungOh.js +1 -0
- package/dist/useHelpbotApi-HC9JSiSn.mjs +229 -0
- package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
- package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
- package/dist/vee-validate-zod-BQElPD0m.js +1 -0
- package/dist/vee-validate-zod-CN16K2x9.mjs +1780 -0
- package/package.json +17 -17
- package/src/formBuilder/tools.ts +1 -0
- package/src/table/tools.ts +304 -1
- package/dist/Detail-BCUUNWvp.js +0 -1
- package/dist/Detail-DGg_xXZc.js +0 -1
- package/dist/Detail-Sc2qZdxj.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
- package/dist/TableView-Ctnep-Qu.mjs +0 -6247
- package/dist/TableView-DJqyJL9L.js +0 -4
- package/dist/agenda-B54F8cEr.js +0 -1
- package/dist/orders-BMosTk6r.js +0 -1
- package/dist/reports-BQT_GZzU.js +0 -158
- package/dist/reports-DksZCTOw.mjs +0 -837
- package/dist/vee-validate-zod-SjDT8X35.mjs +0 -4404
- package/dist/vee-validate-zod-VCmLnrtQ.js +0 -1
package/dist/Detail-Sc2qZdxj.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),v=require("./vee-validate-zod-VCmLnrtQ.js"),P=require("lucide-vue-next"),nt=require("@formkit/drag-and-drop"),J=require("@oneclick.dev/cms-kit"),Pt=require("./google-D4N3gb01.js"),Y=require("./index-ijdf0d9-.js"),It={class:"flex flex-col gap-4"},$t={class:"flex flex-col"},Ft={key:0,class:"text-red-500 text-sm mt-1"},Mt={class:"flex flex-col gap-4"},At={class:"flex flex-col"},Rt={key:0,class:"text-red-500 text-sm mt-1"},zt={class:"flex flex-col gap-4"},Ot={class:"flex flex-col"},Lt={key:0,class:"text-red-500 text-sm mt-1"},Ut=e.defineComponent({__name:"Main",setup(t){const o=e.inject("sources"),n=e.inject("defaultSource"),{errors:r}=v.useFormContext(),{value:l}=v.useField("title"),{value:s}=v.useField("description"),{value:i}=v.useField("media");return(d,a)=>{const V=e.resolveComponent("Label"),p=e.resolveComponent("Input"),u=e.resolveComponent("Textarea"),h=e.resolveComponent("MediaPicker"),C=e.resolveComponent("CardContent"),b=e.resolveComponent("Card");return e.openBlock(),e.createBlock(b,null,{default:e.withCtx(()=>[e.createVNode(C,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",It,[e.createElementVNode("div",$t,[e.createVNode(V,{for:"title",class:"text-sm mb-2"},{default:e.withCtx(()=>[...a[3]||(a[3]=[e.createTextVNode("Title",-1)])]),_:1}),e.createVNode(p,{type:"text",id:"title",placeholder:"T-shirt with red heart",modelValue:e.unref(l),"onUpdate:modelValue":a[0]||(a[0]=D=>e.isRef(l)?l.value=D:null)},null,8,["modelValue"]),e.unref(r).title?(e.openBlock(),e.createElementBlock("p",Ft,e.toDisplayString(e.unref(r).title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Mt,[e.createElementVNode("div",At,[e.createVNode(V,{for:"description",class:"text-sm mb-2"},{default:e.withCtx(()=>[...a[4]||(a[4]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(u,{id:"description",placeholder:"Lovely T-shirt featuring a red heart",modelValue:e.unref(s),"onUpdate:modelValue":a[1]||(a[1]=D=>e.isRef(s)?s.value=D:null)},null,8,["modelValue"]),e.unref(r).description?(e.openBlock(),e.createElementBlock("p",Rt,e.toDisplayString(e.unref(r).description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",zt,[e.createElementVNode("div",Ot,[e.createVNode(V,{for:"media",class:"text-sm mb-2"},{default:e.withCtx(()=>[...a[5]||(a[5]=[e.createTextVNode("Media",-1)])]),_:1}),e.createVNode(h,{id:"media",modelValue:e.unref(i),"onUpdate:modelValue":a[2]||(a[2]=D=>e.isRef(i)?i.value=D:null),sources:e.unref(o),defaultSource:e.unref(n)},null,8,["modelValue","sources","defaultSource"]),e.unref(r).media?(e.openBlock(),e.createElementBlock("p",Lt,e.toDisplayString(e.unref(r).media),1)):e.createCommentVNode("",!0)])])]),_:1})]),_:1})}}}),jt={class:"grid grid-cols-2 gap-4 mb-4"},Ht={class:"relative"},Xt={key:0,class:"text-red-500 text-sm mt-1"},Kt={class:"relative"},Yt={class:"absolute right-2 top-1/2 -translate-y-1/2"},qt={key:0,class:"text-red-500 text-sm mt-1"},Gt={class:"flex items-center gap-2 mb-4"},Jt={class:"flex items-center border-t mt-4 pt-4"},Wt={class:"relative"},Zt={key:0,class:"text-red-500 text-sm mt-1"},Qt=e.defineComponent({__name:"Price",setup(t){const{errors:o}=v.useFormContext(),{value:n}=v.useField("price"),{value:r}=v.useField("compareAtPrice"),{value:l}=v.useField("isTaxable"),{value:s}=v.useField("costPerItem");return e.computed(()=>Number(n.value)>0),(i,d)=>{const a=e.resolveComponent("Label"),V=e.resolveComponent("Input"),p=e.resolveComponent("TooltipTrigger"),u=e.resolveComponent("TooltipContent"),h=e.resolveComponent("Tooltip"),C=e.resolveComponent("Checkbox"),b=e.resolveComponent("CardContent"),D=e.resolveComponent("Card");return e.openBlock(),e.createBlock(D,null,{default:e.withCtx(()=>[e.createVNode(b,null,{default:e.withCtx(()=>[d[12]||(d[12]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Pricing",-1)),e.createElementVNode("div",jt,[e.createElementVNode("div",null,[e.createVNode(a,{for:"price",class:"text-sm mb-2"},{default:e.withCtx(()=>[...d[4]||(d[4]=[e.createTextVNode("Price",-1)])]),_:1}),e.createElementVNode("div",Ht,[e.createVNode(V,{type:"number",id:"price",class:"pl-10 no-spinner",modelValue:e.unref(n),"onUpdate:modelValue":d[0]||(d[0]=S=>e.isRef(n)?n.value=S:null)},null,8,["modelValue"]),d[5]||(d[5]=e.createElementVNode("span",{class:"absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none"},"€",-1))]),e.unref(o).price?(e.openBlock(),e.createElementBlock("p",Xt,e.toDisplayString(e.unref(o).price),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",null,[e.createVNode(a,{for:"compare-at-price",class:"text-sm mb-2"},{default:e.withCtx(()=>[...d[6]||(d[6]=[e.createTextVNode("Compare-at price",-1)])]),_:1}),e.createElementVNode("div",Kt,[e.createVNode(V,{type:"number",id:"compare-at-price",class:"pl-10 no-spinner",modelValue:e.unref(r),"onUpdate:modelValue":d[1]||(d[1]=S=>e.isRef(r)?r.value=S:null)},null,8,["modelValue"]),d[8]||(d[8]=e.createElementVNode("span",{class:"absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none"},"€",-1)),e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(p,{"as-child":""},{default:e.withCtx(()=>[e.createElementVNode("button",Yt,[e.createVNode(e.unref(P.Info),{class:"size-4 text-muted-foreground"})])]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[...d[7]||(d[7]=[e.createElementVNode("p",null,[e.createTextVNode(" To display a markdown, enter a value higher than your price."),e.createElementVNode("br"),e.createTextVNode(" Often shown with a strikethrough (e.g. "),e.createElementVNode("span",{class:"font-semibold line-through"},"€25,00"),e.createTextVNode("). ")],-1)])]),_:1})]),_:1})]),e.unref(o).compareAtPrice?(e.openBlock(),e.createElementBlock("p",qt,e.toDisplayString(e.unref(o).compareAtPrice),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Gt,[e.createVNode(C,{id:"charge-tax",modelValue:e.unref(l),"onUpdate:modelValue":d[2]||(d[2]=S=>e.isRef(l)?l.value=S:null)},null,8,["modelValue"]),e.createVNode(a,{for:"charge-tax",class:"text-sm"},{default:e.withCtx(()=>[...d[9]||(d[9]=[e.createTextVNode("Charge tax on this product",-1)])]),_:1})]),e.createElementVNode("div",Jt,[e.createElementVNode("div",null,[e.createVNode(a,{for:"cost-per-item",class:"text-sm mb-2"},{default:e.withCtx(()=>[...d[10]||(d[10]=[e.createTextVNode("Cost per item",-1)])]),_:1}),e.createElementVNode("div",Wt,[e.createVNode(V,{type:"number",id:"cost-per-item",class:"pl-10 no-spinner",modelValue:e.unref(s),"onUpdate:modelValue":d[3]||(d[3]=S=>e.isRef(s)?s.value=S:null)},null,8,["modelValue"]),d[11]||(d[11]=e.createElementVNode("span",{class:"absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none"},"€",-1))]),e.unref(o).costPerItem?(e.openBlock(),e.createElementBlock("p",Zt,e.toDisplayString(e.unref(o).costPerItem),1)):e.createCommentVNode("",!0)])])]),_:1})]),_:1})}}}),eo={class:"grid grid-cols-2 gap-4 mb-4"},to={class:"flex items-center gap-2 mb-4"},oo={key:0,class:"grid grid-cols-2 gap-4 mb-4"},no={class:"flex items-center gap-2"},ro=e.defineComponent({__name:"Inventory",setup(t){const{errors:o}=v.useFormContext(),{value:n}=v.useField("sku"),{value:r}=v.useField("barcode"),{value:l}=v.useField("trackInventory"),{value:s}=v.useField("allowBackorder"),{value:i}=v.useField("stock"),{value:d}=v.useField("options"),{value:a}=v.useField("variants"),V=e.computed(()=>a.value.reduce((p,u)=>u.stock<0?p:p+u.stock,0));return(p,u)=>{const h=e.resolveComponent("Label"),C=e.resolveComponent("Input"),b=e.resolveComponent("Checkbox"),D=e.resolveComponent("TooltipTrigger"),S=e.resolveComponent("TooltipContent"),E=e.resolveComponent("Tooltip"),x=e.resolveComponent("CardContent"),N=e.resolveComponent("Card");return e.openBlock(),e.createBlock(N,null,{default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>[u[12]||(u[12]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Inventory",-1)),e.createElementVNode("div",eo,[e.createElementVNode("div",null,[e.createVNode(h,{for:"sku",class:"text-sm mb-2"},{default:e.withCtx(()=>[...u[6]||(u[6]=[e.createTextVNode("SKU (Stock Keeping Unit)",-1)])]),_:1}),e.createVNode(C,{id:"sku",modelValue:e.unref(n),"onUpdate:modelValue":u[0]||(u[0]=B=>e.isRef(n)?n.value=B:null)},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(h,{for:"barcode",class:"text-sm mb-2"},{default:e.withCtx(()=>[...u[7]||(u[7]=[e.createTextVNode("Barcode (ISBN, UPC, GTIN, etc.)",-1)])]),_:1}),e.createVNode(C,{id:"barcode",modelValue:e.unref(r),"onUpdate:modelValue":u[1]||(u[1]=B=>e.isRef(r)?r.value=B:null)},null,8,["modelValue"])])]),e.createElementVNode("div",to,[e.createVNode(b,{id:"track-quantity",modelValue:e.unref(l),"onUpdate:modelValue":u[2]||(u[2]=B=>e.isRef(l)?l.value=B:null)},null,8,["modelValue"]),e.createVNode(h,{for:"track-quantity",class:"text-sm"},{default:e.withCtx(()=>[...u[8]||(u[8]=[e.createTextVNode("Track quantity",-1)])]),_:1})]),e.unref(l)?(e.openBlock(),e.createElementBlock("div",oo,[e.createElementVNode("div",null,[e.createVNode(h,{for:"stock",class:"text-sm mb-2"},{default:e.withCtx(()=>[...u[9]||(u[9]=[e.createTextVNode("Stock",-1)])]),_:1}),!e.unref(d)||e.unref(d)?.length===0?(e.openBlock(),e.createBlock(C,{key:0,id:"stock",type:"number",modelValue:e.unref(i),"onUpdate:modelValue":u[3]||(u[3]=B=>e.isRef(i)?i.value=B:null),class:"no-spinner"},null,8,["modelValue"])):(e.openBlock(),e.createBlock(E,{key:1},{default:e.withCtx(()=>[e.createVNode(D,{class:"cursor-not-allowed"},{default:e.withCtx(()=>[e.createVNode(C,{modelValue:V.value,"onUpdate:modelValue":u[4]||(u[4]=B=>V.value=B),disabled:"",class:"no-spinner"},null,8,["modelValue"])]),_:1}),e.createVNode(S,null,{default:e.withCtx(()=>[...u[10]||(u[10]=[e.createElementVNode("p",null,"Total stock of all variants",-1)])]),_:1})]),_:1}))])])):e.createCommentVNode("",!0),e.createElementVNode("div",no,[e.createVNode(b,{id:"continue-selling",modelValue:e.unref(s),"onUpdate:modelValue":u[5]||(u[5]=B=>e.isRef(s)?s.value=B:null)},null,8,["modelValue"]),e.createVNode(h,{for:"continue-selling",class:"text-sm"},{default:e.withCtx(()=>[...u[11]||(u[11]=[e.createTextVNode("Continue selling when out of stock",-1)])]),_:1})])]),_:1})]),_:1})}}}),lo={class:"flex items-center gap-2 mb-4"},ao={key:0,class:"grid grid-cols-2 gap-4 mb-4"},so=e.defineComponent({__name:"Shipping",setup(t){const{errors:o}=v.useFormContext(),{value:n}=v.useField("isPhysicalProduct"),{value:r}=v.useField("weight"),{value:l}=v.useField("weightUnit");return(s,i)=>{const d=e.resolveComponent("Checkbox"),a=e.resolveComponent("Label"),V=e.resolveComponent("Input"),p=e.resolveComponent("SelectValue"),u=e.resolveComponent("SelectTrigger"),h=e.resolveComponent("SelectItem"),C=e.resolveComponent("SelectGroup"),b=e.resolveComponent("SelectContent"),D=e.resolveComponent("Select"),S=e.resolveComponent("CardContent"),E=e.resolveComponent("Card");return e.openBlock(),e.createBlock(E,null,{default:e.withCtx(()=>[e.createVNode(S,null,{default:e.withCtx(()=>[i[10]||(i[10]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Shipping",-1)),e.createElementVNode("div",lo,[e.createVNode(d,{id:"is-physical-product",modelValue:e.unref(n),"onUpdate:modelValue":i[0]||(i[0]=x=>e.isRef(n)?n.value=x:null)},null,8,["modelValue"]),e.createVNode(a,{for:"is-physical-product",class:"text-sm"},{default:e.withCtx(()=>[...i[3]||(i[3]=[e.createTextVNode("This is a physical product",-1)])]),_:1})]),e.unref(n)?(e.openBlock(),e.createElementBlock("div",ao,[e.createElementVNode("div",null,[e.createVNode(a,{for:"weight",class:"text-sm mb-2"},{default:e.withCtx(()=>[...i[4]||(i[4]=[e.createTextVNode("Weight",-1)])]),_:1}),e.createVNode(V,{id:"weight",type:"number",modelValue:e.unref(r),"onUpdate:modelValue":i[1]||(i[1]=x=>e.isRef(r)?r.value=x:null),class:"no-spinner"},null,8,["modelValue"])]),e.createElementVNode("div",null,[e.createVNode(a,{for:"weight-unit",class:"text-sm mb-2"},{default:e.withCtx(()=>[...i[5]||(i[5]=[e.createTextVNode("Weight unit",-1)])]),_:1}),e.createVNode(D,{modelValue:e.unref(l),"onUpdate:modelValue":i[2]||(i[2]=x=>e.isRef(l)?l.value=x:null)},{default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(p,{placeholder:"Select unit"})]),_:1}),e.createVNode(b,null,{default:e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>[e.createVNode(h,{value:"lb"},{default:e.withCtx(()=>[...i[6]||(i[6]=[e.createTextVNode(" lb ",-1)])]),_:1}),e.createVNode(h,{value:"oz"},{default:e.withCtx(()=>[...i[7]||(i[7]=[e.createTextVNode(" oz ",-1)])]),_:1}),e.createVNode(h,{value:"kg"},{default:e.withCtx(()=>[...i[8]||(i[8]=[e.createTextVNode(" kg ",-1)])]),_:1}),e.createVNode(h,{value:"g"},{default:e.withCtx(()=>[...i[9]||(i[9]=[e.createTextVNode(" g ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])])])):e.createCommentVNode("",!0)]),_:1})]),_:1})}}});function z(t){t.preventDefault()}function Q(t){t.stopPropagation()}function rt(){const t=new Map;return[function(r,l){t.get(r)&&t.get(r).forEach(s=>{s(l)})},function(r,l){const s=t.get(r)??[];s.push(l),t.set(r,s)}]}var[lt,at]=rt();function io(t,o){return t.source===o.source&&t.flags.split("").sort().join("")===o.flags.split("").sort().join("")}function fe(t,o,n=!0,r=["__key"]){if(t===o)return!0;if(typeof o=="object"&&typeof t=="object"&&t!==null&&o!==null){if(t instanceof Map||t instanceof Set)return!1;if(t instanceof Date&&o instanceof Date)return t.getTime()===o.getTime();if(t instanceof RegExp&&o instanceof RegExp)return io(t,o);if(t===null||o===null)return!1;const l=t,s=o;if(Object.keys(l).length!==Object.keys(s).length)return!1;for(const i of r)if((i in l||i in s)&&l[i]!==s[i])return!1;for(const i in l)if(!(i in s)||l[i]!==s[i]&&!n||n&&!fe(l[i],s[i],n,r))return!1;return!0}return!1}function st(t){return t.split(" ").filter(o=>o)}function ue(t){return{x:t.clientX,y:t.clientY}}Array();var Le=typeof window<"u",R=new WeakMap,q=new WeakMap;function it(){if(!Le)return!1;if("userAgentData"in navigator)return navigator.userAgentData.mobile===!0;const t=navigator.userAgent,o=/android|iphone|ipod/i.test(t),n=/iPad/.test(t)||t.includes("Macintosh")&&navigator.maxTouchPoints>1;return o||n}var co={affectedNodes:[],coordinates:{x:0,y:0},currentTargetValue:void 0,on:at,emit:lt,originalZIndex:void 0,pointerSelection:!1,preventEnter:!1,rootUserSelect:void 0,nodePointerdown:void 0,longPress:!1,scrolling:!1,longPressTimeout:void 0,remapJustFinished:!1,selectedNodes:[],selectedParent:void 0,preventSynthDrag:!1,pointerDown:void 0,lastScrollContainerX:null,lastScrollContainerY:null,rootScrollWidth:void 0,rootScrollHeight:void 0,dragItemRect:void 0,windowScrollX:void 0,windowScrollY:void 0,lastScrollDirectionX:void 0,lastScrollDirectionY:void 0,scrollDebounceTimeout:void 0,frameIdX:void 0,frameIdY:void 0},m=co,Z=!1,Ze,Re;function uo(){m.scrollDebounceTimeout&&clearTimeout(m.scrollDebounceTimeout),m.longPressTimeout&&clearTimeout(m.longPressTimeout),m.frameIdX!==void 0&&cancelAnimationFrame(m.frameIdX),m.frameIdY!==void 0&&cancelAnimationFrame(m.frameIdY),m={...{affectedNodes:[],coordinates:{x:0,y:0},on:at,emit:lt,currentTargetValue:void 0,originalZIndex:void 0,pointerId:void 0,preventEnter:!1,remapJustFinished:!1,selectedNodes:[],nodePointerdown:void 0,rootUserSelect:void 0,preventSynthDrag:!1,scrolling:!1,selectedParent:void 0,pointerSelection:!1,synthScrollDirection:void 0,draggedNodeDisplay:void 0,synthDragScrolling:!1,longPress:!1,pointerDown:void 0,longPressTimeout:void 0,lastScrollContainerX:null,lastScrollContainerY:null,rootScrollWidth:void 0,rootScrollHeight:void 0,dragItemRect:void 0,windowScrollX:void 0,windowScrollY:void 0,lastScrollDirectionX:void 0,lastScrollDirectionY:void 0,scrollDebounceTimeout:void 0,frameIdX:void 0,frameIdY:void 0}}}function dt(t){return Object.assign(m,t),t.initialParent.data.emit("dragStarted",m),Z=!1,m.emit("dragStarted",m),m}function po(){m.activeState&&re(m.activeState.parent,void 0,m),m.selectedState&&ne(m.selectedState.nodes,m.selectedState.parent,m),m.selectedState=m.activeState=void 0}function mo(){if(m.pointerDown&&(m.pointerDown.node.el.draggable=!0),m.pointerDown=void 0,!j(m))return;const t=m.currentParent.data.config;j(m)&&t.handleEnd(m)}function fo(t){t.key==="Escape"&&(m.selectedState&&ne(m.selectedState.nodes,m.selectedState.parent,m),m.activeState&&re(m.activeState.parent,void 0,m),m.selectedState=m.activeState=void 0)}function go(t){if(!O(m))return;Z=!0;const o=m.initialParent.data.config.handleEnd;o(m)}function vo(t){if(!O(m))return;z(t);const{x:o,y:n}=ue(t);O(m)&&_e({x:o,y:n},t,m)}function Vo(t){if(!m.pointerDown||!m.pointerDown.validated)return;const o=m.pointerDown.parent.data.config;if(!(t.pointerType==="mouse"&&!it()))if(j(m))j(m)&&Qe(t,m);else{if(z(t),o.longPress&&!m.longPress){clearTimeout(m.longPressTimeout),m.longPress=!1;return}const n=o.draggedNodes(m.pointerDown);o.dragstartClasses(m.pointerDown.node,n,o,!0);const r=m.pointerDown.node.el.getBoundingClientRect(),l=Yo(m.pointerDown.node,m.pointerDown.parent,t,m,n,r);Qe(t,l,!0)}}function ho({parent:t,getValues:o,setValues:n,config:r={}}){if(!Le)return;Ze||(Ze=Ne(document,{dragover:vo,pointerdown:po,pointerup:mo,keydown:fo,drop:go,pointermove:Vo,pointercancel:U(r.handlePointercancel),touchmove:a=>{O(m)&&a.cancelable&&z(a)},contextmenu:a=>{j(m)&&z(a)}})),bo(t);const[l,s]=rt(),i={getValues:o,setValues:n,config:{dragDropEffect:r.dragDropEffect??"move",dragEffectAllowed:r.dragEffectAllowed??"move",draggedNodes:Po,dragstartClasses:Mo,handleNodeKeydown:Ro,handleDragstart:$o,handleNodeDragover:Go,handleParentDragover:Jo,handleNodeDrop:Oo,handleNodeFocus:Lo,handleNodeBlur:Uo,handlePointercancel:Ho,handleEnd:Xo,handleDragend:jo,handleParentFocus:Co,handleNodePointerup:Ko,handleNodePointerover:zo,handleParentPointerover:Wo,handleParentScroll:Io,handleNodePointerdown:Fo,handleNodeDragenter:Qo,handleNodeDragleave:en,handleParentDrop:yo,multiDrag:r.multiDrag??!1,nativeDrag:r.nativeDrag??!0,performSort:xo,performTransfer:No,root:r.root??document,setupNode:ko,setupNodeRemap:ut,reapplyDragClasses:wo,tearDownNode:So,tearDownNodeRemap:Do,remapFinished:To,threshold:{horizontal:0,vertical:0},...r},enabledNodes:[],abortControllers:{},privateClasses:[],on:s,emit:l};new MutationObserver(Eo).observe(t,{childList:!0}),R.set(t,i),r.plugins?.forEach(a=>{a(t)?.tearDown?.()}),r.plugins?.forEach(a=>{a(t)?.tearDown?.()}),r.plugins?.forEach(a=>{a(t)?.setup?.()}),_o(t,i),ye(t,!0)}function ct(t,o,n,r,l,s){const{x:i,y:d}=ue(n),a=t.el.getBoundingClientRect();return{affectedNodes:[],ascendingDirection:!1,clonedDraggedEls:[],coordinates:{x:i,y:d},draggedNode:{el:t.el,data:t.data},draggedNodes:r,incomingDirection:void 0,initialIndex:t.data.index,initialParent:{el:o.el,data:o.data},currentParent:{el:o.el,data:o.data},longPress:o.data.config.longPress??!1,longPressTimeout:void 0,currentTargetValue:t.data.value,scrollEls:[],startLeft:l||i-(a?.left??0),startTop:s||d-(a?.top??0),targetIndex:t.data.index,transferred:!1}}function xo({parent:t,draggedNodes:o,targetNodes:n}){ye(t.el);const r=o.map(a=>a.data.value),l=ce(t.el,t.data),s=o[0].data.index,i=[...t.data.enabledNodes],d=[...l.filter(a=>!r.some(V=>fe(a,V)))];d.splice(n[0].data.index,0,...r),"draggedNode"in m&&(m.currentTargetValue=n[0].data.value),ze(t.el,t.data,[...d]),t.data.config.onSort&&t.data.config.onSort({parent:{el:t.el,data:t.data},previousValues:[...l],previousNodes:[...i],nodes:[...t.data.enabledNodes],values:[...d],draggedNodes:o,previousPosition:s,position:n[0].data.index,targetNodes:n,state:m})}function re(t,o,n){if(!o){n.activeState=void 0;return}n.activeState={node:o,parent:t}}function ne(t,o,n){const r=o.data.config.selectedClass;if(!n.selectedState)return;const l=Array.from(t);W(t.map(s=>s.el),r);for(const s of l){s.el.setAttribute("aria-selected","false");const i=n.selectedState.nodes.findIndex(d=>d.el===s.el);i!==-1&&n.selectedState.nodes.splice(i,1)}}function xe(t,o,n,r,l=!1){r.pointerSelection=l;for(const s of o)s.el.setAttribute("aria-selected","true"),de([s.el],t.data.config.selectedClass,!0);r.selectedState={nodes:o,parent:t},re(t,n,r)}function Co(t,o){const n=t.targetData.parent.data.enabledNodes[0];n&&(o.selectedState&&o.selectedState.parent.el!==t.targetData.parent.el?re(t.targetData.parent,n,o):o.selectedState||re(t.targetData.parent,n,o))}function No({currentParent:t,targetParent:o,initialParent:n,draggedNodes:r,initialIndex:l,targetNodes:s,state:i}){ye(n.el);const d=r.map(h=>h.data.value),a=[...ce(t.el,t.data).filter(h=>!d.some(C=>fe(h,C)))],V=ce(o.el,o.data),p=n.el===o.el&&o.data.config.sortable===!1;let u;s.length?(p?u=l:o.data.config.sortable===!1?u=o.data.enabledNodes.length:u=s[0].data.index,V.splice(u,0,...d)):(u=p?l:o.data.enabledNodes.length,V.splice(u,0,...d)),ze(t.el,t.data,a),ze(o.el,o.data,V),o.data.config.onTransfer&&o.data.config.onTransfer({sourceParent:t,targetParent:o,initialParent:n,draggedNodes:r,targetIndex:u,state:i,targetNodes:s}),t.data.config.onTransfer&&t.data.config.onTransfer({sourceParent:t,targetParent:o,initialParent:n,draggedNodes:r,targetIndex:u,state:i,targetNodes:s||[]})}function ce(t,o){return[...o.getValues(t)]}function ze(t,o,n){o.setValues(n,t)}function yo(t,o){Q(t.e),Z=!0;const n=o.initialParent.data.config.handleEnd;n(o)}function bo(t){const o=R.get(t);o&&o.abortControllers.mainParent&&o.abortControllers.mainParent.abort()}function O(t){return"draggedNode"in t&&!!t.draggedNode}function j(t){return"synthDragging"in t&&!!t.synthDragging}function _o(t,o){o.abortControllers.mainParent=Ne(t,{dragover:Ce(o.config.handleParentDragover),handleParentPointerover:o.config.handleParentPointerover,scroll:Ce(o.config.handleParentScroll),drop:Ce(o.config.handleParentDrop),hasNestedParent:n=>{const r=R.get(n.target);r&&(r.nestedParent=n.detail.parent)},focus:Ce(o.config.handleParentFocus)}),o.config.externalDragHandle&&o.config.externalDragHandle.el&&o.config.externalDragHandle.callback&&(o.abortControllers.externalDragHandle=Ne(o.config.externalDragHandle.el,{pointerdown:n=>{if(!o.config.externalDragHandle||!o.config.externalDragHandle.callback)return;const r=o.config.externalDragHandle.callback();if(!ke(r)){console.warn("No draggable item found from external drag handle callback");return}const l=q.get(r);if(!l)return;const s=r.parentNode;if(!(s instanceof HTMLElement))return;const i=R.get(s);i&&(m.pointerDown={parent:{el:s,data:i},node:{el:r,data:l},validated:!0},r.draggable=!0)}}))}function ko(t){const o=t.parent.data.config;t.node.data.abortControllers.mainNode=Ne(t.node.el,{keydown:U(o.handleNodeKeydown),dragstart:U(o.handleDragstart),dragover:U(o.handleNodeDragover),dragenter:U(o.handleNodeDragenter),dragleave:U(o.handleNodeDragleave),dragend:U(o.handleDragend),drop:U(o.handleNodeDrop),focus:U(o.handleNodeFocus),blur:U(o.handleNodeBlur),pointerup:U(o.handleNodePointerup),pointercancel:U(o.handlePointercancel),pointerdown:U(o.handleNodePointerdown),handleNodePointerover:o.handleNodePointerover,touchmove:n=>{O(m)&&n.cancelable&&z(n)},contextmenu:n=>{j(m)&&z(n)}}),t.node.el.draggable=!0,o.reapplyDragClasses(t.node.el,t.parent.data),t.parent.data.config.plugins?.forEach(n=>{n(t.parent.el)?.setupNode?.(t)})}function ut(t){q.set(t.node.el,t.node.data),t.parent.data.config.plugins?.forEach(o=>{o(t.parent.el)?.setupNodeRemap?.(t)})}function wo(t,o){if(!O(m))return;const n=j(m)?o.config.synthDropZoneClass:o.config.dropZoneClass;m.draggedNode.el===t&&de([t],n,!0)}function Do(t){t.parent.data.config.plugins?.forEach(o=>{o(t.parent.el)?.tearDownNodeRemap?.(t)})}function So(t){t.parent.data.config.plugins?.forEach(o=>{o(t.parent.el)?.tearDownNode?.(t)}),t.node.el.draggable=!1,t.node.data?.abortControllers?.mainNode&&t.node.data?.abortControllers?.mainNode.abort()}function Eo(t){if(t.length===1&&t[0].addedNodes.length===1&&!(t[0].addedNodes[0]instanceof HTMLElement))return;const o=t[0].target;!(o instanceof HTMLElement)||!R.get(o)||ye(o)}function ye(t,o){const n=R.get(t);if(!n)return;n.privateClasses=Array.from(t.classList);const r=[],l=n.config;for(let d=0;d<t.children.length;d++){const a=t.children[d];if(!ke(a)||a.id==="dnd-dragged-node-clone")continue;const V=q.get(a);(o||!V)&&l.tearDownNode({parent:{el:t,data:n},node:{el:a,data:V}}),!l.disabled&&(!l.draggable||l.draggable&&l.draggable(a))&&r.push(a)}if(r.length!==n.getValues(t).length&&!l.disabled){console.warn("The number of draggable items defined in the parent element does not match the number of values. This may cause unexpected behavior.");return}const s=n.getValues(t),i=[];for(let d=0;d<r.length;d++){const a=r[d],V=q.get(a);if(l.draggableValue&&!l.draggableValue(s[d]))continue;const p=Object.assign(V??{privateClasses:[],abortControllers:{}},{value:s[d],index:d});if(!O(m)&&m.activeState&&fe(m.activeState.node.data.value,p.value)&&re({data:n,el:t},{el:a,data:p},m),O(m)&&fe(m.draggedNode.data.value,p.value)){m.draggedNode.data=p,m.draggedNode.el=a;const u=m.draggedNodes.find(h=>h.data.value===p.value);u&&(u.el=a)}i.push({el:a,data:p}),(o||!V)&&l.setupNode({parent:{el:t,data:n},node:{el:a,data:p}}),ut({parent:{el:t,data:n},node:{el:a,data:p}})}R.set(t,{...n,enabledNodes:i}),l.remapFinished(n),n.config.plugins?.forEach(d=>{d(t)?.remapFinished?.()})}function To(){m.remapJustFinished=!0,"draggedNode"in m&&(m.affectedNodes=[])}function Bo(t){return!!t.targetData.parent.data.config.nativeDrag}function Po(t){if(t.parent.data.config.multiDrag){if(m.selectedState)return[t.node,...m.selectedState?.nodes.filter(o=>o.el!==t.node.el)]}else return[t.node];return[]}function Io(t){O(m)&&(m.emit("scrollStarted",m),!j(m)&&(m.preventEnter=!0,Re&&clearTimeout(Re),Re=setTimeout(()=>{m.preventEnter=!1,m.emit("scrollEnded",m)},100)))}function $o(t,o){const n=t.targetData.parent.data.config;if(!n.nativeDrag||!Bo(t)||!pt({x:t.e.clientX,y:t.e.clientY,node:t.targetData.node,config:n})){z(t.e);return}let r=n.draggedNodes({parent:t.targetData.parent,node:t.targetData.node});r.length===0&&(r=[t.targetData.node]),n.dragstartClasses(t.targetData.node,r,n);const l=Ao(t,r);if(n.onDragstart){const s={parent:t.targetData.parent,values:ce(t.targetData.parent.el,t.targetData.parent.data),draggedNode:l.draggedNode,draggedNodes:l.draggedNodes,position:l.initialIndex,state:l};n.onDragstart(s)}}function Fo(t,o){if(Q(t.e),o.pointerDown={parent:t.targetData.parent,node:t.targetData.node,validated:!1},!pt({x:t.e.clientX,y:t.e.clientY,node:t.targetData.node,config:t.targetData.parent.data.config}))return;o.pointerDown.validated=!0,qo(t,o,t.targetData.node);const n=t.targetData.parent.data;let r=[t.targetData.node];const l=t.e.ctrlKey||t.e.metaKey,s=t.e.shiftKey,i=t.targetData.node;if(l&&n.config.multiDrag){o.selectedState?o.selectedState.nodes.findIndex(a=>a.el===i.el)===-1?r=[...o.selectedState.nodes,i]:r=o.selectedState.nodes.filter(a=>a.el!==i.el):r=[i],xe(t.targetData.parent,r,t.targetData.node,o,!0);return}if(s&&n.config.multiDrag){const d=t.targetData.parent.data.enabledNodes;if(o.selectedState&&o.activeState)if(o.selectedState.parent.el!==t.targetData.parent.el){ne(o.selectedState.nodes,o.selectedState.parent,o),o.selectedState=void 0;for(let a=0;a<=i.data.index;a++)r.push(d[a])}else{const[a,V]=o.activeState.node.data.index<t.targetData.node.data.index?[o.activeState.node.data.index,t.targetData.node.data.index]:[t.targetData.node.data.index,o.activeState.node.data.index];r=d.slice(a,V+1)}else for(let a=0;a<=i.data.index;a++)r.push(d[a]);xe(t.targetData.parent,r,t.targetData.node,o,!0);return}o.selectedState?.nodes?.length?o.selectedState.nodes.findIndex(a=>a.el===t.targetData.node.el)===-1&&(o.selectedState.parent.el!==t.targetData.parent.el?ne(o.selectedState.nodes,t.targetData.parent,o):n.config.multiDrag&&it()?r.push(...o.selectedState.nodes):ne(o.selectedState.nodes,t.targetData.parent,o),xe(t.targetData.parent,r,t.targetData.node,o,!0)):xe(t.targetData.parent,[t.targetData.node],t.targetData.node,o,!0)}function Mo(t,o,n,r=!1){de(o.map(l=>l.el),r?n.synthDraggingClass:n.draggingClass),setTimeout(()=>{W(o.map(l=>l.el),r?n.synthDraggingClass:n.draggingClass),de(o.map(l=>l.el),r?n.synthDragPlaceholderClass:n.dragPlaceholderClass),de(o.map(l=>l.el),r?n.synthDropZoneClass:n.dropZoneClass),W(o.map(l=>l.el),n.selectedClass)})}function Ao(t,o){Q(t.e);const n=dt(ct(t.targetData.node,t.targetData.parent,t.e,o));if(t.e.dataTransfer){const r=t.targetData.parent.data.config;t.e.dataTransfer.dropEffect=r.dragDropEffect,t.e.dataTransfer.effectAllowed=r.dragEffectAllowed;let l;if(t.e.dataTransfer.setData("text/plain",""),r.dragImage)l=r.dragImage(t,o);else{if(!r.multiDrag||o.length===1)return t.targetData.node.el.style.zIndex="9999",t.targetData.node.el.style.boxSizing="border-box",t.e.dataTransfer.setDragImage(t.targetData.node.el,t.e.offsetX,t.e.offsetY),n.originalZIndex=t.targetData.node.el.style.zIndex,n;{const s=document.createElement("div");s.setAttribute("id","dnd-dragged-node-clone"),s.setAttribute("popover","manual");for(const d of o){const a=d.el.cloneNode(!0);a.id=d.el.id+"-clone",a.style.pointerEvents="none",s.appendChild(a)}const{width:i}=o[0].el.getBoundingClientRect();Object.assign(s.style,{display:"flex",flexDirection:"column",width:`${i}px`,position:"absolute",pointerEvents:"none",zIndex:"9999",left:"-9999px",boxSizing:"border-box",background:"transparent",overflow:"hidden"}),t.targetData.parent.el.appendChild(s),s.showPopover(),s.getBoundingClientRect(),l=s,t.e.dataTransfer.setDragImage(l,t.e.offsetX,t.e.offsetY)}}setTimeout(()=>{l?.remove()})}return n}function pt({x:t,y:o,node:n,config:r}){if(r.externalDragHandle)return!1;if(!r.dragHandle)return!0;const l=n.el.querySelectorAll(r.dragHandle);if(!l)return!1;const s=r.root.elementFromPoint(t,o);if(!s)return!1;for(const i of Array.from(l))if(s===i||i.contains(s))return!0;return!1}function Ro(t){}function zo(t){t.detail.targetData.parent.el===t.detail.state.currentParent.el?ft(t.detail,t.detail.state):be(t.detail,t.detail.state)}function Oo(t,o){const n=t.targetData.parent.data.config;n.nativeDrag&&(Q(t.e),Z=!0,n.handleEnd(o))}function Lo(t){t.e.target!==t.e.currentTarget&&m.pointerDown&&(m.pointerDown.node.el.draggable=!1)}function Uo(t){t.e.target!==t.e.currentTarget&&m.pointerDown&&(m.pointerDown.node.el.draggable=!0)}function jo(t,o){const n=t.targetData.parent.data.config;if(n.nativeDrag){if(z(t.e),Q(t.e),Z){Z=!1;return}n.handleEnd(o)}}function Ho(t,o){if(!j(o))return;if(z(t.e),Z){Z=!1;return}const n=R.get(o.initialParent.el)?.config;n?.onDragend&&n.onDragend({parent:o.currentParent,values:ce(o.currentParent.el,o.currentParent.data),draggedNode:o.draggedNode,draggedNodes:o.draggedNodes,state:o}),n?.handleEnd(o)}function Xo(t){t.draggedNode&&(t.draggedNode.el.draggable=!0);const o=t.draggedNodes.map(p=>p.el),n=t.initialParent.data,r=j(t),l=R.get(t.initialParent.el)?.config,s=r?l?.synthDropZoneClass:l?.dropZoneClass,i=n?.config?.longPressClass,d=r?n?.config?.synthDragPlaceholderClass:n?.config?.dragPlaceholderClass,a=t.originalZIndex;j(t)&&(t.clonedDraggedNode&&t.clonedDraggedNode.remove(),t.longPressTimeout&&clearTimeout(t.longPressTimeout)),Oe(t),t.lastScrollDirectionX=void 0,t.lastScrollDirectionY=void 0,t.preventEnter=!1,t.scrollDebounceTimeout&&(clearTimeout(t.scrollDebounceTimeout),t.scrollDebounceTimeout=void 0),a!==void 0&&t.draggedNode&&(t.draggedNode.el.style.zIndex=a),requestAnimationFrame(()=>{W(o,s),W(o,i),W(o,d)}),ne(t.draggedNodes,t.currentParent,t),re(t.currentParent,void 0,t);const V={...t};l?.onDragend?.({parent:V.currentParent,values:ce(V.currentParent.el,V.currentParent.data),draggedNode:V.draggedNode,draggedNodes:V.draggedNodes,state:V}),t.emit("dragEnded",V),uo()}function Ko(t,o){Q(t.e),!o.pointerSelection&&o.selectedState&&ne(o.selectedState.nodes,t.targetData.parent,o);const n=t.targetData.parent.data.config;o.pointerSelection=!1,"longPressTimeout"in o&&o.longPressTimeout&&clearTimeout(o.longPressTimeout),o.longPress=!1,W(t.targetData.parent.data.enabledNodes.map(r=>r.el),n.longPressClass),O(o)&&n.handleEnd(o)}function Yo(t,o,n,r,l,s){const i=o.data.config;let d,a;const V=["display","flexDirection","alignItems","justifyContent","padding","paddingTop","margin","marginTop","marginBottom","marginLeft","marginRight","paddingBottom","paddingLeft","paddingRight","border","borderRadius","background","backgroundColor","boxShadow","font","color","lineHeight","gap","width","height","boxSizing","overflow"],p=(b,D)=>{const S=window.getComputedStyle(b);V.forEach(E=>{D.style[E]=S[E]})},u=(b,D={})=>{Object.assign(b.style,{position:"absolute",zIndex:"9999",pointerEvents:"none",willChange:"transform",boxSizing:"border-box",opacity:"0",overflow:"hidden",width:`${s.width}px`,height:`${s.height}px`,...D})};if(i.synthDragImage)a=i.synthDragImage(t,o,n,l),d=a.dragImage,d.setAttribute("popover","manual"),u(d);else if(!i.multiDrag||l.length===1)d=t.el.cloneNode(!0),p(t.el,d),d.setAttribute("popover","manual"),u(d);else{const b=document.createElement("div");b.setAttribute("popover","manual"),l.forEach(D=>{const S=D.el.cloneNode(!0);p(D.el,S),S.style.pointerEvents="none",S.style.margin="0",b.append(S)}),b.style.display="flex",b.style.flexDirection="column",b.style.padding="0",b.style.margin="0",b.style.position="absolute",b.style.zIndex="9999",b.style.pointerEvents="none",d=b}d.id="dnd-dragged-node-clone",o.el.appendChild(d),d.showPopover();const h={clonedDraggedEls:[],clonedDraggedNode:d,synthDragScrolling:!1,synthDragging:!0,rootScrollWidth:document.scrollingElement?.scrollWidth,rootScrollHeight:document.scrollingElement?.scrollHeight};return dt({...ct(t,o,n,l,a?.offsetX,a?.offsetY),...h})}function qo(t,o,n){const r=t.targetData.parent.data.config;o.longPressTimeout=setTimeout(()=>{o&&(o.longPress=!0,r.longPressClass&&t.e.cancelable&&de([n.el],r.longPressClass),z(t.e))},r.longPressDuration||1e3)}function Oe(t,o=!0,n=!0){o&&(t.frameIdX!==void 0&&(cancelAnimationFrame(t.frameIdX),t.frameIdX=void 0),t.lastScrollDirectionX=void 0),n&&(t.frameIdY!==void 0&&(cancelAnimationFrame(t.frameIdY),t.frameIdY=void 0),t.lastScrollDirectionY=void 0),!t.frameIdX&&!t.frameIdY&&(t.preventEnter=!1)}function mt(t,o=!1){const{x:n,y:r}=t.coordinates,l=t.startLeft??0,s=t.startTop??0,i=window.scrollX??0,d=window.scrollY??0,a=n-l+i,V=r-s+d;t.clonedDraggedNode.style.transform=`translate3d(${a}px, ${V}px, 0px)`,o&&(t.clonedDraggedNode.style.opacity="1",W(t.draggedNodes.map(p=>p.el),t.initialParent.data.config?.longPressClass))}function Qe(t,o,n=!1){const r=ue(t);o.coordinates.x=r.x,o.coordinates.y=r.y,mt(o,n),o.scrollDebounceTimeout&&(clearTimeout(o.scrollDebounceTimeout),o.scrollDebounceTimeout=void 0),o.scrollDebounceTimeout=setTimeout(()=>{j(o)&&_e(o.coordinates,t,o)},16);const l=rn(r);if(!l){document.dispatchEvent(new CustomEvent("handleRootPointerover",{detail:{e:t,state:o}}));return}const s={e:t,targetData:l,state:o};"node"in l?l.node.el.dispatchEvent(new CustomEvent("handleNodePointerover",{detail:s})):l.parent.el.dispatchEvent(new CustomEvent("handleParentPointerover",{detail:s}))}function Go(t,o){if(!t.targetData.parent.data.config.nativeDrag)return;const{x:r,y:l}=ue(t.e);o.coordinates.y=l,o.coordinates.x=r,z(t.e),Q(t.e),O(o)&&_e({x:r,y:l},t.e,o),t.targetData.parent.el===o.currentParent?.el?ft(t,o):be(t,o)}function Jo(t,o){if(!t.targetData.parent.data.config.nativeDrag)return;z(t.e),Q(t.e);const{x:r,y:l}=ue(t.e);O(o)&&_e({x:r,y:l},t.e,o),be(t,o)}function Wo(t){t.detail.targetData.parent.el!==t.detail.state.currentParent.el&&be(t.detail,t.detail.state)}function Zo({currentParent:t,targetParent:o,initialParent:n,draggedNodes:r,state:l}){if(o.el===t.el)return!1;const s=o.data.config;if(r[0].el.contains(o.el)||s.dropZone===!1)return!1;const i=n.data.config;return s.accepts?s.accepts(o,n,t,l):!(!s.group||s.group!==i.group)}function Qo(t,o){z(t.e)}function en(t,o){z(t.e)}function tn(t,o,n,r){if(o.affectedNodes.map(p=>p.data.value).includes(t.targetData.node.data.value))return!1;if(o.remapJustFinished)return o.remapJustFinished=!1,(t.targetData.node.data.value===o.currentTargetValue||o.draggedNodes.map(p=>p.el).includes(t.targetData.node.el))&&(o.currentTargetValue=t.targetData.node.data.value),!1;if(o.preventEnter)return!1;if(o.draggedNodes.map(p=>p.el).includes(t.targetData.node.el))return o.currentTargetValue=void 0,!1;if(t.targetData.node.data.value===o.currentTargetValue||t.targetData.parent.el!==o.currentParent?.el||t.targetData.parent.data.config.sortable===!1||t.targetData.node.el.contains(o.draggedNodes[0].el))return!1;const l=t.targetData.node.el.getBoundingClientRect(),s=o.draggedNode.el.getBoundingClientRect(),i=l.y-s.y,d=l.x-s.x;let a;Math.abs(i)>Math.abs(d)?a=i>0?"above":"below":a=d>0?"left":"right";const V=o.currentParent.data.config.threshold;switch(a){case"left":if(n>l.x+l.width*V.horizontal)return o.incomingDirection="left",!0;break;case"right":if(n<l.x+l.width*(1-V.horizontal))return o.incomingDirection="right",!0;break;case"above":if(r>l.y+l.height*V.vertical)return o.incomingDirection="above",!0;break;case"below":if(r<l.y+l.height*(1-V.vertical))return o.incomingDirection="below",!0;break}return!1}function ft(t,o){const{x:n,y:r}=ue(t.e);if(!tn(t,o,n,r))return;const l=o.draggedNode.data.index>t.targetData.node.data.index?[t.targetData.node.data.index,o.draggedNode.data.index]:[o.draggedNode.data.index,t.targetData.node.data.index];o.targetIndex=t.targetData.node.data.index,o.affectedNodes=t.targetData.parent.data.enabledNodes.filter(s=>l[0]<=s.data.index&&s.data.index<=l[1]&&s.el!==o.draggedNode.el),t.targetData.parent.data.config.performSort({parent:t.targetData.parent,draggedNodes:o.draggedNodes,targetNodes:[t.targetData.node]})}function U(t){function o(n){const r=q.get(n);if(!r)return;const l=R.get(n.parentNode);if(l)return{node:{el:n,data:r},parent:{el:n.parentNode,data:l}}}return n=>{const r=o(n.currentTarget);if(r)return t({e:n,targetData:r},m)}}function be(t,o){z(t.e),Zo({currentParent:o.currentParent,targetParent:t.targetData.parent,initialParent:o.initialParent,draggedNodes:o.draggedNodes,state:o})&&(t.targetData.parent.data.config.performTransfer({currentParent:o.currentParent,targetParent:t.targetData.parent,initialParent:o.initialParent,draggedNodes:o.draggedNodes,initialIndex:o.initialIndex,state:o,targetNodes:"node"in t.targetData?[t.targetData.node]:[]}),o.currentParent=t.targetData.parent,o.transferred=!0)}function Ce(t){function o(n){const r=R.get(n);if(r)return{parent:{el:n,data:r}}}return n=>{const r=o(n.currentTarget);if(r)return t({e:n,targetData:r},m)}}function de(t,o,n=!1){function r(l,s){q.set(l,s)}for(const l of t){const s=q.get(l),i=on(l,o,s,n);i&&r(l,i)}}function on(t,o,n,r=!1){if(!o)return;const l=st(o);if(!l.length)return;if(!n){t.classList.add(...l);return}const s=[];for(const i of l)t.classList.contains(i)?t.classList.contains(i)&&r===!1&&s.push(i):t.classList.add(i);return n.privateClasses=s,n}function W(t,o){if(!o)return;const n=st(o);if(n.length)for(const r of t){if(!ke(r)){r.classList.remove(...n);continue}const l=q.get(r)||R.get(r);if(l)for(const s of n)l.privateClasses.includes(s)||r.classList.remove(s)}}function et(t,o,n,r,l){const i=l.axis==="x",d=t===document.scrollingElement,a=i?"scrollLeft":"scrollTop",V=i?"clientWidth":"clientHeight",p=i?"offsetWidth":"offsetHeight",u=i?"scrollWidth":"scrollHeight",h=i?o.clientX:o.clientY,C=i?r.left:r.top,b=i?n.overflowX:n.overflowY;if(d){const D=t[a],S=t[V],E=D>0,x=D+S<(i?l.state.rootScrollWidth||0:t[u]);return i?{left:E&&h<S*.075,right:x&&h>S*(1-.075)}:{up:E&&h<S*.075,down:x&&h>S*(1-.075)}}if((b==="auto"||b==="scroll")&&t!==document.body&&t!==document.documentElement){const D=t[u],S=t[p],E=t[a],x=E>0,N=E<D-S;return i?{left:x&&h<C+S*.075,right:N&&h>C+S*(1-.075)}:{up:x&&h<C+S*.075,down:N&&h>C+S*(1-.075)}}return i?{left:!1,right:!1}:{up:!1,down:!1}}function nn(t,o,n,r){if(!O(n)||!n.draggedNode)return;n.preventEnter=!0;const l=r.axis==="x",s=r.direction==="positive"?1:-1,i=20,d=l?"lastScrollDirectionX":"lastScrollDirectionY",a=l?"frameIdX":"frameIdY";n[a]!==void 0&&(cancelAnimationFrame(n[a]),n[a]=void 0),n[d]=r.direction;const V=()=>{if(!O(n)||!n.draggedNode){n[a]!==void 0&&(cancelAnimationFrame(n[a]),n[a]=void 0);return}const p=l?"scrollLeft":"scrollTop",u=l?"clientWidth":"clientHeight",h=l?"scrollWidth":"scrollHeight",C=t[p],b=t[u],D=t[h];if(!(s>0?C+b<D:C>0)){n[a]=void 0,n[d]=void 0;return}t[p]+=i*s,j(n)&&mt(n),n[a]=requestAnimationFrame(V)};n[a]=requestAnimationFrame(V)}function tt(t,o,n){const r=t.getBoundingClientRect();return o>=r.left&&o<=r.right&&n>=r.top&&n<=r.bottom}function _e(t,o,n){if(!O(n)||!n.draggedNode)return;Oe(n);const{x:r,y:l}=t;let s=!1;const i=(a,V,p)=>{nn(p,o,n,{axis:a,direction:V}),s=!0},d=a=>{const V=window.getComputedStyle(a),p=a.getBoundingClientRect(),u=et(a,o,V,p,{axis:"x",state:n}),h=et(a,o,V,p,{axis:"y"});(u.left||u.right)&&(n.lastScrollContainerX=a,i("x",u.right?"positive":"negative",a)),(h.up||h.down)&&(n.lastScrollContainerY=a,i("y",h.down?"positive":"negative",a))};if(n.lastScrollContainerX&&tt(n.lastScrollContainerX,r,l)&&d(n.lastScrollContainerX),!s&&n.lastScrollContainerY&&tt(n.lastScrollContainerY,r,l)&&d(n.lastScrollContainerY),!s){let a=document.elementFromPoint(r,l);for(;a&&!(s&&n.lastScrollContainerX&&n.lastScrollContainerY);)a instanceof HTMLElement&&d(a),a=a.parentElement}if(!s){const a=document.scrollingElement;a instanceof HTMLElement&&d(a)}s||Oe(n)}function rn(t){let o=document.elementFromPoint(t.x,t.y);if(!ke(o))return;let n,r=!0;for(;o&&r;){if(q.has(o)||R.has(o)){r=!1,n=R.has(o);break}o=o.parentNode}if(n){const l=R.get(o);return l?{parent:{el:o,data:l}}:void 0}else{const l=q.get(o);if(!l)return;const s=R.get(o.parentNode);return s?{node:{el:o,data:l},parent:{el:o.parentNode,data:s}}:void 0}}function ke(t){return t instanceof HTMLElement&&t.parentNode instanceof HTMLElement}function Ne(t,o){const n=new AbortController;for(const r in o){const l=o[r];t.addEventListener(r,l,{signal:n.signal,passive:!1,capture:r==="focus"||r==="blur"})}return n}function ot(t){if(t instanceof HTMLElement)return t;if(t.value instanceof HTMLElement)return t.value;if("$el"in t&&t.$el instanceof HTMLElement)return t.$el}function ln(t,o){Array.isArray(t)||(t=[t]);for(const n of t){const r=ot(n);if(r)return o(r);const l=e.watch(n,s=>{if(!s)return;const i=ot(s);i?o(i):console.warn("Invalid parent element",s),l()})}}var Ue=new WeakMap;function an(t){const o=Ue.get(t);return o?"value"in o?o.value:o:(console.warn("No values found for parent element"),[])}function sn(t,o){const n=Ue.get(o);n&&"value"in n&&(n.value=t)}function gt(t){Le&&(Array.isArray(t)||(t=[t]),t.forEach(o=>{const{parent:n,values:r,...l}=o;ln(n,dn(l,r))}))}function dn(t,o){return n=>{Ue.set(n,o),ho({parent:n,getValues:an,setValues:sn,config:{...t}})}}const cn={key:0,class:"flex gap-4 p-6 border-b last:border-b-0"},un={class:"option-drag-handle flex-none mt-9.5 cursor-grab"},pn={class:"flex-1"},mn={class:"mb-3"},fn={class:"flex items-center"},gn={key:0,class:"mt-1 text-sm text-red-600"},vn={class:"flex items-center gap-1"},Vn={class:"mb-2"},hn={key:0,class:"option-value-drag-handle absolute -left-7 top-1/2 -translate-y-1/2 flex-none mr-2 cursor-grab"},xn=["onClick"],Cn={class:"flex justify-between"},Nn={class:"flex-1"},yn={class:"text-sm mb-2"},bn={class:"flex flex-wrap gap-2"},_n={key:0,class:"px-2 py-1 border rounded-full bg-muted text-muted-foreground text-sm"},kn=e.defineComponent({__name:"Option",props:{option:{type:Object,required:!0}},emits:["update:option","remove"],setup(t,{expose:o,emit:n}){const r=t,{confirm:l}=J.useConfirmation(),s=n,i=e.computed({get(){return r.option},set(x){s("update:option",x)}}),d=e.computed({get(){return i.value.values},set(x){i.value.values=x}}),a=e.useTemplateRef("valueListRef"),V=e.ref(!1);e.watch(V,async x=>{x||(await e.nextTick(),gt({parent:a?.value,values:d,group:"valueList",dragHandle:".option-value-drag-handle",plugins:[nt.animations()]}))},{immediate:!0});const p=()=>Math.random().toString(36).substring(2,15),u=()=>{i.value.values.push({id:p(),value:""})},h=async()=>{(i.value.name.trim()||i.value.values.filter(x=>x.value.trim()!=="").length>0)&&!await l("Are you sure you want to remove this option?")||s("remove")},C=x=>{i.value.values.splice(x,1)},b=x=>{x.name.trim()?x.nameError=void 0:x.nameError="Option name is required."},D=(x,N)=>{const B=x.target,A=i.value.values;if(x.key==="Backspace"&&B.value===""&&A?.length>2){C(N);return}},S=(x,N)=>{x.target;const B=i.value.values,A=B?.[N];A.touched=!0,B?.every(L=>L.value.trim()!=="")&&u()},E=x=>{const N=i.value,B=N?.values.every((A,I)=>A.value.trim()!==""||I===x);N&&N.values[x].value.trim()===""&&!B&&C(x)};return o({minified:V}),(x,N)=>{const B=e.resolveComponent("Input"),A=e.resolveComponent("Button");return V.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"flex gap-4 p-6 border-b last:border-b-0 hover:bg-accent dark:hover:bg-accent/50 cursor-pointer transition-colors duration-200",onClick:N[5]||(N[5]=I=>V.value=!1)},[e.createElementVNode("div",null,[e.createElementVNode("div",{class:"option-drag-handle flex-none mt-5 cursor-grab",onClick:N[4]||(N[4]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(e.unref(P.GripVertical),{class:"size-4 text-gray-400"})])]),e.createElementVNode("div",Nn,[e.createElementVNode("p",yn,e.toDisplayString(i.value.name),1),e.createElementVNode("div",bn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,I=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:I.id},[I.value?(e.openBlock(),e.createElementBlock("span",_n,e.toDisplayString(I.value),1)):e.createCommentVNode("",!0)],64))),128))])])])):(e.openBlock(),e.createElementBlock("div",cn,[e.createElementVNode("div",null,[e.createElementVNode("div",un,[e.createVNode(e.unref(P.GripVertical),{class:"size-4 text-gray-400"})])]),e.createElementVNode("div",pn,[e.createElementVNode("div",mn,[N[6]||(N[6]=e.createElementVNode("label",{class:"block text-sm mb-2"},"Option name",-1)),e.createElementVNode("div",fn,[e.createVNode(B,{modelValue:i.value.name,"onUpdate:modelValue":N[0]||(N[0]=I=>i.value.name=I),onBlur:N[1]||(N[1]=I=>b(i.value)),"aria-invalid":i.value.nameError?"true":"false",placeholder:"Color",spellcheck:"false"},null,8,["modelValue","aria-invalid"])]),i.value.nameError?(e.openBlock(),e.createElementBlock("p",gn,[e.createElementVNode("span",vn,[e.createVNode(e.unref(P.CircleX),{class:"size-4"}),e.createTextVNode(" "+e.toDisplayString(i.value.nameError),1)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Vn,[N[7]||(N[7]=e.createElementVNode("label",{class:"block text-sm mb-2"},"Option values",-1)),e.createElementVNode("div",{ref_key:"valueListRef",ref:a},[d.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(d.value,(I,L)=>(e.openBlock(),e.createElementBlock("div",{key:I.id,class:"relative flex items-center mb-2"},[I.touched?(e.openBlock(),e.createElementBlock("div",hn,[e.createVNode(e.unref(P.GripVertical),{class:"size-4 text-gray-400"})])):e.createCommentVNode("",!0),e.createVNode(B,{modelValue:I.value,"onUpdate:modelValue":K=>I.value=K,placeholder:"Option value",class:"pr-12",onKeydown:K=>D(K,L),onKeyup:K=>S(K,L),onBlur:K=>E(L),spellcheck:"false"},null,8,["modelValue","onUpdate:modelValue","onKeydown","onKeyup","onBlur"]),d.value.length>2&&I.touched?(e.openBlock(),e.createElementBlock("button",{key:1,onClick:K=>C(L),class:"absolute right-2 top-1/2 -translate-y-1/2 ml-2 p-2 text-muted-foreground/50 hover:text-muted-foreground",type:"button"},[e.createVNode(e.unref(P.Trash2),{class:"size-4"})],8,xn)):e.createCommentVNode("",!0)]))),128)):e.createCommentVNode("",!0)],512)]),e.createElementVNode("div",Cn,[e.createVNode(A,{size:"sm",variant:"outline",onClick:N[2]||(N[2]=I=>h()),class:"text-red-500 hover:text-red-600"},{default:e.withCtx(()=>[...N[8]||(N[8]=[e.createTextVNode("Delete",-1)])]),_:1}),e.createVNode(A,{size:"sm",onClick:N[3]||(N[3]=I=>V.value=!0),disabled:i.value.name.trim()===""},{default:e.withCtx(()=>[...N[9]||(N[9]=[e.createTextVNode("Done",-1)])]),_:1},8,["disabled"])])])]))}}}),wn=e.defineComponent({__name:"Options",props:{modelValue:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(t,{expose:o,emit:n}){const r=t,l=n,s=e.ref([]),i=e.useTemplateRef("optionsListRefElement"),d=e.useTemplateRef("optionRefs"),a=e.computed({get(){return r.modelValue},set(E){l("update:modelValue",E)}}),V=e.ref(!1);e.watch(a,E=>{V.value||(!s.value||s.value.length===0&&E.length>0)&&(V.value=!0,s.value=E?JSON.parse(JSON.stringify(E)):[])},{deep:!0}),e.watch(s,E=>{a.value=E?.map(x=>({...x,values:x.values.filter(N=>N.value.trim()!=="")})),!D.value&&E.length>0&&S()},{deep:!0});const p=()=>Math.random().toString(36).substring(2,15),u=()=>{const x={id:p(),name:"",values:[{id:p(),value:""}],nameError:void 0};s.value.push(x)},h=()=>{d.value?.forEach(E=>{E&&(E.minified=!0)})},C=E=>{const x=s.value.findIndex(N=>N.id===E.id);x!==-1&&(s.value[x]=E)},b=E=>{const x=s.value.findIndex(N=>N.id===E.id);x!==-1&&s.value.splice(x,1)},D=e.ref(!1),S=()=>{try{D.value=!0,gt({parent:i?.value,values:s,group:"optionsList",dragHandle:".option-drag-handle",plugins:[nt.animations()]})}catch(E){console.error(E)}};return e.onMounted(()=>{s.value=r.modelValue?JSON.parse(JSON.stringify(r.modelValue)):[],s.value.length>0&&S()}),o({minifyAll:h}),(E,x)=>{const N=e.resolveComponent("Button");return e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("div",{class:e.normalizeClass(["rounded-lg",s.value.length>0?"border mb-6":""])},[e.createElementVNode("div",{ref_key:"optionsListRefElement",ref:i},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,B=>(e.openBlock(),e.createBlock(kn,{ref_for:!0,ref_key:"optionRefs",ref:d,key:B.id,option:B,"onUpdate:option":x[0]||(x[0]=A=>C(A)),onRemove:A=>b(B)},null,8,["option","onRemove"]))),128))],512),s.value&&s.value.length<3?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(s.value.length>0?"border-t":"")},[s.value.length===0?(e.openBlock(),e.createBlock(N,{key:0,onClick:u,variant:"outline"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.PlusCircle),{class:"size-4"}),x[1]||(x[1]=e.createTextVNode(" Add options like size or color ",-1))]),_:1})):(e.openBlock(),e.createBlock(N,{key:1,onClick:u,variant:"ghost",class:"w-full justify-start pl-2 rounded-t-none"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.PlusCircle),{class:"size-4"}),x[2]||(x[2]=e.createTextVNode(" Add another option ",-1))]),_:1}))],2)):e.createCommentVNode("",!0)],2)])}}}),Dn={class:"grid gap-4 py-2"},Sn=e.defineComponent({__name:"VariantDialog",setup(t,{expose:o}){const n=e.ref(!1),r=e.ref(!1),l=e.ref(null);return o({openVariantDialog:i=>{n.value=!0,l.value=i}}),(i,d)=>{const a=e.resolveComponent("ResponsiveModalTitle"),V=e.resolveComponent("ResponsiveModalHeader"),p=e.resolveComponent("Button"),u=e.resolveComponent("ResponsiveModalClose"),h=e.resolveComponent("ResponsiveModalFooter"),C=e.resolveComponent("ResponsiveModalScrollContent"),b=e.resolveComponent("ResponsiveModal");return e.openBlock(),e.createBlock(b,{open:e.unref(n),"onUpdate:open":d[0]||(d[0]=D=>e.isRef(n)?n.value=D:null)},{default:e.withCtx(()=>[e.createVNode(C,{class:"sm:max-w-xl"},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(a,null,{default:e.withCtx(()=>[...d[1]||(d[1]=[e.createTextVNode("Edit ",-1)])]),_:1})]),_:1}),e.createElementVNode("div",Dn," variant "+e.toDisplayString(e.unref(l)),1),e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(u,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(p,{variant:"secondary",disabled:e.unref(r)},{default:e.withCtx(()=>[e.createVNode(e.unref(P.X),{class:"mr-2 size-4"}),d[2]||(d[2]=e.createTextVNode(" Close ",-1))]),_:1},8,["disabled"])]),_:1}),e.createVNode(p,{class:"gap-2",disabled:e.unref(r)},{default:e.withCtx(()=>[e.unref(r)?(e.openBlock(),e.createBlock(e.unref(P.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),d[3]||(d[3]=e.createTextVNode(" Update variant ",-1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])}}}),En={key:0},Tn={class:"flex items-center justify-between gap-2 mb-2"},Bn={key:0,class:"flex items-center gap-2"},Pn={key:0,class:"mb-4"},In={class:"flex flex-wrap gap-2"},$n=["onClick"],Fn={class:"-mx-6 w-[calc(100%+3rem)]"},Mn={class:"text-muted-foreground text-xs"},An={class:"z-[101] sticky -top-4 py-2 font-normal bg-accent dark:bg-border"},Rn={class:"z-[101] sticky -top-4 py-2 font-normal whitespace-nowrap bg-accent dark:bg-border"},zn={class:"flex items-center gap-2"},On={class:"z-[101] sticky -top-4 py-2 pr-6 font-normal bg-accent dark:bg-border"},Ln={key:1,class:"z-[101] sticky -top-4 py-2 font-normal whitespace-nowrap bg-accent dark:bg-border text-left",colspan:"3"},Un={class:"text-sm"},jn=["onClick"],Hn={class:"w-10 p-2"},Xn={class:"p-2"},Kn={class:"flex items-stretch gap-2"},Yn=["src"],qn={key:2,class:"relative"},Gn=["src"],Jn=["src"],Wn={class:"flex flex-col justify-center px-2"},Zn={class:"text-md mb-0.5 hover:underline select-none"},Qn={class:"flex items-center gap-1 text-xs text-muted-foreground hover:opacity-70 transition-opacity duration-200 cursor-pointer select-none"},er={class:"p-2 w-[30%]"},tr={class:"relative"},or={key:0},nr={key:1},rr={key:0,class:"absolute inset-0 top-1/2 -translate-y-1/2 px-2 truncate text-sm text-muted-foreground w-full text-center pointer-events-none"},lr={class:"p-2 w-[18%]"},ar=["onClick"],sr={class:"w-10"},ir={class:"w-10 p-2 translate-x-10"},dr={class:"p-2 pl-12"},cr={class:"flex items-stretch gap-2"},ur=["src"],pr={class:"flex flex-col justify-center px-2"},mr={class:"p-2 w-[30%]"},fr={class:"p-2 w-[18%] group"},gr={class:"text-center text-sm text-muted-foreground bg-accent dark:bg-border p-3 -mx-6 -mb-6 rounded-b-lg"},vr={key:0},Vr=e.defineComponent({__name:"VariantList",props:{options:{type:Object,required:!0},modelValue:{type:Array,required:!0},hide:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{expose:o,emit:n}){const r=t,l=n,s=e.computed({get(){return r.modelValue},set(f){l("update:modelValue",f)}}),i=e.inject("sources"),d=e.ref(""),a=e.ref(""),V=e.ref(!1),p=e.ref([]),u=e.ref({}),h=e.ref([]),C=e.ref({}),b=e.useTemplateRef("variantDialog"),D=()=>{const f=Object.keys(r.options);if(f.length===0){a.value="";return}(!a.value||!f.includes(a.value))&&(a.value=f[0])},S=()=>{const f=Object.entries(u.value).reduce((c,[g,k])=>(r.options?.[g]?.values?.some(F=>F.id===k)&&(c[g]=k),c),{});JSON.stringify(f)!==JSON.stringify(u.value)&&(u.value=f)};e.watch(()=>r.options,()=>{D(),S()},{immediate:!0,deep:!0}),e.watch(C,f=>{E()},{deep:!0}),e.watch(()=>r.hide,f=>{f||(D(),E())});function E(){if(!C.value){s.value=[];return}let f=[];Object.keys(C.value)?.forEach(c=>{f.push({combinedOptions:c,name:B(c),disabled:!1,price:C.value[c].price,stock:C.value[c].stock,image:C.value[c].image,options:A(c)})}),s.value=f.filter(c=>c.options?.length===Object.keys(r.options).length&&c.options?.every(g=>Object.entries(r.options).find(([,k])=>k.id===g.optionId)))}function x(f){return f.reduce((c,g)=>c.flatMap(k=>g.map($=>[...k,$])),[[]])}function N(f){return f.slice().sort((c,g)=>c.optionId.localeCompare(g.optionId)).map(({optionId:c,valueId:g})=>`${c}:${g}`).join("|")}const B=f=>f.split("|").map(g=>{const[k,$]=g.split(":");return{optionId:k,valueId:$}}).map(g=>r.options?.[g.optionId]?.values?.find(F=>F.id===g.valueId)?.value||"").join(" "),A=f=>f.split("|").map(g=>{const[k,$]=g.split(":");return{optionId:k,valueId:$}}).map(g=>{const k=r.options?.[g.optionId],$=k?.values?.find(F=>F.id===g.valueId);return{optionId:k?.id||g.optionId,option:k?.name||"",valueId:$?.id||g.valueId,value:$?.value||""}}),I=e.computed(()=>{const f=Object.values(r.options).map(g=>g.values.map(k=>({optionId:g.id,optionName:g.name,valueId:k.id,value:k.value})));return x(f).map(g=>{const k=N(g);return C.value[k]||(C.value[k]={price:0,stock:0}),{key:k,options:g,...C.value[k]}})}),L=e.computed(()=>{let f=[...I.value];const c=d.value.trim().toLowerCase();return c&&(f=f.filter(g=>g.options?.some(k=>k.value.toLowerCase().includes(c)))),Object.entries(u.value).forEach(([g,k])=>{k&&(f=f.filter($=>$.options?.some(F=>F.optionId===g&&F.valueId===k)))}),f}),K=e.computed(()=>Object.keys(u.value).length>0),we=(f,c)=>{if(!c){le(f);return}u.value={...u.value,[f]:c}},le=f=>{const c={...u.value};delete c[f],u.value=c},De=f=>f.values?.find(c=>c.id===u.value[f.id])?.value,M=f=>L.value.filter(c=>c.options?.find(g=>g.optionId===a.value)?.valueId===f),ee=e.computed(()=>{const f=r.options?.[a.value]?.values||[];return!d.value.trim()&&!K.value?f:f.filter(c=>M(c.id).length>0)}),ae=e.computed(()=>L.value.map(f=>f.key)),pe=e.computed(()=>h.value.length),se=e.computed(()=>{const f=new Set(h.value);return ae.value.filter(c=>f.has(c)).length}),y=e.computed(()=>ae.value.length===0||se.value===0?!1:se.value===ae.value.length?!0:"indeterminate");e.watch(ee,f=>{const c=new Set(f.map(g=>g.id));p.value=p.value.filter(g=>c.has(g))}),e.watch(I,f=>{const c=new Set(f.map(k=>k.key)),g=h.value.filter(k=>c.has(k));g.length!==h.value.length&&(h.value=g)});const w=(f,c)=>{const g=new Set(f);if(c){h.value=Array.from(new Set([...h.value,...f]));return}h.value=h.value.filter(k=>!g.has(k))},H=(f,c)=>{w([f],c===!0)},te=(f,c)=>{w(M(f).map(g=>g.key),c===!0)},me=f=>{w(ae.value,f===!0)},ge=f=>{const c=M(f).map($=>$.key);if(c.length===0)return!1;const g=new Set(h.value),k=c.filter($=>g.has($)).length;return k===0?!1:k===c.length?!0:"indeterminate"},Se=(f,c)=>{const g=M(c);g&&g.forEach(k=>{C.value[N(k.options)].image=f})},ve=f=>M(f).every(g=>!g.image),Ee=f=>{const c=M(f);return c.filter((k,$)=>k.image&&c.findIndex(F=>F.image===k.image)===$).length===1},Ve=f=>M(f).filter(g=>g.image)[0]?.image,je=f=>M(f).filter(g=>g.image)[1]?.image,vt=f=>{const c=M(f);if(c.length===0)return"0";const g=c.map(k=>k.price);return Math.min(...g)===Math.max(...g)?g[0]?.toString()||"0":`${Math.min(...g)} - ${Math.max(...g)}`},He=f=>M(f).reduce((c,g)=>g.stock>0?c+g.stock:c,0),Vt=f=>M(f).reduce((c,g)=>g.stock<0?c+g.stock:c,0),ht=()=>{let f=0;return ee.value?.forEach(c=>{f+=He(c.id)}),f},Xe=()=>{let f=0;return ee.value?.forEach(c=>{f+=Vt(c.id)}),f},he=e.ref(null),oe=e.ref(""),xt=async(f,c)=>{f.preventDefault();const g=L?.value?.filter(F=>F.options?.find(Te=>Te.optionId===a.value)?.valueId===c.id).map(F=>F.price),k=g.length===0?!0:g.every(F=>F===g[0]);he.value=c.id,oe.value=k?g[0].toString():"",await e.nextTick();const $=document.getElementById(`variant-price-${c.id}`);$?.focus(),$?.select()},Ct=f=>{Ke(f),he.value=null,oe.value=""},Ke=f=>{if(oe.value.trim()&&Number(oe.value.trim().replace(",","."))>0){const c=Number(oe.value.trim().replace(",","."));L?.value?.filter(g=>g.options?.find(k=>k.optionId===a.value)?.valueId===f).forEach(g=>{C.value[N(g.options)].price=c})}},Nt=f=>{C.value=f.reduce((c,g)=>(c[g.combinedOptions]={price:g.price,stock:g.stock,image:g.image},c),{})};return e.onMounted(()=>{D()}),o({setVariantMap:Nt,refreshVariants:E}),(f,c)=>{const g=e.resolveComponent("SelectValue"),k=e.resolveComponent("SelectTrigger"),$=e.resolveComponent("SelectItem"),F=e.resolveComponent("SelectContent"),Te=e.resolveComponent("Select"),G=e.resolveComponent("Button"),Ye=e.resolveComponent("Input"),yt=e.resolveComponent("PopoverTrigger"),bt=e.resolveComponent("RadioGroupItem"),_t=e.resolveComponent("Label"),kt=e.resolveComponent("RadioGroup"),wt=e.resolveComponent("PopoverContent"),Dt=e.resolveComponent("Popover"),Be=e.resolveComponent("Checkbox"),Pe=e.resolveComponent("TooltipTrigger"),Ie=e.resolveComponent("TooltipContent"),$e=e.resolveComponent("Tooltip"),qe=e.resolveComponent("DropdownMenuTrigger"),ie=e.resolveComponent("DropdownMenuItem"),Ge=e.resolveComponent("DropdownMenuContent"),Je=e.resolveComponent("DropdownMenu"),St=e.resolveComponent("DropdownMenuGroup"),Et=e.resolveComponent("DropdownMenuSeparator"),We=e.resolveComponent("MediaPickerDialog"),Fe=e.resolveComponent("NumberFieldInput"),Me=e.resolveComponent("NumberFieldContent"),Ae=e.resolveComponent("NumberField"),Tt=e.resolveComponent("NumberFieldDecrement"),Bt=e.resolveComponent("NumberFieldIncrement");return e.openBlock(),e.createElementBlock(e.Fragment,null,[t.hide?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",En,[e.createElementVNode("div",Tn,[Object.keys(t.options).length>1?(e.openBlock(),e.createElementBlock("div",Bn,[c[13]||(c[13]=e.createElementVNode("p",null,"Group by",-1)),e.createVNode(Te,{modelValue:a.value,"onUpdate:modelValue":c[0]||(c[0]=_=>a.value=_)},{default:e.withCtx(()=>[e.createVNode(k,{size:"sm"},{default:e.withCtx(()=>[e.createVNode(g,{placeholder:"Option"})]),_:1}),e.createVNode(F,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,_=>(e.openBlock(),e.createBlock($,{key:_.id,value:_.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),V.value?(e.openBlock(),e.createBlock(G,{key:2,variant:"outline",onClick:c[2]||(c[2]=_=>V.value=!1),size:"sm",class:"ml-auto"},{default:e.withCtx(()=>[...c[14]||(c[14]=[e.createTextVNode(" Cancel ",-1)])]),_:1})):(e.openBlock(),e.createBlock(G,{key:1,variant:"outline",onClick:c[1]||(c[1]=_=>V.value=!0),size:"sm",class:"ml-auto"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Search),{class:"size-4"}),e.createVNode(e.unref(P.ListFilter),{class:"size-4"})]),_:1}))]),V.value?(e.openBlock(),e.createElementBlock("div",Pn,[e.createElementVNode("div",{class:e.normalizeClass(["relative",{"mb-4":Object.keys(t.options).length>0}])},[e.createVNode(Ye,{placeholder:"Search",class:"pl-10",modelValue:d.value,"onUpdate:modelValue":c[3]||(c[3]=_=>d.value=_)},null,8,["modelValue"]),e.createVNode(e.unref(P.Search),{class:"size-4 absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none"})],2),e.createElementVNode("div",In,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,_=>(e.openBlock(),e.createBlock(Dt,{key:_.id},{default:e.withCtx(()=>[e.createVNode(yt,{asChild:""},{default:e.withCtx(()=>[e.createVNode(G,{variant:"outline",size:"sm",class:"border-dashed"},{default:e.withCtx(()=>[u.value[_.id]?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(_.name)+" is "+e.toDisplayString(De(_))+" ",1),e.createElementVNode("div",{class:"p-2",onClick:e.withModifiers(T=>le(_.id),["stop","prevent"])},[e.createVNode(e.unref(P.X),{class:"size-3"})],8,$n)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(_.name)+" ",1),e.createVNode(e.unref(P.ChevronDown),{class:"size-3"})],64))]),_:2},1024)]),_:2},1024),e.createVNode(wt,null,{default:e.withCtx(()=>[e.createVNode(kt,{"model-value":u.value[_.id]||"",class:"mb-4","onUpdate:modelValue":T=>we(_.id,T)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.values,T=>(e.openBlock(),e.createElementBlock("div",{class:"flex items-center space-x-2",key:T.id},[e.createVNode(bt,{id:T.id,value:T.id,class:"border-ring"},null,8,["id","value"]),e.createVNode(_t,{for:T.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(T.value),1)]),_:2},1032,["for"])]))),128))]),_:2},1032,["model-value","onUpdate:modelValue"]),e.createVNode(G,{variant:"ghost",onClick:T=>le(_.id),size:"sm",class:"ml-auto",disabled:!u.value[_.id]},{default:e.withCtx(()=>[...c[15]||(c[15]=[e.createTextVNode(" Clear ",-1)])]),_:1},8,["onClick","disabled"])]),_:2},1024)]),_:2},1024))),128))])])):e.createCommentVNode("",!0),a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("table",Fn,[e.createElementVNode("thead",Mn,[e.createElementVNode("tr",null,[e.createElementVNode("th",An,[e.createVNode(Be,{class:"border-muted-foreground translate-y-0.5","model-value":y.value,"onUpdate:modelValue":me},null,8,["model-value"])]),pe.value===0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("th",Rn,[e.createElementVNode("div",zn,[c[16]||(c[16]=e.createElementVNode("span",null,"Variant",-1)),c[17]||(c[17]=e.createElementVNode("span",null,"·",-1)),p.value.length>0?(e.openBlock(),e.createElementBlock("button",{key:0,class:"hover:underline cursor-pointer",onClick:c[4]||(c[4]=_=>p.value=[])},"Collapse all")):(e.openBlock(),e.createElementBlock("button",{key:1,class:"hover:underline cursor-pointer",onClick:c[5]||(c[5]=_=>p.value=ee.value.map(T=>T.id))},"Expand all"))])]),c[20]||(c[20]=e.createElementVNode("th",{class:"z-[101] sticky -top-4 py-2 font-normal bg-accent dark:bg-border"},"Price",-1)),e.createElementVNode("th",On,[e.createVNode($e,null,{default:e.withCtx(()=>[e.createVNode(Pe,{class:"underline decoration-dashed underline-offset-4"},{default:e.withCtx(()=>[...c[18]||(c[18]=[e.createTextVNode("Available",-1)])]),_:1}),e.createVNode(Ie,null,{default:e.withCtx(()=>[...c[19]||(c[19]=[e.createElementVNode("p",null,"Inventory at your store that can be sold.",-1)])]),_:1})]),_:1})])],64)):(e.openBlock(),e.createElementBlock("th",Ln,[e.createVNode(Je,null,{default:e.withCtx(()=>[e.createVNode(qe,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(G,{variant:"outline",class:"mr-2",size:"sm"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(pe.value)+" selected ",1)]),_:1})]),_:1}),e.createVNode(Ge,{class:"w-56",align:"start"},{default:e.withCtx(()=>[e.createVNode(ie,null,{default:e.withCtx(()=>[...c[21]||(c[21]=[e.createTextVNode(" Deselect all ",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(Je,null,{default:e.withCtx(()=>[e.createVNode(qe,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(G,{size:"sm"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Ellipsis),{class:"size-3"})]),_:1})]),_:1}),e.createVNode(Ge,{class:"w-56",align:"start"},{default:e.withCtx(()=>[e.createVNode(St,null,{default:e.withCtx(()=>[e.createVNode(ie,null,{default:e.withCtx(()=>[...c[22]||(c[22]=[e.createTextVNode(" Edit price ",-1)])]),_:1}),e.createVNode(ie,null,{default:e.withCtx(()=>[...c[23]||(c[23]=[e.createTextVNode(" Edit SKU ",-1)])]),_:1}),e.createVNode(ie,null,{default:e.withCtx(()=>[...c[24]||(c[24]=[e.createTextVNode(" Edit barcode ",-1)])]),_:1}),e.createVNode(ie,null,{default:e.withCtx(()=>[...c[25]||(c[25]=[e.createTextVNode(" Change image ",-1)])]),_:1})]),_:1}),e.createVNode(Et),e.createVNode(ie,null,{default:e.withCtx(()=>[e.createTextVNode(" Remove variant"+e.toDisplayString(pe.value>1?"s":""),1)]),_:1})]),_:1})]),_:1})]))])]),e.createElementVNode("tbody",Un,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ee.value,_=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:_.id},[e.createElementVNode("tr",{class:"hover:bg-accent/50 cursor-pointer transition-colors duration-200 border-b border-input",onClick:T=>p.value.includes(_.id)?p.value.splice(p.value.indexOf(_.id),1):p.value.push(_.id)},[e.createElementVNode("td",Hn,[e.createVNode(Be,{class:"border-muted-foreground translate-y-0.5","model-value":ge(_.id),"onUpdate:modelValue":T=>te(_.id,T),onClick:c[6]||(c[6]=e.withModifiers(()=>{},["stop"]))},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",Xn,[e.createElementVNode("div",Kn,[e.createElementVNode("div",null,[e.createVNode(We,{sources:e.unref(i),maxFiles:1,"initial-value":ve(_.id)?[]:Ee(_.id)?[Ve(_.id)]:[Ve(_.id),je(_.id)],onSubmit:T=>Se(T,_.id)},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:c[7]||(c[7]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer"},[ve(_.id)?(e.openBlock(),e.createBlock(G,{key:0,variant:"outline",class:"size-15 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.ImagePlus))]),_:1})):Ee(_.id)?(e.openBlock(),e.createElementBlock("img",{key:1,src:Ve(_.id),class:"size-15 rounded-md object-cover",draggable:"false"},null,8,Yn)):(e.openBlock(),e.createElementBlock("div",qn,[e.createElementVNode("img",{src:je(_.id),class:"absolute rotate-[12deg] size-15 rounded-md object-cover",draggable:"false"},null,8,Gn),e.createElementVNode("img",{src:Ve(_.id),class:"relative size-15 rounded-md shadow object-cover",draggable:"false"},null,8,Jn)]))])]),_:2},1032,["sources","initial-value","onSubmit"])]),e.createElementVNode("div",Wn,[e.createElementVNode("p",Zn,e.toDisplayString(_.value),1),e.createElementVNode("button",Qn,[e.createTextVNode(e.toDisplayString(M(_.id).length)+" variants ",1),e.createVNode(e.unref(P.ChevronDown),{class:e.normalizeClass(["size-3 transition-transform duration-200",p.value.includes(_.id)?"rotate-180":""])},null,8,["class"])])])])]),e.createElementVNode("td",er,[e.createElementVNode("div",tr,[e.createVNode($e,null,{default:e.withCtx(()=>[e.createVNode(Pe,{class:"w-full",asChild:""},{default:e.withCtx(()=>[e.createVNode(Ye,{id:`variant-price-${_.id}`,modelValue:oe.value,"onUpdate:modelValue":c[8]||(c[8]=T=>oe.value=T),class:e.normalizeClass(["dark:bg-transparent dark:border-ring/50 text-center",he.value===_.id?"":"text-transparent"]),onClick:c[9]||(c[9]=e.withModifiers(()=>{},["stop"])),onFocus:T=>xt(T,_),onBlur:T=>Ct(_.id),onKeydown:e.withKeys(T=>Ke(_.id),["enter"])},null,8,["id","modelValue","class","onFocus","onBlur","onKeydown"])]),_:2},1024),e.createVNode(Ie,null,{default:e.withCtx(()=>[M(_.id).length===1?(e.openBlock(),e.createElementBlock("p",or,"Applies to 1 variant")):(e.openBlock(),e.createElementBlock("p",nr,"Applies to all "+e.toDisplayString(M(_.id).length)+" variants",1))]),_:2},1024)]),_:2},1024),he.value!==_.id?(e.openBlock(),e.createElementBlock("span",rr,e.toDisplayString(vt(_.id)),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",lr,[e.createVNode($e,null,{default:e.withCtx(()=>[e.createVNode(Pe,{class:"w-full focus-visible:outline-none",onClick:c[10]||(c[10]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createVNode(Ae,null,{default:e.withCtx(()=>[e.createVNode(Me,null,{default:e.withCtx(()=>[e.createVNode(Fe,{value:He(_.id),class:"dark:border-ring/50",disabled:""},null,8,["value"])]),_:2},1024)]),_:2},1024)]),_:2},1024),e.createVNode(Ie,null,{default:e.withCtx(()=>[...c[26]||(c[26]=[e.createElementVNode("p",null,"Update for individual variants only",-1)])]),_:1})]),_:2},1024)])],8,jn),p.value.includes(_.id)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(M(_.id),T=>(e.openBlock(),e.createElementBlock("tr",{key:T.key,class:"hover:bg-accent/50 cursor-pointer transition-colors duration-200 border-b border-input",onClick:X=>e.unref(b).openVariantDialog(T)},[e.createElementVNode("td",sr,[e.createElementVNode("div",ir,[e.createVNode(Be,{class:"border-muted-foreground translate-y-0.5","model-value":h.value.includes(T.key),"onUpdate:modelValue":X=>H(T.key,X),onClick:c[11]||(c[11]=e.withModifiers(()=>{},["stop"]))},null,8,["model-value","onUpdate:modelValue"])])]),e.createElementVNode("td",dr,[e.createElementVNode("div",cr,[e.createElementVNode("div",null,[e.createVNode(We,{sources:e.unref(i),maxFiles:1,"initial-value":C.value[N(T.options)].image?[C.value[N(T.options)].image]:[],onSubmit:X=>C.value[N(T.options)].image=X},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:c[12]||(c[12]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer"},[C.value[N(T.options)].image?(e.openBlock(),e.createElementBlock("img",{key:0,src:C.value[N(T.options)].image,class:"size-10 object-cover rounded-md",draggable:"false"},null,8,ur)):(e.openBlock(),e.createBlock(G,{key:1,variant:"outline",class:"size-10 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(P.ImagePlus))]),_:1}))])]),_:2},1032,["sources","initial-value","onSubmit"])]),e.createElementVNode("div",pr,[e.createElementVNode("p",null,e.toDisplayString(T.options.filter(X=>X.optionId!==a.value).map(X=>X.value).join(" / ")),1)])])]),e.createElementVNode("td",mr,[e.createVNode(Ae,{"format-options":{style:"currency",currency:"EUR",currencyDisplay:"symbol",currencySign:"standard"},modelValue:C.value[N(T.options)].price,"onUpdate:modelValue":X=>C.value[N(T.options)].price=X,min:0},{default:e.withCtx(()=>[e.createVNode(Me,null,{default:e.withCtx(()=>[e.createVNode(Fe,{class:"dark:border-ring/50"})]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("td",fr,[e.createVNode(Ae,{modelValue:C.value[N(T.options)].stock,"onUpdate:modelValue":X=>C.value[N(T.options)].stock=X},{default:e.withCtx(()=>[e.createVNode(Me,null,{default:e.withCtx(()=>[e.createVNode(Tt,{class:"group-hover:opacity-100 opacity-0 transition-opacity duration-200"}),e.createVNode(Fe,{class:"dark:border-ring/50"}),e.createVNode(Bt,{class:"group-hover:opacity-100 opacity-0 transition-opacity duration-200"})]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"])])],8,ar))),128)):e.createCommentVNode("",!0)],64))),128))])]),e.createElementVNode("div",gr,[e.createTextVNode(" Total inventory at Webshop: "+e.toDisplayString(ht())+" ",1),Xe()<0?(e.openBlock(),e.createElementBlock("span",vr,"("+e.toDisplayString(Xe())+")",1)):e.createCommentVNode("",!0),c[27]||(c[27]=e.createTextVNode(" available ",-1))])],64)):e.createCommentVNode("",!0)])),e.createVNode(Sn,{ref_key:"variantDialog",ref:b},null,512)],64)}}}),hr=e.defineComponent({__name:"Variants",setup(t){const{params:o}=J.useModuleRoute(),{value:n}=v.useField("options"),{value:r}=v.useField("variants"),l=e.ref([]),s=e.ref([]),i=e.useTemplateRef("optionsEl"),d=e.useTemplateRef("variantsEl");e.watch(l,async u=>{n.value=u?JSON.parse(JSON.stringify(u)):[],await e.nextTick(),d.value?.refreshVariants()},{deep:!0}),e.watch(s,u=>{r.value=u?JSON.parse(JSON.stringify(u)):[]},{deep:!0});const a=e.ref(!1),V=e.ref(!1);e.watch(n,async u=>{o.value.productId=="new"||!u||Array.isArray(u)&&u.length===0||a.value||(a.value=!0,l.value=JSON.parse(JSON.stringify(u)),await e.nextTick(),u.length>1&&i.value?.minifyAll())},{deep:!0,immediate:!0}),e.watch(r,async u=>{o.value.productId=="new"||!u||Array.isArray(u)&&u.length===0||V.value||(V.value=!0,s.value=JSON.parse(JSON.stringify(u)),await e.nextTick(),d.value?.setVariantMap(u))},{deep:!0,immediate:!0});const p=e.computed(()=>{let u=l.value||[],h={};return!u||!Array.isArray(u)||u.forEach(C=>{!C.name.trim()||C.values?.filter(b=>b.value.trim()!=="")?.length===0||(h[C.id]={id:C.id,name:C.name,values:C.values?.map(b=>({id:b.id,value:b.value}))?.filter(b=>b.value.trim()!=="")||[]})}),h});return(u,h)=>{const C=e.resolveComponent("CardContent"),b=e.resolveComponent("Card");return e.openBlock(),e.createBlock(b,null,{default:e.withCtx(()=>[e.createVNode(C,null,{default:e.withCtx(()=>[h[2]||(h[2]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Variants",-1)),e.createVNode(wn,{modelValue:l.value,"onUpdate:modelValue":h[0]||(h[0]=D=>l.value=D),ref_key:"optionsEl",ref:i},null,8,["modelValue"]),e.createVNode(Vr,{ref_key:"variantsEl",ref:d,options:p.value,modelValue:s.value,"onUpdate:modelValue":h[1]||(h[1]=D=>s.value=D),hide:Object.keys(p.value).length===0},null,8,["options","modelValue","hide"])]),_:1})]),_:1})}}}),xr={class:"bg-white dark:bg-gray-50 border-4 dark:border-gray-600 p-4 rounded-lg mb-4"},Cr={class:"flex items-center gap-2 mb-2"},Nr=["src"],yr={class:"text-[#1a0dab] text-lg"},br={class:"text-[#006621] text-[13px]"},_r={class:"text-[#545454] text-[13px]"},kr={class:"flex flex-col gap-4 mb-4"},wr={class:"flex flex-col"},Dr={key:0,class:"text-red-500 text-sm mt-1"},Sr={class:"flex flex-col gap-4 mb-4"},Er={class:"flex flex-col"},Tr={key:0,class:"text-red-500 text-sm mt-1"},Br={class:"flex flex-col gap-4"},Pr={class:"flex flex-col"},Ir={class:"flex gap-2"},$r={key:0,class:"text-red-500 text-sm mt-1"},Fr={key:1,class:"text-[#545454] text-[13px]"},Mr={key:2,class:"text-orange-500 text-[13px]"},Ar=e.defineComponent({__name:"SEO",setup(t){const{errors:o}=v.useFormContext(),{value:n}=v.useField("title"),{value:r}=v.useField("slug"),{value:l}=v.useField("seo");function s(i){return i?i.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,"-"):""}return e.watch(n,(i,d)=>{(!r.value||s(d)===r.value)&&(r.value=s(i)),(!l.value.title||d===l.value.title)&&(l.value.title=i)}),(i,d)=>{const a=e.resolveComponent("Label"),V=e.resolveComponent("Input"),p=e.resolveComponent("Textarea"),u=e.resolveComponent("ProgressCircle"),h=e.resolveComponent("CardContent"),C=e.resolveComponent("Card");return e.openBlock(),e.createBlock(C,null,{default:e.withCtx(()=>[e.createVNode(h,null,{default:e.withCtx(()=>[d[7]||(d[7]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Search engine listing",-1)),e.createElementVNode("div",xr,[e.createElementVNode("div",Cr,[e.createElementVNode("img",{src:e.unref(Pt.googleImg),alt:"Google",class:"w-16 pointer-events-none",draggable:"false"},null,8,Nr),d[3]||(d[3]=e.createElementVNode("span",{class:"text-[#4186f5] font-medium text-xs"},"Preview",-1))]),e.createElementVNode("p",yr,e.toDisplayString(e.unref(l).title),1),e.createElementVNode("p",br,e.toDisplayString(e.unref(r)),1),e.createElementVNode("p",_r,e.toDisplayString(e.unref(l).description?.slice(0,155))+e.toDisplayString(e.unref(l).description?.length>155?" ...":""),1)]),e.createElementVNode("div",kr,[e.createElementVNode("div",wr,[e.createVNode(a,{for:"slug",class:"text-sm mb-2"},{default:e.withCtx(()=>[...d[4]||(d[4]=[e.createTextVNode("Slug",-1)])]),_:1}),e.createVNode(V,{id:"slug",placeholder:"t-shirt-with-red-heart",modelValue:e.unref(r),"onUpdate:modelValue":d[0]||(d[0]=b=>e.isRef(r)?r.value=b:null)},null,8,["modelValue"]),e.unref(o).slug?(e.openBlock(),e.createElementBlock("p",Dr,e.toDisplayString(e.unref(o).slug),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Sr,[e.createElementVNode("div",Er,[e.createVNode(a,{for:"meta-title",class:"text-sm mb-2"},{default:e.withCtx(()=>[...d[5]||(d[5]=[e.createTextVNode("Title",-1)])]),_:1}),e.createVNode(V,{id:"meta-title",placeholder:"T-shirt with red heart",modelValue:e.unref(l).title,"onUpdate:modelValue":d[1]||(d[1]=b=>e.unref(l).title=b)},null,8,["modelValue"]),e.unref(o).seo?.title?(e.openBlock(),e.createElementBlock("p",Tr,e.toDisplayString(e.unref(o).seo.title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Br,[e.createElementVNode("div",Pr,[e.createVNode(a,{for:"meta-description",class:"text-sm mb-2"},{default:e.withCtx(()=>[...d[6]||(d[6]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(p,{id:"meta-description",placeholder:"Lovely T-shirt featuring a red heart",modelValue:e.unref(l).description,"onUpdate:modelValue":d[2]||(d[2]=b=>e.unref(l).description=b),class:"mb-2 resize-none"},null,8,["modelValue"]),e.createElementVNode("div",Ir,[e.createVNode(u,{progress:(e.unref(l).description?.length??0)/155},null,8,["progress"]),e.unref(o).seo?.description?(e.openBlock(),e.createElementBlock("p",$r,e.toDisplayString(e.unref(o).seo.description),1)):e.unref(l).description?.length<155?(e.openBlock(),e.createElementBlock("p",Fr,e.toDisplayString(e.unref(l).description.length)+" characters",1)):(e.openBlock(),e.createElementBlock("p",Mr,"Please keep it under 155 characters"))])])])]),_:1})]),_:1})}}}),Rr=e.defineComponent({__name:"NewSection",setup(t){return(o,n)=>{const r=e.resolveComponent("Button"),l=e.resolveComponent("CardContent"),s=e.resolveComponent("Card");return e.openBlock(),e.createElementBlock(e.Fragment,null,[n[3]||(n[3]=e.createElementVNode("hr",{class:"my-4"},null,-1)),e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(l,null,{default:e.withCtx(()=>[n[1]||(n[1]=e.createElementVNode("h2",{class:"text-lg font-medium"},"New Section",-1)),n[2]||(n[2]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-4"},"As an admin, you can define new sections within the product detail page.",-1)),e.createVNode(r,null,{default:e.withCtx(()=>[e.createVNode(e.unref(P.Plus),{class:"size-4"}),n[0]||(n[0]=e.createTextVNode(" Create new section ",-1))]),_:1})]),_:1})]),_:1})],64)}}}),zr={class:"flex items-center gap-2"},Or={key:0,class:"size-3 rounded-full bg-green-500"},Lr={key:1,class:"size-3 rounded-full bg-blue-500"},Ur={key:2,class:"size-3 rounded-full bg-gray-300"},jr=e.defineComponent({__name:"Status",setup(t){const{errors:o}=v.useFormContext(),{value:n}=v.useField("status");return(r,l)=>{const s=e.resolveComponent("SelectValue"),i=e.resolveComponent("SelectTrigger"),d=e.resolveComponent("SelectItem"),a=e.resolveComponent("SelectGroup"),V=e.resolveComponent("SelectContent"),p=e.resolveComponent("Select"),u=e.resolveComponent("CardContent"),h=e.resolveComponent("Card");return e.openBlock(),e.createBlock(h,null,{default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[l[4]||(l[4]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Status",-1)),e.createVNode(p,{modelValue:e.unref(n),"onUpdate:modelValue":l[0]||(l[0]=C=>e.isRef(n)?n.value=C:null),class:"w-full"},{default:e.withCtx(()=>[e.createVNode(i,{class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",zr,[e.unref(n)==="published"?(e.openBlock(),e.createElementBlock("span",Or)):e.unref(n)==="draft"?(e.openBlock(),e.createElementBlock("span",Lr)):e.unref(n)==="archived"?(e.openBlock(),e.createElementBlock("span",Ur)):e.createCommentVNode("",!0),e.createVNode(s,{placeholder:"Status"})])]),_:1}),e.createVNode(V,null,{default:e.withCtx(()=>[e.createVNode(a,null,{default:e.withCtx(()=>[e.createVNode(d,{value:"published"},{default:e.withCtx(()=>[...l[1]||(l[1]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-green-500"},null,-1),e.createTextVNode(" Published ",-1)])]),_:1}),e.createVNode(d,{value:"draft"},{default:e.withCtx(()=>[...l[2]||(l[2]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-blue-500"},null,-1),e.createTextVNode(" Draft ",-1)])]),_:1}),e.createVNode(d,{value:"archived"},{default:e.withCtx(()=>[...l[3]||(l[3]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-gray-300"},null,-1),e.createTextVNode(" Archived ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})}}}),Hr={class:"flex items-center gap-2 truncate"},Xr={key:0,class:"text-muted-foreground"},Kr={key:1,class:"truncate"},Yr={key:2,class:"truncate"},qr={key:3,class:"truncate"},Gr={class:"truncate"},Jr=e.defineComponent({__name:"Collections",props:{config:{type:Object,required:!0}},setup(t){const o=t,n=J.useFirebaseIntegration(o.config.project),r=async()=>{if(!o.config.collectionsCollection)return[];const p=o.config.collectionsCollection.split(":");return p.length!==2?[]:(await n.get(p[0]))?.[p[1]]||[]},l=e.ref([]);(async()=>{const p=await r();l.value=p})();const{value:i}=v.useField("collections"),d=e.computed(()=>l.value.flatMap(p=>{const u=p.status||"draft",h=[{id:p.id,title:p.title,status:u,isSubcollection:!1}];return Array.isArray(p.subcollections)&&h.push(...p.subcollections.map(C=>({id:C.id,title:C.title,status:u==="published"&&C.status||u,isSubcollection:!0,parentTitle:p.title}))),h})),a=e.computed(()=>Array.isArray(i.value)?i.value.map(p=>d.value.find(u=>u.id===p)).filter(Boolean):[]),V=p=>p.isSubcollection?`${p.parentTitle} / ${p.title}`:p.title;return(p,u)=>{const h=e.resolveComponent("SelectTrigger"),C=e.resolveComponent("SelectItem"),b=e.resolveComponent("SelectGroup"),D=e.resolveComponent("SelectContent"),S=e.resolveComponent("Select"),E=e.resolveComponent("CardContent"),x=e.resolveComponent("Card");return e.openBlock(),e.createBlock(x,null,{default:e.withCtx(()=>[e.createVNode(E,null,{default:e.withCtx(()=>[u[1]||(u[1]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Collections",-1)),e.createVNode(S,{modelValue:e.unref(i),"onUpdate:modelValue":u[0]||(u[0]=N=>e.isRef(i)?i.value=N:null),class:"w-full",multiple:!0},{default:e.withCtx(()=>[e.createVNode(h,{class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",Hr,[a.value.length===0?(e.openBlock(),e.createElementBlock("span",Xr,"Collections")):a.value.length===1?(e.openBlock(),e.createElementBlock("span",Kr,e.toDisplayString(V(a.value[0])),1)):a.value.length===2?(e.openBlock(),e.createElementBlock("span",Yr,e.toDisplayString(V(a.value[0]))+", "+e.toDisplayString(V(a.value[1])),1)):(e.openBlock(),e.createElementBlock("span",qr,e.toDisplayString(V(a.value[0]))+", "+e.toDisplayString(V(a.value[1]))+" + "+e.toDisplayString(a.value.length-2),1))])]),_:1}),e.createVNode(D,null,{default:e.withCtx(()=>[e.createVNode(b,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,N=>(e.openBlock(),e.createBlock(C,{key:N.id,value:N.id},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["flex min-w-0 items-center gap-2",{"pl-4":N.isSubcollection}])},[N.isSubcollection?(e.openBlock(),e.createBlock(e.unref(P.CornerDownRight),{key:0,class:"size-4 shrink-0 text-muted-foreground"})):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["size-2 rounded-full shrink-0",N.status==="published"?"bg-green-500":"bg-blue-500"])},null,2),e.createElementVNode("span",Gr,e.toDisplayString(N.title),1)],2)]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})}}}),Wr={class:"relative @container"},Zr={class:"flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6"},Qr={class:"flex items-center"},el={class:"text-lg font-semibold mx-2"},tl={key:0,class:"bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"},ol={key:1,class:"bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"},nl={key:2,class:"bg-gray-300 dark:bg-gray-500 text-gray-950 px-2 py-1 rounded-lg text-xs"},rl={class:"flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24"},ll={class:"flex flex-col gap-4 w-full @3xl:w-2/3"},al={class:"flex flex-col gap-4 w-full @3xl:w-1/3"},sl={key:0,class:"fixed bottom-4 left-0 md:left-12 right-0 min-w-xs max-w-5xl w-[calc(100%-2rem)] md:w-[calc(100%-5rem)] xl:w-[calc(100%-2rem)] h-16 border border-white/10 backdrop-blur-sm border-t border-border flex items-center justify-center px-4 mx-auto z-[9999] rounded-xl overflow-hidden shadow bg-[radial-gradient(#ffffff80,transparent)] dark:bg-[radial-gradient(#00000080,transparent)]"},il={class:"w-full max-w-5xl flex items-center justify-end mx-auto"},dl=e.defineComponent({__name:"Detail",props:{config:{type:Object,required:!0}},async setup(t){let o,n;const r=t,{hasPermission:l,hasAnyPermission:s,isAdmin:i}=J.useModulePermissions(),{params:d,navigateTo:a}=J.useModuleRoute(),{confirm:V}=J.useConfirmation(),p=J.useFirebaseIntegration(r.config.project);e.provide("sources",r.config.allowedMediaSources),e.provide("defaultSource",r.config.defaultUploadMediaSource);const u=e.ref(!1),h=e.computed(()=>!d.value.productId||d.value.productId==="new"),C=e.ref(""),b=e.ref([]);b.value=([o,n]=e.withAsyncContext(()=>pe()),o=await o,n(),o);const D=v.toTypedSchema(v.objectType({title:v.stringType().min(1,"Title is required"),description:v.stringType().optional(),media:v.arrayType(v.stringType()).optional(),price:v.coerce.number().positive("Must be positive"),compareAtPrice:v.preprocessType(y=>y===""?void 0:y,v.coerce.number().positive("Must be positive").optional()),isTaxable:v.booleanType().optional(),costPerItem:v.preprocessType(y=>y===""?void 0:y,v.coerce.number().positive("Must be positive").optional()),currency:v.stringType(),stock:v.preprocessType(y=>y===""?void 0:y,v.coerce.number().optional()),trackInventory:v.booleanType().optional(),allowBackorder:v.booleanType().optional(),isPhysicalProduct:v.booleanType().optional(),weight:v.preprocessType(y=>y===""?void 0:y,v.coerce.number().optional()),weightUnit:v.stringType().optional(),slug:v.stringType(),seo:v.objectType({title:v.stringType().optional(),description:v.stringType().optional()}).optional(),createdAt:v.dateType(),updatedAt:v.dateType(),status:v.stringType(),options:v.arrayType(v.objectType({id:v.stringType(),name:v.stringType().min(1),values:v.arrayType(v.objectType({id:v.stringType(),value:v.stringType()}))})).optional(),variants:v.arrayType(v.objectType({combinedOptions:v.stringType().min(1),name:v.stringType().min(1),disabled:v.booleanType().optional(),price:v.coerce.number().positive("Must be positive"),stock:v.preprocessType(y=>y===""?void 0:y,v.coerce.number().optional()),image:v.stringType().optional(),options:v.arrayType(v.objectType({optionId:v.stringType(),option:v.stringType(),valueId:v.stringType(),value:v.stringType()}))})).optional(),tags:v.arrayType(v.stringType()).optional(),collections:v.arrayType(v.stringType()).optional()})),{handleSubmit:S,errors:E,values:x,setValues:N}=v.useForm({validationSchema:D,initialValues:{createdAt:new Date,updatedAt:new Date,status:"draft",options:[],variants:[],media:[],isTaxable:!1,trackInventory:!1,allowBackorder:!1,isPhysicalProduct:!0,weight:0,weightUnit:"kg",tags:[],collections:[],currency:r.config.defaultCurrency||"USD",price:1,stock:0,seo:{title:"",description:""}}});J.useModuleBreadcrumbs(()=>[{text:h.value?"New Product":x.title||"Product"}]);const B=y=>{let w={...y,maxPrice:A(),minPrice:I(),maxCompareAtPrice:K(),minCompareAtPrice:L(),isSingleVariant:!y.variants||y.variants.length===0,variantsTotal:y.variants?.length||1,stock:we(),featuredMedia:y.media?.[0]};return w.isPhysicalProduct?w.type="physical":(w.weight=0,w.weightUnit="kg",w.type="digital"),w},A=()=>!x.variants||x.variants.length===0?x.price:Math.max(...x.variants.map(y=>y.price)),I=()=>!x.variants||x.variants.length===0?x.price:Math.min(...x.variants.map(y=>y.price)),L=()=>x.compareAtPrice,K=()=>x.compareAtPrice,we=()=>!x.variants||x.variants.length===0?x.stock:x.variants.reduce((y,w)=>w.stock<0?y:y+w.stock,0),le=S(async y=>{u.value=!0;let w=B(y);if(h.value){if(await se(w.slug)){Y.toast.error("Product slug already exists");return}w.createdAt=new Date,w.updatedAt=new Date;const H=await p.add(r.config.productCollection,w);a(H.id),Y.toast.success("Product created")}else{if(C.value!==w.slug&&await se(w.slug)){Y.toast.error("Product slug already exists");return}w.updatedAt=new Date,await p.update(r.config.productCollection,d.value.productId,w),a(`${d.value.productId}`),Y.toast.success("Product updated")}u.value=!1}),De=async()=>{const y=await p.get(r.config.productCollection,d.value.productId);if(!y){Y.toast.error("Product not found"),a("");return}y.createdAt=new Date(y.createdAt),y.updatedAt=new Date(y.updatedAt),y.options?.forEach(w=>{w.values.forEach(H=>{H.touched=!0}),w.values.push({id:Math.random().toString(36).substring(2,15),value:""})}),N(y),C.value=y.slug},M=async()=>{try{let y={...x},w=y.slug+"-copy",H=2;for(;await se(w);)w=y.slug+"-copy-"+H,H++;y.id=void 0,y.createdAt=new Date,y.updatedAt=new Date,y.slug=w,y.status="draft",y.title=y.title+" (copy)";const te=await p.add(r.config.productCollection,y);a(te.id),Y.toast.success("Product duplicated")}catch{Y.toast.error("Failed to duplicate product")}},ee=async()=>{try{await p.update(r.config.productCollection,d.value.productId,{status:"archived"}),N({status:"archived"},{force:!1}),Y.toast.success("Product archived")}catch{Y.toast.error("Failed to archive product")}},ae=async()=>{if(await V("Are you sure you want to delete this product?"))try{await p.remove(r.config.productCollection,d.value.productId),a(""),Y.toast.success("Product deleted")}catch{Y.toast.error("Failed to delete product")}};async function pe(){if(!r.config.collectionsCollection)return[];const y=r.config.collectionsCollection.split(":");return y.length!==2?[]:(await p.get(y[0]))?.[y[1]]||[]}async function se(y){return(await p.find(r.config.productCollection,{filters:[{field:"slug",operator:"==",value:y}]})).length>0}return e.onMounted(()=>{h.value||De()}),(y,w)=>{const H=e.resolveComponent("Button"),te=e.resolveComponent("MenubarTrigger"),me=e.resolveComponent("MenubarMenu"),ge=e.resolveComponent("MenubarItem"),Se=e.resolveComponent("MenubarContent"),ve=e.resolveComponent("Menubar");return e.openBlock(),e.createElementBlock("div",Wr,[e.createElementVNode("div",Zr,[e.createElementVNode("div",Qr,[e.createVNode(H,{variant:"ghost",onClick:w[0]||(w[0]=Ee=>e.unref(a)(""))},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Tag),{class:"size-4"})]),_:1}),e.createVNode(e.unref(P.ChevronRight),{class:"size-3"}),e.createElementVNode("h1",el,e.toDisplayString(h.value?"New Product":e.unref(x).title),1),e.unref(x).status==="published"?(e.openBlock(),e.createElementBlock("span",tl,"Published")):e.unref(x).status==="draft"?(e.openBlock(),e.createElementBlock("span",ol,"Draft")):e.unref(x).status==="archived"?(e.openBlock(),e.createElementBlock("span",nl,"Archived")):e.createCommentVNode("",!0)]),h.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(ve,{key:0,class:"rounded-lg shadow-xs"},{default:e.withCtx(()=>[e.unref(l)("create-product")?(e.openBlock(),e.createBlock(me,{key:0},{default:e.withCtx(()=>[e.createVNode(te,{onClick:M},{default:e.withCtx(()=>[...w[1]||(w[1]=[e.createTextVNode("Duplicate",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.createVNode(me,null,{default:e.withCtx(()=>[e.createVNode(te,null,{default:e.withCtx(()=>[...w[2]||(w[2]=[e.createTextVNode("Preview",-1)])]),_:1})]),_:1}),e.unref(s)("edit-product","delete-product")?(e.openBlock(),e.createBlock(me,{key:1},{default:e.withCtx(()=>[e.createVNode(te,null,{default:e.withCtx(()=>[...w[3]||(w[3]=[e.createTextVNode("More actions",-1)])]),_:1}),e.createVNode(Se,null,{default:e.withCtx(()=>[e.unref(l)("edit-product")?(e.openBlock(),e.createBlock(ge,{key:0,onClick:ee},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Archive),{class:"size-4"}),w[4]||(w[4]=e.createTextVNode(" Archive product ",-1))]),_:1})):e.createCommentVNode("",!0),e.unref(l)("delete-product")?(e.openBlock(),e.createBlock(ge,{key:1,variant:"destructive",onClick:ae},{default:e.withCtx(()=>[e.createVNode(e.unref(P.Trash),{class:"size-4"}),w[5]||(w[5]=e.createTextVNode(" Delete product ",-1))]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})):e.createCommentVNode("",!0)]),_:1}))]),e.createElementVNode("div",rl,[e.createElementVNode("div",ll,[e.createVNode(Ut),e.createVNode(Qt),e.createVNode(ro),e.createVNode(so),e.createVNode(hr),e.createVNode(Ar),e.unref(i)()?(e.openBlock(),e.createBlock(Rr,{key:0})):e.createCommentVNode("",!0)]),e.createElementVNode("div",al,[e.createVNode(jr),e.createVNode(Jr,{config:t.config},null,8,["config"])])]),e.unref(s)("create-product","edit-product")?(e.openBlock(),e.createElementBlock("div",sl,[e.createElementVNode("div",il,[h.value&&e.unref(l)("create-product")?(e.openBlock(),e.createBlock(H,{key:0,onClick:e.unref(le),disabled:u.value},{default:e.withCtx(()=>[u.value?(e.openBlock(),e.createBlock(e.unref(P.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(u.value?"Creating":"Create")+" New Product ",1)]),_:1},8,["onClick","disabled"])):e.unref(l)("edit-product")?(e.openBlock(),e.createBlock(H,{key:1,onClick:e.unref(le),disabled:u.value},{default:e.withCtx(()=>[u.value?(e.openBlock(),e.createBlock(e.unref(P.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(u.value?"Saving":"Save")+" Changes ",1)]),_:1},8,["onClick","disabled"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])}}});exports.default=dl;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("vue"),ee=require("lucide-vue-next"),fe=require("@oneclick.dev/cms-kit"),he=require("./utils-Yd6F5mea.js"),pe=require("./DateFormatter-CSAbE3BC.js"),_e=require("./_plugin-vue_export-helper-BHFhmbuH.js"),ye={class:"space-y-3"},xe={class:"grid gap-4 @md/modal:grid-cols-2 @2xl/modal:grid-cols-3 @4xl/modal:grid-cols-4 overflow-hidden p-1"},Ne={key:0,class:"flex items-center gap-3 min-h-9"},be={key:0,class:"italic text-xs opacity-50"},Ve={key:0,class:"italic text-xs opacity-50"},Ce={key:0,class:"italic text-xs opacity-50"},Se={key:0,class:"italic text-xs opacity-50"},we={key:0,class:"text-red-400"},Ee={class:"list-disc pl-4"},Te=e.defineComponent({__name:"CustomerInformation",props:{agendaData:{}},setup($,{expose:P}){const w=[{id:"firstName",fieldName:"First Name",fieldType:"text",required:!0,visible:!0},{id:"lastName",fieldName:"Last Name",fieldType:"text",required:!0,visible:!0},{id:"phone",fieldName:"Phone No",fieldType:"tel",required:!0,visible:!0},{id:"email",fieldName:"Email",fieldType:"email",required:!0,visible:!0},{id:"birthDate",fieldName:"Birth date",fieldType:"date",required:!0,visible:!0}],L=new Set(["firstName","email"]),Z=$,R=e.ref([]),V=e.reactive({}),E=e.computed(()=>{const u=Z.agendaData?.customerInformationFields,g=(Array.isArray(u)&&u.length>0?u:w).filter(N=>N?.id&&(N.visible!==!1||L.has(N.id))).map(N=>({...N,required:L.has(N.id),visible:!0})),x=w.filter(N=>L.has(N.id)&&!g.some(X=>X.id===N.id)).map(N=>({...N,required:!0,visible:!0}));return[...g,...x]}),T=u=>u.fieldName||u.id,I=u=>u.replace(/[^A-Za-z0-9_-]/g,"-"),h=(u,b)=>["new-res-customer-info",u.id,b].filter(Boolean).map(x=>I(x)).join("-"),S=u=>u.fieldType==="email"||u.fieldType==="tel"||u.fieldType==="date"?u.fieldType:"text",M=u=>Array.isArray(u.options)?u.options.filter(Boolean):[],O=u=>u.fieldType==="checkbox"?!1:"",B=(u=!1)=>{const b=new Set(E.value.map(g=>g.id));Object.keys(V).forEach(g=>{b.has(g)||delete V[g]}),E.value.forEach(g=>{const x=O(g);(u||V[g.id]===void 0||typeof V[g.id]!=typeof x)&&(V[g.id]=x)})},q=()=>{const u=E.value.reduce((b,g)=>{const x=V[g.id];return b[g.id]=typeof x=="string"?x.trim():!!x,b},{});return Object.entries(u).forEach(([b,g])=>{V[b]=g}),u},k=(u,b)=>u.fieldType==="checkbox"?b===!0:typeof b=="string"?b.trim().length>0:b!=null,G=()=>{R.value=[],B(!0)},U=()=>{const u=[],b=q();return E.value.forEach(g=>{const x=b[g.id],N=T(g);g.required&&!k(g,x)&&u.push(`Please fill in ${N}.`),g.fieldType==="email"&&k(g,x)&&typeof x=="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(x)===!1&&u.push(`Please fill in a correct ${N}.`)}),R.value=u,u.length===0};return e.watch(E,()=>{B()},{immediate:!0}),P({getCustomerInfo:q,reset:G,validateForm:U}),(u,b)=>{const g=e.resolveComponent("Checkbox"),x=e.resolveComponent("Label"),N=e.resolveComponent("SelectValue"),X=e.resolveComponent("SelectTrigger"),ae=e.resolveComponent("SelectItem"),se=e.resolveComponent("SelectGroup"),te=e.resolveComponent("SelectContent"),K=e.resolveComponent("Select"),oe=e.resolveComponent("RadioGroupItem"),Y=e.resolveComponent("RadioGroup"),ne=e.resolveComponent("Input");return e.openBlock(),e.createElementBlock("div",ye,[b[0]||(b[0]=e.createElementVNode("h2",{class:"text-sm font-medium"},"Customer Information",-1)),e.createElementVNode("div",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,m=>(e.openBlock(),e.createElementBlock("div",{key:m.id,class:e.normalizeClass(["grid gap-2",m.fieldType==="checkbox"?"@md/modal:col-span-2":""])},[m.fieldType==="checkbox"?(e.openBlock(),e.createElementBlock("div",Ne,[e.createVNode(g,{id:h(m),modelValue:V[m.id],"onUpdate:modelValue":D=>V[m.id]=D},null,8,["id","modelValue","onUpdate:modelValue"]),e.createVNode(x,{for:h(m),class:"font-normal cursor-pointer"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(T(m))+" ",1),m.required?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",be,"optional"))]),_:2},1032,["for"])])):m.fieldType==="select"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(x,{for:h(m)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(T(m))+" ",1),m.required?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Ve,"optional"))]),_:2},1032,["for"]),e.createVNode(K,{modelValue:V[m.id],"onUpdate:modelValue":D=>V[m.id]=D},{default:e.withCtx(()=>[e.createVNode(X,{id:h(m),class:"w-full"},{default:e.withCtx(()=>[e.createVNode(N,{placeholder:`Select ${T(m)}`},null,8,["placeholder"])]),_:2},1032,["id"]),e.createVNode(te,null,{default:e.withCtx(()=>[e.createVNode(se,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M(m),D=>(e.openBlock(),e.createBlock(ae,{key:D,value:D},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(D),1)]),_:2},1032,["value"]))),128))]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])],64)):m.fieldType==="radio"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createVNode(x,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(T(m))+" ",1),m.required?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Ce,"optional"))]),_:2},1024),e.createVNode(Y,{modelValue:V[m.id],"onUpdate:modelValue":D=>V[m.id]=D,class:"grid gap-2"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M(m),D=>(e.openBlock(),e.createElementBlock("div",{key:D,class:"flex items-center gap-2"},[e.createVNode(oe,{id:h(m,D),value:D},null,8,["id","value"]),e.createVNode(x,{for:h(m,D),class:"font-normal cursor-pointer"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(D),1)]),_:2},1032,["for"])]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createVNode(x,{for:h(m)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(T(m))+" ",1),m.required?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Se,"optional"))]),_:2},1032,["for"]),e.createVNode(ne,{modelValue:V[m.id],"onUpdate:modelValue":D=>V[m.id]=D,id:h(m),type:S(m),autocomplete:"off"},null,8,["modelValue","onUpdate:modelValue","id","type"])],64))],2))),128))]),R.value.length>0?(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("ul",Ee,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,m=>(e.openBlock(),e.createElementBlock("li",{key:m},e.toDisplayString(m),1))),128))])])):e.createCommentVNode("",!0)])}}});function Be($={}){const P=e.ref(null),w=e.ref(!1),L=e.ref(!1),Z=e.ref(!1),R=e.ref(!1),V=$.dragSpeed??1.1,E=$.dragThreshold??10,T=$.edgeThreshold??10,I=$.ignoreDragSelector??'input, select, textarea, [contenteditable="true"], [data-horizontal-scroll-ignore-drag]';let h=null,S=0,M=0,O=!1,B=null,q=null,k=null;const G=()=>{B===null||typeof window>"u"||(window.clearTimeout(B),B=null)},U=()=>{const r=P.value;if(!r){L.value=!1,Z.value=!1,R.value=!1;return}const l=Math.max(r.scrollWidth-r.clientWidth,0);L.value=l>T,Z.value=L.value&&r.scrollLeft>T,R.value=L.value&&r.scrollLeft<l-T},u=()=>{e.nextTick(()=>{if(typeof window>"u"){U();return}window.requestAnimationFrame(()=>U())})},b=()=>{if(typeof $.scrollStep=="number")return $.scrollStep;const r=P.value;return r?Math.max(Math.floor(r.clientWidth*.72),180):240},g=(r,l="smooth")=>{const _=P.value;if(_){if(_.scrollBy({left:r,behavior:l}),l==="auto"){U();return}u()}},x=()=>{g(-b())},N=()=>{g(b())},X=()=>{const r=P.value;h!==null&&r?.hasPointerCapture?.(h)&&r.releasePointerCapture(h),w.value&&(O=!0,G(),typeof window<"u"&&(B=window.setTimeout(()=>{O=!1,B=null},0))),h=null,w.value=!1,r&&(r.style.userSelect="",r.style.cursor=""),U()},ae=()=>{U()},se=r=>{const l=P.value;if(!l||!L.value||Math.abs(r.deltaY)<=Math.abs(r.deltaX))return;const _=r.deltaY<0,W=r.deltaY>0;_&&!Z.value||W&&!R.value||(r.preventDefault(),l.scrollLeft+=r.deltaY,U())},te=r=>r instanceof Element?!!r.closest(I):!1,K=r=>{const l=P.value;!l||!L.value||r.pointerType!=="touch"&&r.button===0&&(te(r.target)||(h=r.pointerId,S=r.clientX,M=l.scrollLeft,O=!1))},oe=r=>{const l=P.value;if(!l||h!==r.pointerId)return;const _=r.clientX-S;!w.value&&Math.abs(_)<E||(w.value||(w.value=!0,l.style.userSelect="none",l.style.cursor="grabbing",l.setPointerCapture?.(r.pointerId)),r.preventDefault(),l.scrollLeft=M-_*V,U())},Y=r=>{h===r.pointerId&&X()},ne=()=>{h!==null&&X()},m=r=>{O&&(r.preventDefault(),r.stopPropagation(),O=!1)},D=r=>{typeof ResizeObserver<"u"&&(q=new ResizeObserver(()=>U()),q.observe(r)),$.observeMutations!==!1&&typeof MutationObserver<"u"&&(k=new MutationObserver(()=>u()),k.observe(r,{childList:!0,subtree:!0,characterData:!0}))},z=()=>{q?.disconnect(),k?.disconnect(),q=null,k=null},ce=r=>{r.addEventListener("scroll",ae),r.addEventListener("wheel",se,{passive:!1}),r.addEventListener("pointerdown",K),r.addEventListener("pointermove",oe),r.addEventListener("pointerup",Y),r.addEventListener("pointercancel",ne),r.addEventListener("lostpointercapture",ne),r.addEventListener("click",m,!0),D(r),u()},le=r=>{r.removeEventListener("scroll",ae),r.removeEventListener("wheel",se),r.removeEventListener("pointerdown",K),r.removeEventListener("pointermove",oe),r.removeEventListener("pointerup",Y),r.removeEventListener("pointercancel",ne),r.removeEventListener("lostpointercapture",ne),r.removeEventListener("click",m,!0),z()};return e.watch(P,(r,l)=>{l&&le(l),r?ce(r):U()}),e.onMounted(()=>{u()}),e.onBeforeUnmount(()=>{G(),P.value&&le(P.value),O=!1,X()}),{canScrollLeft:e.computed(()=>Z.value),canScrollRight:e.computed(()=>R.value),containerRef:P,isDragging:w,isScrollable:L,refresh:u,scrollNext:N,scrollPrev:x,showLeftShadow:Z,showRightShadow:R}}const De={class:"flex items-start justify-between gap-3"},$e={class:"text-sm font-medium"},Re={key:0,class:"mt-1 text-xs text-muted-foreground"},Ie={class:"grid gap-4 @md/quick-adder:grid-cols-2 @2xl/quick-adder:grid-cols-3 @4xl/quick-adder:grid-cols-4"},Fe={class:"grid gap-2"},Oe={key:0,class:"grid gap-2"},Le={key:1,class:"grid gap-2"},Me={key:2,class:"grid gap-2"},Ae={class:"grid gap-2"},Pe={class:"grid gap-2"},Ue={key:0,class:"rounded-md border border-dashed bg-muted/20 px-4 py-4 text-sm text-muted-foreground"},ze={key:1,class:"relative flex items-center gap-2 overflow-hidden"},qe={class:"relative min-w-0 flex-1 overflow-hidden"},je={key:0,class:"pointer-events-none absolute inset-y-0 left-0 z-10 w-10 md:w-20 bg-gradient-to-r from-background via-background/95 to-transparent"},He={key:1,class:"pointer-events-none absolute inset-y-0 right-0 z-10 w-10 md:w-20 bg-gradient-to-l from-background via-background/95 to-transparent"},Qe={key:0,class:"absolute -top-1 -right-1 flex items-center justify-center bg-primary rounded-full text-background size-4"},Ye={class:"flex flex-wrap gap-2"},We=["onClick"],Ge={key:0},Xe={key:1},Ze={key:2},Ke=e.defineComponent({__name:"QuickReservationAdder",props:{agendaData:{},surface:{default:"card"}},emits:["add"],setup($,{emit:P}){const w=$,L=P,Z=new pe.$fb18d541ea1ad717$export$ad991b66133851cf("en-US",{dateStyle:"long"}),R=pe.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3(pe.$14e0f24ef4ac5c92$export$aa8b41735afcabd2()),V=e.computed(()=>w.surface==="popover"),E=e.ref(""),T=e.ref(void 0),I=e.ref(""),h=e.ref(""),S=e.ref([]),M=e.ref(1),O=e.ref(0),B=e.computed(()=>w.agendaData?.resources?.find(r=>r.id===I.value)),q=r=>{const[l,_]=r.split(":").map(Number);return l*60+_},k=r=>{const l=Math.floor(r/60),_=r%60;return`${l.toString().padStart(2,"0")}:${_.toString().padStart(2,"0")}`},G=()=>{if(!B.value)return[];const r=B.value.interval||60;let l=null,_=null;for(const a of Object.values(B.value.openingHours||{}))for(const n of a){const d=q(n.start),v=q(n.end);(l===null||d<l)&&(l=d),(_===null||v>_)&&(_=v)}if(l===null||_===null)return[];const W=[];for(let a=l;a<_;a+=r)W.push(k(a));return W},U=e.computed(()=>{const r=Number(O.value);return T.value&&I.value&&h.value&&S.value.length>0&&Number.isFinite(r)&&r>=0}),u=e.computed(()=>G()),{canScrollLeft:b,canScrollRight:g,containerRef:x,isDragging:N,isScrollable:X,scrollNext:ae,scrollPrev:se,showLeftShadow:te,showRightShadow:K}=Be(),oe=r=>S.value.includes(r),Y=r=>{if(oe(r)){S.value=S.value.filter(l=>l!==r);return}S.value=[...S.value,r].sort((l,_)=>q(l)-q(_))},ne=(r,l)=>{T.value=r?e.markRaw(r):void 0,E.value=r?`${r}`:"",l()},m=e.ref(""),D=e.ref(""),z=e.ref([]),ce=()=>{L("add",{date:T.value,resourceId:I.value,pricingOptionId:h.value,startTimes:S.value,spots:M.value,paid:Number(O.value)||0}),S.value=[],z.value=[],D.value="",m.value=""},le=()=>{E.value=R.toString(),T.value=R,I.value=w.agendaData?.resources?.[0]?.id||"",h.value=w.agendaData?.pricingOptions?.find(r=>r.isDefault)?.id||w.agendaData?.pricingOptions?.[0]?.id||"",S.value=[],M.value=1,O.value=0,m.value=""};return e.onMounted(()=>{le()}),(r,l)=>{const _=e.resolveComponent("Label"),W=e.resolveComponent("Button"),a=e.resolveComponent("PopoverTrigger"),n=e.resolveComponent("Calendar"),d=e.resolveComponent("PopoverContent"),v=e.resolveComponent("Popover"),C=e.resolveComponent("DynamicSelectOption"),H=e.resolveComponent("DynamicSelect"),j=e.resolveComponent("Input");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(he.classNames)("@container/quick-adder grid gap-4 overflow-hidden bg-background",e.unref(V)?"p-5 sm:p-6":"rounded-md border p-4"))},[e.createElementVNode("div",De,[e.createElementVNode("div",null,[e.createElementVNode("h3",$e,e.toDisplayString(e.unref(V)?"Quick add reservations":"Add reservations"),1),e.unref(V)?(e.openBlock(),e.createElementBlock("p",Re," Choose one date and add multiple timeslots in one pass. ")):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ie,[e.createElementVNode("div",Fe,[e.createVNode(_,null,{default:e.withCtx(()=>[...l[4]||(l[4]=[e.createTextVNode("Date",-1)])]),_:1}),e.createVNode(v,null,{default:e.withCtx(({close:p})=>[e.createVNode(a,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(W,{type:"button",variant:"outline",class:e.normalizeClass(e.unref(he.classNames)("w-full justify-start text-left font-normal",!e.unref(T)&&"text-muted-foreground"))},{default:e.withCtx(()=>[e.createVNode(e.unref(ee.CalendarIcon)),e.createTextVNode(" "+e.toDisplayString(e.unref(T)?e.unref(Z).format(e.unref(T).toDate(e.unref(pe.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())):"Pick a date"),1)]),_:1},8,["class"])]),_:1}),e.createVNode(d,{class:"w-auto p-0",align:"start"},{default:e.withCtx(()=>[e.createVNode(n,{"model-value":e.unref(T),"default-placeholder":e.unref(R),layout:"month-and-year","initial-focus":"","onUpdate:modelValue":re=>ne(re,p),minValue:e.unref(pe.$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3)(e.unref(pe.$14e0f24ef4ac5c92$export$aa8b41735afcabd2)())},null,8,["model-value","default-placeholder","onUpdate:modelValue","minValue"])]),_:2},1024)]),_:1})]),$.agendaData.resources?.length>1?(e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(_,null,{default:e.withCtx(()=>[...l[5]||(l[5]=[e.createTextVNode("Resource",-1)])]),_:1}),e.createVNode(H,{modelValue:e.unref(I),"onUpdate:modelValue":l[0]||(l[0]=p=>e.isRef(I)?I.value=p:null),"wrapper-class":"w-full",class:"w-full",placeholder:"Select resource"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.agendaData.resources||[],p=>(e.openBlock(),e.createBlock(C,{key:p.id,value:p.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),$.agendaData.pricingOptions?.length>1?(e.openBlock(),e.createElementBlock("div",Le,[e.createVNode(_,null,{default:e.withCtx(()=>[...l[6]||(l[6]=[e.createTextVNode("Type",-1)])]),_:1}),e.createVNode(H,{modelValue:e.unref(h),"onUpdate:modelValue":l[1]||(l[1]=p=>e.isRef(h)?h.value=p:null),"wrapper-class":"w-full",class:"w-full",placeholder:"Select type"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.agendaData.pricingOptions||[],p=>(e.openBlock(),e.createBlock(C,{key:p.id,value:p.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p.name)+" ("+e.toDisplayString(p.duration)+"min) ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),$.agendaData?.maxTicketsPerReservation>1?(e.openBlock(),e.createElementBlock("div",Me,[e.createVNode(_,null,{default:e.withCtx(()=>[...l[7]||(l[7]=[e.createTextVNode("Spots/tickets",-1)])]),_:1}),e.createVNode(j,{modelValue:e.unref(M),"onUpdate:modelValue":l[2]||(l[2]=p=>e.isRef(M)?M.value=p:null),modelModifiers:{number:!0},type:"number",min:"1",class:"no-spinner",autocomplete:"off"},null,8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Ae,[e.createVNode(_,null,{default:e.withCtx(()=>[...l[8]||(l[8]=[e.createTextVNode("Paid (per reservation)",-1)])]),_:1}),e.createVNode(j,{modelValue:e.unref(O),"onUpdate:modelValue":l[3]||(l[3]=p=>e.isRef(O)?O.value=p:null),modelModifiers:{number:!0},type:"number",min:"0",step:"1",class:"no-spinner",autocomplete:"off"},null,8,["modelValue"]),l[9]||(l[9]=e.createElementVNode("p",{class:"text-xs text-muted-foreground"}," This amount is copied to every reservation you add. ",-1))])]),e.createElementVNode("div",Pe,[e.createVNode(_,null,{default:e.withCtx(()=>[...l[10]||(l[10]=[e.createTextVNode("Available hours",-1)])]),_:1}),e.unref(u).length===0?(e.openBlock(),e.createElementBlock("div",Ue," No preset hours are available for this resource. You can still add a custom time below. ")):(e.openBlock(),e.createElementBlock("div",ze,[e.unref(b)?(e.openBlock(),e.createBlock(W,{key:0,type:"button",size:"icon",variant:"outline",class:"hidden absolute size-8 shrink-0 rounded-full shadow-sm md:inline-flex z-[11] left-0.5",onClick:e.unref(se)},{default:e.withCtx(()=>[e.createVNode(e.unref(ee.ChevronLeft),{class:"size-4"})]),_:1},8,["onClick"])):e.createCommentVNode("",!0),e.createElementVNode("div",qe,[e.unref(te)?(e.openBlock(),e.createElementBlock("div",je)):e.createCommentVNode("",!0),e.unref(K)?(e.openBlock(),e.createElementBlock("div",He)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"hourScrollContainer",ref:x,class:e.normalizeClass(e.unref(he.classNames)("hour-scroll-track flex w-full min-w-0 gap-2 overflow-x-auto overscroll-contain py-2",e.unref(X)&&!e.unref(N)&&"cursor-grab",e.unref(N)&&"cursor-grabbing select-none"))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(u),p=>(e.openBlock(),e.createBlock(W,{key:p,type:"button",variant:"outline",class:e.normalizeClass(["relative h-12 shrink-0",oe(p)?"border-primary!":""]),onClick:re=>Y(p)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p)+" ",1),oe(p)?(e.openBlock(),e.createElementBlock("div",Qe,[e.createVNode(e.unref(ee.Check),{class:"size-3"})])):e.createCommentVNode("",!0)]),_:2},1032,["class","onClick"]))),128))],2)]),e.unref(g)?(e.openBlock(),e.createBlock(W,{key:1,type:"button",size:"icon",variant:"outline",class:"hidden absolute size-8 shrink-0 rounded-full shadow-sm md:inline-flex z-[11] right-0.5",onClick:e.unref(ae)},{default:e.withCtx(()=>[e.createVNode(e.unref(ee.ChevronRight),{class:"size-4"})]),_:1},8,["onClick"])):e.createCommentVNode("",!0)])),e.createElementVNode("div",Ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(z),p=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"relative"},[e.createVNode(W,{type:"button",variant:"outline",class:"h-12 px-4 py-2"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(p),1)]),_:2},1024),e.createElementVNode("div",{class:"absolute -top-1 -right-1 flex items-center justify-center bg-red-500 rounded-full text-white size-4 cursor-pointer",onClick:re=>{z.value=e.unref(z).filter(J=>J!==p),S.value=e.unref(S).filter(J=>J!==p)}},[e.createVNode(e.unref(ee.X),{class:"size-3"})],8,We)]))),128))])]),e.createElementVNode("div",null,[e.createVNode(W,{disabled:!e.unref(U),onClick:ce},{default:e.withCtx(()=>[e.unref(S).length===0?(e.openBlock(),e.createElementBlock("span",Ge,"Select at least one timeslot")):e.unref(S).length===1?(e.openBlock(),e.createElementBlock("span",Xe,"Add 1 reservation")):(e.openBlock(),e.createElementBlock("span",Ze,"Add "+e.toDisplayString(e.unref(S).length)+" reservations",1))]),_:1},8,["disabled"])])],2)}}}),Je=_e._export_sfc(Ke,[["__scopeId","data-v-30be47b0"]]),et={class:"space-y-3"},tt={class:"flex flex-wrap items-center justify-between gap-3"},ot={class:"text-xs text-muted-foreground"},nt={class:"flex flex-wrap items-center gap-2"},at={key:0,class:"rounded-md border border-dashed bg-muted/20 px-4 py-6 text-sm text-muted-foreground"},rt={key:1,class:"space-y-3"},st={class:"flex items-start gap-2 p-3 md:hidden"},lt=["aria-expanded","onClick"],it={class:"mt-0.5 flex size-10 shrink-0 items-center justify-center rounded-full bg-muted text-sm font-semibold text-muted-foreground"},ct={class:"min-w-0 flex-1"},dt={class:"flex items-start justify-between gap-3"},ut={class:"min-w-0"},mt={class:"block truncate text-base font-semibold"},pt={class:"mt-1 block truncate text-xs text-muted-foreground"},ft={class:"mt-1 block truncate text-xs text-muted-foreground"},gt={class:"flex size-10 shrink-0 items-center justify-center rounded-xl border border-border/70 text-muted-foreground"},vt={class:"mt-3 flex flex-wrap items-center gap-x-4 gap-y-1 text-sm text-muted-foreground"},ht={class:"inline-flex items-center gap-1.5"},kt={class:"inline-flex items-center gap-1.5"},_t={class:"hidden items-start justify-between gap-3 p-4 pb-0 md:flex"},yt={class:"text-sm font-medium"},xt={class:"text-xs text-muted-foreground"},Nt={class:"grid gap-4 border-t pt-3 md:grid-cols-2 md:border-0 md:pt-4 xl:grid-cols-5"},bt={class:"grid gap-2"},Vt={class:"grid gap-2"},Ct={key:0,class:"text-xs text-orange-500"},St={class:"grid gap-2"},wt={key:0,class:"text-xs text-muted-foreground"},Et={key:1,class:"flex items-center h-[36px] text-sm"},Tt={key:0},Bt={key:1},Dt={key:2},$t={key:0,class:"grid gap-2"},Rt=e.defineComponent({__name:"ReservationLines",props:{modelValue:{},agendaData:{},availabilityByReservation:{}},emits:["add","quick-add","update:modelValue"],setup($,{emit:P}){const w=$,L=P,Z=/^([01]\d|2[0-3]):[0-5]\d$/,R=e.computed(()=>w.modelValue??[]),V=e.computed(()=>Number(w.agendaData?.maxTicketsPerReservation)>1),E=e.ref(null),T=e.ref(!1),I=e.computed(()=>String(w.agendaData?.currency||"EUR").toUpperCase()),h=e.computed(()=>{try{return new Intl.NumberFormat("en-US",{style:"currency",currency:I.value,minimumFractionDigits:2,maximumFractionDigits:2})}catch{return new Intl.NumberFormat("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}}),S=a=>{L("update:modelValue",a)},M=a=>["date","resourceId","pricingOption"].includes(a),O=a=>{if(!a.date||!a.resourceId||!a.pricingOption)return a;const n=Y(a);return n.length===0?{...a,startTime:""}:n.includes(a.startTime)?a:{...a,startTime:n[0]}},B=(a,n,d)=>{S(R.value.map(v=>{if(v.id!==a)return v;if(n==="date"){const H={...v,date:String(d??""),dateValue:d||void 0};return O(H)}const C={...v,[n]:d};return M(n)?O(C):C}))},q=(a,n)=>{const d=Number(n);B(a,"paid",Number.isFinite(d)?d:0)},k=(a,n)=>{const d=Number(n);B(a,"spots",Number.isFinite(d)&&d>0?d:1)},G=a=>{S(R.value.filter(n=>n.id!==a))},U=a=>{L("quick-add",a),T.value=!1},u=a=>w.agendaData?.pricingOptions?.find(n=>n.id===a.pricingOption),b=a=>{const n=u(a);return n?n.duration?`${n.name} (${n.duration}min)`:n.name:"Reservation"},g=a=>w.agendaData?.resources?.find(n=>n.id===a.resourceId),x=a=>g(a)?.name||"Unknown resource",N=a=>{if(!a||!Z.test(a))return null;const[n,d]=a.split(":").map(Number);return n*60+d},X=a=>{const n=(a%1440+1440)%1440,d=Math.floor(n/60),v=n%60;return`${d.toString().padStart(2,"0")}:${v.toString().padStart(2,"0")}`},ae=a=>{const n=Number(u(a)?.duration);return Number.isFinite(n)&&n>0?n:0},se=a=>{if(!a.startTime)return"";const n=ae(a);if(n<=0)return"";const d=N(a.startTime);return d===null?"":X(d+n)},te=a=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(a))return null;const[n,d,v]=a.split("-").map(Number),C=new Date(n,d-1,v);return Number.isNaN(C.getTime())||C.getFullYear()!==n||C.getMonth()!==d-1||C.getDate()!==v?null:C},K=(a,n)=>(w.agendaData?.exceptions||[]).find(v=>n>=v.startDate&&n<=v.endDate?!v.resourceIds||v.resourceIds.length===0?!0:v.resourceIds.includes(a):!1)||null,oe=a=>{const n=g(a),d=te(a.date);if(!n||!d)return[];const v=K(n.id,a.date);if(v)return v.isClosed?[]:(v.timeslots||[]).map(H=>({start:H.startTime,end:H.endTime}));const C=d.getDay();return n.openingHours?.[C]||[]},Y=a=>{const n=g(a);if(!n)return[];const d=Number(n.interval)>0?Number(n.interval):60,v=ae(a),C=new Set;for(const H of oe(a)){const j=N(H.start),p=N(H.end);if(j===null||p===null||p<=j)continue;const re=v>0?p-v:p-d;for(let J=j;J<=re;J+=d)C.add(X(J))}return Array.from(C).sort((H,j)=>(N(H)??0)-(N(j)??0))},ne=a=>{if(!a.startTime)return"Select time";const n=se(a);return n?`${a.startTime} - ${n}`:a.startTime},m=a=>{const n=Number(a);if(!Number.isFinite(n))return I.value==="EUR"?"€0.00":"0.00";try{return h.value.format(n)}catch{return`${n.toFixed(2)}`}},D=a=>{const n=Number(a.spots),d=Number.isFinite(n)&&n>0?n:1;return d===1?"1 spot":`${d} spots`},z=a=>w.availabilityByReservation?.[a.id]??null,ce=a=>{const n=z(a);return!n||n.status==="checking"?"text-muted-foreground":n.status==="available"?"text-green-600 dark:text-green-400":"text-red-600 dark:text-red-400"},le=a=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(a))return null;const[n,d,v]=a.split("-").map(Number),C=new Date(n,d-1,v);return Number.isNaN(C.getTime())||C.getFullYear()!==n||C.getMonth()!==d-1||C.getDate()!==v?null:(C.setHours(0,0,0,0),C)},r=a=>{const n=le(String(a.date||"").trim());if(!n)return"";const d=new Date;if(d.setHours(0,0,0,0),n<d)return"This date is in the past. Double-check it before saving.";const v=new Date(d);return v.setFullYear(v.getFullYear()+1),n>v?"This date is more than a year ahead. Double-check it before saving.":""},l=a=>!a.date||!a.startTime||!a.resourceId||!a.pricingOption,_=a=>E.value===a,W=a=>{E.value=E.value===a?null:a};return e.watch(R,a=>{const n=new Set(a.map(d=>d.id));if(E.value&&!n.has(E.value)&&(E.value=null),!E.value){const d=a.find(l);d&&(E.value=d.id)}},{immediate:!0}),(a,n)=>{const d=e.resolveComponent("Button"),v=e.resolveComponent("PopoverTrigger"),C=e.resolveComponent("PopoverContent"),H=e.resolveComponent("Popover"),j=e.resolveComponent("Label"),p=e.resolveComponent("DynamicSelectOption"),re=e.resolveComponent("DynamicSelect"),J=e.resolveComponent("Input"),ge=e.resolveComponent("SelectValue"),ve=e.resolveComponent("SelectTrigger"),t=e.resolveComponent("SelectItem"),s=e.resolveComponent("SelectContent"),c=e.resolveComponent("Select");return e.openBlock(),e.createElementBlock("div",et,[e.createElementVNode("div",tt,[e.createElementVNode("p",ot,e.toDisplayString(R.value.length===1?"1 reservation line":`${R.value.length} reservation lines`),1),e.createElementVNode("div",nt,[e.createVNode(H,{open:T.value,"onUpdate:open":n[0]||(n[0]=o=>T.value=o)},{default:e.withCtx(()=>[e.createVNode(v,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(d,{type:"button",variant:"outline",size:"sm",class:"gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(ee.Zap),{class:"size-4 text-primary"}),n[2]||(n[2]=e.createTextVNode(" Quick add ",-1))]),_:1})]),_:1}),e.createVNode(C,{align:"end",class:"max-h-[80vh] w-[min(34rem,calc(100vw-2rem))] overflow-y-auto p-0"},{default:e.withCtx(()=>[T.value?(e.openBlock(),e.createBlock(Je,{key:0,surface:"popover",agendaData:$.agendaData,onAdd:U},null,8,["agendaData"])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["open"]),e.createVNode(d,{type:"button",variant:"outline",size:"sm",onClick:n[1]||(n[1]=o=>L("add"))},{default:e.withCtx(()=>[e.createVNode(e.unref(ee.Plus),{class:"size-4"}),n[3]||(n[3]=e.createTextVNode(" Add line ",-1))]),_:1})])]),R.value.length===0?(e.openBlock(),e.createElementBlock("div",at," Use Quick add to create filled reservation lines, or add an empty line manually. ")):(e.openBlock(),e.createElementBlock("div",rt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,(o,f)=>(e.openBlock(),e.createElementBlock("div",{key:o.id,class:"rounded-xl border bg-background"},[e.createElementVNode("div",st,[e.createElementVNode("button",{type:"button",class:"flex min-w-0 flex-1 items-start gap-3 rounded-lg px-1 py-1 text-left outline-none transition-colors hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring/50","aria-expanded":_(o.id),onClick:i=>W(o.id)},[e.createElementVNode("span",it,e.toDisplayString(f+1),1),e.createElementVNode("span",ct,[e.createElementVNode("span",dt,[e.createElementVNode("span",ut,[e.createElementVNode("span",mt,e.toDisplayString(ne(o)),1),e.createElementVNode("span",pt,e.toDisplayString(o.date||"No date selected"),1),e.createElementVNode("span",ft,e.toDisplayString(x(o))+" · "+e.toDisplayString(b(o)),1),z(o)?.message?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["mt-1 block text-xs font-medium",ce(o)])},e.toDisplayString(z(o)?.message),3)):e.createCommentVNode("",!0)]),e.createElementVNode("span",gt,[e.createVNode(e.unref(ee.Pencil),{class:"size-4"})])]),e.createElementVNode("span",vt,[e.createElementVNode("span",ht,[e.createVNode(e.unref(ee.Users),{class:"size-4"}),e.createTextVNode(" "+e.toDisplayString(D(o)),1)]),e.createElementVNode("span",kt,[e.createVNode(e.unref(ee.Tag),{class:"size-4"}),e.createTextVNode(" "+e.toDisplayString(m(o.paid)),1)])])])],8,lt),e.createVNode(d,{type:"button",variant:"ghost",size:"icon",class:"mt-1 shrink-0",onClick:i=>G(o.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(ee.Trash2),{class:"size-4"})]),_:1},8,["onClick"])]),e.createElementVNode("div",_t,[e.createElementVNode("div",null,[e.createElementVNode("p",yt,"Reservation "+e.toDisplayString(f+1),1),e.createElementVNode("p",xt,e.toDisplayString(x(o))+" · "+e.toDisplayString(b(o)),1),z(o)?.message?(e.openBlock(),e.createElementBlock("p",{key:0,class:e.normalizeClass(["mt-1 text-xs font-medium",ce(o)])},e.toDisplayString(z(o)?.message),3)):e.createCommentVNode("",!0)]),e.createVNode(d,{type:"button",variant:"ghost",size:"icon",class:"shrink-0",onClick:i=>G(o.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(ee.Trash2),{class:"size-4"})]),_:1},8,["onClick"])]),e.createElementVNode("div",{class:e.normalizeClass(["px-3 pb-3 md:px-4 md:pb-4 overflow-hidden",_(o.id)?"block":"hidden md:block"])},[e.createElementVNode("div",Nt,[e.createElementVNode("div",bt,[e.createVNode(j,null,{default:e.withCtx(()=>[...n[4]||(n[4]=[e.createTextVNode("Resource",-1)])]),_:1}),e.createVNode(re,{"model-value":o.resourceId,"wrapper-class":"w-full",class:"w-full",placeholder:"Select resource","onUpdate:modelValue":i=>B(o.id,"resourceId",String(i??""))},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.agendaData?.resources||[],i=>(e.openBlock(),e.createBlock(p,{key:i.id,value:i.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("div",Vt,[e.createVNode(j,null,{default:e.withCtx(()=>[...n[5]||(n[5]=[e.createTextVNode("Date",-1)])]),_:1}),e.createVNode(J,{"model-value":o.date,type:"date","onUpdate:modelValue":i=>B(o.id,"date",String(i??""))},null,8,["model-value","onUpdate:modelValue"]),r(o)?(e.openBlock(),e.createElementBlock("p",Ct,e.toDisplayString(r(o)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",St,[e.createVNode(j,{for:`new_reservation_res_line_${f}_time`},{default:e.withCtx(()=>[...n[6]||(n[6]=[e.createTextVNode("Time",-1)])]),_:1},8,["for"]),o.resourceId&&o.date?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(c,{"model-value":o.startTime,"onUpdate:modelValue":i=>B(o.id,"startTime",String(i??""))},{default:e.withCtx(()=>[e.createVNode(ve,{id:`new_reservation_res_line_${f}_time`,class:"w-full"},{default:e.withCtx(()=>[e.createVNode(ge,{placeholder:"Select an hour"})]),_:1},8,["id"]),e.createVNode(s,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Y(o),i=>(e.openBlock(),e.createBlock(t,{key:i,value:i},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i),1)]),_:2},1032,["value"]))),128))]),_:2},1024)]),_:2},1032,["model-value","onUpdate:modelValue"]),o.resourceId&&o.date&&Y(o).length===0?(e.openBlock(),e.createElementBlock("p",wt," No times are available for this resource on the selected date. ")):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Et,[!o.resourceId&&!o.date?(e.openBlock(),e.createElementBlock("span",Tt,"Please select a resource and date.")):o.resourceId?o.date?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Dt,"Please select a date.")):(e.openBlock(),e.createElementBlock("span",Bt,"Please select a resource."))]))]),e.createElementVNode("div",{class:e.normalizeClass(["grid gap-2",{hidden:$.agendaData?.pricingOptions?.length<2}])},[e.createVNode(j,null,{default:e.withCtx(()=>[...n[7]||(n[7]=[e.createTextVNode("Type",-1)])]),_:1}),e.createVNode(re,{"model-value":o.pricingOption,"wrapper-class":"w-full",class:"w-full",placeholder:"Select type","onUpdate:modelValue":i=>B(o.id,"pricingOption",String(i??""))},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.agendaData?.pricingOptions||[],i=>(e.openBlock(),e.createBlock(p,{key:i.id,value:i.id},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.name),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value","onUpdate:modelValue"])],2),e.createElementVNode("div",{class:e.normalizeClass(["grid gap-4",V.value?"md:grid-cols-2 xl:grid-cols-2 xl:col-span-1":""])},[V.value?(e.openBlock(),e.createElementBlock("div",$t,[e.createVNode(j,null,{default:e.withCtx(()=>[...n[8]||(n[8]=[e.createTextVNode("Spots",-1)])]),_:1}),e.createVNode(J,{"model-value":o.spots,type:"number",min:"1",class:"no-spinner","onUpdate:modelValue":i=>k(o.id,i)},null,8,["model-value","onUpdate:modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["grid gap-2",V.value?"":"md:col-span-2 xl:col-span-1"])},[e.createVNode(j,null,{default:e.withCtx(()=>[...n[9]||(n[9]=[e.createTextVNode("Paid",-1)])]),_:1}),e.createVNode(J,{"model-value":o.paid,type:"number",min:"0",step:"1",class:"no-spinner","onUpdate:modelValue":i=>q(o.id,i)},null,8,["model-value","onUpdate:modelValue"])],2)],2)])],2)]))),128))]))])}}}),It={class:"space-y-5 md:mt-5"},Ft={class:"space-y-3"},Ot={class:"mt-4 text-red-400"},Lt={class:"list-disc pl-4"},Mt={key:0},At={key:1},Pt={key:2},ke="",Ut=e.defineComponent({__name:"NewReservationDialog",props:{agendaData:{}},setup($){const P=$,{params:w}=fe.useModuleRoute(),{config:L}=fe.useModule(),{log:Z,logError:R}=fe.useLogs(),V=fe.useFirebaseIntegration(L.project),E=e.computed(()=>w.value?.id??w.id??""),T=e.inject("agendaData",e.ref({})),I=e.computed(()=>P.agendaData??T.value??{}),h=e.ref(!1),S=e.ref(!1),M=e.ref({});let O=0;const B=e.ref([]),q=/^([01]\d|2[0-3]):[0-5]\d$/,k=e.ref([]),G=e.ref(null),U=e.computed(()=>Object.values(M.value).some(t=>t.status==="checking")),u=e.computed(()=>Object.values(M.value).some(t=>t.status==="unavailable")),b=()=>I.value?.resources?.[0]?.id??"",g=()=>I.value?.pricingOptions?.find(t=>t.isDefault===!0)?.id??I.value?.pricingOptions?.[0]?.id??"",x=()=>{const t=new Date,s=t.getFullYear(),c=`${t.getMonth()+1}`.padStart(2,"0"),o=`${t.getDate()}`.padStart(2,"0");return`${s}-${c}-${o}`},N=t=>{let s=t?.pricingOption??g(),c=I.value?.pricingOptions?.find(f=>f.id===s)?.price??0;typeof c=="string"&&(c=Number(c));let o=t?.paid??c;return typeof o=="string"&&(o=Number(o)),{id:`reservation_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,spots:Number(t?.spots)||1,paid:Number.isFinite(o)?o:0,resourceId:t?.resourceId??b(),pricingOption:s,date:t?.date??x(),dateValue:t?.dateValue,startTime:t?.startTime??ke}},X=()=>{k.value=[N()]},ae=t=>(!t.date||t.date===x())&&t.startTime===ke,se=()=>{const t=k.value[k.value.length-1];k.value=[...k.value,N(t?{...t}:void 0)]},te=t=>I.value?.pricingOptions?.find(s=>s.id===t.pricingOption),K=t=>I.value?.resources?.find(s=>s.id===t.resourceId),oe=()=>{const t=Number(I.value?.maxTicketsPerReservation);return Number.isFinite(t)&&t>0?t:null},Y=t=>`Reservation ${t+1}`,ne=t=>{const s=String(t.date||"").trim(),c=String(t.startTime||"").trim(),o=String(t.resourceId||"").trim();return!s||!c||!o?"":`${o}_${s}_${c}`},m=()=>{const t=[],s=new Map,c=oe();return k.value.forEach((o,f)=>{const i=Y(f),F=String(o.date||"").trim(),A=String(o.startTime||"").trim(),y=String(o.resourceId||"").trim(),Q=String(o.pricingOption||"").trim(),ue=Number(o.spots),de=Number(o.paid);F||t.push(`${i}: please select a date.`),A?q.test(A)||t.push(`${i}: please enter a valid time.`):t.push(`${i}: please select a time.`),y?K(o)||t.push(`${i}: the selected resource is no longer available.`):t.push(`${i}: please select a resource.`),Q?te(o)||t.push(`${i}: the selected type is no longer available.`):t.push(`${i}: please select a type.`),!Number.isFinite(ue)||ue<=0?t.push(`${i}: spots must be at least 1.`):c!==null&&ue>c&&t.push(`${i}: spots cannot be more than ${c}.`),(!Number.isFinite(de)||de<0)&&t.push(`${i}: paid amount must be 0 or higher.`);const ie=ne(o);if(ie){const me=s.get(ie);me!==void 0?t.push(`${i}: duplicate of ${Y(me).toLowerCase()}.`):s.set(ie,f)}}),t},D=t=>{const s=t.startTimes.map(c=>N({date:t.date?`${t.date}`:"",dateValue:t.date,pricingOption:t.pricingOptionId,resourceId:t.resourceId,spots:t.spots,paid:t.paid,startTime:c}));if(s.length!==0){if(k.value.length===1&&ae(k.value[0])){k.value=s;return}k.value=[...k.value,...s]}},z=t=>{if(!t||!q.test(t))return null;const[s,c]=t.split(":").map(Number);return s*60+c},ce=t=>{const s=(t%1440+1440)%1440,c=Math.floor(s/60),o=s%60;return`${c.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`},le=t=>{if(!t.startTime||!t.pricingOption)return"";const s=te(t),c=Number(s?.duration);if(!Number.isFinite(c)||c<=0)return t.startTime;const o=z(t.startTime);return o===null?"":ce(o+c)},r=t=>{const s=Number(t.spots);return Number.isFinite(s)&&s>0?s:1},l=t=>{const s=Number(K(t)?.capacity);return Number.isFinite(s)&&s>0?s:1},_=t=>{const s=String(t.date||"").trim(),c=String(t.resourceId||"").trim(),o=z(t.startTime),f=z(le(t));return!s||!c||!K(t)||!te(t)||o===null||f===null||f<=o?null:{reservation:t,date:s,resourceId:c,startMinutes:o,endMinutes:f,capacity:l(t),requestedSpots:r(t)}},W=t=>["approved","needs_approval"].includes(t?.status),a=(t,s,c,o)=>t<o&&s>c,n=t=>`${t} ${t===1?"spot":"spots"}`,d=(t,s,c)=>t<c?{status:"unavailable",message:`Not enough spots: ${n(Math.max(t,0))} open, needs ${n(c)}.`}:{status:"available",message:`Available: ${t} of ${s} ${s===1?"spot":"spots"} open, ${n(t-c)} will remain.`},v=t=>t?.id||t?.orderId||"",C=(t,s)=>{const c=[];for(let o=0;o<t.length;o+=s)c.push(t.slice(o,o+s));return c},H=async t=>{const s=new Map,c=[];for(const o of C(t,10)){const f=[{field:"status",operator:"==",value:"confirmed"},{field:"flattenedReservationDates",operator:"array-contains-any",value:o}];E.value&&f.unshift({field:"agendaId",operator:"==",value:E.value});const i=await V.find(L.reservationsCollection,{filters:f});for(const F of i||[]){const A=v(F);A?s.set(A,F):c.push(F)}}return[...s.values(),...c]},j=(t,s)=>{let c=0;for(const o of t)for(const f of o?.reservations||[]){if(!W(f)||f?.date!==s.date||f?.resourceId!==s.resourceId)continue;const i=z(f?.timeslot?.startTime),F=z(f?.timeslot?.endTime);if(i===null||F===null||F<=i||!a(s.startMinutes,s.endMinutes,i,F))continue;const A=Number(f?.spots);c+=Number.isFinite(A)&&A>0?A:1}return c},p=t=>{let s=0;for(const c of k.value){if(c.id===t.reservation.id)continue;const o=_(c);o&&o.date===t.date&&o.resourceId===t.resourceId&&a(t.startMinutes,t.endMinutes,o.startMinutes,o.endMinutes)&&(s+=o.requestedSpots)}return s},re=async()=>{const t=++O,s=k.value.map(_).filter(o=>!!o),c=s.reduce((o,f)=>(o[f.reservation.id]={status:"checking",message:"Checking availability..."},o),{});if(M.value=c,!h.value||s.length===0)return c;try{const o=Array.from(new Set(s.map(F=>`${F.resourceId}_${F.date}`))),f=await H(o);if(t!==O)return null;const i=s.reduce((F,A)=>{const y=j(f,A)+p(A),Q=A.capacity-y;return F[A.reservation.id]=d(Q,A.capacity,A.requestedSpots),F},{});return M.value=i,i}catch(o){if(t!==O)return null;console.error("Error checking new reservation availability:",o);const f=s.reduce((i,F)=>(i[F.reservation.id]={status:"error",message:"Could not check availability for this reservation."},i),{});return M.value=f,f}},J=t=>t?k.value.flatMap((s,c)=>{const o=t[s.id];return o?o.status==="unavailable"?[`${Y(c)}: ${o.message}`]:o.status==="error"?[`${Y(c)}: availability could not be checked.`]:[]:[]}):["Could not check availability before creating the reservation."];e.watch(h,async t=>{t?(B.value=[],X(),await e.nextTick(),G.value?.reset()):(O+=1,M.value={})}),e.watch(k,()=>{h.value&&re()},{deep:!0});const ge=()=>{const t=[];B.value=[];const s=G.value,c=s?s.validateForm():!1;return s||t.push("Customer information form is unavailable."),k.value.length===0&&t.push("Please add at least one reservation."),t.push(...m()),B.value=t,t.length===0&&c},ve=async()=>{const t=G.value;if(!t||!ge())return;const s=await re(),c=J(s);if(c.length>0){B.value=c;return}let o=!1;try{S.value=!0;const f=t.getCustomerInfo(),i=k.value.map(y=>{const Q=Number(y.paid)||0,ue=Number(y.spots)||1,de=te(y),ie=K(y),me=y.date;return{paidAmount:Q,flattenedReservationDate:`${y.resourceId}_${me}`,flattenedReservation:`${y.resourceId}_${me}_${y.startTime.replace(":","")}`,reservation:{status:"approved",totalPrice:Number(Q.toFixed(2)),basePrice:Number((Q/ue).toFixed(2)),addOnsPrice:0,addOns:[],date:me,id:`res_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,pricingOption:{duration:de?.duration||"",id:de?.id||"",name:de?.name||"",price:de?.price||""},pricingOptionId:y.pricingOption,resource:{avatarLabel:ie?.avatarLabel||"",color:ie?.color||"",description:ie?.description||"",id:ie?.id||"",name:ie?.name||""},resourceId:y.resourceId,spots:ue,timeslot:{startTime:y.startTime,endTime:le(y)}}}}),F=Number(i.reduce((y,Q)=>y+Q.paidAmount,0).toFixed(2)),A={agendaId:E.value,customerInfo:f,metadata:{},amountPaid:F,amountDue:0,subtotal:F,total:F,createdAt:new Date,updatedAt:new Date,discount:0,flattenedReservationDates:Array.from(new Set(i.map(y=>y.flattenedReservationDate))),flattenedReservations:i.map(y=>y.flattenedReservation),paymentStatus:"paid",paymentType:"full",reservations:i.map(y=>y.reservation),status:"confirmed"};await V.add(L.reservationsCollection,A),o=!0,Z(`${i.length} ${i.length>1?"reservations":"reservation"} created in Studio`,{agendaId:E.value,reservationIds:i.map(y=>y.reservation.id),amountPaid:F,reservations:i.map(y=>`${y.reservation.resource.name}: ${y.reservation.date} ${y.reservation.timeslot.startTime}`)})}catch(f){R("Failed to create reservation in Studio",{error:f instanceof Error?f.message:String(f),agendaId:E.value}),console.error("Error creating reservation:",f)}finally{S.value=!1,o&&(h.value=!1)}};return(t,s)=>{const c=e.resolveComponent("Button"),o=e.resolveComponent("ResponsiveModalTrigger"),f=e.resolveComponent("ResponsiveModalTitle"),i=e.resolveComponent("ResponsiveModalHeader"),F=e.resolveComponent("ResponsiveModalFooter"),A=e.resolveComponent("ResponsiveModalScrollContent"),y=e.resolveComponent("ResponsiveModal");return e.openBlock(),e.createBlock(y,{open:h.value,"onUpdate:open":s[1]||(s[1]=Q=>h.value=Q)},{default:e.withCtx(()=>[e.createVNode(o,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(e.unref(ee.Plus),{class:"size-4"}),s[2]||(s[2]=e.createTextVNode(" Add Reservation ",-1))]),_:1})]),_:1}),e.createVNode(A,{class:"@container/modal sm:max-w-7xl"},{default:e.withCtx(()=>[e.createVNode(i,null,{default:e.withCtx(()=>[e.createVNode(f,null,{default:e.withCtx(()=>[...s[3]||(s[3]=[e.createTextVNode("Create new reservation",-1)])]),_:1})]),_:1}),e.createElementVNode("div",It,[e.createVNode(Te,{ref_key:"customerInformationRef",ref:G,agendaData:I.value},null,8,["agendaData"]),s[5]||(s[5]=e.createElementVNode("div",{class:"w-full h-[1px] bg-border my-8"},null,-1)),e.createElementVNode("div",Ft,[s[4]||(s[4]=e.createElementVNode("div",{class:"flex items-center justify-between gap-3"},[e.createElementVNode("h2",{class:"text-sm font-medium"},"Reservations")],-1)),e.createVNode(Rt,{modelValue:k.value,"onUpdate:modelValue":s[0]||(s[0]=Q=>k.value=Q),agendaData:I.value,"availability-by-reservation":M.value,onAdd:se,onQuickAdd:D},null,8,["modelValue","agendaData","availability-by-reservation"])]),e.createElementVNode("div",Ot,[e.createElementVNode("ul",Lt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,Q=>(e.openBlock(),e.createElementBlock("li",{key:Q},e.toDisplayString(Q),1))),128))])])]),e.createVNode(F,{class:"gap-2"},{default:e.withCtx(()=>[e.createVNode(c,{onClick:ve,disabled:S.value||U.value||u.value},{default:e.withCtx(()=>[S.value?(e.openBlock(),e.createElementBlock("span",Mt,"Creating...")):U.value?(e.openBlock(),e.createElementBlock("span",At,"Checking availability...")):(e.openBlock(),e.createElementBlock("span",Pt,e.toDisplayString(k.value.length>1?`Create ${k.value.length} reservations`:"Create reservation"),1))]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])}}});exports._sfc_main=Ut;
|