@happyvertical/smrt-planner 0.57.15 → 0.57.16

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 (492) hide show
  1. package/app/404.html +19 -19
  2. package/app/_app/immutable/chunks/{CJqE_e1I.js → 1tQGPi8J.js} +1 -1
  3. package/app/_app/immutable/chunks/3JC1zxNN.js +1 -0
  4. package/app/_app/immutable/chunks/{U_YAf_lA.js → 6ott4F8t.js} +1 -1
  5. package/app/_app/immutable/chunks/{DRA2gZNq.js → B29WjYP5.js} +1 -1
  6. package/app/_app/immutable/chunks/{vcEpvgxL.js → BD6rgOfn.js} +1 -1
  7. package/app/_app/immutable/chunks/{B7IsOdeU.js → BEfnNZ_r.js} +1 -1
  8. package/app/_app/immutable/chunks/{CFtM7G4O.js → BG_AWqA3.js} +2 -2
  9. package/app/_app/immutable/chunks/{yGfNI8oR.js → BQGfk9t2.js} +1 -1
  10. package/app/_app/immutable/chunks/BaNbYf_w.js +1 -0
  11. package/app/_app/immutable/chunks/Bbl6Vsf2.js +1 -0
  12. package/app/_app/immutable/chunks/{BbwIep6z.js → Bcfb5I9y.js} +2 -2
  13. package/app/_app/immutable/chunks/{C5qDLfXy.js → BiGt7FLz.js} +1 -1
  14. package/app/_app/immutable/chunks/{DccCqD3p.js → BlPoOib9.js} +1 -1
  15. package/app/_app/immutable/chunks/{BwQnfuaZ.js → BnfHLvXn.js} +1 -1
  16. package/app/_app/immutable/chunks/{cr-zdIiU.js → BxTs8P01.js} +3 -3
  17. package/app/_app/immutable/chunks/{DCdUJsvL.js → BxX_79XJ.js} +1 -1
  18. package/app/_app/immutable/chunks/{y_YhL-Jh.js → C3soiNdP.js} +1 -1
  19. package/app/_app/immutable/chunks/{9YQb8EzH.js → CEGflXJ6.js} +1 -1
  20. package/app/_app/immutable/chunks/{B2rhYkoB.js → CMgP05SN.js} +1 -1
  21. package/app/_app/immutable/chunks/{D7hhQvDO.js → CMrsF8nJ.js} +1 -1
  22. package/app/_app/immutable/chunks/{hBMuE5Bx.js → CWQqx7C7.js} +1 -1
  23. package/app/_app/immutable/chunks/{0spQrfdd.js → CXPo72CL.js} +21 -21
  24. package/app/_app/immutable/chunks/{C6vmjDVg.js → CYql-HTd.js} +1 -1
  25. package/app/_app/immutable/chunks/CpfTjiSP.js +1 -0
  26. package/app/_app/immutable/chunks/{DGeUS20p.js → CxmNJ62m.js} +1 -1
  27. package/app/_app/immutable/chunks/D042ejzG.js +1 -0
  28. package/app/_app/immutable/chunks/{BrGblPBG.js → DBoTKMLo.js} +1 -1
  29. package/app/_app/immutable/chunks/{Dud4r5Jx.js → DJhmPAeb.js} +1 -1
  30. package/app/_app/immutable/chunks/{CaYLEdnq.js → DPcs_FRu.js} +1 -1
  31. package/app/_app/immutable/chunks/{BH-IcfAn.js → DURcYLyk.js} +3 -3
  32. package/app/_app/immutable/chunks/{CmwZFYXJ.js → Dapxnz2C.js} +1 -1
  33. package/app/_app/immutable/chunks/{CUqms96o.js → Dh1aRV-5.js} +1 -1
  34. package/app/_app/immutable/chunks/{Sj1Sr1av.js → KBE5GUjR.js} +1 -1
  35. package/app/_app/immutable/chunks/{DEy5w6rs.js → ZyeZpu_Z.js} +2 -2
  36. package/app/_app/immutable/chunks/{C5DQWmBa.js → dLwKu_Zp.js} +1 -1
  37. package/app/_app/immutable/chunks/{uMyA9vh1.js → vsq4E2m7.js} +1 -1
  38. package/app/_app/immutable/entry/{app.D8ErdGLu.js → app.CW8FtNr0.js} +2 -2
  39. package/app/_app/immutable/entry/start.CEefgxcS.js +1 -0
  40. package/app/_app/immutable/nodes/{0.BRhjnzgS.js → 0.DqyO6m6q.js} +1 -1
  41. package/app/_app/immutable/nodes/{1.i7liuUEv.js → 1.BIXVkBVQ.js} +1 -1
  42. package/app/_app/immutable/nodes/{10.C3_AufYj.js → 10.C4cTWnnq.js} +1 -1
  43. package/app/_app/immutable/nodes/{11.B0hIiOqN.js → 11.HoVqgyz1.js} +1 -1
  44. package/app/_app/immutable/nodes/{12.BSOZ4bO5.js → 12.CO24sNAm.js} +1 -1
  45. package/app/_app/immutable/nodes/{13.BVs8e3JB.js → 13.Clf4Jyo5.js} +1 -1
  46. package/app/_app/immutable/nodes/{14.DD0wkvaL.js → 14.oo80hNyP.js} +1 -1
  47. package/app/_app/immutable/nodes/{2.CDeoJM-_.js → 2.bUwTzzu3.js} +3 -3
  48. package/app/_app/immutable/nodes/{3.BEVyZIIW.js → 3.BSL8eQrf.js} +1 -1
  49. package/app/_app/immutable/nodes/{4.BWGexoUS.js → 4.BNokdlBB.js} +1 -1
  50. package/app/_app/immutable/nodes/{5.BhlS2sOI.js → 5.CdEkISNH.js} +1 -1
  51. package/app/_app/immutable/nodes/{6.CjZ4T96O.js → 6._evVXUuN.js} +1 -1
  52. package/app/_app/immutable/nodes/{7.CcMSlqwb.js → 7.BJQbl-EW.js} +1 -1
  53. package/app/_app/immutable/nodes/{8.DxCvFjK2.js → 8.CaKFFEpk.js} +1 -1
  54. package/app/_app/immutable/nodes/{9.DDfmTabv.js → 9.D3k07D1g.js} +1 -1
  55. package/app/_app/version.json +1 -1
  56. package/app/advanced-styles/index.html +22 -22
  57. package/app/ai/index.html +25 -25
  58. package/app/blueprint/index.html +20 -20
  59. package/app/cookbook/index.html +20 -20
  60. package/app/index.html +28 -28
  61. package/app/m/ads/AdDeliveryTier/index.html +24 -24
  62. package/app/m/ads/AdEvent/index.html +24 -24
  63. package/app/m/ads/AdFormat/index.html +24 -24
  64. package/app/m/ads/AdGroup/index.html +24 -24
  65. package/app/m/ads/AdVariation/index.html +24 -24
  66. package/app/m/analytics/AnalyticsDataStream/index.html +24 -24
  67. package/app/m/analytics/AnalyticsEvent/index.html +24 -24
  68. package/app/m/analytics/AnalyticsProperty/index.html +24 -24
  69. package/app/m/analytics/AnalyticsReport/index.html +24 -24
  70. package/app/m/approvals/ApprovalEvent/index.html +24 -24
  71. package/app/m/approvals/ApprovalPolicy/index.html +24 -24
  72. package/app/m/approvals/ApprovalRequest/index.html +24 -24
  73. package/app/m/assets/Asset/attachments/index.html +25 -25
  74. package/app/m/assets/Asset/index.html +24 -24
  75. package/app/m/assets/AssetAssociation/index.html +24 -24
  76. package/app/m/assets/AssetMetafield/index.html +24 -24
  77. package/app/m/assets/AssetStatus/index.html +24 -24
  78. package/app/m/assets/AssetType/index.html +24 -24
  79. package/app/m/assets/Folder/index.html +24 -24
  80. package/app/m/chat/AgentSession/index.html +24 -24
  81. package/app/m/chat/ChatMessage/index.html +24 -24
  82. package/app/m/chat/ChatParticipant/index.html +24 -24
  83. package/app/m/chat/ChatReaction/index.html +24 -24
  84. package/app/m/chat/ChatRoom/index.html +24 -24
  85. package/app/m/chat/ChatThread/index.html +24 -24
  86. package/app/m/chat/VoiceGatewayTurn/index.html +24 -24
  87. package/app/m/chat/VoiceSession/index.html +24 -24
  88. package/app/m/commerce/Agreement/index.html +24 -24
  89. package/app/m/commerce/Cart/index.html +24 -24
  90. package/app/m/commerce/Contract/index.html +24 -24
  91. package/app/m/commerce/ContractLineItem/index.html +24 -24
  92. package/app/m/commerce/Customer/index.html +24 -24
  93. package/app/m/commerce/DocumentTax/index.html +24 -24
  94. package/app/m/commerce/Estimate/index.html +24 -24
  95. package/app/m/commerce/Fulfillment/index.html +24 -24
  96. package/app/m/commerce/FulfillmentLineItem/index.html +24 -24
  97. package/app/m/commerce/HistoricalCustomerFunds/index.html +24 -24
  98. package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +24 -24
  99. package/app/m/commerce/HistoricalSalesLine/index.html +24 -24
  100. package/app/m/commerce/Invoice/index.html +24 -24
  101. package/app/m/commerce/InvoiceLineItem/index.html +24 -24
  102. package/app/m/commerce/Lease/index.html +24 -24
  103. package/app/m/commerce/LicenseSale/index.html +24 -24
  104. package/app/m/commerce/Order/index.html +24 -24
  105. package/app/m/commerce/Payment/index.html +24 -24
  106. package/app/m/commerce/PaymentAllocation/index.html +24 -24
  107. package/app/m/commerce/PaymentInstrument/index.html +24 -24
  108. package/app/m/commerce/PaymentIntent/index.html +24 -24
  109. package/app/m/commerce/Payout/index.html +24 -24
  110. package/app/m/commerce/ProductionOrder/index.html +24 -24
  111. package/app/m/commerce/PurchaseContract/index.html +24 -24
  112. package/app/m/commerce/PurchaseOrder/index.html +24 -24
  113. package/app/m/commerce/SalesContract/index.html +24 -24
  114. package/app/m/commerce/SupplierQuote/index.html +24 -24
  115. package/app/m/commerce/TaxCode/index.html +24 -24
  116. package/app/m/commerce/TaxComponent/index.html +24 -24
  117. package/app/m/commerce/TaxSettings/index.html +24 -24
  118. package/app/m/commerce/TaxSummaryReport/index.html +24 -24
  119. package/app/m/commerce/TenantPaymentAccount/index.html +24 -24
  120. package/app/m/commerce/Vendor/index.html +24 -24
  121. package/app/m/commerce/WholesaleOrder/index.html +24 -24
  122. package/app/m/content/Content/index.html +24 -24
  123. package/app/m/content/ContentContribution/index.html +24 -24
  124. package/app/m/content/ContentContributionAttachment/index.html +24 -24
  125. package/app/m/content/ContentContributionRevision/index.html +24 -24
  126. package/app/m/content/ContentContributionType/index.html +24 -24
  127. package/app/m/content/ContentContributor/index.html +24 -24
  128. package/app/m/content/ContentCorrection/index.html +24 -24
  129. package/app/m/content/ContentFeedSource/index.html +24 -24
  130. package/app/m/content/ContentGovernanceAssignment/index.html +24 -24
  131. package/app/m/content/ContentGovernancePolicy/index.html +24 -24
  132. package/app/m/content/ContentGovernanceProfile/index.html +24 -24
  133. package/app/m/content/ContentReference/index.html +24 -24
  134. package/app/m/content/ContentReview/index.html +24 -24
  135. package/app/m/content/ContentVersion/index.html +24 -24
  136. package/app/m/events/Event/index.html +24 -24
  137. package/app/m/events/EventParticipant/index.html +24 -24
  138. package/app/m/events/EventSeries/index.html +24 -24
  139. package/app/m/events/EventType/index.html +24 -24
  140. package/app/m/expenses/Expense/index.html +24 -24
  141. package/app/m/facts/Fact/index.html +24 -24
  142. package/app/m/facts/FactContent/index.html +24 -24
  143. package/app/m/facts/FactEvidence/index.html +24 -24
  144. package/app/m/facts/FactSource/index.html +24 -24
  145. package/app/m/facts/FactSubject/index.html +24 -24
  146. package/app/m/facts/FactTag/index.html +24 -24
  147. package/app/m/fields/FieldPolicy/index.html +24 -24
  148. package/app/m/fields/FieldPolicySuggestion/index.html +24 -24
  149. package/app/m/fields/FieldUsageCounter/index.html +24 -24
  150. package/app/m/images/Image/index.html +24 -24
  151. package/app/m/inventory/InventoryLocation/index.html +24 -24
  152. package/app/m/inventory/StockLevel/index.html +24 -24
  153. package/app/m/inventory/StockMovement/index.html +24 -24
  154. package/app/m/ledgers/Account/index.html +24 -24
  155. package/app/m/ledgers/Journal/index.html +24 -24
  156. package/app/m/ledgers/JournalEntry/index.html +24 -24
  157. package/app/m/ledgers/Ledger/index.html +24 -24
  158. package/app/m/manufacturing/Assembly/index.html +24 -24
  159. package/app/m/manufacturing/BillOfMaterials/index.html +24 -24
  160. package/app/m/manufacturing/BomLine/index.html +24 -24
  161. package/app/m/manufacturing/Operation/index.html +24 -24
  162. package/app/m/manufacturing/ProductionRun/index.html +24 -24
  163. package/app/m/manufacturing/ProductionRunCompletion/index.html +24 -24
  164. package/app/m/manufacturing/RoutingStep/index.html +24 -24
  165. package/app/m/marketing/Campaign/index.html +24 -24
  166. package/app/m/marketing/CampaignChannel/index.html +24 -24
  167. package/app/m/marketing/CampaignMetricSnapshot/index.html +24 -24
  168. package/app/m/messages/Account/index.html +24 -24
  169. package/app/m/messages/Attachment/index.html +24 -24
  170. package/app/m/messages/Blacklist/index.html +24 -24
  171. package/app/m/messages/Email/failed-sends/index.html +25 -25
  172. package/app/m/messages/Email/index.html +24 -24
  173. package/app/m/messages/Email/mailbox/index.html +25 -25
  174. package/app/m/messages/EmailAccount/index.html +24 -24
  175. package/app/m/messages/EmailAttachment/index.html +24 -24
  176. package/app/m/messages/EmailFolder/index.html +24 -24
  177. package/app/m/messages/Message/index.html +24 -24
  178. package/app/m/messages/MessagingEndpoint/index.html +24 -24
  179. package/app/m/messages/PersonaMessageRoute/index.html +24 -24
  180. package/app/m/messages/SlackAccount/index.html +24 -24
  181. package/app/m/messages/SlackMessage/index.html +24 -24
  182. package/app/m/messages/TelegramAccount/index.html +24 -24
  183. package/app/m/messages/Tweet/index.html +24 -24
  184. package/app/m/messages/TwitterAccount/index.html +24 -24
  185. package/app/m/messages/Whitelist/index.html +24 -24
  186. package/app/m/messages/ZulipAccount/index.html +24 -24
  187. package/app/m/places/Place/index.html +24 -24
  188. package/app/m/places/PlaceType/index.html +24 -24
  189. package/app/m/products/Category/index.html +24 -24
  190. package/app/m/products/Material/index.html +24 -24
  191. package/app/m/products/Product/index.html +24 -24
  192. package/app/m/products/Product/ingredients/index.html +25 -25
  193. package/app/m/products/ProductVariant/index.html +24 -24
  194. package/app/m/products/Sku/index.html +24 -24
  195. package/app/m/profiles/ApiKey/index.html +24 -24
  196. package/app/m/profiles/Bot/index.html +24 -24
  197. package/app/m/profiles/MagicLinkToken/index.html +24 -24
  198. package/app/m/profiles/NostrIdentity/index.html +24 -24
  199. package/app/m/profiles/OidcIdentity/index.html +24 -24
  200. package/app/m/profiles/Organization/index.html +24 -24
  201. package/app/m/profiles/Person/index.html +24 -24
  202. package/app/m/profiles/Profile/index.html +24 -24
  203. package/app/m/profiles/ProfileMetadata/index.html +24 -24
  204. package/app/m/profiles/ProfileMetafield/index.html +24 -24
  205. package/app/m/profiles/ProfileRelationship/index.html +24 -24
  206. package/app/m/profiles/ProfileRelationshipTerm/index.html +24 -24
  207. package/app/m/profiles/ProfileRelationshipType/index.html +24 -24
  208. package/app/m/profiles/ProfileType/index.html +24 -24
  209. package/app/m/projects/Comment/index.html +24 -24
  210. package/app/m/projects/Issue/index.html +24 -24
  211. package/app/m/projects/Label/index.html +24 -24
  212. package/app/m/projects/Project/index.html +24 -24
  213. package/app/m/projects/ProjectIntegration/index.html +24 -24
  214. package/app/m/projects/PullRequest/index.html +24 -24
  215. package/app/m/projects/Repository/index.html +24 -24
  216. package/app/m/properties/Property/index.html +24 -24
  217. package/app/m/properties/Zone/index.html +24 -24
  218. package/app/m/reports/RuntimeReport/index.html +24 -24
  219. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +24 -24
  220. package/app/m/reports/SmrtReportLock/index.html +24 -24
  221. package/app/m/reports/SmrtReportRefreshTask/index.html +24 -24
  222. package/app/m/reports/SmrtReportRun/index.html +24 -24
  223. package/app/m/reports/SmrtReportSchedule/index.html +24 -24
  224. package/app/m/reports/SmrtReportWatermark/index.html +24 -24
  225. package/app/m/sales/Agreement/index.html +24 -24
  226. package/app/m/sales/AttributionException/index.html +24 -24
  227. package/app/m/sales/AttributionPolicy/index.html +24 -24
  228. package/app/m/sales/Commission/index.html +24 -24
  229. package/app/m/sales/CommissionAdjustment/index.html +24 -24
  230. package/app/m/sales/CommissionPayout/index.html +24 -24
  231. package/app/m/sales/CommissionPlan/index.html +24 -24
  232. package/app/m/sales/Earner/index.html +24 -24
  233. package/app/m/sales/EarnerSourceAttribution/index.html +24 -24
  234. package/app/m/sales/EarningEvent/index.html +24 -24
  235. package/app/m/sales/ExecutedAgreement/index.html +24 -24
  236. package/app/m/sales/Lead/index.html +24 -24
  237. package/app/m/sales/Opportunity/index.html +24 -24
  238. package/app/m/sales/OpportunityConversion/index.html +24 -24
  239. package/app/m/sales/PipelineDefinition/index.html +24 -24
  240. package/app/m/sales/PipelineStage/index.html +24 -24
  241. package/app/m/sales/Referral/index.html +24 -24
  242. package/app/m/sales/ReferralAgreement/index.html +24 -24
  243. package/app/m/sales/ReferralLink/index.html +24 -24
  244. package/app/m/sales/ReferralProgram/index.html +24 -24
  245. package/app/m/sales/ReferralTermSnapshot/index.html +24 -24
  246. package/app/m/sales/ReferralTouch/index.html +24 -24
  247. package/app/m/sales/Referrer/index.html +24 -24
  248. package/app/m/sales/SalesActivity/index.html +24 -24
  249. package/app/m/sales/SalesRepresentative/index.html +24 -24
  250. package/app/m/sites/Site/index.html +24 -24
  251. package/app/m/sites/SiteAgentBinding/index.html +24 -24
  252. package/app/m/social/OAuthState/index.html +24 -24
  253. package/app/m/social/SocialAccount/index.html +24 -24
  254. package/app/m/social/SocialPost/index.html +24 -24
  255. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +24 -24
  256. package/app/m/subscriptions/BillingAdjustment/index.html +24 -24
  257. package/app/m/subscriptions/ClientCharge/index.html +24 -24
  258. package/app/m/subscriptions/CreditGrant/index.html +24 -24
  259. package/app/m/subscriptions/PricingRule/index.html +24 -24
  260. package/app/m/subscriptions/RetailCharge/index.html +24 -24
  261. package/app/m/subscriptions/SpendingPolicy/index.html +24 -24
  262. package/app/m/subscriptions/SubscriptionPlan/index.html +24 -24
  263. package/app/m/subscriptions/SubscriptionPlanVersion/index.html +24 -24
  264. package/app/m/subscriptions/TenantSubscription/index.html +24 -24
  265. package/app/m/subscriptions/TenantUsageMetric/index.html +24 -24
  266. package/app/m/support/ServiceTimeEntry/index.html +24 -24
  267. package/app/m/support/SupportAiRun/index.html +24 -24
  268. package/app/m/support/SupportAvailability/index.html +24 -24
  269. package/app/m/support/SupportCase/index.html +24 -24
  270. package/app/m/support/SupportCaseEvent/index.html +24 -24
  271. package/app/m/support/SupportChannelBinding/index.html +24 -24
  272. package/app/m/support/SupportCharge/index.html +24 -24
  273. package/app/m/support/SupportCompensation/index.html +24 -24
  274. package/app/m/support/SupportCompensationPlan/index.html +24 -24
  275. package/app/m/support/SupportEscalation/index.html +24 -24
  276. package/app/m/support/SupportInteraction/index.html +24 -24
  277. package/app/m/support/SupportPlan/index.html +24 -24
  278. package/app/m/support/SupportPolicy/index.html +24 -24
  279. package/app/m/support/SupportQualification/index.html +24 -24
  280. package/app/m/support/SupportServiceTarget/index.html +24 -24
  281. package/app/m/support/SupportSpecialist/index.html +24 -24
  282. package/app/m/support/SupportWorkLink/index.html +24 -24
  283. package/app/m/tags/Tag/index.html +24 -24
  284. package/app/m/tags/TagAlias/index.html +24 -24
  285. package/app/m/timesheets/AttendanceBreak/index.html +24 -24
  286. package/app/m/timesheets/AttendancePunch/index.html +24 -24
  287. package/app/m/timesheets/AttendanceSegment/index.html +24 -24
  288. package/app/m/timesheets/ServiceChargeSnapshot/index.html +24 -24
  289. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +24 -24
  290. package/app/m/timesheets/ServiceTimeEntry/index.html +24 -24
  291. package/app/m/users/Group/index.html +24 -24
  292. package/app/m/users/GroupMember/index.html +24 -24
  293. package/app/m/users/GroupRole/index.html +24 -24
  294. package/app/m/users/Membership/index.html +24 -24
  295. package/app/m/users/MembershipOverride/index.html +24 -24
  296. package/app/m/users/Permission/index.html +24 -24
  297. package/app/m/users/Role/index.html +24 -24
  298. package/app/m/users/RolePermission/index.html +24 -24
  299. package/app/m/users/Session/index.html +24 -24
  300. package/app/m/users/Tenant/index.html +24 -24
  301. package/app/m/users/TenantIntegration/index.html +24 -24
  302. package/app/m/users/TenantPermissionOverride/index.html +24 -24
  303. package/app/m/users/User/index.html +24 -24
  304. package/app/m/video/Character/index.html +24 -24
  305. package/app/m/video/CharacterAsset/index.html +24 -24
  306. package/app/m/video/CompositeJob/index.html +24 -24
  307. package/app/m/video/Performer/index.html +24 -24
  308. package/app/m/video/PerformerAsset/index.html +24 -24
  309. package/app/m/video/Scene/index.html +24 -24
  310. package/app/m/video/SceneAsset/index.html +24 -24
  311. package/app/m/video/VideoComposition/index.html +24 -24
  312. package/app/m/video/VideoCompositionAsset/index.html +24 -24
  313. package/app/m/video/VideoSequence/index.html +24 -24
  314. package/app/m/video/VideoSequenceAsset/index.html +24 -24
  315. package/app/m/video/VideoShot/index.html +24 -24
  316. package/app/m/video/VideoShotAsset/index.html +24 -24
  317. package/app/m/video/VideoShotCharacter/index.html +24 -24
  318. package/app/m/video/VideoWorkflow/index.html +24 -24
  319. package/app/m/voice/VoiceOutput/index.html +24 -24
  320. package/app/m/voice/VoiceProfile/index.html +24 -24
  321. package/app/m/voice/VoiceSample/index.html +24 -24
  322. package/app/mcp.html +2 -2
  323. package/app/packages/ads/index.html +22 -22
  324. package/app/packages/analytics/index.html +22 -22
  325. package/app/packages/approvals/index.html +22 -22
  326. package/app/packages/assets/index.html +22 -22
  327. package/app/packages/chat/index.html +22 -22
  328. package/app/packages/comments/index.html +22 -22
  329. package/app/packages/commerce/index.html +22 -22
  330. package/app/packages/content/index.html +22 -22
  331. package/app/packages/events/index.html +22 -22
  332. package/app/packages/expenses/index.html +22 -22
  333. package/app/packages/facts/index.html +22 -22
  334. package/app/packages/fields/index.html +22 -22
  335. package/app/packages/human-resources/index.html +22 -22
  336. package/app/packages/images/index.html +22 -22
  337. package/app/packages/index.html +21 -21
  338. package/app/packages/ingestion/index.html +22 -22
  339. package/app/packages/inventory/index.html +22 -22
  340. package/app/packages/ledgers/index.html +22 -22
  341. package/app/packages/manufacturing/index.html +22 -22
  342. package/app/packages/marketing/index.html +22 -22
  343. package/app/packages/messages/index.html +22 -22
  344. package/app/packages/places/index.html +22 -22
  345. package/app/packages/preferences/index.html +22 -22
  346. package/app/packages/products/index.html +22 -22
  347. package/app/packages/profiles/index.html +22 -22
  348. package/app/packages/projects/index.html +22 -22
  349. package/app/packages/properties/index.html +22 -22
  350. package/app/packages/reports/index.html +22 -22
  351. package/app/packages/sales/index.html +22 -22
  352. package/app/packages/sites/index.html +22 -22
  353. package/app/packages/social/index.html +22 -22
  354. package/app/packages/subscriptions/index.html +22 -22
  355. package/app/packages/support/index.html +22 -22
  356. package/app/packages/tags/index.html +22 -22
  357. package/app/packages/timesheets/index.html +22 -22
  358. package/app/packages/users/index.html +22 -22
  359. package/app/packages/video/index.html +22 -22
  360. package/app/packages/voice/index.html +22 -22
  361. package/app/packages/webhooks/index.html +22 -22
  362. package/app/recipes/account-access/help/index.html +22 -22
  363. package/app/recipes/account-access/index.html +25 -25
  364. package/app/recipes/activity/help/index.html +22 -22
  365. package/app/recipes/activity/index.html +25 -25
  366. package/app/recipes/agreements/help/index.html +22 -22
  367. package/app/recipes/agreements/index.html +25 -25
  368. package/app/recipes/analytics.reports/help/index.html +22 -22
  369. package/app/recipes/analytics.reports/index.html +25 -25
  370. package/app/recipes/assets/help/index.html +22 -22
  371. package/app/recipes/assets/index.html +25 -25
  372. package/app/recipes/billing/help/index.html +22 -22
  373. package/app/recipes/billing/index.html +25 -25
  374. package/app/recipes/chat.assistant/help/index.html +22 -22
  375. package/app/recipes/chat.assistant/index.html +25 -25
  376. package/app/recipes/comments/help/index.html +22 -22
  377. package/app/recipes/comments/index.html +25 -25
  378. package/app/recipes/commerce.customers/help/index.html +22 -22
  379. package/app/recipes/commerce.customers/index.html +25 -25
  380. package/app/recipes/commerce.estimates/help/index.html +22 -22
  381. package/app/recipes/commerce.estimates/index.html +25 -25
  382. package/app/recipes/commerce.purchases/help/index.html +22 -22
  383. package/app/recipes/commerce.purchases/index.html +25 -25
  384. package/app/recipes/commerce.sales/help/index.html +22 -22
  385. package/app/recipes/commerce.sales/index.html +25 -25
  386. package/app/recipes/commerce.vendors/help/index.html +22 -22
  387. package/app/recipes/commerce.vendors/index.html +25 -25
  388. package/app/recipes/commerce.wholesale/help/index.html +22 -22
  389. package/app/recipes/commerce.wholesale/index.html +25 -25
  390. package/app/recipes/events.calendar/help/index.html +22 -22
  391. package/app/recipes/events.calendar/index.html +25 -25
  392. package/app/recipes/expenses.tracking/help/index.html +22 -22
  393. package/app/recipes/expenses.tracking/index.html +25 -25
  394. package/app/recipes/fields.form-customization/help/index.html +22 -22
  395. package/app/recipes/fields.form-customization/index.html +25 -25
  396. package/app/recipes/ingestion/help/index.html +22 -22
  397. package/app/recipes/ingestion/index.html +25 -25
  398. package/app/recipes/integrations/help/index.html +22 -22
  399. package/app/recipes/integrations/index.html +25 -25
  400. package/app/recipes/inventory.stock/help/index.html +22 -22
  401. package/app/recipes/inventory.stock/index.html +25 -25
  402. package/app/recipes/ledgers.bookkeeping/help/index.html +22 -22
  403. package/app/recipes/ledgers.bookkeeping/index.html +25 -25
  404. package/app/recipes/messages/help/index.html +22 -22
  405. package/app/recipes/messages/index.html +25 -25
  406. package/app/recipes/products/help/index.html +22 -22
  407. package/app/recipes/products/index.html +25 -25
  408. package/app/recipes/projects.tracker/help/index.html +22 -22
  409. package/app/recipes/projects.tracker/index.html +25 -25
  410. package/app/recipes/reports.materialized/help/index.html +22 -22
  411. package/app/recipes/reports.materialized/index.html +25 -25
  412. package/app/recipes/reports.runtime/help/index.html +22 -22
  413. package/app/recipes/reports.runtime/index.html +25 -25
  414. package/app/recipes/sales.pipeline/help/index.html +22 -22
  415. package/app/recipes/sales.pipeline/index.html +25 -25
  416. package/app/recipes/tags.taxonomy/help/index.html +22 -22
  417. package/app/recipes/tags.taxonomy/index.html +25 -25
  418. package/app/recipes/team-collaboration/help/index.html +22 -22
  419. package/app/recipes/team-collaboration/index.html +25 -25
  420. package/app/recipes/timesheets.time-entries/help/index.html +22 -22
  421. package/app/recipes/timesheets.time-entries/index.html +25 -25
  422. package/app/s/custom-accounts/index.html +20 -20
  423. package/app/s/custom-appointments/index.html +20 -20
  424. package/app/s/custom-billing/index.html +20 -20
  425. package/app/s/custom-bookings/index.html +20 -20
  426. package/app/s/custom-buying/index.html +20 -20
  427. package/app/s/custom-checkout/index.html +20 -20
  428. package/app/s/custom-classes/index.html +20 -20
  429. package/app/s/custom-clients/index.html +20 -20
  430. package/app/s/custom-events/index.html +20 -20
  431. package/app/s/custom-fleet/index.html +20 -20
  432. package/app/s/custom-gigs/index.html +20 -20
  433. package/app/s/custom-giving/index.html +20 -20
  434. package/app/s/custom-instruments/index.html +20 -20
  435. package/app/s/custom-jobs/index.html +20 -20
  436. package/app/s/custom-kitchen/index.html +20 -20
  437. package/app/s/custom-lessons/index.html +20 -20
  438. package/app/s/custom-material/index.html +20 -20
  439. package/app/s/custom-meetings/index.html +20 -20
  440. package/app/s/custom-members/index.html +20 -20
  441. package/app/s/custom-merch/index.html +20 -20
  442. package/app/s/custom-money/index.html +20 -20
  443. package/app/s/custom-paint/index.html +20 -20
  444. package/app/s/custom-parts/index.html +20 -20
  445. package/app/s/custom-rentals/index.html +20 -20
  446. package/app/s/custom-roastery/index.html +20 -20
  447. package/app/s/custom-schedule/index.html +20 -20
  448. package/app/s/custom-shelf/index.html +20 -20
  449. package/app/s/custom-shop/index.html +20 -20
  450. package/app/s/custom-students/index.html +20 -20
  451. package/app/s/custom-wholesale/index.html +20 -20
  452. package/app/s/custom-work/index.html +20 -20
  453. package/app/s/custom-yard/index.html +20 -20
  454. package/app/s/section-access-control/index.html +20 -20
  455. package/app/s/section-account-security/index.html +20 -20
  456. package/app/s/section-accounting/index.html +20 -20
  457. package/app/s/section-activity/index.html +20 -20
  458. package/app/s/section-agreements/index.html +20 -20
  459. package/app/s/section-analytics/index.html +20 -20
  460. package/app/s/section-assets/index.html +20 -20
  461. package/app/s/section-billing/index.html +20 -20
  462. package/app/s/section-calendar/index.html +20 -20
  463. package/app/s/section-catalog/index.html +20 -20
  464. package/app/s/section-chat.assistant/index.html +20 -20
  465. package/app/s/section-comments/index.html +20 -20
  466. package/app/s/section-fields.form-customization/index.html +20 -20
  467. package/app/s/section-ingestion/index.html +20 -20
  468. package/app/s/section-integrations/index.html +20 -20
  469. package/app/s/section-messages/index.html +20 -20
  470. package/app/s/section-more/index.html +20 -20
  471. package/app/s/section-operations/index.html +20 -20
  472. package/app/s/section-projects/index.html +20 -20
  473. package/app/s/section-purchasing/index.html +20 -20
  474. package/app/s/section-reports.materialized/index.html +20 -20
  475. package/app/s/section-reports.runtime/index.html +20 -20
  476. package/app/s/section-sales/index.html +20 -20
  477. package/app/s/section-taxonomy/index.html +20 -20
  478. package/app/s/section-team/index.html +20 -20
  479. package/app/s/section-work/index.html +20 -20
  480. package/dist/catalog/catalog.json +38 -39
  481. package/dist/catalog/generate/extract.d.ts +2 -0
  482. package/dist/catalog/generate/extract.d.ts.map +1 -1
  483. package/dist/catalog/generate/extract.js +9 -6
  484. package/dist/smrt-version.d.ts +1 -1
  485. package/dist/smrt-version.js +1 -1
  486. package/package.json +55 -55
  487. package/app/_app/immutable/chunks/36UmRiHN.js +0 -1
  488. package/app/_app/immutable/chunks/BEfgj-XP.js +0 -1
  489. package/app/_app/immutable/chunks/CA-A9Ngs.js +0 -1
  490. package/app/_app/immutable/chunks/D9JiVd8Y.js +0 -1
  491. package/app/_app/immutable/chunks/uBIymjUX.js +0 -1
  492. package/app/_app/immutable/entry/start.BbchxoB8.js +0 -1
package/app/404.html CHANGED
@@ -3,35 +3,35 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <link href="/_app/immutable/entry/start.BbchxoB8.js" rel="modulepreload">
7
- <link href="/_app/immutable/chunks/BEfgj-XP.js" rel="modulepreload">
6
+ <link href="/_app/immutable/entry/start.CEefgxcS.js" rel="modulepreload">
7
+ <link href="/_app/immutable/chunks/Bbl6Vsf2.js" rel="modulepreload">
8
8
  <link href="/_app/immutable/chunks/DG3qFFTE.js" rel="modulepreload">
9
9
  <link href="/_app/immutable/chunks/COiEfhsA.js" rel="modulepreload">
10
10
  <link href="/_app/immutable/chunks/Dt-HX3Vu.js" rel="modulepreload">
11
- <link href="/_app/immutable/entry/app.D8ErdGLu.js" rel="modulepreload">
12
- <link href="/_app/immutable/chunks/uBIymjUX.js" rel="modulepreload">
11
+ <link href="/_app/immutable/entry/app.CW8FtNr0.js" rel="modulepreload">
12
+ <link href="/_app/immutable/chunks/BaNbYf_w.js" rel="modulepreload">
13
13
  <link href="/_app/immutable/chunks/xihTtKlq.js" rel="modulepreload">
14
- <link href="/_app/immutable/nodes/0.BRhjnzgS.js" rel="modulepreload">
15
- <link href="/_app/immutable/chunks/0spQrfdd.js" rel="modulepreload">
14
+ <link href="/_app/immutable/nodes/0.DqyO6m6q.js" rel="modulepreload">
15
+ <link href="/_app/immutable/chunks/CXPo72CL.js" rel="modulepreload">
16
16
  <link href="/_app/immutable/chunks/YUSKx8_q.js" rel="modulepreload">
17
17
  <link href="/_app/immutable/chunks/DK8Blf1Y.js" rel="modulepreload">
18
- <link href="/_app/immutable/chunks/BH-IcfAn.js" rel="modulepreload">
18
+ <link href="/_app/immutable/chunks/DURcYLyk.js" rel="modulepreload">
19
19
  <link href="/_app/immutable/chunks/Bv5jGtB8.js" rel="modulepreload">
20
20
  <link href="/_app/immutable/chunks/By9nPosf.js" rel="modulepreload">
21
21
  <link href="/_app/immutable/chunks/DIE02RSm.js" rel="modulepreload">
22
- <link href="/_app/immutable/chunks/yGfNI8oR.js" rel="modulepreload">
22
+ <link href="/_app/immutable/chunks/BQGfk9t2.js" rel="modulepreload">
23
23
  <link href="/_app/immutable/chunks/CUyVrfsu.js" rel="modulepreload">
24
24
  <link href="/_app/immutable/chunks/Bs5WxZDd.js" rel="modulepreload">
25
25
  <link href="/_app/immutable/chunks/BYcBM-fh.js" rel="modulepreload">
26
- <link href="/_app/immutable/chunks/D9JiVd8Y.js" rel="modulepreload">
27
- <link href="/_app/immutable/chunks/36UmRiHN.js" rel="modulepreload">
28
- <link href="/_app/immutable/chunks/DRA2gZNq.js" rel="modulepreload">
26
+ <link href="/_app/immutable/chunks/CpfTjiSP.js" rel="modulepreload">
27
+ <link href="/_app/immutable/chunks/3JC1zxNN.js" rel="modulepreload">
28
+ <link href="/_app/immutable/chunks/B29WjYP5.js" rel="modulepreload">
29
29
  <link href="/_app/immutable/chunks/d934w91N.js" rel="modulepreload">
30
- <link href="/_app/immutable/chunks/hBMuE5Bx.js" rel="modulepreload">
31
- <link href="/_app/immutable/chunks/U_YAf_lA.js" rel="modulepreload">
32
- <link href="/_app/immutable/chunks/C5DQWmBa.js" rel="modulepreload">
33
- <link href="/_app/immutable/chunks/DGeUS20p.js" rel="modulepreload">
34
- <link href="/_app/immutable/chunks/Dud4r5Jx.js" rel="modulepreload">
30
+ <link href="/_app/immutable/chunks/CWQqx7C7.js" rel="modulepreload">
31
+ <link href="/_app/immutable/chunks/6ott4F8t.js" rel="modulepreload">
32
+ <link href="/_app/immutable/chunks/dLwKu_Zp.js" rel="modulepreload">
33
+ <link href="/_app/immutable/chunks/CxmNJ62m.js" rel="modulepreload">
34
+ <link href="/_app/immutable/chunks/DJhmPAeb.js" rel="modulepreload">
35
35
  <link href="/_app/immutable/chunks/BMgzWMdF.js" rel="modulepreload">
36
36
  <link href="/_app/immutable/chunks/CgAkqYsL.js" rel="modulepreload">
37
37
 
@@ -51,15 +51,15 @@
51
51
  <div style="display: contents">
52
52
  <script>
53
53
  {
54
- __sveltekit_leraf2 = {
54
+ __sveltekit_17b0kon = {
55
55
  base: ""
56
56
  };
57
57
 
58
58
  const element = document.currentScript.parentElement;
59
59
 
60
60
  Promise.all([
61
- import("/_app/immutable/entry/start.BbchxoB8.js"),
62
- import("/_app/immutable/entry/app.D8ErdGLu.js")
61
+ import("/_app/immutable/entry/start.CEefgxcS.js"),
62
+ import("/_app/immutable/entry/app.CW8FtNr0.js")
63
63
  ]).then(([kit, app]) => {
64
64
  kit.start(app, element);
65
65
  });
@@ -1,2 +1,2 @@
1
- import{$ as e,B as t,Ct as n,Dt as r,E as i,Ft as a,G as o,H as s,J as c,L as l,Ot as u,Pt as d,R as f,U as p,W as m,a as h,bt as g,ct as _,d as v,ft as y,gt as b,ht as x,j as S,mt as C,nt as w,pt as T,r as E,st as D,v as O,vt as k,xt as A}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{i as j}from"./Bv5jGtB8.js";import{a as M,t as ee}from"./YUSKx8_q.js";import{Ot as N,Tt as P,bt as F,jt as I,x as L}from"./0spQrfdd.js";import{n as R}from"./DK8Blf1Y.js";import{w as te,y as z}from"./BH-IcfAn.js";import{t as B}from"./By9nPosf.js";import"./CmwZFYXJ.js";import"./yGfNI8oR.js";import{b as V,i as H}from"./Bs5WxZDd.js";import{A as ne,j as U,y as re}from"./9YQb8EzH.js";import{b as W,et as G,t as K}from"./BrGblPBG.js";import{a as q,c as J,d as Y,f as X,h as ie,l as ae,n as oe,p as Z,s as se}from"./CUqms96o.js";import{n as ce,t as le}from"./CaYLEdnq.js";var ue=/^[A-Za-z][A-Za-z0-9_]*$/,de=/^[a-z][a-z0-9_]*$/,fe=/^[A-Za-z@][A-Za-z0-9_@./:-]*$/,pe=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,me=new Set([`minute`,`hour`,`day`,`week`,`month`,`quarter`,`year`]),he=new Set([`count`,`countDistinct`,`sum`,`avg`,`min`,`max`]),ge=new Set([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`notIn`,`contains`,`isNull`,`isNotNull`]),_e=new Set([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`]),ve=new Set([`table`,`bar`,`line`,`pie`,`stat`]),ye=new Set(`all.and.as.asc.between.by.case.cast.check.column.constraint.create.cross.default.delete.desc.distinct.drop.else.end.except.exists.false.for.foreign.from.full.group.having.in.inner.insert.intersect.into.is.join.left.like.limit.natural.not.null.offset.on.or.order.outer.primary.references.right.select.set.table.then.to.true.union.unique.update.user.using.values.when.where.with`.split(`.`));function be(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null?e:null}function xe(e,t){return Object.keys(e).every(e=>t.includes(e))}function Se(e,t,n=!1){if(e===void 0)return n;if(typeof e!=`string`)return!1;let r=e.trim();return r.length>0&&r.length<=t&&r===e&&!pe.test(r)}function Ce(e){return typeof e==`string`&&e.length<=64&&ue.test(e)}function we(e){return typeof e==`string`&&e.length<=40&&de.test(e)&&!ye.has(e)}function Te(e){return typeof e==`string`&&e.length<=256&&!e.includes(`\0`)||typeof e==`number`&&Number.isFinite(e)||typeof e==`boolean`}function Ee(e){let t=be(e);if(!t||!xe(t,[`version`,`title`,`description`,`source`,`dimensions`,`measures`,`filters`,`having`,`sort`,`limit`,`chart`])||t.version!==1||!Se(t.title,120)||!Se(t.description,500,!0)||typeof t.source!=`string`||t.source.length===0||t.source.length>120||!fe.test(t.source)||!Array.isArray(t.dimensions)||t.dimensions.length>4||!Array.isArray(t.measures)||t.measures.length<1||t.measures.length>6||!Array.isArray(t.filters)||t.filters.length>12||!Array.isArray(t.having)||t.having.length>4||!Array.isArray(t.sort)||t.sort.length>3||!Number.isSafeInteger(t.limit)||t.limit<1||t.limit>1e3)return!1;let n=new Set,r=new Set,i=new Set;for(let e of t.dimensions){let t=be(e);if(!t||!xe(t,[`field`,`as`,`bucket`])||!Ce(t.field)||!we(t.as)||t.bucket!==void 0&&(typeof t.bucket!=`string`||!me.has(t.bucket))||i.has(t.as))return!1;i.add(t.as),n.add(t.as)}for(let e of t.measures){let t=be(e);if(!t||!xe(t,[`fn`,`field`,`as`])||typeof t.fn!=`string`||!he.has(t.fn)||!we(t.as)||i.has(t.as)||t.field!==void 0&&!Ce(t.field)||t.fn!==`count`&&t.field===void 0)return!1;i.add(t.as),r.add(t.as)}for(let e of t.filters){let t=be(e);if(!t||!xe(t,[`field`,`op`,`value`])||!Ce(t.field)||typeof t.op!=`string`||!ge.has(t.op))return!1;if(t.op===`isNull`||t.op===`isNotNull`){if(t.value!==void 0)return!1}else if(t.op===`in`||t.op===`notIn`){if(!Array.isArray(t.value)||t.value.length<1||t.value.length>100||!t.value.every(Te))return!1}else if(!Te(t.value)||t.op===`contains`&&typeof t.value!=`string`)return!1}for(let e of t.having){let t=be(e);if(!t||!xe(t,[`measure`,`op`,`value`])||!we(t.measure)||!r.has(t.measure)||typeof t.op!=`string`||!_e.has(t.op)||typeof t.value!=`number`||!Number.isFinite(t.value))return!1}for(let e of t.sort){let t=be(e);if(!t||!xe(t,[`by`,`direction`])||!we(t.by)||!i.has(t.by)||t.direction!==`asc`&&t.direction!==`desc`)return!1}let a=be(t.chart);return!(!a||!xe(a,[`type`,`x`,`y`])||typeof a.type!=`string`||!ve.has(a.type)||a.x!==void 0&&(!we(a.x)||!n.has(a.x))||a.y!==void 0&&(!Array.isArray(a.y)||a.y.length>6||!a.y.every(e=>we(e)&&r.has(e))))}function De(e){let t=e;if(typeof e==`string`){if(e.length>65536)return null;try{t=JSON.parse(e)}catch{return null}}return Ee(t)?t:null}function Oe(e){if(e&&typeof e==`object`){let t=e;if(t.status===401||t.status===403||t.code===`unknown_field`)return`reports.denied`;if(t.code===`invalid_result`)return`reports.invalid`}return`reports.error`}function ke(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.version===1&&typeof t.title==`string`&&typeof t.specHash==`string`&&typeof t.ranAt==`string`&&typeof t.truncated==`boolean`&&Array.isArray(t.columns)&&t.columns.length>0&&t.columns.length<=10&&new Set(t.columns.map(e=>e?.id)).size===t.columns.length&&t.columns.every(e=>e&&typeof e.id==`string`&&typeof e.label==`string`&&[`dimension`,`measure`].includes(e.role)&&[`string`,`integer`,`decimal`,`boolean`,`datetime`,`id`].includes(e.type))&&Array.isArray(t.rows)&&t.rows.length<=1e3&&t.rowCount===t.rows.length&&t.rows.every(e=>e&&typeof e==`object`&&t.columns.every(t=>{let n=e[t.id];return n===null?!0:t.type===`integer`?typeof n==`number`&&Number.isSafeInteger(n):t.type===`decimal`?typeof n==`number`&&Number.isFinite(n):t.type===`boolean`?typeof n==`boolean`:typeof n==`string`}))&&!!t.chart&&[`bar`,`line`,`table`,`pie`,`stat`].includes(t.chart.type)&&(t.chart.y===void 0||Array.isArray(t.chart.y)&&t.chart.y.every(e=>t.columns.some(t=>t.id===e&&t.role===`measure`)))&&(t.chart.x===void 0||t.columns.some(e=>e.id===t.chart.x))}function Ae(e,t,n,r){return e==null?`–`:typeof e==`number`?U(e,{format:t.format===`money`?`money`:t.type===`integer`?`integer`:`decimal`,locale:n,currency:r}):String(e)}function je(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.status!==`awaiting_confirmation`||typeof t.specHash!=`string`||!/^[a-f0-9]{64}$/.test(t.specHash)||typeof t.sourceLabel!=`string`||t.sourceLabel.length<1||t.sourceLabel.length>120||typeof t.confirmPath!=`string`||t.confirmPath.length>2048||!t.confirmPath.startsWith(`/`)||t.confirmPath.startsWith(`//`)||!ke(t.preview)||t.preview.specHash!==t.specHash||!t.spec||!Ee(t.spec)||t.preview.title!==t.spec.title)return!1;let n=new Map([...t.spec.dimensions.map(e=>[e.as,`dimension`]),...t.spec.measures.map(e=>[e.as,`measure`])]);return t.preview.columns.length===n.size&&t.preview.columns.every(e=>n.get(e.id)===e.role)&&JSON.stringify(t.preview.chart)===JSON.stringify(t.spec.chart)}var Q=class extends Error{status;code;constructor(e,t){super(`Runtime report request failed`),this.status=e,this.code=t,this.name=`RuntimeReportsHttpError`}},Me=1e3,Ne=1e3;function Pe(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}async function Fe(e){let t;try{t=await e.json()}catch{throw new Q(e.status)}if(!e.ok){let n=Pe(t);throw new Q(e.status,typeof n?.code==`string`?n.code:void 0)}return t}function Ie(e){return encodeURIComponent(e)}function Le(e){if(!e.startsWith(`/`)||e.startsWith(`//`))throw new Q(400,`invalid_confirm_path`);if(typeof location>`u`)return e;let t=new URL(e,location.href);if(t.origin!==location.origin)throw new Q(400,`invalid_confirm_path`);return`${t.pathname}${t.search}`}function Re(e={}){let t=e.fetch??globalThis.fetch;if(typeof t!=`function`)throw Error(`Runtime reports require a fetch implementation`);let n=(e.basePath??`/api/runtimereports`).replace(/\/$/,``),r=new Map,i=t=>{let n=Pe(t);if(!n)throw new Q(502,`invalid_result`);let i=De(n.spec);if(!i||typeof n.id!=`string`||typeof n.title!=`string`||typeof n.sourceId!=`string`||typeof n.createdByUserId!=`string`||n.status!==`active`&&n.status!==`archived`)throw new Q(502,`invalid_result`);let a={id:n.id,title:n.title,...typeof n.description==`string`&&n.description?{description:n.description}:{},sourceId:n.sourceId,createdByUserId:n.createdByUserId,status:n.status,spec:i,...typeof n.createdAt==`string`&&n.createdAt?{savedAt:n.createdAt}:{},...r.has(n.id)?{lastRunAt:r.get(n.id)}:{}},o=typeof e.canArchive==`function`?e.canArchive(a):e.canArchive===!0;return{...a,canArchive:o}},a=async e=>i(await Fe(await t(`${n}/${Ie(e)}`,{headers:{accept:`application/json`}})));return{async list({onlyMine:r,includeArchived:a}){let o=new URLSearchParams;if(a||o.set(`status`,`active`),r){if(!e.currentUserId)throw new Q(400,`missing_current_user`);o.set(`createdByUserId`,e.currentUserId)}let s=[],c=new Set,l=0;for(let e=0;e<Ne;e++){let e=new URLSearchParams(o);e.set(`limit`,String(Me)),e.set(`offset`,String(l));let r=Pe(await Fe(await t(`${n}?${e}`,{headers:{accept:`application/json`}})));if(!r||!Array.isArray(r.items)||typeof r.count!=`number`||!Number.isSafeInteger(r.count)||r.count<0||typeof r.limit!=`number`||!Number.isSafeInteger(r.limit)||r.limit<1||r.limit>Me||typeof r.offset!=`number`||!Number.isSafeInteger(r.offset)||r.offset!==l||r.items.length>r.limit)throw new Q(502,`invalid_result`);let a=r.items.map(i);for(let e of a){if(c.has(e.id))throw new Q(502,`invalid_result`);c.add(e.id)}if(s.push(...a),l+=r.items.length,l>=r.count)return s;if(r.items.length===0)throw new Q(502,`invalid_result`)}throw new Q(502,`invalid_result`)},get:a,async run(e){let i=Pe(await Fe(await t(`${n}/${Ie(e)}/run`,{method:`POST`,headers:{accept:`application/json`}})));if(i?.action!==`run`||!ke(i.result))throw new Q(502,`invalid_result`);return r.set(e,i.result.ranAt),i.result},async archive(e,r){let i=Pe(await Fe(await t(`${n}/${Ie(e)}/archive`,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`},body:JSON.stringify({archived:r})}))),a=Pe(i?.result);if(i?.action!==`archive`||a?.id!==e||a.status!==(r?`archived`:`active`))throw new Q(502,`invalid_result`)},async confirm(e){let n=Pe(await Fe(await t(Le(e.confirmPath),{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`},body:JSON.stringify({spec:e.spec,specHash:e.specHash})})));if(typeof n?.id!=`string`||n.specHash!==e.specHash)throw new Q(502,`invalid_result`);return a(n.id)}}}var ze,Be=``;function Ve(e={}){if(typeof window>`u`)throw Error(`The runtime reports browser client is unavailable during SSR`);let t=`${e.scopeKey??``}:${e.currentUserId??``}:${e.canArchive===!0}`;return(!ze||Be!==t)&&(ze=Re(e),Be=t),ze}function He(e){return e.replace(/([a-z\d])([A-Z])/g,`$1 $2`).replace(/[_-]+/g,` `).trim().toLowerCase().replace(/^./,e=>e.toUpperCase())}var Ue=/^\d{4}-\d{2}-\d{2}(?:[T ][\d:.]+(?:Z|[+-]\d{2}:?\d{2})?)?$/;function We(e){if(typeof e!=`string`||!Ue.test(e))return null;let t=new Date(/^\d{4}-\d{2}-\d{2}$/.test(e)?`${e}T00:00:00Z`:e);return Number.isNaN(t.getTime())?null:t}function Ge(e,t){let n=new Map;e.filters.forEach((e,t)=>{let r=We(e.value);if(!r)return;let i=n.get(e.field)??{filters:[]};if(e.op===`gte`||e.op===`gt`)i.from=r;else if(e.op===`lt`||e.op===`lte`){let t=new Date(r),n=t.getUTCHours()===0&&t.getUTCMinutes()===0&&t.getUTCSeconds()===0;e.op===`lt`&&n&&t.setUTCDate(t.getUTCDate()-1),i.to=t}else return;i.filters.push(t),n.set(e.field,i)});let[r,i]=[...n.entries()][0]??[];if(!r||!i)return null;let a=`en`;try{a=Intl.getCanonicalLocales(t.locale)[0]??`en`}catch{}let o=new Intl.DateTimeFormat(a,{timeZone:`UTC`,day:`numeric`,month:`short`,year:`numeric`}),s=i.from&&i.to?o.formatRange(i.from,i.to):i.from?t.t(`reports.period.since`,{date:o.format(i.from)}):i.to?t.t(`reports.period.until`,{date:o.format(i.to)}):``;return{field:t.label(r),range:s,filters:i.filters}}function Ke(e,t){let{t:n,locale:r,currency:i,source:a,columns:o}=t,s=e=>a?.fields?.find(t=>t.name===e),c=e=>s(e)?.label??He(e),l=a?.label??He(e.source),u=e.dimensions.map(e=>e.bucket?n(`reports.dimension_bucket`,{field:c(e.field),bucket:n(`reports.bucket_unit.${e.bucket}`)}):c(e.field)).join(`, `),d=Ge(e,{locale:r,label:c,t:n}),f=e.measures.map(e=>o?.find(t=>t.id===e.as)?.label??(e.field?n(`reports.aggregate.${e.fn}`,{field:c(e.field)}):n(`reports.aggregate.rows`,{source:l}))),p=(e,t)=>{let n=t=>s(e)?.format===`money`&&typeof t==`number`?U(t,{format:`money`,currency:i,locale:r}):String(t??``);return Array.isArray(t)?t.map(n).join(`, `):n(t)},m=e.filters.filter((e,t)=>!d?.filters.includes(t)).map(e=>`${c(e.field)} ${n(`reports.operator.${e.op}`)} ${p(e.field,e.value)}`.trim()),h=e=>o?.find(t=>t.id===e)?.label??He(e);return{source:l,groupings:u,period:d,measures:f,filters:m,having:e.having.map(e=>`${h(e.measure)} ${n(`reports.operator.${e.op}`)} ${e.value}`),line:[l,u,d?.range].filter(e=>!!e).join(` · `)}}var qe=new Set([`minute`,`hour`,`day`,`week`,`month`,`quarter`,`year`]);function Je(e){let t=e.chart.x?e.columns.find(t=>t.id===e.chart.x):e.columns.find(e=>e.role===`dimension`);return t?.bucket&&qe.has(t.bucket)?t:void 0}function Ye(e){let t=e.columns.filter(e=>e.role===`measure`),n=e.chart.y??[];return[...t.filter(e=>n.includes(e.id)),...t.filter(e=>!n.includes(e.id))]}function Xe(e){return e.format===`money`?`money`:e.type===`integer`?`integer`:`decimal`}function Ze(e,t,n){let{t:r,locale:i,currency:a}=n,o=e.rows.map(e=>({row:e,value:e[t.id]})).filter(e=>typeof e.value==`number`&&Number.isFinite(e.value));if(o.length===0)return[];let s=e=>Ae(t.type===`integer`&&!Number.isInteger(e)?Math.round(e*100)/100:e,t.type===`integer`&&!Number.isInteger(e)?{...t,type:`decimal`}:t,i,a);if(!e.columns.some(e=>e.role===`dimension`)||o.length===1)return[{label:t.label,value:s(o[0].value)}];let c=o.reduce((e,t)=>e+t.value,0),l=o.reduce((e,t)=>t.value>e.value?t:e),u=Je(e),d=[];return(n.fn===`sum`||n.fn===`count`)&&d.push({label:r(`reports.figure.total`),value:s(c)}),d.push({label:u?.bucket?r(`reports.figure.average_per`,{bucket:r(`reports.bucket_unit.${u.bucket}`)}):r(`reports.figure.average`),value:s(c/o.length)}),d.push({label:r(`reports.figure.peak`),value:s(l.value),detail:n.groupLabel(l.row)}),d}function Qe(e,t,n=new Date,r){let i=new Date(e);if(Number.isNaN(i.getTime()))return e;let a=`en`;try{a=Intl.getCanonicalLocales(t)[0]??`en`}catch{}let o=Math.round((i.getTime()-n.getTime())/1e3),s=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60]],c=new Intl.RelativeTimeFormat(a,{numeric:`auto`});for(let[e,t]of s)if(Math.abs(o)>=t)return c.format(Math.round(o/t),e);return r??c.format(0,`second`)}function $e(e,t=!1){let n=!t&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return/[",\n\r]/.test(n)?`"${n.replaceAll(`"`,`""`)}"`:n}function et(e,t){return`${[e.columns.map(e=>$e(e.label)).join(`,`),...e.rows.map(n=>e.columns.map(e=>$e(t(n[e.id],e),(e.type===`integer`||e.type===`decimal`)&&typeof n[e.id]==`number`)).join(`,`))].join(`\r
1
+ import{$ as e,B as t,Ct as n,Dt as r,E as i,Ft as a,G as o,H as s,J as c,L as l,Ot as u,Pt as d,R as f,U as p,W as m,a as h,bt as g,ct as _,d as v,ft as y,gt as b,ht as x,j as S,mt as C,nt as w,pt as T,r as E,st as D,v as O,vt as k,xt as A}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{i as j}from"./Bv5jGtB8.js";import{a as M,t as ee}from"./YUSKx8_q.js";import{Ot as N,Tt as P,bt as F,jt as I,x as L}from"./CXPo72CL.js";import{n as R}from"./DK8Blf1Y.js";import{w as te,y as z}from"./DURcYLyk.js";import{t as B}from"./By9nPosf.js";import"./Dapxnz2C.js";import"./BQGfk9t2.js";import{b as V,i as H}from"./Bs5WxZDd.js";import{A as ne,j as U,y as re}from"./CEGflXJ6.js";import{b as W,et as G,t as K}from"./DBoTKMLo.js";import{a as q,c as J,d as Y,f as X,h as ie,l as ae,n as oe,p as Z,s as se}from"./Dh1aRV-5.js";import{n as ce,t as le}from"./DPcs_FRu.js";var ue=/^[A-Za-z][A-Za-z0-9_]*$/,de=/^[a-z][a-z0-9_]*$/,fe=/^[A-Za-z@][A-Za-z0-9_@./:-]*$/,pe=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,me=new Set([`minute`,`hour`,`day`,`week`,`month`,`quarter`,`year`]),he=new Set([`count`,`countDistinct`,`sum`,`avg`,`min`,`max`]),ge=new Set([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`notIn`,`contains`,`isNull`,`isNotNull`]),_e=new Set([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`]),ve=new Set([`table`,`bar`,`line`,`pie`,`stat`]),ye=new Set(`all.and.as.asc.between.by.case.cast.check.column.constraint.create.cross.default.delete.desc.distinct.drop.else.end.except.exists.false.for.foreign.from.full.group.having.in.inner.insert.intersect.into.is.join.left.like.limit.natural.not.null.offset.on.or.order.outer.primary.references.right.select.set.table.then.to.true.union.unique.update.user.using.values.when.where.with`.split(`.`));function be(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null?e:null}function xe(e,t){return Object.keys(e).every(e=>t.includes(e))}function Se(e,t,n=!1){if(e===void 0)return n;if(typeof e!=`string`)return!1;let r=e.trim();return r.length>0&&r.length<=t&&r===e&&!pe.test(r)}function Ce(e){return typeof e==`string`&&e.length<=64&&ue.test(e)}function we(e){return typeof e==`string`&&e.length<=40&&de.test(e)&&!ye.has(e)}function Te(e){return typeof e==`string`&&e.length<=256&&!e.includes(`\0`)||typeof e==`number`&&Number.isFinite(e)||typeof e==`boolean`}function Ee(e){let t=be(e);if(!t||!xe(t,[`version`,`title`,`description`,`source`,`dimensions`,`measures`,`filters`,`having`,`sort`,`limit`,`chart`])||t.version!==1||!Se(t.title,120)||!Se(t.description,500,!0)||typeof t.source!=`string`||t.source.length===0||t.source.length>120||!fe.test(t.source)||!Array.isArray(t.dimensions)||t.dimensions.length>4||!Array.isArray(t.measures)||t.measures.length<1||t.measures.length>6||!Array.isArray(t.filters)||t.filters.length>12||!Array.isArray(t.having)||t.having.length>4||!Array.isArray(t.sort)||t.sort.length>3||!Number.isSafeInteger(t.limit)||t.limit<1||t.limit>1e3)return!1;let n=new Set,r=new Set,i=new Set;for(let e of t.dimensions){let t=be(e);if(!t||!xe(t,[`field`,`as`,`bucket`])||!Ce(t.field)||!we(t.as)||t.bucket!==void 0&&(typeof t.bucket!=`string`||!me.has(t.bucket))||i.has(t.as))return!1;i.add(t.as),n.add(t.as)}for(let e of t.measures){let t=be(e);if(!t||!xe(t,[`fn`,`field`,`as`])||typeof t.fn!=`string`||!he.has(t.fn)||!we(t.as)||i.has(t.as)||t.field!==void 0&&!Ce(t.field)||t.fn!==`count`&&t.field===void 0)return!1;i.add(t.as),r.add(t.as)}for(let e of t.filters){let t=be(e);if(!t||!xe(t,[`field`,`op`,`value`])||!Ce(t.field)||typeof t.op!=`string`||!ge.has(t.op))return!1;if(t.op===`isNull`||t.op===`isNotNull`){if(t.value!==void 0)return!1}else if(t.op===`in`||t.op===`notIn`){if(!Array.isArray(t.value)||t.value.length<1||t.value.length>100||!t.value.every(Te))return!1}else if(!Te(t.value)||t.op===`contains`&&typeof t.value!=`string`)return!1}for(let e of t.having){let t=be(e);if(!t||!xe(t,[`measure`,`op`,`value`])||!we(t.measure)||!r.has(t.measure)||typeof t.op!=`string`||!_e.has(t.op)||typeof t.value!=`number`||!Number.isFinite(t.value))return!1}for(let e of t.sort){let t=be(e);if(!t||!xe(t,[`by`,`direction`])||!we(t.by)||!i.has(t.by)||t.direction!==`asc`&&t.direction!==`desc`)return!1}let a=be(t.chart);return!(!a||!xe(a,[`type`,`x`,`y`])||typeof a.type!=`string`||!ve.has(a.type)||a.x!==void 0&&(!we(a.x)||!n.has(a.x))||a.y!==void 0&&(!Array.isArray(a.y)||a.y.length>6||!a.y.every(e=>we(e)&&r.has(e))))}function De(e){let t=e;if(typeof e==`string`){if(e.length>65536)return null;try{t=JSON.parse(e)}catch{return null}}return Ee(t)?t:null}function Oe(e){if(e&&typeof e==`object`){let t=e;if(t.status===401||t.status===403||t.code===`unknown_field`)return`reports.denied`;if(t.code===`invalid_result`)return`reports.invalid`}return`reports.error`}function ke(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.version===1&&typeof t.title==`string`&&typeof t.specHash==`string`&&typeof t.ranAt==`string`&&typeof t.truncated==`boolean`&&Array.isArray(t.columns)&&t.columns.length>0&&t.columns.length<=10&&new Set(t.columns.map(e=>e?.id)).size===t.columns.length&&t.columns.every(e=>e&&typeof e.id==`string`&&typeof e.label==`string`&&[`dimension`,`measure`].includes(e.role)&&[`string`,`integer`,`decimal`,`boolean`,`datetime`,`id`].includes(e.type))&&Array.isArray(t.rows)&&t.rows.length<=1e3&&t.rowCount===t.rows.length&&t.rows.every(e=>e&&typeof e==`object`&&t.columns.every(t=>{let n=e[t.id];return n===null?!0:t.type===`integer`?typeof n==`number`&&Number.isSafeInteger(n):t.type===`decimal`?typeof n==`number`&&Number.isFinite(n):t.type===`boolean`?typeof n==`boolean`:typeof n==`string`}))&&!!t.chart&&[`bar`,`line`,`table`,`pie`,`stat`].includes(t.chart.type)&&(t.chart.y===void 0||Array.isArray(t.chart.y)&&t.chart.y.every(e=>t.columns.some(t=>t.id===e&&t.role===`measure`)))&&(t.chart.x===void 0||t.columns.some(e=>e.id===t.chart.x))}function Ae(e,t,n,r){return e==null?`–`:typeof e==`number`?U(e,{format:t.format===`money`?`money`:t.type===`integer`?`integer`:`decimal`,locale:n,currency:r}):String(e)}function je(e){if(!e||typeof e!=`object`)return!1;let t=e;if(t.status!==`awaiting_confirmation`||typeof t.specHash!=`string`||!/^[a-f0-9]{64}$/.test(t.specHash)||typeof t.sourceLabel!=`string`||t.sourceLabel.length<1||t.sourceLabel.length>120||typeof t.confirmPath!=`string`||t.confirmPath.length>2048||!t.confirmPath.startsWith(`/`)||t.confirmPath.startsWith(`//`)||!ke(t.preview)||t.preview.specHash!==t.specHash||!t.spec||!Ee(t.spec)||t.preview.title!==t.spec.title)return!1;let n=new Map([...t.spec.dimensions.map(e=>[e.as,`dimension`]),...t.spec.measures.map(e=>[e.as,`measure`])]);return t.preview.columns.length===n.size&&t.preview.columns.every(e=>n.get(e.id)===e.role)&&JSON.stringify(t.preview.chart)===JSON.stringify(t.spec.chart)}var Q=class extends Error{status;code;constructor(e,t){super(`Runtime report request failed`),this.status=e,this.code=t,this.name=`RuntimeReportsHttpError`}},Me=1e3,Ne=1e3;function Pe(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}async function Fe(e){let t;try{t=await e.json()}catch{throw new Q(e.status)}if(!e.ok){let n=Pe(t);throw new Q(e.status,typeof n?.code==`string`?n.code:void 0)}return t}function Ie(e){return encodeURIComponent(e)}function Le(e){if(!e.startsWith(`/`)||e.startsWith(`//`))throw new Q(400,`invalid_confirm_path`);if(typeof location>`u`)return e;let t=new URL(e,location.href);if(t.origin!==location.origin)throw new Q(400,`invalid_confirm_path`);return`${t.pathname}${t.search}`}function Re(e={}){let t=e.fetch??globalThis.fetch;if(typeof t!=`function`)throw Error(`Runtime reports require a fetch implementation`);let n=(e.basePath??`/api/runtimereports`).replace(/\/$/,``),r=new Map,i=t=>{let n=Pe(t);if(!n)throw new Q(502,`invalid_result`);let i=De(n.spec);if(!i||typeof n.id!=`string`||typeof n.title!=`string`||typeof n.sourceId!=`string`||typeof n.createdByUserId!=`string`||n.status!==`active`&&n.status!==`archived`)throw new Q(502,`invalid_result`);let a={id:n.id,title:n.title,...typeof n.description==`string`&&n.description?{description:n.description}:{},sourceId:n.sourceId,createdByUserId:n.createdByUserId,status:n.status,spec:i,...typeof n.createdAt==`string`&&n.createdAt?{savedAt:n.createdAt}:{},...r.has(n.id)?{lastRunAt:r.get(n.id)}:{}},o=typeof e.canArchive==`function`?e.canArchive(a):e.canArchive===!0;return{...a,canArchive:o}},a=async e=>i(await Fe(await t(`${n}/${Ie(e)}`,{headers:{accept:`application/json`}})));return{async list({onlyMine:r,includeArchived:a}){let o=new URLSearchParams;if(a||o.set(`status`,`active`),r){if(!e.currentUserId)throw new Q(400,`missing_current_user`);o.set(`createdByUserId`,e.currentUserId)}let s=[],c=new Set,l=0;for(let e=0;e<Ne;e++){let e=new URLSearchParams(o);e.set(`limit`,String(Me)),e.set(`offset`,String(l));let r=Pe(await Fe(await t(`${n}?${e}`,{headers:{accept:`application/json`}})));if(!r||!Array.isArray(r.items)||typeof r.count!=`number`||!Number.isSafeInteger(r.count)||r.count<0||typeof r.limit!=`number`||!Number.isSafeInteger(r.limit)||r.limit<1||r.limit>Me||typeof r.offset!=`number`||!Number.isSafeInteger(r.offset)||r.offset!==l||r.items.length>r.limit)throw new Q(502,`invalid_result`);let a=r.items.map(i);for(let e of a){if(c.has(e.id))throw new Q(502,`invalid_result`);c.add(e.id)}if(s.push(...a),l+=r.items.length,l>=r.count)return s;if(r.items.length===0)throw new Q(502,`invalid_result`)}throw new Q(502,`invalid_result`)},get:a,async run(e){let i=Pe(await Fe(await t(`${n}/${Ie(e)}/run`,{method:`POST`,headers:{accept:`application/json`}})));if(i?.action!==`run`||!ke(i.result))throw new Q(502,`invalid_result`);return r.set(e,i.result.ranAt),i.result},async archive(e,r){let i=Pe(await Fe(await t(`${n}/${Ie(e)}/archive`,{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`},body:JSON.stringify({archived:r})}))),a=Pe(i?.result);if(i?.action!==`archive`||a?.id!==e||a.status!==(r?`archived`:`active`))throw new Q(502,`invalid_result`)},async confirm(e){let n=Pe(await Fe(await t(Le(e.confirmPath),{method:`POST`,headers:{"content-type":`application/json`,accept:`application/json`},body:JSON.stringify({spec:e.spec,specHash:e.specHash})})));if(typeof n?.id!=`string`||n.specHash!==e.specHash)throw new Q(502,`invalid_result`);return a(n.id)}}}var ze,Be=``;function Ve(e={}){if(typeof window>`u`)throw Error(`The runtime reports browser client is unavailable during SSR`);let t=`${e.scopeKey??``}:${e.currentUserId??``}:${e.canArchive===!0}`;return(!ze||Be!==t)&&(ze=Re(e),Be=t),ze}function He(e){return e.replace(/([a-z\d])([A-Z])/g,`$1 $2`).replace(/[_-]+/g,` `).trim().toLowerCase().replace(/^./,e=>e.toUpperCase())}var Ue=/^\d{4}-\d{2}-\d{2}(?:[T ][\d:.]+(?:Z|[+-]\d{2}:?\d{2})?)?$/;function We(e){if(typeof e!=`string`||!Ue.test(e))return null;let t=new Date(/^\d{4}-\d{2}-\d{2}$/.test(e)?`${e}T00:00:00Z`:e);return Number.isNaN(t.getTime())?null:t}function Ge(e,t){let n=new Map;e.filters.forEach((e,t)=>{let r=We(e.value);if(!r)return;let i=n.get(e.field)??{filters:[]};if(e.op===`gte`||e.op===`gt`)i.from=r;else if(e.op===`lt`||e.op===`lte`){let t=new Date(r),n=t.getUTCHours()===0&&t.getUTCMinutes()===0&&t.getUTCSeconds()===0;e.op===`lt`&&n&&t.setUTCDate(t.getUTCDate()-1),i.to=t}else return;i.filters.push(t),n.set(e.field,i)});let[r,i]=[...n.entries()][0]??[];if(!r||!i)return null;let a=`en`;try{a=Intl.getCanonicalLocales(t.locale)[0]??`en`}catch{}let o=new Intl.DateTimeFormat(a,{timeZone:`UTC`,day:`numeric`,month:`short`,year:`numeric`}),s=i.from&&i.to?o.formatRange(i.from,i.to):i.from?t.t(`reports.period.since`,{date:o.format(i.from)}):i.to?t.t(`reports.period.until`,{date:o.format(i.to)}):``;return{field:t.label(r),range:s,filters:i.filters}}function Ke(e,t){let{t:n,locale:r,currency:i,source:a,columns:o}=t,s=e=>a?.fields?.find(t=>t.name===e),c=e=>s(e)?.label??He(e),l=a?.label??He(e.source),u=e.dimensions.map(e=>e.bucket?n(`reports.dimension_bucket`,{field:c(e.field),bucket:n(`reports.bucket_unit.${e.bucket}`)}):c(e.field)).join(`, `),d=Ge(e,{locale:r,label:c,t:n}),f=e.measures.map(e=>o?.find(t=>t.id===e.as)?.label??(e.field?n(`reports.aggregate.${e.fn}`,{field:c(e.field)}):n(`reports.aggregate.rows`,{source:l}))),p=(e,t)=>{let n=t=>s(e)?.format===`money`&&typeof t==`number`?U(t,{format:`money`,currency:i,locale:r}):String(t??``);return Array.isArray(t)?t.map(n).join(`, `):n(t)},m=e.filters.filter((e,t)=>!d?.filters.includes(t)).map(e=>`${c(e.field)} ${n(`reports.operator.${e.op}`)} ${p(e.field,e.value)}`.trim()),h=e=>o?.find(t=>t.id===e)?.label??He(e);return{source:l,groupings:u,period:d,measures:f,filters:m,having:e.having.map(e=>`${h(e.measure)} ${n(`reports.operator.${e.op}`)} ${e.value}`),line:[l,u,d?.range].filter(e=>!!e).join(` · `)}}var qe=new Set([`minute`,`hour`,`day`,`week`,`month`,`quarter`,`year`]);function Je(e){let t=e.chart.x?e.columns.find(t=>t.id===e.chart.x):e.columns.find(e=>e.role===`dimension`);return t?.bucket&&qe.has(t.bucket)?t:void 0}function Ye(e){let t=e.columns.filter(e=>e.role===`measure`),n=e.chart.y??[];return[...t.filter(e=>n.includes(e.id)),...t.filter(e=>!n.includes(e.id))]}function Xe(e){return e.format===`money`?`money`:e.type===`integer`?`integer`:`decimal`}function Ze(e,t,n){let{t:r,locale:i,currency:a}=n,o=e.rows.map(e=>({row:e,value:e[t.id]})).filter(e=>typeof e.value==`number`&&Number.isFinite(e.value));if(o.length===0)return[];let s=e=>Ae(t.type===`integer`&&!Number.isInteger(e)?Math.round(e*100)/100:e,t.type===`integer`&&!Number.isInteger(e)?{...t,type:`decimal`}:t,i,a);if(!e.columns.some(e=>e.role===`dimension`)||o.length===1)return[{label:t.label,value:s(o[0].value)}];let c=o.reduce((e,t)=>e+t.value,0),l=o.reduce((e,t)=>t.value>e.value?t:e),u=Je(e),d=[];return(n.fn===`sum`||n.fn===`count`)&&d.push({label:r(`reports.figure.total`),value:s(c)}),d.push({label:u?.bucket?r(`reports.figure.average_per`,{bucket:r(`reports.bucket_unit.${u.bucket}`)}):r(`reports.figure.average`),value:s(c/o.length)}),d.push({label:r(`reports.figure.peak`),value:s(l.value),detail:n.groupLabel(l.row)}),d}function Qe(e,t,n=new Date,r){let i=new Date(e);if(Number.isNaN(i.getTime()))return e;let a=`en`;try{a=Intl.getCanonicalLocales(t)[0]??`en`}catch{}let o=Math.round((i.getTime()-n.getTime())/1e3),s=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60]],c=new Intl.RelativeTimeFormat(a,{numeric:`auto`});for(let[e,t]of s)if(Math.abs(o)>=t)return c.format(Math.round(o/t),e);return r??c.format(0,`second`)}function $e(e,t=!1){let n=!t&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return/[",\n\r]/.test(n)?`"${n.replaceAll(`"`,`""`)}"`:n}function et(e,t){return`${[e.columns.map(e=>$e(e.label)).join(`,`),...e.rows.map(n=>e.columns.map(e=>$e(t(n[e.id],e),(e.type===`integer`||e.type===`decimal`)&&typeof n[e.id]==`number`)).join(`,`))].join(`\r
2
2
  `)}\r\n`}var $=M({"reports.title":`Saved reports`,"reports.new":`New report`,"reports.new_prompt":`Make a report of `,"reports.hint":`Ask the assistant for a new one, for example “sales by month”.`,"reports.ask_where":`Open the assistant and ask for a report, for example “sales by month”.`,"reports.empty_title":`No saved reports yet`,"reports.filter_label":`Whose reports`,"reports.filter_all":`Everyone’s`,"reports.filter_mine":`Mine`,"reports.archived_badge":`Archived`,"reports.more":`More actions for {title}`,"reports.archive_confirm_title":`Archive “{title}”?`,"reports.archive_confirm":`It leaves Saved reports for everyone on your team. You can restore it under Show archived.`,"reports.restore":`Restore`,"reports.saved_at":`Saved {time}`,"reports.saved_by":`Saved by {author}`,"reports.saved_by_at":`Saved by {author} {time}`,"reports.ran_at":`Last run {time}`,"reports.just_now":`just now`,"reports.period":`Period`,"reports.period.since":`Since {date}`,"reports.period.until":`Until {date}`,"reports.aggregate.rows":`Number of records`,"reports.figure.total":`Total`,"reports.figure.average":`Average`,"reports.figure.average_per":`Average per {bucket}`,"reports.figure.peak":`Peak`,"reports.figures":`Headline figures`,"reports.edit":`Edit`,"reports.edit_prompt":`Change the report “{title}”: `,"reports.export_csv":`Export CSV`,"reports.view":`Show as`,"reports.view_chart":`Chart`,"reports.view_table":`Table`,"reports.measure_pick":`Measure`,"reports.view_all":`View all saved reports`,"reports.open_report":`Open report`,"reports.groups_count":`Across {count} groups`,"reports.run_failed":`This report could not run.`,"reports.details":`Report details`,"reports.only_mine":`Only mine`,"reports.archived":`Show archived`,"reports.archive":`Archive`,"reports.unarchive":`Restore`,"reports.loading":`Loading reports…`,"reports.running":`Running report…`,"reports.empty":`Ask the assistant for a report, check its preview, and approve it. It is kept here for your team, with its numbers up to date each time you open it.`,"reports.no_rows":`No matching records.`,"reports.unavailable":`Reports are unavailable because this host has no server.`,"reports.error":`The report request failed. Please try again.`,"reports.denied":`You do not have permission to read this report or one of its fields.`,"reports.invalid":`The report returned an invalid result.`,"reports.retry":`Try again`,"reports.rerun":`Re-run`,"reports.table":`Table`,"reports.chart":`Chart`,"reports.source":`Source`,"reports.author":`Author`,"reports.last_run":`Last run: {time}`,"reports.never_run":`No recent run`,"reports.truncated":`Showing a bounded sample; more rows are available.`,"reports.yes":`Yes`,"reports.no":`No`,"reports.select_report":`Report`,"reports.select_measure":`Measure`,"reports.choose_report":`Choose a saved report`,"reports.choose_measure":`Choose a measure`,"reports.select_dimension":`Group by`,"reports.choose_dimension":`The report’s first grouping`,"reports.options_invalid":`Choose a report and measure before saving.`,"reports.cancel":`Cancel`,"reports.save":`Save`,"reports.confirm_title":`Review report proposal`,"reports.saved":`Report saved`,"reports.open":`Open report`,"reports.declined":`Declined — nothing saved`,"reports.dimension_bucket":`{field} by {bucket}`,"reports.bucket_unit.minute":`minute`,"reports.bucket_unit.hour":`hour`,"reports.bucket_unit.day":`day`,"reports.bucket_unit.week":`week`,"reports.bucket_unit.month":`month`,"reports.bucket_unit.quarter":`quarter`,"reports.bucket_unit.year":`year`,"reports.groupings":`Group by`,"reports.measures":`Measures`,"reports.filters":`Filters`,"reports.having":`Measure filters`,"reports.none":`None`,"reports.rows":`rows`,"reports.saving":`Saving…`,"reports.approve":`Approve`,"reports.decline":`Decline`,"reports.aggregate.count":`Count of {field}`,"reports.aggregate.countDistinct":`Distinct count of {field}`,"reports.aggregate.sum":`Sum of {field}`,"reports.aggregate.avg":`Average of {field}`,"reports.aggregate.min":`Minimum of {field}`,"reports.aggregate.max":`Maximum of {field}`,"reports.operator.eq":`equals`,"reports.operator.ne":`does not equal`,"reports.operator.gt":`is greater than`,"reports.operator.gte":`is at least`,"reports.operator.lt":`is less than`,"reports.operator.lte":`is at most`,"reports.operator.in":`is one of`,"reports.operator.notIn":`is not one of`,"reports.operator.contains":`contains`,"reports.operator.isNull":`is empty`,"reports.operator.isNotNull":`is not empty`,"reports.bucket.minute":`Minute`,"reports.bucket.hour":`Hour`,"reports.bucket.day":`Day`,"reports.bucket.week":`Week`,"reports.bucket.month":`Month`,"reports.bucket.quarter":`Quarter`,"reports.bucket.year":`Year`}),tt=o(`<p role="alert"> </p>`),nt=o(`<p class="report-result__empty svelte-13bgg2g"> </p>`),rt=o(`<option> </option>`),it=o(`<span class="report-result__figure-detail svelte-13bgg2g"> </span>`),at=o(`<div class="report-result__figure svelte-13bgg2g"><dt class="svelte-13bgg2g"> <!></dt> <dd class="svelte-13bgg2g"><span class="report-result__figure-value svelte-13bgg2g"> </span></dd></div>`),ot=o(`<dl class="report-result__figures svelte-13bgg2g"></dl>`),st=o(`<div class="report-result__controls svelte-13bgg2g"><!> <!></div> <!>`,1),ct=o(`<div class="report-result__toggle svelte-13bgg2g"><!></div>`),lt=o(`<th scope="col"> </th>`),ut=o(`<td> </td>`),dt=o(`<tr class="svelte-13bgg2g"></tr>`),ft=o(`<div class="report-result__table svelte-13bgg2g"><table class="svelte-13bgg2g"><caption class="svelte-13bgg2g"> </caption><thead class="svelte-13bgg2g"><tr></tr></thead><tbody class="svelte-13bgg2g"></tbody></table></div>`),pt=o(`<p class="report-result__series svelte-13bgg2g"> </p>`),mt=o(`<p class="report-result__more svelte-13bgg2g"> </p>`),ht=o(`<!> <!> <!>`,1),gt=o(`<div class="report-result svelte-13bgg2g" data-smrt-component="ReportResult"><!></div>`);function _t(o,_){u(_,!0);let v=h(_,`variant`,3,`compact`),b=h(_,`view`,15,`chart`),S=h(_,`locale`,3,`en`),w=h(_,`currency`,3,`USD`),{t:E}=ee(),A=n(()=>ke(_.result)),j=n(()=>e(A)?Ye(_.result):[]),M=g(null),N=n(()=>e(j).find(t=>t.id===e(M))??e(j)[0]),P=n(()=>e(A)?_.result.chart.x?_.result.columns.find(e=>e.id===_.result.chart.x):_.result.columns.find(e=>e.role===`dimension`):void 0),F=n(()=>e(A)?Je(_.result):void 0),I=n(()=>e(A)&&_.result.chart.type===`table`),L=n(()=>e(I)||b()===`table`);function te(e,t){if(typeof e==`string`&&t?.bucket)return ne(e,t.bucket,S())}function z(e,t){return typeof e==`boolean`?E($[e?`reports.yes`:`reports.no`]):te(e,t)??Ae(e,t,S(),w())}let H=t=>e(P)?z(t[e(P).id],e(P)):e(N)?.label??``,U=n(()=>v()===`full`&&e(A)&&e(N)?Ze(_.result,e(N),{t:E,locale:S(),currency:w(),groupLabel:H,fn:_.spec?.measures.find(t=>t.as===e(N).id)?.fn}):[]),W=n(()=>e(A)&&e(N)?{points:_.result.rows.filter(t=>typeof t[e(N).id]==`number`).map(t=>({label:H(t),value:t[e(N).id]})),format:Xe(e(N)),currency:w()}:null),G=n(()=>e(N)?e(F)?.bucket?E($[`reports.dimension_bucket`],{field:e(N).label,bucket:E(`reports.bucket_unit.${e(F).bucket}`)}):e(P)?E($[`reports.dimension_bucket`],{field:e(N).label,bucket:e(P).label.toLowerCase()}):e(N).label:``),K=e=>e.type===`integer`||e.type===`decimal`,q=n(()=>e(j).map(e=>({value:e.id,label:e.label})));var J=gt(),Y=y(J),X=e=>{var t=tt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.invalid`])]),p(e,t)},ie=e=>{var t=nt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.no_rows`])]),p(e,t)},ae=r=>{var o=ht(),u=T(o),h=r=>{var i=st(),o=T(i),c=y(o),u=t=>{{let r=n(()=>E($[`reports.view`])),i=n(()=>[{value:`chart`,label:E($[`reports.view_chart`])},{value:`table`,label:E($[`reports.view_table`])}]);B(t,{get label(){return e(r)},get options(){return e(i)},get value(){return b()},onvaluechange:e=>b(e===`table`?`table`:`chart`)})}};t(c,t=>{e(I)||t(u)});var d=x(c,2),f=r=>{var i=m(),a=T(i),o=t=>{{let r=n(()=>E($[`reports.measure_pick`])),i=n(()=>e(N)?.id);B(t,{get label(){return e(r)},get options(){return e(q)},get value(){return e(i)},onvaluechange:e=>k(M,String(e),!0)})}},c=t=>{{let r=n(()=>E($[`reports.measure_pick`])),i=n(()=>e(N)?.id);V(t,{get"aria-label"(){return e(r)},get value(){return e(i)},onchange:e=>k(M,e.currentTarget.value,!0),children:(t,n)=>{var r=m(),i=T(r);l(i,17,()=>e(q),e=>e.value,(t,n)=>{var r=rt(),i=C(r,!0),a={};D(()=>{s(i,e(n).label),a!==(a=e(n).value)&&(r.value=(r.__value=a)??``)}),p(t,r)}),p(t,r)},$$slots:{default:!0}})}};t(a,t=>{e(j).length<=3?t(o):t(c,-1)}),p(r,i)};t(d,t=>{e(j).length>1&&!e(L)&&t(f)}),a(o);var h=x(o,2),g=n=>{var r=ot();l(r,21,()=>e(U),e=>e.label,(n,r)=>{var i=at(),o=y(i),c=y(o,!0),l=x(c),u=t=>{var n=it(),i=C(n);D(()=>s(i,` · ${e(r).detail??``}`)),p(t,n)};t(l,t=>{e(r).detail&&t(u)}),a(o);var d=x(o,2),f=y(d),m=C(f,!0);a(d),a(i),D(()=>{s(c,e(r).label),s(m,e(r).value)}),p(n,i)}),a(r),D(e=>O(r,`aria-label`,e),[()=>E($[`reports.figures`])]),p(n,r)};t(h,t=>{e(U).length>0&&!e(L)&&t(g)}),p(r,i)},g=t=>{var r=ct(),i=y(r);{let t=n(()=>b()===`table`);R(i,{type:`button`,variant:`ghost`,size:`sm`,get"aria-pressed"(){return e(t)},onclick:()=>b(b()===`table`?`chart`:`table`),children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>E($[b()===`table`?`reports.chart`:`reports.table`])]),p(e,n)},$$slots:{default:!0}})}a(r),p(t,r)};t(u,t=>{v()===`full`?t(h):e(I)||t(g,1)});var w=x(u,2),A=t=>{var n=ft(),r=y(n),o=y(r),c=C(o,!0),u=x(o),d=y(u);l(d,21,()=>_.result.columns,e=>e.id,(t,n)=>{var r=lt();let a;var o=C(r,!0);D(t=>{a=i(r,1,`svelte-13bgg2g`,null,a,{"report-result__num":t}),s(o,e(n).label)},[()=>K(e(n))]),p(t,r)}),a(d),a(u);var m=x(u);l(m,21,()=>_.result.rows,f,(t,n)=>{var r=dt();l(r,21,()=>_.result.columns,e=>e.id,(t,r)=>{var a=ut();let o;var c=C(a,!0);D((e,t)=>{o=i(a,1,`svelte-13bgg2g`,null,o,{"report-result__num":e}),s(c,t)},[()=>K(e(r)),()=>z(e(n)[e(r).id],e(r))]),p(t,a)}),a(r),p(t,r)}),a(m),a(r),a(n),D(()=>s(c,_.result.title)),p(t,n)},ee=r=>{var i=ht(),a=T(i),o=t=>{var n=pt(),r=C(n,!0);D(()=>s(r,e(G))),p(t,n)};t(a,t=>{(v()===`full`||e(j).length>1)&&t(o)});var c=x(a,2);{let t=n(()=>v()===`full`?`tall`:`regular`),r=n(()=>v()===`full`),i=n(()=>v()!==`full`);re(c,{get title(){return e(N).label},get style(){return _.result.chart.type},get size(){return e(t)},get valueAxis(){return e(r)},get readout(){return e(i)},get locale(){return S()},get data(){return e(W)}})}var l=x(c,2),u=t=>{var n=mt(),r=C(n);D((e,t)=>s(r,`${e??``} · ${t??``}`),[()=>e(j).slice(1).map(e=>e.label).join(`, `),()=>E($[`reports.table`]).toLowerCase()]),p(t,n)};t(l,t=>{v()===`compact`&&e(j).length>1&&t(u)}),p(r,i)};t(w,t=>{e(L)?t(A):e(N)&&e(W)&&t(ee,1)});var P=x(w,2),F=e=>{var t=nt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.truncated`])]),p(e,t)};t(P,e=>{_.result.truncated&&e(F)}),p(r,o)};t(Y,t=>{e(A)?_.result.rows.length===0?t(ie,1):t(ae,-1):t(X)}),a(J),D(()=>O(J,`data-variant`,v())),p(o,J),r()}var vt=o(`<p role="alert"> </p>`),yt=o(`<p class="report-confirmation-description svelte-dnrtr8"> </p>`),bt=o(`<div class="svelte-dnrtr8"><dt class="svelte-dnrtr8"> </dt><dd class="svelte-dnrtr8"> </dd></div>`),xt=o(`<dl class="report-confirmation-facts svelte-dnrtr8"><div class="svelte-dnrtr8"><dt class="svelte-dnrtr8"> </dt><dd class="svelte-dnrtr8"> </dd></div> <div class="svelte-dnrtr8"><dt class="svelte-dnrtr8"> </dt><dd class="svelte-dnrtr8"> </dd></div> <!> <div class="svelte-dnrtr8"><dt class="svelte-dnrtr8"> </dt><dd class="svelte-dnrtr8"> </dd></div> <!> <!></dl>`),St=o(`<p class="report-confirmation-outcome svelte-dnrtr8" role="status"> <a> </a></p>`),Ct=o(`<p class="report-confirmation-outcome svelte-dnrtr8" role="status"> </p>`),wt=o(`<!> <div class="report-confirmation-actions svelte-dnrtr8"><!> <!></div>`,1),Tt=o(`<!> <!> <!> <!>`,1),Et=o(`<section data-smrt-component="ReportConfirmation" class="svelte-dnrtr8"><h3 class="report-confirmation-title svelte-dnrtr8"> </h3> <!></section>`);function Dt(i,o){u(o,!0);let l=h(o,`reportHref`,3,e=>`/reports/${encodeURIComponent(e)}`),f=h(o,`outcome`,3,null),m=h(o,`fields`,19,()=>[]),v=h(o,`locale`,3,`en`),b=h(o,`currency`,3,`USD`),{t:S}=ee(),w=g(`idle`),E=g(null),A=g(null),j=0;_(()=>(o.proposal,o.confirm,++j,k(w,`idle`),k(E,null),k(A,null),()=>{++j}));let M=n(()=>je(o.proposal)),N=n(()=>f()??(e(w)===`saved`&&e(E)?{status:`saved`,report:e(E)}:e(w)===`declined`?{status:`declined`}:null)),P=n(()=>e(M)?Ke(o.proposal.spec,{t:S,locale:v(),currency:b(),source:{id:o.proposal.spec.source,label:o.proposal.sourceLabel,fields:m()},columns:o.proposal.preview.columns}):null);async function F(t){if(!t.isTrusted||e(w)!==`idle`||!e(M)||e(N))return;let n=j,r=o.proposal.specHash;k(w,`saving`),k(A,null);try{let e=await o.confirm({...o.proposal,specHash:r});if(n!==j)return;k(E,e,!0),k(w,`saved`),o.onsaved?.(e)}catch(e){n===j&&(k(w,`idle`),k(A,Oe(e),!0))}}function I(){e(w)!==`idle`||e(N)||(k(w,`declined`),o.ondecline?.())}var L=Et(),te=y(L),z=C(te,!0),B=x(te,2),V=e=>{var t=vt(),n=C(t,!0);D(e=>s(n,e),[()=>S($[`reports.invalid`])]),p(e,t)},H=r=>{var i=Tt(),u=T(i),f=e=>{var t=yt(),n=C(t,!0);D(()=>s(n,o.proposal.spec.description)),p(e,t)};t(u,e=>{o.proposal.spec.description&&e(f)});var m=x(u,2),h=n=>{var r=xt(),i=y(r),o=y(i),c=C(o,!0),l=x(o),u=C(l,!0);a(i);var d=x(i,2),f=y(d),m=C(f,!0),h=x(f),g=C(h,!0);a(d);var _=x(d,2),v=t=>{var n=bt(),r=y(n),i=C(r,!0),o=x(r),c=C(o,!0);a(n),D(t=>{s(i,t),s(c,e(P).period.range)},[()=>S($[`reports.period`])]),p(t,n)};t(_,t=>{e(P).period&&t(v)});var b=x(_,2),w=y(b),T=C(w,!0),E=x(w),O=C(E,!0);a(b);var k=x(b,2),A=t=>{var n=bt(),r=y(n),i=C(r,!0),o=x(r),c=C(o,!0);a(n),D((e,t)=>{s(i,e),s(c,t)},[()=>S($[`reports.filters`]),()=>e(P).filters.join(`; `)]),p(t,n)};t(k,t=>{e(P).filters.length&&t(A)});var j=x(k,2),M=t=>{var n=bt(),r=y(n),i=C(r,!0),o=x(r),c=C(o,!0);a(n),D((e,t)=>{s(i,e),s(c,t)},[()=>S($[`reports.having`]),()=>e(P).having.join(`; `)]),p(t,n)};t(j,t=>{e(P).having.length&&t(M)}),a(r),D((t,n,r,i,a)=>{s(c,t),s(u,e(P).source),s(m,n),s(g,r),s(T,i),s(O,a)},[()=>S($[`reports.source`]),()=>S($[`reports.groupings`]),()=>e(P).groupings||S($[`reports.none`]),()=>S($[`reports.measures`]),()=>e(P).measures.join(`, `)]),p(n,r)};t(m,t=>{e(P)&&t(h)});var g=x(m,2);_t(g,{get result(){return o.proposal.preview},get locale(){return v()},get currency(){return b()}});var _=x(g,2),E=t=>{var n=St(),r=y(n),i=x(r),o=C(i,!0);a(n),D((e,t,n)=>{s(r,`${e??``} · `),O(i,`href`,t),s(o,n)},[()=>S($[`reports.saved`]),()=>l()(e(N).report.id),()=>S($[`reports.open`])]),p(t,n)},k=e=>{var t=Ct(),n=C(t,!0);D(e=>s(n,e),[()=>S($[`reports.declined`])]),p(e,t)},j=r=>{var i=wt(),o=T(i),l=t=>{var n=vt(),r=C(n,!0);D(e=>s(r,e),[()=>S($[e(A)])]),p(t,n)};t(o,t=>{e(A)&&t(l)});var u=x(o,2),f=y(u);{let t=n(()=>e(w)===`saving`);R(f,{variant:`secondary`,get disabled(){return e(t)},onclick:I,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>S($[`reports.decline`])]),p(e,n)},$$slots:{default:!0}})}var m=x(f,2);{let t=n(()=>e(w)===`saving`),r=n(()=>e(w)===`saving`);R(m,{get disabled(){return e(t)},get"aria-busy"(){return e(r)},onclick:F,children:(t,n)=>{d();var r=c();D(e=>s(r,e),[()=>S($[e(w)===`saving`?`reports.saving`:`reports.approve`])]),p(t,r)},$$slots:{default:!0}})}a(u),p(r,i)};t(_,t=>{e(N)?.status===`saved`?t(E):e(N)?.status===`declined`?t(k,1):t(j,-1)}),p(r,i)};t(B,t=>{e(M)?t(H,-1):t(V)}),a(L),D((e,t)=>{O(L,`aria-label`,e),s(z,t)},[()=>S($[`reports.confirm_title`]),()=>e(M)?o.proposal.spec.title:S($[`reports.confirm_title`])]),p(i,L),r()}var Ot=o(`<p class="report-detail__line svelte-ckjxb4"> </p>`),kt=o(`<p class="report-detail__description svelte-ckjxb4"> </p>`),At=o(`<!> <!>`,1),jt=o(`<span aria-hidden="true">⋯</span>`),Mt=o(`<div class="report-detail__actions svelte-ckjxb4"><!> <!></div>`),Nt=o(`<p class="report-detail__note svelte-ckjxb4"> </p>`),Pt=o(`<div class="svelte-ckjxb4"><dt class="svelte-ckjxb4"> </dt><dd class="svelte-ckjxb4"> <span class="report-detail__aside svelte-ckjxb4"> </span></dd></div>`),Ft=o(`<div class="svelte-ckjxb4"><dt class="svelte-ckjxb4"> </dt><dd class="svelte-ckjxb4"> </dd></div>`),It=o(`<div class="report-detail__meta svelte-ckjxb4"><dt class="report-detail__sr svelte-ckjxb4"> </dt><dd class="svelte-ckjxb4"> </dd></div>`),Lt=o(`<dl class="report-detail__facts svelte-ckjxb4"><div class="svelte-ckjxb4"><dt class="svelte-ckjxb4"> </dt><dd class="svelte-ckjxb4"> </dd></div> <div class="svelte-ckjxb4"><dt class="svelte-ckjxb4"> </dt><dd class="svelte-ckjxb4"> </dd></div> <!> <div class="svelte-ckjxb4"><dt class="svelte-ckjxb4"> </dt><dd class="svelte-ckjxb4"> </dd></div> <!> <!> <!></dl>`),Rt=o(`<p class="report-detail__note svelte-ckjxb4" role="status"> </p>`),zt=o(`<p class="report-detail__error svelte-ckjxb4" role="alert"> </p>`),Bt=o(`<div class="report-detail__result svelte-ckjxb4"><!></div>`),Vt=o(`<!> <!> <!> <!> <!>`,1),Ht=o(`<section class="report-detail svelte-ckjxb4" data-smrt-component="ReportDetail"><header class="report-detail__head svelte-ckjxb4"><div class="report-detail__heading svelte-ckjxb4"><div class="report-detail__title-row svelte-ckjxb4"><h1 class="report-detail__title svelte-ckjxb4"> </h1> <!></div> <!> <!></div> <!></header> <!> <!></section>`);function Ut(i,o){u(o,!0);let l=h(o,`sources`,19,()=>[]),f=h(o,`authorLabel`,3,()=>void 0),b=h(o,`locale`,3,`en`),S=h(o,`currency`,3,`USD`),{t:E}=ee(),M=g(null),P=g(null),F=g(null),L=g(!1),z=g(0),B=g(`chart`),V=g(!1),H=g(!1),ne=g(!1),U=g(null),re=null;_(()=>{let t=o.client,n=o.id;e(z);let r=!0;return re!==n&&k(M,null),re=n,k(P,null),k(F,null),k(L,!!t),t&&(async()=>{try{let e=await t.get(n);if(!r||(k(M,e,!0),w(()=>o.onreport)?.(e),e.status===`archived`))return;let i=await t.run(n);if(!r)return;ke(i)?k(P,i,!0):k(F,`reports.invalid`)}catch(e){r&&k(F,Oe(e),!0)}finally{r&&k(L,!1)}})(),()=>{r=!1}});let W=n(()=>e(M)?l().find(t=>t.id===e(M)?.sourceId):void 0),G=n(()=>e(M)?Ke(e(M).spec,{t:E,locale:b(),currency:S(),source:e(W),columns:e(P)?.columns}):null),K=n(()=>e(M)?f()(e(M).createdByUserId):void 0),q=n(()=>{if(!e(M))return``;let t=e(M).savedAt?Qe(e(M).savedAt,b()):``;return e(K)&&t?E($[`reports.saved_by_at`],{author:e(K),time:t}):e(K)?E($[`reports.saved_by`],{author:e(K)}):t?E($[`reports.saved_at`],{time:t}):``}),J=n(()=>e(P)?.ranAt?E($[`reports.ran_at`],{time:Qe(e(P).ranAt,b(),void 0,E($[`reports.just_now`]))}):``),Y=n(()=>e(M)?.status===`archived`);function X(){e(M)&&(o.onedit?o.onedit(e(M)):k(ne,!(e(U)&&te(e(U),{prompt:E($[`reports.edit_prompt`],{title:e(M).title})}))))}function ie(){if(!e(P)||!e(M)||typeof document>`u`)return;let t=et(e(P),(e,t)=>typeof e==`boolean`?E($[e?`reports.yes`:`reports.no`]):Ae(e,t,b(),S())),n=URL.createObjectURL(new Blob([t],{type:`text/csv;charset=utf-8`})),r=document.createElement(`a`);r.href=n,r.download=`${e(M).title.replace(/[^\p{L}\p{N}]+/gu,`-`).replace(/^-|-$/g,``).toLowerCase()||`report`}.csv`,r.click(),setTimeout(()=>URL.revokeObjectURL(n),0)}async function ae(t){if(o.client&&e(M)&&!e(H)){k(H,!0),k(F,null);try{await o.client.archive(e(M).id,t),A(z)}catch(e){k(F,Oe(e),!0)}finally{k(H,!1),k(V,!1)}}}let oe=n(()=>[...e(M)&&!e(Y)&&!e(F)?[{id:`rerun`,label:E($[`reports.rerun`]),disabled:e(L),onselect:()=>{A(z)}}]:[],...e(M)?.canArchive&&!e(Y)?[{id:`archive`,label:E($[`reports.archive`]),disabled:e(H),onselect:()=>{k(V,!0)}}]:[]]);var Z=Ht(),se=y(Z),ce=y(se),le=y(ce),ue=y(le),de=C(ue,!0),fe=x(ue,2),pe=e=>{I(e,{children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>E($[`reports.archived_badge`])]),p(e,n)},$$slots:{default:!0}})};t(fe,t=>{e(Y)&&t(pe)}),a(le);var me=x(le,2),he=t=>{var n=Ot(),r=C(n,!0);D(()=>s(r,e(G).line)),p(t,n)};t(me,t=>{e(G)&&t(he)});var ge=x(me,2),_e=t=>{var n=kt(),r=C(n,!0);D(()=>s(r,e(M).description)),p(t,n)};t(ge,t=>{e(M)?.description&&t(_e)}),a(ce);var ve=x(ce,2),ye=r=>{var i=Mt(),o=y(i),l=n=>{var r=m(),i=T(r),a=t=>{R(t,{variant:`primary`,get disabled(){return e(H)},onclick:()=>ae(!1),children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>E($[`reports.restore`])]),p(e,n)},$$slots:{default:!0}})};t(i,t=>{e(M).canArchive&&t(a)}),p(n,r)},u=t=>{R(t,{variant:`primary`,get disabled(){return e(L)},onclick:()=>A(z),children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>E($[`reports.retry`])]),p(e,n)},$$slots:{default:!0}})},f=t=>{var r=At(),i=T(r);{let t=n(()=>!e(P));R(i,{variant:`secondary`,get disabled(){return e(t)},onclick:ie,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>E($[`reports.export_csv`])]),p(e,n)},$$slots:{default:!0}})}var a=x(i,2);R(a,{variant:`primary`,onclick:X,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>E($[`reports.edit`])]),p(e,n)},$$slots:{default:!0}}),p(t,r)};t(o,t=>{e(Y)?t(l):e(F)?t(u,1):t(f,-1)});var h=x(o,2),g=t=>{{let r=e=>{var t=jt();p(e,t)},i=n(()=>E($[`reports.more`],{title:e(M).title}));N(t,{variant:`icon`,placement:`bottom-end`,get triggerLabel(){return e(i)},get items(){return e(oe)},trigger:r,$$slots:{trigger:!0}})}};t(h,t=>{e(oe).length&&t(g)}),a(i),p(r,i)};t(ve,t=>{o.client&&e(M)&&t(ye)}),a(se);var be=x(se,2),xe=e=>{var t=Nt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.unavailable`])]),p(e,t)},Se=n=>{var r=Vt(),i=T(r),o=n=>{var r=Lt(),i=y(r),o=y(i),c=C(o,!0),l=x(o),u=C(l,!0);a(i);var d=x(i,2),f=y(d),m=C(f,!0),h=x(f),g=C(h,!0);a(d);var _=x(d,2),v=t=>{var n=Pt(),r=y(n),i=C(r,!0),o=x(r),c=y(o,!0),l=x(c),u=C(l);a(o),a(n),D(t=>{s(i,t),s(c,e(G).period.range),s(u,` · ${e(G).period.field??``}`)},[()=>E($[`reports.period`])]),p(t,n)};t(_,t=>{e(G).period&&t(v)});var b=x(_,2),S=y(b),w=C(S,!0),T=x(S),k=C(T,!0);a(b);var A=x(b,2),j=t=>{var n=Ft(),r=y(n),i=C(r,!0),o=x(r),c=C(o,!0);a(n),D((e,t)=>{s(i,e),s(c,t)},[()=>E($[`reports.filters`]),()=>e(G).filters.join(`; `)]),p(t,n)};t(A,t=>{e(G).filters.length&&t(j)});var M=x(A,2),ee=t=>{var n=Ft(),r=y(n),i=C(r,!0),o=x(r),c=C(o,!0);a(n),D((e,t)=>{s(i,e),s(c,t)},[()=>E($[`reports.having`]),()=>e(G).having.join(`; `)]),p(t,n)};t(M,t=>{e(G).having.length&&t(ee)});var N=x(M,2),P=t=>{var n=It(),r=y(n),i=C(r,!0),o=x(r),c=C(o,!0);a(n),D((e,t)=>{s(i,e),s(c,t)},[()=>E($[`reports.author`]),()=>[e(q),e(J)].filter(Boolean).join(` · `)]),p(t,n)};t(N,t=>{(e(q)||e(J))&&t(P)}),a(r),D((t,n,i,a,o,l)=>{O(r,`aria-label`,t),s(c,n),s(u,e(G).source),s(m,i),s(g,a),s(w,o),s(k,l)},[()=>E($[`reports.details`]),()=>E($[`reports.source`]),()=>E($[`reports.groupings`]),()=>e(G).groupings||E($[`reports.none`]),()=>E($[`reports.measures`]),()=>e(G).measures.join(`, `)]),p(n,r)};t(i,t=>{e(G)&&t(o)});var c=x(i,2),l=e=>{var t=Rt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.ask_where`])]),p(e,t)};t(c,t=>{e(ne)&&t(l)});var u=x(c,2),d=e=>{var t=Rt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.running`])]),p(e,t)};t(u,t=>{e(L)&&!e(P)&&t(d)});var f=x(u,2),m=t=>{var n=zt(),r=C(n,!0);D(e=>s(r,e),[()=>E($[e(F)])]),p(t,n)};t(f,t=>{e(F)&&t(m)});var h=x(f,2),g=t=>{var n=Bt();_t(y(n),{get result(){return e(P)},get spec(){return e(M).spec},variant:`full`,get locale(){return b()},get currency(){return S()},get view(){return e(B)},set view(e){k(B,e,!0)}}),a(n),p(t,n)};t(h,t=>{e(P)&&e(M)&&t(g)}),p(n,r)};t(be,e=>{o.client?e(Se,-1):e(xe)});var Ce=x(be,2);{let t=n(()=>E($[`reports.archive_confirm_title`],{title:e(M)?.title??``})),r=n(()=>E($[`reports.archive_confirm`])),i=n(()=>E($[`reports.archive`])),a=n(()=>E($[`reports.cancel`]));j(Ce,{get open(){return e(V)},get title(){return e(t)},get message(){return e(r)},get confirmLabel(){return e(i)},get cancelLabel(){return e(a)},get loading(){return e(H)},onconfirm:()=>void ae(!0),oncancel:()=>k(V,!1)})}a(Z),v(Z,e=>k(U,e),()=>e(U)),D((e,t)=>{O(Z,`data-report-id`,o.id),O(Z,`aria-label`,e),s(de,t)},[()=>e(M)?.title??E($[`reports.title`]),()=>e(M)?.title??E($[`reports.title`])]),p(i,Z),r()}var Wt=o(`<a class="svelte-2yrjmy"> </a>`),Gt=o(`<span aria-hidden="true">⋯</span>`),Kt=o(`<div class="saved-report-card__menu svelte-2yrjmy"><!></div>`),qt=o(`<p class="saved-report-card__muted svelte-2yrjmy"> </p>`),Jt=o(`<span class="saved-report-card__detail svelte-2yrjmy"> </span>`),Yt=o(`<div class="saved-report-card__spark svelte-2yrjmy"><!></div>`),Xt=o(`<div class="svelte-2yrjmy"><dt class="svelte-2yrjmy"> </dt><dd class="svelte-2yrjmy"> </dd></div>`),Zt=o(`<dl class="saved-report-card__extra svelte-2yrjmy"></dl>`),Qt=o(`<p class="saved-report-card__label svelte-2yrjmy"> </p> <p class="saved-report-card__value svelte-2yrjmy"> <!></p> <!>`,1),$t=o(`<p class="saved-report-card__meta svelte-2yrjmy"> </p>`),en=o(`<article class="saved-report-card svelte-2yrjmy" data-smrt-component="SavedReportCard"><div class="saved-report-card__head svelte-2yrjmy"><!> <!> <!></div> <p class="saved-report-card__line svelte-2yrjmy"> </p> <div class="saved-report-card__figure svelte-2yrjmy"><!></div> <!></article>`);function tn(o,f){u(f,!0);let m=h(f,`actions`,19,()=>[]),g=h(f,`headingLevel`,3,2),_=h(f,`locale`,3,`en`),v=h(f,`currency`,3,`USD`),{t:b}=ee(),w=n(()=>Ke(f.report.spec,{t:b,locale:_(),currency:v(),source:f.source,columns:f.result?.columns})),E=n(()=>f.result?Ye(f.result)[0]:void 0),k=n(()=>f.result?Je(f.result):void 0),A=t=>{let n=e(k)??f.result?.columns.find(e=>e.role===`dimension`),r=n?t[n.id]:void 0;return typeof r==`string`&&e(k)?.bucket?ne(r,e(k).bucket,_()):n?Ae(r,n,_(),v()):``},j=n(()=>e(E)?f.report.spec.measures.find(t=>t.as===e(E).id)?.fn:void 0),M=n(()=>{if(!f.result||!e(E))return null;let t=Ze(f.result,e(E),{t:b,locale:_(),currency:v(),groupLabel:A,fn:e(j)}),n=t.find(e=>e.label===b($[`reports.figure.total`]));if(t.length===1)return{label:e(E).label,value:t[0].value};if(n)return{label:e(E).label,value:n.value};let r=t.at(-1);return r?{label:`${e(E).label} · ${b($[`reports.figure.peak`]).toLowerCase()}`,value:r.value,detail:r.detail}:null}),F=n(()=>{if(!f.result||e(k)||f.result.columns.some(e=>e.role===`dimension`))return[];let t=f.result.rows[0];return t?Ye(f.result).slice(1,3).map(e=>({label:e.label,value:Ae(t[e.id],e,_(),v())})):[]}),L=n(()=>{if(!f.result||!e(E)||!e(k))return null;let t=f.result.rows.filter(t=>typeof t[e(E).id]==`number`).map(t=>({label:A(t),value:t[e(E).id]}));return t.length>1?{points:t,format:Xe(e(E)),currency:v()}:null}),R=n(()=>f.result&&!e(k)&&f.result.columns.some(e=>e.role===`dimension`)?f.result.rows.length:0),te=n(()=>f.report.savedAt?f.author?b($[`reports.saved_by_at`],{author:f.author,time:Qe(f.report.savedAt,_())}):b($[`reports.saved_at`],{time:Qe(f.report.savedAt,_())}):f.author?b($[`reports.saved_by`],{author:f.author}):``);var z=en(),B=y(z),V=y(B);S(V,()=>`h${g()}`,!1,(e,t)=>{i(e,0,`saved-report-card__title svelte-2yrjmy`);var n=Wt(),r=C(n,!0);D(()=>{O(n,`href`,f.href),s(r,f.report.title)}),p(t,n)});var H=x(V,2),U=e=>{I(e,{size:`sm`,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>b($[`reports.archived_badge`])]),p(e,n)},$$slots:{default:!0}})};t(H,e=>{f.report.status===`archived`&&e(U)});var W=x(H,2),G=t=>{var r=Kt(),i=y(r);{let t=e=>{var t=Gt();p(e,t)},r=n(()=>b($[`reports.more`],{title:f.report.title}));N(i,{variant:`icon`,placement:`bottom-end`,get triggerLabel(){return e(r)},get items(){return m()},trigger:t,$$slots:{trigger:!0}})}a(r),p(t,r)};t(W,e=>{m().length&&e(G)}),a(B);var K=x(B,2),q=C(K,!0),J=x(K,2),Y=y(J),X=t=>{{let r=n(()=>b($[`reports.running`]));P(t,{variant:`text`,lines:2,get label(){return e(r)}})}},ie=e=>{var t=qt(),n=C(t,!0);D(e=>s(n,e),[()=>b($[`reports.run_failed`])]),p(e,t)},ae=e=>{var t=qt(),n=C(t,!0);D(e=>s(n,e),[()=>b($[`reports.no_rows`])]),p(e,t)},oe=n=>{var r=Qt(),i=T(r),o=C(i,!0),c=x(i,2),u=y(c,!0),d=x(u),f=t=>{var n=Jt(),r=C(n);D(()=>s(r,`· ${e(M).detail??``}`)),p(t,n)};t(d,t=>{e(M).detail&&t(f)}),a(c);var m=x(c,2),h=t=>{var n=Yt(),r=y(n);re(r,{get data(){return e(L)},style:`line`,size:`compact`,get title(){return e(E).label},get locale(){return _()}}),a(n),p(t,n)},g=t=>{var n=Zt();l(n,21,()=>e(F),e=>e.label,(t,n)=>{var r=Xt(),i=y(r),o=C(i,!0),c=x(i),l=C(c,!0);a(r),D(()=>{s(o,e(n).label),s(l,e(n).value)}),p(t,r)}),a(n),p(t,n)},v=t=>{var n=qt(),r=C(n,!0);D(e=>s(r,e),[()=>b($[`reports.groups_count`],{count:e(R)})]),p(t,n)};t(m,t=>{e(L)&&e(E)?t(h):e(F).length?t(g,1):e(R)>1&&t(v,2)}),D(()=>{s(o,e(M).label),s(u,e(M).value)}),p(n,r)};t(Y,t=>{f.result===void 0?t(X):f.result===null?t(ie,1):f.result.rows.length===0?t(ae,2):e(M)&&t(oe,3)}),a(J);var Z=x(J,2),se=t=>{var n=$t(),r=C(n,!0);D(()=>s(r,e(te))),p(t,n)};t(Z,t=>{e(te)&&t(se)}),a(z),D(()=>{O(z,`data-report-id`,f.report.id),O(z,`data-archived`,f.report.status===`archived`?``:void 0),s(q,e(w).line)}),p(o,z),r()}var nn=o(`<header class="saved-reports__head svelte-1jp87tr"><h1 class="saved-reports__title svelte-1jp87tr"> </h1> <!></header>`),rn=o(`<p class="saved-reports__note svelte-1jp87tr"> </p>`),an=o(`<div class="saved-reports__toolbar svelte-1jp87tr"><!> <!></div>`),on=o(`<div class="saved-reports__toolbar svelte-1jp87tr"><p class="saved-reports__hint svelte-1jp87tr"> </p> <div class="saved-reports__actions svelte-1jp87tr"><!> <!></div></div>`),sn=o(`<p class="saved-reports__note svelte-1jp87tr" role="status"> </p>`),cn=o(`<div class="saved-reports__error svelte-1jp87tr"><p role="alert" class="svelte-1jp87tr"> </p> <!></div>`),ln=o(`<li class="saved-reports__placeholder svelte-1jp87tr"><!></li>`),un=o(`<ul class="saved-reports__grid svelte-1jp87tr" aria-busy="true"></ul>`),dn=o(`<li class="svelte-1jp87tr"><!></li>`),fn=o(`<ul class="saved-reports__grid svelte-1jp87tr"></ul>`),pn=o(`<!> <!> <!> <!>`,1),mn=o(`<section class="saved-reports svelte-1jp87tr" data-smrt-component="SavedReports"><!> <!> <!></section>`);function hn(i,o){u(o,!0);let f=h(o,`reportHref`,3,e=>`/reports/${encodeURIComponent(e)}`),m=h(o,`authorLabel`,3,()=>void 0),S=h(o,`sources`,19,()=>[]),E=h(o,`variant`,3,`page`),M=h(o,`limit`,19,()=>E()===`section`?6:48),N=h(o,`locale`,3,`en`),F=h(o,`currency`,3,`USD`),{t:I}=ee(),L=g(`all`),z=g(!1),V=g(b([])),ne=g(0),U=g(b({})),re=g(!1),W=g(null),K=g(0),q=g(null),J=g(null),Y=g(!1),X=0;async function ie(t,n,r){let i=n.filter(e=>e.status===`active`),a=async()=>{for(let n=i.shift();n;n=i.shift()){let i=n.id,a=null;try{let e=await t.run(i);a=ke(e)?e:null}catch{a=null}if(r!==X)return;k(U,{...e(U),[i]:a},!0)}};await Promise.all([a(),a(),a()])}_(()=>{let t=o.client,n={onlyMine:e(L)===`mine`,includeArchived:e(z)},r=M();e(K);let i=++X;return k(V,[],!0),k(U,{},!0),k(W,null),k(q,null),k(re,!!t),t&&t.list(n).then(n=>{i===X&&(k(ne,n.length,!0),k(V,n.slice(0,r),!0),ie(t,e(V),i))}).catch(e=>{i===X&&k(W,Oe(e),!0)}).finally(()=>{i===X&&k(re,!1)}),()=>{++X}});async function ae(t,n){if(!o.client||e(q)||!t.canArchive)return;let r=X;k(q,t.id,!0),k(W,null);try{await o.client.archive(t.id,n),r===X&&k(K,w(()=>e(K))+1)}catch(e){r===X&&k(W,Oe(e),!0)}finally{r===X&&k(q,null),k(J,null)}}function oe(t){return t.canArchive?t.status===`archived`?[{id:`restore`,label:I($[`reports.restore`]),disabled:e(q)!==null,onselect:()=>void ae(t,!1)}]:[{id:`archive`,label:I($[`reports.archive`]),disabled:e(q)!==null,onselect:()=>{k(J,t,!0)}}]:[]}let Z=g(null);function se(){o.onnewreport?o.onnewreport():k(Y,!(e(Z)&&te(e(Z),{prompt:I($[`reports.new_prompt`])})))}let ce=e=>S().find(t=>t.id===e),le=n(()=>E()===`page`?2:3);var ue=mn(),de=y(ue),fe=e=>{var n=nn(),r=y(n),i=C(r,!0),l=x(r,2),u=e=>{R(e,{variant:`primary`,onclick:se,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>I($[`reports.new`])]),p(e,n)},$$slots:{default:!0}})};t(l,e=>{o.client&&e(u)}),a(n),D(e=>s(i,e),[()=>I($[`reports.title`])]),p(e,n)};t(de,e=>{E()===`page`&&e(fe)});var pe=x(de,2),me=e=>{var t=rn(),n=C(t,!0);D(e=>s(n,e),[()=>I($[`reports.unavailable`])]),p(e,t)},he=r=>{var i=pn(),u=T(i),h=t=>{var r=an(),i=y(r);{let t=n(()=>I($[`reports.filter_label`])),r=n(()=>[{value:`all`,label:I($[`reports.filter_all`])},{value:`mine`,label:I($[`reports.filter_mine`])}]);B(i,{get label(){return e(t)},get options(){return e(r)},get value(){return e(L)},onvaluechange:e=>k(L,e===`mine`?`mine`:`all`,!0)})}var o=x(i,2);{let t=n(()=>I($[`reports.archived`]));H(o,{get label(){return e(t)},size:`sm`,get checked(){return e(z)},set checked(e){k(z,e,!0)}})}a(r),p(t,r)},g=n=>{var r=on(),i=y(r),l=C(i,!0),u=x(i,2),f=y(u),m=e=>{R(e,{variant:`ghost`,size:`sm`,get href(){return o.listHref},children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>I($[`reports.view_all`])]),p(e,n)},$$slots:{default:!0}})};t(f,t=>{o.listHref&&e(ne)>e(V).length&&t(m)});var h=x(f,2);R(h,{variant:`primary`,size:`sm`,onclick:se,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>I($[`reports.new`])]),p(e,n)},$$slots:{default:!0}}),a(u),a(r),D(e=>s(l,e),[()=>I($[`reports.hint`])]),p(n,r)};t(u,t=>{E()===`page`?t(h):e(V).length>0&&t(g,1)});var _=x(u,2),v=e=>{var t=sn(),n=C(t,!0);D(e=>s(n,e),[()=>I($[`reports.ask_where`])]),p(e,t)};t(_,t=>{e(Y)&&t(v)});var b=x(_,2),S=t=>{var n=cn(),r=y(n),i=C(r,!0),o=x(r,2);R(o,{variant:`secondary`,size:`sm`,onclick:()=>A(K),children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>I($[`reports.retry`])]),p(e,n)},$$slots:{default:!0}}),a(n),D(e=>s(i,e),[()=>I($[e(W)])]),p(t,n)};t(b,t=>{e(W)&&t(S)});var w=x(b,2),j=e=>{var t=un();l(t,20,()=>[0,1,2],e=>e,(e,t)=>{var n=ln(),r=y(n);P(r,{variant:`text`,lines:4}),a(n),p(e,n)}),a(t),D(e=>O(t,`aria-label`,e),[()=>I($[`reports.loading`])]),p(e,t)},M=t=>{{let r=n(()=>I($[`reports.empty_title`])),i=n(()=>I($[`reports.empty`])),a=n(()=>I($[`reports.new`])),o=n(()=>E()===`page`?`md`:`sm`);G(t,{get title(){return e(r)},get description(){return e(i)},icon:`document`,get actionLabel(){return e(a)},onaction:se,get size(){return e(o)}})}},ee=t=>{var r=fn();l(r,21,()=>e(V),e=>e.id,(t,r)=>{var i=dn(),o=y(i);{let t=n(()=>f()(e(r).id)),i=n(()=>e(r).status===`archived`?null:e(U)[e(r).id]),a=n(()=>ce(e(r).sourceId)),s=n(()=>oe(e(r))),c=n(()=>m()(e(r).createdByUserId));tn(o,{get report(){return e(r)},get href(){return e(t)},get result(){return e(i)},get source(){return e(a)},get actions(){return e(s)},get author(){return e(c)},get headingLevel(){return e(le)},get locale(){return N()},get currency(){return F()}})}a(i),p(t,i)}),a(r),p(t,r)};t(w,t=>{e(re)?t(j):e(V).length===0&&!e(W)?t(M,1):e(V).length>0&&t(ee,2)}),p(r,i)};t(pe,e=>{o.client?e(he,-1):e(me)});var ge=x(pe,2);{let t=n(()=>e(J)!==null),r=n(()=>I($[`reports.archive_confirm_title`],{title:e(J)?.title??``})),i=n(()=>I($[`reports.archive_confirm`])),a=n(()=>I($[`reports.archive`])),o=n(()=>I($[`reports.cancel`])),s=n(()=>e(q)!==null);j(ge,{get open(){return e(t)},get title(){return e(r)},get message(){return e(i)},get confirmLabel(){return e(a)},get cancelLabel(){return e(o)},get loading(){return e(s)},onconfirm:()=>e(J)&&void ae(e(J),!0),oncancel:()=>k(J,null)})}a(ue),v(ue,e=>k(Z,e),()=>e(Z)),D(e=>{O(ue,`data-variant`,E()),O(ue,`aria-label`,e)},[()=>I($[`reports.title`])]),p(i,ue),r()}function gn(e){let t=e.toolCallData;if(!t||typeof t!=`object`)return null;let n=t;return(n.name??n.tool??n.toolName)===`reports.runtime.define`&&je(n.result)?n.result:null}var _n=o(`<div data-smrt-component="SavedReportsWidget"><!></div>`);function vn(t,i){u(i,!0);let o=h(i,`options`,19,()=>({})),s=h(i,`locale`,3,`en`),c=h(i,`listHref`,3,`/reports`),l=g(void 0);E(()=>{i.client||k(l,Ve(),!0)});let d=n(()=>typeof o().limit==`number`&&o().limit>0?o().limit:6);var f=_n(),m=y(f);{let t=n(()=>i.client??e(l));hn(m,{variant:`section`,get client(){return e(t)},get limit(){return e(d)},get reportHref(){return i.reportHref},get listHref(){return c()},get sources(){return i.sources},get authorLabel(){return i.authorLabel},get locale(){return s()},get currency(){return i.currency}})}a(f),p(t,f),r()}var yn=`planner`,bn=`/api/_reports/runtime/confirm`,xn=`/m/reports/RuntimeReport/`;function Sn(e){return`${xn}${encodeURIComponent(e)}/`}var Cn=class extends Error{status;code;constructor(e,t){super(`Report request failed (${t})`),this.status=e,this.code=t,this.name=`PlannerReportError`}};function wn(){let e=F(le);if(!e)throw Error(`${le} is not in the catalog`);return e.model}function Tn(e){if(typeof e.spec!=`string`)return null;let t;try{t=ae(e.spec)}catch{return null}return{id:e.id,title:t.title,...t.description?{description:t.description}:{},sourceId:t.source,createdByUserId:typeof e.createdByUserId==`string`?e.createdByUserId:``,status:e.status===`archived`?`archived`:`active`,spec:t,...typeof e.createdAt==`string`&&e.createdAt?{savedAt:e.createdAt}:{},canArchive:!0}}function En(e){let t=()=>ce(e.recipeIds(),e.recipes);async function n(n){let r=t(),i=r.find(e=>e.id===n.source),a=i?await e.data.list(i.model):[];return Y(n,a,{sources:r})}async function r(r,i=``){let a=q(r,t(),e.now(),i);if(!a.ok)return a;try{let e=await n(a.spec);return{ok:!0,source:a.source,proposal:{status:`awaiting_confirmation`,specHash:e.specHash,spec:a.spec,sourceLabel:a.source.label,confirmPath:bn,preview:e}}}catch(e){if(e instanceof se)return{ok:!1,question:oe(e,a.source)};throw e}}async function i(){return(await e.data.list(wn())).flatMap(e=>Tn(e)??[]).reverse()}async function a(t){let n=await e.data.get(wn(),t),r=n?Tn(n):null;if(!r)throw new Cn(404,`not_found`);return r}async function o(t){let r;try{r=ae(t.spec)}catch{throw new Cn(422,`invalid_spec`)}let a=await X(r);if(a!==t.specHash)throw new Cn(422,`spec_hash_mismatch`);try{await n(r)}catch(e){throw e instanceof se?new Cn(422,e.code):e}let o=(await i()).find(e=>e.status===`active`&&e.createdByUserId===`planner`&&Z(e.spec)===Z(r));if(o)return o;let s=Tn(await e.data.create(wn(),{title:r.title,description:r.description??``,sourceId:r.source,spec:Z(r),specHash:a,status:`active`,createdByUserId:yn,createdAt:new Date().toISOString()}));if(!s)throw new Cn(500,`invalid_result`);return s}let s={async list({onlyMine:e,includeArchived:t}){return(await i()).filter(n=>(t||n.status===`active`)&&(!e||n.createdByUserId===`planner`))},get:a,async run(e){let t=await a(e);if(t.status===`archived`)throw new Cn(409,`report_archived`);return n(t.spec)},async archive(t,n){await a(t),await e.data.update(wn(),t,{status:n?`archived`:`active`})},confirm:o},c=e=>e.map(({name:e,label:t,type:n,format:r})=>({name:e,label:t,type:n,...r?{format:r}:{}}));function l(e){let n=t();return n.some(t=>t.id===e)?c(J(n,e).fields):[]}function u(){let e=t();return e.map(t=>{let n=J(e,t.id);return{id:n.id,label:n.label,fields:c(n.fields)}})}return{sources:t,define:r,run:n,save:o,client:s,fieldsFor:l,sourceInfo:u}}var Dn=new WeakMap;function On(e){let t=Dn.get(e);return t||(t=En({data:e,recipeIds:()=>K.ids,recipes:W,now:()=>new Date(L)}),Dn.set(e,t)),t}async function kn(e){await ie.openPath?.(Sn(e.id))}async function An(e,t){try{await kn(t)}catch{}e?.isConnected&&z(e,{focus:`[data-smrt-component="ReportDetail"][data-report-id="${CSS.escape(t.id)}"] h1`})}export{Sn as a,hn as c,xn as i,Ut as l,On as n,vn as o,yn as r,gn as s,An as t,Dt as u};
@@ -0,0 +1 @@
1
+ import"./Bbl6Vsf2.js";
@@ -1 +1 @@
1
- import{$ as e,A as t,D as n,E as r,J as i,M as a,N as o,P as s,Q as c,S as l,T as u,Y as d,Z as f,at as p,bt as m,ct as h,dt as g,et as _,ft as ee,gt as v,it as y,j as te,k as b,lt as x,mt as ne,rt as re,st as S,ut as C,w,x as T,y as E,z as ie}from"./0spQrfdd.js";var D=e=>{let t=m(e);if(!t)throw Error(`The catalog has no model ${e}`);return t.model};function O(e){return String(e??``).toUpperCase().replace(/[^A-Z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}var k=/\{([A-Za-z_][\w]*\.[A-Za-z_][\w]*)(?:\|(slug))?\}/g;function A(e,t){return e.replace(k,(e,n,r)=>{let i=t[n],a=i==null?``:String(i);return r===`slug`?O(a):a})}function j(e,t,n=e=>e){return typeof e==`string`?A(e,t):typeof e==`object`&&e?{ref:n(e.ref),...e.field?{field:e.field}:{}}:e}function M(e,t,n){return Object.fromEntries(Object.entries(e??{}).map(([e,r])=>[e,j(r,t,n)]))}function N(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||typeof e==`object`&&e&&!Array.isArray(e)?e:null}function P(e,t,n){return Object.fromEntries(e.flatMap(e=>{let r=F(e.to);return r.alias===t?[[r.field,N(n[e.id])]]:[]}))}function F(e){let t=e.indexOf(`.`);if(t<1||t===e.length-1)throw Error(`A form field maps to "alias.field", got "${e}"`);return{alias:e.slice(0,t),field:e.slice(t+1)}}function I(e,t,n){let{alias:r,field:i}=F(e.to),a=t.find(e=>e.as===r);if(!a)throw Error(`Form field ${e.id} maps to unknown ${r}`);let o=n(a.model).fields.find(e=>e.name===i);if(!o)throw Error(`${a.model} has no field ${i} (form field ${e.id})`);return o}function L(e,t){let{alias:n}=F(e.to),r=t.find(e=>e.as===n);if(!r)throw Error(`Form field ${e.id} maps to unknown ${n}`);return r.model}function R(e,t){return e.default===void 0?t.default===void 0?t.type===`text`?``:null:t.default:e.default}function z(e,t){return Object.fromEntries(e.map(e=>[e.to,t[e.id]]))}var B=(e,t)=>e===t;async function V(e,t,n,r){let i={...n};for(let n of t){if(n.as in i)continue;if(!n.match){i[n.as]=void 0;continue}let t={},a=!0;for(let[e,r]of Object.entries(n.match))if(typeof r==`object`&&r){let n=i[r.ref];n||(a=!1),t[e]=r.field?n?.[r.field]:n?.id}else t[e]=r;i[n.as]=a?(await e.list(r(n.model))).find(e=>Object.entries(t).every(([t,n])=>B(e[t],n))):void 0}return i}var H=4,U=(e,t)=>e.fields.some(e=>e.name===t);function W(e,r,i,o,s){let c=l(n(`${o}:${e.id}:${i.id}`)),d=U(e,`debit`)&&U(e,`credit`),f=d?2*(1+Math.floor(c()*2)):1+Math.floor(c()*H),p=_(e),m=1e3*(1+Math.floor(c()*90));return Array.from({length:f},(l,f)=>{let h=n(`${i.id}:${f}`)%997,g={...u(e,h,o,s),id:w(`${e.id}:${i.id}:${f}`),[r]:i.id};if(U(e,`sortOrder`)&&(g.sortOrder=f),p){let n=e.fields.find(e=>e.related?.endsWith(`:Product`)&&e.name in g),r=a(),{products:o}=r,l=n?o[t(n,{modelId:e.id,index:h,rows:s})%o.length]:o[h%o.length],u=b(h);u?(U(e,`description`)&&(g.description=u.description),g.unitPrice=u.price,n&&(g[n.name]=``)):n&&l&&(U(e,`description`)&&(g.description=l.name),g.unitPrice=l.price);let[d,p]=u?.quantity??l?.quantity??r.lineQuantity??[1,5],m=d+Math.floor(c()*(p-d+1));U(e,`quantity`)&&(g.quantity=m),Object.assign(g,ae(e,i,f,m,Number(g.unitPrice??0))),g.amount=C(g)}if(d){let e=f%2==0;g.debit=e?m/100:0,g.credit=e?0:m/100}return g})}function G(e){return n(`discount:${e.id}`)%3==0}function K(e,t){return Math.round(e*t/1e3)*100}function q(e,t){return t>0&&n(`tax-override:${e.id}:${t}`)%7==0}function J(e,t,r=o().currency){let i=n(`tax-override-kind:${e.id}:${t}`)%4,a=x(r);if(a&&i<2)return a;let s=i%2==0?`exempt`:`zero-rated`;return S.find(e=>e.kind===s)}function ae(e,t,r,i,a){let o={},s=r===0&&G(t),c=n(`discount-kind:${t.id}`)%2==0;U(e,`discountType`)&&(o.discountType=s?c?`percent`:`amount`:`none`),U(e,`discountRate`)&&(o.discountRate=s&&c?`10`:null),U(e,`discount`)&&(o.discount=s&&!(c&&U(e,`discountType`))?K(i,a):0),!U(e,`discountType`)&&o.discount&&(o.discountType=`amount`);let l=q(t,r)?J(t,r):void 0;return U(e,`taxMode`)&&(o.taxMode=l?`override`:`inherit`),U(e,`taxCodeId`)&&(o.taxCodeId=l?.id??null),o}function oe(e,t){let n={...e,...t};return`discount`in t&&!(`discountType`in t)&&n.discountType===`amount`&&(n.discountType=`percent`,n.discountRate=`10`,n.discount=0),`discountRate`in t&&n.discountType===`percent`&&(n.discountType=`none`,n.discountRate=null,n.discount=0),n}var se=[`@happyvertical/smrt-commerce:Order`,`@happyvertical/smrt-commerce:Invoice`],Y=2500;function ce(e,t,n){n===2&&se.includes(t.id)&&typeof e.subtotal==`number`&&typeof e.totalAmount==`number`&&(t.fields.some(e=>e.name===`status`&&e.enum?.includes(`draft`))&&(e.status=`draft`),e.subtotal+=Y,e.totalAmount+=Y)}function le(e,t,n,r){if(!n.length||!n.every(e=>`unitPrice`in e))return[...n];let i=y(t,e,n,r);return Object.assign(e,i.row),i.lines}var X=e=>typeof e==`number`&&Number.isFinite(e)?e:0,ue=e=>e.status!==`draft`&&e.status!==`cancelled`&&X(e.totalAmount)>0;function de(e,t,r,i){let a=new Map(r.map(e=>[e.id,X(e.totalAmount)])),o=[];for(let s of t){if(s.status!==`completed`){s.status!==`refunded`&&(s.paidAt=null);continue}let t=l(n(`${i}:alloc:${s.id}`)),c=r.filter(e=>ue(e)&&e.customerId===s.customerId&&(a.get(e.id)??0)>0).slice(0,t()<.3?2:1);if(c.length===0)continue;let d=c.map((e,n)=>{let r=a.get(e.id)??0,i=n>0||t()<.6?r:Math.min(r,Math.max(100,Math.round(r*(.3+t()*.4)/100)*100));return a.set(e.id,r-i),{inv:e,part:i}}),f=Math.max(...d.map(({inv:e})=>Date.parse(String(e.issueDate)))),p=new Date(Math.max(f,Math.min(f+(1+Math.floor(t()*20))*E,T))).toISOString();s.amount=d.reduce((e,t)=>e+t.part,0),s.paidAt=p,`contractId`in s&&d[0]?.inv.contractId&&(s.contractId=d[0].inv.contractId);for(let{inv:t,part:n}of d)o.push({...u(e.model,o.length,i),id:w(`${e.model.id}:${s.id}:${t.id}`),[e.paymentFk]:s.id,[e.invoiceFk]:t.id,amount:n,allocatedAt:p})}return o}function Z(e){return typeof e==`object`&&!!e&&typeof e.ref==`string`}var Q=`smrt-planner:data:v6:`,fe=`@happyvertical/smrt-commerce:TaxCode`,pe=`@happyvertical/smrt-commerce:TaxComponent`,me=[`taxable`,`zero-rated`,`exempt`,`out-of-scope`];function he(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}var $=`${Q}_created`;function ge(e){if(e)try{let t=[];for(let n=0;n<e.length;n++){let r=e.key(n);r?.startsWith(`smrt-planner:data:v6:`)&&t.push(r)}for(let n of t)e.removeItem(n)}catch{}}function _e(t={}){let n=t.seed??1,a=t.rowsPerModel??8,l=new Set(t.empty??[]),u=new Map,m=new Set,b=t.storage??null,x=e=>`${Q}${e.id}`,S=e=>{if(b)try{let t=b.getItem(x(e));if(t===null)return;let n=JSON.parse(t);if(Array.isArray(n)&&n.every(e=>typeof e==`object`&&!!e&&typeof e.id==`string`))return n}catch{}},C=0;if(b)try{C=Number(b.getItem($))||0}catch{C=0}let E=new Map,D=e=>{let n=E.get(e);return n||(n=t.children?.links(e)??[],E.set(e,n)),n},O,k,A=e=>{if(!O){O=new Map;for(let e of t.children?.models??[])for(let t of D(e.id)){let n=O.get(t.model.id)??[];n.push({parent:e,fk:t.fk}),O.set(t.model.id,n)}k=new Map(O);for(let[e,t]of O){let n=e.slice(e.lastIndexOf(`:`)+1).toLowerCase(),r=t.find(e=>n.startsWith(e.fk.replace(/Id$/,``).toLowerCase()))?.fk??t[0]?.fk;O.set(e,t.filter(e=>e.fk===r))}}return O.get(e)??[]},j=t=>{if(!e(t))return;A(t.id);let n=k?.get(t.id)??[],r=d(t)?.name,a=i(t)?.name,o=n.find(e=>e.fk===r)?.parent,s=n.find(e=>e.fk===a)?.parent;return o&&s&&r&&a?{model:t,paymentFk:r,invoiceFk:a,payment:o,invoice:s}:void 0},M=(n,r)=>{if(!p(n))return r;let i=D(n.id).find(t=>e(t.model)),a=i&&j(i.model);if(!i||!a)return r;let o=new Map(P(a.payment).map(e=>[e.id,e])),s=P(i.model).filter(e=>e[i.fk]===r.id&&o.get(String(e[a.paymentFk]))?.status===`completed`).map(e=>({amount:Number(e.amount??0),at:String(e.allocatedAt??``)})),c=re(r,s,(t.now??(()=>T))()),l={...r,amountPaid:c.amountPaid,status:c.status};return n.fields.some(e=>e.name===`paidDate`)&&(l.paidDate=c.paidDate),l},N=(e,t)=>{let n=P(e),r=n.findIndex(e=>e.id===t);r>=0&&(n[r]=M(e,n[r]))},P=e=>{let i=u.get(e.id);if(i)return i;let o=S(e);if(o){u.set(e.id,o);for(let t of D(e.id))P(t.model);return o}let s=l.has(e.id)?void 0:t.samples?.[e.id];if(s){let t=[];return u.set(e.id,t),t.push(...s.make(s.from.map(P),n)),t}let c=j(e),d=c?[]:A(e.id),f=l.has(e.id)||d.length||c?[]:r(e,te(e.id,a),n,a);u.set(e.id,f);for(let t of D(e.id))P(t.model);if(c&&!l.has(e.id)){for(let e of D(c.invoice.id))_(e.model)&&P(e.model);let e=P(c.invoice);f.push(...de(c,P(c.payment),e,n)),e.forEach((t,n)=>{e[n]=M(c.invoice,t)})}if(!l.has(e.id))for(let{parent:r,fk:i}of d){let o=t.defaults?.(e)??{};P(r).forEach((t,s)=>{let c=W(e,i,t,n,a).map(e=>oe(e,o));_(e)?(f.push(...le(t,r,c,L(r,t))),ce(t,r,s)):f.push(...c)})}return f},F=new Map((t.children?.models??[]).map(e=>[e.id,e])),I=e=>{let t=ee(e),n=F.get(fe),r=F.get(pe),i=n?P(n):[];if(!i.length)return t;let a=new Map(t.flatMap(e=>e.components.map(e=>[e.id,e])));for(let e of r?P(r):[])a.set(e.id,{id:e.id,key:e.id,name:String(e.name??``),percent:String(e.percent??`0`),recoverable:e.recoverable===!0});let o=i.map(e=>{let t=[];try{t=JSON.parse(String(e.componentsJson??`[]`))}catch{t=[]}let n=(Array.isArray(t)?t:[]).flatMap(e=>{let t=e&&typeof e==`object`?a.get(String(e.taxComponentId)):void 0;return t?[t]:[]}),r=me.includes(String(e.kind))?e.kind:`taxable`,i=[`sales`,`purchases`,`both`].includes(String(e.appliesTo))?e.appliesTo:`both`;return{id:e.id,code:String(e.code??``),name:String(e.name??``),kind:r,appliesTo:i,active:e.active!==!1,components:n}}),s=new Map(o.map(e=>[e.id,e]));if(t.some(e=>s.has(e.id))){let n=h(e);return[...t.filter(e=>s.has(e.id)||e.id===n.id).map(e=>s.get(e.id)??e),...o.filter(e=>!t.some(t=>t.id===e.id))]}return[...t,...o]},L=(e,t)=>{let n=o(),r=s()??.05,i=I(r),a=e.fields.find(e=>e.name===`customerId`&&e.related),l=a?.related?F.get(a.related):void 0,d=l?P(l).find(e=>e.id===t.customerId):void 0,p=e=>{for(let[t,n]of u){if(!t.endsWith(`:Product`))continue;let r=n.find(t=>t.id===e);if(r)return r}},m=e=>typeof e==`string`&&e?e:null;return{lineAmountType:f(t,n.pricesIncludeTax?`inclusive`:`exclusive`),roundingScope:c(t,n.taxRounding),currency:g(t.currency,g(n.currency)),codes:i,appDefaultCodeId:h(r).id,customerTaxExempt:d?.taxExempt===!0,partyCodeId:m(d?.defaultTaxCodeId),productCodeOf:e=>m(p(e)?.defaultSalesTaxCodeId)}},R=e=>{if(!b)return;let t=e=>{let t=j(e);return t?[t.payment,t.invoice]:[]},n=[e,...D(e.id).map(e=>e.model),...A(e.id).map(e=>e.parent),...t(e),...D(e.id).flatMap(e=>t(e.model))];try{for(let e of n){let t=u.get(e.id);t&&b.setItem(x(e),JSON.stringify(t))}b.setItem($,String(C))}catch{}},z=e=>D(e.id).find(t=>_(t.model)&&A(t.model.id).some(n=>n.parent.id===e.id&&n.fk===t.fk)),B=(e,t,n=!1)=>{let r=z(e);if(!r)return!1;let i=P(e),a=i.findIndex(e=>e.id===t);if(a<0)return!1;let o=P(r.model),s=o.filter(e=>e[r.fk]===t),c=i[a];if(he(e,c)){if(n)throw new v(`FROZEN_DOCUMENT`,`This ${e.name.toLowerCase()} has been issued, so its lines can no longer change.`);return!0}let l=y(e,c,s,L(e,c));i[a]=l.row;for(let e of l.lines){let t=o.findIndex(t=>t.id===e.id);t>=0&&(o[t]=e)}return!0},V=(e,t)=>{let n=t;if(z(e)&&(B(e,t.id),n=P(e).find(e=>e.id===t.id)??n),_(e)){let r=A(e.id).some(({parent:e,fk:n})=>B(e,t[n],!0)),i=P(e),a=i.findIndex(e=>e.id===t.id);if(!r&&a>=0){let e=o(),n=s()??.05;i[a]=ne([t],{lineAmountType:e.pricesIncludeTax?`inclusive`:`exclusive`,roundingScope:e.taxRounding,currency:g(e.currency),codes:I(n),appDefaultCodeId:h(n).id}).lines[0]}n=P(e).find(e=>e.id===t.id)??n}p(e)&&(N(e,t.id),n=P(e).find(e=>e.id===t.id)??n);let r=j(e);r&&N(r.invoice,t[r.invoiceFk]);for(let n of D(e.id)){let r=j(n.model);if(r&&r.payment.id===e.id)for(let e of P(n.model))e[r.paymentFk]===t.id&&N(r.invoice,e[r.invoiceFk])}return n},H=e=>{let t=[e,...D(e.id).map(e=>e.model),...A(e.id).map(e=>e.parent)];return new Map(t.map(e=>[e.id,P(e).map(e=>({...e}))]))},U=e=>{for(let[t,n]of e){let e=u.get(t);e&&e.splice(0,e.length,...n)}},G=(e,n)=>({...n,...t.defaults?.(e)??{}}),K=e=>w(`${e.id}:new:${n}:${C++}`),q=(e,t)=>Object.entries(t).every(([t,n])=>e[t]===n);return{async list(e){return P(e).map(t=>G(e,t))},async listWhere(e,t,n){return P(e).filter(e=>String(e[t]??``)===n).map(t=>G(e,t))},async get(e,t){let n=P(e).find(e=>e.id===t);return n?G(e,n):void 0},async create(e,n){let r={...t.defaults?.(e)??{},...n,id:K(e)},i=H(e);P(e).push(r);let a;try{a=V(e,r)}catch(e){throw U(i),C--,e}return R(e),{...a}},async update(e,t,n){let r=P(e),i=r.findIndex(e=>e.id===t);if(i<0)return;let a=H(e),o=r[i],s={...o,...n,id:t};r[i]=s;let c;try{if(c=V(e,s),_(e))for(let{parent:t,fk:n}of A(e.id))o[n]!==s[n]&&B(t,o[n],!0)}catch(e){throw U(a),e}return R(e),{...c}},async delete(e,t){let n=P(e),r=n.findIndex(e=>e.id===t);if(r<0)return!1;let i=H(e),[a]=n.splice(r,1);try{let t=j(e);t&&a&&N(t.invoice,a[t.invoiceFk]);for(let{parent:t,fk:n}of A(e.id))_(e)&&a&&B(t,a[n],!0)}catch(e){throw U(i),e}return R(e),!0},reset(){ie(),u.clear(),C=0,ge(b);for(let e of[...m])e()},onReset(e){return m.add(e),()=>{m.delete(e)}},async apply(e){let n=new Map,r=C,i=new Map,a=e=>{i.set(e.id,e);let t=P(e);return n.has(e.id)||n.set(e.id,t.map(e=>({...e}))),t},o={},s=e=>Object.fromEntries(Object.entries(e??{}).map(([e,t])=>{if(!Z(t))return[e,t];let n=o[t.ref];if(!n)throw Error(`Unknown record reference ${t.ref}`);return[e,t.field?n[t.field]:n.id]}));try{for(let n of e){let e=a(n.model),r=s(n.match);if(n.op===`delete`){let t=e.filter(e=>n.id===void 0?q(e,r):e.id===n.id);if(n.id===void 0&&Object.keys(r).length===0)throw Error(`A delete needs an id or a match`);for(let n of t)e.splice(e.indexOf(n),1);continue}let i=s(n.values),c=-1;if(n.id!==void 0){if(c=e.findIndex(e=>e.id===n.id),c<0)throw Error(`No ${n.model.name} with id ${n.id}`)}else Object.keys(r).length>0&&(c=e.findIndex(e=>q(e,r)));let l;if(c>=0){let t=e[c];l={...t,...i,id:t.id},e[c]=l}else l={...t.defaults?.(n.model)??{},...r,...s(n.onCreate),...i,id:K(n.model)},e.push(l);n.as&&(o[n.as]={...l})}}catch(e){for(let[e,t]of n)u.set(e,t);throw C=r,e}for(let e of i.values())R(e);return o}}}export{V as a,N as c,I as d,L as f,z as i,O as l,Z as n,P as o,M as p,D as r,F as s,_e as t,R as u};
1
+ import{$ as e,A as t,D as n,E as r,J as i,M as a,N as o,P as s,Q as c,S as l,T as u,Y as d,Z as f,at as p,bt as m,ct as h,dt as g,et as _,ft as ee,gt as v,it as y,j as te,k as b,lt as x,mt as ne,rt as re,st as S,ut as C,w,x as T,y as E,z as ie}from"./CXPo72CL.js";var D=e=>{let t=m(e);if(!t)throw Error(`The catalog has no model ${e}`);return t.model};function O(e){return String(e??``).toUpperCase().replace(/[^A-Z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}var k=/\{([A-Za-z_][\w]*\.[A-Za-z_][\w]*)(?:\|(slug))?\}/g;function A(e,t){return e.replace(k,(e,n,r)=>{let i=t[n],a=i==null?``:String(i);return r===`slug`?O(a):a})}function j(e,t,n=e=>e){return typeof e==`string`?A(e,t):typeof e==`object`&&e?{ref:n(e.ref),...e.field?{field:e.field}:{}}:e}function M(e,t,n){return Object.fromEntries(Object.entries(e??{}).map(([e,r])=>[e,j(r,t,n)]))}function N(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||typeof e==`object`&&e&&!Array.isArray(e)?e:null}function P(e,t,n){return Object.fromEntries(e.flatMap(e=>{let r=F(e.to);return r.alias===t?[[r.field,N(n[e.id])]]:[]}))}function F(e){let t=e.indexOf(`.`);if(t<1||t===e.length-1)throw Error(`A form field maps to "alias.field", got "${e}"`);return{alias:e.slice(0,t),field:e.slice(t+1)}}function I(e,t,n){let{alias:r,field:i}=F(e.to),a=t.find(e=>e.as===r);if(!a)throw Error(`Form field ${e.id} maps to unknown ${r}`);let o=n(a.model).fields.find(e=>e.name===i);if(!o)throw Error(`${a.model} has no field ${i} (form field ${e.id})`);return o}function L(e,t){let{alias:n}=F(e.to),r=t.find(e=>e.as===n);if(!r)throw Error(`Form field ${e.id} maps to unknown ${n}`);return r.model}function R(e,t){return e.default===void 0?t.default===void 0?t.type===`text`?``:null:t.default:e.default}function z(e,t){return Object.fromEntries(e.map(e=>[e.to,t[e.id]]))}var B=(e,t)=>e===t;async function V(e,t,n,r){let i={...n};for(let n of t){if(n.as in i)continue;if(!n.match){i[n.as]=void 0;continue}let t={},a=!0;for(let[e,r]of Object.entries(n.match))if(typeof r==`object`&&r){let n=i[r.ref];n||(a=!1),t[e]=r.field?n?.[r.field]:n?.id}else t[e]=r;i[n.as]=a?(await e.list(r(n.model))).find(e=>Object.entries(t).every(([t,n])=>B(e[t],n))):void 0}return i}var H=4,U=(e,t)=>e.fields.some(e=>e.name===t);function W(e,r,i,o,s){let c=l(n(`${o}:${e.id}:${i.id}`)),d=U(e,`debit`)&&U(e,`credit`),f=d?2*(1+Math.floor(c()*2)):1+Math.floor(c()*H),p=_(e),m=1e3*(1+Math.floor(c()*90));return Array.from({length:f},(l,f)=>{let h=n(`${i.id}:${f}`)%997,g={...u(e,h,o,s),id:w(`${e.id}:${i.id}:${f}`),[r]:i.id};if(U(e,`sortOrder`)&&(g.sortOrder=f),p){let n=e.fields.find(e=>e.related?.endsWith(`:Product`)&&e.name in g),r=a(),{products:o}=r,l=n?o[t(n,{modelId:e.id,index:h,rows:s})%o.length]:o[h%o.length],u=b(h);u?(U(e,`description`)&&(g.description=u.description),g.unitPrice=u.price,n&&(g[n.name]=``)):n&&l&&(U(e,`description`)&&(g.description=l.name),g.unitPrice=l.price);let[d,p]=u?.quantity??l?.quantity??r.lineQuantity??[1,5],m=d+Math.floor(c()*(p-d+1));U(e,`quantity`)&&(g.quantity=m),Object.assign(g,ae(e,i,f,m,Number(g.unitPrice??0))),g.amount=C(g)}if(d){let e=f%2==0;g.debit=e?m/100:0,g.credit=e?0:m/100}return g})}function G(e){return n(`discount:${e.id}`)%3==0}function K(e,t){return Math.round(e*t/1e3)*100}function q(e,t){return t>0&&n(`tax-override:${e.id}:${t}`)%7==0}function J(e,t,r=o().currency){let i=n(`tax-override-kind:${e.id}:${t}`)%4,a=x(r);if(a&&i<2)return a;let s=i%2==0?`exempt`:`zero-rated`;return S.find(e=>e.kind===s)}function ae(e,t,r,i,a){let o={},s=r===0&&G(t),c=n(`discount-kind:${t.id}`)%2==0;U(e,`discountType`)&&(o.discountType=s?c?`percent`:`amount`:`none`),U(e,`discountRate`)&&(o.discountRate=s&&c?`10`:null),U(e,`discount`)&&(o.discount=s&&!(c&&U(e,`discountType`))?K(i,a):0),!U(e,`discountType`)&&o.discount&&(o.discountType=`amount`);let l=q(t,r)?J(t,r):void 0;return U(e,`taxMode`)&&(o.taxMode=l?`override`:`inherit`),U(e,`taxCodeId`)&&(o.taxCodeId=l?.id??null),o}function oe(e,t){let n={...e,...t};return`discount`in t&&!(`discountType`in t)&&n.discountType===`amount`&&(n.discountType=`percent`,n.discountRate=`10`,n.discount=0),`discountRate`in t&&n.discountType===`percent`&&(n.discountType=`none`,n.discountRate=null,n.discount=0),n}var se=[`@happyvertical/smrt-commerce:Order`,`@happyvertical/smrt-commerce:Invoice`],Y=2500;function ce(e,t,n){n===2&&se.includes(t.id)&&typeof e.subtotal==`number`&&typeof e.totalAmount==`number`&&(t.fields.some(e=>e.name===`status`&&e.enum?.includes(`draft`))&&(e.status=`draft`),e.subtotal+=Y,e.totalAmount+=Y)}function le(e,t,n,r){if(!n.length||!n.every(e=>`unitPrice`in e))return[...n];let i=y(t,e,n,r);return Object.assign(e,i.row),i.lines}var X=e=>typeof e==`number`&&Number.isFinite(e)?e:0,ue=e=>e.status!==`draft`&&e.status!==`cancelled`&&X(e.totalAmount)>0;function de(e,t,r,i){let a=new Map(r.map(e=>[e.id,X(e.totalAmount)])),o=[];for(let s of t){if(s.status!==`completed`){s.status!==`refunded`&&(s.paidAt=null);continue}let t=l(n(`${i}:alloc:${s.id}`)),c=r.filter(e=>ue(e)&&e.customerId===s.customerId&&(a.get(e.id)??0)>0).slice(0,t()<.3?2:1);if(c.length===0)continue;let d=c.map((e,n)=>{let r=a.get(e.id)??0,i=n>0||t()<.6?r:Math.min(r,Math.max(100,Math.round(r*(.3+t()*.4)/100)*100));return a.set(e.id,r-i),{inv:e,part:i}}),f=Math.max(...d.map(({inv:e})=>Date.parse(String(e.issueDate)))),p=new Date(Math.max(f,Math.min(f+(1+Math.floor(t()*20))*E,T))).toISOString();s.amount=d.reduce((e,t)=>e+t.part,0),s.paidAt=p,`contractId`in s&&d[0]?.inv.contractId&&(s.contractId=d[0].inv.contractId);for(let{inv:t,part:n}of d)o.push({...u(e.model,o.length,i),id:w(`${e.model.id}:${s.id}:${t.id}`),[e.paymentFk]:s.id,[e.invoiceFk]:t.id,amount:n,allocatedAt:p})}return o}function Z(e){return typeof e==`object`&&!!e&&typeof e.ref==`string`}var Q=`smrt-planner:data:v6:`,fe=`@happyvertical/smrt-commerce:TaxCode`,pe=`@happyvertical/smrt-commerce:TaxComponent`,me=[`taxable`,`zero-rated`,`exempt`,`out-of-scope`];function he(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}var $=`${Q}_created`;function ge(e){if(e)try{let t=[];for(let n=0;n<e.length;n++){let r=e.key(n);r?.startsWith(`smrt-planner:data:v6:`)&&t.push(r)}for(let n of t)e.removeItem(n)}catch{}}function _e(t={}){let n=t.seed??1,a=t.rowsPerModel??8,l=new Set(t.empty??[]),u=new Map,m=new Set,b=t.storage??null,x=e=>`${Q}${e.id}`,S=e=>{if(b)try{let t=b.getItem(x(e));if(t===null)return;let n=JSON.parse(t);if(Array.isArray(n)&&n.every(e=>typeof e==`object`&&!!e&&typeof e.id==`string`))return n}catch{}},C=0;if(b)try{C=Number(b.getItem($))||0}catch{C=0}let E=new Map,D=e=>{let n=E.get(e);return n||(n=t.children?.links(e)??[],E.set(e,n)),n},O,k,A=e=>{if(!O){O=new Map;for(let e of t.children?.models??[])for(let t of D(e.id)){let n=O.get(t.model.id)??[];n.push({parent:e,fk:t.fk}),O.set(t.model.id,n)}k=new Map(O);for(let[e,t]of O){let n=e.slice(e.lastIndexOf(`:`)+1).toLowerCase(),r=t.find(e=>n.startsWith(e.fk.replace(/Id$/,``).toLowerCase()))?.fk??t[0]?.fk;O.set(e,t.filter(e=>e.fk===r))}}return O.get(e)??[]},j=t=>{if(!e(t))return;A(t.id);let n=k?.get(t.id)??[],r=d(t)?.name,a=i(t)?.name,o=n.find(e=>e.fk===r)?.parent,s=n.find(e=>e.fk===a)?.parent;return o&&s&&r&&a?{model:t,paymentFk:r,invoiceFk:a,payment:o,invoice:s}:void 0},M=(n,r)=>{if(!p(n))return r;let i=D(n.id).find(t=>e(t.model)),a=i&&j(i.model);if(!i||!a)return r;let o=new Map(P(a.payment).map(e=>[e.id,e])),s=P(i.model).filter(e=>e[i.fk]===r.id&&o.get(String(e[a.paymentFk]))?.status===`completed`).map(e=>({amount:Number(e.amount??0),at:String(e.allocatedAt??``)})),c=re(r,s,(t.now??(()=>T))()),l={...r,amountPaid:c.amountPaid,status:c.status};return n.fields.some(e=>e.name===`paidDate`)&&(l.paidDate=c.paidDate),l},N=(e,t)=>{let n=P(e),r=n.findIndex(e=>e.id===t);r>=0&&(n[r]=M(e,n[r]))},P=e=>{let i=u.get(e.id);if(i)return i;let o=S(e);if(o){u.set(e.id,o);for(let t of D(e.id))P(t.model);return o}let s=l.has(e.id)?void 0:t.samples?.[e.id];if(s){let t=[];return u.set(e.id,t),t.push(...s.make(s.from.map(P),n)),t}let c=j(e),d=c?[]:A(e.id),f=l.has(e.id)||d.length||c?[]:r(e,te(e.id,a),n,a);u.set(e.id,f);for(let t of D(e.id))P(t.model);if(c&&!l.has(e.id)){for(let e of D(c.invoice.id))_(e.model)&&P(e.model);let e=P(c.invoice);f.push(...de(c,P(c.payment),e,n)),e.forEach((t,n)=>{e[n]=M(c.invoice,t)})}if(!l.has(e.id))for(let{parent:r,fk:i}of d){let o=t.defaults?.(e)??{};P(r).forEach((t,s)=>{let c=W(e,i,t,n,a).map(e=>oe(e,o));_(e)?(f.push(...le(t,r,c,L(r,t))),ce(t,r,s)):f.push(...c)})}return f},F=new Map((t.children?.models??[]).map(e=>[e.id,e])),I=e=>{let t=ee(e),n=F.get(fe),r=F.get(pe),i=n?P(n):[];if(!i.length)return t;let a=new Map(t.flatMap(e=>e.components.map(e=>[e.id,e])));for(let e of r?P(r):[])a.set(e.id,{id:e.id,key:e.id,name:String(e.name??``),percent:String(e.percent??`0`),recoverable:e.recoverable===!0});let o=i.map(e=>{let t=[];try{t=JSON.parse(String(e.componentsJson??`[]`))}catch{t=[]}let n=(Array.isArray(t)?t:[]).flatMap(e=>{let t=e&&typeof e==`object`?a.get(String(e.taxComponentId)):void 0;return t?[t]:[]}),r=me.includes(String(e.kind))?e.kind:`taxable`,i=[`sales`,`purchases`,`both`].includes(String(e.appliesTo))?e.appliesTo:`both`;return{id:e.id,code:String(e.code??``),name:String(e.name??``),kind:r,appliesTo:i,active:e.active!==!1,components:n}}),s=new Map(o.map(e=>[e.id,e]));if(t.some(e=>s.has(e.id))){let n=h(e);return[...t.filter(e=>s.has(e.id)||e.id===n.id).map(e=>s.get(e.id)??e),...o.filter(e=>!t.some(t=>t.id===e.id))]}return[...t,...o]},L=(e,t)=>{let n=o(),r=s()??.05,i=I(r),a=e.fields.find(e=>e.name===`customerId`&&e.related),l=a?.related?F.get(a.related):void 0,d=l?P(l).find(e=>e.id===t.customerId):void 0,p=e=>{for(let[t,n]of u){if(!t.endsWith(`:Product`))continue;let r=n.find(t=>t.id===e);if(r)return r}},m=e=>typeof e==`string`&&e?e:null;return{lineAmountType:f(t,n.pricesIncludeTax?`inclusive`:`exclusive`),roundingScope:c(t,n.taxRounding),currency:g(t.currency,g(n.currency)),codes:i,appDefaultCodeId:h(r).id,customerTaxExempt:d?.taxExempt===!0,partyCodeId:m(d?.defaultTaxCodeId),productCodeOf:e=>m(p(e)?.defaultSalesTaxCodeId)}},R=e=>{if(!b)return;let t=e=>{let t=j(e);return t?[t.payment,t.invoice]:[]},n=[e,...D(e.id).map(e=>e.model),...A(e.id).map(e=>e.parent),...t(e),...D(e.id).flatMap(e=>t(e.model))];try{for(let e of n){let t=u.get(e.id);t&&b.setItem(x(e),JSON.stringify(t))}b.setItem($,String(C))}catch{}},z=e=>D(e.id).find(t=>_(t.model)&&A(t.model.id).some(n=>n.parent.id===e.id&&n.fk===t.fk)),B=(e,t,n=!1)=>{let r=z(e);if(!r)return!1;let i=P(e),a=i.findIndex(e=>e.id===t);if(a<0)return!1;let o=P(r.model),s=o.filter(e=>e[r.fk]===t),c=i[a];if(he(e,c)){if(n)throw new v(`FROZEN_DOCUMENT`,`This ${e.name.toLowerCase()} has been issued, so its lines can no longer change.`);return!0}let l=y(e,c,s,L(e,c));i[a]=l.row;for(let e of l.lines){let t=o.findIndex(t=>t.id===e.id);t>=0&&(o[t]=e)}return!0},V=(e,t)=>{let n=t;if(z(e)&&(B(e,t.id),n=P(e).find(e=>e.id===t.id)??n),_(e)){let r=A(e.id).some(({parent:e,fk:n})=>B(e,t[n],!0)),i=P(e),a=i.findIndex(e=>e.id===t.id);if(!r&&a>=0){let e=o(),n=s()??.05;i[a]=ne([t],{lineAmountType:e.pricesIncludeTax?`inclusive`:`exclusive`,roundingScope:e.taxRounding,currency:g(e.currency),codes:I(n),appDefaultCodeId:h(n).id}).lines[0]}n=P(e).find(e=>e.id===t.id)??n}p(e)&&(N(e,t.id),n=P(e).find(e=>e.id===t.id)??n);let r=j(e);r&&N(r.invoice,t[r.invoiceFk]);for(let n of D(e.id)){let r=j(n.model);if(r&&r.payment.id===e.id)for(let e of P(n.model))e[r.paymentFk]===t.id&&N(r.invoice,e[r.invoiceFk])}return n},H=e=>{let t=[e,...D(e.id).map(e=>e.model),...A(e.id).map(e=>e.parent)];return new Map(t.map(e=>[e.id,P(e).map(e=>({...e}))]))},U=e=>{for(let[t,n]of e){let e=u.get(t);e&&e.splice(0,e.length,...n)}},G=(e,n)=>({...n,...t.defaults?.(e)??{}}),K=e=>w(`${e.id}:new:${n}:${C++}`),q=(e,t)=>Object.entries(t).every(([t,n])=>e[t]===n);return{async list(e){return P(e).map(t=>G(e,t))},async listWhere(e,t,n){return P(e).filter(e=>String(e[t]??``)===n).map(t=>G(e,t))},async get(e,t){let n=P(e).find(e=>e.id===t);return n?G(e,n):void 0},async create(e,n){let r={...t.defaults?.(e)??{},...n,id:K(e)},i=H(e);P(e).push(r);let a;try{a=V(e,r)}catch(e){throw U(i),C--,e}return R(e),{...a}},async update(e,t,n){let r=P(e),i=r.findIndex(e=>e.id===t);if(i<0)return;let a=H(e),o=r[i],s={...o,...n,id:t};r[i]=s;let c;try{if(c=V(e,s),_(e))for(let{parent:t,fk:n}of A(e.id))o[n]!==s[n]&&B(t,o[n],!0)}catch(e){throw U(a),e}return R(e),{...c}},async delete(e,t){let n=P(e),r=n.findIndex(e=>e.id===t);if(r<0)return!1;let i=H(e),[a]=n.splice(r,1);try{let t=j(e);t&&a&&N(t.invoice,a[t.invoiceFk]);for(let{parent:t,fk:n}of A(e.id))_(e)&&a&&B(t,a[n],!0)}catch(e){throw U(i),e}return R(e),!0},reset(){ie(),u.clear(),C=0,ge(b);for(let e of[...m])e()},onReset(e){return m.add(e),()=>{m.delete(e)}},async apply(e){let n=new Map,r=C,i=new Map,a=e=>{i.set(e.id,e);let t=P(e);return n.has(e.id)||n.set(e.id,t.map(e=>({...e}))),t},o={},s=e=>Object.fromEntries(Object.entries(e??{}).map(([e,t])=>{if(!Z(t))return[e,t];let n=o[t.ref];if(!n)throw Error(`Unknown record reference ${t.ref}`);return[e,t.field?n[t.field]:n.id]}));try{for(let n of e){let e=a(n.model),r=s(n.match);if(n.op===`delete`){let t=e.filter(e=>n.id===void 0?q(e,r):e.id===n.id);if(n.id===void 0&&Object.keys(r).length===0)throw Error(`A delete needs an id or a match`);for(let n of t)e.splice(e.indexOf(n),1);continue}let i=s(n.values),c=-1;if(n.id!==void 0){if(c=e.findIndex(e=>e.id===n.id),c<0)throw Error(`No ${n.model.name} with id ${n.id}`)}else Object.keys(r).length>0&&(c=e.findIndex(e=>q(e,r)));let l;if(c>=0){let t=e[c];l={...t,...i,id:t.id},e[c]=l}else l={...t.defaults?.(n.model)??{},...r,...s(n.onCreate),...i,id:K(n.model)},e.push(l);n.as&&(o[n.as]={...l})}}catch(e){for(let[e,t]of n)u.set(e,t);throw C=r,e}for(let e of i.values())R(e);return o}}}export{V as a,N as c,I as d,L as f,z as i,O as l,Z as n,P as o,M as p,D as r,F as s,_e as t,R as u};
@@ -1 +1 @@
1
- import"./DG3qFFTE.js";import{c as e}from"./BEfgj-XP.js";var t={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};export{t};
1
+ import"./DG3qFFTE.js";import{c as e}from"./Bbl6Vsf2.js";var t={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};export{t};
@@ -1,4 +1,4 @@
1
- import{$ as e,B as t,Ct as n,D as r,Dt as i,E as a,Ft as o,G as s,H as c,J as l,L as u,Ot as d,Pt as f,U as p,W as m,X as h,Y as g,a as _,b as v,bt as y,ct as b,ft as x,ht as S,mt as C,pt as w,st as T,v as E,vt as D}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{n as O}from"./DK8Blf1Y.js";import{n as k}from"./By9nPosf.js";import{b as A,i as j,x as M}from"./Bs5WxZDd.js";import{A as N,D as P,E as F,O as I,T as L,_ as R,i as z,k as B,n as V,r as ee,t as H,v as U,w as te}from"./cr-zdIiU.js";import{tt as W}from"./BrGblPBG.js";var ne=s(`<p class="notice svelte-19u3zp7" role="status"> </p>`),G=s(`<option> </option>`),re=s(`<label class="svelte-19u3zp7">Assistant mode <!></label> <p class="meta svelte-19u3zp7">Changing modes happens only when you choose it here.</p>`,1),ie=s(`<p class="status svelte-19u3zp7">Inference off</p> <p class="meta svelte-19u3zp7">Build, edit, validate and export your cookbook without a model. No
1
+ import{$ as e,B as t,Ct as n,D as r,Dt as i,E as a,Ft as o,G as s,H as c,J as l,L as u,Ot as d,Pt as f,U as p,W as m,X as h,Y as g,a as _,b as v,bt as y,ct as b,ft as x,ht as S,mt as C,pt as w,st as T,v as E,vt as D}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{n as O}from"./DK8Blf1Y.js";import{n as k}from"./By9nPosf.js";import{b as A,i as j,x as M}from"./Bs5WxZDd.js";import{A as N,D as P,E as F,O as I,T as L,_ as R,i as z,k as B,n as V,r as ee,t as H,v as U,w as te}from"./BxTs8P01.js";import{tt as W}from"./DBoTKMLo.js";var ne=s(`<p class="notice svelte-19u3zp7" role="status"> </p>`),G=s(`<option> </option>`),re=s(`<label class="svelte-19u3zp7">Assistant mode <!></label> <p class="meta svelte-19u3zp7">Changing modes happens only when you choose it here.</p>`,1),ie=s(`<p class="status svelte-19u3zp7">Inference off</p> <p class="meta svelte-19u3zp7">Build, edit, validate and export your cookbook without a model. No
2
2
  provider is contacted and no browser model is downloaded.</p>`,1),ae=s(`<p class="status svelte-19u3zp7">Server</p> <p class="meta svelte-19u3zp7">This site's server answers the assistant. What you type, and a short
3
3
  summary of your plan, is sent to it. Nothing is downloaded.</p>`,1),oe=s(`<p class="meta svelte-19u3zp7">A key is saved for another address, so it is not used here. Paste it again for this address.</p>`),se=s(`<div class="field svelte-19u3zp7"><!> <!></div> <!> <p class="meta svelte-19u3zp7"> <button class="link svelte-19u3zp7" type="button">Forget the key</button></p>`,1),ce=s(`<p class="meta svelte-19u3zp7"><strong>Browser access.</strong> </p>`),le=s(`<p> </p>`),ue=s(`<p class="status svelte-19u3zp7" role="status"> </p>`),de=s(`<label class="svelte-19u3zp7">Model provider <!></label> <div class="field svelte-19u3zp7"><!> <!></div> <div class="field svelte-19u3zp7"><!> <!></div> <!> <!> <p class="meta svelte-19u3zp7">What you type, and a short summary of your plan, is sent to this
4
4
  endpoint.</p> <!> <!> <div class="actions svelte-19u3zp7"><!> <!></div>`,1),fe=s(`<p role="status" class="svelte-19u3zp7">This browser has no WebGPU, which the model needs. Try a recent
@@ -1 +1 @@
1
- import{n as e}from"./COiEfhsA.js";import{S as t}from"./Bs5WxZDd.js";import{a as n,r}from"./C7zBd-pD.js";import{t as i}from"./CA-A9Ngs.js";function a(e){return t=>{t.allowLocalModels=e,t.useBrowserCache=!0;let n=globalThis.crossOriginIsolated===!0,r=t.backends?.onnx?.wasm;r&&!n&&(r.numThreads=1)}}var o=`onnx-community/whisper-tiny.en`,s={"moonshine-tiny":{id:`onnx-community/moonshine-tiny-ONNX`,bytes:322e5,englishOnly:!0,label:`Moonshine tiny`},"moonshine-base":{id:`onnx-community/moonshine-base-ONNX`,bytes:67e6,englishOnly:!0,label:`Moonshine base`},"whisper-tiny.en":{id:o,bytes:451e5,englishOnly:!0,label:`Whisper tiny (English)`},"whisper-base.en":{id:`onnx-community/whisper-base.en`,bytes:85e6,englishOnly:!0,label:`Whisper base (English)`},"whisper-small.en":{id:`onnx-community/whisper-small.en`,bytes:26e7,englishOnly:!0,label:`Whisper small (English)`}};function c(e){return e?s[e]?.id??e:o}function l(e){return Object.values(s).some(t=>t.id===e&&t.englishOnly)||/\.en$|moonshine/i.test(e)}var u=`audio/pcm;rate=16000;channels=1;encoding=f32le`;function d(){let e=Error(`Download cancelled`);return e.name=`AbortError`,e}function f(e){return e?.split(/[-_]/)[0]?.toLowerCase()||void 0}function p(e){return{data:new Uint8Array(e.slice().buffer),mimeType:u}}async function m(e){try{return await(e?e():i(`@happyvertical/speech/local`))}catch{throw new r(`local-speech`,'@happyvertical/speech could not be loaded. Install it (and @huggingface/transformers) and pass `loadSpeech: () => import("@happyvertical/speech/local")`.')}}var h=class{createWorker;loadSpeech;progress;worker=null;client=null;constructor(e,t,n){this.createWorker=e,this.loadSpeech=t,this.progress=n}ensure(){return this.client??=m(this.loadSpeech).then(e=>{let t=this.createWorker();return this.worker=t,new e.LocalTranscriberWorkerClient(t,{onProgress:this.progress})}),this.client}async isCached(e){return(await this.ensure()).isCached(e)}async preload(e,t){if(t?.aborted)throw d();let n=await this.ensure();if(!t)return n.preload(e);let r=()=>this.dispose();t.addEventListener(`abort`,r,{once:!0});try{await Promise.race([n.preload(e),new Promise((e,n)=>t.addEventListener(`abort`,()=>n(d()),{once:!0}))])}finally{t.removeEventListener(`abort`,r)}}async transcribe(e,t,n){return(await(await this.ensure()).transcribe({audio:p(e),model:t,language:f(n)})).text.trim()}dispose(){this.client?.then(e=>e.close()).catch(()=>void 0),this.worker?.terminate(),this.worker=null,this.client=null}},g=class{options;model;progress;transcriber=null;constructor(e,t,n){this.options=e,this.model=t,this.progress=n}ensure(){return this.transcriber??=m(this.options.loadSpeech).then(e=>new e.LocalTranscriber({model:this.model,device:this.options.device??`auto`,dtype:this.options.dtype??`q8`,...this.options.loadModule?{transformers:this.options.loadModule}:{},onProgress:this.progress,configureEnv:a(this.options.allowLocalModels??!1)})),this.transcriber}async isCached(e){return(await this.ensure()).isCached(e)}async preload(e,t){if(t?.aborted)throw d();await(await this.ensure()).preload(e,t).catch(e=>{throw t?.aborted?d():e})}async transcribe(e,t,n){return(await(await this.ensure()).transcribe({audio:p(e),model:t,language:f(n)})).text.trim()}dispose(){this.transcriber?.then(e=>e.dispose()).catch(()=>void 0),this.transcriber=null}},_=class{options;modelId;backend=null;loadPromise=null;listeners=new Set;_state=`idle`;constructor(e={}){this.options=e,this.modelId=c(e.model??e.modelId)}get state(){return this._state}get ready(){return this._state===`ready`}get englishOnly(){return l(this.modelId)}estimateSize(){return Object.values(s).find(e=>e.id===this.modelId)?.bytes??451e5}emit(e){for(let t of this.listeners)t(e)}onEngineProgress=e=>{if(e.status!==`progress_total`||typeof e.loaded!=`number`||typeof e.total!=`number`)return;let t=this.estimateSize(),n=e.total||t,r=e.total>0&&e.loaded>=e.total;this.emit({state:r?`extracting`:`downloading`,bytesLoaded:e.loaded,bytesTotal:n,percent:e.total?Math.round(e.loaded/e.total*100):0,currentFile:e.file})};getBackend(){if(this.backend)return this.backend;let{createWorker:e,loadSpeech:t}=this.options;return this.backend=e?new h(e,t,this.onEngineProgress):new g(this.options,this.modelId,this.onEngineProgress),this.backend}async isCached(){if(this._state===`ready`)return!0;try{return await this.getBackend().isCached(this.modelId)}catch{return!1}}load(e={}){let{onProgress:t,signal:n}=e;if(this._state===`ready`)return Promise.resolve();if(t&&this.listeners.add(t),!this.loadPromise){this._state=`loading`;let e=this.estimateSize();this.emit({state:`downloading`,bytesLoaded:0,bytesTotal:e,percent:0}),this.loadPromise=this.getBackend().preload(this.modelId,n).then(()=>{this._state=`ready`,this.emit({state:`complete`,bytesLoaded:e,bytesTotal:e,percent:100})}).catch(t=>{this._state=`idle`,this.backend?.dispose(),this.backend=null;let n=t instanceof Error?t:Error(String(t));throw n.name!==`AbortError`&&(this._state=`error`,this.emit({state:`error`,bytesLoaded:0,bytesTotal:e,percent:0,error:n.message})),n}).finally(()=>{this.loadPromise=null,this.listeners.clear()})}let r=this.loadPromise;return n?new Promise((e,t)=>{if(n.aborted)return t(d());n.addEventListener(`abort`,()=>t(d()),{once:!0}),r.then(e,t)}):r}transcribe(e,t){return this._state===`ready`?this.getBackend().transcribe(e,this.modelId,t):Promise.reject(Error(`The speech model is not loaded`))}dispose(){this.backend?.dispose(),this.backend=null,this.loadPromise=null,this.listeners.clear(),this._state=`idle`}};function v(e={}){return new _(e)}var y=e({LocalSpeechSTTAdapter:()=>w,WhisperLocalSTTAdapter:()=>w,WhisperWasmSTTAdapter:()=>w}),b={tiny:`onnx-community/whisper-tiny.en`,base:`onnx-community/whisper-base.en`,small:`onnx-community/whisper-small.en`},x=16e3,S=9e4;async function C(e){let t=await e.arrayBuffer(),n=new AudioContext({sampleRate:x});try{return(await n.decodeAudioData(t)).getChannelData(0).slice()}finally{n.close().catch(()=>void 0)}}var w=class{type;stopTimeoutMs=S;options;_model;makeCapture;capture=null;captureOff=null;_isListening=!1;language=`en`;session=0;starting=!1;stopping=null;resultListeners=new Set;errorListeners=new Set;startListeners=new Set;endListeners=new Set;constructor(e={}){this.options={type:`whisper-local`,defaultLanguage:`en`,...e},this.type=this.options.type,this.language=this.options.defaultLanguage??`en`,this.makeCapture=e.capture??t;let n=this.options.model??this.options.modelId??(this.options.modelSize?b[this.options.modelSize]:this.type===`moonshine`?`moonshine-tiny`:void 0);this._model=this.options.modelHandle??v({model:n,device:this.options.device,dtype:this.options.dtype,createWorker:this.options.createWorker,loadSpeech:this.options.loadSpeech,loadModule:this.options.loadModule,allowLocalModels:this.options.allowLocalModels})}get model(){return this._model}get initState(){switch(this._model.state){case`ready`:return`ready`;case`loading`:return`initializing`;case`error`:return`error`;default:return`uninitialized`}}estimateSize(){return this._model.estimateSize()}isCached(){return this._model.isCached()}load(e){return this._model.load(e)}async ensureInitialized(e){await this._model.load({onProgress:e??this.options.onProgress})}async prepare(){if(this._model.state!==`ready`){if(!await this._model.isCached())throw new n(this._model.modelId,this.type);await this.ensureInitialized()}}getCapabilities(){return{continuous:!1,interimResults:!1,languages:this._model.englishOnly?[`en`]:[`en`,`es`,`fr`,`de`,`it`,`pt`,`nl`,`pl`,`ru`,`zh`,`ja`,`ko`],accuracy:`medium`,requiresDownload:!0,downloadSize:this._model.estimateSize()}}async transcribePcm(e,t={}){return await this.prepare(),this._model.transcribe(e,t.language??this.options.defaultLanguage??`en`)}async start(e={}){if(this._isListening||this.starting)return;let t=++this.session;this.starting=!0;try{await this.prepare()}finally{this.starting=!1}if(t!==this.session||this._isListening)return;this.language=e.language??this.options.defaultLanguage??`en`;let n=this.makeCapture({maxDurationMs:this.options.maxDurationMs});try{await n.start()}catch(e){let t=e instanceof Error?e:Error(String(e));throw this.emitError(t),t}if(t!==this.session)n.cancel();else{this.capture=n,this.captureOff=n.onLimit(e=>{e===`time`?this.stop():(this.captureOff?.(),this.finish(t,null,Error(`The recording is too long`)))}),this._isListening=!0;for(let e of this.startListeners)e()}}stop(){if(this.stopping)return this.stopping;let e=this.capture;if(this.starting&&this.session++,!e||!this._isListening)return Promise.resolve();let t=this.session;return this.stopping=(async()=>{let n=null,r=null;try{let r=await e.stop();if(t!==this.session)return;let i=await C(r.audio);n=await this._model.transcribe(i,this.language)}catch(e){r=e instanceof Error?e:Error(String(e))}await this.finish(t,n,r)})(),this.stopping}async finish(e,t,n){if(e===this.session){if(this.captureOff?.(),this.captureOff=null,this.capture=null,this._isListening=!1,this.stopping=null,n)this.emitError(n);else if(t){let e={text:t,confidence:1,isFinal:!0,timestamp:Date.now()};for(let t of this.resultListeners)t(e)}for(let e of this.endListeners)e()}}emitError(e){for(let t of this.errorListeners)t(e)}abort(){if(this.starting&&this.session++,this._isListening){this.session++,this.captureOff?.(),this.captureOff=null,this.capture?.cancel(),this.capture=null,this._isListening=!1,this.stopping=null;for(let e of this.endListeners)e()}}isListening(){return this._isListening}onResult(e){return this.resultListeners.add(e),()=>this.resultListeners.delete(e)}onError(e){return this.errorListeners.add(e),()=>this.errorListeners.delete(e)}onStart(e){return this.startListeners.add(e),()=>this.startListeners.delete(e)}onEnd(e){return this.endListeners.add(e),()=>this.endListeners.delete(e)}async dispose(){this.abort(),this.options.modelHandle||this._model.dispose(),this.resultListeners.clear(),this.errorListeners.clear(),this.startListeners.clear(),this.endListeners.clear()}};export{s as n,v as r,y as t};
1
+ import{n as e}from"./COiEfhsA.js";import{S as t}from"./Bs5WxZDd.js";import{a as n,r}from"./C7zBd-pD.js";import{t as i}from"./D042ejzG.js";function a(e){return t=>{t.allowLocalModels=e,t.useBrowserCache=!0;let n=globalThis.crossOriginIsolated===!0,r=t.backends?.onnx?.wasm;r&&!n&&(r.numThreads=1)}}var o=`onnx-community/whisper-tiny.en`,s={"moonshine-tiny":{id:`onnx-community/moonshine-tiny-ONNX`,bytes:322e5,englishOnly:!0,label:`Moonshine tiny`},"moonshine-base":{id:`onnx-community/moonshine-base-ONNX`,bytes:67e6,englishOnly:!0,label:`Moonshine base`},"whisper-tiny.en":{id:o,bytes:451e5,englishOnly:!0,label:`Whisper tiny (English)`},"whisper-base.en":{id:`onnx-community/whisper-base.en`,bytes:85e6,englishOnly:!0,label:`Whisper base (English)`},"whisper-small.en":{id:`onnx-community/whisper-small.en`,bytes:26e7,englishOnly:!0,label:`Whisper small (English)`}};function c(e){return e?s[e]?.id??e:o}function l(e){return Object.values(s).some(t=>t.id===e&&t.englishOnly)||/\.en$|moonshine/i.test(e)}var u=`audio/pcm;rate=16000;channels=1;encoding=f32le`;function d(){let e=Error(`Download cancelled`);return e.name=`AbortError`,e}function f(e){return e?.split(/[-_]/)[0]?.toLowerCase()||void 0}function p(e){return{data:new Uint8Array(e.slice().buffer),mimeType:u}}async function m(e){try{return await(e?e():i(`@happyvertical/speech/local`))}catch{throw new r(`local-speech`,'@happyvertical/speech could not be loaded. Install it (and @huggingface/transformers) and pass `loadSpeech: () => import("@happyvertical/speech/local")`.')}}var h=class{createWorker;loadSpeech;progress;worker=null;client=null;constructor(e,t,n){this.createWorker=e,this.loadSpeech=t,this.progress=n}ensure(){return this.client??=m(this.loadSpeech).then(e=>{let t=this.createWorker();return this.worker=t,new e.LocalTranscriberWorkerClient(t,{onProgress:this.progress})}),this.client}async isCached(e){return(await this.ensure()).isCached(e)}async preload(e,t){if(t?.aborted)throw d();let n=await this.ensure();if(!t)return n.preload(e);let r=()=>this.dispose();t.addEventListener(`abort`,r,{once:!0});try{await Promise.race([n.preload(e),new Promise((e,n)=>t.addEventListener(`abort`,()=>n(d()),{once:!0}))])}finally{t.removeEventListener(`abort`,r)}}async transcribe(e,t,n){return(await(await this.ensure()).transcribe({audio:p(e),model:t,language:f(n)})).text.trim()}dispose(){this.client?.then(e=>e.close()).catch(()=>void 0),this.worker?.terminate(),this.worker=null,this.client=null}},g=class{options;model;progress;transcriber=null;constructor(e,t,n){this.options=e,this.model=t,this.progress=n}ensure(){return this.transcriber??=m(this.options.loadSpeech).then(e=>new e.LocalTranscriber({model:this.model,device:this.options.device??`auto`,dtype:this.options.dtype??`q8`,...this.options.loadModule?{transformers:this.options.loadModule}:{},onProgress:this.progress,configureEnv:a(this.options.allowLocalModels??!1)})),this.transcriber}async isCached(e){return(await this.ensure()).isCached(e)}async preload(e,t){if(t?.aborted)throw d();await(await this.ensure()).preload(e,t).catch(e=>{throw t?.aborted?d():e})}async transcribe(e,t,n){return(await(await this.ensure()).transcribe({audio:p(e),model:t,language:f(n)})).text.trim()}dispose(){this.transcriber?.then(e=>e.dispose()).catch(()=>void 0),this.transcriber=null}},_=class{options;modelId;backend=null;loadPromise=null;listeners=new Set;_state=`idle`;constructor(e={}){this.options=e,this.modelId=c(e.model??e.modelId)}get state(){return this._state}get ready(){return this._state===`ready`}get englishOnly(){return l(this.modelId)}estimateSize(){return Object.values(s).find(e=>e.id===this.modelId)?.bytes??451e5}emit(e){for(let t of this.listeners)t(e)}onEngineProgress=e=>{if(e.status!==`progress_total`||typeof e.loaded!=`number`||typeof e.total!=`number`)return;let t=this.estimateSize(),n=e.total||t,r=e.total>0&&e.loaded>=e.total;this.emit({state:r?`extracting`:`downloading`,bytesLoaded:e.loaded,bytesTotal:n,percent:e.total?Math.round(e.loaded/e.total*100):0,currentFile:e.file})};getBackend(){if(this.backend)return this.backend;let{createWorker:e,loadSpeech:t}=this.options;return this.backend=e?new h(e,t,this.onEngineProgress):new g(this.options,this.modelId,this.onEngineProgress),this.backend}async isCached(){if(this._state===`ready`)return!0;try{return await this.getBackend().isCached(this.modelId)}catch{return!1}}load(e={}){let{onProgress:t,signal:n}=e;if(this._state===`ready`)return Promise.resolve();if(t&&this.listeners.add(t),!this.loadPromise){this._state=`loading`;let e=this.estimateSize();this.emit({state:`downloading`,bytesLoaded:0,bytesTotal:e,percent:0}),this.loadPromise=this.getBackend().preload(this.modelId,n).then(()=>{this._state=`ready`,this.emit({state:`complete`,bytesLoaded:e,bytesTotal:e,percent:100})}).catch(t=>{this._state=`idle`,this.backend?.dispose(),this.backend=null;let n=t instanceof Error?t:Error(String(t));throw n.name!==`AbortError`&&(this._state=`error`,this.emit({state:`error`,bytesLoaded:0,bytesTotal:e,percent:0,error:n.message})),n}).finally(()=>{this.loadPromise=null,this.listeners.clear()})}let r=this.loadPromise;return n?new Promise((e,t)=>{if(n.aborted)return t(d());n.addEventListener(`abort`,()=>t(d()),{once:!0}),r.then(e,t)}):r}transcribe(e,t){return this._state===`ready`?this.getBackend().transcribe(e,this.modelId,t):Promise.reject(Error(`The speech model is not loaded`))}dispose(){this.backend?.dispose(),this.backend=null,this.loadPromise=null,this.listeners.clear(),this._state=`idle`}};function v(e={}){return new _(e)}var y=e({LocalSpeechSTTAdapter:()=>w,WhisperLocalSTTAdapter:()=>w,WhisperWasmSTTAdapter:()=>w}),b={tiny:`onnx-community/whisper-tiny.en`,base:`onnx-community/whisper-base.en`,small:`onnx-community/whisper-small.en`},x=16e3,S=9e4;async function C(e){let t=await e.arrayBuffer(),n=new AudioContext({sampleRate:x});try{return(await n.decodeAudioData(t)).getChannelData(0).slice()}finally{n.close().catch(()=>void 0)}}var w=class{type;stopTimeoutMs=S;options;_model;makeCapture;capture=null;captureOff=null;_isListening=!1;language=`en`;session=0;starting=!1;stopping=null;resultListeners=new Set;errorListeners=new Set;startListeners=new Set;endListeners=new Set;constructor(e={}){this.options={type:`whisper-local`,defaultLanguage:`en`,...e},this.type=this.options.type,this.language=this.options.defaultLanguage??`en`,this.makeCapture=e.capture??t;let n=this.options.model??this.options.modelId??(this.options.modelSize?b[this.options.modelSize]:this.type===`moonshine`?`moonshine-tiny`:void 0);this._model=this.options.modelHandle??v({model:n,device:this.options.device,dtype:this.options.dtype,createWorker:this.options.createWorker,loadSpeech:this.options.loadSpeech,loadModule:this.options.loadModule,allowLocalModels:this.options.allowLocalModels})}get model(){return this._model}get initState(){switch(this._model.state){case`ready`:return`ready`;case`loading`:return`initializing`;case`error`:return`error`;default:return`uninitialized`}}estimateSize(){return this._model.estimateSize()}isCached(){return this._model.isCached()}load(e){return this._model.load(e)}async ensureInitialized(e){await this._model.load({onProgress:e??this.options.onProgress})}async prepare(){if(this._model.state!==`ready`){if(!await this._model.isCached())throw new n(this._model.modelId,this.type);await this.ensureInitialized()}}getCapabilities(){return{continuous:!1,interimResults:!1,languages:this._model.englishOnly?[`en`]:[`en`,`es`,`fr`,`de`,`it`,`pt`,`nl`,`pl`,`ru`,`zh`,`ja`,`ko`],accuracy:`medium`,requiresDownload:!0,downloadSize:this._model.estimateSize()}}async transcribePcm(e,t={}){return await this.prepare(),this._model.transcribe(e,t.language??this.options.defaultLanguage??`en`)}async start(e={}){if(this._isListening||this.starting)return;let t=++this.session;this.starting=!0;try{await this.prepare()}finally{this.starting=!1}if(t!==this.session||this._isListening)return;this.language=e.language??this.options.defaultLanguage??`en`;let n=this.makeCapture({maxDurationMs:this.options.maxDurationMs});try{await n.start()}catch(e){let t=e instanceof Error?e:Error(String(e));throw this.emitError(t),t}if(t!==this.session)n.cancel();else{this.capture=n,this.captureOff=n.onLimit(e=>{e===`time`?this.stop():(this.captureOff?.(),this.finish(t,null,Error(`The recording is too long`)))}),this._isListening=!0;for(let e of this.startListeners)e()}}stop(){if(this.stopping)return this.stopping;let e=this.capture;if(this.starting&&this.session++,!e||!this._isListening)return Promise.resolve();let t=this.session;return this.stopping=(async()=>{let n=null,r=null;try{let r=await e.stop();if(t!==this.session)return;let i=await C(r.audio);n=await this._model.transcribe(i,this.language)}catch(e){r=e instanceof Error?e:Error(String(e))}await this.finish(t,n,r)})(),this.stopping}async finish(e,t,n){if(e===this.session){if(this.captureOff?.(),this.captureOff=null,this.capture=null,this._isListening=!1,this.stopping=null,n)this.emitError(n);else if(t){let e={text:t,confidence:1,isFinal:!0,timestamp:Date.now()};for(let t of this.resultListeners)t(e)}for(let e of this.endListeners)e()}}emitError(e){for(let t of this.errorListeners)t(e)}abort(){if(this.starting&&this.session++,this._isListening){this.session++,this.captureOff?.(),this.captureOff=null,this.capture?.cancel(),this.capture=null,this._isListening=!1,this.stopping=null;for(let e of this.endListeners)e()}}isListening(){return this._isListening}onResult(e){return this.resultListeners.add(e),()=>this.resultListeners.delete(e)}onError(e){return this.errorListeners.add(e),()=>this.errorListeners.delete(e)}onStart(e){return this.startListeners.add(e),()=>this.startListeners.delete(e)}onEnd(e){return this.endListeners.add(e),()=>this.endListeners.delete(e)}async dispose(){this.abort(),this.options.modelHandle||this._model.dispose(),this.resultListeners.clear(),this.errorListeners.clear(),this.startListeners.clear(),this.endListeners.clear()}};export{s as n,v as r,y as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./uMyA9vh1.js","./DG3qFFTE.js","./COiEfhsA.js","./xihTtKlq.js","./0spQrfdd.js","./YUSKx8_q.js","./DK8Blf1Y.js","../assets/currency-metadata.ksbBA8-C.css","../assets/app.BHwMQ9Zv.css","./CJqE_e1I.js","./Bv5jGtB8.js","../assets/feedback.qFktqYFY.css","./BH-IcfAn.js","./uBIymjUX.js","./By9nPosf.js","../assets/SegmentedControl.DMqHG5fn.css","./DIE02RSm.js","../assets/webmcp-ui-context.hO24Ni5w.css","./yGfNI8oR.js","../assets/data.CVlX_W0i.css","./CUyVrfsu.js","./Bs5WxZDd.js","../assets/forms.BRdbPdvs.css","./BYcBM-fh.js","../assets/AppShell.Y0ysizZK.css","./CmwZFYXJ.js","../assets/workspace.C40zM0Mb.css","./9YQb8EzH.js","./BrGblPBG.js","../assets/state.C0UZEhxS.css","../assets/labels.Dxa6EyRI.css","./CUqms96o.js","./DCdUJsvL.js","./CaYLEdnq.js","../assets/planner.DOQVfcOi.css","./D_U_DYjx.js"])))=>i.map(i=>d[i]);
2
- import{$ as e,Et as t,Mt as n,bt as r,vt as i}from"./DG3qFFTE.js";import{t as a}from"./uBIymjUX.js";import"./xihTtKlq.js";import{I as o,L as s,O as c,Q as l,W as u,Z as d,_ as f,_t as p,bt as m,et as h,h as g,ht as _,p as v,x as y,yt as b}from"./0spQrfdd.js";import{v as x}from"./BH-IcfAn.js";import"./By9nPosf.js";import"./DIE02RSm.js";import{u as S}from"./yGfNI8oR.js";import{C as ee,D as C,E as te,F as ne,I as w,L as re,N as ie,O as ae,S as oe,T as se,_ as ce,b as le,d as ue,g as de,h as fe,n as pe,r as me,v as he,w as ge,x as _e,z as ve}from"./9YQb8EzH.js";import{B as ye,G as be,J as xe,R as Se,V as Ce,W as we,X as Te,Y as Ee,a as De,b as T,c as Oe,d as ke,i as Ae,j as je,l as Me,n as Ne,o as Pe,q as Fe,t as E,v as Ie,x as D,z as Le}from"./BrGblPBG.js";function Re(e){let t=e?.surfaces?.find(e=>e.kind===`widget`&&e.sectionDefault===!0);return t?{id:t.type,type:t.type,span:4,options:{}}:void 0}function ze(e){let t=e.lastIndexOf(`#`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1);return n.startsWith(`.`)||n.startsWith(`/`)||/\s/.test(n)||!/^[A-Za-z_$][\w$]*$/.test(r)?null:{specifier:n,exportName:r}}function O(e,t){let n=ze(e);return n?Promise.resolve(t(n.specifier,n.exportName)).then(t=>{if(t==null)throw Error(`export "${e}" was not found`);return t}):Promise.reject(Error(`invalid export ref "${e}"`))}function k(e){let t;return()=>(t??=e(),t)}function Be(e){return typeof e==`object`&&!!e&&`default`in e&&!!e.default}function Ve(e,t,n){let r=k(()=>O(e.export,t)),i=e.optionsEditor?k(()=>O(e.optionsEditor,t)):void 0,a=e.data?.load?k(()=>O(e.data?.load,t)):void 0,o={type:e.type,title:e.label,options:e.options??[],loadComponent:async()=>{let e=await r();return Be(e)?e.default:e}};return e.description!==void 0&&(o.description=e.description),e.icon!==void 0&&(o.icon=e.icon),e.version!==void 0&&(o.version=e.version),e.allowedIn&&(o.allowedIn=e.allowedIn),e.defaultSpan!==void 0&&(o.defaultSpan=e.defaultSpan),e.minSpan!==void 0&&(o.minSpan=e.minSpan),e.maxSpan!==void 0&&(o.maxSpan=e.maxSpan),n&&(o.migrate=n),i&&(o.loadOptionsEditor=async()=>{let e=await i();return Be(e)?e.default:e}),a&&(o.load=async(t,n)=>{let r=await a();if(typeof r!=`function`)throw Error(`loader "${e.data?.load}" is not a function`);return r(t,n)}),o}async function He(e,t,n,r={}){let i=[],a=[],o=[];for(let s of t)if(!r.enabled||r.enabled(s.id))for(let t of s.surfaces??[]){if(t.kind!==`widget`)continue;let c=(e,n)=>a.push({recipeId:s.id,type:t.type,reason:e,message:n});if(e.has(t.type)&&!r.replace){c(`duplicate_type`,`"${t.type}" is already registered`);continue}let l;if(t.migrate)try{let e=await O(t.migrate,n);if(typeof e!=`function`)throw Error(`not a function`);l=e}catch(e){c(`unresolved`,`migrate "${t.migrate}": ${e instanceof Error?e.message:String(e)}`);continue}try{o.push(e.register(Ve(t,n,l),{replace:r.replace})),i.push(t.type)}catch(e){c(`invalid`,e instanceof Error?e.message:String(e))}}return{registered:i,skipped:a,dispose:()=>{for(let e of o.splice(0))e()}}}var Ue=[`identifier`,`status`,`date`,`party`,`total`,`money`];function We(e){for(let t of[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`])if(e.includes(t))return t}function A(e,t,n={}){let r=new Set(n.exclude??[]),i=n.max??4,a=Object.keys(t).filter(t=>!r.has(t)&&t in e.fields),o=e=>a.find(n=>t[n]?.includes(e)),s=[],c=e=>{e&&!s.includes(e)&&s.push(e)};c(o(`identifier`)??o(`title`));for(let e of Ue)e!==`identifier`&&(e===`money`&&s.some(e=>t[e]?.includes(`money`))||c(e===`date`?a.find(e=>t[e]?.includes(`date`)&&e!==`createdAt`&&e!==`updatedAt`)??o(`date`):o(e)));return s.slice(0,i).map(n=>({key:n,label:j(n,e),...We(t[n]??[])?{role:We(t[n]??[])}:{}}))}function Ge(e,t,n={}){let r=new Set(n.exclude??[]),i=Object.keys(t).filter(t=>!r.has(t)&&t in e.fields),a=i.filter(t=>e.fields[t]?.type===`text`),o=a.find(e=>/^(?:description|title|name|label)$/.test(e))??a.find(e=>t[e]?.includes(`title`))??a.find(e=>!t[e]?.includes(`identifier`)),s=i.find(e=>t[e]?.includes(`quantity`)),c=i.filter(e=>t[e]?.includes(`money`)),l=c.find(e=>/unit|price|rate/i.test(e)),u=c.find(e=>/^(?:amount|lineTotal|total|lineAmount)$/.test(e))??[...c].reverse().find(e=>e!==l),d=[];return o&&d.push({key:o,label:j(o,e)}),s&&d.push({key:s,label:j(s,e),role:`quantity`}),l&&d.push({key:l,label:j(l,e),role:`money`,summarize:!1}),u&&u!==l&&d.push({key:u,label:j(u,e),role:`money`}),d}function j(e,t){let n=t.fields[e];return n&&(n.type===`foreignKey`||n.type===`crossPackageRef`)&&/.[a-z]Id$/.test(e)?te(e.slice(0,-2)):te(e)}function Ke(e){if(e.dataWidgets&&e.page)return[e.page];let t=[{id:`shortcuts`,type:`shortcuts`,span:4,options:{}}];if(e.dataWidgets&&e.lead){let n=e.lead,r=e.override,i=r&&typeof r==`object`&&!Array.isArray(r)?r:void 0,a=i?.changed;a&&typeof a==`object`&&!Array.isArray(a)&&Object.hasOwn(a,`count`)&&!(Array.isArray(i?.removed)&&i.removed.includes(`count`))&&t.push({id:`count`,type:`metric`,span:1,options:{title:n.plural,model:n.id,measure:`count`}}),t.push({id:`latest`,type:`records`,span:4,options:{title:`${n.name} records`,model:n.id,limit:5,summaries:!1}})}return t}var qe=[`text`,`integer`,`decimal`,`boolean`,`datetime`,`json`,`foreignKey`,`crossPackageRef`];function Je(e){return qe.includes(e)?e:`text`}var Ye=/(Date|^date|period(Start|End))$/;function Xe(e,t){return t.type===`datetime`&&!t.system&&Ye.test(t.name)&&!e.fields.some(e=>e.name===`allDay`)?`date`:void 0}function Ze(e){return ue(e)[0]}function Qe(e,t){let n=t.ui?{...t.ui}:void 0,r=c(t)?`money`:Xe(e,t);return{type:Je(t.type),required:t.required,nullable:!t.required,...t.default===void 0?{}:{default:t.default},...t.description?{description:t.description}:{},...n?{ui:n}:{},...t.enum?.length?{enum:[...t.enum]}:{},...r?{format:r}:{},...Ze(e)===t.name?{display:!0}:{}}}function $e(e,t){return e.includes(`:`)?e:`${t.slice(0,t.lastIndexOf(`:`))}:${e}`}function et(e,t){if(!t.related)return!1;let n=$e(t.related,e.id);return xe(p,n,h).some(t=>t.id===e.id)}function tt(e){return e.fields.flatMap(t=>{if(t.type!==`foreignKey`&&t.type!==`crossPackageRef`||!t.related)return[];let n=m($e(t.related,e.id));return n?[{field:t.name,kind:t.type===`crossPackageRef`?`crossPackageRef`:`foreignKey`,relatedCollection:n.model.collection,...et(e,t)?{role:`items`}:{}}]:[]})}function M(e){let t=tt(e);return{name:e.collection,objectRef:e.id,className:e.name,idField:`id`,fields:Object.fromEntries(e.fields.map(t=>[t.name,Qe(e,t)])),...t.length?{relationships:t}:{}}}function nt(e,t){return{objectRef:e.id,fields:Object.fromEntries(t.map((e,t)=>[e.name,{visibility:`basic`,label:e.label,help:e.help??null,order:t,required:e.required}]))}}function rt(e,t){let n=new Set(t);for(let t of e)for(let e of t.models)n.add(e);return n}function it(e){return v(e.replace(/_?id$/i,``)||e)}function N(e,t,n){let r=Ee(e,t),i=Te(e,t).filter(e=>e.model.exposed&&n.has(e.model.id)),a=new Set(xe(e,t,h).map(e=>e.id)),o=new Map;for(let e of i)o.set(e.model.id,(o.get(e.model.id)??0)+1);let s=i.map(e=>{let t=a.has(e.model.id)?`items`:`children`,n=M(e.model),i=ae(n),s=[e.fk];return{model:e.model.id,field:e.fk,label:(o.get(e.model.id)??0)>1?`${we(e.model.name,r)} (${it(e.fk).toLowerCase()})`:we(e.model.name,r),kind:t,columns:t===`items`?Ge(n,i,{exclude:s}):A(n,i,{exclude:s,max:5}),...t===`items`&&`sortOrder`in n.fields?{sort:`sortOrder`}:{}}});for(let n of be(e,t))s.push({model:n.model.id,field:n.fk,label:it(n.fk),kind:`reference`});return s}var at=Symbol(`smrt-cookbook`);function ot(){return t(at)}function st(e,t){let{sections:n}=t;if(!n)throw Error(`the cookbook widget context is missing`);let r=typeof e.section==`string`?e.section:``,i=r?n.find(e=>e.id===`section:${r}`||e.id===`custom:${r}`)?.id:t.overviewId;if(!i)throw Error(`unknown section ${r}`);return se(n,i)}function ct(e){return e?async(t,n)=>{let r=st(t,n);try{let t=await e(n,r.items.map(e=>({...e})));if(!Array.isArray(t))return r;let i=new Set,a=[];for(let e of t){if(!e||typeof e.href!=`string`)continue;let t=typeof e.id==`string`&&e.id?e.id:e.href;i.has(t)&&(t=`${t}#${a.length}`),i.add(t),a.push({...e,id:t})}return{items:a}}catch(e){if(n.signal?.aborted)throw e;return r}}:st}var lt=new Set([`foreignKey`,`crossPackageRef`]);function P(e,t){return`/m/${e}/${t}/`}function ut(e,t,n,r=`view`){let i=`${P(e,t)}${encodeURIComponent(n)}/`;return r===`edit`?`${i}edit/`:i}function dt(e,t,n,r){return`${P(e,t)}?${encodeURIComponent(n)}=${encodeURIComponent(r)}`}function ft(e,t){let n=new URLSearchParams(e);for(let e of t.fields){if(!lt.has(e.type))continue;let t=n.get(e.name);if(t)return{field:e.name,equals:t}}}function pt(e){return e?.equals===void 0?``:`${encodeURIComponent(e.field)}=${encodeURIComponent(e.equals)}`}var F=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:null,mt=(e,t)=>e.fields.some(e=>e.name===t);function ht(e,t){let n=ae(M(e)),r=fe(t,n);return Object.values(r).some(e=>F(e)!==null)?r:void 0}function gt(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}function _t(e,t,n){if(!gt(e,t)||![`subtotal`,`taxAmount`,`totalAmount`,`discountTotal`].every(t=>mt(e,t)))return;let r=F(t.subtotal),i=F(t.taxAmount),a=F(t.totalAmount),o=F(t.discountTotal)??0;if(r===null||i===null||a===null)return;let s=d(t,`exclusive`);return{subtotal:r,discount:o,tax:i,total:a,lineAmountType:s,roundingScope:l(t,`line`),showNetSubtotal:s===`inclusive`,taxes:_(n,s).flatMap(e=>e.taxComponentId?[{taxComponentId:e.taxComponentId,name:e.name,percent:e.percent,taxable:e.taxable,tax:e.tax}]:[])}}var I=ie();function L(e){let{source:t,href:n}=e;if(!t||!n)throw Error(`the planner widget context is missing`);return{source:t,href:n}}function R(e){let t=typeof e==`string`?m(e):void 0;if(!t)throw Error(`unknown model ${String(e)}`);return{model:t.model,packageId:t.pkg.id,path:P(t.pkg.id,t.model.name)}}var z=new Set([`foreignKey`,`crossPackageRef`]);function B(e,t,n){let r=e.filter;if(typeof r!=`string`||r===``)return;if(r!==`parent`)throw Error(`unknown filter ${r}`);let{record:i}=t;if(!i?.id)throw Error(`the parent filter needs a record`);let a=typeof e.parentField==`string`&&e.parentField?e.parentField:e.field,o=typeof a==`string`?a:``,s=n.fields.find(e=>e.name===o);if(!s||!z.has(s.type))throw Error(`${n.name} has no reference field ${o}`);return{field:o,id:i.id}}async function V(e,t,n){return n?e.listWhere(t,n.field,n.id):e.list(t)}function H(e,t,n){return e(n?dt(t.packageId,t.model.name,n.field,n.id):t.path)}var U=e=>typeof e==`number`&&Number.isFinite(e);async function vt(e,t){let{source:n,href:r}=L(t),i=R(e.model),{model:a}=i,o=B(e,t,a),s=await V(n,a,o),l=H(r,i,o),u=typeof e.measure==`string`?e.measure:``;if(u===`count`||u===``)return{value:s.length,format:`integer`,href:l};let d=a.fields.find(t=>t.name===e.field);if(!d||d.type!==`integer`&&d.type!==`decimal`)throw Error(`${u} needs a numeric field of ${a.name}`);let f=s.map(e=>e[d.name]).filter(U),p=0;if(f.length){if(u===`sum`||u===`avg`)p=f.reduce((e,t)=>e+t,0),u===`avg`&&(p/=f.length);else if(u===`min`)p=Math.min(...f);else if(u===`max`)p=Math.max(...f);else throw Error(`unknown measure ${u}`)}let m=c(d);return{value:m?Math.round(p):p,format:m?`money`:d.type===`integer`?`integer`:`decimal`,...m?{currency:`USD`}:{},href:l}}function yt(e,t){return U(e)&&U(t)?e-t:String(e??``).localeCompare(String(t??``))}var bt=new Set([`createdAt`,`updatedAt`]),xt=[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`];function St(e=[]){return xt.find(t=>e.includes(t))}function Ct(e,t,n,r){let i=M(e),a=r?[r]:[],o=ge(n);if(o.length===0)return A(i,t,{exclude:a,max:5});let s=[...Ge(i,t,{exclude:a}),...A(i,t,{exclude:a,max:o.length+8})];return o.map(n=>{let r=e.fields.find(e=>e.name===n);if(!r)throw Error(`${e.name} has no field ${n}`);let i=s.find(e=>e.key===n);if(i)return i;let a=St(t[n]);return{key:n,label:z.has(r.type)?v(n.replace(/Id$/,``)):v(n),...a?{role:a}:{}}})}var wt=new Set([`money`,`quantity`]);function Tt(e,t){let n={};for(let r of e)(r.summarize??wt.has(r.role))&&(n[r.key]=t.reduce((e,t)=>{let n=t[r.key];return U(n)?e+n:e},0));return n}function Et(e,t){let n=C(M(e)),r=new Set(t.map(e=>n?e[n]:void 0).filter(e=>typeof e==`string`&&e!==``));return r.size===1?[...r][0]??`USD`:`USD`}async function Dt(e,t){let{source:n,href:r}=L(t),i=R(e.model),{model:a}=i,o=B(e,t,a),s=await V(n,a,o);if(typeof e.sort==`string`&&e.sort){if(!a.fields.find(t=>t.name===e.sort)&&!bt.has(e.sort))throw Error(`${a.name} has no field ${e.sort}`);let t=s.some(t=>t[e.sort]!==void 0)?e.sort:Pt(a)?.name;if(t){let n=e.direction===`asc`?1:-1;s=[...s].sort((e,r)=>n*yt(e[t],r[t]))}}let c=Ct(a,ae(M(a)),e.columns,o?.field),l=U(e.limit)?e.limit:5,u=s.slice(0,l),d=a.fields.filter(e=>z.has(e.type)&&c.some(t=>t.key===e.name)),f=await me(n,d,u),p=e=>Object.fromEntries(c.map(t=>{let n=e[t.key],r=d.find(e=>e.name===t.key);return r?.related&&typeof n==`string`&&n?[t.key,f.get(g(r.related,n))??``]:[t.key,n??null]})),m=Tt(c,s),h=!Fe(a);return{rows:await Promise.all(u.map(async e=>({id:String(e.id),title:await pe(n,a,e,0,o?.field),...h?{href:r(ut(i.packageId,a.name,String(e.id)))}:{},cells:p(e)}))),...e.summaries===!1?{}:{total:s.length},...h?{href:H(r,i,o)}:{},columns:c,currency:Et(a,s),...Object.keys(m).length?{summaries:m}:{}}}var Ot={"7d":7,"30d":30,"90d":90,"12m":365,all:null},W=864e5;function kt(e){return e===`7d`||e===`30d`?`day`:e===`90d`?`week`:`month`}function At(e,t){let n=new Date(e);if(t===`month`)return Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),1);let r=Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate());return t===`week`?r-(n.getUTCDay()+6)%7*W:r}function jt(e,t){if(t===`month`){let t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,1)}return e+(t===`week`?7:1)*W}function Mt(e,t){let n=new Date(e).toISOString();return t===`month`?n.slice(0,7):n.slice(0,10)}var Nt=e=>e.type===`datetime`&&!e.system;function Pt(e){let t=e.fields.filter(Nt);return t.find(e=>/^(issue|order|start|created)/i.test(e.name))??t[0]}function Ft(e){if(typeof e!=`string`&&typeof e!=`number`)return;let t=new Date(e).getTime();return Number.isFinite(t)?t:void 0}async function It(e,t){let{source:n,href:r}=L(t),i=R(e.model),{model:a}=i,o=B(e,t,a),s=typeof e.groupBy==`string`?e.groupBy:``,l=s?a.fields.find(e=>e.name===s):Pt(a);if(!l)throw Error(s?`${a.name} has no field ${s}`:`${a.name} has no date field to chart; choose a group-by field`);let u=typeof e.measure==`string`?e.measure:``,d;if(u&&u!==`count`){if(u!==`sum`&&u!==`avg`)throw Error(`unknown measure ${u}`);if(d=a.fields.find(t=>t.name===e.field),!d||d.type!==`integer`&&d.type!==`decimal`)throw Error(`${u} needs a numeric field of ${a.name}`)}let f=typeof e.period==`string`?e.period:`30d`;if(!Object.hasOwn(Ot,f))throw Error(`unknown period ${f}`);let p=Ot[f],m=Nt(l),h=m?l:Pt(a),g=p!==null&&h?y-p*W:-1/0,_=await V(n,a,o);h&&g!==-1/0&&(_=_.filter(e=>{let t=Ft(e[h.name]);return t!==void 0&&t>=g&&t<=y}));let v=new Map,b=(e,t,n)=>{let r=v.get(e)??{key:t,sum:0,n:0};if(d){let e=n[d.name];if(!U(e))return;r.sum+=e}r.n+=1,v.set(e,r)},x=kt(f);if(m){let e=g===-1/0?Math.min(..._.map(e=>Ft(e[l.name])??y),y):g;for(let t=At(e,x);t<=y;t=jt(t,x))v.set(Mt(t,x),{key:t,sum:0,n:0});for(let e of _){let t=Ft(e[l.name]);if(t===void 0)continue;let n=At(t,x);b(Mt(n,x),n,e)}}else for(let e of _){let t=e[l.name],n=t==null||t===``?`(none)`:String(t);b(n,n,e)}let S=d?c(d):!1,ee=e=>{if(!d)return e.n;let t=u===`avg`&&e.n?e.sum/e.n:e.sum;return S?Math.round(t):t},C=[...v.entries()].map(([e,t])=>({label:e,value:ee(t),key:t.key}));return C=m?C.sort((e,t)=>Number(e.key)-Number(t.key)):C.sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label)),{points:C.map(({label:e,value:t})=>({label:e,value:t})),format:d?S?`money`:d.type===`integer`?`integer`:`decimal`:`integer`,...S?{currency:`USD`}:{},href:H(r,i,o)}}he(I,{metric:vt,records:Dt,chart:It,shortcuts:async(e,t)=>t,shortcuts:ct()});function Lt(e){let{relations:t,viewAllHref:n}=e;if(!t)throw Error(`the record page context is missing`);return{relations:t,records:Dt,viewAllHref:n}}async function Rt(e,t){let{source:n}=L(e),r=e.record;if(!r?.id)throw Error(`line items need a record`);let{model:i}=R(r.model),a=await n.get(i,r.id);if(!a)return{};let o=t.find(e=>e.kind===`items`),s=o?m(o.model)?.model:void 0,c=_t(i,a,o&&s?await n.listWhere(s,o.field,r.id):[]),l=c?void 0:ht(i,a),u=C(M(i)),d=u?a[u]:void 0;return{...c?{storedTotals:c}:{},...l?{totals:l}:{},...typeof d==`string`&&d?{currency:d}:{}}}I.register(ce((e,t)=>_e(Lt(t))(e,t))),I.register(de(async(e,t)=>{let n=Lt(t),{totals:r,storedTotals:i,currency:a}=await Rt(t,n.relations);return le({...n,totals:()=>r,storedTotals:()=>i,currency:()=>a})(e,t)}));var zt=[`shortcuts`,`metric`,`records`,`chart`,`note`],Bt={"@happyvertical/smrt-reports/svelte":async()=>({SavedReportsWidget:(await a(async()=>{let{default:e}=await import(`./uMyA9vh1.js`);return{default:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]),import.meta.url)).default})},Vt=async(e,t)=>{let n=Bt[e];if(n)return(await n())[t]},Ht=T.filter(e=>e.surfaces?.some(e=>e.kind===`widget`)),Ut=Ht.flatMap(e=>(e.surfaces??[]).flatMap(e=>e.kind===`widget`?[e.type]:[]));He(I,Ht,Vt);var Wt=new Map(Se(T).map(e=>[`section:${e.id}`,e])),Gt=p.packages.flatMap(e=>e.models.map(e=>e.id)),Kt=[...zt,...Ut];function qt(e){let t=Wt.get(e);for(let e of t?.recipes??[]){let t=Ie(e)[0];if(t)return{id:t.model.id,name:v(t.model.name)}}}function Jt(e,t){let n=Re(Wt.get(e)?.recipes[0]),r=qt(e);return Ke({lead:r?{...r,plural:f(r.name)}:void 0,dataWidgets:!0,page:n&&Ut.includes(n.type)?n:void 0,override:t})}var Yt=new Map;function Xt(e,t){if(!ve.test(e))return;let n=Yt.get(e);return n||(n=w({id:e,allowed:Kt,models:Gt,defaults:Jt(e)}),Yt.set(e,n)),t===void 0?n:w({...n,defaults:Jt(e,t)})}function Zt(e,t){return`detail:${e}.${t}`}var Qt=new Map(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(t=>[ee(t.id),{packageId:e.id,model:t}])));function $t(e){let[,t,n]=/^detail:([A-Za-z0-9_-]+)\.([A-Za-z0-9_]+)$/.exec(e)??[],r=t&&n?b(t,n):void 0;return t&&r?.exposed?{packageId:t,model:r}:Qt.get(e)}var en=new Set(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(e=>e.id))),tn=new Map;function nn(e){let t=tn.get(e);if(t)return t;let n=$t(e);if(!n)return;let r=N(p,n.model.id,en),i=oe(M(n.model),r,{id:e,maxMetrics:2*r.length});return t=w({...i,maxWidgets:Math.max(i.maxWidgets??24,i.defaults.length+24)}),tn.set(e,t),t}function rn(e,t){let n=nn(e),r=$t(e);if(!n||!r)return;let i=N(p,r.model.id,t),a=0,o=n.defaults.filter(e=>e.type===`line-items`?i.some(e=>e.kind===`items`):e.type===`related`?i.some(e=>e.kind===`children`):t.has(String(e.options.model))?e.type!==`metric`||(a+=1,a<=4):!1);return w({...n,defaults:o})}function an(e,t){return e.startsWith(`detail:`)?nn(e):Xt(e,t)}function on(e,t){return Wt.has(e)||e===`section:${je.id}`?!0:e.startsWith(`detail:`)?$t(e)!==void 0:e.startsWith(`custom:`)&&ve.test(e)&&(t?.customSections??[]).some(t=>t.id===e)}var sn=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function cn(e,t){let n=t.widgetId?`widget ${t.widgetId}${t.type?` (${t.type})`:``}`:`an entry`,r=t.options?.length?`: ${t.options.map(e=>`${e.key} ${e.code}`).join(`, `)}`:``;return`Overview ${e}: ${n} was dropped (${t.code}${r}).`}function ln(e,t){let n={...e};return e.added&&(n.added=e.added.filter(e=>!t.has(e.id))),e.changed&&(n.changed=Object.fromEntries(Object.entries(e.changed).filter(([e])=>!t.has(e)))),n}function un(e,t){let n=an(e,t);if(!n)return{override:null,issues:[{widgetId:null,type:null,code:`malformed`,message:`not an overview id`}]};let r=ne(n,t,I);if(r.ok){let e=re(t).override?.changed?.count;return e&&n.defaults.some(e=>e.id===`count`)?{override:{...r.override??{version:1},changed:{...r.override?.changed,count:e}},issues:[]}:{override:r.override,issues:[]}}let i=re(t),a=new Set(r.issues.flatMap(e=>e.widgetId?[e.widgetId]:[]));if(!i.override)return{override:null,issues:r.issues};let o=ne(n,ln(i.override,a),I);return o.ok?{override:o.override,issues:r.issues}:{override:null,issues:[...r.issues,...o.issues]}}function dn(e,t){if(!sn(e))return null;let n=[],r=[];for(let i of Object.keys(e).sort()){if(!on(i,t)){r.push(`Overview ${i} is not a page in this app and was dropped.`);continue}let{override:a,issues:o}=un(i,e[i]);for(let e of o)r.push(cn(i,e));a&&n.push([i,a])}return{overviews:Object.fromEntries(n),dropped:r}}var fn=S,pn=`glass`,mn=`system`,hn=[`light`,`dark`,`system`],gn=[`none`,`sm`,`md`,`lg`,`xl`,`full`],_n=[`comfortable`,`touch`],vn=[`auto`,`standard`,`more`],G={"system-ui":`system-ui, -apple-system, "Segoe UI", sans-serif`,Inter:`Inter, system-ui, sans-serif`,Georgia:`Georgia, "Times New Roman", serif`,"ui-rounded":`ui-rounded, "SF Pro Rounded", system-ui, sans-serif`,"ui-monospace":`ui-monospace, "SF Mono", Menlo, monospace`},yn=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;function bn(e){if(typeof e!=`string`)return null;let t=yn.exec(e.trim());if(!t)return null;let n=t[1].toLowerCase();return n.length===3&&(n=[...n].map(e=>e+e).join(``)),`#${n}`}var xn=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function Sn(e){if(e===void 0)return{ok:!0,theme:void 0};if(!xn(e))return{ok:!1,error:`The cookbook "theme" must be an object.`};let t={};if(e.preset!==void 0){if(typeof e.preset!=`string`||!fn.includes(e.preset))return{ok:!1,error:`The theme preset must be one of ${fn.join(`, `)}.`};t.preset=e.preset}if(e.colorScheme!==void 0){if(!hn.includes(e.colorScheme))return{ok:!1,error:`The theme colorScheme must be light, dark or system.`};t.colorScheme=e.colorScheme}for(let[n,r]of[[`borderRadius`,gn],[`density`,_n],[`contrast`,vn]]){let i=e[n];if(i!==void 0){if(!r.includes(i))return{ok:!1,error:`The theme ${n} must be one of ${r.join(`, `)}.`};t[n]=i}}if(e.fontFamily!==void 0){if(typeof e.fontFamily!=`string`||!Object.hasOwn(G,e.fontFamily))return{ok:!1,error:`The theme font must be one of ${Object.keys(G).join(`, `)}.`};t.fontFamily=e.fontFamily}if(e.custom!==void 0){if(!xn(e.custom))return{ok:!1,error:`The theme "custom" must be an object.`};let n=bn(e.custom.primary);if(!n)return{ok:!1,error:`The theme custom primary must be a hex colour like #c2410c.`};let r={primary:n};if(e.custom.fontFamily!==void 0){let t=e.custom.fontFamily;if(typeof t!=`string`||!Object.hasOwn(G,t))return{ok:!1,error:`The theme font must be one of ${Object.keys(G).join(`, `)}.`};r.fontFamily=t}t.custom=r}if(e.customCss!==void 0){if(typeof e.customCss!=`string`)return{ok:!1,error:`The theme customCss must be a string.`};if(Array.from(e.customCss).length>65536)return{ok:!1,error:`The theme customCss is too long (65,536 characters maximum).`};e.customCss&&(t.customCss=e.customCss)}return{ok:!0,theme:Object.keys(t).length?t:void 0}}function Cn(e){if(!e)return;let t={};return e.preset&&(t.preset=e.preset),e.colorScheme&&(t.colorScheme=e.colorScheme),e.borderRadius&&(t.borderRadius=e.borderRadius),e.density&&(t.density=e.density),e.contrast&&(t.contrast=e.contrast),e.fontFamily&&(t.fontFamily=e.fontFamily),e.custom&&(t.custom={...e.custom}),e.customCss&&(t.customCss=e.customCss),Object.keys(t).length?t:void 0}function wn(e){let t=e?.colorScheme??`system`,n=e?.custom?`brand colour ${e.custom.primary}`:e?.preset??`glass`;return t===`system`?n:`${n}, ${t}`}var K=`section:`;function Tn(e,t=Le(T)){let n=Object.keys(t).sort((e,t)=>t.length-e.length);if(!n.length)return e;let r=e=>{if(!e.startsWith(K))return e;let r=e.slice(8);for(let e of n){if(r===e)return`${K}${t[e]}`;if(r.startsWith(`${e}:`))return`${K}${t[e]}${r.slice(e.length)}`}return e},i=e=>e.startsWith(K)&&n.includes(e.slice(8)),a=e=>[...new Set(e)],o={...e};if(e.sectionOrder&&(o.sectionOrder=a(e.sectionOrder.map(r))),e.hidden&&(o.hidden=a(e.hidden.filter(e=>!i(e)).map(r))),e.itemOrder){let t={};for(let[n,i]of Object.entries(e.itemOrder)){let e=r(n);t[e]=a([...t[e]??[],...i.map(r)])}o.itemOrder=t}return e.moved&&(o.moved=Object.fromEntries(Object.entries(e.moved).map(([e,t])=>[r(e),r(t)]))),o}function En(e,t=T){let n=new Map;for(let e of t){let t=Ce(e).id;for(let r of Ie(e))r.key&&n.set(`${K}${t}:${r.packageId}:${r.model.name}:${r.label}`,ye(r.packageId,r.model.name,r.key))}let r=e=>{let t=n.get(e);if(t)return t;if(!e.startsWith(K))return e;let r=e.slice(8).split(`:`);return r.length<3||!r[1]||!r[2]?e:ye(r[1],r[2])},i=e=>[...new Set(e)],a=(e,t)=>{let n={};for(let[i,a]of Object.entries(e)){let e=r(i);e in n||(n[e]=t(a))}return n},o={...e};return e.hidden&&(o.hidden=i(e.hidden.map(r))),e.itemOrder&&(o.itemOrder=a(e.itemOrder,e=>i(e.map(r)))),e.moved&&(o.moved=a(e.moved,r)),e.items&&(o.items=a(e.items,e=>e)),o}var q=`https://s-m-r-t.dev/schemas/cookbook/v1.json`,Dn=new Set([`basic`,`advanced`,`hidden`]),On=new Set([`api`,`mcp`,`cli`]),J=e=>({ok:!1,error:e}),Y=e=>typeof e==`object`&&!!e&&!Array.isArray(e),X=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`);function kn(e,t){if(!Y(e))return`${t} is not an object`;let{objectRef:n,fieldName:r}=e;if(typeof n!=`string`||!n)return`${t} has no objectRef`;if(typeof r!=`string`||!r)return`${t} has no fieldName`;if(e.scopeType!==`app`)return`${t} must have scopeType "app"`;let i={objectRef:n,fieldName:r,scopeType:`app`};for(let n of[`defaultValue`,`help`,`label`]){let r=e[n];if(r!==void 0){if(typeof r!=`string`&&r!==null)return`${t}.${n} is invalid`;i[n]=r}}if(e.visibility!==void 0){let n=e.visibility;if(n!==null&&!(typeof n==`string`&&Dn.has(n)))return`${t}.visibility is invalid`;i.visibility=n}if(e.displayOrder!==void 0){let n=e.displayOrder;if(n!==null&&!(typeof n==`number`&&Number.isFinite(n)))return`${t}.displayOrder is invalid`;i.displayOrder=n}if(e.locked!==void 0){if(e.locked!==null&&typeof e.locked!=`boolean`)return`${t}.locked is invalid`;i.locked=e.locked}return i}function An(e){if(!Y(e)||e.version!==1)return`layout must be an object with version 1`;for(let t of[`sectionOrder`,`hidden`])if(e[t]!==void 0&&!X(e[t]))return`layout.${t} must be a list of strings`;for(let t of[`itemOrder`,`moved`,`panels`])if(e[t]!==void 0&&!Y(e[t]))return`layout.${t} must be an object`;let t=e.itemOrder;if(Y(t)){for(let[e,n]of Object.entries(t))if(e===`__proto__`||!X(n))return`layout.itemOrder.${e} must be a list of strings`}let n=e.moved;if(Y(n)){for(let[e,t]of Object.entries(n))if(e===`__proto__`||typeof t!=`string`)return`layout.moved.${e} must be a string`}return e}function jn(e,t={}){if(!Y(e))return J(`This is not a cookbook: expected a JSON object.`);if(e.$schema!==void 0&&e.$schema!==`https://s-m-r-t.dev/schemas/cookbook/v1.json`&&e.$schema!==`https://s-m-r-t.dev/schemas/blueprint/v1.json`)return J(`This is not a cookbook: its "$schema" is not a cookbook schema this planner knows.`);let{version:n}=e;if(n===void 0)return J(`This is not a cookbook: it has no "version".`);if(typeof n!=`number`||!Number.isInteger(n))return J(`The cookbook "version" must be a whole number.`);if(n>1)return J(`This cookbook is version ${n}, newer than this planner understands (1). Update the planner or re-export it.`);if(n!==1)return J(`Cookbook version ${n} is not supported (this planner reads version 1).`);if(!X(e.recipes))return J(`The cookbook "recipes" must be a list of recipe ids.`);let r=e.recipes.filter(e=>!D.has(e)),i=[...new Set([...ke(e.recipes.filter(e=>D.has(e)),D),...r])].sort(),a=[];if(e.features!==void 0){if(!X(e.features))return J(`The cookbook "features" must be a list of model names.`);let t=new Set;for(let n of e.features){if(t.has(n))return J(`The cookbook lists the feature ${n} more than once.`);t.add(n)}a=[...e.features].sort()}let o=new Set([...i.flatMap(e=>D.get(e)?.models??[]),...a]);if(!Array.isArray(e.policies))return J(`The cookbook "policies" must be a list.`);let s=[];for(let[t,n]of e.policies.entries()){let e=kn(n,`policies[${t}]`);if(typeof e==`string`)return J(`Invalid cookbook: ${e}.`);(o.has(e.objectRef)||De(e))&&s.push(e)}let c;if(e.exposure!==void 0){if(!Y(e.exposure))return J(`The cookbook "exposure" must be an object.`);let t=[];for(let[n,r]of Object.entries(e.exposure)){if(!X(r)||!r.every(e=>On.has(e)))return J(`Invalid cookbook: exposure for ${n} must list api, mcp or cli.`);r.length&&o.has(n)&&t.push([n,[...r]])}c=Object.fromEntries(t)}let l;if(e.layout!==void 0){let t=An(e.layout);if(typeof t==`string`)return J(`Invalid cookbook: ${t}.`);l=En(Tn(t))}let u;if(e.theme!==void 0){let n=Sn(e.theme);if(n.ok)u=n.theme;else if(!t.dropUnknownRecipes)return J(n.error)}let d,f=[];if(e.overviews!==void 0){if(t.overviews){let n=t.overviews(e.overviews,l);if(!n)return J(`The cookbook "overviews" must be an object.`);d=n.overviews,f=n.dropped}else{if(!Y(e.overviews))return J(`The cookbook "overviews" must be an object.`);Object.keys(e.overviews).length&&(f=[`Page customisations (overviews) are not kept by this host and were dropped.`])}}let p={$schema:q,version:1,recipes:i,features:a,policies:s};for(let t of[`name`,`description`]){let n=e[t];if(n!==void 0){if(typeof n!=`string`)return J(`The cookbook "${t}" must be a string.`);n.trim()&&(p[t]=n.trim())}}return c&&Object.keys(c).length&&(p.exposure=c),l&&(p.layout=l),u&&(p.theme=u),d&&Object.keys(d).length&&(p.overviews=d),f.length?{ok:!0,cookbook:p,dropped:f}:{ok:!0,cookbook:p}}var Mn=e=>({ok:!1,error:e});function Nn(e,t={}){return jn(e,{...t,overviews:dn})}function Pn(e,t={}){let n;try{n=JSON.parse(e)}catch{return Mn(`This file is not valid JSON.`)}try{return Nn(n,t)}catch{return Mn(`This file is not a valid cookbook.`)}}var Z=`smrt-planner:cookbook-doc:v1`,Fn=`smrt-planner:blueprint:v1`,In=`smrt-planner:cookbook-doc:unreadable`;function Ln(){try{return globalThis.localStorage??null}catch{return null}}function Rn(e){if(!e)return{status:`unavailable`};let t;try{t=e.getItem(Z)}catch{return{status:`unavailable`}}let n=null;try{n=e.getItem(Fn)}catch{}let r=t===null&&n!==null,i=r?n:t;if(i===null)return{status:`empty`};let a=Pn(i,{dropUnknownRecipes:!0});if(a.ok)return r&&Q(e,Z,JSON.stringify(a.cookbook)),{status:`loaded`,cookbook:a.cookbook,previousKept:n!==null,...a.dropped?{dropped:a.dropped}:{}};t=i;let o=Q(e,In,t);return{status:`unreadable`,reason:a.error,keptAside:o}}function Q(e,t,n){if(!e)return!1;try{return e.setItem(t,n),!0}catch{return!1}}function zn(e,t){if(!e)return!1;try{return e.removeItem(t),!0}catch{return!1}}function Bn(e,t){return Q(e,Z,JSON.stringify(t))}function Vn(e,t={}){let n={$schema:q,version:1,...Ne(e)};t.name&&(n.name=t.name),t.description&&(n.description=t.description),t.layout&&(n.layout=t.layout);let r=Cn(t.theme);r&&(n.theme=r);let i=t.overviews??{},a=Object.keys(i).sort();return a.length&&(n.overviews=Object.fromEntries(a.map(e=>[e,i[e]]))),n}var Hn=new Set([`basic`,`advanced`,`hidden`]),Un=new Set([`api`,`mcp`,`cli`]);function Wn(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t+`=`.repeat((4-t.length%4)%4));return new TextDecoder().decode(Uint8Array.from(n,e=>e.charCodeAt(0)))}function Gn(e){let t=new URLSearchParams(e);return t.has(`r`)||t.has(`o`)}function Kn(e){let t={rows:[],narrowed:{}};if(!e)return t;let n;try{n=JSON.parse(Wn(e))}catch{return t}if(!n||typeof n!=`object`)return t;let r=[];for(let[e,t]of Object.entries(n.r??{}))if(t&&typeof t==`object`)for(let[n,i]of Object.entries(t)){if(!i||typeof i!=`object`)continue;let t={objectRef:e,fieldName:n,scopeType:`app`};typeof i.v==`string`&&Hn.has(i.v)&&(t.visibility=i.v),typeof i.l==`string`&&(t.label=i.l),(typeof i.h==`string`||i.h===null)&&(t.help=i.h),(typeof i.d==`string`||i.d===null)&&(t.defaultValue=i.d),typeof i.o==`number`&&Number.isFinite(i.o)&&(t.displayOrder=i.o),typeof i.k==`boolean`&&(t.locked=i.k),r.push(t)}let i={};for(let[e,t]of Object.entries(n.x??{})){if(!Array.isArray(t))continue;let n=t.filter(e=>Un.has(e));n.length&&(i[e]=n)}return{rows:r,narrowed:i}}function qn(e){let t=new URLSearchParams(e),n=(t.get(`r`)??``).split(`,`).filter(Boolean),r=ke(Me(n,D),D),i=new Set(r.flatMap(e=>D.get(e)?.models??[])),{rows:a,narrowed:o}=Kn(t.get(`o`)??``),s={$schema:q,version:1,recipes:r,features:[],policies:a.filter(e=>i.has(e.objectRef))},c=Object.fromEntries(Object.entries(o).filter(([e])=>i.has(e)));return Object.keys(c).length&&(s.exposure=c),s}var Jn=`smrt-planner:shell`;function $(e){let t=Pe(e),n=e.policies.some(e=>e.defaultValue!==void 0&&De(e));s(Ae(e)||n?t.taxRate:void 0),o({pricesIncludeTax:t.pricesIncludeTax,taxRounding:t.taxRounding,currency:t.currency})}var Yn=new class{#e=r(0);get replacementGeneration(){return e(this.#e)}set replacementGeneration(e){i(this.#e,e,!0)}#t=r();get layout(){return e(this.#t)}set layout(e){i(this.#t,e,!0)}#n=r();get name(){return e(this.#n)}set name(e){i(this.#n,e,!0)}#r=r();get description(){return e(this.#r)}set description(e){i(this.#r,e,!0)}#i=r();get theme(){return e(this.#i)}set theme(e){i(this.#i,e,!0)}#a=r({});get overviews(){return e(this.#a)}set overviews(e){i(this.#a,e)}#o=r(`unknown`);get persist(){return e(this.#o)}set persist(e){i(this.#o,e,!0)}#s=r(!1);get loaded(){return e(this.#s)}set loaded(e){i(this.#s,e,!0)}hostManaged=!1;#c=r(``);get loadNotice(){return e(this.#c)}set loadNotice(e){i(this.#c,e,!0)}saveBlocked=!1;#l=r(!1);get keepLegacyUrl(){return e(this.#l)}set keepLegacyUrl(e){i(this.#l,e,!0)}replacedBeforeLoad=!1;previousKept=!1;storage=null;timer;snapshot(){return Vn(n(E.data),{layout:n(this.layout),theme:n(this.theme),overviews:n(this.overviews),name:this.name,description:this.description})}overview(e){return Object.hasOwn(this.overviews,e)?this.overviews[e]:null}setOverview(e,t){let n=Object.fromEntries(Object.entries(this.overviews).filter(([t])=>t!==e));t&&(n[e]=t),this.overviews=n}setLayout(e){this.layout=x(e)?void 0:e}apply(e){E.load(e),this.layout=e.layout,this.theme=e.theme,this.name=e.name,this.description=e.description,this.overviews={...e.overviews??{}},$(e)}get unavailableNotice(){let e=[...E.unavailableRecipes,...E.unavailableFeatures];if(!e.length)return``;let t=e.length;return`${t} ${t===1?`recipe`:`recipes`} in this cookbook ${t===1?`isn't`:`aren't`} available in this version: ${e.join(`, `)}. They are kept when you save or export.`}removeUnavailable(){E.removeUnavailable(),this.scheduleSave()}setTheme(e){this.theme=Cn(e)}settings(){return Pe(this.snapshot())}setSettings(e){let t=Oe(this.snapshot(),e);E.rows=t.policies.map(e=>({...e})),$(t)}replace(e){this.replacementGeneration++,this.apply(e),this.loaded||(this.replacedBeforeLoad=!0),this.saveBlocked=!1,this.keepLegacyUrl=!1}reset(e={}){this.replacementGeneration++,E.clear(),$({policies:[]}),this.layout=void 0,e.preserveTheme||(this.theme=void 0),this.name=void 0,this.description=void 0,this.overviews={},this.saveBlocked=!1,this.keepLegacyUrl=!1}importText(e){let t=Pn(e);return t.ok&&this.replace(t.cookbook),t}hydrate(e,t=u()){this.storage=t;let n=Rn(t);n.status===`loaded`&&(this.previousKept=n.previousKept),n.status===`loaded`&&!this.replacedBeforeLoad?(this.apply(n.cookbook),n.dropped?.length&&(this.loadNotice=`Some saved page customisations could not be used and were removed: ${n.dropped.join(` `)}`)):n.status===`unreadable`&&(this.saveBlocked=!n.keptAside,this.loadNotice=n.keptAside?`The saved cookbook could not be read (${n.reason}) and was kept aside; starting empty.`:`The saved cookbook could not be read (${n.reason}). Starting empty without overwriting it; import or reset to save again.`);let r=!1;if(Gn(e)&&(n.status===`loaded`&&!Q(t,`smrt-planner:cookbook-doc:backup`,JSON.stringify(n.cookbook))&&(this.saveBlocked=!0),this.apply(qn(e)),r=!0),this.persist=n.status===`unavailable`?`memory`:`unknown`,this.loaded=!0,r){let e=this.save();this.keepLegacyUrl=!e}return r}save(){if(clearTimeout(this.timer),this.timer=void 0,!this.loaded)return!1;if(this.hostManaged)return!0;if(this.saveBlocked)return this.persist=`memory`,!1;let e=Bn(this.storage,this.snapshot());return this.persist=e?`ok`:`memory`,e&&this.previousKept&&(this.previousKept=!zn(this.storage,Fn)),e&&(this.keepLegacyUrl=!1),e}scheduleSave(){this.loaded&&!this.hostManaged&&(clearTimeout(this.timer),this.timer=setTimeout(()=>this.save(),300))}flush(){this.timer!==void 0&&this.save()}};export{M as A,P as C,ot as D,ut as E,rt as O,dt as S,pt as T,bn as _,Ln as a,Xt as b,q as c,mn as d,pn as f,wn as g,fn as h,Z as i,nt as j,N as k,gn as l,G as m,Yn as n,Nn as o,_n as p,$ as r,Pn as s,Jn as t,vn as u,rn as v,ft as w,I as x,Zt as y};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./vsq4E2m7.js","./DG3qFFTE.js","./COiEfhsA.js","./xihTtKlq.js","./CXPo72CL.js","./YUSKx8_q.js","./DK8Blf1Y.js","../assets/currency-metadata.ksbBA8-C.css","../assets/app.BHwMQ9Zv.css","./1tQGPi8J.js","./Bv5jGtB8.js","../assets/feedback.qFktqYFY.css","./DURcYLyk.js","./BaNbYf_w.js","./By9nPosf.js","../assets/SegmentedControl.DMqHG5fn.css","./DIE02RSm.js","../assets/webmcp-ui-context.hO24Ni5w.css","./BQGfk9t2.js","../assets/data.CVlX_W0i.css","./CUyVrfsu.js","./Bs5WxZDd.js","../assets/forms.BRdbPdvs.css","./BYcBM-fh.js","../assets/AppShell.Y0ysizZK.css","./Dapxnz2C.js","../assets/workspace.C40zM0Mb.css","./CEGflXJ6.js","./DBoTKMLo.js","../assets/state.C0UZEhxS.css","../assets/labels.Dxa6EyRI.css","./Dh1aRV-5.js","./BxX_79XJ.js","./DPcs_FRu.js","../assets/planner.DOQVfcOi.css","./D_U_DYjx.js"])))=>i.map(i=>d[i]);
2
+ import{$ as e,Et as t,Mt as n,bt as r,vt as i}from"./DG3qFFTE.js";import{t as a}from"./BaNbYf_w.js";import"./xihTtKlq.js";import{I as o,L as s,O as c,Q as l,W as u,Z as d,_ as f,_t as p,bt as m,et as h,h as g,ht as _,p as v,x as y,yt as b}from"./CXPo72CL.js";import{v as x}from"./DURcYLyk.js";import"./By9nPosf.js";import"./DIE02RSm.js";import{u as S}from"./BQGfk9t2.js";import{C as ee,D as C,E as te,F as ne,I as w,L as re,N as ie,O as ae,S as oe,T as se,_ as ce,b as le,d as ue,g as de,h as fe,n as pe,r as me,v as he,w as ge,x as _e,z as ve}from"./CEGflXJ6.js";import{B as ye,G as be,J as xe,R as Se,V as Ce,W as we,X as Te,Y as Ee,a as De,b as T,c as Oe,d as ke,i as Ae,j as je,l as Me,n as Ne,o as Pe,q as Fe,t as E,v as Ie,x as D,z as Le}from"./DBoTKMLo.js";function Re(e){let t=e?.surfaces?.find(e=>e.kind===`widget`&&e.sectionDefault===!0);return t?{id:t.type,type:t.type,span:4,options:{}}:void 0}function ze(e){let t=e.lastIndexOf(`#`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1);return n.startsWith(`.`)||n.startsWith(`/`)||/\s/.test(n)||!/^[A-Za-z_$][\w$]*$/.test(r)?null:{specifier:n,exportName:r}}function O(e,t){let n=ze(e);return n?Promise.resolve(t(n.specifier,n.exportName)).then(t=>{if(t==null)throw Error(`export "${e}" was not found`);return t}):Promise.reject(Error(`invalid export ref "${e}"`))}function k(e){let t;return()=>(t??=e(),t)}function Be(e){return typeof e==`object`&&!!e&&`default`in e&&!!e.default}function Ve(e,t,n){let r=k(()=>O(e.export,t)),i=e.optionsEditor?k(()=>O(e.optionsEditor,t)):void 0,a=e.data?.load?k(()=>O(e.data?.load,t)):void 0,o={type:e.type,title:e.label,options:e.options??[],loadComponent:async()=>{let e=await r();return Be(e)?e.default:e}};return e.description!==void 0&&(o.description=e.description),e.icon!==void 0&&(o.icon=e.icon),e.version!==void 0&&(o.version=e.version),e.allowedIn&&(o.allowedIn=e.allowedIn),e.defaultSpan!==void 0&&(o.defaultSpan=e.defaultSpan),e.minSpan!==void 0&&(o.minSpan=e.minSpan),e.maxSpan!==void 0&&(o.maxSpan=e.maxSpan),n&&(o.migrate=n),i&&(o.loadOptionsEditor=async()=>{let e=await i();return Be(e)?e.default:e}),a&&(o.load=async(t,n)=>{let r=await a();if(typeof r!=`function`)throw Error(`loader "${e.data?.load}" is not a function`);return r(t,n)}),o}async function He(e,t,n,r={}){let i=[],a=[],o=[];for(let s of t)if(!r.enabled||r.enabled(s.id))for(let t of s.surfaces??[]){if(t.kind!==`widget`)continue;let c=(e,n)=>a.push({recipeId:s.id,type:t.type,reason:e,message:n});if(e.has(t.type)&&!r.replace){c(`duplicate_type`,`"${t.type}" is already registered`);continue}let l;if(t.migrate)try{let e=await O(t.migrate,n);if(typeof e!=`function`)throw Error(`not a function`);l=e}catch(e){c(`unresolved`,`migrate "${t.migrate}": ${e instanceof Error?e.message:String(e)}`);continue}try{o.push(e.register(Ve(t,n,l),{replace:r.replace})),i.push(t.type)}catch(e){c(`invalid`,e instanceof Error?e.message:String(e))}}return{registered:i,skipped:a,dispose:()=>{for(let e of o.splice(0))e()}}}var Ue=[`identifier`,`status`,`date`,`party`,`total`,`money`];function We(e){for(let t of[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`])if(e.includes(t))return t}function A(e,t,n={}){let r=new Set(n.exclude??[]),i=n.max??4,a=Object.keys(t).filter(t=>!r.has(t)&&t in e.fields),o=e=>a.find(n=>t[n]?.includes(e)),s=[],c=e=>{e&&!s.includes(e)&&s.push(e)};c(o(`identifier`)??o(`title`));for(let e of Ue)e!==`identifier`&&(e===`money`&&s.some(e=>t[e]?.includes(`money`))||c(e===`date`?a.find(e=>t[e]?.includes(`date`)&&e!==`createdAt`&&e!==`updatedAt`)??o(`date`):o(e)));return s.slice(0,i).map(n=>({key:n,label:j(n,e),...We(t[n]??[])?{role:We(t[n]??[])}:{}}))}function Ge(e,t,n={}){let r=new Set(n.exclude??[]),i=Object.keys(t).filter(t=>!r.has(t)&&t in e.fields),a=i.filter(t=>e.fields[t]?.type===`text`),o=a.find(e=>/^(?:description|title|name|label)$/.test(e))??a.find(e=>t[e]?.includes(`title`))??a.find(e=>!t[e]?.includes(`identifier`)),s=i.find(e=>t[e]?.includes(`quantity`)),c=i.filter(e=>t[e]?.includes(`money`)),l=c.find(e=>/unit|price|rate/i.test(e)),u=c.find(e=>/^(?:amount|lineTotal|total|lineAmount)$/.test(e))??[...c].reverse().find(e=>e!==l),d=[];return o&&d.push({key:o,label:j(o,e)}),s&&d.push({key:s,label:j(s,e),role:`quantity`}),l&&d.push({key:l,label:j(l,e),role:`money`,summarize:!1}),u&&u!==l&&d.push({key:u,label:j(u,e),role:`money`}),d}function j(e,t){let n=t.fields[e];return n&&(n.type===`foreignKey`||n.type===`crossPackageRef`)&&/.[a-z]Id$/.test(e)?te(e.slice(0,-2)):te(e)}function Ke(e){if(e.dataWidgets&&e.page)return[e.page];let t=[{id:`shortcuts`,type:`shortcuts`,span:4,options:{}}];if(e.dataWidgets&&e.lead){let n=e.lead,r=e.override,i=r&&typeof r==`object`&&!Array.isArray(r)?r:void 0,a=i?.changed;a&&typeof a==`object`&&!Array.isArray(a)&&Object.hasOwn(a,`count`)&&!(Array.isArray(i?.removed)&&i.removed.includes(`count`))&&t.push({id:`count`,type:`metric`,span:1,options:{title:n.plural,model:n.id,measure:`count`}}),t.push({id:`latest`,type:`records`,span:4,options:{title:`${n.name} records`,model:n.id,limit:5,summaries:!1}})}return t}var qe=[`text`,`integer`,`decimal`,`boolean`,`datetime`,`json`,`foreignKey`,`crossPackageRef`];function Je(e){return qe.includes(e)?e:`text`}var Ye=/(Date|^date|period(Start|End))$/;function Xe(e,t){return t.type===`datetime`&&!t.system&&Ye.test(t.name)&&!e.fields.some(e=>e.name===`allDay`)?`date`:void 0}function Ze(e){return ue(e)[0]}function Qe(e,t){let n=t.ui?{...t.ui}:void 0,r=c(t)?`money`:Xe(e,t);return{type:Je(t.type),required:t.required,nullable:!t.required,...t.default===void 0?{}:{default:t.default},...t.description?{description:t.description}:{},...n?{ui:n}:{},...t.enum?.length?{enum:[...t.enum]}:{},...r?{format:r}:{},...Ze(e)===t.name?{display:!0}:{}}}function $e(e,t){return e.includes(`:`)?e:`${t.slice(0,t.lastIndexOf(`:`))}:${e}`}function et(e,t){if(!t.related)return!1;let n=$e(t.related,e.id);return xe(p,n,h).some(t=>t.id===e.id)}function tt(e){return e.fields.flatMap(t=>{if(t.type!==`foreignKey`&&t.type!==`crossPackageRef`||!t.related)return[];let n=m($e(t.related,e.id));return n?[{field:t.name,kind:t.type===`crossPackageRef`?`crossPackageRef`:`foreignKey`,relatedCollection:n.model.collection,...et(e,t)?{role:`items`}:{}}]:[]})}function M(e){let t=tt(e);return{name:e.collection,objectRef:e.id,className:e.name,idField:`id`,fields:Object.fromEntries(e.fields.map(t=>[t.name,Qe(e,t)])),...t.length?{relationships:t}:{}}}function nt(e,t){return{objectRef:e.id,fields:Object.fromEntries(t.map((e,t)=>[e.name,{visibility:`basic`,label:e.label,help:e.help??null,order:t,required:e.required}]))}}function rt(e,t){let n=new Set(t);for(let t of e)for(let e of t.models)n.add(e);return n}function it(e){return v(e.replace(/_?id$/i,``)||e)}function N(e,t,n){let r=Ee(e,t),i=Te(e,t).filter(e=>e.model.exposed&&n.has(e.model.id)),a=new Set(xe(e,t,h).map(e=>e.id)),o=new Map;for(let e of i)o.set(e.model.id,(o.get(e.model.id)??0)+1);let s=i.map(e=>{let t=a.has(e.model.id)?`items`:`children`,n=M(e.model),i=ae(n),s=[e.fk];return{model:e.model.id,field:e.fk,label:(o.get(e.model.id)??0)>1?`${we(e.model.name,r)} (${it(e.fk).toLowerCase()})`:we(e.model.name,r),kind:t,columns:t===`items`?Ge(n,i,{exclude:s}):A(n,i,{exclude:s,max:5}),...t===`items`&&`sortOrder`in n.fields?{sort:`sortOrder`}:{}}});for(let n of be(e,t))s.push({model:n.model.id,field:n.fk,label:it(n.fk),kind:`reference`});return s}var at=Symbol(`smrt-cookbook`);function ot(){return t(at)}function st(e,t){let{sections:n}=t;if(!n)throw Error(`the cookbook widget context is missing`);let r=typeof e.section==`string`?e.section:``,i=r?n.find(e=>e.id===`section:${r}`||e.id===`custom:${r}`)?.id:t.overviewId;if(!i)throw Error(`unknown section ${r}`);return se(n,i)}function ct(e){return e?async(t,n)=>{let r=st(t,n);try{let t=await e(n,r.items.map(e=>({...e})));if(!Array.isArray(t))return r;let i=new Set,a=[];for(let e of t){if(!e||typeof e.href!=`string`)continue;let t=typeof e.id==`string`&&e.id?e.id:e.href;i.has(t)&&(t=`${t}#${a.length}`),i.add(t),a.push({...e,id:t})}return{items:a}}catch(e){if(n.signal?.aborted)throw e;return r}}:st}var lt=new Set([`foreignKey`,`crossPackageRef`]);function P(e,t){return`/m/${e}/${t}/`}function ut(e,t,n,r=`view`){let i=`${P(e,t)}${encodeURIComponent(n)}/`;return r===`edit`?`${i}edit/`:i}function dt(e,t,n,r){return`${P(e,t)}?${encodeURIComponent(n)}=${encodeURIComponent(r)}`}function ft(e,t){let n=new URLSearchParams(e);for(let e of t.fields){if(!lt.has(e.type))continue;let t=n.get(e.name);if(t)return{field:e.name,equals:t}}}function pt(e){return e?.equals===void 0?``:`${encodeURIComponent(e.field)}=${encodeURIComponent(e.equals)}`}var F=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:null,mt=(e,t)=>e.fields.some(e=>e.name===t);function ht(e,t){let n=ae(M(e)),r=fe(t,n);return Object.values(r).some(e=>F(e)!==null)?r:void 0}function gt(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}function _t(e,t,n){if(!gt(e,t)||![`subtotal`,`taxAmount`,`totalAmount`,`discountTotal`].every(t=>mt(e,t)))return;let r=F(t.subtotal),i=F(t.taxAmount),a=F(t.totalAmount),o=F(t.discountTotal)??0;if(r===null||i===null||a===null)return;let s=d(t,`exclusive`);return{subtotal:r,discount:o,tax:i,total:a,lineAmountType:s,roundingScope:l(t,`line`),showNetSubtotal:s===`inclusive`,taxes:_(n,s).flatMap(e=>e.taxComponentId?[{taxComponentId:e.taxComponentId,name:e.name,percent:e.percent,taxable:e.taxable,tax:e.tax}]:[])}}var I=ie();function L(e){let{source:t,href:n}=e;if(!t||!n)throw Error(`the planner widget context is missing`);return{source:t,href:n}}function R(e){let t=typeof e==`string`?m(e):void 0;if(!t)throw Error(`unknown model ${String(e)}`);return{model:t.model,packageId:t.pkg.id,path:P(t.pkg.id,t.model.name)}}var z=new Set([`foreignKey`,`crossPackageRef`]);function B(e,t,n){let r=e.filter;if(typeof r!=`string`||r===``)return;if(r!==`parent`)throw Error(`unknown filter ${r}`);let{record:i}=t;if(!i?.id)throw Error(`the parent filter needs a record`);let a=typeof e.parentField==`string`&&e.parentField?e.parentField:e.field,o=typeof a==`string`?a:``,s=n.fields.find(e=>e.name===o);if(!s||!z.has(s.type))throw Error(`${n.name} has no reference field ${o}`);return{field:o,id:i.id}}async function V(e,t,n){return n?e.listWhere(t,n.field,n.id):e.list(t)}function H(e,t,n){return e(n?dt(t.packageId,t.model.name,n.field,n.id):t.path)}var U=e=>typeof e==`number`&&Number.isFinite(e);async function vt(e,t){let{source:n,href:r}=L(t),i=R(e.model),{model:a}=i,o=B(e,t,a),s=await V(n,a,o),l=H(r,i,o),u=typeof e.measure==`string`?e.measure:``;if(u===`count`||u===``)return{value:s.length,format:`integer`,href:l};let d=a.fields.find(t=>t.name===e.field);if(!d||d.type!==`integer`&&d.type!==`decimal`)throw Error(`${u} needs a numeric field of ${a.name}`);let f=s.map(e=>e[d.name]).filter(U),p=0;if(f.length){if(u===`sum`||u===`avg`)p=f.reduce((e,t)=>e+t,0),u===`avg`&&(p/=f.length);else if(u===`min`)p=Math.min(...f);else if(u===`max`)p=Math.max(...f);else throw Error(`unknown measure ${u}`)}let m=c(d);return{value:m?Math.round(p):p,format:m?`money`:d.type===`integer`?`integer`:`decimal`,...m?{currency:`USD`}:{},href:l}}function yt(e,t){return U(e)&&U(t)?e-t:String(e??``).localeCompare(String(t??``))}var bt=new Set([`createdAt`,`updatedAt`]),xt=[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`];function St(e=[]){return xt.find(t=>e.includes(t))}function Ct(e,t,n,r){let i=M(e),a=r?[r]:[],o=ge(n);if(o.length===0)return A(i,t,{exclude:a,max:5});let s=[...Ge(i,t,{exclude:a}),...A(i,t,{exclude:a,max:o.length+8})];return o.map(n=>{let r=e.fields.find(e=>e.name===n);if(!r)throw Error(`${e.name} has no field ${n}`);let i=s.find(e=>e.key===n);if(i)return i;let a=St(t[n]);return{key:n,label:z.has(r.type)?v(n.replace(/Id$/,``)):v(n),...a?{role:a}:{}}})}var wt=new Set([`money`,`quantity`]);function Tt(e,t){let n={};for(let r of e)(r.summarize??wt.has(r.role))&&(n[r.key]=t.reduce((e,t)=>{let n=t[r.key];return U(n)?e+n:e},0));return n}function Et(e,t){let n=C(M(e)),r=new Set(t.map(e=>n?e[n]:void 0).filter(e=>typeof e==`string`&&e!==``));return r.size===1?[...r][0]??`USD`:`USD`}async function Dt(e,t){let{source:n,href:r}=L(t),i=R(e.model),{model:a}=i,o=B(e,t,a),s=await V(n,a,o);if(typeof e.sort==`string`&&e.sort){if(!a.fields.find(t=>t.name===e.sort)&&!bt.has(e.sort))throw Error(`${a.name} has no field ${e.sort}`);let t=s.some(t=>t[e.sort]!==void 0)?e.sort:Pt(a)?.name;if(t){let n=e.direction===`asc`?1:-1;s=[...s].sort((e,r)=>n*yt(e[t],r[t]))}}let c=Ct(a,ae(M(a)),e.columns,o?.field),l=U(e.limit)?e.limit:5,u=s.slice(0,l),d=a.fields.filter(e=>z.has(e.type)&&c.some(t=>t.key===e.name)),f=await me(n,d,u),p=e=>Object.fromEntries(c.map(t=>{let n=e[t.key],r=d.find(e=>e.name===t.key);return r?.related&&typeof n==`string`&&n?[t.key,f.get(g(r.related,n))??``]:[t.key,n??null]})),m=Tt(c,s),h=!Fe(a);return{rows:await Promise.all(u.map(async e=>({id:String(e.id),title:await pe(n,a,e,0,o?.field),...h?{href:r(ut(i.packageId,a.name,String(e.id)))}:{},cells:p(e)}))),...e.summaries===!1?{}:{total:s.length},...h?{href:H(r,i,o)}:{},columns:c,currency:Et(a,s),...Object.keys(m).length?{summaries:m}:{}}}var Ot={"7d":7,"30d":30,"90d":90,"12m":365,all:null},W=864e5;function kt(e){return e===`7d`||e===`30d`?`day`:e===`90d`?`week`:`month`}function At(e,t){let n=new Date(e);if(t===`month`)return Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),1);let r=Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate());return t===`week`?r-(n.getUTCDay()+6)%7*W:r}function jt(e,t){if(t===`month`){let t=new Date(e);return Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,1)}return e+(t===`week`?7:1)*W}function Mt(e,t){let n=new Date(e).toISOString();return t===`month`?n.slice(0,7):n.slice(0,10)}var Nt=e=>e.type===`datetime`&&!e.system;function Pt(e){let t=e.fields.filter(Nt);return t.find(e=>/^(issue|order|start|created)/i.test(e.name))??t[0]}function Ft(e){if(typeof e!=`string`&&typeof e!=`number`)return;let t=new Date(e).getTime();return Number.isFinite(t)?t:void 0}async function It(e,t){let{source:n,href:r}=L(t),i=R(e.model),{model:a}=i,o=B(e,t,a),s=typeof e.groupBy==`string`?e.groupBy:``,l=s?a.fields.find(e=>e.name===s):Pt(a);if(!l)throw Error(s?`${a.name} has no field ${s}`:`${a.name} has no date field to chart; choose a group-by field`);let u=typeof e.measure==`string`?e.measure:``,d;if(u&&u!==`count`){if(u!==`sum`&&u!==`avg`)throw Error(`unknown measure ${u}`);if(d=a.fields.find(t=>t.name===e.field),!d||d.type!==`integer`&&d.type!==`decimal`)throw Error(`${u} needs a numeric field of ${a.name}`)}let f=typeof e.period==`string`?e.period:`30d`;if(!Object.hasOwn(Ot,f))throw Error(`unknown period ${f}`);let p=Ot[f],m=Nt(l),h=m?l:Pt(a),g=p!==null&&h?y-p*W:-1/0,_=await V(n,a,o);h&&g!==-1/0&&(_=_.filter(e=>{let t=Ft(e[h.name]);return t!==void 0&&t>=g&&t<=y}));let v=new Map,b=(e,t,n)=>{let r=v.get(e)??{key:t,sum:0,n:0};if(d){let e=n[d.name];if(!U(e))return;r.sum+=e}r.n+=1,v.set(e,r)},x=kt(f);if(m){let e=g===-1/0?Math.min(..._.map(e=>Ft(e[l.name])??y),y):g;for(let t=At(e,x);t<=y;t=jt(t,x))v.set(Mt(t,x),{key:t,sum:0,n:0});for(let e of _){let t=Ft(e[l.name]);if(t===void 0)continue;let n=At(t,x);b(Mt(n,x),n,e)}}else for(let e of _){let t=e[l.name],n=t==null||t===``?`(none)`:String(t);b(n,n,e)}let S=d?c(d):!1,ee=e=>{if(!d)return e.n;let t=u===`avg`&&e.n?e.sum/e.n:e.sum;return S?Math.round(t):t},C=[...v.entries()].map(([e,t])=>({label:e,value:ee(t),key:t.key}));return C=m?C.sort((e,t)=>Number(e.key)-Number(t.key)):C.sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label)),{points:C.map(({label:e,value:t})=>({label:e,value:t})),format:d?S?`money`:d.type===`integer`?`integer`:`decimal`:`integer`,...S?{currency:`USD`}:{},href:H(r,i,o)}}he(I,{metric:vt,records:Dt,chart:It,shortcuts:async(e,t)=>t,shortcuts:ct()});function Lt(e){let{relations:t,viewAllHref:n}=e;if(!t)throw Error(`the record page context is missing`);return{relations:t,records:Dt,viewAllHref:n}}async function Rt(e,t){let{source:n}=L(e),r=e.record;if(!r?.id)throw Error(`line items need a record`);let{model:i}=R(r.model),a=await n.get(i,r.id);if(!a)return{};let o=t.find(e=>e.kind===`items`),s=o?m(o.model)?.model:void 0,c=_t(i,a,o&&s?await n.listWhere(s,o.field,r.id):[]),l=c?void 0:ht(i,a),u=C(M(i)),d=u?a[u]:void 0;return{...c?{storedTotals:c}:{},...l?{totals:l}:{},...typeof d==`string`&&d?{currency:d}:{}}}I.register(ce((e,t)=>_e(Lt(t))(e,t))),I.register(de(async(e,t)=>{let n=Lt(t),{totals:r,storedTotals:i,currency:a}=await Rt(t,n.relations);return le({...n,totals:()=>r,storedTotals:()=>i,currency:()=>a})(e,t)}));var zt=[`shortcuts`,`metric`,`records`,`chart`,`note`],Bt={"@happyvertical/smrt-reports/svelte":async()=>({SavedReportsWidget:(await a(async()=>{let{default:e}=await import(`./vsq4E2m7.js`);return{default:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]),import.meta.url)).default})},Vt=async(e,t)=>{let n=Bt[e];if(n)return(await n())[t]},Ht=T.filter(e=>e.surfaces?.some(e=>e.kind===`widget`)),Ut=Ht.flatMap(e=>(e.surfaces??[]).flatMap(e=>e.kind===`widget`?[e.type]:[]));He(I,Ht,Vt);var Wt=new Map(Se(T).map(e=>[`section:${e.id}`,e])),Gt=p.packages.flatMap(e=>e.models.map(e=>e.id)),Kt=[...zt,...Ut];function qt(e){let t=Wt.get(e);for(let e of t?.recipes??[]){let t=Ie(e)[0];if(t)return{id:t.model.id,name:v(t.model.name)}}}function Jt(e,t){let n=Re(Wt.get(e)?.recipes[0]),r=qt(e);return Ke({lead:r?{...r,plural:f(r.name)}:void 0,dataWidgets:!0,page:n&&Ut.includes(n.type)?n:void 0,override:t})}var Yt=new Map;function Xt(e,t){if(!ve.test(e))return;let n=Yt.get(e);return n||(n=w({id:e,allowed:Kt,models:Gt,defaults:Jt(e)}),Yt.set(e,n)),t===void 0?n:w({...n,defaults:Jt(e,t)})}function Zt(e,t){return`detail:${e}.${t}`}var Qt=new Map(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(t=>[ee(t.id),{packageId:e.id,model:t}])));function $t(e){let[,t,n]=/^detail:([A-Za-z0-9_-]+)\.([A-Za-z0-9_]+)$/.exec(e)??[],r=t&&n?b(t,n):void 0;return t&&r?.exposed?{packageId:t,model:r}:Qt.get(e)}var en=new Set(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(e=>e.id))),tn=new Map;function nn(e){let t=tn.get(e);if(t)return t;let n=$t(e);if(!n)return;let r=N(p,n.model.id,en),i=oe(M(n.model),r,{id:e,maxMetrics:2*r.length});return t=w({...i,maxWidgets:Math.max(i.maxWidgets??24,i.defaults.length+24)}),tn.set(e,t),t}function rn(e,t){let n=nn(e),r=$t(e);if(!n||!r)return;let i=N(p,r.model.id,t),a=0,o=n.defaults.filter(e=>e.type===`line-items`?i.some(e=>e.kind===`items`):e.type===`related`?i.some(e=>e.kind===`children`):t.has(String(e.options.model))?e.type!==`metric`||(a+=1,a<=4):!1);return w({...n,defaults:o})}function an(e,t){return e.startsWith(`detail:`)?nn(e):Xt(e,t)}function on(e,t){return Wt.has(e)||e===`section:${je.id}`?!0:e.startsWith(`detail:`)?$t(e)!==void 0:e.startsWith(`custom:`)&&ve.test(e)&&(t?.customSections??[]).some(t=>t.id===e)}var sn=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function cn(e,t){let n=t.widgetId?`widget ${t.widgetId}${t.type?` (${t.type})`:``}`:`an entry`,r=t.options?.length?`: ${t.options.map(e=>`${e.key} ${e.code}`).join(`, `)}`:``;return`Overview ${e}: ${n} was dropped (${t.code}${r}).`}function ln(e,t){let n={...e};return e.added&&(n.added=e.added.filter(e=>!t.has(e.id))),e.changed&&(n.changed=Object.fromEntries(Object.entries(e.changed).filter(([e])=>!t.has(e)))),n}function un(e,t){let n=an(e,t);if(!n)return{override:null,issues:[{widgetId:null,type:null,code:`malformed`,message:`not an overview id`}]};let r=ne(n,t,I);if(r.ok){let e=re(t).override?.changed?.count;return e&&n.defaults.some(e=>e.id===`count`)?{override:{...r.override??{version:1},changed:{...r.override?.changed,count:e}},issues:[]}:{override:r.override,issues:[]}}let i=re(t),a=new Set(r.issues.flatMap(e=>e.widgetId?[e.widgetId]:[]));if(!i.override)return{override:null,issues:r.issues};let o=ne(n,ln(i.override,a),I);return o.ok?{override:o.override,issues:r.issues}:{override:null,issues:[...r.issues,...o.issues]}}function dn(e,t){if(!sn(e))return null;let n=[],r=[];for(let i of Object.keys(e).sort()){if(!on(i,t)){r.push(`Overview ${i} is not a page in this app and was dropped.`);continue}let{override:a,issues:o}=un(i,e[i]);for(let e of o)r.push(cn(i,e));a&&n.push([i,a])}return{overviews:Object.fromEntries(n),dropped:r}}var fn=S,pn=`glass`,mn=`system`,hn=[`light`,`dark`,`system`],gn=[`none`,`sm`,`md`,`lg`,`xl`,`full`],_n=[`comfortable`,`touch`],vn=[`auto`,`standard`,`more`],G={"system-ui":`system-ui, -apple-system, "Segoe UI", sans-serif`,Inter:`Inter, system-ui, sans-serif`,Georgia:`Georgia, "Times New Roman", serif`,"ui-rounded":`ui-rounded, "SF Pro Rounded", system-ui, sans-serif`,"ui-monospace":`ui-monospace, "SF Mono", Menlo, monospace`},yn=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;function bn(e){if(typeof e!=`string`)return null;let t=yn.exec(e.trim());if(!t)return null;let n=t[1].toLowerCase();return n.length===3&&(n=[...n].map(e=>e+e).join(``)),`#${n}`}var xn=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function Sn(e){if(e===void 0)return{ok:!0,theme:void 0};if(!xn(e))return{ok:!1,error:`The cookbook "theme" must be an object.`};let t={};if(e.preset!==void 0){if(typeof e.preset!=`string`||!fn.includes(e.preset))return{ok:!1,error:`The theme preset must be one of ${fn.join(`, `)}.`};t.preset=e.preset}if(e.colorScheme!==void 0){if(!hn.includes(e.colorScheme))return{ok:!1,error:`The theme colorScheme must be light, dark or system.`};t.colorScheme=e.colorScheme}for(let[n,r]of[[`borderRadius`,gn],[`density`,_n],[`contrast`,vn]]){let i=e[n];if(i!==void 0){if(!r.includes(i))return{ok:!1,error:`The theme ${n} must be one of ${r.join(`, `)}.`};t[n]=i}}if(e.fontFamily!==void 0){if(typeof e.fontFamily!=`string`||!Object.hasOwn(G,e.fontFamily))return{ok:!1,error:`The theme font must be one of ${Object.keys(G).join(`, `)}.`};t.fontFamily=e.fontFamily}if(e.custom!==void 0){if(!xn(e.custom))return{ok:!1,error:`The theme "custom" must be an object.`};let n=bn(e.custom.primary);if(!n)return{ok:!1,error:`The theme custom primary must be a hex colour like #c2410c.`};let r={primary:n};if(e.custom.fontFamily!==void 0){let t=e.custom.fontFamily;if(typeof t!=`string`||!Object.hasOwn(G,t))return{ok:!1,error:`The theme font must be one of ${Object.keys(G).join(`, `)}.`};r.fontFamily=t}t.custom=r}if(e.customCss!==void 0){if(typeof e.customCss!=`string`)return{ok:!1,error:`The theme customCss must be a string.`};if(Array.from(e.customCss).length>65536)return{ok:!1,error:`The theme customCss is too long (65,536 characters maximum).`};e.customCss&&(t.customCss=e.customCss)}return{ok:!0,theme:Object.keys(t).length?t:void 0}}function Cn(e){if(!e)return;let t={};return e.preset&&(t.preset=e.preset),e.colorScheme&&(t.colorScheme=e.colorScheme),e.borderRadius&&(t.borderRadius=e.borderRadius),e.density&&(t.density=e.density),e.contrast&&(t.contrast=e.contrast),e.fontFamily&&(t.fontFamily=e.fontFamily),e.custom&&(t.custom={...e.custom}),e.customCss&&(t.customCss=e.customCss),Object.keys(t).length?t:void 0}function wn(e){let t=e?.colorScheme??`system`,n=e?.custom?`brand colour ${e.custom.primary}`:e?.preset??`glass`;return t===`system`?n:`${n}, ${t}`}var K=`section:`;function Tn(e,t=Le(T)){let n=Object.keys(t).sort((e,t)=>t.length-e.length);if(!n.length)return e;let r=e=>{if(!e.startsWith(K))return e;let r=e.slice(8);for(let e of n){if(r===e)return`${K}${t[e]}`;if(r.startsWith(`${e}:`))return`${K}${t[e]}${r.slice(e.length)}`}return e},i=e=>e.startsWith(K)&&n.includes(e.slice(8)),a=e=>[...new Set(e)],o={...e};if(e.sectionOrder&&(o.sectionOrder=a(e.sectionOrder.map(r))),e.hidden&&(o.hidden=a(e.hidden.filter(e=>!i(e)).map(r))),e.itemOrder){let t={};for(let[n,i]of Object.entries(e.itemOrder)){let e=r(n);t[e]=a([...t[e]??[],...i.map(r)])}o.itemOrder=t}return e.moved&&(o.moved=Object.fromEntries(Object.entries(e.moved).map(([e,t])=>[r(e),r(t)]))),o}function En(e,t=T){let n=new Map;for(let e of t){let t=Ce(e).id;for(let r of Ie(e))r.key&&n.set(`${K}${t}:${r.packageId}:${r.model.name}:${r.label}`,ye(r.packageId,r.model.name,r.key))}let r=e=>{let t=n.get(e);if(t)return t;if(!e.startsWith(K))return e;let r=e.slice(8).split(`:`);return r.length<3||!r[1]||!r[2]?e:ye(r[1],r[2])},i=e=>[...new Set(e)],a=(e,t)=>{let n={};for(let[i,a]of Object.entries(e)){let e=r(i);e in n||(n[e]=t(a))}return n},o={...e};return e.hidden&&(o.hidden=i(e.hidden.map(r))),e.itemOrder&&(o.itemOrder=a(e.itemOrder,e=>i(e.map(r)))),e.moved&&(o.moved=a(e.moved,r)),e.items&&(o.items=a(e.items,e=>e)),o}var q=`https://s-m-r-t.dev/schemas/cookbook/v1.json`,Dn=new Set([`basic`,`advanced`,`hidden`]),On=new Set([`api`,`mcp`,`cli`]),J=e=>({ok:!1,error:e}),Y=e=>typeof e==`object`&&!!e&&!Array.isArray(e),X=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`);function kn(e,t){if(!Y(e))return`${t} is not an object`;let{objectRef:n,fieldName:r}=e;if(typeof n!=`string`||!n)return`${t} has no objectRef`;if(typeof r!=`string`||!r)return`${t} has no fieldName`;if(e.scopeType!==`app`)return`${t} must have scopeType "app"`;let i={objectRef:n,fieldName:r,scopeType:`app`};for(let n of[`defaultValue`,`help`,`label`]){let r=e[n];if(r!==void 0){if(typeof r!=`string`&&r!==null)return`${t}.${n} is invalid`;i[n]=r}}if(e.visibility!==void 0){let n=e.visibility;if(n!==null&&!(typeof n==`string`&&Dn.has(n)))return`${t}.visibility is invalid`;i.visibility=n}if(e.displayOrder!==void 0){let n=e.displayOrder;if(n!==null&&!(typeof n==`number`&&Number.isFinite(n)))return`${t}.displayOrder is invalid`;i.displayOrder=n}if(e.locked!==void 0){if(e.locked!==null&&typeof e.locked!=`boolean`)return`${t}.locked is invalid`;i.locked=e.locked}return i}function An(e){if(!Y(e)||e.version!==1)return`layout must be an object with version 1`;for(let t of[`sectionOrder`,`hidden`])if(e[t]!==void 0&&!X(e[t]))return`layout.${t} must be a list of strings`;for(let t of[`itemOrder`,`moved`,`panels`])if(e[t]!==void 0&&!Y(e[t]))return`layout.${t} must be an object`;let t=e.itemOrder;if(Y(t)){for(let[e,n]of Object.entries(t))if(e===`__proto__`||!X(n))return`layout.itemOrder.${e} must be a list of strings`}let n=e.moved;if(Y(n)){for(let[e,t]of Object.entries(n))if(e===`__proto__`||typeof t!=`string`)return`layout.moved.${e} must be a string`}return e}function jn(e,t={}){if(!Y(e))return J(`This is not a cookbook: expected a JSON object.`);if(e.$schema!==void 0&&e.$schema!==`https://s-m-r-t.dev/schemas/cookbook/v1.json`&&e.$schema!==`https://s-m-r-t.dev/schemas/blueprint/v1.json`)return J(`This is not a cookbook: its "$schema" is not a cookbook schema this planner knows.`);let{version:n}=e;if(n===void 0)return J(`This is not a cookbook: it has no "version".`);if(typeof n!=`number`||!Number.isInteger(n))return J(`The cookbook "version" must be a whole number.`);if(n>1)return J(`This cookbook is version ${n}, newer than this planner understands (1). Update the planner or re-export it.`);if(n!==1)return J(`Cookbook version ${n} is not supported (this planner reads version 1).`);if(!X(e.recipes))return J(`The cookbook "recipes" must be a list of recipe ids.`);let r=e.recipes.filter(e=>!D.has(e)),i=[...new Set([...ke(e.recipes.filter(e=>D.has(e)),D),...r])].sort(),a=[];if(e.features!==void 0){if(!X(e.features))return J(`The cookbook "features" must be a list of model names.`);let t=new Set;for(let n of e.features){if(t.has(n))return J(`The cookbook lists the feature ${n} more than once.`);t.add(n)}a=[...e.features].sort()}let o=new Set([...i.flatMap(e=>D.get(e)?.models??[]),...a]);if(!Array.isArray(e.policies))return J(`The cookbook "policies" must be a list.`);let s=[];for(let[t,n]of e.policies.entries()){let e=kn(n,`policies[${t}]`);if(typeof e==`string`)return J(`Invalid cookbook: ${e}.`);(o.has(e.objectRef)||De(e))&&s.push(e)}let c;if(e.exposure!==void 0){if(!Y(e.exposure))return J(`The cookbook "exposure" must be an object.`);let t=[];for(let[n,r]of Object.entries(e.exposure)){if(!X(r)||!r.every(e=>On.has(e)))return J(`Invalid cookbook: exposure for ${n} must list api, mcp or cli.`);r.length&&o.has(n)&&t.push([n,[...r]])}c=Object.fromEntries(t)}let l;if(e.layout!==void 0){let t=An(e.layout);if(typeof t==`string`)return J(`Invalid cookbook: ${t}.`);l=En(Tn(t))}let u;if(e.theme!==void 0){let n=Sn(e.theme);if(n.ok)u=n.theme;else if(!t.dropUnknownRecipes)return J(n.error)}let d,f=[];if(e.overviews!==void 0){if(t.overviews){let n=t.overviews(e.overviews,l);if(!n)return J(`The cookbook "overviews" must be an object.`);d=n.overviews,f=n.dropped}else{if(!Y(e.overviews))return J(`The cookbook "overviews" must be an object.`);Object.keys(e.overviews).length&&(f=[`Page customisations (overviews) are not kept by this host and were dropped.`])}}let p={$schema:q,version:1,recipes:i,features:a,policies:s};for(let t of[`name`,`description`]){let n=e[t];if(n!==void 0){if(typeof n!=`string`)return J(`The cookbook "${t}" must be a string.`);n.trim()&&(p[t]=n.trim())}}return c&&Object.keys(c).length&&(p.exposure=c),l&&(p.layout=l),u&&(p.theme=u),d&&Object.keys(d).length&&(p.overviews=d),f.length?{ok:!0,cookbook:p,dropped:f}:{ok:!0,cookbook:p}}var Mn=e=>({ok:!1,error:e});function Nn(e,t={}){return jn(e,{...t,overviews:dn})}function Pn(e,t={}){let n;try{n=JSON.parse(e)}catch{return Mn(`This file is not valid JSON.`)}try{return Nn(n,t)}catch{return Mn(`This file is not a valid cookbook.`)}}var Z=`smrt-planner:cookbook-doc:v1`,Fn=`smrt-planner:blueprint:v1`,In=`smrt-planner:cookbook-doc:unreadable`;function Ln(){try{return globalThis.localStorage??null}catch{return null}}function Rn(e){if(!e)return{status:`unavailable`};let t;try{t=e.getItem(Z)}catch{return{status:`unavailable`}}let n=null;try{n=e.getItem(Fn)}catch{}let r=t===null&&n!==null,i=r?n:t;if(i===null)return{status:`empty`};let a=Pn(i,{dropUnknownRecipes:!0});if(a.ok)return r&&Q(e,Z,JSON.stringify(a.cookbook)),{status:`loaded`,cookbook:a.cookbook,previousKept:n!==null,...a.dropped?{dropped:a.dropped}:{}};t=i;let o=Q(e,In,t);return{status:`unreadable`,reason:a.error,keptAside:o}}function Q(e,t,n){if(!e)return!1;try{return e.setItem(t,n),!0}catch{return!1}}function zn(e,t){if(!e)return!1;try{return e.removeItem(t),!0}catch{return!1}}function Bn(e,t){return Q(e,Z,JSON.stringify(t))}function Vn(e,t={}){let n={$schema:q,version:1,...Ne(e)};t.name&&(n.name=t.name),t.description&&(n.description=t.description),t.layout&&(n.layout=t.layout);let r=Cn(t.theme);r&&(n.theme=r);let i=t.overviews??{},a=Object.keys(i).sort();return a.length&&(n.overviews=Object.fromEntries(a.map(e=>[e,i[e]]))),n}var Hn=new Set([`basic`,`advanced`,`hidden`]),Un=new Set([`api`,`mcp`,`cli`]);function Wn(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t+`=`.repeat((4-t.length%4)%4));return new TextDecoder().decode(Uint8Array.from(n,e=>e.charCodeAt(0)))}function Gn(e){let t=new URLSearchParams(e);return t.has(`r`)||t.has(`o`)}function Kn(e){let t={rows:[],narrowed:{}};if(!e)return t;let n;try{n=JSON.parse(Wn(e))}catch{return t}if(!n||typeof n!=`object`)return t;let r=[];for(let[e,t]of Object.entries(n.r??{}))if(t&&typeof t==`object`)for(let[n,i]of Object.entries(t)){if(!i||typeof i!=`object`)continue;let t={objectRef:e,fieldName:n,scopeType:`app`};typeof i.v==`string`&&Hn.has(i.v)&&(t.visibility=i.v),typeof i.l==`string`&&(t.label=i.l),(typeof i.h==`string`||i.h===null)&&(t.help=i.h),(typeof i.d==`string`||i.d===null)&&(t.defaultValue=i.d),typeof i.o==`number`&&Number.isFinite(i.o)&&(t.displayOrder=i.o),typeof i.k==`boolean`&&(t.locked=i.k),r.push(t)}let i={};for(let[e,t]of Object.entries(n.x??{})){if(!Array.isArray(t))continue;let n=t.filter(e=>Un.has(e));n.length&&(i[e]=n)}return{rows:r,narrowed:i}}function qn(e){let t=new URLSearchParams(e),n=(t.get(`r`)??``).split(`,`).filter(Boolean),r=ke(Me(n,D),D),i=new Set(r.flatMap(e=>D.get(e)?.models??[])),{rows:a,narrowed:o}=Kn(t.get(`o`)??``),s={$schema:q,version:1,recipes:r,features:[],policies:a.filter(e=>i.has(e.objectRef))},c=Object.fromEntries(Object.entries(o).filter(([e])=>i.has(e)));return Object.keys(c).length&&(s.exposure=c),s}var Jn=`smrt-planner:shell`;function $(e){let t=Pe(e),n=e.policies.some(e=>e.defaultValue!==void 0&&De(e));s(Ae(e)||n?t.taxRate:void 0),o({pricesIncludeTax:t.pricesIncludeTax,taxRounding:t.taxRounding,currency:t.currency})}var Yn=new class{#e=r(0);get replacementGeneration(){return e(this.#e)}set replacementGeneration(e){i(this.#e,e,!0)}#t=r();get layout(){return e(this.#t)}set layout(e){i(this.#t,e,!0)}#n=r();get name(){return e(this.#n)}set name(e){i(this.#n,e,!0)}#r=r();get description(){return e(this.#r)}set description(e){i(this.#r,e,!0)}#i=r();get theme(){return e(this.#i)}set theme(e){i(this.#i,e,!0)}#a=r({});get overviews(){return e(this.#a)}set overviews(e){i(this.#a,e)}#o=r(`unknown`);get persist(){return e(this.#o)}set persist(e){i(this.#o,e,!0)}#s=r(!1);get loaded(){return e(this.#s)}set loaded(e){i(this.#s,e,!0)}hostManaged=!1;#c=r(``);get loadNotice(){return e(this.#c)}set loadNotice(e){i(this.#c,e,!0)}saveBlocked=!1;#l=r(!1);get keepLegacyUrl(){return e(this.#l)}set keepLegacyUrl(e){i(this.#l,e,!0)}replacedBeforeLoad=!1;previousKept=!1;storage=null;timer;snapshot(){return Vn(n(E.data),{layout:n(this.layout),theme:n(this.theme),overviews:n(this.overviews),name:this.name,description:this.description})}overview(e){return Object.hasOwn(this.overviews,e)?this.overviews[e]:null}setOverview(e,t){let n=Object.fromEntries(Object.entries(this.overviews).filter(([t])=>t!==e));t&&(n[e]=t),this.overviews=n}setLayout(e){this.layout=x(e)?void 0:e}apply(e){E.load(e),this.layout=e.layout,this.theme=e.theme,this.name=e.name,this.description=e.description,this.overviews={...e.overviews??{}},$(e)}get unavailableNotice(){let e=[...E.unavailableRecipes,...E.unavailableFeatures];if(!e.length)return``;let t=e.length;return`${t} ${t===1?`recipe`:`recipes`} in this cookbook ${t===1?`isn't`:`aren't`} available in this version: ${e.join(`, `)}. They are kept when you save or export.`}removeUnavailable(){E.removeUnavailable(),this.scheduleSave()}setTheme(e){this.theme=Cn(e)}settings(){return Pe(this.snapshot())}setSettings(e){let t=Oe(this.snapshot(),e);E.rows=t.policies.map(e=>({...e})),$(t)}replace(e){this.replacementGeneration++,this.apply(e),this.loaded||(this.replacedBeforeLoad=!0),this.saveBlocked=!1,this.keepLegacyUrl=!1}reset(e={}){this.replacementGeneration++,E.clear(),$({policies:[]}),this.layout=void 0,e.preserveTheme||(this.theme=void 0),this.name=void 0,this.description=void 0,this.overviews={},this.saveBlocked=!1,this.keepLegacyUrl=!1}importText(e){let t=Pn(e);return t.ok&&this.replace(t.cookbook),t}hydrate(e,t=u()){this.storage=t;let n=Rn(t);n.status===`loaded`&&(this.previousKept=n.previousKept),n.status===`loaded`&&!this.replacedBeforeLoad?(this.apply(n.cookbook),n.dropped?.length&&(this.loadNotice=`Some saved page customisations could not be used and were removed: ${n.dropped.join(` `)}`)):n.status===`unreadable`&&(this.saveBlocked=!n.keptAside,this.loadNotice=n.keptAside?`The saved cookbook could not be read (${n.reason}) and was kept aside; starting empty.`:`The saved cookbook could not be read (${n.reason}). Starting empty without overwriting it; import or reset to save again.`);let r=!1;if(Gn(e)&&(n.status===`loaded`&&!Q(t,`smrt-planner:cookbook-doc:backup`,JSON.stringify(n.cookbook))&&(this.saveBlocked=!0),this.apply(qn(e)),r=!0),this.persist=n.status===`unavailable`?`memory`:`unknown`,this.loaded=!0,r){let e=this.save();this.keepLegacyUrl=!e}return r}save(){if(clearTimeout(this.timer),this.timer=void 0,!this.loaded)return!1;if(this.hostManaged)return!0;if(this.saveBlocked)return this.persist=`memory`,!1;let e=Bn(this.storage,this.snapshot());return this.persist=e?`ok`:`memory`,e&&this.previousKept&&(this.previousKept=!zn(this.storage,Fn)),e&&(this.keepLegacyUrl=!1),e}scheduleSave(){this.loaded&&!this.hostManaged&&(clearTimeout(this.timer),this.timer=setTimeout(()=>this.save(),300))}flush(){this.timer!==void 0&&this.save()}};export{M as A,P as C,ot as D,ut as E,rt as O,dt as S,pt as T,bn as _,Ln as a,Xt as b,q as c,mn as d,pn as f,wn as g,fn as h,Z as i,nt as j,N as k,gn as l,G as m,Yn as n,Nn as o,_n as p,$ as r,Pn as s,Jn as t,vn as u,rn as v,ft as w,I as x,Zt as y};