@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.
Files changed (162) hide show
  1. package/dist/{ContentEditor-CoJjsV-m.js → ContentEditor-BcIUumah.js} +63 -59
  2. package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-DX1bTQKs.mjs} +27894 -26319
  3. package/dist/{Detail-Dk8E6_uF.mjs → Detail-B7pe808q.mjs} +15 -14
  4. package/dist/Detail-BESGmY7z.js +1 -0
  5. package/dist/{Detail-Cn9Bk0u0.mjs → Detail-B_Q7Qkuz.mjs} +26 -25
  6. package/dist/Detail-CNiLIEh9.js +1 -0
  7. package/dist/{Detail-B_scnidb.mjs → Detail-DNxAzeCs.mjs} +35 -34
  8. package/dist/Detail-t3tOcy3X.js +1 -0
  9. package/dist/Editor-D4evcdhv.mjs +768 -0
  10. package/dist/Editor-gLLtuJbY.js +1 -0
  11. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-BjKpsqT9.js +1 -0
  12. package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-D5v5AhLe.mjs +76 -0
  13. package/dist/Knowledge-B66vxz--.js +1 -0
  14. package/dist/Knowledge-BnMTTuJ7.mjs +742 -0
  15. 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
  16. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
  17. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
  18. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
  19. package/dist/Overview-BE4uYPx0.mjs +745 -0
  20. package/dist/Overview-CQRpFhbJ.mjs +286 -0
  21. package/dist/Overview-CTs7sX4d.js +1 -0
  22. package/dist/Overview-Cj89XXKN.js +1 -0
  23. package/dist/Overview-D_c18mbR.mjs +248 -0
  24. package/dist/Overview-g4Rcj245.js +1 -0
  25. package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
  26. package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
  27. package/dist/TableDataWidget-7qvC3Egd.js +1 -0
  28. package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
  29. package/dist/TableOverviewCard-AFq-puJs.js +1 -0
  30. package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
  31. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
  32. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
  33. package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
  34. package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
  35. package/dist/TableView-6mdrL3zx.js +4 -0
  36. package/dist/TableView-Du5nOE6R.mjs +8228 -0
  37. package/dist/Test-CzmOmi53.mjs +447 -0
  38. package/dist/Test-USDtNFY1.js +1 -0
  39. package/dist/UserDetail-DpUL3mhk.mjs +1483 -0
  40. package/dist/UserDetail-KRIfxaYd.js +1 -0
  41. package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
  42. package/dist/agenda-r9Gl85GL.js +1 -0
  43. package/dist/cms-core-modules.css +1 -1
  44. package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
  45. package/dist/dateRangePresets-CPWqst_x.js +1 -0
  46. package/dist/fuse-Deb-Iq39.mjs +1473 -0
  47. package/dist/fuse-_CGUd5Zq.js +1 -0
  48. package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
  49. package/dist/index-CQuN5rKx.js +1 -0
  50. package/dist/index-CnDGeInm.js +1 -0
  51. package/dist/index-CqDTc5Ig.mjs +20 -0
  52. package/dist/index-CyvvAdt4.js +1 -0
  53. package/dist/index-DIRD7t5_.mjs +20 -0
  54. package/dist/index-OJuBYR60.mjs +57 -0
  55. package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
  56. package/dist/index.cjs.js +1 -1
  57. package/dist/index.mjs +671 -118
  58. package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
  59. package/dist/orders-DUa2PVoa.js +1 -0
  60. package/dist/reports-ChCsd1Gk.mjs +1107 -0
  61. package/dist/reports-DmJPm8uP.js +158 -0
  62. package/dist/row-item-C1dUyimV.mjs +204 -0
  63. package/dist/row-item-Cyo3m3MZ.js +1 -0
  64. package/dist/server-handlers.cjs.js +1 -1
  65. package/dist/server-handlers.mjs +1764 -605
  66. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
  67. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
  68. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
  69. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
  70. package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
  71. package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
  72. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.d.ts +1 -1
  73. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.d.ts +7 -0
  74. package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.d.ts +7 -0
  75. package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/resizeHistory.d.ts +9 -0
  76. package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +3 -1
  77. package/dist/src/firebaseAuthManager/components/DeleteUserDialog.vue.d.ts +25 -0
  78. package/dist/src/firebaseAuthManager/components/ReasonActionDialog.vue.d.ts +23 -0
  79. package/dist/src/firebaseAuthManager/components/UserStatusBadge.vue.d.ts +5 -0
  80. package/dist/src/firebaseAuthManager/config.d.ts +151 -0
  81. package/dist/src/firebaseAuthManager/index.d.ts +163 -0
  82. package/dist/src/firebaseAuthManager/index.vue.d.ts +14 -0
  83. package/dist/src/firebaseAuthManager/metadata.d.ts +2 -0
  84. package/dist/src/firebaseAuthManager/pages/Overview.vue.d.ts +2 -0
  85. package/dist/src/firebaseAuthManager/pages/UserDetail.vue.d.ts +2 -0
  86. package/dist/src/firebaseAuthManager/permissions.d.ts +5 -0
  87. package/dist/src/firebaseAuthManager/routes.d.ts +5 -0
  88. package/dist/src/firebaseAuthManager/server.d.ts +162 -0
  89. package/dist/src/firebaseAuthManager/types.d.ts +84 -0
  90. package/dist/src/formBuilder/components/FormPreviewDialog.vue.d.ts +12 -0
  91. package/dist/src/formBuilder/components/FormStatusBadge.vue.d.ts +9 -0
  92. package/dist/src/formBuilder/config.d.ts +31 -0
  93. package/dist/src/formBuilder/index.d.ts +44 -0
  94. package/dist/src/formBuilder/index.vue.d.ts +14 -0
  95. package/dist/src/formBuilder/lib/forms.d.ts +11 -0
  96. package/dist/src/formBuilder/metadata.d.ts +2 -0
  97. package/dist/src/formBuilder/pages/Editor.vue.d.ts +2 -0
  98. package/dist/src/formBuilder/pages/Overview.vue.d.ts +2 -0
  99. package/dist/src/formBuilder/permissions.d.ts +5 -0
  100. package/dist/src/formBuilder/routes.d.ts +5 -0
  101. package/dist/src/formBuilder/server.d.ts +87 -0
  102. package/dist/src/formBuilder/tools.d.ts +1 -0
  103. package/dist/src/formBuilder/types.d.ts +46 -0
  104. package/dist/src/helpbot/composables/useHelpbotApi.d.ts +18 -0
  105. package/dist/src/helpbot/config.d.ts +17 -0
  106. package/dist/src/helpbot/index.d.ts +29 -0
  107. package/dist/src/helpbot/index.vue.d.ts +2 -0
  108. package/dist/src/helpbot/metadata.d.ts +2 -0
  109. package/dist/src/helpbot/pages/Knowledge.vue.d.ts +4 -0
  110. package/dist/src/helpbot/pages/Overview.vue.d.ts +2 -0
  111. package/dist/src/helpbot/pages/Test.vue.d.ts +4 -0
  112. package/dist/src/helpbot/permissions.d.ts +5 -0
  113. package/dist/src/helpbot/routes.d.ts +5 -0
  114. package/dist/src/helpbot/types.d.ts +42 -0
  115. package/dist/src/index.d.ts +3 -0
  116. package/dist/src/server-handlers.d.ts +2 -0
  117. package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
  118. package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
  119. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
  120. package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
  121. package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
  122. package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
  123. package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
  124. package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
  125. package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
  126. package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
  127. package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
  128. package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
  129. package/dist/src/table/index.d.ts +339 -0
  130. package/dist/src/table/tool-sandbox.d.ts +13 -0
  131. package/dist/src/table/tool-utils.d.ts +11 -0
  132. package/dist/src/table/tools.d.ts +333 -1
  133. package/dist/src/table/types.d.ts +79 -0
  134. package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
  135. package/dist/tool-sandbox-DoF1PsyS.js +115 -0
  136. package/dist/types-9N-DKxNj.mjs +250 -0
  137. package/dist/types-BMraG1kN.js +1 -0
  138. package/dist/types-Cem0vPo_.js +1 -0
  139. package/dist/types-ibC3-e1N.mjs +2630 -0
  140. package/dist/useHelpbotApi-BIIungOh.js +1 -0
  141. package/dist/useHelpbotApi-HC9JSiSn.mjs +229 -0
  142. package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
  143. package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
  144. package/dist/vee-validate-zod-BQElPD0m.js +1 -0
  145. package/dist/vee-validate-zod-CN16K2x9.mjs +1780 -0
  146. package/package.json +17 -17
  147. package/src/formBuilder/tools.ts +1 -0
  148. package/src/table/tools.ts +304 -1
  149. package/dist/Detail-BCUUNWvp.js +0 -1
  150. package/dist/Detail-DGg_xXZc.js +0 -1
  151. package/dist/Detail-Sc2qZdxj.js +0 -1
  152. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
  153. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
  154. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
  155. package/dist/TableView-Ctnep-Qu.mjs +0 -6247
  156. package/dist/TableView-DJqyJL9L.js +0 -4
  157. package/dist/agenda-B54F8cEr.js +0 -1
  158. package/dist/orders-BMosTk6r.js +0 -1
  159. package/dist/reports-BQT_GZzU.js +0 -158
  160. package/dist/reports-DksZCTOw.mjs +0 -837
  161. package/dist/vee-validate-zod-SjDT8X35.mjs +0 -4404
  162. package/dist/vee-validate-zod-VCmLnrtQ.js +0 -1
@@ -0,0 +1,158 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),J=require("@oneclick.dev/cms-kit"),g=require("lucide-vue-next"),W=require("./index-ijdf0d9-.js"),Fe=require("./EditLayout.vue_vue_type_script_setup_true_lang-D1b9_iiN.js"),ge=require("./OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js"),Ue={class:"space-y-6"},Le={class:"flex flex-col gap-4 @3xl:flex-row @3xl:items-start @3xl:justify-between"},qe={class:"text-2xl font-semibold tracking-tight flex items-center gap-2"},He={class:"flex flex-col gap-2 sm:flex-row sm:items-center"},Ye={class:"grid grid-cols-1 gap-3 @xl:grid-cols-3 md:items-end"},Ge={class:"grid gap-1.5"},Qe={class:"grid gap-1.5"},Ke={key:0,class:"text-sm text-destructive"},Je={class:"flex flex-wrap gap-2"},We={key:0,class:"flex items-center justify-center py-12"},Xe={key:1,class:"text-center py-12 text-muted-foreground"},Ze={class:"grid grid-cols-1 gap-4 @3xl:grid-cols-2 @7xl:grid-cols-4"},et={class:"text-2xl font-semibold"},tt={class:"text-xs text-muted-foreground mt-1"},nt={class:"text-2xl font-semibold"},ot={class:"text-xs text-muted-foreground mt-1"},rt={class:"text-2xl font-semibold"},at={class:"text-xs text-muted-foreground mt-1"},st={class:"text-2xl font-semibold"},lt={class:"text-xs text-muted-foreground mt-1"},dt={class:"grid grid-cols-1 gap-4 @5xl:grid-cols-2"},it={class:"flex items-center justify-between gap-4"},ut={class:"font-medium"},ct={class:"flex items-center justify-between gap-4"},mt={class:"font-medium text-destructive"},ft={class:"flex items-center justify-between gap-4"},pt={class:"font-semibold"},gt={class:"flex items-center justify-between gap-4"},vt={class:"font-medium"},xt={class:"flex items-center justify-between gap-4"},Nt={class:"font-medium"},Vt={class:"flex items-center justify-between gap-4"},bt={class:"font-medium"},yt={class:"flex items-center justify-between gap-4"},ht={class:"font-medium"},Ct={class:"flex items-center justify-between gap-4"},_t={class:"font-medium"},wt={class:"flex items-center justify-between gap-4"},Dt={class:"font-medium"},kt={class:"flex items-center gap-2 text-sm font-medium mb-3"},Et={class:"space-y-2 text-sm"},St={class:"text-muted-foreground"},Rt={class:"font-medium"},Tt={class:"flex items-center gap-2 text-sm font-medium mb-3"},At={class:"space-y-2 text-sm"},Bt={class:"text-muted-foreground"},$t={class:"font-medium"},Ot={class:"overflow-x-auto"},jt=["aria-label","onClick"],Mt={key:1},zt={class:"space-y-2 py-4"},It=["disabled","aria-disabled","aria-busy","onClick"],Pt={class:"min-w-0 flex-1 space-y-1.5"},Ft={class:"flex flex-wrap items-center gap-2"},Ut={class:"truncate font-medium"},Lt={class:"flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground"},qt={class:"inline-flex items-center gap-1"},Ht={class:"flex shrink-0 items-center justify-between gap-2 sm:justify-end"},Yt={class:"font-medium"},Gt={key:0,class:"text-xs font-normal text-muted-foreground"},Qt=e.defineComponent({__name:"reports",setup(Kt){const{params:X}=J.useModuleRoute(),{config:P}=J.useModule(),q=J.useFirebaseIntegration(P.project),Z=e.computed(()=>X.value?.id??X.id??""),k=e.ref(!1),v=e.ref([]),F=e.ref(null),O=e.ref([]),E=e.ref(!1),h=e.ref(null),w=e.ref(null),j=e.ref(!1),ee=e.ref(null),te=e.ref(null),ne=e.ref(null);let M=0;const C=n=>{const t=n.getFullYear(),o=String(n.getMonth()+1).padStart(2,"0"),r=String(n.getDate()).padStart(2,"0");return`${t}-${o}-${r}`},H=n=>{const t=Math.floor(n.getMonth()/3)*3;return new Date(n.getFullYear(),t,1)},ve=n=>{const t=Math.floor(n.getMonth()/3)*3;return new Date(n.getFullYear(),t+3,0)},oe=new Date,x=e.ref(C(H(oe))),N=e.ref(C(oe)),S=e.computed(()=>!x.value||!N.value?"Select a start and end date.":x.value>N.value?"Start date must be before end date.":""),xe=()=>{const n=new Date(`${x.value}T00:00:00`),t=new Date(`${N.value}T23:59:59.999`);return{start:n,end:t}},re=e.computed(()=>{if(!x.value||!N.value)return"";const n=new Date(`${x.value}T00:00:00`),t=new Date(`${N.value}T00:00:00`);return`${n.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})} - ${t.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}`}),Ne=()=>{const n=new Date;x.value=C(H(n)),N.value=C(n)},Ve=()=>{const n=new Date,t=new Date(n.getFullYear(),Math.floor(n.getMonth()/3)*3-1,1);x.value=C(H(t)),N.value=C(ve(t))},be=()=>{const n=new Date;x.value=C(new Date(n.getFullYear(),0,1)),N.value=C(n)},_=n=>{const t=Number(n);return Number.isFinite(t)?t:0},R=n=>{if(!n)return null;if(n instanceof Date)return n;if(typeof n=="string"||typeof n=="number"){const t=new Date(n);return Number.isNaN(t.getTime())?null:t}return typeof n.toDate=="function"?n.toDate():null},ae=n=>{const t=R(n.createdAt);return t?C(t):"Unknown date"},D=n=>typeof n.total=="number"?n.total:(n.reservations||[]).reduce((t,o)=>t+_(o.totalPrice),0),ye=n=>typeof n.amountPaid=="number"?n.amountPaid:D(n),se=n=>n.status==="confirmed",T=e.computed(()=>v.value.flatMap(n=>{const t=n.id,o=n.status||"unknown",r=D(n);return(n.reservations||[]).map(i=>({...i,orderId:t,orderStatus:o,orderCreatedAt:n.createdAt,orderTotal:r,orderAmountPaid:n.amountPaid}))})),le=n=>Array.isArray(n.refunds)?n.refunds:[],de=n=>{const t=le(n);return t.length>0?t.reduce((o,r)=>o+_(r.amount),0):_(n.refundedAmount)},he=n=>{const t=le(n);return t.length>0?t.length:!!(n.refundStatus||n.refundedAt||_(n.refundedAmount)>0)?1:0},A=e.computed(()=>v.value.filter(se)),s=e.computed(()=>{const n=A.value.reduce((u,f)=>u+D(f),0),t=A.value.reduce((u,f)=>u+ye(f),0),o=T.value.filter(u=>u.orderStatus==="confirmed").length,r=v.value.filter(u=>u.status==="pending").reduce((u,f)=>u+D(f),0),i=v.value.filter(u=>u.status==="cancelled").reduce((u,f)=>u+D(f),0),c=T.value.reduce((u,f)=>u+de(f),0),d=T.value.reduce((u,f)=>u+he(f),0),b=T.value.reduce((u,f)=>u+_(f.spots),0),p=A.value.reduce((u,f)=>u+_(f.amountDue),0);return{grossRevenue:n,moneyCollected:t,pendingRevenue:r,cancelledRevenue:i,netRevenue:n-c,refundAmount:c,refundCount:d,orders:v.value.length,confirmedOrders:A.value.length,reservations:T.value.length,spots:b,amountDue:p,averageOrder:A.value.length?n/A.value.length:0,averageReservation:o?n/o:0}}),ie=e.computed(()=>{const n=new Map;return v.value.forEach(t=>{const o=t.status||"unknown",r=n.get(o)||{status:o,count:0,revenue:0};r.count+=1,r.revenue+=D(t),n.set(o,r)}),Array.from(n.values()).sort((t,o)=>o.count-t.count)}),ue=e.computed(()=>{const n=new Map;return T.value.forEach(t=>{const o=t.status||"unknown",r=n.get(o)||{status:o,count:0,spots:0,revenue:0};r.count+=1,r.spots+=_(t.spots),r.revenue+=_(t.totalPrice),n.set(o,r)}),Array.from(n.values()).sort((t,o)=>o.count-t.count)}),Y=e.computed(()=>{const n=new Map;return v.value.forEach(t=>{const o=ae(t),r=n.get(o)||{date:o,orders:0,reservations:0,grossRevenue:0,refunds:0,netRevenue:0},i=t.reservations||[],c=i.reduce((b,p)=>b+de(p),0),d=se(t)?D(t):0;r.orders+=1,r.reservations+=i.length,r.grossRevenue+=d,r.refunds+=c,r.netRevenue=r.grossRevenue-r.refunds,n.set(o,r)}),Array.from(n.values()).sort((t,o)=>o.date.localeCompare(t.date))}),U=e.computed(()=>Y.value.find(n=>n.date===h.value)||null),G=e.computed(()=>h.value?v.value.filter(n=>ae(n)===h.value):[]);e.provide("event",ee);const Ce=n=>{n.date!=="Unknown date"&&(h.value=n.date,E.value=!0)},Q=()=>{E.value=!1,w.value=null,M+=1},_e=n=>{if(n){E.value=!0;return}Q()},l=n=>new Intl.NumberFormat("nl-BE",{style:"currency",currency:"EUR"}).format(n),m=n=>new Intl.NumberFormat("nl-BE").format(n),L=(n,t,o=`${t}s`)=>`${m(n)} ${n===1?t:o}`,z=n=>n.split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "),ce=n=>{if(n==="Unknown date")return n;const t=new Date(`${n}T00:00:00`);return Number.isNaN(t.getTime())?n:t.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})},we=n=>{const t=R(n);return t?t.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}):"Time unavailable"},De=n=>[n.customerInfo?.firstName,n.customerInfo?.lastName].filter(Boolean).join(" ").trim()||n.customerInfo?.email||"Unknown customer",ke=n=>(n.reservations||[]).reduce((t,o)=>t+_(o.spots),0),me=n=>{switch(n){case"pending":return{label:"Pending",class:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"};case"cancelled":return{label:"Cancelled",class:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"};case"needs_approval":return{label:"Needs Approval",class:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"};case"rejected":return{label:"Rejected",class:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"};case"approved":return{label:"Approved",class:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"};case"confirmed":return{label:"Confirmed",class:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"};default:return{label:z(n||"unknown"),class:"bg-muted text-muted-foreground"}}},Ee=(n,t)=>{const o=t.resourceId||t.resource?.id,r=O.value.find(c=>String(c.id)===String(o)),i=R(n.createdAt)?.toISOString()||(typeof n.createdAt=="string"?n.createdAt:"");return{id:n.id,res_id:t.id,customerInfo:n.customerInfo,amountDue:n.amountDue,amountPaid:n.amountPaid,status:n.status,reservationStatus:t.status,subtotal:n.subtotal,total:n.total,discount:n.discount,resourceId:o,resource:t.resource,spots:t.spots,date:t.date,createdAt:i,startTime:t.timeslot?.startTime,endTime:t.timeslot?.endTime,reservationPrice:t.totalPrice,reservationBasePrice:t.basePrice,reservationAddOnsPrice:t.addOnsPrice,pricingOptionId:t.pricingOptionId,pricingOption:t.pricingOption,resourceName:r?.name||t.resource?.name,resourceColor:r?.color||t.resource?.color,metadata:n.metadata||{},reservationMetadata:t.metadata||{},refundStatus:t.refundStatus,refundedAt:t.refundedAt,refundedAmount:t.refundedAmount,refunds:Array.isArray(t.refunds)?t.refunds:[],adjustments:n.adjustments||[],reservationAdjustments:t.adjustments||[]}},K=async()=>{await e.nextTick(),await new Promise(n=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>n());return}n()})},fe=async(n,t=!1)=>{if(!n||w.value)return;const o=++M;w.value=n;try{const r=await q.get(P.reservationsCollection,n);if(o!==M)return;if(!r){W.toast.error("Order details could not be found."),await I();return}const i={...r,id:r.id||n},c=(i.reservations||[]).map(d=>Ee(i,d));if(!c.length){W.toast.error("This order has no reservation details."),await I();return}t&&(j.value=!0),E.value=!1,await K(),te.value?.openDialog({id:i.id,customerInfo:i.customerInfo,status:i.status,createdAt:R(i.createdAt)?.toISOString()||(typeof i.createdAt=="string"?i.createdAt:""),metadata:i.metadata||{},reservations:c,adjustments:i.adjustments||[],totalPrice:typeof i.total=="number"?i.total:c.reduce((d,b)=>d+(b.reservationPrice||0),0),totalSpots:c.reduce((d,b)=>d+(b.spots||0),0)})}catch(r){if(o!==M)return;console.error("Error loading order details:",r),W.toast.error("Unable to load order details."),await I()}finally{o===M&&(w.value=null)}},Se=async n=>{ee.value={date:n.date,resourceId:n.resourceId||n.resource?.id,resource:n.resource},await K(),ne.value?.openDialog(n)};async function I(){if(!j.value||!h.value||!G.value.length){j.value=!1;return}await K(),!(!h.value||!G.value.length)&&(E.value=!0,j.value=!1)}const V=n=>String(n??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"),Re=()=>{if(!v.value.length)return;const n=[["Money made",l(s.value.netRevenue),`${l(s.value.grossRevenue)} gross - ${l(s.value.refundAmount)} refunds`],["Orders",m(s.value.orders),`${m(s.value.confirmedOrders)} confirmed`],["Reservations",m(s.value.reservations),`${m(s.value.spots)} spots booked`],["Refunds",m(s.value.refundCount),`${l(s.value.refundAmount)} refunded`]],t=[["Gross revenue",l(s.value.grossRevenue)],["Refunds",l(s.value.refundAmount)],["Net revenue",l(s.value.netRevenue)],["Money collected",l(s.value.moneyCollected)],["Amount due",l(s.value.amountDue)],["Pending order value",l(s.value.pendingRevenue)],["Cancelled order value",l(s.value.cancelledRevenue)],["Average confirmed order",l(s.value.averageOrder)],["Average reservation",l(s.value.averageReservation)]],o=d=>d.map(b=>`<tr>${b.map(p=>`<td>${V(p)}</td>`).join("")}</tr>`).join(""),r=`<!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Appointments Report ${V(x.value)} - ${V(N.value)}</title>
7
+ <style>
8
+ * { box-sizing: border-box; }
9
+ body {
10
+ margin: 0;
11
+ padding: 40px;
12
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
13
+ color: #111827;
14
+ background: #f8fafc;
15
+ }
16
+ .report {
17
+ max-width: 1040px;
18
+ margin: 0 auto;
19
+ background: #ffffff;
20
+ border: 1px solid #e5e7eb;
21
+ border-radius: 8px;
22
+ padding: 32px;
23
+ }
24
+ h1, h2 { margin: 0; }
25
+ h1 { font-size: 28px; letter-spacing: 0; }
26
+ h2 { font-size: 16px; margin-bottom: 12px; }
27
+ .muted { color: #6b7280; }
28
+ .header {
29
+ display: flex;
30
+ justify-content: space-between;
31
+ gap: 24px;
32
+ border-bottom: 1px solid #e5e7eb;
33
+ padding-bottom: 24px;
34
+ margin-bottom: 24px;
35
+ }
36
+ .cards {
37
+ display: grid;
38
+ grid-template-columns: repeat(4, minmax(0, 1fr));
39
+ gap: 12px;
40
+ margin-bottom: 24px;
41
+ }
42
+ .card {
43
+ border: 1px solid #e5e7eb;
44
+ border-radius: 8px;
45
+ padding: 16px;
46
+ background: #ffffff;
47
+ }
48
+ .card-label { font-size: 12px; color: #6b7280; margin-bottom: 8px; }
49
+ .card-value { font-size: 22px; font-weight: 700; }
50
+ .card-note { font-size: 12px; color: #6b7280; margin-top: 6px; }
51
+ .grid {
52
+ display: grid;
53
+ grid-template-columns: repeat(2, minmax(0, 1fr));
54
+ gap: 24px;
55
+ margin-bottom: 24px;
56
+ }
57
+ table {
58
+ width: 100%;
59
+ border-collapse: collapse;
60
+ font-size: 13px;
61
+ }
62
+ th, td {
63
+ border-bottom: 1px solid #e5e7eb;
64
+ padding: 10px 8px;
65
+ text-align: left;
66
+ }
67
+ th {
68
+ color: #6b7280;
69
+ font-weight: 600;
70
+ background: #f9fafb;
71
+ }
72
+ td:last-child, th:last-child { text-align: right; }
73
+ @media print {
74
+ body { background: #ffffff; padding: 0; }
75
+ .report { border: 0; }
76
+ }
77
+ </style>
78
+ </head>
79
+ <body>
80
+ <main class="report">
81
+ <section class="header">
82
+ <div>
83
+ <h1>Appointments Report</h1>
84
+ <p class="muted">${V(re.value)}</p>
85
+ </div>
86
+ <div class="muted">Generated ${V(new Date().toLocaleString("en-US"))}</div>
87
+ </section>
88
+
89
+ <section class="cards">
90
+ ${n.map(([d,b,p])=>`
91
+ <div class="card">
92
+ <div class="card-label">${V(d)}</div>
93
+ <div class="card-value">${V(b)}</div>
94
+ <div class="card-note">${V(p)}</div>
95
+ </div>
96
+ `).join("")}
97
+ </section>
98
+
99
+ <section class="grid">
100
+ <div>
101
+ <h2>Finance</h2>
102
+ <table><tbody>${o(t)}</tbody></table>
103
+ </div>
104
+ <div>
105
+ <h2>Order Status</h2>
106
+ <table>
107
+ <tbody>
108
+ ${o(ie.value.map(d=>[z(d.status),`${m(d.count)} - ${l(d.revenue)}`]))}
109
+ </tbody>
110
+ </table>
111
+ </div>
112
+ </section>
113
+
114
+ <section class="grid">
115
+ <div>
116
+ <h2>Reservation Status</h2>
117
+ <table>
118
+ <tbody>
119
+ ${o(ue.value.map(d=>[z(d.status),`${m(d.count)} - ${m(d.spots)} spots - ${l(d.revenue)}`]))}
120
+ </tbody>
121
+ </table>
122
+ </div>
123
+ <div>
124
+ <h2>Period Totals</h2>
125
+ <table><tbody>${o([["Start date",x.value],["End date",N.value],["Orders",m(s.value.orders)],["Reservations",m(s.value.reservations)]])}</tbody></table>
126
+ </div>
127
+ </section>
128
+
129
+ <section>
130
+ <h2>Daily Breakdown</h2>
131
+ <table>
132
+ <thead>
133
+ <tr>
134
+ <th>Date</th>
135
+ <th>Orders</th>
136
+ <th>Reservations</th>
137
+ <th>Gross</th>
138
+ <th>Refunds</th>
139
+ <th>Net</th>
140
+ </tr>
141
+ </thead>
142
+ <tbody>
143
+ ${Y.value.map(d=>`
144
+ <tr>
145
+ <td>${V(d.date)}</td>
146
+ <td>${V(m(d.orders))}</td>
147
+ <td>${V(m(d.reservations))}</td>
148
+ <td>${V(l(d.grossRevenue))}</td>
149
+ <td>${V(l(d.refunds))}</td>
150
+ <td>${V(l(d.netRevenue))}</td>
151
+ </tr>
152
+ `).join("")}
153
+ </tbody>
154
+ </table>
155
+ </section>
156
+ </main>
157
+ </body>
158
+ </html>`,i=new Blob([r],{type:"text/html;charset=utf-8"}),c=document.createElement("a");c.href=URL.createObjectURL(i),c.setAttribute("download",`appointments-report-${x.value}-to-${N.value}.html`),document.body.appendChild(c),c.click(),URL.revokeObjectURL(c.href),c.remove()},y=async()=>{if(!S.value){k.value=!0,Q(),h.value=null,j.value=!1,v.value=[];try{const{start:n,end:t}=xe(),o=await q.find(P.reservationsCollection,{filters:[{field:"agendaId",operator:"==",value:Z.value},{field:"createdAt",operator:">=",value:n.toISOString()},{field:"createdAt",operator:"<=",value:t.toISOString()}]});v.value=o.map(r=>({...r,id:r.id||r.orderId||""})).sort((r,i)=>(R(i.createdAt)?.getTime()||0)-(R(r.createdAt)?.getTime()||0))}catch(n){console.error("Error loading report:",n),v.value=[]}finally{k.value=!1}}};return(async()=>{try{const n=await q.get(P.agendaCollection,Z.value);F.value=n,O.value=n?.resources?.filter(t=>t.isActive)||[]}catch(n){console.error("Error loading agenda context:",n),F.value=null,O.value=[]}})(),y(),(n,t)=>{const o=e.resolveComponent("Button"),r=e.resolveComponent("CardTitle"),i=e.resolveComponent("CardDescription"),c=e.resolveComponent("CardHeader"),d=e.resolveComponent("Label"),b=e.resolveComponent("Input"),p=e.resolveComponent("CardContent"),u=e.resolveComponent("Card"),f=e.resolveComponent("Separator"),B=e.resolveComponent("TableHead"),pe=e.resolveComponent("TableRow"),Te=e.resolveComponent("TableHeader"),$=e.resolveComponent("TableCell"),Ae=e.resolveComponent("TableBody"),Be=e.resolveComponent("Table"),$e=e.resolveComponent("ResponsiveModalTitle"),Oe=e.resolveComponent("ResponsiveModalDescription"),je=e.resolveComponent("ResponsiveModalHeader"),Me=e.resolveComponent("ResponsiveModalFooter"),ze=e.resolveComponent("ResponsiveModalScrollContent"),Ie=e.resolveComponent("ResponsiveModal");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Fe._sfc_main,null,{default:e.withCtx(()=>[e.createElementVNode("div",Ue,[e.createElementVNode("div",Le,[e.createElementVNode("div",null,[e.createElementVNode("h1",qe,[e.createVNode(e.unref(g.BarChart3),{class:"size-6"}),t[7]||(t[7]=e.createTextVNode(" Reports ",-1))]),t[8]||(t[8]=e.createElementVNode("p",{class:"text-muted-foreground text-sm mt-1"}," Financial statistics for orders placed in a selected period. ",-1))]),e.createElementVNode("div",He,[e.createVNode(o,{variant:"outline",onClick:Re,disabled:e.unref(k)||!!e.unref(S)||e.unref(v).length===0},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Download),{class:"size-4"}),t[9]||(t[9]=e.createTextVNode(" Download Report ",-1))]),_:1},8,["disabled"]),e.createVNode(o,{variant:"outline",onClick:y,disabled:e.unref(k)||!!e.unref(S)},{default:e.withCtx(()=>[e.createVNode(e.unref(g.RefreshCw),{class:e.normalizeClass(["size-4",{"animate-spin":e.unref(k)}])},null,8,["class"]),t[10]||(t[10]=e.createTextVNode(" Refresh ",-1))]),_:1},8,["disabled"])])]),e.createVNode(u,{class:"-mx-6 rounded-none border-x-0 @5xl:mx-0 @5xl:rounded-xl @5xl:border-x-[1px]"},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,{class:"flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.CalendarIcon),{class:"size-5"}),t[11]||(t[11]=e.createTextVNode(" Period ",-1))]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(re)),1)]),_:1})]),_:1}),e.createVNode(p,{class:"space-y-4"},{default:e.withCtx(()=>[e.createElementVNode("div",Ye,[e.createElementVNode("div",Ge,[e.createVNode(d,{for:"report-start-date"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Start date",-1)])]),_:1}),e.createVNode(b,{id:"report-start-date",modelValue:e.unref(x),"onUpdate:modelValue":t[0]||(t[0]=a=>e.isRef(x)?x.value=a:null),type:"date"},null,8,["modelValue"])]),e.createElementVNode("div",Qe,[e.createVNode(d,{for:"report-end-date"},{default:e.withCtx(()=>[...t[13]||(t[13]=[e.createTextVNode("End date",-1)])]),_:1}),e.createVNode(b,{id:"report-end-date",modelValue:e.unref(N),"onUpdate:modelValue":t[1]||(t[1]=a=>e.isRef(N)?N.value=a:null),type:"date"},null,8,["modelValue"])]),e.createVNode(o,{class:"md:whitespace-nowrap",onClick:y,disabled:e.unref(k)||!!e.unref(S)},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" Generate Report ",-1)])]),_:1},8,["disabled"])]),e.unref(S)?(e.openBlock(),e.createElementBlock("p",Ke,e.toDisplayString(e.unref(S)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Je,[e.createVNode(o,{variant:"outline",size:"sm",onClick:t[2]||(t[2]=a=>{Ne(),y()})},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createTextVNode(" This quarter ",-1)])]),_:1}),e.createVNode(o,{variant:"outline",size:"sm",onClick:t[3]||(t[3]=a=>{Ve(),y()})},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createTextVNode(" Previous quarter ",-1)])]),_:1}),e.createVNode(o,{variant:"outline",size:"sm",onClick:t[4]||(t[4]=a=>{be(),y()})},{default:e.withCtx(()=>[...t[17]||(t[17]=[e.createTextVNode(" Year to date ",-1)])]),_:1})])]),_:1})]),_:1}),e.unref(k)?(e.openBlock(),e.createElementBlock("div",We,[...t[18]||(t[18]=[e.createElementVNode("div",{class:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"},null,-1)])])):e.unref(v).length===0?(e.openBlock(),e.createElementBlock("div",Xe,[e.createVNode(e.unref(g.BarChart3),{class:"size-12 mx-auto mb-3 opacity-50"}),t[19]||(t[19]=e.createElementVNode("p",null,"No orders found for this period",-1))])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Ze,[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.BadgeEuro),{class:"size-4"}),t[20]||(t[20]=e.createTextVNode(" Money made ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",et,e.toDisplayString(l(e.unref(s).netRevenue)),1),e.createElementVNode("p",tt,e.toDisplayString(l(e.unref(s).grossRevenue))+" gross - "+e.toDisplayString(l(e.unref(s).refundAmount))+" refunds ",1)]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.ShoppingBag),{class:"size-4"}),t[21]||(t[21]=e.createTextVNode(" Orders ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",nt,e.toDisplayString(m(e.unref(s).orders)),1),e.createElementVNode("p",ot,e.toDisplayString(m(e.unref(s).confirmedOrders))+" confirmed ",1)]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Users),{class:"size-4"}),t[22]||(t[22]=e.createTextVNode(" Reservations ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",rt,e.toDisplayString(m(e.unref(s).reservations)),1),e.createElementVNode("p",at,e.toDisplayString(m(e.unref(s).spots))+" spots booked ",1)]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,{class:"pb-2"},{default:e.withCtx(()=>[e.createVNode(r,{class:"text-sm font-medium text-muted-foreground flex items-center gap-2"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Undo2),{class:"size-4"}),t[23]||(t[23]=e.createTextVNode(" Refunds ",-1))]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",st,e.toDisplayString(m(e.unref(s).refundCount)),1),e.createElementVNode("p",lt,e.toDisplayString(l(e.unref(s).refundAmount))+" refunded ",1)]),_:1})]),_:1})]),e.createElementVNode("div",dt,[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode("Finance",-1)])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[...t[25]||(t[25]=[e.createTextVNode("Confirmed orders are counted as revenue.",-1)])]),_:1})]),_:1}),e.createVNode(p,{class:"space-y-3 text-sm"},{default:e.withCtx(()=>[e.createElementVNode("div",it,[t[26]||(t[26]=e.createElementVNode("span",{class:"text-muted-foreground"},"Gross revenue",-1)),e.createElementVNode("span",ut,e.toDisplayString(l(e.unref(s).grossRevenue)),1)]),e.createElementVNode("div",ct,[t[27]||(t[27]=e.createElementVNode("span",{class:"text-muted-foreground"},"Refunds",-1)),e.createElementVNode("span",mt,e.toDisplayString(l(e.unref(s).refundAmount)),1)]),e.createVNode(f),e.createElementVNode("div",ft,[t[28]||(t[28]=e.createElementVNode("span",{class:"text-muted-foreground"},"Net revenue",-1)),e.createElementVNode("span",pt,e.toDisplayString(l(e.unref(s).netRevenue)),1)]),e.createElementVNode("div",gt,[t[29]||(t[29]=e.createElementVNode("span",{class:"text-muted-foreground"},"Money collected",-1)),e.createElementVNode("span",vt,e.toDisplayString(l(e.unref(s).moneyCollected)),1)]),e.createElementVNode("div",xt,[t[30]||(t[30]=e.createElementVNode("span",{class:"text-muted-foreground"},"Amount due",-1)),e.createElementVNode("span",Nt,e.toDisplayString(l(e.unref(s).amountDue)),1)]),e.createElementVNode("div",Vt,[t[31]||(t[31]=e.createElementVNode("span",{class:"text-muted-foreground"},"Pending order value",-1)),e.createElementVNode("span",bt,e.toDisplayString(l(e.unref(s).pendingRevenue)),1)]),e.createElementVNode("div",yt,[t[32]||(t[32]=e.createElementVNode("span",{class:"text-muted-foreground"},"Cancelled order value",-1)),e.createElementVNode("span",ht,e.toDisplayString(l(e.unref(s).cancelledRevenue)),1)]),e.createElementVNode("div",Ct,[t[33]||(t[33]=e.createElementVNode("span",{class:"text-muted-foreground"},"Average confirmed order",-1)),e.createElementVNode("span",_t,e.toDisplayString(l(e.unref(s).averageOrder)),1)]),e.createElementVNode("div",wt,[t[34]||(t[34]=e.createElementVNode("span",{class:"text-muted-foreground"},"Average reservation",-1)),e.createElementVNode("span",Dt,e.toDisplayString(l(e.unref(s).averageReservation)),1)])]),_:1})]),_:1}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[35]||(t[35]=[e.createTextVNode("Status Breakdown",-1)])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[...t[36]||(t[36]=[e.createTextVNode("Orders and reservation lines in this period.",-1)])]),_:1})]),_:1}),e.createVNode(p,{class:"space-y-5"},{default:e.withCtx(()=>[e.createElementVNode("div",null,[e.createElementVNode("div",kt,[e.createVNode(e.unref(g.Receipt),{class:"size-4"}),t[37]||(t[37]=e.createTextVNode(" Orders ",-1))]),e.createElementVNode("div",Et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ie),a=>(e.openBlock(),e.createElementBlock("div",{key:a.status,class:"flex items-center justify-between gap-4"},[e.createElementVNode("span",St,e.toDisplayString(z(a.status)),1),e.createElementVNode("span",Rt,e.toDisplayString(m(a.count))+" · "+e.toDisplayString(l(a.revenue)),1)]))),128))])]),e.createVNode(f),e.createElementVNode("div",null,[e.createElementVNode("div",Tt,[e.createVNode(e.unref(g.Users),{class:"size-4"}),t[38]||(t[38]=e.createTextVNode(" Reservations ",-1))]),e.createElementVNode("div",At,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ue),a=>(e.openBlock(),e.createElementBlock("div",{key:a.status,class:"flex items-center justify-between gap-4"},[e.createElementVNode("span",Bt,e.toDisplayString(z(a.status)),1),e.createElementVNode("span",$t,e.toDisplayString(m(a.count))+" · "+e.toDisplayString(m(a.spots))+" spots · "+e.toDisplayString(l(a.revenue)),1)]))),128))])])]),_:1})]),_:1})]),e.createVNode(u,{class:"-mx-6 rounded-none border-x-0 @5xl:mx-0 @5xl:rounded-xl @5xl:border-x-[1px]"},{default:e.withCtx(()=>[e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[...t[39]||(t[39]=[e.createTextVNode("Daily Breakdown",-1)])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[...t[40]||(t[40]=[e.createTextVNode("Select a date to review the orders placed that day.",-1)])]),_:1})]),_:1}),e.createVNode(p,null,{default:e.withCtx(()=>[e.createElementVNode("div",Ot,[e.createVNode(Be,null,{default:e.withCtx(()=>[e.createVNode(Te,null,{default:e.withCtx(()=>[e.createVNode(pe,null,{default:e.withCtx(()=>[e.createVNode(B,null,{default:e.withCtx(()=>[...t[41]||(t[41]=[e.createTextVNode("Date",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[42]||(t[42]=[e.createTextVNode("Orders",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[43]||(t[43]=[e.createTextVNode("Reservations",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[44]||(t[44]=[e.createTextVNode("Gross",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[45]||(t[45]=[e.createTextVNode("Refunds",-1)])]),_:1}),e.createVNode(B,{class:"text-right"},{default:e.withCtx(()=>[...t[46]||(t[46]=[e.createTextVNode("Net",-1)])]),_:1})]),_:1})]),_:1}),e.createVNode(Ae,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Y),a=>(e.openBlock(),e.createBlock(pe,{key:a.date},{default:e.withCtx(()=>[e.createVNode($,{class:"font-medium"},{default:e.withCtx(()=>[a.date!=="Unknown date"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"inline-flex items-center gap-1 rounded-sm text-left hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2","aria-label":`View orders placed on ${ce(a.date)}`,onClick:Pe=>Ce(a)},[e.createTextVNode(e.toDisplayString(a.date)+" ",1),e.createVNode(e.unref(g.ChevronRight),{class:"size-3.5 text-muted-foreground"})],8,jt)):(e.openBlock(),e.createElementBlock("span",Mt,e.toDisplayString(a.date),1))]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m(a.orders)),1)]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m(a.reservations)),1)]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(a.grossRevenue)),1)]),_:2},1024),e.createVNode($,{class:"text-right"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(a.refunds)),1)]),_:2},1024),e.createVNode($,{class:"text-right font-medium"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l(a.netRevenue)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])]),_:1})]),_:1})],64))])]),_:1}),e.createVNode(Ie,{open:e.unref(E),"onUpdate:open":_e},{default:e.withCtx(()=>[e.createVNode(ze,{class:"sm:max-w-2xl"},{default:e.withCtx(()=>[e.createVNode(je,null,{default:e.withCtx(()=>[e.createVNode($e,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(h)?ce(e.unref(h)):"Daily orders"),1)]),_:1}),e.unref(U)?(e.openBlock(),e.createBlock(Oe,{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(L(e.unref(U).orders,"order"))+" placed · "+e.toDisplayString(L(e.unref(U).reservations,"reservation"))+" · "+e.toDisplayString(l(e.unref(U).netRevenue))+" net revenue ",1)]),_:1})):e.createCommentVNode("",!0)]),_:1}),e.createElementVNode("div",zt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),a=>(e.openBlock(),e.createElementBlock("button",{key:a.id,type:"button",class:e.normalizeClass(["flex w-full flex-col items-stretch gap-3 rounded-lg border bg-background p-4 text-left transition-colors hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 sm:flex-row sm:items-center",{"cursor-wait opacity-70":e.unref(w)!==null}]),disabled:!a.id||!a.reservations?.length,"aria-disabled":e.unref(w)!==null,"aria-busy":e.unref(w)===a.id,onClick:Pe=>fe(a.id,!0)},[e.createElementVNode("div",Pt,[e.createElementVNode("div",Ft,[e.createElementVNode("span",Ut,e.toDisplayString(De(a)),1),e.createElementVNode("span",{class:e.normalizeClass(["shrink-0 rounded-full px-2 py-0.5 text-xs font-medium",me(a.status).class])},e.toDisplayString(me(a.status).label),3)]),e.createElementVNode("div",Lt,[e.createElementVNode("span",null,"Order #"+e.toDisplayString(a.id.slice(0,8)),1),e.createElementVNode("span",qt,[e.createVNode(e.unref(g.Clock),{class:"size-3.5"}),e.createTextVNode(" "+e.toDisplayString(we(a.createdAt)),1)]),e.createElementVNode("span",null,e.toDisplayString(L(a.reservations?.length||0,"reservation"))+" · "+e.toDisplayString(L(ke(a),"spot")),1)])]),e.createElementVNode("div",Ht,[e.createElementVNode("span",Yt,e.toDisplayString(l(D(a))),1),a.reservations?.length?e.unref(w)===a.id?(e.openBlock(),e.createBlock(e.unref(g.LoaderCircle),{key:1,class:"size-4 animate-spin text-muted-foreground"})):(e.openBlock(),e.createBlock(e.unref(g.ChevronRight),{key:2,class:"size-4 text-muted-foreground"})):(e.openBlock(),e.createElementBlock("span",Gt,"No details"))])],10,It))),128))]),e.createVNode(Me,null,{default:e.withCtx(()=>[e.createVNode(o,{variant:"outline",onClick:Q},{default:e.withCtx(()=>[...t[47]||(t[47]=[e.createTextVNode("Close",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["open"]),e.createVNode(ge._sfc_main$1,{ref_key:"reservationDetailDialog",ref:ne,"agenda-data":e.unref(F),resources:e.unref(O),"show-order-link":"",onCancelled:y,onConfirmed:y,onRejected:y,onTransferred:y,onOpenOrder:t[5]||(t[5]=a=>fe(a)),onClosed:I},null,8,["agenda-data","resources"]),e.createVNode(ge._sfc_main$2,{ref_key:"orderDetailDialog",ref:te,"agenda-data":e.unref(F),resources:e.unref(O),onOpenReservation:t[6]||(t[6]=a=>Se(a)),onClosed:I},null,8,["agenda-data","resources"])],64)}}});exports.default=Qt;
@@ -0,0 +1,204 @@
1
+ import { defineComponent as S, inject as k, computed as N, resolveComponent as d, openBlock as u, createElementBlock as p, createElementVNode as a, createVNode as o, withCtx as i, createTextVNode as m, unref as s, Fragment as U, createCommentVNode as P, createBlock as F, normalizeClass as I, markRaw as w } from "vue";
2
+ import { Table2 as y } from "lucide-vue-next";
3
+ import { nodeProps as D, NodeToolbarWrapper as $, Handle as E, Position as _, NodeContextMenu as j } from "@oneclick.dev/cms-kit/flow-builder";
4
+ const M = { class: "w-full" }, O = { class: "grid gap-2 mb-4" }, z = {
5
+ key: 0,
6
+ class: "mt-4"
7
+ }, B = { class: "my-4" }, G = { class: "flex items-center justify-between gap-2" }, J = /* @__PURE__ */ S({
8
+ __name: "TableRowEditor",
9
+ props: {
10
+ modelValue: {
11
+ type: Object,
12
+ required: !0
13
+ }
14
+ },
15
+ emits: ["update:modelValue"],
16
+ setup(b, { emit: t }) {
17
+ const l = b, r = k("allAvailableVariables", []), v = t, n = N({
18
+ get: () => l.modelValue,
19
+ set: (V) => {
20
+ v("update:modelValue", V);
21
+ }
22
+ });
23
+ return (V, e) => {
24
+ const T = d("SelectValue"), h = d("SelectTrigger"), f = d("SelectItem"), x = d("SelectGroup"), C = d("SelectContent"), A = d("Select"), g = d("CodeEditor"), R = d("Switch");
25
+ return u(), p("div", M, [
26
+ e[11] || (e[11] = a("p", { class: "text-sm text-muted-foreground mb-4" }, " Performs visual row actions. Actual data changes must be handled in your connected flows. ", -1)),
27
+ a("div", O, [
28
+ e[7] || (e[7] = a("p", { class: "text-sm font-semibold" }, "Method", -1)),
29
+ o(A, {
30
+ modelValue: n.value.data.method,
31
+ "onUpdate:modelValue": e[0] || (e[0] = (c) => n.value.data.method = c)
32
+ }, {
33
+ default: i(() => [
34
+ o(h, { class: "w-full" }, {
35
+ default: i(() => [
36
+ o(T, { placeholder: "Select a method" })
37
+ ]),
38
+ _: 1
39
+ }),
40
+ o(C, null, {
41
+ default: i(() => [
42
+ o(x, null, {
43
+ default: i(() => [
44
+ o(f, { value: "CREATE" }, {
45
+ default: i(() => [...e[4] || (e[4] = [
46
+ m("Create new row", -1)
47
+ ])]),
48
+ _: 1
49
+ }),
50
+ o(f, { value: "UPDATE" }, {
51
+ default: i(() => [...e[5] || (e[5] = [
52
+ m("Update row", -1)
53
+ ])]),
54
+ _: 1
55
+ }),
56
+ o(f, { value: "REMOVE" }, {
57
+ default: i(() => [...e[6] || (e[6] = [
58
+ m("Remove row", -1)
59
+ ])]),
60
+ _: 1
61
+ })
62
+ ]),
63
+ _: 1
64
+ })
65
+ ]),
66
+ _: 1
67
+ })
68
+ ]),
69
+ _: 1
70
+ }, 8, ["modelValue"])
71
+ ]),
72
+ n.value.data.method === "CREATE" ? (u(), p("div", z, [
73
+ o(g, {
74
+ modelValue: n.value.data.returnValueFn,
75
+ "onUpdate:modelValue": e[1] || (e[1] = (c) => n.value.data.returnValueFn = c),
76
+ variables: s(r),
77
+ placeholder: "return ...",
78
+ class: "mb-1"
79
+ }, null, 8, ["modelValue", "variables"]),
80
+ e[8] || (e[8] = a("p", { class: "text-xs text-stone-500" }, [
81
+ m("Just make sure you "),
82
+ a("b", null, "return"),
83
+ m(" a value")
84
+ ], -1))
85
+ ])) : n.value.data.method === "UPDATE" ? (u(), p(U, { key: 1 }, [
86
+ a("div", B, [
87
+ o(g, {
88
+ modelValue: n.value.data.returnValueFn,
89
+ "onUpdate:modelValue": e[2] || (e[2] = (c) => n.value.data.returnValueFn = c),
90
+ variables: s(r),
91
+ placeholder: "return ...",
92
+ class: "mb-1"
93
+ }, null, 8, ["modelValue", "variables"]),
94
+ e[9] || (e[9] = a("p", { class: "text-xs text-stone-500" }, [
95
+ m("Just make sure you "),
96
+ a("b", null, "return"),
97
+ m(" a value")
98
+ ], -1))
99
+ ]),
100
+ a("div", G, [
101
+ e[10] || (e[10] = a("label", {
102
+ class: "text-sm font-semibold select-none",
103
+ for: "return-data"
104
+ }, "Merge data", -1)),
105
+ o(R, {
106
+ modelValue: n.value.data.mergeData,
107
+ "onUpdate:modelValue": e[3] || (e[3] = (c) => n.value.data.mergeData = c),
108
+ id: "return-data"
109
+ }, null, 8, ["modelValue"])
110
+ ])
111
+ ], 64)) : P("", !0)
112
+ ]);
113
+ };
114
+ }
115
+ }), W = { class: "flex items-center gap-2" }, q = { key: 0 }, H = { key: 1 }, L = { key: 2 }, K = {
116
+ key: 3,
117
+ class: "opacity-50"
118
+ }, Q = {
119
+ __name: "TableRowNode",
120
+ props: D,
121
+ setup(b) {
122
+ return (t, l) => (u(), F(s($), {
123
+ nodeId: t.id,
124
+ toolbarVisible: t.data.toolbarVisible,
125
+ toolbarPosition: t.data.toolbarPosition
126
+ }, {
127
+ default: i(() => [
128
+ o(s(E), {
129
+ type: "target",
130
+ position: s(_).Left
131
+ }, null, 8, ["position"]),
132
+ a("div", W, [
133
+ a("div", {
134
+ class: I(["size-8 text-white rounded-xl flex items-center justify-center", `${t.data.method ? "bg-blue-500" : "bg-gray-600 opacity-50"}`])
135
+ }, [
136
+ o(s(y), { class: "size-5" })
137
+ ], 2),
138
+ a("div", null, [
139
+ t.data.method === "CREATE" ? (u(), p("span", q, "Table: Create row")) : t.data.method === "UPDATE" ? (u(), p("span", H, "Table: Update row")) : t.data.method === "REMOVE" ? (u(), p("span", L, "Table: Remove row")) : (u(), p("span", K, "Select a table method"))
140
+ ])
141
+ ]),
142
+ o(s(j), { nodeId: t.id }, null, 8, ["nodeId"]),
143
+ o(s(E), {
144
+ type: "source",
145
+ id: "success",
146
+ position: s(_).Right
147
+ }, null, 8, ["position"])
148
+ ]),
149
+ _: 1
150
+ }, 8, ["nodeId", "toolbarVisible", "toolbarPosition"]));
151
+ }
152
+ };
153
+ function te(b = {}) {
154
+ const { tableRowActions: t } = b;
155
+ return {
156
+ type: {
157
+ label: "Table row action",
158
+ value: "table-row-action",
159
+ icon: w(y),
160
+ buttonClass: "bg-gray-800 text-white"
161
+ },
162
+ editor: w(J),
163
+ node: w(Q),
164
+ async processFunction(l, { node: r }) {
165
+ if (!t) {
166
+ console.warn("[table-row-action] No tableRowActions provided, ignoring action.");
167
+ return;
168
+ }
169
+ let v = X(r.data.returnValueFn, l);
170
+ switch (r.data.method) {
171
+ case "CREATE":
172
+ if (!t.create) {
173
+ console.warn("[table-row-action] No create handler provided, ignoring action.");
174
+ return;
175
+ }
176
+ return t.create(v), { finishedTableAction: !0 };
177
+ case "UPDATE":
178
+ if (!t.update) {
179
+ console.warn("[table-row-action] No update handler provided, ignoring action.");
180
+ return;
181
+ }
182
+ return t.update(l.tableActiveRowIndex, v, r.data.mergeData || !1), { finishedTableAction: !0 };
183
+ case "REMOVE":
184
+ if (!t.remove) {
185
+ console.warn("[table-row-action] No remove handler provided, ignoring action.");
186
+ return;
187
+ }
188
+ return t.remove(l.tableActiveRowIndex), { finishedTableAction: !0 };
189
+ default:
190
+ return;
191
+ }
192
+ }
193
+ };
194
+ }
195
+ const X = (b, t = {}) => {
196
+ var l = document.createElement("iframe");
197
+ document.body.appendChild(l);
198
+ var r = l.contentWindow?.Function;
199
+ if (document.body.removeChild(l), !r) throw new Error("Unable to create sandboxed function.");
200
+ return r(...Object.keys(t), "'use strict';" + b)(...Object.values(t));
201
+ };
202
+ export {
203
+ te as c
204
+ };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),p=require("lucide-vue-next"),d=require("@oneclick.dev/cms-kit/flow-builder"),N={class:"w-full"},x={class:"grid gap-2 mb-4"},C={key:0,class:"mt-4"},T={class:"my-4"},g={class:"flex items-center justify-between gap-2"},h=e.defineComponent({__name:"TableRowEditor",props:{modelValue:{type:Object,required:!0}},emits:["update:modelValue"],setup(s,{emit:o}){const a=s,l=e.inject("allAvailableVariables",[]),i=o,n=e.computed({get:()=>a.modelValue,set:u=>{i("update:modelValue",u)}});return(u,t)=>{const V=e.resolveComponent("SelectValue"),b=e.resolveComponent("SelectTrigger"),c=e.resolveComponent("SelectItem"),v=e.resolveComponent("SelectGroup"),w=e.resolveComponent("SelectContent"),f=e.resolveComponent("Select"),m=e.resolveComponent("CodeEditor"),E=e.resolveComponent("Switch");return e.openBlock(),e.createElementBlock("div",N,[t[11]||(t[11]=e.createElementVNode("p",{class:"text-sm text-muted-foreground mb-4"}," Performs visual row actions. Actual data changes must be handled in your connected flows. ",-1)),e.createElementVNode("div",x,[t[7]||(t[7]=e.createElementVNode("p",{class:"text-sm font-semibold"},"Method",-1)),e.createVNode(f,{modelValue:n.value.data.method,"onUpdate:modelValue":t[0]||(t[0]=r=>n.value.data.method=r)},{default:e.withCtx(()=>[e.createVNode(b,{class:"w-full"},{default:e.withCtx(()=>[e.createVNode(V,{placeholder:"Select a method"})]),_:1}),e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(v,null,{default:e.withCtx(()=>[e.createVNode(c,{value:"CREATE"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Create new row",-1)])]),_:1}),e.createVNode(c,{value:"UPDATE"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Update row",-1)])]),_:1}),e.createVNode(c,{value:"REMOVE"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Remove row",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),n.value.data.method==="CREATE"?(e.openBlock(),e.createElementBlock("div",C,[e.createVNode(m,{modelValue:n.value.data.returnValueFn,"onUpdate:modelValue":t[1]||(t[1]=r=>n.value.data.returnValueFn=r),variables:e.unref(l),placeholder:"return ...",class:"mb-1"},null,8,["modelValue","variables"]),t[8]||(t[8]=e.createElementVNode("p",{class:"text-xs text-stone-500"},[e.createTextVNode("Just make sure you "),e.createElementVNode("b",null,"return"),e.createTextVNode(" a value")],-1))])):n.value.data.method==="UPDATE"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",T,[e.createVNode(m,{modelValue:n.value.data.returnValueFn,"onUpdate:modelValue":t[2]||(t[2]=r=>n.value.data.returnValueFn=r),variables:e.unref(l),placeholder:"return ...",class:"mb-1"},null,8,["modelValue","variables"]),t[9]||(t[9]=e.createElementVNode("p",{class:"text-xs text-stone-500"},[e.createTextVNode("Just make sure you "),e.createElementVNode("b",null,"return"),e.createTextVNode(" a value")],-1))]),e.createElementVNode("div",g,[t[10]||(t[10]=e.createElementVNode("label",{class:"text-sm font-semibold select-none",for:"return-data"},"Merge data",-1)),e.createVNode(E,{modelValue:n.value.data.mergeData,"onUpdate:modelValue":t[3]||(t[3]=r=>n.value.data.mergeData=r),id:"return-data"},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0)])}}}),k={class:"flex items-center gap-2"},_={key:0},y={key:1},R={key:2},A={key:3,class:"opacity-50"},B={__name:"TableRowNode",props:d.nodeProps,setup(s){return(o,a)=>(e.openBlock(),e.createBlock(e.unref(d.NodeToolbarWrapper),{nodeId:o.id,toolbarVisible:o.data.toolbarVisible,toolbarPosition:o.data.toolbarPosition},{default:e.withCtx(()=>[e.createVNode(e.unref(d.Handle),{type:"target",position:e.unref(d.Position).Left},null,8,["position"]),e.createElementVNode("div",k,[e.createElementVNode("div",{class:e.normalizeClass(["size-8 text-white rounded-xl flex items-center justify-center",`${o.data.method?"bg-blue-500":"bg-gray-600 opacity-50"}`])},[e.createVNode(e.unref(p.Table2),{class:"size-5"})],2),e.createElementVNode("div",null,[o.data.method==="CREATE"?(e.openBlock(),e.createElementBlock("span",_,"Table: Create row")):o.data.method==="UPDATE"?(e.openBlock(),e.createElementBlock("span",y,"Table: Update row")):o.data.method==="REMOVE"?(e.openBlock(),e.createElementBlock("span",R,"Table: Remove row")):(e.openBlock(),e.createElementBlock("span",A,"Select a table method"))])]),e.createVNode(e.unref(d.NodeContextMenu),{nodeId:o.id},null,8,["nodeId"]),e.createVNode(e.unref(d.Handle),{type:"source",id:"success",position:e.unref(d.Position).Right},null,8,["position"])]),_:1},8,["nodeId","toolbarVisible","toolbarPosition"]))}};function S(s={}){const{tableRowActions:o}=s;return{type:{label:"Table row action",value:"table-row-action",icon:e.markRaw(p.Table2),buttonClass:"bg-gray-800 text-white"},editor:e.markRaw(h),node:e.markRaw(B),async processFunction(a,{node:l}){if(!o){console.warn("[table-row-action] No tableRowActions provided, ignoring action.");return}let i=P(l.data.returnValueFn,a);switch(l.data.method){case"CREATE":if(!o.create){console.warn("[table-row-action] No create handler provided, ignoring action.");return}return o.create(i),{finishedTableAction:!0};case"UPDATE":if(!o.update){console.warn("[table-row-action] No update handler provided, ignoring action.");return}return o.update(a.tableActiveRowIndex,i,l.data.mergeData||!1),{finishedTableAction:!0};case"REMOVE":if(!o.remove){console.warn("[table-row-action] No remove handler provided, ignoring action.");return}return o.remove(a.tableActiveRowIndex),{finishedTableAction:!0};default:return}}}}const P=(s,o={})=>{var a=document.createElement("iframe");document.body.appendChild(a);var l=a.contentWindow?.Function;if(document.body.removeChild(a),!l)throw new Error("Unable to create sandboxed function.");return l(...Object.keys(o),"'use strict';"+s)(...Object.values(o))};exports.createTableRowExtension=S;