@happyvertical/smrt-planner 0.57.20 → 0.57.22

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 (497) hide show
  1. package/app/404.html +23 -23
  2. package/app/_app/immutable/assets/{forms.BRdbPdvs.css → forms.Zvn0Ncy0.css} +1 -1
  3. package/app/_app/immutable/chunks/{CYCgPm88.js → 5-YKCHN7.js} +1 -1
  4. package/app/_app/immutable/chunks/{Qxx7HWld.js → 9L3dNfkK.js} +2 -2
  5. package/app/_app/immutable/chunks/{CmAUvRQx.js → B51JSFsA.js} +1 -1
  6. package/app/_app/immutable/chunks/{DTWraE40.js → BFedypji.js} +1 -1
  7. package/app/_app/immutable/chunks/{DC203NCO.js → BICNs2NW.js} +1 -1
  8. package/app/_app/immutable/chunks/{7y8ldvJX.js → BL0dvc-E.js} +2 -2
  9. package/app/_app/immutable/chunks/{1Uq1awDD.js → BYHjfE-b.js} +1 -1
  10. package/app/_app/immutable/chunks/{CpP-dbYB.js → B_5b8qm9.js} +1 -1
  11. package/app/_app/immutable/chunks/{Cw26E4UG.js → BgUZPKSg.js} +1 -1
  12. package/app/_app/immutable/chunks/Bp676OJt.js +16 -0
  13. package/app/_app/immutable/chunks/{YUSKx8_q.js → Bq8E3AWP.js} +1 -1
  14. package/app/_app/immutable/chunks/{BE4TZ3aw.js → BrQVKNc5.js} +1 -1
  15. package/app/_app/immutable/chunks/{BdMHVrP7.js → C3mDn9E2.js} +1 -1
  16. package/app/_app/immutable/chunks/{BL2JRgxi.js → C4I4WWc5.js} +1 -1
  17. package/app/_app/immutable/chunks/{DKgADWce.js → CVK-kBKK.js} +1 -1
  18. package/app/_app/immutable/chunks/{CgE1Gcro.js → CiJD6U6B.js} +1 -1
  19. package/app/_app/immutable/chunks/{Bns8l-x1.js → Ck9-sBAz.js} +1 -1
  20. package/app/_app/immutable/chunks/{agvanIM7.js → CoYEJZTu.js} +2 -2
  21. package/app/_app/immutable/chunks/{CM3HdjYi.js → CpAWPjqw.js} +1 -1
  22. package/app/_app/immutable/chunks/{DfD9dv_l.js → Cr83jqT-.js} +1 -1
  23. package/app/_app/immutable/chunks/{DADOPup4.js → D-1b-gEi.js} +1 -1
  24. package/app/_app/immutable/chunks/D0BNjQ-z.js +1 -0
  25. package/app/_app/immutable/chunks/{DDIQ8W6V.js → D7y5Y9SX.js} +1 -1
  26. package/app/_app/immutable/chunks/{DYS_WKPd.js → DFvPytLg.js} +1 -1
  27. package/app/_app/immutable/chunks/{CRGGx5Lw.js → DRhbTVht.js} +1 -1
  28. package/app/_app/immutable/chunks/{DNpuZXha.js → DoE4qF2w.js} +1 -1
  29. package/app/_app/immutable/chunks/{Bv5jGtB8.js → DptKR1hv.js} +1 -1
  30. package/app/_app/immutable/chunks/{D7WLtlpw.js → Dqi6L-Ji.js} +1 -1
  31. package/app/_app/immutable/chunks/{Cy7yT1On.js → Dwecp1Xp.js} +3 -3
  32. package/app/_app/immutable/chunks/{5I4x_KS6.js → Vm34uR1l.js} +1 -1
  33. package/app/_app/immutable/chunks/{B2aomX_k.js → icQ9pGib.js} +1 -1
  34. package/app/_app/immutable/chunks/{-2dfZP6X.js → ipYfj5yA.js} +1 -1
  35. package/app/_app/immutable/chunks/{juz5EBPL.js → m8swxdw-.js} +1 -1
  36. package/app/_app/immutable/chunks/{B1Pf2l_R.js → t7U3x8WE.js} +21 -21
  37. package/app/_app/immutable/chunks/yvBlchC2.js +1 -0
  38. package/app/_app/immutable/entry/{app.UfGUpLlK.js → app.DqAIxuYh.js} +2 -2
  39. package/app/_app/immutable/entry/start.CdmDI_QG.js +1 -0
  40. package/app/_app/immutable/nodes/{0.CVYFDYxr.js → 0.B4LUHb6K.js} +1 -1
  41. package/app/_app/immutable/nodes/{1.CJEHWdw8.js → 1.BZwnItEM.js} +1 -1
  42. package/app/_app/immutable/nodes/{10._eiewXMR.js → 10.B8vnhWxq.js} +1 -1
  43. package/app/_app/immutable/nodes/{11.Dp8fmXsX.js → 11.B_Zoe6Lm.js} +1 -1
  44. package/app/_app/immutable/nodes/{12.bKzQ9OLN.js → 12.02lwwcqY.js} +1 -1
  45. package/app/_app/immutable/nodes/{13.DaudqCzg.js → 13.D_8jSvfC.js} +1 -1
  46. package/app/_app/immutable/nodes/{14.ZMVp9EbO.js → 14.DcoM0yZX.js} +1 -1
  47. package/app/_app/immutable/nodes/{2.BEaYX5kW.js → 2.DJjy7kJ2.js} +14 -14
  48. package/app/_app/immutable/nodes/{3.XnNGal1u.js → 3.Bdv5CoAi.js} +1 -1
  49. package/app/_app/immutable/nodes/{4.CczBNlYL.js → 4.BWUGqlgv.js} +1 -1
  50. package/app/_app/immutable/nodes/{5.D0-S4wqa.js → 5.CmTC4N-e.js} +1 -1
  51. package/app/_app/immutable/nodes/{6.DiqKNjHf.js → 6.DTMFPeZB.js} +1 -1
  52. package/app/_app/immutable/nodes/{7.CzhUZRpM.js → 7.CJnQg2fm.js} +1 -1
  53. package/app/_app/immutable/nodes/{8.BwuGOj43.js → 8.B_O1hoke.js} +1 -1
  54. package/app/_app/immutable/nodes/{9.C9C4Mx7X.js → 9.B18ClKuw.js} +1 -1
  55. package/app/_app/version.json +1 -1
  56. package/app/advanced-styles/index.html +26 -26
  57. package/app/ai/index.html +29 -29
  58. package/app/blueprint/index.html +24 -24
  59. package/app/cookbook/index.html +24 -24
  60. package/app/index.html +32 -32
  61. package/app/m/ads/AdDeliveryTier/index.html +28 -28
  62. package/app/m/ads/AdEvent/index.html +28 -28
  63. package/app/m/ads/AdFormat/index.html +28 -28
  64. package/app/m/ads/AdGroup/index.html +28 -28
  65. package/app/m/ads/AdVariation/index.html +28 -28
  66. package/app/m/analytics/AnalyticsDataStream/index.html +28 -28
  67. package/app/m/analytics/AnalyticsEvent/index.html +28 -28
  68. package/app/m/analytics/AnalyticsProperty/index.html +28 -28
  69. package/app/m/analytics/AnalyticsReport/index.html +28 -28
  70. package/app/m/approvals/ApprovalEvent/index.html +28 -28
  71. package/app/m/approvals/ApprovalPolicy/index.html +28 -28
  72. package/app/m/approvals/ApprovalRequest/index.html +28 -28
  73. package/app/m/assets/Asset/attachments/index.html +29 -29
  74. package/app/m/assets/Asset/index.html +28 -28
  75. package/app/m/assets/AssetAssociation/index.html +28 -28
  76. package/app/m/assets/AssetMetafield/index.html +28 -28
  77. package/app/m/assets/AssetStatus/index.html +28 -28
  78. package/app/m/assets/AssetType/index.html +28 -28
  79. package/app/m/assets/Folder/index.html +28 -28
  80. package/app/m/chat/AgentSession/index.html +28 -28
  81. package/app/m/chat/ChatMessage/index.html +28 -28
  82. package/app/m/chat/ChatParticipant/index.html +28 -28
  83. package/app/m/chat/ChatReaction/index.html +28 -28
  84. package/app/m/chat/ChatRoom/index.html +28 -28
  85. package/app/m/chat/ChatThread/index.html +28 -28
  86. package/app/m/chat/VoiceGatewayTurn/index.html +28 -28
  87. package/app/m/chat/VoiceSession/index.html +28 -28
  88. package/app/m/commerce/Agreement/index.html +28 -28
  89. package/app/m/commerce/Cart/index.html +28 -28
  90. package/app/m/commerce/Contract/index.html +28 -28
  91. package/app/m/commerce/ContractLineItem/index.html +28 -28
  92. package/app/m/commerce/Customer/index.html +28 -28
  93. package/app/m/commerce/DocumentTax/index.html +28 -28
  94. package/app/m/commerce/Estimate/index.html +28 -28
  95. package/app/m/commerce/Fulfillment/index.html +28 -28
  96. package/app/m/commerce/FulfillmentLineItem/index.html +28 -28
  97. package/app/m/commerce/HistoricalCustomerFunds/index.html +28 -28
  98. package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +28 -28
  99. package/app/m/commerce/HistoricalSalesLine/index.html +28 -28
  100. package/app/m/commerce/Invoice/index.html +28 -28
  101. package/app/m/commerce/InvoiceLineItem/index.html +28 -28
  102. package/app/m/commerce/Lease/index.html +28 -28
  103. package/app/m/commerce/LicenseSale/index.html +28 -28
  104. package/app/m/commerce/Order/index.html +28 -28
  105. package/app/m/commerce/Payment/index.html +28 -28
  106. package/app/m/commerce/PaymentAllocation/index.html +28 -28
  107. package/app/m/commerce/PaymentInstrument/index.html +28 -28
  108. package/app/m/commerce/PaymentIntent/index.html +28 -28
  109. package/app/m/commerce/Payout/index.html +28 -28
  110. package/app/m/commerce/ProductionOrder/index.html +28 -28
  111. package/app/m/commerce/PurchaseContract/index.html +28 -28
  112. package/app/m/commerce/PurchaseOrder/index.html +28 -28
  113. package/app/m/commerce/SalesContract/index.html +28 -28
  114. package/app/m/commerce/SupplierQuote/index.html +28 -28
  115. package/app/m/commerce/TaxCode/index.html +28 -28
  116. package/app/m/commerce/TaxComponent/index.html +28 -28
  117. package/app/m/commerce/TaxSettings/index.html +28 -28
  118. package/app/m/commerce/TaxSummaryReport/index.html +28 -28
  119. package/app/m/commerce/TenantPaymentAccount/index.html +28 -28
  120. package/app/m/commerce/Vendor/index.html +28 -28
  121. package/app/m/commerce/WholesaleOrder/index.html +28 -28
  122. package/app/m/content/Content/index.html +28 -28
  123. package/app/m/content/ContentContribution/index.html +28 -28
  124. package/app/m/content/ContentContributionAttachment/index.html +28 -28
  125. package/app/m/content/ContentContributionRevision/index.html +28 -28
  126. package/app/m/content/ContentContributionType/index.html +28 -28
  127. package/app/m/content/ContentContributor/index.html +28 -28
  128. package/app/m/content/ContentCorrection/index.html +28 -28
  129. package/app/m/content/ContentFeedSource/index.html +28 -28
  130. package/app/m/content/ContentGovernanceAssignment/index.html +28 -28
  131. package/app/m/content/ContentGovernancePolicy/index.html +28 -28
  132. package/app/m/content/ContentGovernanceProfile/index.html +28 -28
  133. package/app/m/content/ContentReference/index.html +28 -28
  134. package/app/m/content/ContentReview/index.html +28 -28
  135. package/app/m/content/ContentVersion/index.html +28 -28
  136. package/app/m/events/Event/index.html +28 -28
  137. package/app/m/events/EventParticipant/index.html +28 -28
  138. package/app/m/events/EventSeries/index.html +28 -28
  139. package/app/m/events/EventType/index.html +28 -28
  140. package/app/m/expenses/Expense/index.html +28 -28
  141. package/app/m/facts/Fact/index.html +28 -28
  142. package/app/m/facts/FactContent/index.html +28 -28
  143. package/app/m/facts/FactEvidence/index.html +28 -28
  144. package/app/m/facts/FactSource/index.html +28 -28
  145. package/app/m/facts/FactSubject/index.html +28 -28
  146. package/app/m/facts/FactTag/index.html +28 -28
  147. package/app/m/fields/FieldPolicy/index.html +28 -28
  148. package/app/m/fields/FieldPolicySuggestion/index.html +28 -28
  149. package/app/m/fields/FieldUsageCounter/index.html +28 -28
  150. package/app/m/images/Image/index.html +28 -28
  151. package/app/m/inventory/InventoryLocation/index.html +28 -28
  152. package/app/m/inventory/Lot/index.html +28 -28
  153. package/app/m/inventory/LotCorrection/index.html +28 -28
  154. package/app/m/inventory/LotDocument/index.html +28 -28
  155. package/app/m/inventory/LotStockLevel/index.html +28 -28
  156. package/app/m/inventory/LotUsage/index.html +28 -28
  157. package/app/m/inventory/StockLevel/index.html +28 -28
  158. package/app/m/inventory/StockMovement/index.html +28 -28
  159. package/app/m/ledgers/Account/index.html +28 -28
  160. package/app/m/ledgers/Journal/index.html +28 -28
  161. package/app/m/ledgers/JournalEntry/index.html +28 -28
  162. package/app/m/ledgers/Ledger/index.html +28 -28
  163. package/app/m/manufacturing/Assembly/index.html +28 -28
  164. package/app/m/manufacturing/BillOfMaterials/index.html +28 -28
  165. package/app/m/manufacturing/BomLine/index.html +28 -28
  166. package/app/m/manufacturing/Operation/index.html +28 -28
  167. package/app/m/manufacturing/ProductionRun/index.html +28 -28
  168. package/app/m/manufacturing/ProductionRunCompletion/index.html +28 -28
  169. package/app/m/manufacturing/RoutingStep/index.html +28 -28
  170. package/app/m/marketing/Campaign/index.html +28 -28
  171. package/app/m/marketing/CampaignChannel/index.html +28 -28
  172. package/app/m/marketing/CampaignMetricSnapshot/index.html +28 -28
  173. package/app/m/messages/Account/index.html +28 -28
  174. package/app/m/messages/Attachment/index.html +28 -28
  175. package/app/m/messages/Blacklist/index.html +28 -28
  176. package/app/m/messages/Email/failed-sends/index.html +29 -29
  177. package/app/m/messages/Email/index.html +28 -28
  178. package/app/m/messages/Email/mailbox/index.html +29 -29
  179. package/app/m/messages/EmailAccount/index.html +28 -28
  180. package/app/m/messages/EmailAttachment/index.html +28 -28
  181. package/app/m/messages/EmailFolder/index.html +28 -28
  182. package/app/m/messages/Message/index.html +28 -28
  183. package/app/m/messages/MessagingEndpoint/index.html +28 -28
  184. package/app/m/messages/PersonaMessageRoute/index.html +28 -28
  185. package/app/m/messages/SlackAccount/index.html +28 -28
  186. package/app/m/messages/SlackMessage/index.html +28 -28
  187. package/app/m/messages/TelegramAccount/index.html +28 -28
  188. package/app/m/messages/Tweet/index.html +28 -28
  189. package/app/m/messages/TwitterAccount/index.html +28 -28
  190. package/app/m/messages/Whitelist/index.html +28 -28
  191. package/app/m/messages/ZulipAccount/index.html +28 -28
  192. package/app/m/places/Place/index.html +28 -28
  193. package/app/m/places/PlaceType/index.html +28 -28
  194. package/app/m/products/Category/index.html +28 -28
  195. package/app/m/products/Material/index.html +28 -28
  196. package/app/m/products/Product/index.html +28 -28
  197. package/app/m/products/Product/ingredients/index.html +29 -29
  198. package/app/m/products/ProductVariant/index.html +28 -28
  199. package/app/m/products/Sku/index.html +28 -28
  200. package/app/m/profiles/ApiKey/index.html +28 -28
  201. package/app/m/profiles/Bot/index.html +28 -28
  202. package/app/m/profiles/MagicLinkToken/index.html +28 -28
  203. package/app/m/profiles/NostrIdentity/index.html +28 -28
  204. package/app/m/profiles/OidcIdentity/index.html +28 -28
  205. package/app/m/profiles/Organization/index.html +28 -28
  206. package/app/m/profiles/Person/index.html +28 -28
  207. package/app/m/profiles/Profile/index.html +28 -28
  208. package/app/m/profiles/ProfileMetadata/index.html +28 -28
  209. package/app/m/profiles/ProfileMetafield/index.html +28 -28
  210. package/app/m/profiles/ProfileRelationship/index.html +28 -28
  211. package/app/m/profiles/ProfileRelationshipTerm/index.html +28 -28
  212. package/app/m/profiles/ProfileRelationshipType/index.html +28 -28
  213. package/app/m/profiles/ProfileType/index.html +28 -28
  214. package/app/m/projects/Comment/index.html +28 -28
  215. package/app/m/projects/Issue/index.html +28 -28
  216. package/app/m/projects/Label/index.html +28 -28
  217. package/app/m/projects/Project/index.html +28 -28
  218. package/app/m/projects/ProjectIntegration/index.html +28 -28
  219. package/app/m/projects/PullRequest/index.html +28 -28
  220. package/app/m/projects/Repository/index.html +28 -28
  221. package/app/m/properties/Property/index.html +28 -28
  222. package/app/m/properties/Zone/index.html +28 -28
  223. package/app/m/reports/RuntimeReport/index.html +28 -28
  224. package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +28 -28
  225. package/app/m/reports/SmrtReportLock/index.html +28 -28
  226. package/app/m/reports/SmrtReportRefreshTask/index.html +28 -28
  227. package/app/m/reports/SmrtReportRun/index.html +28 -28
  228. package/app/m/reports/SmrtReportSchedule/index.html +28 -28
  229. package/app/m/reports/SmrtReportWatermark/index.html +28 -28
  230. package/app/m/sales/Agreement/index.html +28 -28
  231. package/app/m/sales/AttributionException/index.html +28 -28
  232. package/app/m/sales/AttributionPolicy/index.html +28 -28
  233. package/app/m/sales/Commission/index.html +28 -28
  234. package/app/m/sales/CommissionAdjustment/index.html +28 -28
  235. package/app/m/sales/CommissionPayout/index.html +28 -28
  236. package/app/m/sales/CommissionPlan/index.html +28 -28
  237. package/app/m/sales/Earner/index.html +28 -28
  238. package/app/m/sales/EarnerSourceAttribution/index.html +28 -28
  239. package/app/m/sales/EarningEvent/index.html +28 -28
  240. package/app/m/sales/ExecutedAgreement/index.html +28 -28
  241. package/app/m/sales/Lead/index.html +28 -28
  242. package/app/m/sales/Opportunity/index.html +28 -28
  243. package/app/m/sales/OpportunityConversion/index.html +28 -28
  244. package/app/m/sales/PipelineDefinition/index.html +28 -28
  245. package/app/m/sales/PipelineStage/index.html +28 -28
  246. package/app/m/sales/Referral/index.html +28 -28
  247. package/app/m/sales/ReferralAgreement/index.html +28 -28
  248. package/app/m/sales/ReferralLink/index.html +28 -28
  249. package/app/m/sales/ReferralProgram/index.html +28 -28
  250. package/app/m/sales/ReferralTermSnapshot/index.html +28 -28
  251. package/app/m/sales/ReferralTouch/index.html +28 -28
  252. package/app/m/sales/Referrer/index.html +28 -28
  253. package/app/m/sales/SalesActivity/index.html +28 -28
  254. package/app/m/sales/SalesRepresentative/index.html +28 -28
  255. package/app/m/sites/Site/index.html +28 -28
  256. package/app/m/sites/SiteAgentBinding/index.html +28 -28
  257. package/app/m/social/OAuthState/index.html +28 -28
  258. package/app/m/social/SocialAccount/index.html +28 -28
  259. package/app/m/social/SocialPost/index.html +28 -28
  260. package/app/m/social/SocialPostAnalyticsSnapshot/index.html +28 -28
  261. package/app/m/subscriptions/BillingAdjustment/index.html +28 -28
  262. package/app/m/subscriptions/ClientCharge/index.html +28 -28
  263. package/app/m/subscriptions/CreditGrant/index.html +28 -28
  264. package/app/m/subscriptions/PricingRule/index.html +28 -28
  265. package/app/m/subscriptions/RetailCharge/index.html +28 -28
  266. package/app/m/subscriptions/SpendingPolicy/index.html +28 -28
  267. package/app/m/subscriptions/SubscriptionPlan/index.html +28 -28
  268. package/app/m/subscriptions/SubscriptionPlanVersion/index.html +28 -28
  269. package/app/m/subscriptions/TenantSubscription/index.html +28 -28
  270. package/app/m/subscriptions/TenantUsageMetric/index.html +28 -28
  271. package/app/m/support/ServiceTimeEntry/index.html +28 -28
  272. package/app/m/support/SupportAiRun/index.html +28 -28
  273. package/app/m/support/SupportAvailability/index.html +28 -28
  274. package/app/m/support/SupportCase/index.html +28 -28
  275. package/app/m/support/SupportCaseEvent/index.html +28 -28
  276. package/app/m/support/SupportChannelBinding/index.html +28 -28
  277. package/app/m/support/SupportCharge/index.html +28 -28
  278. package/app/m/support/SupportCompensation/index.html +28 -28
  279. package/app/m/support/SupportCompensationPlan/index.html +28 -28
  280. package/app/m/support/SupportEscalation/index.html +28 -28
  281. package/app/m/support/SupportInteraction/index.html +28 -28
  282. package/app/m/support/SupportPlan/index.html +28 -28
  283. package/app/m/support/SupportPolicy/index.html +28 -28
  284. package/app/m/support/SupportQualification/index.html +28 -28
  285. package/app/m/support/SupportServiceTarget/index.html +28 -28
  286. package/app/m/support/SupportSpecialist/index.html +28 -28
  287. package/app/m/support/SupportWorkLink/index.html +28 -28
  288. package/app/m/tags/Tag/index.html +28 -28
  289. package/app/m/tags/TagAlias/index.html +28 -28
  290. package/app/m/timesheets/AttendanceBreak/index.html +28 -28
  291. package/app/m/timesheets/AttendancePunch/index.html +28 -28
  292. package/app/m/timesheets/AttendanceSegment/index.html +28 -28
  293. package/app/m/timesheets/ServiceChargeSnapshot/index.html +28 -28
  294. package/app/m/timesheets/ServiceCompensationSnapshot/index.html +28 -28
  295. package/app/m/timesheets/ServiceTimeEntry/index.html +28 -28
  296. package/app/m/users/Group/index.html +28 -28
  297. package/app/m/users/GroupMember/index.html +28 -28
  298. package/app/m/users/GroupRole/index.html +28 -28
  299. package/app/m/users/Membership/index.html +28 -28
  300. package/app/m/users/MembershipOverride/index.html +28 -28
  301. package/app/m/users/Permission/index.html +28 -28
  302. package/app/m/users/Role/index.html +28 -28
  303. package/app/m/users/RolePermission/index.html +28 -28
  304. package/app/m/users/Session/index.html +28 -28
  305. package/app/m/users/Tenant/index.html +28 -28
  306. package/app/m/users/TenantIntegration/index.html +28 -28
  307. package/app/m/users/TenantPermissionOverride/index.html +28 -28
  308. package/app/m/users/User/index.html +28 -28
  309. package/app/m/video/Character/index.html +28 -28
  310. package/app/m/video/CharacterAsset/index.html +28 -28
  311. package/app/m/video/CompositeJob/index.html +28 -28
  312. package/app/m/video/Performer/index.html +28 -28
  313. package/app/m/video/PerformerAsset/index.html +28 -28
  314. package/app/m/video/Scene/index.html +28 -28
  315. package/app/m/video/SceneAsset/index.html +28 -28
  316. package/app/m/video/VideoComposition/index.html +28 -28
  317. package/app/m/video/VideoCompositionAsset/index.html +28 -28
  318. package/app/m/video/VideoSequence/index.html +28 -28
  319. package/app/m/video/VideoSequenceAsset/index.html +28 -28
  320. package/app/m/video/VideoShot/index.html +28 -28
  321. package/app/m/video/VideoShotAsset/index.html +28 -28
  322. package/app/m/video/VideoShotCharacter/index.html +28 -28
  323. package/app/m/video/VideoWorkflow/index.html +28 -28
  324. package/app/m/voice/VoiceOutput/index.html +28 -28
  325. package/app/m/voice/VoiceProfile/index.html +28 -28
  326. package/app/m/voice/VoiceSample/index.html +28 -28
  327. package/app/mcp.html +2 -2
  328. package/app/packages/ads/index.html +26 -26
  329. package/app/packages/analytics/index.html +26 -26
  330. package/app/packages/approvals/index.html +26 -26
  331. package/app/packages/assets/index.html +26 -26
  332. package/app/packages/chat/index.html +26 -26
  333. package/app/packages/comments/index.html +26 -26
  334. package/app/packages/commerce/index.html +26 -26
  335. package/app/packages/content/index.html +26 -26
  336. package/app/packages/events/index.html +26 -26
  337. package/app/packages/expenses/index.html +26 -26
  338. package/app/packages/facts/index.html +26 -26
  339. package/app/packages/fields/index.html +26 -26
  340. package/app/packages/human-resources/index.html +26 -26
  341. package/app/packages/images/index.html +26 -26
  342. package/app/packages/index.html +26 -26
  343. package/app/packages/ingestion/index.html +26 -26
  344. package/app/packages/inventory/index.html +26 -26
  345. package/app/packages/ledgers/index.html +26 -26
  346. package/app/packages/manufacturing/index.html +26 -26
  347. package/app/packages/marketing/index.html +26 -26
  348. package/app/packages/messages/index.html +26 -26
  349. package/app/packages/places/index.html +26 -26
  350. package/app/packages/preferences/index.html +26 -26
  351. package/app/packages/products/index.html +26 -26
  352. package/app/packages/profiles/index.html +26 -26
  353. package/app/packages/projects/index.html +26 -26
  354. package/app/packages/properties/index.html +26 -26
  355. package/app/packages/reports/index.html +26 -26
  356. package/app/packages/sales/index.html +26 -26
  357. package/app/packages/sites/index.html +26 -26
  358. package/app/packages/social/index.html +26 -26
  359. package/app/packages/subscriptions/index.html +26 -26
  360. package/app/packages/support/index.html +26 -26
  361. package/app/packages/tags/index.html +26 -26
  362. package/app/packages/timesheets/index.html +26 -26
  363. package/app/packages/users/index.html +27 -27
  364. package/app/packages/video/index.html +26 -26
  365. package/app/packages/voice/index.html +26 -26
  366. package/app/packages/webhooks/index.html +26 -26
  367. package/app/recipes/account-access/help/index.html +27 -27
  368. package/app/recipes/account-access/index.html +28 -28
  369. package/app/recipes/activity/help/index.html +26 -26
  370. package/app/recipes/activity/index.html +28 -28
  371. package/app/recipes/agreements/help/index.html +26 -26
  372. package/app/recipes/agreements/index.html +28 -28
  373. package/app/recipes/analytics.reports/help/index.html +26 -26
  374. package/app/recipes/analytics.reports/index.html +28 -28
  375. package/app/recipes/assets/help/index.html +26 -26
  376. package/app/recipes/assets/index.html +28 -28
  377. package/app/recipes/billing/help/index.html +26 -26
  378. package/app/recipes/billing/index.html +28 -28
  379. package/app/recipes/chat.assistant/help/index.html +26 -26
  380. package/app/recipes/chat.assistant/index.html +28 -28
  381. package/app/recipes/comments/help/index.html +26 -26
  382. package/app/recipes/comments/index.html +28 -28
  383. package/app/recipes/commerce.customers/help/index.html +26 -26
  384. package/app/recipes/commerce.customers/index.html +28 -28
  385. package/app/recipes/commerce.estimates/help/index.html +26 -26
  386. package/app/recipes/commerce.estimates/index.html +28 -28
  387. package/app/recipes/commerce.purchases/help/index.html +26 -26
  388. package/app/recipes/commerce.purchases/index.html +28 -28
  389. package/app/recipes/commerce.sales/help/index.html +26 -26
  390. package/app/recipes/commerce.sales/index.html +28 -28
  391. package/app/recipes/commerce.vendors/help/index.html +26 -26
  392. package/app/recipes/commerce.vendors/index.html +28 -28
  393. package/app/recipes/commerce.wholesale/help/index.html +26 -26
  394. package/app/recipes/commerce.wholesale/index.html +28 -28
  395. package/app/recipes/events.calendar/help/index.html +26 -26
  396. package/app/recipes/events.calendar/index.html +28 -28
  397. package/app/recipes/expenses.tracking/help/index.html +26 -26
  398. package/app/recipes/expenses.tracking/index.html +28 -28
  399. package/app/recipes/fields.form-customization/help/index.html +26 -26
  400. package/app/recipes/fields.form-customization/index.html +28 -28
  401. package/app/recipes/ingestion/help/index.html +26 -26
  402. package/app/recipes/ingestion/index.html +28 -28
  403. package/app/recipes/integrations/help/index.html +26 -26
  404. package/app/recipes/integrations/index.html +28 -28
  405. package/app/recipes/inventory.stock/help/index.html +26 -26
  406. package/app/recipes/inventory.stock/index.html +28 -28
  407. package/app/recipes/ledgers.bookkeeping/help/index.html +26 -26
  408. package/app/recipes/ledgers.bookkeeping/index.html +28 -28
  409. package/app/recipes/messages/help/index.html +26 -26
  410. package/app/recipes/messages/index.html +28 -28
  411. package/app/recipes/products/help/index.html +26 -26
  412. package/app/recipes/products/index.html +28 -28
  413. package/app/recipes/projects.tracker/help/index.html +26 -26
  414. package/app/recipes/projects.tracker/index.html +28 -28
  415. package/app/recipes/reports.materialized/help/index.html +26 -26
  416. package/app/recipes/reports.materialized/index.html +28 -28
  417. package/app/recipes/reports.runtime/help/index.html +26 -26
  418. package/app/recipes/reports.runtime/index.html +28 -28
  419. package/app/recipes/sales.pipeline/help/index.html +26 -26
  420. package/app/recipes/sales.pipeline/index.html +28 -28
  421. package/app/recipes/tags.taxonomy/help/index.html +26 -26
  422. package/app/recipes/tags.taxonomy/index.html +28 -28
  423. package/app/recipes/team-collaboration/help/index.html +26 -26
  424. package/app/recipes/team-collaboration/index.html +28 -28
  425. package/app/recipes/timesheets.time-entries/help/index.html +26 -26
  426. package/app/recipes/timesheets.time-entries/index.html +28 -28
  427. package/app/s/custom-accounts/index.html +24 -24
  428. package/app/s/custom-appointments/index.html +24 -24
  429. package/app/s/custom-billing/index.html +24 -24
  430. package/app/s/custom-bookings/index.html +24 -24
  431. package/app/s/custom-buying/index.html +24 -24
  432. package/app/s/custom-checkout/index.html +24 -24
  433. package/app/s/custom-classes/index.html +24 -24
  434. package/app/s/custom-clients/index.html +24 -24
  435. package/app/s/custom-events/index.html +24 -24
  436. package/app/s/custom-fleet/index.html +24 -24
  437. package/app/s/custom-gigs/index.html +24 -24
  438. package/app/s/custom-giving/index.html +24 -24
  439. package/app/s/custom-instruments/index.html +24 -24
  440. package/app/s/custom-jobs/index.html +24 -24
  441. package/app/s/custom-kitchen/index.html +24 -24
  442. package/app/s/custom-lessons/index.html +24 -24
  443. package/app/s/custom-material/index.html +24 -24
  444. package/app/s/custom-meetings/index.html +24 -24
  445. package/app/s/custom-members/index.html +24 -24
  446. package/app/s/custom-merch/index.html +24 -24
  447. package/app/s/custom-money/index.html +24 -24
  448. package/app/s/custom-paint/index.html +24 -24
  449. package/app/s/custom-parts/index.html +24 -24
  450. package/app/s/custom-rentals/index.html +24 -24
  451. package/app/s/custom-roastery/index.html +24 -24
  452. package/app/s/custom-schedule/index.html +24 -24
  453. package/app/s/custom-shelf/index.html +24 -24
  454. package/app/s/custom-shop/index.html +24 -24
  455. package/app/s/custom-students/index.html +24 -24
  456. package/app/s/custom-wholesale/index.html +24 -24
  457. package/app/s/custom-work/index.html +24 -24
  458. package/app/s/custom-yard/index.html +24 -24
  459. package/app/s/section-access-control/index.html +24 -24
  460. package/app/s/section-account-security/index.html +24 -24
  461. package/app/s/section-accounting/index.html +24 -24
  462. package/app/s/section-activity/index.html +24 -24
  463. package/app/s/section-agreements/index.html +24 -24
  464. package/app/s/section-analytics/index.html +24 -24
  465. package/app/s/section-assets/index.html +24 -24
  466. package/app/s/section-billing/index.html +24 -24
  467. package/app/s/section-calendar/index.html +24 -24
  468. package/app/s/section-catalog/index.html +24 -24
  469. package/app/s/section-chat.assistant/index.html +24 -24
  470. package/app/s/section-comments/index.html +24 -24
  471. package/app/s/section-fields.form-customization/index.html +24 -24
  472. package/app/s/section-ingestion/index.html +24 -24
  473. package/app/s/section-integrations/index.html +24 -24
  474. package/app/s/section-messages/index.html +24 -24
  475. package/app/s/section-more/index.html +24 -24
  476. package/app/s/section-operations/index.html +24 -24
  477. package/app/s/section-projects/index.html +24 -24
  478. package/app/s/section-purchasing/index.html +24 -24
  479. package/app/s/section-reports.materialized/index.html +24 -24
  480. package/app/s/section-reports.runtime/index.html +24 -24
  481. package/app/s/section-sales/index.html +24 -24
  482. package/app/s/section-taxonomy/index.html +24 -24
  483. package/app/s/section-team/index.html +24 -24
  484. package/app/s/section-work/index.html +24 -24
  485. package/dist/catalog/catalog.json +125 -38
  486. package/dist/library/state.svelte.d.ts +3 -0
  487. package/dist/library/state.svelte.d.ts.map +1 -1
  488. package/dist/library/state.svelte.js +8 -0
  489. package/dist/planner/PlannerLifecycle.svelte +9 -0
  490. package/dist/planner/PlannerLifecycle.svelte.d.ts.map +1 -1
  491. package/dist/smrt-version.d.ts +1 -1
  492. package/dist/smrt-version.js +1 -1
  493. package/package.json +54 -54
  494. package/app/_app/immutable/chunks/CLySd19b.js +0 -16
  495. package/app/_app/immutable/chunks/CeUbBJTD.js +0 -1
  496. package/app/_app/immutable/chunks/DYku8Hqx.js +0 -1
  497. package/app/_app/immutable/entry/start.BAb-NXu1.js +0 -1
@@ -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"./B1Pf2l_R.js";import{n as R}from"./DK8Blf1Y.js";import{w as te,y as z}from"./Cy7yT1On.js";import{t as B}from"./B2aomX_k.js";import"./Bns8l-x1.js";import"./-2dfZP6X.js";import{b as V,i as H}from"./Qxx7HWld.js";import{D as ne,R as U,z as W}from"./DDIQ8W6V.js";import{b as G,t as K,tt as q}from"./CLySd19b.js";import{a as J,c as Y,d as re,f as X,h as ie,l as ae,n as oe,p as Z,s as se}from"./5I4x_KS6.js";import{n as ce,t as le}from"./BdMHVrP7.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`?W(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`?W(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"./DptKR1hv.js";import{a as M,t as ee}from"./Bq8E3AWP.js";import{Ot as N,Tt as P,bt as F,jt as I,x as L}from"./t7U3x8WE.js";import{n as R}from"./DK8Blf1Y.js";import{w as te,y as z}from"./Dwecp1Xp.js";import{t as B}from"./icQ9pGib.js";import"./Ck9-sBAz.js";import"./ipYfj5yA.js";import{b as V,i as H}from"./9L3dNfkK.js";import{D as ne,R as U,z as W}from"./D7y5Y9SX.js";import{b as G,t as K,tt as q}from"./Bp676OJt.js";import{a as J,c as Y,d as re,f as X,h as ie,l as ae,n as oe,p as Z,s as se}from"./Vm34uR1l.js";import{n as ce,t as le}from"./C3mDn9E2.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`?W(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`?W(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 U(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??``,W=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}):[]),G=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),K=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:``),q=e=>e.type===`integer`||e.type===`decimal`,J=n(()=>e(j).map(e=>({value:e.id,label:e.label})));var Y=gt(),re=y(Y),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(J)},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(J),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(W),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(W).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)},[()=>q(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)},[()=>q(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(K))),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`);ne(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(G)}})}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(G)&&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(re,t=>{e(A)?_.result.rows.length===0?t(ie,1):t(ae,-1):t(X)}),a(Y),D(()=>O(Y,`data-variant`,v())),p(o,Y),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),W=null;_(()=>{let t=o.client,n=o.id;e(z);let r=!0;return W!==n&&k(M,null),W=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 G=n(()=>e(M)?l().find(t=>t.id===e(M)?.sourceId):void 0),K=n(()=>e(M)?Ke(e(M).spec,{t:E,locale:b(),currency:S(),source:e(G),columns:e(P)?.columns}):null),q=n(()=>e(M)?f()(e(M).createdByUserId):void 0),J=n(()=>{if(!e(M))return``;let t=e(M).savedAt?Qe(e(M).savedAt,b()):``;return e(q)&&t?E($[`reports.saved_by_at`],{author:e(q),time:t}):e(q)?E($[`reports.saved_by`],{author:e(q)}):t?E($[`reports.saved_at`],{time:t}):``}),Y=n(()=>e(P)?.ranAt?E($[`reports.ran_at`],{time:Qe(e(P).ranAt,b(),void 0,E($[`reports.just_now`]))}):``),re=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(re)&&!e(F)?[{id:`rerun`,label:E($[`reports.rerun`]),disabled:e(L),onselect:()=>{A(z)}}]:[],...e(M)?.canArchive&&!e(re)?[{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(re)&&t(pe)}),a(le);var me=x(le,2),he=t=>{var n=Ot(),r=C(n,!0);D(()=>s(r,e(K).line)),p(t,n)};t(me,t=>{e(K)&&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(re)?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(K).period.range),s(u,` · ${e(K).period.field??``}`)},[()=>E($[`reports.period`])]),p(t,n)};t(_,t=>{e(K).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(K).filters.join(`; `)]),p(t,n)};t(A,t=>{e(K).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(K).having.join(`; `)]),p(t,n)};t(M,t=>{e(K).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(J),e(Y)].filter(Boolean).join(` · `)]),p(t,n)};t(N,t=>{(e(J)||e(Y))&&t(P)}),a(r),D((t,n,i,a,o,l)=>{O(r,`aria-label`,t),s(c,n),s(u,e(K).source),s(m,i),s(g,a),s(w,o),s(k,l)},[()=>E($[`reports.details`]),()=>E($[`reports.source`]),()=>E($[`reports.groupings`]),()=>e(K).groupings||E($[`reports.none`]),()=>E($[`reports.measures`]),()=>e(K).measures.join(`, `)]),p(n,r)};t(i,t=>{e(K)&&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?U(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),W=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(W)});var G=x(H,2),K=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(G,e=>{m().length&&e(K)}),a(B);var q=x(B,2),J=C(q,!0),Y=x(q,2),re=y(Y),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);ne(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(re,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(Y);var Z=x(Y,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(J,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({})),W=g(!1),G=g(null),K=g(0),J=g(null),Y=g(null),re=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(G,null),k(J,null),k(W,!!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(G,Oe(e),!0)}).finally(()=>{i===X&&k(W,!1)}),()=>{++X}});async function ae(t,n){if(!o.client||e(J)||!t.canArchive)return;let r=X;k(J,t.id,!0),k(G,null);try{await o.client.archive(t.id,n),r===X&&k(K,w(()=>e(K))+1)}catch(e){r===X&&k(G,Oe(e),!0)}finally{r===X&&k(J,null),k(Y,null)}}function oe(t){return t.canArchive?t.status===`archived`?[{id:`restore`,label:I($[`reports.restore`]),disabled:e(J)!==null,onselect:()=>void ae(t,!1)}]:[{id:`archive`,label:I($[`reports.archive`]),disabled:e(J)!==null,onselect:()=>{k(Y,t,!0)}}]:[]}let Z=g(null);function se(){o.onnewreport?o.onnewreport():k(re,!(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(re)&&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(G)])]),p(t,n)};t(b,t=>{e(G)&&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`);q(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(W)?t(j):e(V).length===0&&!e(G)?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(Y)!==null),r=n(()=>I($[`reports.archive_confirm_title`],{title:e(Y)?.title??``})),i=n(()=>I($[`reports.archive_confirm`])),a=n(()=>I($[`reports.archive`])),o=n(()=>I($[`reports.cancel`])),s=n(()=>e(J)!==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(Y)&&void ae(e(Y),!0),oncancel:()=>k(Y,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 re(n,a,{sources:r})}async function r(r,i=``){let a=J(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(Y(n,e).fields):[]}function u(){let e=t();return e.map(t=>{let n=Y(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:G,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};
@@ -1 +1 @@
1
- import{$ as e,Ct as t,Dt as n,Ot as r,a as i}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{n as a}from"./Bv5jGtB8.js";import{t as o}from"./CUyVrfsu.js";function s(s,c){r(c,!0);let l=i(c,`dismissible`,3,!1),u=i(c,`class`,3,``),d=o(),f=t(()=>d.isAILoading),p=t(()=>d.aiLoading),m=t(()=>c.show??e(f));function h(e){switch(e){case`checking`:return`Checking AI capabilities...`;case`downloading`:return`Downloading AI models...`;case`initializing`:return`Initializing AI...`;case`ready`:return`AI Ready`;case`error`:return`Error loading AI`;default:return`Loading...`}}let g=t(()=>c.message??h(e(p).phase)),_=t(()=>e(p).overallProgress),v=t(()=>e(p).loaded),y=t(()=>e(p).error);a(s,{get show(){return e(m)},get message(){return e(g)},get progress(){return e(_)},get items(){return e(v)},get error(){return e(y)},get dismissible(){return l()},get class(){return u()},get ondismiss(){return c.ondismiss}}),n()}export{s as default};
1
+ import{$ as e,Ct as t,Dt as n,Ot as r,a as i}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{n as a}from"./DptKR1hv.js";import{t as o}from"./CUyVrfsu.js";function s(s,c){r(c,!0);let l=i(c,`dismissible`,3,!1),u=i(c,`class`,3,``),d=o(),f=t(()=>d.isAILoading),p=t(()=>d.aiLoading),m=t(()=>c.show??e(f));function h(e){switch(e){case`checking`:return`Checking AI capabilities...`;case`downloading`:return`Downloading AI models...`;case`initializing`:return`Initializing AI...`;case`ready`:return`AI Ready`;case`error`:return`Error loading AI`;default:return`Loading...`}}let g=t(()=>c.message??h(e(p).phase)),_=t(()=>e(p).overallProgress),v=t(()=>e(p).loaded),y=t(()=>e(p).error);a(s,{get show(){return e(m)},get message(){return e(g)},get progress(){return e(_)},get items(){return e(v)},get error(){return e(y)},get dismissible(){return l()},get class(){return u()},get ondismiss(){return c.ondismiss}}),n()}export{s as default};
@@ -1,2 +1,2 @@
1
- import{$ as e,B as t,Ct as n,Dt as r,Ft as i,G as a,H as o,L as s,Ot as c,Pt as l,U as u,ft as d,ht as f,mt as p,pt as m,st as h}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{kt as g}from"./B1Pf2l_R.js";var _=a(`<li><code class="svelte-kxkftj"><b> </b> </code></li>`),v=a(`<li class="none svelte-kxkftj">None</li>`),y=a(`<li><code class="svelte-kxkftj"> </code></li>`),b=a(`<mark class="svelte-kxkftj">AI</mark>`),x=a(`<li><code class="svelte-kxkftj"> </code> <!></li>`),S=a(`<article class="svelte-kxkftj"><h3 class="svelte-kxkftj"> </h3> <div class="grid svelte-kxkftj"><div><h4 class="svelte-kxkftj">REST routes <span class="svelte-kxkftj"> </span></h4> <ul class="svelte-kxkftj"></ul></div> <div><h4 class="svelte-kxkftj">MCP tools <span class="svelte-kxkftj"> </span></h4> <ul class="svelte-kxkftj"></ul></div> <div><h4 class="svelte-kxkftj">CLI commands <span class="svelte-kxkftj"> </span></h4> <ul class="svelte-kxkftj"></ul></div> <div><h4 class="svelte-kxkftj">Methods <span class="svelte-kxkftj"> </span> AI-callable</h4> <ul class="svelte-kxkftj"></ul></div></div></article>`),C=a(`<p class="svelte-kxkftj">This app exposes no generated REST, MCP or CLI surface.</p>`),w=a(`<p class="lede svelte-kxkftj">For connecting other software or an AI assistant to this app. All of it is
1
+ import{$ as e,B as t,Ct as n,Dt as r,Ft as i,G as a,H as o,L as s,Ot as c,Pt as l,U as u,ft as d,ht as f,mt as p,pt as m,st as h}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{kt as g}from"./t7U3x8WE.js";var _=a(`<li><code class="svelte-kxkftj"><b> </b> </code></li>`),v=a(`<li class="none svelte-kxkftj">None</li>`),y=a(`<li><code class="svelte-kxkftj"> </code></li>`),b=a(`<mark class="svelte-kxkftj">AI</mark>`),x=a(`<li><code class="svelte-kxkftj"> </code> <!></li>`),S=a(`<article class="svelte-kxkftj"><h3 class="svelte-kxkftj"> </h3> <div class="grid svelte-kxkftj"><div><h4 class="svelte-kxkftj">REST routes <span class="svelte-kxkftj"> </span></h4> <ul class="svelte-kxkftj"></ul></div> <div><h4 class="svelte-kxkftj">MCP tools <span class="svelte-kxkftj"> </span></h4> <ul class="svelte-kxkftj"></ul></div> <div><h4 class="svelte-kxkftj">CLI commands <span class="svelte-kxkftj"> </span></h4> <ul class="svelte-kxkftj"></ul></div> <div><h4 class="svelte-kxkftj">Methods <span class="svelte-kxkftj"> </span> AI-callable</h4> <ul class="svelte-kxkftj"></ul></div></div></article>`),C=a(`<p class="svelte-kxkftj">This app exposes no generated REST, MCP or CLI surface.</p>`),w=a(`<p class="lede svelte-kxkftj">For connecting other software or an AI assistant to this app. All of it is
2
2
  generated by s-m-r-t from the model; none of it was written by hand.</p> <!>`,1),T=a(`<section class="panel svelte-kxkftj" aria-label="Connect other tools"><!></section>`);function E(a,E){c(E,!0);let D=n(()=>E.models.filter(e=>e.exposed));var O=T(),k=d(O);g(k,{title:`Connect other tools`,children:(n,r)=>{var a=w(),c=f(m(a),2);s(c,17,()=>e(D),e=>e.id,(n,r)=>{var a=S(),c=d(a),m=p(c,!0),g=f(c,2),C=d(g),w=d(C),T=f(d(w)),E=p(T,!0);i(w);var D=f(w,2);s(D,21,()=>e(r).rest,e=>e.method+e.path,(t,n)=>{var r=_(),a=d(r),s=d(a),c=p(s,!0),l=f(s);i(a),i(r),h(()=>{o(c,e(n).method),o(l,` /api${e(n).path??``}`)}),u(t,r)},e=>{var t=v();u(e,t)}),i(D),i(C);var O=f(C,2),k=d(O),A=f(d(k)),j=p(A,!0);i(k);var M=f(k,2);s(M,21,()=>e(r).mcp,e=>e.name,(t,n)=>{var r=y(),a=d(r),s=p(a,!0);i(r),h(()=>o(s,e(n).name)),u(t,r)},e=>{var t=v();u(e,t)}),i(M),i(O);var N=f(O,2),P=d(N),F=f(d(P)),I=p(F,!0);i(P);var L=f(P,2);s(L,21,()=>e(r).cli,e=>e.name,(t,n)=>{var r=y(),a=d(r),s=p(a,!0);i(r),h(()=>o(s,e(n).name)),u(t,r)},e=>{var t=v();u(e,t)}),i(L),i(N);var R=f(N,2),z=d(R),B=f(d(z)),V=p(B,!0);l(),i(z);var H=f(z,2);s(H,21,()=>e(r).methods,e=>e.name,(n,r)=>{var a=x(),s=d(a),c=p(s),l=f(s,2),m=e=>{var t=b();u(e,t)};t(l,t=>{e(r).aiCallable&&t(m)}),i(a),h(t=>o(c,`${e(r).name??``}(${t??``})`),[()=>e(r).parameters.join(`, `)]),u(n,a)},e=>{var t=v();u(e,t)}),i(H),i(R),i(g),i(a),h(t=>{o(m,e(r).name),o(E,e(r).rest.length),o(j,e(r).mcp.length),o(I,e(r).cli.length),o(V,t)},[()=>e(r).methods.filter(e=>e.aiCallable).length]),u(n,a)},e=>{var t=C();u(e,t)}),u(n,a)},$$slots:{default:!0}}),i(O),u(a,O),r()}export{E as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CRGGx5Lw.js","./DG3qFFTE.js","./COiEfhsA.js","./xihTtKlq.js","./B1Pf2l_R.js","./YUSKx8_q.js","./DK8Blf1Y.js","../assets/currency-metadata.ksbBA8-C.css","../assets/app.BHwMQ9Zv.css","./CmAUvRQx.js","./Bv5jGtB8.js","../assets/feedback.qFktqYFY.css","./Cy7yT1On.js","./BaNbYf_w.js","./B2aomX_k.js","../assets/SegmentedControl.DMqHG5fn.css","./DIE02RSm.js","../assets/webmcp-ui-context.hO24Ni5w.css","./-2dfZP6X.js","../assets/data.CVlX_W0i.css","./CUyVrfsu.js","./Qxx7HWld.js","../assets/forms.BRdbPdvs.css","./BYcBM-fh.js","../assets/AppShell.Y0ysizZK.css","./Bns8l-x1.js","../assets/workspace.C40zM0Mb.css","./DDIQ8W6V.js","./CLySd19b.js","../assets/state.C0UZEhxS.css","../assets/labels.Dxa6EyRI.css","./5I4x_KS6.js","./CgE1Gcro.js","./BdMHVrP7.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"./B1Pf2l_R.js";import{v as x}from"./Cy7yT1On.js";import"./B2aomX_k.js";import"./DIE02RSm.js";import{u as S}from"./-2dfZP6X.js";import{A as ee,C,E as te,F as ne,G as re,I as ie,M as ae,N as oe,O as se,P as ce,T as le,U as ue,V as de,W as w,b as fe,h as pe,j as me,k as he,n as ge,q as _e,r as ve,w as ye}from"./DDIQ8W6V.js";import{B as be,D as xe,G as Se,H as Ce,J as we,K as Te,M as Ee,V as De,X as Oe,Y as ke,Z as Ae,a as je,b as T,c as Me,d as Ne,l as Pe,n as Fe,r as Ie,s as Le,t as E,v as Re,x as D,z as ze}from"./CLySd19b.js";function Be(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 Ve(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=Ve(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 He(e){return typeof e==`object`&&!!e&&`default`in e&&!!e.default}function Ue(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 He(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 He(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 We(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(Ue(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 Ge=[`identifier`,`status`,`date`,`party`,`total`,`money`];function Ke(e){for(let t of[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`])if(e.includes(t))return t}function qe(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 Ge)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:A(n,e),...Ke(t[n]??[])?{role:Ke(t[n]??[])}:{}}))}function Je(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:A(o,e)}),s&&d.push({key:s,label:A(s,e),role:`quantity`}),l&&d.push({key:l,label:A(l,e),role:`money`,summarize:!1}),u&&u!==l&&d.push({key:u,label:A(u,e),role:`money`}),d}function A(e,t){let n=t.fields[e];return n&&(n.type===`foreignKey`||n.type===`crossPackageRef`)&&/.[a-z]Id$/.test(e)?ce(e.slice(0,-2)):ce(e)}function Ye(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 Xe=[`text`,`integer`,`decimal`,`boolean`,`datetime`,`json`,`foreignKey`,`crossPackageRef`];function Ze(e){return Xe.includes(e)?e:`text`}var Qe=/(Date|^date|period(Start|End))$/;function $e(e,t){return t.type===`datetime`&&!t.system&&Qe.test(t.name)&&!e.fields.some(e=>e.name===`allDay`)?`date`:void 0}function et(e){return fe(e)[0]}function tt(e,t){let n=t.ui?{...t.ui}:void 0,r=c(t)?`money`:$e(e,t);return{type:Ze(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}:{},...et(e)===t.name?{display:!0}:{}}}function nt(e,t){return e.includes(`:`)?e:`${t.slice(0,t.lastIndexOf(`:`))}:${e}`}function rt(e,t){if(!t.related)return!1;let n=nt(t.related,e.id);return ke(p,n,h).some(t=>t.id===e.id)}function it(e){return e.fields.flatMap(t=>{if(t.type!==`foreignKey`&&t.type!==`crossPackageRef`||!t.related)return[];let n=m(nt(t.related,e.id));return n?[{field:t.name,kind:t.type===`crossPackageRef`?`crossPackageRef`:`foreignKey`,relatedCollection:n.model.collection,...rt(e,t)?{role:`items`}:{}}]:[]})}function j(e){let t=it(e);return{name:e.collection,objectRef:e.id,className:e.name,idField:`id`,fields:Object.fromEntries(e.fields.map(t=>[t.name,tt(e,t)])),...t.length?{relationships:t}:{}}}function at(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 ot(e,t){let n=new Set(t);for(let t of e)for(let e of t.models)n.add(e);return n}function st(e){return v(e.replace(/_?id$/i,``)||e)}function M(e,t,n){let r=Oe(e,t),i=Ae(e,t).filter(e=>e.model.exposed&&n.has(e.model.id)),a=new Set(ke(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=j(e.model),i=ie(n),s=[e.fk];return{model:e.model.id,field:e.fk,label:(o.get(e.model.id)??0)>1?`${Se(e.model.name,r)} (${st(e.fk).toLowerCase()})`:Se(e.model.name,r),kind:t,columns:t===`items`?Je(n,i,{exclude:s}):qe(n,i,{exclude:s,max:5}),...t===`items`&&`sortOrder`in n.fields?{sort:`sortOrder`}:{}}});for(let n of Te(e,t))s.push({model:n.model.id,field:n.fk,label:st(n.fk),kind:`reference`});return s}var ct=Symbol(`smrt-cookbook`);function lt(){return t(ct)}function ut(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 oe(n,i)}function dt(e){return e?async(t,n)=>{let r=ut(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}}:ut}var ft=new Set([`foreignKey`,`crossPackageRef`]);function N(e,t){return`/m/${e}/${t}/`}function pt(e,t,n,r=`view`){let i=`${N(e,t)}${encodeURIComponent(n)}/`;return r===`edit`?`${i}edit/`:i}function mt(e,t,n,r){return`${N(e,t)}?${encodeURIComponent(n)}=${encodeURIComponent(r)}`}function ht(e,t){let n=new URLSearchParams(e);for(let e of t.fields){if(!ft.has(e.type))continue;let t=n.get(e.name);if(t)return{field:e.name,equals:t}}}function gt(e){return e?.equals===void 0?``:`${encodeURIComponent(e.field)}=${encodeURIComponent(e.equals)}`}var P=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:null,_t=(e,t)=>e.fields.some(e=>e.name===t);function vt(e,t){let n=ie(j(e)),r=C(t,n);return Object.values(r).some(e=>P(e)!==null)?r:void 0}function yt(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}function bt(e,t,n){if(!yt(e,t)||![`subtotal`,`taxAmount`,`totalAmount`,`discountTotal`].every(t=>_t(e,t)))return;let r=P(t.subtotal),i=P(t.taxAmount),a=P(t.totalAmount),o=P(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 F=de();function I(e){let{source:t,href:n}=e;if(!t||!n)throw Error(`the planner widget context is missing`);return{source:t,href:n}}function L(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:N(t.pkg.id,t.model.name)}}var R=new Set([`foreignKey`,`crossPackageRef`]);function z(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||!R.has(s.type))throw Error(`${n.name} has no reference field ${o}`);return{field:o,id:i.id}}async function B(e,t,n){return n?e.listWhere(t,n.field,n.id):e.list(t)}function V(e,t,n){return e(n?mt(t.packageId,t.model.name,n.field,n.id):t.path)}var H=e=>typeof e==`number`&&Number.isFinite(e);async function xt(e,t){let{source:n,href:r}=I(t),i=L(e.model),{model:a}=i,o=z(e,t,a),s=await B(n,a,o),l=V(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(H),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 St(e,t){return H(e)&&H(t)?e-t:String(e??``).localeCompare(String(t??``))}var Ct=new Set([`createdAt`,`updatedAt`]),wt=[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`];function Tt(e=[]){return wt.find(t=>e.includes(t))}function Et(e,t,n,r){let i=j(e),a=r?[r]:[],o=ae(n),s=o.length?[]:pe(E.apply(e).fields.filter(t=>!a.includes(t.name)&&!xe(e,t))).filter(e=>!e.derive),c=o.length?o:s.map(e=>e.name),l=[...Je(i,t,{exclude:a}),...qe(i,t,{exclude:a,max:c.length+8})];return c.map(n=>{let r=e.fields.find(e=>e.name===n);if(!r)throw Error(`${e.name} has no field ${n}`);let i=l.find(e=>e.key===n),a=s.find(e=>e.name===n)?.label;if(i)return a?{...i,label:a}:i;let o=Tt(t[n]);return{key:n,label:a??(R.has(r.type)?v(n.replace(/Id$/,``)):v(n)),...o?{role:o}:{}}})}var Dt=new Set([`money`,`quantity`]);function Ot(e,t){let n={};for(let r of e)(r.summarize??Dt.has(r.role))&&(n[r.key]=t.reduce((e,t)=>{let n=t[r.key];return H(n)?e+n:e},0));return n}function kt(e,t){let n=ne(j(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 At(e,t){let{source:n,href:r}=I(t),i=L(e.model),{model:a}=i,o=z(e,t,a),s=await B(n,a,o);if(typeof e.sort==`string`&&e.sort){if(!a.fields.find(t=>t.name===e.sort)&&!Ct.has(e.sort))throw Error(`${a.name} has no field ${e.sort}`);let t=s.some(t=>t[e.sort]!==void 0)?e.sort:W(a)?.name;if(t){let n=e.direction===`asc`?1:-1;s=[...s].sort((e,r)=>n*St(e[t],r[t]))}}let c=Et(a,ie(j(a)),e.columns,o?.field),l=H(e.limit)?e.limit:5,u=s.slice(0,l),d=a.fields.filter(e=>R.has(e.type)&&c.some(t=>t.key===e.name)),f=await ve(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=Ot(c,s),h=!we(a);return{rows:await Promise.all(u.map(async e=>({id:String(e.id),title:await ge(n,a,e,0,o?.field),...h?{href:r(pt(i.packageId,a.name,String(e.id)))}:{},cells:p(e)}))),...e.summaries===!1?{}:{total:s.length},...h?{href:V(r,i,o)}:{},columns:c,currency:kt(a,s),...Object.keys(m).length?{summaries:m}:{}}}var jt={"7d":7,"30d":30,"90d":90,"12m":365,all:null},U=864e5;function Mt(e){return e===`7d`||e===`30d`?`day`:e===`90d`?`week`:`month`}function Nt(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*U:r}function Pt(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)*U}function Ft(e,t){let n=new Date(e).toISOString();return t===`month`?n.slice(0,7):n.slice(0,10)}var It=e=>e.type===`datetime`&&!e.system;function W(e){let t=e.fields.filter(It);return t.find(e=>/^(issue|order|start|created)/i.test(e.name))??t[0]}function Lt(e){if(typeof e!=`string`&&typeof e!=`number`)return;let t=new Date(e).getTime();return Number.isFinite(t)?t:void 0}async function Rt(e,t){let{source:n,href:r}=I(t),i=L(e.model),{model:a}=i,o=z(e,t,a),s=typeof e.groupBy==`string`?e.groupBy:``,l=s?a.fields.find(e=>e.name===s):W(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(jt,f))throw Error(`unknown period ${f}`);let p=jt[f],m=It(l),h=m?l:W(a),g=p!==null&&h?y-p*U:-1/0,_=await B(n,a,o);h&&g!==-1/0&&(_=_.filter(e=>{let t=Lt(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(!H(e))return;r.sum+=e}r.n+=1,v.set(e,r)},x=Mt(f);if(m){let e=g===-1/0?Math.min(..._.map(e=>Lt(e[l.name])??y),y):g;for(let t=Nt(e,x);t<=y;t=Pt(t,x))v.set(Ft(t,x),{key:t,sum:0,n:0});for(let e of _){let t=Lt(e[l.name]);if(t===void 0)continue;let n=Nt(t,x);b(Ft(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:V(r,i,o)}}te(F,{metric:xt,records:At,chart:Rt,shortcuts:async(e,t)=>t,shortcuts:dt()});function zt(e){let{relations:t,viewAllHref:n}=e;if(!t)throw Error(`the record page context is missing`);return{relations:t,records:At,viewAllHref:n}}async function Bt(e,t){let{source:n}=I(e),r=e.record;if(!r?.id)throw Error(`line items need a record`);let{model:i}=L(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=bt(i,a,o&&s?await n.listWhere(s,o.field,r.id):[]),l=c?void 0:vt(i,a),u=ne(j(i)),d=u?a[u]:void 0;return{...c?{storedTotals:c}:{},...l?{totals:l}:{},...typeof d==`string`&&d?{currency:d}:{}}}F.register(le((e,t)=>he(zt(t))(e,t))),F.register(ye(async(e,t)=>{let n=zt(t),{totals:r,storedTotals:i,currency:a}=await Bt(t,n.relations);return se({...n,totals:()=>r,storedTotals:()=>i,currency:()=>a})(e,t)}));var Vt=[`shortcuts`,`metric`,`records`,`chart`,`note`],Ht={"@happyvertical/smrt-reports/svelte":async()=>({SavedReportsWidget:(await a(async()=>{let{default:e}=await import(`./CRGGx5Lw.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})},Ut=async(e,t)=>{let n=Ht[e];if(n)return(await n())[t]},Wt=T.filter(e=>e.surfaces?.some(e=>e.kind===`widget`)),Gt=Wt.flatMap(e=>(e.surfaces??[]).flatMap(e=>e.kind===`widget`?[e.type]:[]));We(F,Wt,Ut);var Kt=new Map(ze(T).map(e=>[`section:${e.id}`,e])),qt=p.packages.flatMap(e=>e.models.map(e=>e.id)),Jt=[...Vt,...Gt];function Yt(e){let t=Kt.get(e);for(let e of t?.recipes??[]){let t=Re(e)[0];if(t)return{id:t.model.id,name:v(t.model.name)}}}function Xt(e,t){let n=Be(Kt.get(e)?.recipes[0]),r=Yt(e);return Ye({lead:r?{...r,plural:f(r.name)}:void 0,dataWidgets:!0,page:n&&Gt.includes(n.type)?n:void 0,override:t})}var Zt=new Map;function Qt(e,t){if(!_e.test(e))return;let n=Zt.get(e);return n||(n=w({id:e,allowed:Jt,models:qt,defaults:Xt(e)}),Zt.set(e,n)),t===void 0?n:w({...n,defaults:Xt(e,t)})}function $t(e,t){return`detail:${e}.${t}`}var en=new Map(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(t=>[me(t.id),{packageId:e.id,model:t}])));function tn(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}:en.get(e)}var nn=new Set(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(e=>e.id))),rn=new Map;function an(e){let t=rn.get(e);if(t)return t;let n=tn(e);if(!n)return;let r=M(p,n.model.id,nn),i=ee(j(n.model),r,{id:e,maxMetrics:2*r.length});return t=w({...i,maxWidgets:Math.max(i.maxWidgets??24,i.defaults.length+24)}),rn.set(e,t),t}function on(e,t){let n=an(e),r=tn(e);if(!n||!r)return;let i=M(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 sn(e,t){return e.startsWith(`detail:`)?an(e):Qt(e,t)}function cn(e,t){return Kt.has(e)||e===`section:${Ee.id}`?!0:e.startsWith(`detail:`)?tn(e)!==void 0:e.startsWith(`custom:`)&&_e.test(e)&&(t?.customSections??[]).some(t=>t.id===e)}var ln=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function un(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 dn(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 fn(e,t){let n=sn(e,t);if(!n)return{override:null,issues:[{widgetId:null,type:null,code:`malformed`,message:`not an overview id`}]};let r=ue(n,t,F);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=ue(n,dn(i.override,a),F);return o.ok?{override:o.override,issues:r.issues}:{override:null,issues:[...r.issues,...o.issues]}}function pn(e,t){if(!ln(e))return null;let n=[],r=[];for(let i of Object.keys(e).sort()){if(!cn(i,t)){r.push(`Overview ${i} is not a page in this app and was dropped.`);continue}let{override:a,issues:o}=fn(i,e[i]);for(let e of o)r.push(un(i,e));a&&n.push([i,a])}return{overviews:Object.fromEntries(n),dropped:r}}var mn=S,hn=`glass`,gn=`system`,_n=[`light`,`dark`,`system`],vn=[`none`,`sm`,`md`,`lg`,`xl`,`full`],yn=[`comfortable`,`touch`],bn=[`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`},xn=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;function Sn(e){if(typeof e!=`string`)return null;let t=xn.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 Cn=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function wn(e){if(e===void 0)return{ok:!0,theme:void 0};if(!Cn(e))return{ok:!1,error:`The cookbook "theme" must be an object.`};let t={};if(e.preset!==void 0){if(typeof e.preset!=`string`||!mn.includes(e.preset))return{ok:!1,error:`The theme preset must be one of ${mn.join(`, `)}.`};t.preset=e.preset}if(e.colorScheme!==void 0){if(!_n.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`,vn],[`density`,yn],[`contrast`,bn]]){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(!Cn(e.custom))return{ok:!1,error:`The theme "custom" must be an object.`};let n=Sn(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 Tn(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 En(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 Dn(e,t=be(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 On(e,t=T){let n=new Map;for(let e of t){let t=Ce(e).id;for(let r of Re(e))r.key&&n.set(`${K}${t}:${r.packageId}:${r.model.name}:${r.label}`,De(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:De(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`,kn=new Set([`basic`,`advanced`,`hidden`]),An=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 jn(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`&&kn.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 Mn(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 Nn(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([...je(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=jn(n,`policies[${t}]`);if(typeof e==`string`)return J(`Invalid cookbook: ${e}.`);(o.has(e.objectRef)||Me(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=>An.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=Mn(e.layout);if(typeof t==`string`)return J(`Invalid cookbook: ${t}.`);l=On(Dn(t))}let u;if(e.theme!==void 0){let n=wn(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())}}if(e.specs!==void 0){if(typeof e.specs!=`string`)return J(`The cookbook "specs" must be a string.`);e.specs.trim()&&(p.specs=e.specs.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 Pn=e=>({ok:!1,error:e});function Fn(e,t={}){return Nn(e,{...t,overviews:pn})}function In(e,t={}){let n;try{n=JSON.parse(e)}catch{return Pn(`This file is not valid JSON.`)}try{return Fn(n,t)}catch{return Pn(`This file is not a valid cookbook.`)}}var Z=`smrt-planner:cookbook-doc:v1`,Ln=`smrt-planner:blueprint:v1`,Rn=`smrt-planner:cookbook-doc:unreadable`;function zn(){try{return globalThis.localStorage??null}catch{return null}}function Bn(e){if(!e)return{status:`unavailable`};let t;try{t=e.getItem(Z)}catch{return{status:`unavailable`}}let n=null;try{n=e.getItem(Ln)}catch{}let r=t===null&&n!==null,i=r?n:t;if(i===null)return{status:`empty`};let a=In(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,Rn,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 Vn(e,t){if(!e)return!1;try{return e.removeItem(t),!0}catch{return!1}}function Hn(e,t){return Q(e,Z,JSON.stringify(t))}function Un(e,t={}){let n={$schema:q,version:1,...Fe(e)};t.name&&(n.name=t.name),t.description&&(n.description=t.description),t.specs&&(n.specs=t.specs),t.layout&&(n.layout=t.layout);let r=Tn(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 Wn=new Set([`basic`,`advanced`,`hidden`]),Gn=new Set([`api`,`mcp`,`cli`]);function Kn(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 qn(e){let t=new URLSearchParams(e);return t.has(`r`)||t.has(`o`)}function Jn(e){let t={rows:[],narrowed:{}};if(!e)return t;let n;try{n=JSON.parse(Kn(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`&&Wn.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=>Gn.has(e));n.length&&(i[e]=n)}return{rows:r,narrowed:i}}function Yn(e){let t=new URLSearchParams(e),n=(t.get(`r`)??``).split(`,`).filter(Boolean),r=je(Ie(n,D),D),i=new Set(r.flatMap(e=>D.get(e)?.models??[])),{rows:a,narrowed:o}=Jn(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 Xn=`smrt-planner:shell`;function $(e){let t=Pe(e),n=e.policies.some(e=>e.defaultValue!==void 0&&Me(e));s(Le(e)||n?t.taxRate:void 0),o({pricesIncludeTax:t.pricesIncludeTax,taxRounding:t.taxRounding,currency:t.currency})}var Zn=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 specs(){return e(this.#i)}set specs(e){i(this.#i,e,!0)}#a=r();get theme(){return e(this.#a)}set theme(e){i(this.#a,e,!0)}#o=r({});get overviews(){return e(this.#o)}set overviews(e){i(this.#o,e)}#s=r(`unknown`);get persist(){return e(this.#s)}set persist(e){i(this.#s,e,!0)}#c=r(!1);get loaded(){return e(this.#c)}set loaded(e){i(this.#c,e,!0)}hostManaged=!1;#l=r(``);get loadNotice(){return e(this.#l)}set loadNotice(e){i(this.#l,e,!0)}saveBlocked=!1;#u=r(!1);get keepLegacyUrl(){return e(this.#u)}set keepLegacyUrl(e){i(this.#u,e,!0)}replacedBeforeLoad=!1;previousKept=!1;storage=null;timer;snapshot(){return Un(n(E.data),{layout:n(this.layout),theme:n(this.theme),overviews:n(this.overviews),name:this.name,description:this.description,specs:this.specs})}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}setSpecs(e){let t=e.trimEnd();this.specs=t.trim()?t:void 0}apply(e){E.load(e),this.layout=e.layout,this.theme=e.theme,this.name=e.name,this.description=e.description,this.specs=e.specs,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=Tn(e)}settings(){return Pe(this.snapshot())}setSettings(e){let t=Ne(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.specs=void 0,this.overviews={},this.saveBlocked=!1,this.keepLegacyUrl=!1}importText(e){let t=In(e);return t.ok&&this.replace(t.cookbook),t}hydrate(e,t=u()){this.storage=t;let n=Bn(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(qn(e)&&(n.status===`loaded`&&!Q(t,`smrt-planner:cookbook-doc:backup`,JSON.stringify(n.cookbook))&&(this.saveBlocked=!0),this.apply(Yn(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=Hn(this.storage,this.snapshot());return this.persist=e?`ok`:`memory`,e&&this.previousKept&&(this.previousKept=!Vn(this.storage,Ln)),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{j as A,N as C,lt as D,pt as E,ot as O,mt as S,gt as T,Sn as _,zn as a,Qt as b,q as c,gn as d,hn as f,En as g,mn as h,Z as i,at as j,M as k,vn as l,G as m,Zn as n,Fn as o,yn as p,$ as r,In as s,Xn as t,bn as u,on as v,ht as w,F as x,$t as y};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DRhbTVht.js","./DG3qFFTE.js","./COiEfhsA.js","./xihTtKlq.js","./t7U3x8WE.js","./Bq8E3AWP.js","./DK8Blf1Y.js","../assets/currency-metadata.ksbBA8-C.css","../assets/app.BHwMQ9Zv.css","./B51JSFsA.js","./DptKR1hv.js","../assets/feedback.qFktqYFY.css","./Dwecp1Xp.js","./BaNbYf_w.js","./icQ9pGib.js","../assets/SegmentedControl.DMqHG5fn.css","./DIE02RSm.js","../assets/webmcp-ui-context.hO24Ni5w.css","./ipYfj5yA.js","../assets/data.CVlX_W0i.css","./CUyVrfsu.js","./9L3dNfkK.js","../assets/forms.Zvn0Ncy0.css","./BYcBM-fh.js","../assets/AppShell.Y0ysizZK.css","./Ck9-sBAz.js","../assets/workspace.C40zM0Mb.css","./D7y5Y9SX.js","./Bp676OJt.js","../assets/state.C0UZEhxS.css","../assets/labels.Dxa6EyRI.css","./Vm34uR1l.js","./CiJD6U6B.js","./C3mDn9E2.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"./t7U3x8WE.js";import{v as x}from"./Dwecp1Xp.js";import"./icQ9pGib.js";import"./DIE02RSm.js";import{u as S}from"./ipYfj5yA.js";import{A as ee,C,E as te,F as ne,G as re,I as ie,M as ae,N as oe,O as se,P as ce,T as le,U as ue,V as de,W as w,b as fe,h as pe,j as me,k as he,n as ge,q as _e,r as ve,w as ye}from"./D7y5Y9SX.js";import{B as be,D as xe,G as Se,H as Ce,J as we,K as Te,M as Ee,V as De,X as Oe,Y as ke,Z as Ae,a as je,b as T,c as Me,d as Ne,l as Pe,n as Fe,r as Ie,s as Le,t as E,v as Re,x as D,z as ze}from"./Bp676OJt.js";function Be(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 Ve(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=Ve(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 He(e){return typeof e==`object`&&!!e&&`default`in e&&!!e.default}function Ue(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 He(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 He(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 We(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(Ue(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 Ge=[`identifier`,`status`,`date`,`party`,`total`,`money`];function Ke(e){for(let t of[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`])if(e.includes(t))return t}function qe(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 Ge)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:A(n,e),...Ke(t[n]??[])?{role:Ke(t[n]??[])}:{}}))}function Je(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:A(o,e)}),s&&d.push({key:s,label:A(s,e),role:`quantity`}),l&&d.push({key:l,label:A(l,e),role:`money`,summarize:!1}),u&&u!==l&&d.push({key:u,label:A(u,e),role:`money`}),d}function A(e,t){let n=t.fields[e];return n&&(n.type===`foreignKey`||n.type===`crossPackageRef`)&&/.[a-z]Id$/.test(e)?ce(e.slice(0,-2)):ce(e)}function Ye(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 Xe=[`text`,`integer`,`decimal`,`boolean`,`datetime`,`json`,`foreignKey`,`crossPackageRef`];function Ze(e){return Xe.includes(e)?e:`text`}var Qe=/(Date|^date|period(Start|End))$/;function $e(e,t){return t.type===`datetime`&&!t.system&&Qe.test(t.name)&&!e.fields.some(e=>e.name===`allDay`)?`date`:void 0}function et(e){return fe(e)[0]}function tt(e,t){let n=t.ui?{...t.ui}:void 0,r=c(t)?`money`:$e(e,t);return{type:Ze(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}:{},...et(e)===t.name?{display:!0}:{}}}function nt(e,t){return e.includes(`:`)?e:`${t.slice(0,t.lastIndexOf(`:`))}:${e}`}function rt(e,t){if(!t.related)return!1;let n=nt(t.related,e.id);return ke(p,n,h).some(t=>t.id===e.id)}function it(e){return e.fields.flatMap(t=>{if(t.type!==`foreignKey`&&t.type!==`crossPackageRef`||!t.related)return[];let n=m(nt(t.related,e.id));return n?[{field:t.name,kind:t.type===`crossPackageRef`?`crossPackageRef`:`foreignKey`,relatedCollection:n.model.collection,...rt(e,t)?{role:`items`}:{}}]:[]})}function j(e){let t=it(e);return{name:e.collection,objectRef:e.id,className:e.name,idField:`id`,fields:Object.fromEntries(e.fields.map(t=>[t.name,tt(e,t)])),...t.length?{relationships:t}:{}}}function at(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 ot(e,t){let n=new Set(t);for(let t of e)for(let e of t.models)n.add(e);return n}function st(e){return v(e.replace(/_?id$/i,``)||e)}function M(e,t,n){let r=Oe(e,t),i=Ae(e,t).filter(e=>e.model.exposed&&n.has(e.model.id)),a=new Set(ke(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=j(e.model),i=ie(n),s=[e.fk];return{model:e.model.id,field:e.fk,label:(o.get(e.model.id)??0)>1?`${Se(e.model.name,r)} (${st(e.fk).toLowerCase()})`:Se(e.model.name,r),kind:t,columns:t===`items`?Je(n,i,{exclude:s}):qe(n,i,{exclude:s,max:5}),...t===`items`&&`sortOrder`in n.fields?{sort:`sortOrder`}:{}}});for(let n of Te(e,t))s.push({model:n.model.id,field:n.fk,label:st(n.fk),kind:`reference`});return s}var ct=Symbol(`smrt-cookbook`);function lt(){return t(ct)}function ut(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 oe(n,i)}function dt(e){return e?async(t,n)=>{let r=ut(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}}:ut}var ft=new Set([`foreignKey`,`crossPackageRef`]);function N(e,t){return`/m/${e}/${t}/`}function pt(e,t,n,r=`view`){let i=`${N(e,t)}${encodeURIComponent(n)}/`;return r===`edit`?`${i}edit/`:i}function mt(e,t,n,r){return`${N(e,t)}?${encodeURIComponent(n)}=${encodeURIComponent(r)}`}function ht(e,t){let n=new URLSearchParams(e);for(let e of t.fields){if(!ft.has(e.type))continue;let t=n.get(e.name);if(t)return{field:e.name,equals:t}}}function gt(e){return e?.equals===void 0?``:`${encodeURIComponent(e.field)}=${encodeURIComponent(e.equals)}`}var P=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:null,_t=(e,t)=>e.fields.some(e=>e.name===t);function vt(e,t){let n=ie(j(e)),r=C(t,n);return Object.values(r).some(e=>P(e)!==null)?r:void 0}function yt(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}function bt(e,t,n){if(!yt(e,t)||![`subtotal`,`taxAmount`,`totalAmount`,`discountTotal`].every(t=>_t(e,t)))return;let r=P(t.subtotal),i=P(t.taxAmount),a=P(t.totalAmount),o=P(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 F=de();function I(e){let{source:t,href:n}=e;if(!t||!n)throw Error(`the planner widget context is missing`);return{source:t,href:n}}function L(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:N(t.pkg.id,t.model.name)}}var R=new Set([`foreignKey`,`crossPackageRef`]);function z(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||!R.has(s.type))throw Error(`${n.name} has no reference field ${o}`);return{field:o,id:i.id}}async function B(e,t,n){return n?e.listWhere(t,n.field,n.id):e.list(t)}function V(e,t,n){return e(n?mt(t.packageId,t.model.name,n.field,n.id):t.path)}var H=e=>typeof e==`number`&&Number.isFinite(e);async function xt(e,t){let{source:n,href:r}=I(t),i=L(e.model),{model:a}=i,o=z(e,t,a),s=await B(n,a,o),l=V(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(H),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 St(e,t){return H(e)&&H(t)?e-t:String(e??``).localeCompare(String(t??``))}var Ct=new Set([`createdAt`,`updatedAt`]),wt=[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`];function Tt(e=[]){return wt.find(t=>e.includes(t))}function Et(e,t,n,r){let i=j(e),a=r?[r]:[],o=ae(n),s=o.length?[]:pe(E.apply(e).fields.filter(t=>!a.includes(t.name)&&!xe(e,t))).filter(e=>!e.derive),c=o.length?o:s.map(e=>e.name),l=[...Je(i,t,{exclude:a}),...qe(i,t,{exclude:a,max:c.length+8})];return c.map(n=>{let r=e.fields.find(e=>e.name===n);if(!r)throw Error(`${e.name} has no field ${n}`);let i=l.find(e=>e.key===n),a=s.find(e=>e.name===n)?.label;if(i)return a?{...i,label:a}:i;let o=Tt(t[n]);return{key:n,label:a??(R.has(r.type)?v(n.replace(/Id$/,``)):v(n)),...o?{role:o}:{}}})}var Dt=new Set([`money`,`quantity`]);function Ot(e,t){let n={};for(let r of e)(r.summarize??Dt.has(r.role))&&(n[r.key]=t.reduce((e,t)=>{let n=t[r.key];return H(n)?e+n:e},0));return n}function kt(e,t){let n=ne(j(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 At(e,t){let{source:n,href:r}=I(t),i=L(e.model),{model:a}=i,o=z(e,t,a),s=await B(n,a,o);if(typeof e.sort==`string`&&e.sort){if(!a.fields.find(t=>t.name===e.sort)&&!Ct.has(e.sort))throw Error(`${a.name} has no field ${e.sort}`);let t=s.some(t=>t[e.sort]!==void 0)?e.sort:W(a)?.name;if(t){let n=e.direction===`asc`?1:-1;s=[...s].sort((e,r)=>n*St(e[t],r[t]))}}let c=Et(a,ie(j(a)),e.columns,o?.field),l=H(e.limit)?e.limit:5,u=s.slice(0,l),d=a.fields.filter(e=>R.has(e.type)&&c.some(t=>t.key===e.name)),f=await ve(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=Ot(c,s),h=!we(a);return{rows:await Promise.all(u.map(async e=>({id:String(e.id),title:await ge(n,a,e,0,o?.field),...h?{href:r(pt(i.packageId,a.name,String(e.id)))}:{},cells:p(e)}))),...e.summaries===!1?{}:{total:s.length},...h?{href:V(r,i,o)}:{},columns:c,currency:kt(a,s),...Object.keys(m).length?{summaries:m}:{}}}var jt={"7d":7,"30d":30,"90d":90,"12m":365,all:null},U=864e5;function Mt(e){return e===`7d`||e===`30d`?`day`:e===`90d`?`week`:`month`}function Nt(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*U:r}function Pt(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)*U}function Ft(e,t){let n=new Date(e).toISOString();return t===`month`?n.slice(0,7):n.slice(0,10)}var It=e=>e.type===`datetime`&&!e.system;function W(e){let t=e.fields.filter(It);return t.find(e=>/^(issue|order|start|created)/i.test(e.name))??t[0]}function Lt(e){if(typeof e!=`string`&&typeof e!=`number`)return;let t=new Date(e).getTime();return Number.isFinite(t)?t:void 0}async function Rt(e,t){let{source:n,href:r}=I(t),i=L(e.model),{model:a}=i,o=z(e,t,a),s=typeof e.groupBy==`string`?e.groupBy:``,l=s?a.fields.find(e=>e.name===s):W(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(jt,f))throw Error(`unknown period ${f}`);let p=jt[f],m=It(l),h=m?l:W(a),g=p!==null&&h?y-p*U:-1/0,_=await B(n,a,o);h&&g!==-1/0&&(_=_.filter(e=>{let t=Lt(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(!H(e))return;r.sum+=e}r.n+=1,v.set(e,r)},x=Mt(f);if(m){let e=g===-1/0?Math.min(..._.map(e=>Lt(e[l.name])??y),y):g;for(let t=Nt(e,x);t<=y;t=Pt(t,x))v.set(Ft(t,x),{key:t,sum:0,n:0});for(let e of _){let t=Lt(e[l.name]);if(t===void 0)continue;let n=Nt(t,x);b(Ft(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:V(r,i,o)}}te(F,{metric:xt,records:At,chart:Rt,shortcuts:async(e,t)=>t,shortcuts:dt()});function zt(e){let{relations:t,viewAllHref:n}=e;if(!t)throw Error(`the record page context is missing`);return{relations:t,records:At,viewAllHref:n}}async function Bt(e,t){let{source:n}=I(e),r=e.record;if(!r?.id)throw Error(`line items need a record`);let{model:i}=L(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=bt(i,a,o&&s?await n.listWhere(s,o.field,r.id):[]),l=c?void 0:vt(i,a),u=ne(j(i)),d=u?a[u]:void 0;return{...c?{storedTotals:c}:{},...l?{totals:l}:{},...typeof d==`string`&&d?{currency:d}:{}}}F.register(le((e,t)=>he(zt(t))(e,t))),F.register(ye(async(e,t)=>{let n=zt(t),{totals:r,storedTotals:i,currency:a}=await Bt(t,n.relations);return se({...n,totals:()=>r,storedTotals:()=>i,currency:()=>a})(e,t)}));var Vt=[`shortcuts`,`metric`,`records`,`chart`,`note`],Ht={"@happyvertical/smrt-reports/svelte":async()=>({SavedReportsWidget:(await a(async()=>{let{default:e}=await import(`./DRhbTVht.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})},Ut=async(e,t)=>{let n=Ht[e];if(n)return(await n())[t]},Wt=T.filter(e=>e.surfaces?.some(e=>e.kind===`widget`)),Gt=Wt.flatMap(e=>(e.surfaces??[]).flatMap(e=>e.kind===`widget`?[e.type]:[]));We(F,Wt,Ut);var Kt=new Map(ze(T).map(e=>[`section:${e.id}`,e])),qt=p.packages.flatMap(e=>e.models.map(e=>e.id)),Jt=[...Vt,...Gt];function Yt(e){let t=Kt.get(e);for(let e of t?.recipes??[]){let t=Re(e)[0];if(t)return{id:t.model.id,name:v(t.model.name)}}}function Xt(e,t){let n=Be(Kt.get(e)?.recipes[0]),r=Yt(e);return Ye({lead:r?{...r,plural:f(r.name)}:void 0,dataWidgets:!0,page:n&&Gt.includes(n.type)?n:void 0,override:t})}var Zt=new Map;function Qt(e,t){if(!_e.test(e))return;let n=Zt.get(e);return n||(n=w({id:e,allowed:Jt,models:qt,defaults:Xt(e)}),Zt.set(e,n)),t===void 0?n:w({...n,defaults:Xt(e,t)})}function $t(e,t){return`detail:${e}.${t}`}var en=new Map(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(t=>[me(t.id),{packageId:e.id,model:t}])));function tn(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}:en.get(e)}var nn=new Set(p.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(e=>e.id))),rn=new Map;function an(e){let t=rn.get(e);if(t)return t;let n=tn(e);if(!n)return;let r=M(p,n.model.id,nn),i=ee(j(n.model),r,{id:e,maxMetrics:2*r.length});return t=w({...i,maxWidgets:Math.max(i.maxWidgets??24,i.defaults.length+24)}),rn.set(e,t),t}function on(e,t){let n=an(e),r=tn(e);if(!n||!r)return;let i=M(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 sn(e,t){return e.startsWith(`detail:`)?an(e):Qt(e,t)}function cn(e,t){return Kt.has(e)||e===`section:${Ee.id}`?!0:e.startsWith(`detail:`)?tn(e)!==void 0:e.startsWith(`custom:`)&&_e.test(e)&&(t?.customSections??[]).some(t=>t.id===e)}var ln=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function un(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 dn(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 fn(e,t){let n=sn(e,t);if(!n)return{override:null,issues:[{widgetId:null,type:null,code:`malformed`,message:`not an overview id`}]};let r=ue(n,t,F);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=ue(n,dn(i.override,a),F);return o.ok?{override:o.override,issues:r.issues}:{override:null,issues:[...r.issues,...o.issues]}}function pn(e,t){if(!ln(e))return null;let n=[],r=[];for(let i of Object.keys(e).sort()){if(!cn(i,t)){r.push(`Overview ${i} is not a page in this app and was dropped.`);continue}let{override:a,issues:o}=fn(i,e[i]);for(let e of o)r.push(un(i,e));a&&n.push([i,a])}return{overviews:Object.fromEntries(n),dropped:r}}var mn=S,hn=`glass`,gn=`system`,_n=[`light`,`dark`,`system`],vn=[`none`,`sm`,`md`,`lg`,`xl`,`full`],yn=[`comfortable`,`touch`],bn=[`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`},xn=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;function Sn(e){if(typeof e!=`string`)return null;let t=xn.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 Cn=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function wn(e){if(e===void 0)return{ok:!0,theme:void 0};if(!Cn(e))return{ok:!1,error:`The cookbook "theme" must be an object.`};let t={};if(e.preset!==void 0){if(typeof e.preset!=`string`||!mn.includes(e.preset))return{ok:!1,error:`The theme preset must be one of ${mn.join(`, `)}.`};t.preset=e.preset}if(e.colorScheme!==void 0){if(!_n.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`,vn],[`density`,yn],[`contrast`,bn]]){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(!Cn(e.custom))return{ok:!1,error:`The theme "custom" must be an object.`};let n=Sn(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 Tn(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 En(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 Dn(e,t=be(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 On(e,t=T){let n=new Map;for(let e of t){let t=Ce(e).id;for(let r of Re(e))r.key&&n.set(`${K}${t}:${r.packageId}:${r.model.name}:${r.label}`,De(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:De(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`,kn=new Set([`basic`,`advanced`,`hidden`]),An=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 jn(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`&&kn.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 Mn(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 Nn(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([...je(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=jn(n,`policies[${t}]`);if(typeof e==`string`)return J(`Invalid cookbook: ${e}.`);(o.has(e.objectRef)||Me(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=>An.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=Mn(e.layout);if(typeof t==`string`)return J(`Invalid cookbook: ${t}.`);l=On(Dn(t))}let u;if(e.theme!==void 0){let n=wn(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())}}if(e.specs!==void 0){if(typeof e.specs!=`string`)return J(`The cookbook "specs" must be a string.`);e.specs.trim()&&(p.specs=e.specs.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 Pn=e=>({ok:!1,error:e});function Fn(e,t={}){return Nn(e,{...t,overviews:pn})}function In(e,t={}){let n;try{n=JSON.parse(e)}catch{return Pn(`This file is not valid JSON.`)}try{return Fn(n,t)}catch{return Pn(`This file is not a valid cookbook.`)}}var Z=`smrt-planner:cookbook-doc:v1`,Ln=`smrt-planner:blueprint:v1`,Rn=`smrt-planner:cookbook-doc:unreadable`;function zn(){try{return globalThis.localStorage??null}catch{return null}}function Bn(e){if(!e)return{status:`unavailable`};let t;try{t=e.getItem(Z)}catch{return{status:`unavailable`}}let n=null;try{n=e.getItem(Ln)}catch{}let r=t===null&&n!==null,i=r?n:t;if(i===null)return{status:`empty`};let a=In(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,Rn,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 Vn(e,t){if(!e)return!1;try{return e.removeItem(t),!0}catch{return!1}}function Hn(e,t){return Q(e,Z,JSON.stringify(t))}function Un(e,t={}){let n={$schema:q,version:1,...Fe(e)};t.name&&(n.name=t.name),t.description&&(n.description=t.description),t.specs&&(n.specs=t.specs),t.layout&&(n.layout=t.layout);let r=Tn(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 Wn=new Set([`basic`,`advanced`,`hidden`]),Gn=new Set([`api`,`mcp`,`cli`]);function Kn(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 qn(e){let t=new URLSearchParams(e);return t.has(`r`)||t.has(`o`)}function Jn(e){let t={rows:[],narrowed:{}};if(!e)return t;let n;try{n=JSON.parse(Kn(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`&&Wn.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=>Gn.has(e));n.length&&(i[e]=n)}return{rows:r,narrowed:i}}function Yn(e){let t=new URLSearchParams(e),n=(t.get(`r`)??``).split(`,`).filter(Boolean),r=je(Ie(n,D),D),i=new Set(r.flatMap(e=>D.get(e)?.models??[])),{rows:a,narrowed:o}=Jn(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 Xn=`smrt-planner:shell`;function $(e){let t=Pe(e),n=e.policies.some(e=>e.defaultValue!==void 0&&Me(e));s(Le(e)||n?t.taxRate:void 0),o({pricesIncludeTax:t.pricesIncludeTax,taxRounding:t.taxRounding,currency:t.currency})}var Zn=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 specs(){return e(this.#i)}set specs(e){i(this.#i,e,!0)}#a=r();get theme(){return e(this.#a)}set theme(e){i(this.#a,e,!0)}#o=r({});get overviews(){return e(this.#o)}set overviews(e){i(this.#o,e)}#s=r(`unknown`);get persist(){return e(this.#s)}set persist(e){i(this.#s,e,!0)}#c=r(!1);get loaded(){return e(this.#c)}set loaded(e){i(this.#c,e,!0)}hostManaged=!1;#l=r(``);get loadNotice(){return e(this.#l)}set loadNotice(e){i(this.#l,e,!0)}saveBlocked=!1;#u=r(!1);get keepLegacyUrl(){return e(this.#u)}set keepLegacyUrl(e){i(this.#u,e,!0)}replacedBeforeLoad=!1;previousKept=!1;storage=null;timer;snapshot(){return Un(n(E.data),{layout:n(this.layout),theme:n(this.theme),overviews:n(this.overviews),name:this.name,description:this.description,specs:this.specs})}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}setSpecs(e){let t=e.trimEnd();this.specs=t.trim()?t:void 0}apply(e){E.load(e),this.layout=e.layout,this.theme=e.theme,this.name=e.name,this.description=e.description,this.specs=e.specs,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=Tn(e)}settings(){return Pe(this.snapshot())}setSettings(e){let t=Ne(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.specs=void 0,this.overviews={},this.saveBlocked=!1,this.keepLegacyUrl=!1}importText(e){let t=In(e);return t.ok&&this.replace(t.cookbook),t}hydrate(e,t=u()){this.storage=t;let n=Bn(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(qn(e)&&(n.status===`loaded`&&!Q(t,`smrt-planner:cookbook-doc:backup`,JSON.stringify(n.cookbook))&&(this.saveBlocked=!0),this.apply(Yn(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=Hn(this.storage,this.snapshot());return this.persist=e?`ok`:`memory`,e&&this.previousKept&&(this.previousKept=!Vn(this.storage,Ln)),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{j as A,N as C,lt as D,pt as E,ot as O,mt as S,gt as T,Sn as _,zn as a,Qt as b,q as c,gn as d,hn as f,En as g,mn as h,Z as i,at as j,M as k,vn as l,G as m,Zn as n,Fn as o,yn as p,$ as r,In as s,Xn as t,bn as u,on as v,ht as w,F as x,$t as y};
@@ -1 +1 @@
1
- import{n as e}from"./COiEfhsA.js";import{S as t}from"./Qxx7HWld.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
+ import{n as e}from"./COiEfhsA.js";import{S as t}from"./9L3dNfkK.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,4 +1,4 @@
1
- import{$ as e,A as t,B as n,Ct as r,Dt as i,E as a,F as o,Ft as s,G as c,H as l,J as u,K as d,L as f,Lt as p,Ot as m,Pt as h,R as g,Rt as _,U as v,W as y,X as b,Y as x,Z as S,_ as C,a as w,b as T,bt as E,ct as D,dt as O,ft as k,gt as A,ht as j,it as M,k as N,mt as P,n as F,o as I,pt as L,q as R,s as z,st as B,tt as V,ut as H,v as U,vt as W,xt as G,y as K,z as ee}from"./DG3qFFTE.js";import{n as q}from"./Cw26E4UG.js";import"./xihTtKlq.js";import{i as J,r as te}from"./Bv5jGtB8.js";import{a as Y,t as ne}from"./YUSKx8_q.js";import{$ as re,C as ie,X as ae,_ as oe,_t as X,a as se,bt as ce,c as le,d as ue,et as de,f as fe,g as pe,h as me,nt as he,p as ge,q as _e,t as ve,tt as ye,u as be,ut as xe,v as Se,yt as Ce}from"./B1Pf2l_R.js";import{n as Z}from"./DK8Blf1Y.js";import{n as we}from"./B2aomX_k.js";import"./Bns8l-x1.js";import{u as Te}from"./DIE02RSm.js";import{b as Ee,d as De,f as Oe,l as ke,n as Ae,r as je,x as Me}from"./Qxx7HWld.js";import"./DYku8Hqx.js";import{t as Ne}from"./DNpuZXha.js";import{S as Pe,_ as Fe,a as Ie,d as Le,f as Re,g as ze,h as Be,m as Ve,n as He,p as Ue,r as We,t as Ge,u as Ke,v as qe,x as Je}from"./DDIQ8W6V.js";import{A as Ye,C as Xe,E as Ze,O as Qe,S as $e,j as et,k as tt,n as nt,v as rt,w as it,x as at,y as ot}from"./7y8ldvJX.js";import{G as st,H as ct,M as lt,Q as ut,U as dt,W as ft,X as pt,b as mt,g as ht,h as gt,q as _t,t as vt,v as yt,x as bt}from"./CLySd19b.js";import{a as xt,i as St,n as Ct,r as wt}from"./CO-Ek-HE.js";import{a as Tt,c as Et,i as Dt,l as Ot,n as kt}from"./CmAUvRQx.js";import{r as At}from"./D_U_DYjx.js";import"./BdMHVrP7.js";import{t as jt}from"./CYCgPm88.js";import{a as Mt,d as Nt,i as Pt,l as Ft,o as It,p as Lt,r as Rt,s as zt,u as Bt}from"./BE4TZ3aw.js";import{a as Vt,d as Ht,f as Ut,i as Wt,l as Gt,o as Kt,p as qt,r as Jt,s as Yt,u as Xt}from"./DYS_WKPd.js";import{n as Zt}from"./CgAkqYsL.js";import{a as Qt,i as $t,n as en,o as tn,r as nn,s as rn,t as an}from"./CM3HdjYi.js";import{t as on}from"./JBD5vUbP.js";function sn(e,t){return{key:t,direction:e?.key===t&&e.direction===`ascending`?`descending`:`ascending`}}var cn=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`});function ln(e){return e==null||e===``||typeof e==`number`&&!Number.isFinite(e)}function un(e,t){if(typeof e==`number`&&typeof t==`number`)return e-t;if(typeof e==`boolean`&&typeof t==`boolean`)return Number(e)-Number(t);let n=e instanceof Date?e.getTime():e,r=t instanceof Date?t.getTime():t;return typeof n==`number`&&typeof r==`number`?n-r:cn.compare(String(n),String(r))}function dn(e,t,n){return t?e.map((e,r)=>({row:e,index:r,value:n(e,t.key)})).sort((e,n)=>{let r=ln(e.value);if(r!==ln(n.value))return r?1:-1;let i=r?0:un(e.value,n.value);return(t.direction===`ascending`?i:-i)||e.index-n.index}).map(({row:e})=>e):[...e]}var fn={name:`@happyvertical/smrt-assets`,displayName:`Assets`,description:`Provider-agnostic asset management with versioning, metadata, folders, and associations`,uiSlots:{"attachment-list":{id:`attachment-list`,label:`Attachment List`,description:`Authorized private links and supplied version history`,icon:`file-text`,category:`list`,order:8,propsInterface:`AttachmentListProps`},"attachment-upload":{id:`attachment-upload`,label:`Attachment Upload`,description:`Native multipart upload with retained request fields and recovery guidance`,icon:`upload`,category:`form`,order:9,propsInterface:`AttachmentUploadProps`},"attachment-panel":{id:`attachment-panel`,label:`Attachments`,description:`Attachment list and optional native upload composition`,icon:`file-text`,category:`display`,order:10,propsInterface:`AttachmentPanelProps`},"asset-manager":{id:`asset-manager`,label:`Asset Manager`,description:`Combined asset management surface with toolbar, grid/list view, detail, and selection`,icon:`folder-image`,category:`admin`,order:1,propsInterface:`AssetManagerProps`},"asset-grid":{id:`asset-grid`,label:`Asset Grid`,description:`Grid view of asset thumbnails with selection`,icon:`grid`,category:`list`,order:2,propsInterface:`AssetGridProps`},"asset-list":{id:`asset-list`,label:`Asset List`,description:`Sortable list view of assets with metadata columns`,icon:`list`,category:`list`,order:3,propsInterface:`AssetListProps`},"asset-detail":{id:`asset-detail`,label:`Asset Detail`,description:`Detailed view of a single asset with metadata and preview`,icon:`file-text`,category:`detail`,order:4,propsInterface:`AssetDetailProps`},"asset-toolbar":{id:`asset-toolbar`,label:`Asset Toolbar`,description:`Toolbar with view toggle, filters, sort, and upload action`,icon:`sliders`,category:`action`,order:5,propsInterface:`AssetToolbarProps`},"asset-action-bar":{id:`asset-action-bar`,label:`Asset Action Bar`,description:`Bulk action bar shown when assets are selected`,icon:`more-horizontal`,category:`action`,order:6,propsInterface:`ActionBarProps`},"asset-create-modal":{id:`asset-create-modal`,label:`Create Asset Modal`,description:`Modal dialog for uploading and creating a new asset`,icon:`upload`,category:`form`,order:7,propsInterface:`CreateAssetModalProps`}},models:[`Asset`,`AssetType`,`AssetStatus`,`AssetMetafield`,`Folder`],collections:[`AssetCollection`,`AssetTypeCollection`,`AssetStatusCollection`,`AssetMetafieldCollection`,`AssetAssociationCollection`,`FolderCollection`]},Q=Y({"assets.action_bar.delete_confirm_title":`Delete {count} asset{plural}?`,"assets.action_bar.delete_confirm_message_one":`This action cannot be undone. The asset and its file data will be permanently removed.`,"assets.action_bar.delete_confirm_message_other":`This action cannot be undone. The assets and their file data will be permanently removed.`,"assets.action_bar.delete":`Delete`,"assets.action_bar.cancel":`Cancel`,"assets.asset_detail.open_pdf_in_new_tab":`Open PDF in new tab`,"assets.asset_detail.alt_text":`Alt Text`,"assets.asset_detail.alt_text_missing_warning":`⚠️ Missing — required for accessibility`,"assets.asset_detail.quick_actions":`Quick Actions`,"assets.asset_detail.copy_url":`📋 Copy URL`,"assets.asset_detail.copy_markdown":`📝 Copy Markdown`,"assets.asset_detail.edit_image":`✏️ Edit Image`,"assets.asset_detail.used_in":`Used In`,"assets.asset_detail.alt_text_placeholder":`Describe this image for screen readers`,"assets.asset_detail.description_placeholder":`Optional description`,"assets.asset_grid.loading":`Loading assets...`,"assets.asset_grid.no_assets_found":`No assets found`,"assets.asset_grid.empty_hint":`Upload an asset or change your search filters to see results.`,"assets.asset_grid.no_alt":`⚠️ No alt`,"assets.asset_grid.missing_alt_text":`Missing alt text`,"assets.asset_grid.open_named":`Open {name}`,"assets.asset_grid.select_named":`Select {name}`,"assets.asset_grid.select_named_checkbox":`Select {name}`,"assets.asset_list.loading":`Loading assets...`,"assets.asset_list.no_assets_found":`No assets found`,"assets.asset_list.empty_hint":`Upload an asset or change your search filters to see results.`,"assets.asset_list.select_all":`Select all`,"assets.asset_list.select_named":`Select {name}`,"assets.asset_manager.drop_file_to_upload":`Drop file to upload`,"assets.asset_toolbar.all_types":`All types`,"assets.asset_toolbar.newest_first":`Newest first`,"assets.asset_toolbar.oldest_first":`Oldest first`,"assets.asset_toolbar.name_a_z":`Name A–Z`,"assets.asset_toolbar.name_z_a":`Name Z–A`,"assets.asset_toolbar.recently_updated":`Recently updated`,"assets.asset_toolbar.search_placeholder":`Search assets...`,"assets.asset_toolbar.search_assets":`Search assets`,"assets.asset_toolbar.clear_search":`Clear search`,"assets.asset_toolbar.filter_by_type":`Filter by type`,"assets.asset_toolbar.sort_assets":`Sort assets`,"assets.asset_toolbar.view_mode":`View mode`,"assets.asset_toolbar.view_label":`{label} view`,"assets.create_asset_modal.dropzone_text":`Drag & drop a file here, or click to browse`,"assets.create_asset_modal.dropzone_hint":`You can also paste an image from your clipboard`,"assets.create_asset_modal.large_file_warning":`⚠️ Large file — may slow page loads`,"assets.create_asset_modal.alt_text":`Alt Text`,"assets.create_asset_modal.alt_text_recommended_warning":`⚠️ Recommended for accessibility`,"assets.create_asset_modal.name_placeholder":`Asset name`,"assets.create_asset_modal.description_placeholder":`Optional description`,"assets.create_asset_modal.alt_text_placeholder":`Describe this image for screen readers`,"assets.create_asset_modal.upload_asset":`Upload Asset`,"assets.create_asset_modal.preview_alt":`Preview`,"assets.create_asset_modal.remove_file":`Remove file`,"assets.create_asset_modal.upload_failed":`Upload failed. Please try again.`,"assets.asset_detail_preview.modal_preview":`Modal Preview`,"assets.asset_detail_preview.description":`Launch the asset detail dialog from inside the preview stage so the shared
1
+ import{$ as e,A as t,B as n,Ct as r,Dt as i,E as a,F as o,Ft as s,G as c,H as l,J as u,K as d,L as f,Lt as p,Ot as m,Pt as h,R as g,Rt as _,U as v,W as y,X as b,Y as x,Z as S,_ as C,a as w,b as T,bt as E,ct as D,dt as O,ft as k,gt as A,ht as j,it as M,k as N,mt as P,n as F,o as I,pt as L,q as R,s as z,st as B,tt as V,ut as H,v as U,vt as W,xt as G,y as K,z as ee}from"./DG3qFFTE.js";import{n as q}from"./BgUZPKSg.js";import"./xihTtKlq.js";import{i as J,r as te}from"./DptKR1hv.js";import{a as Y,t as ne}from"./Bq8E3AWP.js";import{$ as re,C as ie,X as ae,_ as oe,_t as X,a as se,bt as ce,c as le,d as ue,et as de,f as fe,g as pe,h as me,nt as he,p as ge,q as _e,t as ve,tt as ye,u as be,ut as xe,v as Se,yt as Ce}from"./t7U3x8WE.js";import{n as Z}from"./DK8Blf1Y.js";import{n as we}from"./icQ9pGib.js";import"./Ck9-sBAz.js";import{u as Te}from"./DIE02RSm.js";import{b as Ee,d as De,f as Oe,l as ke,n as Ae,r as je,x as Me}from"./9L3dNfkK.js";import"./D0BNjQ-z.js";import{t as Ne}from"./DoE4qF2w.js";import{S as Pe,_ as Fe,a as Ie,d as Le,f as Re,g as ze,h as Be,m as Ve,n as He,p as Ue,r as We,t as Ge,u as Ke,v as qe,x as Je}from"./D7y5Y9SX.js";import{A as Ye,C as Xe,E as Ze,O as Qe,S as $e,j as et,k as tt,n as nt,v as rt,w as it,x as at,y as ot}from"./BL0dvc-E.js";import{G as st,H as ct,M as lt,Q as ut,U as dt,W as ft,X as pt,b as mt,g as ht,h as gt,q as _t,t as vt,v as yt,x as bt}from"./Bp676OJt.js";import{a as xt,i as St,n as Ct,r as wt}from"./CO-Ek-HE.js";import{a as Tt,c as Et,i as Dt,l as Ot,n as kt}from"./B51JSFsA.js";import{r as At}from"./D_U_DYjx.js";import"./C3mDn9E2.js";import{t as jt}from"./5-YKCHN7.js";import{a as Mt,d as Nt,i as Pt,l as Ft,o as It,p as Lt,r as Rt,s as zt,u as Bt}from"./BrQVKNc5.js";import{a as Vt,d as Ht,f as Ut,i as Wt,l as Gt,o as Kt,p as qt,r as Jt,s as Yt,u as Xt}from"./DFvPytLg.js";import{n as Zt}from"./CgAkqYsL.js";import{a as Qt,i as $t,n as en,o as tn,r as nn,s as rn,t as an}from"./CpAWPjqw.js";import{t as on}from"./JBD5vUbP.js";function sn(e,t){return{key:t,direction:e?.key===t&&e.direction===`ascending`?`descending`:`ascending`}}var cn=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`});function ln(e){return e==null||e===``||typeof e==`number`&&!Number.isFinite(e)}function un(e,t){if(typeof e==`number`&&typeof t==`number`)return e-t;if(typeof e==`boolean`&&typeof t==`boolean`)return Number(e)-Number(t);let n=e instanceof Date?e.getTime():e,r=t instanceof Date?t.getTime():t;return typeof n==`number`&&typeof r==`number`?n-r:cn.compare(String(n),String(r))}function dn(e,t,n){return t?e.map((e,r)=>({row:e,index:r,value:n(e,t.key)})).sort((e,n)=>{let r=ln(e.value);if(r!==ln(n.value))return r?1:-1;let i=r?0:un(e.value,n.value);return(t.direction===`ascending`?i:-i)||e.index-n.index}).map(({row:e})=>e):[...e]}var fn={name:`@happyvertical/smrt-assets`,displayName:`Assets`,description:`Provider-agnostic asset management with versioning, metadata, folders, and associations`,uiSlots:{"attachment-list":{id:`attachment-list`,label:`Attachment List`,description:`Authorized private links and supplied version history`,icon:`file-text`,category:`list`,order:8,propsInterface:`AttachmentListProps`},"attachment-upload":{id:`attachment-upload`,label:`Attachment Upload`,description:`Native multipart upload with retained request fields and recovery guidance`,icon:`upload`,category:`form`,order:9,propsInterface:`AttachmentUploadProps`},"attachment-panel":{id:`attachment-panel`,label:`Attachments`,description:`Attachment list and optional native upload composition`,icon:`file-text`,category:`display`,order:10,propsInterface:`AttachmentPanelProps`},"asset-manager":{id:`asset-manager`,label:`Asset Manager`,description:`Combined asset management surface with toolbar, grid/list view, detail, and selection`,icon:`folder-image`,category:`admin`,order:1,propsInterface:`AssetManagerProps`},"asset-grid":{id:`asset-grid`,label:`Asset Grid`,description:`Grid view of asset thumbnails with selection`,icon:`grid`,category:`list`,order:2,propsInterface:`AssetGridProps`},"asset-list":{id:`asset-list`,label:`Asset List`,description:`Sortable list view of assets with metadata columns`,icon:`list`,category:`list`,order:3,propsInterface:`AssetListProps`},"asset-detail":{id:`asset-detail`,label:`Asset Detail`,description:`Detailed view of a single asset with metadata and preview`,icon:`file-text`,category:`detail`,order:4,propsInterface:`AssetDetailProps`},"asset-toolbar":{id:`asset-toolbar`,label:`Asset Toolbar`,description:`Toolbar with view toggle, filters, sort, and upload action`,icon:`sliders`,category:`action`,order:5,propsInterface:`AssetToolbarProps`},"asset-action-bar":{id:`asset-action-bar`,label:`Asset Action Bar`,description:`Bulk action bar shown when assets are selected`,icon:`more-horizontal`,category:`action`,order:6,propsInterface:`ActionBarProps`},"asset-create-modal":{id:`asset-create-modal`,label:`Create Asset Modal`,description:`Modal dialog for uploading and creating a new asset`,icon:`upload`,category:`form`,order:7,propsInterface:`CreateAssetModalProps`}},models:[`Asset`,`AssetType`,`AssetStatus`,`AssetMetafield`,`Folder`],collections:[`AssetCollection`,`AssetTypeCollection`,`AssetStatusCollection`,`AssetMetafieldCollection`,`AssetAssociationCollection`,`FolderCollection`]},Q=Y({"assets.action_bar.delete_confirm_title":`Delete {count} asset{plural}?`,"assets.action_bar.delete_confirm_message_one":`This action cannot be undone. The asset and its file data will be permanently removed.`,"assets.action_bar.delete_confirm_message_other":`This action cannot be undone. The assets and their file data will be permanently removed.`,"assets.action_bar.delete":`Delete`,"assets.action_bar.cancel":`Cancel`,"assets.asset_detail.open_pdf_in_new_tab":`Open PDF in new tab`,"assets.asset_detail.alt_text":`Alt Text`,"assets.asset_detail.alt_text_missing_warning":`⚠️ Missing — required for accessibility`,"assets.asset_detail.quick_actions":`Quick Actions`,"assets.asset_detail.copy_url":`📋 Copy URL`,"assets.asset_detail.copy_markdown":`📝 Copy Markdown`,"assets.asset_detail.edit_image":`✏️ Edit Image`,"assets.asset_detail.used_in":`Used In`,"assets.asset_detail.alt_text_placeholder":`Describe this image for screen readers`,"assets.asset_detail.description_placeholder":`Optional description`,"assets.asset_grid.loading":`Loading assets...`,"assets.asset_grid.no_assets_found":`No assets found`,"assets.asset_grid.empty_hint":`Upload an asset or change your search filters to see results.`,"assets.asset_grid.no_alt":`⚠️ No alt`,"assets.asset_grid.missing_alt_text":`Missing alt text`,"assets.asset_grid.open_named":`Open {name}`,"assets.asset_grid.select_named":`Select {name}`,"assets.asset_grid.select_named_checkbox":`Select {name}`,"assets.asset_list.loading":`Loading assets...`,"assets.asset_list.no_assets_found":`No assets found`,"assets.asset_list.empty_hint":`Upload an asset or change your search filters to see results.`,"assets.asset_list.select_all":`Select all`,"assets.asset_list.select_named":`Select {name}`,"assets.asset_manager.drop_file_to_upload":`Drop file to upload`,"assets.asset_toolbar.all_types":`All types`,"assets.asset_toolbar.newest_first":`Newest first`,"assets.asset_toolbar.oldest_first":`Oldest first`,"assets.asset_toolbar.name_a_z":`Name A–Z`,"assets.asset_toolbar.name_z_a":`Name Z–A`,"assets.asset_toolbar.recently_updated":`Recently updated`,"assets.asset_toolbar.search_placeholder":`Search assets...`,"assets.asset_toolbar.search_assets":`Search assets`,"assets.asset_toolbar.clear_search":`Clear search`,"assets.asset_toolbar.filter_by_type":`Filter by type`,"assets.asset_toolbar.sort_assets":`Sort assets`,"assets.asset_toolbar.view_mode":`View mode`,"assets.asset_toolbar.view_label":`{label} view`,"assets.create_asset_modal.dropzone_text":`Drag & drop a file here, or click to browse`,"assets.create_asset_modal.dropzone_hint":`You can also paste an image from your clipboard`,"assets.create_asset_modal.large_file_warning":`⚠️ Large file — may slow page loads`,"assets.create_asset_modal.alt_text":`Alt Text`,"assets.create_asset_modal.alt_text_recommended_warning":`⚠️ Recommended for accessibility`,"assets.create_asset_modal.name_placeholder":`Asset name`,"assets.create_asset_modal.description_placeholder":`Optional description`,"assets.create_asset_modal.alt_text_placeholder":`Describe this image for screen readers`,"assets.create_asset_modal.upload_asset":`Upload Asset`,"assets.create_asset_modal.preview_alt":`Preview`,"assets.create_asset_modal.remove_file":`Remove file`,"assets.create_asset_modal.upload_failed":`Upload failed. Please try again.`,"assets.asset_detail_preview.modal_preview":`Modal Preview`,"assets.asset_detail_preview.description":`Launch the asset detail dialog from inside the preview stage so the shared
2
2
  playground stays navigable.`,"assets.asset_detail_preview.open_asset_detail":`Open Asset Detail`,"assets.create_asset_modal_preview.modal_preview":`Modal Preview`,"assets.create_asset_modal_preview.title":`Create Asset Modal`,"assets.create_asset_modal_preview.description":`Open the upload dialog from inside the preview stage to exercise the real
3
3
  modal flow without covering the host navigation.`,"assets.create_asset_modal_preview.open_upload_modal":`Open Upload Modal`,"assets.create_asset_modal_preview.alt_text":`Alt Text`,"assets.asset_manager_route.eyebrow":`Package Route Surface`,"assets.asset_manager_route.title":`Asset Manager`,"assets.asset_manager_route.lede":`The reference route for browsing, selecting, and reviewing uploaded
4
4
  assets with the package-owned asset manager UI.`,"assets.asset_manager_route.selection_state":`Selection State`,"assets.asset_manager_route.no_assets_selected":`No assets selected.`,"assets.asset_manager_route.assets_selected":`asset{plural} selected.`,"assets.asset_manager_route.custom_action_example":`Custom Action Example`,"assets.asset_manager_route.custom_action_description":`This route keeps package-owned defaults while leaving room for app