@happyvertical/smrt-planner 0.57.10 → 0.57.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/404.html +18 -18
- package/app/_app/immutable/chunks/{BcJKtq2F.js → 2dmW8nz3.js} +1 -1
- package/app/_app/immutable/chunks/{B8E24yMk.js → 38SS-Q6Y.js} +22 -22
- package/app/_app/immutable/chunks/{DW79t1vy.js → 5TDxHd66.js} +1 -1
- package/app/_app/immutable/chunks/{Ca9JDQSZ.js → 8MGlmWc0.js} +1 -1
- package/app/_app/immutable/chunks/{3_lSLC95.js → 9PL91wDk.js} +3 -3
- package/app/_app/immutable/chunks/{BrCY97j8.js → 9iVbSlQr.js} +1 -1
- package/app/_app/immutable/chunks/{BJkkdpt6.js → B-xSgl5J.js} +1 -1
- package/app/_app/immutable/chunks/{D_UDCkmn.js → B88mVEob.js} +1 -1
- package/app/_app/immutable/chunks/{BQ9ZEt20.js → BCvXlTRf.js} +1 -1
- package/app/_app/immutable/chunks/{Dtg9VmJu.js → BDKUpjK6.js} +2 -2
- package/app/_app/immutable/chunks/{B_fNGkDj.js → BQgbhyQu.js} +1 -1
- package/app/_app/immutable/chunks/{uwP-KE-4.js → BTm4M8Ke.js} +1 -1
- package/app/_app/immutable/chunks/{BOnYtz9o.js → BgtC60Dj.js} +1 -1
- package/app/_app/immutable/chunks/{r5OwMGa4.js → Bq35Wl4H.js} +1 -1
- package/app/_app/immutable/chunks/{B6gBDIV5.js → ByKA-VaR.js} +1 -1
- package/app/_app/immutable/chunks/{Dyq3fEtw.js → CQFoqqzT.js} +1 -1
- package/app/_app/immutable/chunks/Cu77BRmy.js +1 -0
- package/app/_app/immutable/chunks/CxZIUuYu.js +1 -0
- package/app/_app/immutable/chunks/{96VRYAVc.js → CzHmSbsw.js} +1 -1
- package/app/_app/immutable/chunks/{BYU6OPE_.js → D4791-Ex.js} +1 -1
- package/app/_app/immutable/chunks/{CNPq2Xan.js → DDtOXC2p.js} +1 -1
- package/app/_app/immutable/chunks/{DBRsIgsN.js → DU3stPaX.js} +1 -1
- package/app/_app/immutable/chunks/{D4Zz15-m.js → DaWOaOo5.js} +1 -1
- package/app/_app/immutable/chunks/{CSH4CpXc.js → DbH3RuTE.js} +1 -1
- package/app/_app/immutable/chunks/{C_l5LMLU.js → _CcVkMEQ.js} +1 -1
- package/app/_app/immutable/chunks/{_POSXbxx.js → aDZBV4Ss.js} +1 -1
- package/app/_app/immutable/chunks/{uam3iMzq.js → bBI0F4nt.js} +1 -1
- package/app/_app/immutable/chunks/{DfbMC3Y-.js → oV81RcfI.js} +1 -1
- package/app/_app/immutable/chunks/{CSMaXbR9.js → pEiNEXSh.js} +1 -1
- package/app/_app/immutable/entry/{app.CE5L6nrT.js → app.C8En00Ny.js} +2 -2
- package/app/_app/immutable/entry/start.DQ2WMDJa.js +1 -0
- package/app/_app/immutable/nodes/{0.zFniWZ1C.js → 0.CjivLsXS.js} +1 -1
- package/app/_app/immutable/nodes/{1.xs4_O1Je.js → 1.CoV_40km.js} +1 -1
- package/app/_app/immutable/nodes/{10.D9X8WSNf.js → 10.CRcxQ1FU.js} +1 -1
- package/app/_app/immutable/nodes/{11.Bi2U-6qq.js → 11.Csg6XAcG.js} +1 -1
- package/app/_app/immutable/nodes/{12.C4acpXYz.js → 12.CuTHLuEu.js} +1 -1
- package/app/_app/immutable/nodes/{13.B_0Ho6or.js → 13.CNdfx5uO.js} +1 -1
- package/app/_app/immutable/nodes/{14.Go5zALYK.js → 14.CvNTiqf4.js} +1 -1
- package/app/_app/immutable/nodes/{2._ehd3rAn.js → 2.D8ImYTF0.js} +3 -3
- package/app/_app/immutable/nodes/{3.Hx5Dm4PX.js → 3.DC8-sgUI.js} +1 -1
- package/app/_app/immutable/nodes/{4.BBRCNpL_.js → 4.DcX0DIX9.js} +1 -1
- package/app/_app/immutable/nodes/{5.CuDaLolQ.js → 5.Opk77twi.js} +1 -1
- package/app/_app/immutable/nodes/{6.5VOfeNy5.js → 6.Uk9tXC7t.js} +1 -1
- package/app/_app/immutable/nodes/{7.DEhU--zj.js → 7.Q7dzrAos.js} +1 -1
- package/app/_app/immutable/nodes/{8.BBQS_7la.js → 8.CacSxuCP.js} +1 -1
- package/app/_app/immutable/nodes/{9.DJkyZoBl.js → 9.z7vXbrbH.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +21 -21
- package/app/ai/index.html +24 -24
- package/app/blueprint/index.html +19 -19
- package/app/cookbook/index.html +19 -19
- package/app/index.html +31 -31
- package/app/m/ads/AdDeliveryTier/index.html +23 -23
- package/app/m/ads/AdEvent/index.html +23 -23
- package/app/m/ads/AdFormat/index.html +23 -23
- package/app/m/ads/AdGroup/index.html +23 -23
- package/app/m/ads/AdVariation/index.html +23 -23
- package/app/m/analytics/AnalyticsDataStream/index.html +23 -23
- package/app/m/analytics/AnalyticsEvent/index.html +23 -23
- package/app/m/analytics/AnalyticsProperty/index.html +23 -23
- package/app/m/analytics/AnalyticsReport/index.html +23 -23
- package/app/m/approvals/ApprovalEvent/index.html +23 -23
- package/app/m/approvals/ApprovalPolicy/index.html +23 -23
- package/app/m/approvals/ApprovalRequest/index.html +23 -23
- package/app/m/assets/Asset/attachments/index.html +24 -24
- package/app/m/assets/Asset/index.html +23 -23
- package/app/m/assets/AssetAssociation/index.html +23 -23
- package/app/m/assets/AssetMetafield/index.html +23 -23
- package/app/m/assets/AssetStatus/index.html +23 -23
- package/app/m/assets/AssetType/index.html +23 -23
- package/app/m/assets/Folder/index.html +23 -23
- package/app/m/chat/AgentSession/index.html +23 -23
- package/app/m/chat/ChatMessage/index.html +23 -23
- package/app/m/chat/ChatParticipant/index.html +23 -23
- package/app/m/chat/ChatReaction/index.html +23 -23
- package/app/m/chat/ChatRoom/index.html +23 -23
- package/app/m/chat/ChatThread/index.html +23 -23
- package/app/m/chat/VoiceGatewayTurn/index.html +23 -23
- package/app/m/chat/VoiceSession/index.html +23 -23
- package/app/m/commerce/Agreement/index.html +23 -23
- package/app/m/commerce/Cart/index.html +23 -23
- package/app/m/commerce/Contract/index.html +23 -23
- package/app/m/commerce/ContractLineItem/index.html +23 -23
- package/app/m/commerce/Customer/index.html +23 -23
- package/app/m/commerce/DocumentTax/index.html +23 -23
- package/app/m/commerce/Estimate/index.html +23 -23
- package/app/m/commerce/Fulfillment/index.html +23 -23
- package/app/m/commerce/FulfillmentLineItem/index.html +23 -23
- package/app/m/commerce/HistoricalCustomerFunds/index.html +23 -23
- package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +23 -23
- package/app/m/commerce/HistoricalSalesLine/index.html +23 -23
- package/app/m/commerce/Invoice/index.html +23 -23
- package/app/m/commerce/InvoiceLineItem/index.html +23 -23
- package/app/m/commerce/Lease/index.html +23 -23
- package/app/m/commerce/LicenseSale/index.html +23 -23
- package/app/m/commerce/Order/index.html +23 -23
- package/app/m/commerce/Payment/index.html +23 -23
- package/app/m/commerce/PaymentAllocation/index.html +23 -23
- package/app/m/commerce/PaymentInstrument/index.html +23 -23
- package/app/m/commerce/PaymentIntent/index.html +23 -23
- package/app/m/commerce/Payout/index.html +23 -23
- package/app/m/commerce/ProductionOrder/index.html +23 -23
- package/app/m/commerce/PurchaseContract/index.html +23 -23
- package/app/m/commerce/PurchaseOrder/index.html +23 -23
- package/app/m/commerce/SalesContract/index.html +23 -23
- package/app/m/commerce/SupplierQuote/index.html +23 -23
- package/app/m/commerce/TaxCode/index.html +23 -23
- package/app/m/commerce/TaxComponent/index.html +23 -23
- package/app/m/commerce/TaxSettings/index.html +23 -23
- package/app/m/commerce/TaxSummaryReport/index.html +23 -23
- package/app/m/commerce/TenantPaymentAccount/index.html +88 -0
- package/app/m/commerce/Vendor/index.html +23 -23
- package/app/m/commerce/WholesaleOrder/index.html +23 -23
- package/app/m/content/Content/index.html +23 -23
- package/app/m/content/ContentContribution/index.html +23 -23
- package/app/m/content/ContentContributionAttachment/index.html +23 -23
- package/app/m/content/ContentContributionRevision/index.html +23 -23
- package/app/m/content/ContentContributionType/index.html +23 -23
- package/app/m/content/ContentContributor/index.html +23 -23
- package/app/m/content/ContentCorrection/index.html +23 -23
- package/app/m/content/ContentFeedSource/index.html +23 -23
- package/app/m/content/ContentGovernanceAssignment/index.html +23 -23
- package/app/m/content/ContentGovernancePolicy/index.html +23 -23
- package/app/m/content/ContentGovernanceProfile/index.html +23 -23
- package/app/m/content/ContentReference/index.html +23 -23
- package/app/m/content/ContentReview/index.html +23 -23
- package/app/m/content/ContentVersion/index.html +23 -23
- package/app/m/events/Event/index.html +23 -23
- package/app/m/events/EventParticipant/index.html +23 -23
- package/app/m/events/EventSeries/index.html +23 -23
- package/app/m/events/EventType/index.html +23 -23
- package/app/m/expenses/Expense/index.html +23 -23
- package/app/m/facts/Fact/index.html +23 -23
- package/app/m/facts/FactContent/index.html +23 -23
- package/app/m/facts/FactEvidence/index.html +23 -23
- package/app/m/facts/FactSource/index.html +23 -23
- package/app/m/facts/FactSubject/index.html +23 -23
- package/app/m/facts/FactTag/index.html +23 -23
- package/app/m/fields/FieldPolicy/index.html +23 -23
- package/app/m/fields/FieldPolicySuggestion/index.html +23 -23
- package/app/m/fields/FieldUsageCounter/index.html +23 -23
- package/app/m/images/Image/index.html +23 -23
- package/app/m/inventory/InventoryLocation/index.html +23 -23
- package/app/m/inventory/StockLevel/index.html +23 -23
- package/app/m/inventory/StockMovement/index.html +23 -23
- package/app/m/ledgers/Account/index.html +23 -23
- package/app/m/ledgers/Journal/index.html +23 -23
- package/app/m/ledgers/JournalEntry/index.html +23 -23
- package/app/m/ledgers/Ledger/index.html +23 -23
- package/app/m/manufacturing/Assembly/index.html +23 -23
- package/app/m/manufacturing/BillOfMaterials/index.html +23 -23
- package/app/m/manufacturing/BomLine/index.html +23 -23
- package/app/m/manufacturing/Operation/index.html +23 -23
- package/app/m/manufacturing/ProductionRun/index.html +23 -23
- package/app/m/manufacturing/ProductionRunCompletion/index.html +23 -23
- package/app/m/manufacturing/RoutingStep/index.html +23 -23
- package/app/m/marketing/Campaign/index.html +23 -23
- package/app/m/marketing/CampaignChannel/index.html +23 -23
- package/app/m/marketing/CampaignMetricSnapshot/index.html +23 -23
- package/app/m/messages/Account/index.html +23 -23
- package/app/m/messages/Attachment/index.html +23 -23
- package/app/m/messages/Blacklist/index.html +23 -23
- package/app/m/messages/Email/failed-sends/index.html +24 -24
- package/app/m/messages/Email/index.html +23 -23
- package/app/m/messages/Email/mailbox/index.html +24 -24
- package/app/m/messages/EmailAccount/index.html +23 -23
- package/app/m/messages/EmailAttachment/index.html +23 -23
- package/app/m/messages/EmailFolder/index.html +23 -23
- package/app/m/messages/Message/index.html +23 -23
- package/app/m/messages/MessagingEndpoint/index.html +23 -23
- package/app/m/messages/PersonaMessageRoute/index.html +23 -23
- package/app/m/messages/SlackAccount/index.html +23 -23
- package/app/m/messages/SlackMessage/index.html +23 -23
- package/app/m/messages/TelegramAccount/index.html +23 -23
- package/app/m/messages/Tweet/index.html +23 -23
- package/app/m/messages/TwitterAccount/index.html +23 -23
- package/app/m/messages/Whitelist/index.html +23 -23
- package/app/m/messages/ZulipAccount/index.html +23 -23
- package/app/m/places/Place/index.html +23 -23
- package/app/m/places/PlaceType/index.html +23 -23
- package/app/m/products/Category/index.html +23 -23
- package/app/m/products/Material/index.html +23 -23
- package/app/m/products/Product/index.html +23 -23
- package/app/m/products/Product/ingredients/index.html +24 -24
- package/app/m/products/ProductVariant/index.html +23 -23
- package/app/m/products/Sku/index.html +23 -23
- package/app/m/profiles/ApiKey/index.html +23 -23
- package/app/m/profiles/Bot/index.html +23 -23
- package/app/m/profiles/MagicLinkToken/index.html +23 -23
- package/app/m/profiles/NostrIdentity/index.html +23 -23
- package/app/m/profiles/OidcIdentity/index.html +23 -23
- package/app/m/profiles/Organization/index.html +23 -23
- package/app/m/profiles/Person/index.html +23 -23
- package/app/m/profiles/Profile/index.html +23 -23
- package/app/m/profiles/ProfileMetadata/index.html +23 -23
- package/app/m/profiles/ProfileMetafield/index.html +23 -23
- package/app/m/profiles/ProfileRelationship/index.html +23 -23
- package/app/m/profiles/ProfileRelationshipTerm/index.html +23 -23
- package/app/m/profiles/ProfileRelationshipType/index.html +23 -23
- package/app/m/profiles/ProfileType/index.html +23 -23
- package/app/m/projects/Comment/index.html +23 -23
- package/app/m/projects/Issue/index.html +23 -23
- package/app/m/projects/Label/index.html +23 -23
- package/app/m/projects/Project/index.html +23 -23
- package/app/m/projects/ProjectIntegration/index.html +23 -23
- package/app/m/projects/PullRequest/index.html +23 -23
- package/app/m/projects/Repository/index.html +23 -23
- package/app/m/properties/Property/index.html +23 -23
- package/app/m/properties/Zone/index.html +23 -23
- package/app/m/reports/RuntimeReport/index.html +23 -23
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +23 -23
- package/app/m/reports/SmrtReportLock/index.html +23 -23
- package/app/m/reports/SmrtReportRefreshTask/index.html +23 -23
- package/app/m/reports/SmrtReportRun/index.html +23 -23
- package/app/m/reports/SmrtReportSchedule/index.html +23 -23
- package/app/m/reports/SmrtReportWatermark/index.html +23 -23
- package/app/m/sales/Agreement/index.html +23 -23
- package/app/m/sales/AttributionException/index.html +23 -23
- package/app/m/sales/AttributionPolicy/index.html +23 -23
- package/app/m/sales/Commission/index.html +23 -23
- package/app/m/sales/CommissionAdjustment/index.html +23 -23
- package/app/m/sales/CommissionPayout/index.html +23 -23
- package/app/m/sales/CommissionPlan/index.html +23 -23
- package/app/m/sales/Earner/index.html +23 -23
- package/app/m/sales/EarnerSourceAttribution/index.html +23 -23
- package/app/m/sales/EarningEvent/index.html +23 -23
- package/app/m/sales/ExecutedAgreement/index.html +23 -23
- package/app/m/sales/Lead/index.html +23 -23
- package/app/m/sales/Opportunity/index.html +23 -23
- package/app/m/sales/OpportunityConversion/index.html +23 -23
- package/app/m/sales/PipelineDefinition/index.html +23 -23
- package/app/m/sales/PipelineStage/index.html +23 -23
- package/app/m/sales/Referral/index.html +23 -23
- package/app/m/sales/ReferralAgreement/index.html +23 -23
- package/app/m/sales/ReferralLink/index.html +23 -23
- package/app/m/sales/ReferralProgram/index.html +23 -23
- package/app/m/sales/ReferralTermSnapshot/index.html +23 -23
- package/app/m/sales/ReferralTouch/index.html +23 -23
- package/app/m/sales/Referrer/index.html +23 -23
- package/app/m/sales/SalesActivity/index.html +23 -23
- package/app/m/sales/SalesRepresentative/index.html +23 -23
- package/app/m/sites/Site/index.html +23 -23
- package/app/m/sites/SiteAgentBinding/index.html +23 -23
- package/app/m/social/OAuthState/index.html +23 -23
- package/app/m/social/SocialAccount/index.html +23 -23
- package/app/m/social/SocialPost/index.html +23 -23
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +23 -23
- package/app/m/subscriptions/BillingAdjustment/index.html +23 -23
- package/app/m/subscriptions/ClientCharge/index.html +23 -23
- package/app/m/subscriptions/CreditGrant/index.html +23 -23
- package/app/m/subscriptions/PricingRule/index.html +23 -23
- package/app/m/subscriptions/RetailCharge/index.html +23 -23
- package/app/m/subscriptions/SpendingPolicy/index.html +23 -23
- package/app/m/subscriptions/SubscriptionPlan/index.html +23 -23
- package/app/m/subscriptions/SubscriptionPlanVersion/index.html +23 -23
- package/app/m/subscriptions/TenantSubscription/index.html +23 -23
- package/app/m/subscriptions/TenantUsageMetric/index.html +23 -23
- package/app/m/support/ServiceTimeEntry/index.html +23 -23
- package/app/m/support/SupportAiRun/index.html +23 -23
- package/app/m/support/SupportAvailability/index.html +23 -23
- package/app/m/support/SupportCase/index.html +23 -23
- package/app/m/support/SupportCaseEvent/index.html +23 -23
- package/app/m/support/SupportChannelBinding/index.html +23 -23
- package/app/m/support/SupportCharge/index.html +23 -23
- package/app/m/support/SupportCompensation/index.html +23 -23
- package/app/m/support/SupportCompensationPlan/index.html +23 -23
- package/app/m/support/SupportEscalation/index.html +23 -23
- package/app/m/support/SupportInteraction/index.html +23 -23
- package/app/m/support/SupportPlan/index.html +23 -23
- package/app/m/support/SupportPolicy/index.html +23 -23
- package/app/m/support/SupportQualification/index.html +23 -23
- package/app/m/support/SupportServiceTarget/index.html +23 -23
- package/app/m/support/SupportSpecialist/index.html +23 -23
- package/app/m/support/SupportWorkLink/index.html +23 -23
- package/app/m/tags/Tag/index.html +23 -23
- package/app/m/tags/TagAlias/index.html +23 -23
- package/app/m/timesheets/AttendanceBreak/index.html +23 -23
- package/app/m/timesheets/AttendancePunch/index.html +23 -23
- package/app/m/timesheets/AttendanceSegment/index.html +23 -23
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +23 -23
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +23 -23
- package/app/m/timesheets/ServiceTimeEntry/index.html +23 -23
- package/app/m/users/Group/index.html +23 -23
- package/app/m/users/GroupMember/index.html +23 -23
- package/app/m/users/GroupRole/index.html +23 -23
- package/app/m/users/Membership/index.html +23 -23
- package/app/m/users/MembershipOverride/index.html +23 -23
- package/app/m/users/Permission/index.html +23 -23
- package/app/m/users/Role/index.html +23 -23
- package/app/m/users/RolePermission/index.html +23 -23
- package/app/m/users/Session/index.html +23 -23
- package/app/m/users/Tenant/index.html +23 -23
- package/app/m/users/TenantIntegration/index.html +23 -23
- package/app/m/users/TenantPermissionOverride/index.html +23 -23
- package/app/m/users/User/index.html +23 -23
- package/app/m/video/Character/index.html +23 -23
- package/app/m/video/CharacterAsset/index.html +23 -23
- package/app/m/video/CompositeJob/index.html +23 -23
- package/app/m/video/Performer/index.html +23 -23
- package/app/m/video/PerformerAsset/index.html +23 -23
- package/app/m/video/Scene/index.html +23 -23
- package/app/m/video/SceneAsset/index.html +23 -23
- package/app/m/video/VideoComposition/index.html +23 -23
- package/app/m/video/VideoCompositionAsset/index.html +23 -23
- package/app/m/video/VideoSequence/index.html +23 -23
- package/app/m/video/VideoSequenceAsset/index.html +23 -23
- package/app/m/video/VideoShot/index.html +23 -23
- package/app/m/video/VideoShotAsset/index.html +23 -23
- package/app/m/video/VideoShotCharacter/index.html +23 -23
- package/app/m/video/VideoWorkflow/index.html +23 -23
- package/app/m/voice/VoiceOutput/index.html +23 -23
- package/app/m/voice/VoiceProfile/index.html +23 -23
- package/app/m/voice/VoiceSample/index.html +23 -23
- package/app/mcp.html +2 -2
- package/app/packages/ads/index.html +21 -21
- package/app/packages/analytics/index.html +21 -21
- package/app/packages/approvals/index.html +21 -21
- package/app/packages/assets/index.html +21 -21
- package/app/packages/chat/index.html +21 -21
- package/app/packages/comments/index.html +21 -21
- package/app/packages/commerce/index.html +22 -22
- package/app/packages/content/index.html +21 -21
- package/app/packages/events/index.html +21 -21
- package/app/packages/expenses/index.html +21 -21
- package/app/packages/facts/index.html +21 -21
- package/app/packages/fields/index.html +21 -21
- package/app/packages/human-resources/index.html +21 -21
- package/app/packages/images/index.html +21 -21
- package/app/packages/index.html +21 -21
- package/app/packages/ingestion/index.html +21 -21
- package/app/packages/inventory/index.html +21 -21
- package/app/packages/ledgers/index.html +21 -21
- package/app/packages/manufacturing/index.html +21 -21
- package/app/packages/marketing/index.html +21 -21
- package/app/packages/messages/index.html +21 -21
- package/app/packages/places/index.html +21 -21
- package/app/packages/preferences/index.html +21 -21
- package/app/packages/products/index.html +21 -21
- package/app/packages/profiles/index.html +21 -21
- package/app/packages/projects/index.html +21 -21
- package/app/packages/properties/index.html +21 -21
- package/app/packages/reports/index.html +21 -21
- package/app/packages/sales/index.html +21 -21
- package/app/packages/sites/index.html +21 -21
- package/app/packages/social/index.html +21 -21
- package/app/packages/subscriptions/index.html +21 -21
- package/app/packages/support/index.html +21 -21
- package/app/packages/tags/index.html +21 -21
- package/app/packages/timesheets/index.html +21 -21
- package/app/packages/users/index.html +21 -21
- package/app/packages/video/index.html +21 -21
- package/app/packages/voice/index.html +21 -21
- package/app/packages/webhooks/index.html +21 -21
- package/app/recipes/account-access/help/index.html +21 -21
- package/app/recipes/account-access/index.html +23 -23
- package/app/recipes/activity/help/index.html +21 -21
- package/app/recipes/activity/index.html +23 -23
- package/app/recipes/agreements/help/index.html +21 -21
- package/app/recipes/agreements/index.html +23 -23
- package/app/recipes/analytics.reports/help/index.html +21 -21
- package/app/recipes/analytics.reports/index.html +23 -23
- package/app/recipes/assets/help/index.html +21 -21
- package/app/recipes/assets/index.html +23 -23
- package/app/recipes/billing/help/index.html +21 -21
- package/app/recipes/billing/index.html +23 -23
- package/app/recipes/chat.assistant/help/index.html +21 -21
- package/app/recipes/chat.assistant/index.html +23 -23
- package/app/recipes/comments/help/index.html +21 -21
- package/app/recipes/comments/index.html +23 -23
- package/app/recipes/commerce.customers/help/index.html +21 -21
- package/app/recipes/commerce.customers/index.html +23 -23
- package/app/recipes/commerce.estimates/help/index.html +21 -21
- package/app/recipes/commerce.estimates/index.html +23 -23
- package/app/recipes/commerce.purchases/help/index.html +21 -21
- package/app/recipes/commerce.purchases/index.html +23 -23
- package/app/recipes/commerce.sales/help/index.html +21 -21
- package/app/recipes/commerce.sales/index.html +23 -23
- package/app/recipes/commerce.vendors/help/index.html +21 -21
- package/app/recipes/commerce.vendors/index.html +23 -23
- package/app/recipes/commerce.wholesale/help/index.html +21 -21
- package/app/recipes/commerce.wholesale/index.html +23 -23
- package/app/recipes/events.calendar/help/index.html +21 -21
- package/app/recipes/events.calendar/index.html +23 -23
- package/app/recipes/expenses.tracking/help/index.html +21 -21
- package/app/recipes/expenses.tracking/index.html +23 -23
- package/app/recipes/fields.form-customization/help/index.html +21 -21
- package/app/recipes/fields.form-customization/index.html +23 -23
- package/app/recipes/ingestion/help/index.html +21 -21
- package/app/recipes/ingestion/index.html +23 -23
- package/app/recipes/integrations/help/index.html +21 -21
- package/app/recipes/integrations/index.html +23 -23
- package/app/recipes/inventory.stock/help/index.html +21 -21
- package/app/recipes/inventory.stock/index.html +23 -23
- package/app/recipes/ledgers.bookkeeping/help/index.html +21 -21
- package/app/recipes/ledgers.bookkeeping/index.html +23 -23
- package/app/recipes/messages/help/index.html +21 -21
- package/app/recipes/messages/index.html +23 -23
- package/app/recipes/products/help/index.html +21 -21
- package/app/recipes/products/index.html +23 -23
- package/app/recipes/projects.tracker/help/index.html +21 -21
- package/app/recipes/projects.tracker/index.html +23 -23
- package/app/recipes/reports.materialized/help/index.html +21 -21
- package/app/recipes/reports.materialized/index.html +23 -23
- package/app/recipes/reports.runtime/help/index.html +21 -21
- package/app/recipes/reports.runtime/index.html +23 -23
- package/app/recipes/sales.pipeline/help/index.html +21 -21
- package/app/recipes/sales.pipeline/index.html +23 -23
- package/app/recipes/tags.taxonomy/help/index.html +21 -21
- package/app/recipes/tags.taxonomy/index.html +23 -23
- package/app/recipes/team-collaboration/help/index.html +21 -21
- package/app/recipes/team-collaboration/index.html +23 -23
- package/app/recipes/timesheets.time-entries/help/index.html +21 -21
- package/app/recipes/timesheets.time-entries/index.html +23 -23
- package/app/s/custom-accounts/index.html +19 -19
- package/app/s/custom-appointments/index.html +19 -19
- package/app/s/custom-billing/index.html +19 -19
- package/app/s/custom-bookings/index.html +19 -19
- package/app/s/custom-buying/index.html +19 -19
- package/app/s/custom-checkout/index.html +19 -19
- package/app/s/custom-classes/index.html +19 -19
- package/app/s/custom-clients/index.html +19 -19
- package/app/s/custom-events/index.html +19 -19
- package/app/s/custom-fleet/index.html +19 -19
- package/app/s/custom-gigs/index.html +19 -19
- package/app/s/custom-giving/index.html +19 -19
- package/app/s/custom-instruments/index.html +19 -19
- package/app/s/custom-jobs/index.html +19 -19
- package/app/s/custom-kitchen/index.html +19 -19
- package/app/s/custom-lessons/index.html +19 -19
- package/app/s/custom-material/index.html +19 -19
- package/app/s/custom-meetings/index.html +19 -19
- package/app/s/custom-members/index.html +19 -19
- package/app/s/custom-merch/index.html +19 -19
- package/app/s/custom-money/index.html +19 -19
- package/app/s/custom-paint/index.html +19 -19
- package/app/s/custom-parts/index.html +19 -19
- package/app/s/custom-rentals/index.html +19 -19
- package/app/s/custom-roastery/index.html +19 -19
- package/app/s/custom-schedule/index.html +19 -19
- package/app/s/custom-shelf/index.html +19 -19
- package/app/s/custom-shop/index.html +19 -19
- package/app/s/custom-students/index.html +19 -19
- package/app/s/custom-wholesale/index.html +19 -19
- package/app/s/custom-work/index.html +19 -19
- package/app/s/custom-yard/index.html +19 -19
- package/app/s/section-access-control/index.html +19 -19
- package/app/s/section-account-security/index.html +19 -19
- package/app/s/section-accounting/index.html +19 -19
- package/app/s/section-activity/index.html +19 -19
- package/app/s/section-agreements/index.html +19 -19
- package/app/s/section-analytics/index.html +19 -19
- package/app/s/section-assets/index.html +19 -19
- package/app/s/section-billing/index.html +19 -19
- package/app/s/section-calendar/index.html +19 -19
- package/app/s/section-catalog/index.html +19 -19
- package/app/s/section-chat.assistant/index.html +19 -19
- package/app/s/section-comments/index.html +19 -19
- package/app/s/section-fields.form-customization/index.html +19 -19
- package/app/s/section-ingestion/index.html +19 -19
- package/app/s/section-integrations/index.html +19 -19
- package/app/s/section-messages/index.html +19 -19
- package/app/s/section-more/index.html +19 -19
- package/app/s/section-operations/index.html +19 -19
- package/app/s/section-projects/index.html +19 -19
- package/app/s/section-purchasing/index.html +19 -19
- package/app/s/section-reports.materialized/index.html +19 -19
- package/app/s/section-reports.runtime/index.html +19 -19
- package/app/s/section-sales/index.html +19 -19
- package/app/s/section-taxonomy/index.html +19 -19
- package/app/s/section-team/index.html +19 -19
- package/app/s/section-work/index.html +19 -19
- package/dist/catalog/catalog.json +433 -38
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +56 -56
- package/app/_app/immutable/chunks/C0j8AWpY.js +0 -1
- package/app/_app/immutable/chunks/DVz35q0T.js +0 -1
- package/app/_app/immutable/entry/start.DqnRapAN.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$ as e,B as t,Ct as n,Dt as r,E as i,Et as a,F as o,Ft as s,G as c,H as l,I as u,K as d,L as f,Lt as p,Ot as m,Pt as h,U as g,W as _,X as v,Y as y,a as b,bt as x,ct as S,d as C,ft as w,gt as T,ht as E,k as ee,mt as D,pt as O,q as k,st as A,v as j,vt as M}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{a as N}from"./Bv5jGtB8.js";import"./YUSKx8_q.js";import{ft as P,lt as te,p as F,u as I,ut as ne}from"./
|
|
1
|
+
import{$ as e,B as t,Ct as n,Dt as r,E as i,Et as a,F as o,Ft as s,G as c,H as l,I as u,K as d,L as f,Lt as p,Ot as m,Pt as h,U as g,W as _,X as v,Y as y,a as b,bt as x,ct as S,d as C,ft as w,gt as T,ht as E,k as ee,mt as D,pt as O,q as k,st as A,v as j,vt as M}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{a as N}from"./Bv5jGtB8.js";import"./YUSKx8_q.js";import{ft as P,lt as te,p as F,u as I,ut as ne}from"./38SS-Q6Y.js";import"./DK8Blf1Y.js";import"./DF-0MxNw.js";import"./D4791-Ex.js";y([`click`]),y([`click`,`keydown`]),y([`click`]);var L=new Map(Object.entries({menu:`M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z`,search:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z`,close:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z`,"chevron-right":`M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6-6-6z`,"chevron-left":`M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z`,"chevron-down":`M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z`,check:`M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z`,add:`M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z`,mic:`M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.04 6.43 5 7.07V21h4v-2.93c2.96-.64 5-3.54 5-7.07h-2z`,alert:`M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 5h2v6h-2zm0 8h2v2h-2z`,warning:`M1 21h22L12 2 1 21zm12-3h-2v-2h2zm0-4h-2v-4h2z`,info:`M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 15h-2v-6h2zm0-8h-2V7h2z`,home:`M3 10 12 2 21 10v11h-6v-7H9v7H3z`,user:`M12 3a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM4 21v-2c0-4 16-4 16 0v2H4z`,settings:`M10 2h4l1 3 3-1 3 3-1 3 3 1v4l-3 1 1 3-3 3-3-1-1 3h-4l-1-3-3 1-3-3 1-3-3-1v-4l3-1-1-3 3-3 3 1 1-3zm2 6a4 4 0 1 0 0 8 4 4 0 0 0 0-8z`,trash:`M7 3h10v2h4v2H3V5h4V3zm-2 6h14v12H5V9zm4 2v8h2v-8H9zm4 0v8h2v-8h-2z`,edit:`M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z`,calendar:`M7 2h2v2h6V2h2v2h4v18H3V4h4V2zm-2 8v10h14V10H5zm2 2h4v4H7v-4z`,clock:`M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm0 2a8 8 0 1 1 0 16 8 8 0 0 1 0-16zm-1 2h2v5.5l4 2.5-1 1.5-5-3V6z`,camera:`M9 3h6l2 3h4v15H3V6h4l2-3zm3 5a5 5 0 1 0 0 10 5 5 0 0 0 0-10zm0 2a3 3 0 1 1 0 6 3 3 0 0 1 0-6z`,upload:`M11 16V7l-4 4-1.5-1.5L12 3l6.5 6.5L17 11l-4-4v9h-2zM3 18h18v3H3v-3z`,download:`M11 3h2v9l4-4 1.5 1.5L12 16l-6.5-6.5L7 8l4 4V3zM3 18h18v3H3v-3z`})),R=x([]);function z(t){for(let n=e(R).length-1;n>=0;n--){let r=e(R)[n].paths.get(t);if(r!==void 0)return r}return L.get(t)}var B=d(`<svg xmlns="http://www.w3.org/2000/svg" data-smrt-component="Icon" class="svelte-em2a54"><path></path></svg>`);function V(t,i){m(i,!0);let a=b(i,`size`,3,24),o=b(i,`color`,3,`currentColor`),s=b(i,`viewBox`,3,`0 0 24 24`),c=n(()=>!!i[`aria-label`]),l=n(()=>i.path??(i.name?z(i.name):``)),u=n(()=>typeof a()==`number`?`${a()}px`:a());var d=B(),f=D(d);A(()=>{j(d,`width`,e(u)),j(d,`height`,e(u)),j(d,`viewBox`,s()),j(d,`fill`,o()),j(d,`aria-hidden`,!e(c)),j(d,`aria-label`,i[`aria-label`]),j(d,`role`,e(c)?`img`:void 0),j(f,`d`,e(l))}),g(t,d),r()}var re=c(`<p class="empty-description svelte-1x475nf"> </p>`),ie=c(`<a class="action-button svelte-1x475nf"> </a>`),ae=c(`<button type="button" class="action-button svelte-1x475nf"> </button>`),oe=c(`<div data-smrt-component="EmptyState"><div class="icon-container svelte-1x475nf"><!></div> <h3 class="empty-title svelte-1x475nf"> </h3> <!> <!></div>`);function se(e,n){let r=b(n,`icon`,3,`inbox`),a=b(n,`size`,3,`md`),c={document:`<svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
2
2
|
<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6z"/>
|
|
3
3
|
<path d="M14 2v6h6M16 13H8M16 17H8M10 9H8"/>
|
|
4
4
|
</svg>`,folder:`<svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,bt as t,tt as n,vt as r}from"./DG3qFFTE.js";import{F as i,N as a,P as o,at as s,et as c,it as l,lt as u,w as d}from"./
|
|
1
|
+
import{$ as e,bt as t,tt as n,vt as r}from"./DG3qFFTE.js";import{F as i,N as a,P as o,at as s,et as c,it as l,lt as u,w as d}from"./38SS-Q6Y.js";import{h as f,r as p}from"./9PL91wDk.js";import{c as m}from"./aDZBV4Ss.js";import"./CxZIUuYu.js";import{a as h,i as ee,n as g,o as te,r as ne,s as re}from"./BDKUpjK6.js";import{B as ie,N as _,R as v,U as y,b,j as x,t as S,v as C,x as w}from"./9iVbSlQr.js";import{b as T,v as E,x as D,y as O}from"./DbH3RuTE.js";import{n as k}from"./pEiNEXSh.js";import{t as A}from"./CQFoqqzT.js";import{r as j,t as M}from"./CzHmSbsw.js";import{a as N,c as P,d as F,l as I,n as L}from"./BTm4M8Ke.js";function R(e,t=E.appliedWork){return D(e.snapshot(),t)}function z(e,t,n){let r=O(e,te,n);if(r.ok){let n=t.theme,a=r.cookbook.theme,o=a?a.colorScheme||!n?.colorScheme?void 0:{...a,colorScheme:n.colorScheme}:n;t.replace(r.cookbook),o&&(t.theme=o),i(e.id),E.select(e.id,T(t.snapshot()))}return r}function B(e,t){return e.document.recipes.every(e=>t.recipes.includes(e))&&e.document.features.every(e=>t.features.includes(e))}function V(e){let t=e.recipes.flatMap(e=>{let t=w.get(e);return t?[t]:[]}),n=v(t).map(e=>{let t=new Set,n=[];for(let r of e.recipes)for(let e of C(r)){let r=ie(e.packageId,e.model.name,e.key);t.has(r)||(t.add(r),n.push({id:r,href:`#`,label:e.label,icon:e.icon,description:e.description}))}return{id:`section:${e.id}`,heading:e.label,items:n}}).filter(e=>e.items.length>0),r=_(e.features).map(e=>({id:e.id,href:`#`,label:e.label,icon:e.icon,description:e.description}));return r.length&&n.push({id:`section:${x.id}`,heading:x.label,items:r}),n}function H(e){let t=e.layout;return f([],V(e),void 0,t).groups.map(e=>({id:e.id??String(e.heading),label:e.heading??``,entries:e.items.map(e=>({id:e.id??e.href,label:t?.items?.[e.id??e.href]?.label?.trim()||e.label}))}))}var U={live:`Live`,mock:`Mock`,sample:`Sample`,server:`Server`},W={live:`Runs for real in your browser.`,mock:`Runs in your browser, but a provider is faked.`,sample:`Shows sample data only; it cannot reach what it needs.`,server:`Needs a server, which this browser-only demo does not have.`},G={live:`success`,mock:`info`,sample:`warning`,server:`default`};function K(e){return e.effectiveDemo??e.demo}function q(e){if(e)return{mode:e.mode,label:U[e.mode],meaning:W[e.mode],variant:G[e.mode],reasons:e.reasons,mocked:e.mocked??[]}}function J(e){if(!e)return;if(e.status===`browser-safe`)return`Its package builds for a browser.`;let t=[`Its package does not build for a browser yet`];return e.reason&&t.push(`(${e.reason})`),e.issues?.length&&t.push(`and is tracked in ${e.issues.join(`, `)}`),`${t.join(` `)}.`}var Y=`@happyvertical/smrt-commerce:`,ae=`${Y}TaxCode`,oe=`${Y}TaxComponent`,X=`${Y}TaxSettings`,se=`${Y}DocumentTax`;function Z(){let e=o()??.05;return{codes:l(e),fallback:c(e)}}function Q(e){try{let t=e?.getItem(ee);if(!t)return;let n=re(t,{dropUnknownRecipes:!0});n.ok&&ne(n.cookbook)}catch{}}function ce(){return Q(h()),M({storage:h(),defaults:e=>S.apply(e).background,empty:[N,L,se,A],samples:{[ae]:{from:[],make:()=>Z().codes.map(e=>({id:e.id,code:e.code,name:e.name,kind:e.kind,appliesTo:e.appliesTo,active:e.active,componentsJson:JSON.stringify(e.components.map(e=>({taxComponentId:e.id,compound:!1})))}))},[oe]:{from:[],make:()=>s(Z().codes).map(e=>({id:e.id,name:e.name,percent:e.percent,liabilityAccountId:null,recoverable:e.recoverable,active:!0}))},[X]:{from:[],make:()=>{let{fallback:e}=Z(),t=a();return[{id:d(`${X}:sample`),defaultSalesTaxCodeId:e.id,defaultPurchaseTaxCodeId:e.id,defaultLineAmountType:t.pricesIncludeTax?`inclusive`:`exclusive`,taxRoundingScope:t.taxRounding}]}},...P(j),[I]:{from:[j(`@happyvertical/smrt-products:Product`)],make:([e])=>(e??[]).map((e,t)=>({id:d(`${I}:sample:${e.id}`),name:`${String(e.name??`Product`)} image`,sourceUri:`data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240"><rect width="240" height="240" fill="hsl(${t*47%360} 40% 82%)"/><circle cx="120" cy="94" r="46" fill="hsl(${(t*47+30)%360} 35% 58%)"/><path d="M44 214c20-55 132-55 152 0" fill="hsl(${(t*47+10)%360} 30% 46%)"/><text x="120" y="224" text-anchor="middle" font-family="sans-serif" font-size="14" fill="white">${String(e.name??``).replace(/[<&>]/g,``)}</text></svg>`)}`,mimeType:`image/svg+xml`,description:`Sample image for ${String(e.name??`this product`)}.`,sourceType:`browser-demo`}))},[F]:{from:[j(`@happyvertical/smrt-products:Product`),j(I)],make:([e,t])=>(e??[]).flatMap((e,n)=>{let r=t?.[n];return r?[{id:d(`${F}:sample:${e.id}`),productId:e.id,assetId:r.id,relationship:`gallery`,sortOrder:0}]:[]})}},children:{models:u.packages.flatMap(e=>e.models),links:e=>y(u,b,e)}})}var le=new class{#e=t(void 0);get endpoint(){return e(this.#e)}set endpoint(e){r(this.#e,e,!0)}#t=t(!1);get tokenInConfig(){return e(this.#t)}set tokenInConfig(e){r(this.#t,e,!0)}#n=t(void 0);get token(){return e(this.#n)}set token(e){r(this.#n,e,!0)}#r=t(`idle`);get status(){return e(this.#r)}set status(e){r(this.#r,e,!0)}#i=t(void 0);get outcome(){return e(this.#i)}set outcome(e){r(this.#i,e,!0)}get config(){return this.endpoint&&this.token&&!this.tokenInConfig?{endpoint:this.endpoint,token:this.token}:void 0}get needsLink(){return!!this.endpoint&&!this.token&&!this.tokenInConfig}configure(e,t){this.endpoint=e?.endpoint,this.tokenInConfig=e?.tokenInConfig===!0,this.token=e?t:void 0,this.status=`idle`,this.outcome=void 0}async send(e,t){let n=this.config;if(!n||this.status===`sending`)return;this.status=`sending`,this.outcome=void 0;let r=await m(n,e,t);this.outcome=r,this.status=r.ok?`sent`:`failed`}},$=`cookbook`,ue=new class{#e=t(null);get open(){return e(this.#e)}set open(e){r(this.#e,e,!0)}#t=t(null);get returnTo(){return e(this.#t)}set returnTo(e){r(this.#t,e,!0)}navigator=null;show(e){this.returnTo=e,this.navigator?this.navigator.open(e):this.set(e)}back(){this.open&&(this.returnTo=this.open),this.navigator?this.navigator.close():this.set(null)}async set(e,t=!0){this.open!==e&&(t?await p(async()=>{this.open=e,await n()}):this.open=e)}};function de(e,t){let n=new URLSearchParams(e).get($);return n&&t.includes(n)?n:null}function fe(e,t){let n=new URLSearchParams(e);t?n.set($,t):n.delete($);let r=n.toString().replace(/%2C/gi,`,`);return r?`?${r}`:``}var pe=`Planner`;function me(e,t,n=k,r=pe){let i=e.name?.trim();if(i)return i;let a=t?n.find(e=>e.id===t):void 0;return a&&B(a,e)?a.name:r}function he(e){return me(g.snapshot(),E.active,void 0,e)}export{le as a,q as c,H as d,z as f,fe as i,K as l,R as m,de as n,ce as o,B as p,ue as r,J as s,he as t,V as u};
|
|
@@ -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{xt as g}from"./
|
|
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{xt as g}from"./38SS-Q6Y.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 +1 @@
|
|
|
1
|
-
import{t as e}from"./
|
|
1
|
+
import{t as e}from"./CxZIUuYu.js";var t=new Map;function n(n,r){if(e())return 0;if(typeof document>`u`)return r;let i=t.get(n);if(i!==void 0)return i;let a=getComputedStyle(document.documentElement).getPropertyValue(`--smrt-duration-${n}`).trim(),o=/^([\d.]+)(ms|s)$/.exec(a),s=o?Number(o[1])*(o[2]===`s`?1e3:1):r;return t.set(n,s),s}export{n as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./
|
|
2
|
-
import{$ as e,Et as t,Mt as n,bt as r,vt as i}from"./DG3qFFTE.js";import{t as a}from"./uBIymjUX.js";import"./xihTtKlq.js";import{I as o,K as s,L as c,O as l,U as u,W as d,_ as f,dt as p,ft as m,h,lt as g,p as _,st as v,x as y}from"./B8E24yMk.js";import{g as ee}from"./3_lSLC95.js";import"./DF-0MxNw.js";import"./DIE02RSm.js";import{u as b}from"./BYU6OPE_.js";import{C as x,D as te,E as S,F as ne,I as C,L as re,N as ie,O as ae,S as oe,T as se,_ as ce,b as le,d as ue,g as de,h as fe,n as pe,r as me,v as he,w as ge,x as _e,z as ve}from"./BcJKtq2F.js";import{B as ye,G as be,J as xe,R as Se,V as Ce,W as we,X as Te,Y as Ee,a as De,b as w,c as Oe,d as ke,i as Ae,j as je,l as Me,n as Ne,o as Pe,q as Fe,t as T,v as Ie,x as E,z as Le}from"./BrCY97j8.js";function Re(e){let t=e?.surfaces?.find(e=>e.kind===`widget`&&e.sectionDefault===!0);return t?{id:t.type,type:t.type,span:4,options:{}}:void 0}function ze(e){let t=e.lastIndexOf(`#`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1);return n.startsWith(`.`)||n.startsWith(`/`)||/\s/.test(n)||!/^[A-Za-z_$][\w$]*$/.test(r)?null:{specifier:n,exportName:r}}function D(e,t){let n=ze(e);return n?Promise.resolve(t(n.specifier,n.exportName)).then(t=>{if(t==null)throw Error(`export "${e}" was not found`);return t}):Promise.reject(Error(`invalid export ref "${e}"`))}function Be(e){let t;return()=>(t??=e(),t)}function Ve(e){return typeof e==`object`&&!!e&&`default`in e&&!!e.default}function He(e,t,n){let r=Be(()=>D(e.export,t)),i=e.optionsEditor?Be(()=>D(e.optionsEditor,t)):void 0,a=e.data?.load?Be(()=>D(e.data?.load,t)):void 0,o={type:e.type,title:e.label,options:e.options??[],loadComponent:async()=>{let e=await r();return Ve(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 Ve(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 Ue(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 D(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(He(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 We=[`identifier`,`status`,`date`,`party`,`total`,`money`];function Ge(e){for(let t of[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`])if(e.includes(t))return t}function O(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 We)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:k(n,e),...Ge(t[n]??[])?{role:Ge(t[n]??[])}:{}}))}function Ke(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:k(o,e)}),s&&d.push({key:s,label:k(s,e),role:`quantity`}),l&&d.push({key:l,label:k(l,e),role:`money`,summarize:!1}),u&&u!==l&&d.push({key:u,label:k(u,e),role:`money`}),d}function k(e,t){let n=t.fields[e];return n&&(n.type===`foreignKey`||n.type===`crossPackageRef`)&&/.[a-z]Id$/.test(e)?S(e.slice(0,-2)):S(e)}var qe=[`text`,`integer`,`decimal`,`boolean`,`datetime`,`json`,`foreignKey`,`crossPackageRef`];function Je(e){return qe.includes(e)?e:`text`}var Ye=/(Date|^date|period(Start|End))$/;function Xe(e,t){return t.type===`datetime`&&!t.system&&Ye.test(t.name)&&!e.fields.some(e=>e.name===`allDay`)?`date`:void 0}function Ze(e){return ue(e)[0]}function Qe(e,t){let n=t.ui?{...t.ui}:void 0,r=l(t)?`money`:Xe(e,t);return{type:Je(t.type),required:t.required,nullable:!t.required,...t.default===void 0?{}:{default:t.default},...t.description?{description:t.description}:{},...n?{ui:n}:{},...t.enum?.length?{enum:[...t.enum]}:{},...r?{format:r}:{},...Ze(e)===t.name?{display:!0}:{}}}function $e(e,t){return e.includes(`:`)?e:`${t.slice(0,t.lastIndexOf(`:`))}:${e}`}function et(e,t){if(!t.related)return!1;let n=$e(t.related,e.id);return xe(g,n,s).some(t=>t.id===e.id)}function tt(e){return e.fields.flatMap(t=>{if(t.type!==`foreignKey`&&t.type!==`crossPackageRef`||!t.related)return[];let n=m($e(t.related,e.id));return n?[{field:t.name,kind:t.type===`crossPackageRef`?`crossPackageRef`:`foreignKey`,relatedCollection:n.model.collection,...et(e,t)?{role:`items`}:{}}]:[]})}function A(e){let t=tt(e);return{name:e.collection,objectRef:e.id,className:e.name,idField:`id`,fields:Object.fromEntries(e.fields.map(t=>[t.name,Qe(e,t)])),...t.length?{relationships:t}:{}}}function nt(e,t){return{objectRef:e.id,fields:Object.fromEntries(t.map((e,t)=>[e.name,{visibility:`basic`,label:e.label,help:e.help??null,order:t,required:e.required}]))}}function rt(e,t){let n=new Set(t);for(let t of e)for(let e of t.models)n.add(e);return n}function it(e){return _(e.replace(/_?id$/i,``)||e)}function at(e,t,n){let r=Ee(e,t),i=Te(e,t).filter(e=>e.model.exposed&&n.has(e.model.id)),a=new Set(xe(e,t,s).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 c=i.map(e=>{let t=a.has(e.model.id)?`items`:`children`,n=A(e.model),i=ae(n),s=[e.fk];return{model:e.model.id,field:e.fk,label:(o.get(e.model.id)??0)>1?`${we(e.model.name,r)} (${it(e.fk).toLowerCase()})`:we(e.model.name,r),kind:t,columns:t===`items`?Ke(n,i,{exclude:s}):O(n,i,{exclude:s,max:5}),...t===`items`&&`sortOrder`in n.fields?{sort:`sortOrder`}:{}}});for(let n of be(e,t))c.push({model:n.model.id,field:n.fk,label:it(n.fk),kind:`reference`});return c}var ot=Symbol(`smrt-cookbook`);function st(){return t(ot)}function ct(e,t){let{sections:n}=t;if(!n)throw Error(`the cookbook widget context is missing`);let r=typeof e.section==`string`?e.section:``,i=r?n.find(e=>e.id===`section:${r}`||e.id===`custom:${r}`)?.id:t.overviewId;if(!i)throw Error(`unknown section ${r}`);return se(n,i)}function lt(e){return e?async(t,n)=>{let r=ct(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}}:ct}var ut=new Set([`foreignKey`,`crossPackageRef`]);function j(e,t){return`/m/${e}/${t}/`}function dt(e,t,n,r=`view`){let i=`${j(e,t)}${encodeURIComponent(n)}/`;return r===`edit`?`${i}edit/`:i}function ft(e,t,n,r){return`${j(e,t)}?${encodeURIComponent(n)}=${encodeURIComponent(r)}`}function pt(e,t){let n=new URLSearchParams(e);for(let e of t.fields){if(!ut.has(e.type))continue;let t=n.get(e.name);if(t)return{field:e.name,equals:t}}}function mt(e){return e?.equals===void 0?``:`${encodeURIComponent(e.field)}=${encodeURIComponent(e.equals)}`}function ht(e,t,n){let r=n.filter(t=>t.model.id===e&&t.filter);if(t){let e=r.find(e=>e.key===t)?.filter;return e?{field:e.field,equals:e.value}:void 0}let i=r[0]?.filter;if(!i)return;let a=r.map(e=>e.filter).filter(e=>e?.field===i.field).map(e=>String(e?.value));return{field:i.field,notIn:[...new Set(a)]}}function gt(e,t){if(!e)return!0;let n=String(t[e.field]??``);return e.equals===void 0?!e.notIn?.includes(n):n===e.equals}function _t(e){return e?.equals===void 0?{}:{[e.field]:e.equals}}var M=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:null,vt=(e,t)=>e.fields.some(e=>e.name===t);function yt(e,t){let n=ae(A(e)),r=fe(t,n);return Object.values(r).some(e=>M(e)!==null)?r:void 0}function bt(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}function xt(e,t,n){if(!bt(e,t)||![`subtotal`,`taxAmount`,`totalAmount`,`discountTotal`].every(t=>vt(e,t)))return;let r=M(t.subtotal),i=M(t.taxAmount),a=M(t.totalAmount),o=M(t.discountTotal)??0;if(r===null||i===null||a===null)return;let s=u(t,`exclusive`);return{subtotal:r,discount:o,tax:i,total:a,lineAmountType:s,roundingScope:d(t,`line`),showNetSubtotal:s===`inclusive`,taxes:v(n,s).flatMap(e=>e.taxComponentId?[{taxComponentId:e.taxComponentId,name:e.name,percent:e.percent,taxable:e.taxable,tax:e.tax}]:[])}}var N=ie();function P(e){let{source:t,href:n}=e;if(!t||!n)throw Error(`the planner widget context is missing`);return{source:t,href:n}}function F(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:j(t.pkg.id,t.model.name)}}var St=new Set([`foreignKey`,`crossPackageRef`]);function Ct(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||!St.has(s.type))throw Error(`${n.name} has no reference field ${o}`);return{field:o,id:i.id}}async function I(e,t,n){return n?e.listWhere(t,n.field,n.id):e.list(t)}function L(e,t,n){return e(n?ft(t.packageId,t.model.name,n.field,n.id):t.path)}var R=e=>typeof e==`number`&&Number.isFinite(e);async function wt(e,t){let{source:n,href:r}=P(t),i=F(e.model),{model:a}=i,o=Ct(e,t,a),s=await I(n,a,o),c=L(r,i,o),u=typeof e.measure==`string`?e.measure:``;if(u===`count`||u===``)return{value:s.length,format:`integer`,href:c};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(R),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=l(d);return{value:m?Math.round(p):p,format:m?`money`:d.type===`integer`?`integer`:`decimal`,...m?{currency:`USD`}:{},href:c}}function Tt(e,t){return R(e)&&R(t)?e-t:String(e??``).localeCompare(String(t??``))}var Et=new Set([`createdAt`,`updatedAt`]),Dt=[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`];function Ot(e=[]){return Dt.find(t=>e.includes(t))}function kt(e,t,n,r){let i=A(e),a=r?[r]:[],o=ge(n);if(o.length===0)return O(i,t,{exclude:a,max:5});let s=[...Ke(i,t,{exclude:a}),...O(i,t,{exclude:a,max:o.length+8})];return o.map(n=>{let r=e.fields.find(e=>e.name===n);if(!r)throw Error(`${e.name} has no field ${n}`);let i=s.find(e=>e.key===n);if(i)return i;let a=Ot(t[n]);return{key:n,label:St.has(r.type)?_(n.replace(/Id$/,``)):_(n),...a?{role:a}:{}}})}var At=new Set([`money`,`quantity`]);function jt(e,t){let n={};for(let r of e)(r.summarize??At.has(r.role))&&(n[r.key]=t.reduce((e,t)=>{let n=t[r.key];return R(n)?e+n:e},0));return n}function Mt(e,t){let n=te(A(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 Nt(e,t){let{source:n,href:r}=P(t),i=F(e.model),{model:a}=i,o=Ct(e,t,a),s=await I(n,a,o);if(typeof e.sort==`string`&&e.sort){if(!a.fields.find(t=>t.name===e.sort)&&!Et.has(e.sort))throw Error(`${a.name} has no field ${e.sort}`);let t=s.some(t=>t[e.sort]!==void 0)?e.sort:B(a)?.name;if(t){let n=e.direction===`asc`?1:-1;s=[...s].sort((e,r)=>n*Tt(e[t],r[t]))}}let c=kt(a,ae(A(a)),e.columns,o?.field),l=R(e.limit)?e.limit:5,u=s.slice(0,l),d=a.fields.filter(e=>St.has(e.type)&&c.some(t=>t.key===e.name)),f=await me(n,d,u),p=e=>Object.fromEntries(c.map(t=>{let n=e[t.key],r=d.find(e=>e.name===t.key);return r?.related&&typeof n==`string`&&n?[t.key,f.get(h(r.related,n))??``]:[t.key,n??null]})),m=jt(c,s),g=!Fe(a);return{rows:await Promise.all(u.map(async e=>({id:String(e.id),title:await pe(n,a,e,0,o?.field),...g?{href:r(dt(i.packageId,a.name,String(e.id)))}:{},cells:p(e)}))),total:s.length,...g?{href:L(r,i,o)}:{},columns:c,currency:Mt(a,s),...Object.keys(m).length?{summaries:m}:{}}}var Pt={"7d":7,"30d":30,"90d":90,"12m":365,all:null},z=864e5;function Ft(e){return e===`7d`||e===`30d`?`day`:e===`90d`?`week`:`month`}function It(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*z:r}function Lt(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)*z}function Rt(e,t){let n=new Date(e).toISOString();return t===`month`?n.slice(0,7):n.slice(0,10)}var zt=e=>e.type===`datetime`&&!e.system;function B(e){let t=e.fields.filter(zt);return t.find(e=>/^(issue|order|start|created)/i.test(e.name))??t[0]}function V(e){if(typeof e!=`string`&&typeof e!=`number`)return;let t=new Date(e).getTime();return Number.isFinite(t)?t:void 0}async function Bt(e,t){let{source:n,href:r}=P(t),i=F(e.model),{model:a}=i,o=Ct(e,t,a),s=typeof e.groupBy==`string`?e.groupBy:``,c=s?a.fields.find(e=>e.name===s):B(a);if(!c)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(Pt,f))throw Error(`unknown period ${f}`);let p=Pt[f],m=zt(c),h=m?c:B(a),g=p!==null&&h?y-p*z:-1/0,_=await I(n,a,o);h&&g!==-1/0&&(_=_.filter(e=>{let t=V(e[h.name]);return t!==void 0&&t>=g&&t<=y}));let v=new Map,ee=(e,t,n)=>{let r=v.get(e)??{key:t,sum:0,n:0};if(d){let e=n[d.name];if(!R(e))return;r.sum+=e}r.n+=1,v.set(e,r)},b=Ft(f);if(m){let e=g===-1/0?Math.min(..._.map(e=>V(e[c.name])??y),y):g;for(let t=It(e,b);t<=y;t=Lt(t,b))v.set(Rt(t,b),{key:t,sum:0,n:0});for(let e of _){let t=V(e[c.name]);if(t===void 0)continue;let n=It(t,b);ee(Rt(n,b),n,e)}}else for(let e of _){let t=e[c.name],n=t==null||t===``?`(none)`:String(t);ee(n,n,e)}let x=d?l(d):!1,te=e=>{if(!d)return e.n;let t=u===`avg`&&e.n?e.sum/e.n:e.sum;return x?Math.round(t):t},S=[...v.entries()].map(([e,t])=>({label:e,value:te(t),key:t.key}));return S=m?S.sort((e,t)=>Number(e.key)-Number(t.key)):S.sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label)),{points:S.map(({label:e,value:t})=>({label:e,value:t})),format:d?x?`money`:d.type===`integer`?`integer`:`decimal`:`integer`,...x?{currency:`USD`}:{},href:L(r,i,o)}}var Vt=async(e,t)=>{let{source:n,entryIndex:r}=e;if(!n||!r)throw Error(`the planner widget context is missing`);return Promise.all(t.map(async e=>{let t=r.get(e.id??``);if(!t)return e;let i=await n.list(t.model);return{...e,count:i.filter(e=>gt(t.scope,e)).length}}))};he(N,{metric:wt,records:Nt,chart:Bt,shortcuts:Vt,shortcuts:lt(Vt)});function Ht(e){let{relations:t,viewAllHref:n}=e;if(!t)throw Error(`the record page context is missing`);return{relations:t,records:Nt,viewAllHref:n}}async function Ut(e,t){let{source:n}=P(e),r=e.record;if(!r?.id)throw Error(`line items need a record`);let{model:i}=F(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=xt(i,a,o&&s?await n.listWhere(s,o.field,r.id):[]),l=c?void 0:yt(i,a),u=te(A(i)),d=u?a[u]:void 0;return{...c?{storedTotals:c}:{},...l?{totals:l}:{},...typeof d==`string`&&d?{currency:d}:{}}}N.register(ce((e,t)=>_e(Ht(t))(e,t))),N.register(de(async(e,t)=>{let n=Ht(t),{totals:r,storedTotals:i,currency:a}=await Ut(t,n.relations);return le({...n,totals:()=>r,storedTotals:()=>i,currency:()=>a})(e,t)}));var Wt=[`shortcuts`,`metric`,`records`,`chart`,`note`],Gt={"@happyvertical/smrt-reports/svelte":async()=>({SavedReportsWidget:(await a(async()=>{let{default:e}=await import(`./C_l5LMLU.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})},Kt=async(e,t)=>{let n=Gt[e];if(n)return(await n())[t]},qt=w.filter(e=>e.surfaces?.some(e=>e.kind===`widget`)),Jt=qt.flatMap(e=>(e.surfaces??[]).flatMap(e=>e.kind===`widget`?[e.type]:[]));Ue(N,qt,Kt);var H=new Map(Se(w).map(e=>[`section:${e.id}`,e])),Yt=g.packages.flatMap(e=>e.models.map(e=>e.id)),Xt=[...Wt,...Jt];function Zt(e){let t=H.get(e);for(let e of t?.recipes??[]){let t=Ie(e)[0];if(t)return{id:t.model.id,name:_(t.model.name)}}}function Qt(e){let t=Re(H.get(e)?.recipes[0]);if(t&&Jt.includes(t.type))return[t];let n=[{id:`shortcuts`,type:`shortcuts`,span:4,options:{}}],r=Zt(e);return r&&n.push({id:`count`,type:`metric`,span:1,options:{title:f(r.name),model:r.id,measure:`count`}},{id:`latest`,type:`records`,span:3,options:{title:`${r.name} records`,model:r.id,limit:5}}),n}var $t=new Map;function en(e){if(!ve.test(e))return;let t=$t.get(e);return t||(t=C({id:e,allowed:Xt,models:Yt,defaults:Qt(e)}),$t.set(e,t)),t}function tn(e,t){return`detail:${e}.${t}`}var nn=new Map(g.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(t=>[x(t.id),{packageId:e.id,model:t}])));function U(e){let[,t,n]=/^detail:([A-Za-z0-9_-]+)\.([A-Za-z0-9_]+)$/.exec(e)??[],r=t&&n?p(t,n):void 0;return t&&r?.exposed?{packageId:t,model:r}:nn.get(e)}var rn=new Set(g.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(e=>e.id))),an=new Map;function on(e){let t=an.get(e);if(t)return t;let n=U(e);if(!n)return;let r=at(g,n.model.id,rn),i=oe(A(n.model),r,{id:e,maxMetrics:2*r.length});return t=C({...i,maxWidgets:Math.max(i.maxWidgets??24,i.defaults.length+24)}),an.set(e,t),t}function sn(e,t){let n=on(e),r=U(e);if(!n||!r)return;let i=at(g,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 C({...n,defaults:o})}function cn(e){return e.startsWith(`detail:`)?on(e):en(e)}function ln(e,t){return H.has(e)||e===`section:${je.id}`?!0:e.startsWith(`detail:`)?U(e)!==void 0:e.startsWith(`custom:`)&&ve.test(e)&&(t?.customSections??[]).some(t=>t.id===e)}var un=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function dn(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 fn(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 pn(e,t){let n=cn(e);if(!n)return{override:null,issues:[{widgetId:null,type:null,code:`malformed`,message:`not an overview id`}]};let r=ne(n,t,N);if(r.ok)return{override:r.override,issues:[]};let i=re(t),a=new Set(r.issues.flatMap(e=>e.widgetId?[e.widgetId]:[]));if(!i.override)return{override:null,issues:r.issues};let o=ne(n,fn(i.override,a),N);return o.ok?{override:o.override,issues:r.issues}:{override:null,issues:[...r.issues,...o.issues]}}function mn(e,t){if(!un(e))return null;let n=[],r=[];for(let i of Object.keys(e).sort()){if(!ln(i,t)){r.push(`Overview ${i} is not a page in this app and was dropped.`);continue}let{override:a,issues:o}=pn(i,e[i]);for(let e of o)r.push(dn(i,e));a&&n.push([i,a])}return{overviews:Object.fromEntries(n),dropped:r}}var W=b,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`||!W.includes(e.preset))return{ok:!1,error:`The theme preset must be one of ${W.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=Le(w)){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=w){let n=new Map;for(let e of t){let t=Ce(e).id;for(let r of Ie(e))r.key&&n.set(`${K}${t}:${r.packageId}:${r.model.name}:${r.label}`,ye(r.packageId,r.model.name,r.key))}let r=e=>{let t=n.get(e);if(t)return t;if(!e.startsWith(K))return e;let r=e.slice(8).split(`:`);return r.length<3||!r[1]||!r[2]?e:ye(r[1],r[2])},i=e=>[...new Set(e)],a=(e,t)=>{let n={};for(let[i,a]of Object.entries(e)){let e=r(i);e in n||(n[e]=t(a))}return n},o={...e};return e.hidden&&(o.hidden=i(e.hidden.map(r))),e.itemOrder&&(o.itemOrder=a(e.itemOrder,e=>i(e.map(r)))),e.moved&&(o.moved=a(e.moved,r)),e.items&&(o.items=a(e.items,e=>e)),o}var q=`https://s-m-r-t.dev/schemas/cookbook/v1.json`,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=>!E.has(e)),i=[...new Set([...ke(e.recipes.filter(e=>E.has(e)),E),...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=>E.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)||De(e))&&s.push(e)}let c;if(e.exposure!==void 0){if(!Y(e.exposure))return J(`The cookbook "exposure" must be an object.`);let t=[];for(let[n,r]of Object.entries(e.exposure)){if(!X(r)||!r.every(e=>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())}}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:mn})}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,...Ne(e)};t.name&&(n.name=t.name),t.description&&(n.description=t.description),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=ke(Me(n,E),E),i=new Set(r.flatMap(e=>E.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&&De(e));c(Ae(e)||n?t.taxRate:void 0),o({pricesIncludeTax:t.pricesIncludeTax,taxRounding:t.taxRounding,currency:t.currency})}var Zn=new class{#e=r();get layout(){return e(this.#e)}set layout(e){i(this.#e,e,!0)}#t=r();get name(){return e(this.#t)}set name(e){i(this.#t,e,!0)}#n=r();get description(){return e(this.#n)}set description(e){i(this.#n,e,!0)}#r=r();get theme(){return e(this.#r)}set theme(e){i(this.#r,e,!0)}#i=r({});get overviews(){return e(this.#i)}set overviews(e){i(this.#i,e)}#a=r(`unknown`);get persist(){return e(this.#a)}set persist(e){i(this.#a,e,!0)}#o=r(!1);get loaded(){return e(this.#o)}set loaded(e){i(this.#o,e,!0)}hostManaged=!1;#s=r(``);get loadNotice(){return e(this.#s)}set loadNotice(e){i(this.#s,e,!0)}saveBlocked=!1;#c=r(!1);get keepLegacyUrl(){return e(this.#c)}set keepLegacyUrl(e){i(this.#c,e,!0)}replacedBeforeLoad=!1;previousKept=!1;storage=null;timer;snapshot(){return Un(n(T.data),{layout:n(this.layout),theme:n(this.theme),overviews:n(this.overviews),name:this.name,description:this.description})}overview(e){return Object.hasOwn(this.overviews,e)?this.overviews[e]:null}setOverview(e,t){let n=Object.fromEntries(Object.entries(this.overviews).filter(([t])=>t!==e));t&&(n[e]=t),this.overviews=n}setLayout(e){this.layout=ee(e)?void 0:e}apply(e){T.load(e),this.layout=e.layout,this.theme=e.theme,this.name=e.name,this.description=e.description,this.overviews={...e.overviews??{}},$(e)}get unavailableNotice(){let e=[...T.unavailableRecipes,...T.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(){T.removeUnavailable(),this.scheduleSave()}setTheme(e){this.theme=Tn(e)}settings(){return Pe(this.snapshot())}setSettings(e){let t=Oe(this.snapshot(),e);T.rows=t.policies.map(e=>({...e})),$(t)}replace(e){this.apply(e),this.loaded||(this.replacedBeforeLoad=!0),this.saveBlocked=!1,this.keepLegacyUrl=!1}reset(){T.clear(),$({policies:[]}),this.layout=void 0,this.theme=void 0,this.name=void 0,this.description=void 0,this.overviews={};try{globalThis.localStorage?.removeItem(Xn)}catch{}this.saveBlocked=!1,this.keepLegacyUrl=!1}importText(e){let t=In(e);return t.ok&&this.replace(t.cookbook),t}hydrate(e,t=zn()){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{st as A,ht as C,pt as D,j as E,at as M,A as N,mt as O,nt as P,gt as S,ft as T,Sn as _,zn as a,en as b,q as c,gn as d,hn as f,En as g,W as h,Z as i,rt as j,dt 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,sn as v,_t as w,N as x,tn as y};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./_CcVkMEQ.js","./DG3qFFTE.js","./COiEfhsA.js","./xihTtKlq.js","./38SS-Q6Y.js","./YUSKx8_q.js","./DK8Blf1Y.js","../assets/currency-metadata.ksbBA8-C.css","../assets/app.BHwMQ9Zv.css","./Bq35Wl4H.js","./Bv5jGtB8.js","../assets/feedback.qFktqYFY.css","./9PL91wDk.js","./uBIymjUX.js","./DF-0MxNw.js","../assets/SegmentedControl.DMqHG5fn.css","./DIE02RSm.js","../assets/webmcp-ui-context.hO24Ni5w.css","./D4791-Ex.js","../assets/data.CVlX_W0i.css","./CUyVrfsu.js","./CsaWd8kG.js","../assets/forms.BRdbPdvs.css","./BYcBM-fh.js","../assets/AppShell.BkKNrxND.css","./DDtOXC2p.js","../assets/workspace.C40zM0Mb.css","./2dmW8nz3.js","./9iVbSlQr.js","../assets/state.C0UZEhxS.css","../assets/labels.Dxa6EyRI.css","./DbH3RuTE.js","./pEiNEXSh.js","./CQFoqqzT.js","../assets/planner.DOQVfcOi.css","./D_U_DYjx.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,Et as t,Mt as n,bt as r,vt as i}from"./DG3qFFTE.js";import{t as a}from"./uBIymjUX.js";import"./xihTtKlq.js";import{I as o,K as s,L as c,O as l,U as u,W as d,_ as f,dt as p,ft as m,h,lt as g,p as _,st as v,x as y}from"./38SS-Q6Y.js";import{g as ee}from"./9PL91wDk.js";import"./DF-0MxNw.js";import"./DIE02RSm.js";import{u as b}from"./D4791-Ex.js";import{C as x,D as te,E as S,F as ne,I as C,L as re,N as ie,O as ae,S as oe,T as se,_ as ce,b as le,d as ue,g as de,h as fe,n as pe,r as me,v as he,w as ge,x as _e,z as ve}from"./2dmW8nz3.js";import{B as ye,G as be,J as xe,R as Se,V as Ce,W as we,X as Te,Y as Ee,a as De,b as w,c as Oe,d as ke,i as Ae,j as je,l as Me,n as Ne,o as Pe,q as Fe,t as T,v as Ie,x as E,z as Le}from"./9iVbSlQr.js";function Re(e){let t=e?.surfaces?.find(e=>e.kind===`widget`&&e.sectionDefault===!0);return t?{id:t.type,type:t.type,span:4,options:{}}:void 0}function ze(e){let t=e.lastIndexOf(`#`);if(t<=0||t===e.length-1)return null;let n=e.slice(0,t),r=e.slice(t+1);return n.startsWith(`.`)||n.startsWith(`/`)||/\s/.test(n)||!/^[A-Za-z_$][\w$]*$/.test(r)?null:{specifier:n,exportName:r}}function D(e,t){let n=ze(e);return n?Promise.resolve(t(n.specifier,n.exportName)).then(t=>{if(t==null)throw Error(`export "${e}" was not found`);return t}):Promise.reject(Error(`invalid export ref "${e}"`))}function Be(e){let t;return()=>(t??=e(),t)}function Ve(e){return typeof e==`object`&&!!e&&`default`in e&&!!e.default}function He(e,t,n){let r=Be(()=>D(e.export,t)),i=e.optionsEditor?Be(()=>D(e.optionsEditor,t)):void 0,a=e.data?.load?Be(()=>D(e.data?.load,t)):void 0,o={type:e.type,title:e.label,options:e.options??[],loadComponent:async()=>{let e=await r();return Ve(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 Ve(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 Ue(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 D(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(He(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 We=[`identifier`,`status`,`date`,`party`,`total`,`money`];function Ge(e){for(let t of[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`])if(e.includes(t))return t}function O(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 We)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:k(n,e),...Ge(t[n]??[])?{role:Ge(t[n]??[])}:{}}))}function Ke(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:k(o,e)}),s&&d.push({key:s,label:k(s,e),role:`quantity`}),l&&d.push({key:l,label:k(l,e),role:`money`,summarize:!1}),u&&u!==l&&d.push({key:u,label:k(u,e),role:`money`}),d}function k(e,t){let n=t.fields[e];return n&&(n.type===`foreignKey`||n.type===`crossPackageRef`)&&/.[a-z]Id$/.test(e)?S(e.slice(0,-2)):S(e)}var qe=[`text`,`integer`,`decimal`,`boolean`,`datetime`,`json`,`foreignKey`,`crossPackageRef`];function Je(e){return qe.includes(e)?e:`text`}var Ye=/(Date|^date|period(Start|End))$/;function Xe(e,t){return t.type===`datetime`&&!t.system&&Ye.test(t.name)&&!e.fields.some(e=>e.name===`allDay`)?`date`:void 0}function Ze(e){return ue(e)[0]}function Qe(e,t){let n=t.ui?{...t.ui}:void 0,r=l(t)?`money`:Xe(e,t);return{type:Je(t.type),required:t.required,nullable:!t.required,...t.default===void 0?{}:{default:t.default},...t.description?{description:t.description}:{},...n?{ui:n}:{},...t.enum?.length?{enum:[...t.enum]}:{},...r?{format:r}:{},...Ze(e)===t.name?{display:!0}:{}}}function $e(e,t){return e.includes(`:`)?e:`${t.slice(0,t.lastIndexOf(`:`))}:${e}`}function et(e,t){if(!t.related)return!1;let n=$e(t.related,e.id);return xe(g,n,s).some(t=>t.id===e.id)}function tt(e){return e.fields.flatMap(t=>{if(t.type!==`foreignKey`&&t.type!==`crossPackageRef`||!t.related)return[];let n=m($e(t.related,e.id));return n?[{field:t.name,kind:t.type===`crossPackageRef`?`crossPackageRef`:`foreignKey`,relatedCollection:n.model.collection,...et(e,t)?{role:`items`}:{}}]:[]})}function A(e){let t=tt(e);return{name:e.collection,objectRef:e.id,className:e.name,idField:`id`,fields:Object.fromEntries(e.fields.map(t=>[t.name,Qe(e,t)])),...t.length?{relationships:t}:{}}}function nt(e,t){return{objectRef:e.id,fields:Object.fromEntries(t.map((e,t)=>[e.name,{visibility:`basic`,label:e.label,help:e.help??null,order:t,required:e.required}]))}}function rt(e,t){let n=new Set(t);for(let t of e)for(let e of t.models)n.add(e);return n}function it(e){return _(e.replace(/_?id$/i,``)||e)}function at(e,t,n){let r=Ee(e,t),i=Te(e,t).filter(e=>e.model.exposed&&n.has(e.model.id)),a=new Set(xe(e,t,s).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 c=i.map(e=>{let t=a.has(e.model.id)?`items`:`children`,n=A(e.model),i=ae(n),s=[e.fk];return{model:e.model.id,field:e.fk,label:(o.get(e.model.id)??0)>1?`${we(e.model.name,r)} (${it(e.fk).toLowerCase()})`:we(e.model.name,r),kind:t,columns:t===`items`?Ke(n,i,{exclude:s}):O(n,i,{exclude:s,max:5}),...t===`items`&&`sortOrder`in n.fields?{sort:`sortOrder`}:{}}});for(let n of be(e,t))c.push({model:n.model.id,field:n.fk,label:it(n.fk),kind:`reference`});return c}var ot=Symbol(`smrt-cookbook`);function st(){return t(ot)}function ct(e,t){let{sections:n}=t;if(!n)throw Error(`the cookbook widget context is missing`);let r=typeof e.section==`string`?e.section:``,i=r?n.find(e=>e.id===`section:${r}`||e.id===`custom:${r}`)?.id:t.overviewId;if(!i)throw Error(`unknown section ${r}`);return se(n,i)}function lt(e){return e?async(t,n)=>{let r=ct(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}}:ct}var ut=new Set([`foreignKey`,`crossPackageRef`]);function j(e,t){return`/m/${e}/${t}/`}function dt(e,t,n,r=`view`){let i=`${j(e,t)}${encodeURIComponent(n)}/`;return r===`edit`?`${i}edit/`:i}function ft(e,t,n,r){return`${j(e,t)}?${encodeURIComponent(n)}=${encodeURIComponent(r)}`}function pt(e,t){let n=new URLSearchParams(e);for(let e of t.fields){if(!ut.has(e.type))continue;let t=n.get(e.name);if(t)return{field:e.name,equals:t}}}function mt(e){return e?.equals===void 0?``:`${encodeURIComponent(e.field)}=${encodeURIComponent(e.equals)}`}function ht(e,t,n){let r=n.filter(t=>t.model.id===e&&t.filter);if(t){let e=r.find(e=>e.key===t)?.filter;return e?{field:e.field,equals:e.value}:void 0}let i=r[0]?.filter;if(!i)return;let a=r.map(e=>e.filter).filter(e=>e?.field===i.field).map(e=>String(e?.value));return{field:i.field,notIn:[...new Set(a)]}}function gt(e,t){if(!e)return!0;let n=String(t[e.field]??``);return e.equals===void 0?!e.notIn?.includes(n):n===e.equals}function _t(e){return e?.equals===void 0?{}:{[e.field]:e.equals}}var M=e=>typeof e==`number`&&Number.isSafeInteger(e)?e:null,vt=(e,t)=>e.fields.some(e=>e.name===t);function yt(e,t){let n=ae(A(e)),r=fe(t,n);return Object.values(r).some(e=>M(e)!==null)?r:void 0}function bt(e,t){return!!e.fields.find(e=>e.name===`status`)?.enum?.includes(`draft`)&&typeof t.status==`string`&&t.status!==``&&t.status!==`draft`}function xt(e,t,n){if(!bt(e,t)||![`subtotal`,`taxAmount`,`totalAmount`,`discountTotal`].every(t=>vt(e,t)))return;let r=M(t.subtotal),i=M(t.taxAmount),a=M(t.totalAmount),o=M(t.discountTotal)??0;if(r===null||i===null||a===null)return;let s=u(t,`exclusive`);return{subtotal:r,discount:o,tax:i,total:a,lineAmountType:s,roundingScope:d(t,`line`),showNetSubtotal:s===`inclusive`,taxes:v(n,s).flatMap(e=>e.taxComponentId?[{taxComponentId:e.taxComponentId,name:e.name,percent:e.percent,taxable:e.taxable,tax:e.tax}]:[])}}var N=ie();function P(e){let{source:t,href:n}=e;if(!t||!n)throw Error(`the planner widget context is missing`);return{source:t,href:n}}function F(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:j(t.pkg.id,t.model.name)}}var St=new Set([`foreignKey`,`crossPackageRef`]);function Ct(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||!St.has(s.type))throw Error(`${n.name} has no reference field ${o}`);return{field:o,id:i.id}}async function I(e,t,n){return n?e.listWhere(t,n.field,n.id):e.list(t)}function L(e,t,n){return e(n?ft(t.packageId,t.model.name,n.field,n.id):t.path)}var R=e=>typeof e==`number`&&Number.isFinite(e);async function wt(e,t){let{source:n,href:r}=P(t),i=F(e.model),{model:a}=i,o=Ct(e,t,a),s=await I(n,a,o),c=L(r,i,o),u=typeof e.measure==`string`?e.measure:``;if(u===`count`||u===``)return{value:s.length,format:`integer`,href:c};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(R),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=l(d);return{value:m?Math.round(p):p,format:m?`money`:d.type===`integer`?`integer`:`decimal`,...m?{currency:`USD`}:{},href:c}}function Tt(e,t){return R(e)&&R(t)?e-t:String(e??``).localeCompare(String(t??``))}var Et=new Set([`createdAt`,`updatedAt`]),Dt=[`identifier`,`status`,`date`,`money`,`quantity`,`party`,`title`];function Ot(e=[]){return Dt.find(t=>e.includes(t))}function kt(e,t,n,r){let i=A(e),a=r?[r]:[],o=ge(n);if(o.length===0)return O(i,t,{exclude:a,max:5});let s=[...Ke(i,t,{exclude:a}),...O(i,t,{exclude:a,max:o.length+8})];return o.map(n=>{let r=e.fields.find(e=>e.name===n);if(!r)throw Error(`${e.name} has no field ${n}`);let i=s.find(e=>e.key===n);if(i)return i;let a=Ot(t[n]);return{key:n,label:St.has(r.type)?_(n.replace(/Id$/,``)):_(n),...a?{role:a}:{}}})}var At=new Set([`money`,`quantity`]);function jt(e,t){let n={};for(let r of e)(r.summarize??At.has(r.role))&&(n[r.key]=t.reduce((e,t)=>{let n=t[r.key];return R(n)?e+n:e},0));return n}function Mt(e,t){let n=te(A(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 Nt(e,t){let{source:n,href:r}=P(t),i=F(e.model),{model:a}=i,o=Ct(e,t,a),s=await I(n,a,o);if(typeof e.sort==`string`&&e.sort){if(!a.fields.find(t=>t.name===e.sort)&&!Et.has(e.sort))throw Error(`${a.name} has no field ${e.sort}`);let t=s.some(t=>t[e.sort]!==void 0)?e.sort:B(a)?.name;if(t){let n=e.direction===`asc`?1:-1;s=[...s].sort((e,r)=>n*Tt(e[t],r[t]))}}let c=kt(a,ae(A(a)),e.columns,o?.field),l=R(e.limit)?e.limit:5,u=s.slice(0,l),d=a.fields.filter(e=>St.has(e.type)&&c.some(t=>t.key===e.name)),f=await me(n,d,u),p=e=>Object.fromEntries(c.map(t=>{let n=e[t.key],r=d.find(e=>e.name===t.key);return r?.related&&typeof n==`string`&&n?[t.key,f.get(h(r.related,n))??``]:[t.key,n??null]})),m=jt(c,s),g=!Fe(a);return{rows:await Promise.all(u.map(async e=>({id:String(e.id),title:await pe(n,a,e,0,o?.field),...g?{href:r(dt(i.packageId,a.name,String(e.id)))}:{},cells:p(e)}))),total:s.length,...g?{href:L(r,i,o)}:{},columns:c,currency:Mt(a,s),...Object.keys(m).length?{summaries:m}:{}}}var Pt={"7d":7,"30d":30,"90d":90,"12m":365,all:null},z=864e5;function Ft(e){return e===`7d`||e===`30d`?`day`:e===`90d`?`week`:`month`}function It(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*z:r}function Lt(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)*z}function Rt(e,t){let n=new Date(e).toISOString();return t===`month`?n.slice(0,7):n.slice(0,10)}var zt=e=>e.type===`datetime`&&!e.system;function B(e){let t=e.fields.filter(zt);return t.find(e=>/^(issue|order|start|created)/i.test(e.name))??t[0]}function V(e){if(typeof e!=`string`&&typeof e!=`number`)return;let t=new Date(e).getTime();return Number.isFinite(t)?t:void 0}async function Bt(e,t){let{source:n,href:r}=P(t),i=F(e.model),{model:a}=i,o=Ct(e,t,a),s=typeof e.groupBy==`string`?e.groupBy:``,c=s?a.fields.find(e=>e.name===s):B(a);if(!c)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(Pt,f))throw Error(`unknown period ${f}`);let p=Pt[f],m=zt(c),h=m?c:B(a),g=p!==null&&h?y-p*z:-1/0,_=await I(n,a,o);h&&g!==-1/0&&(_=_.filter(e=>{let t=V(e[h.name]);return t!==void 0&&t>=g&&t<=y}));let v=new Map,ee=(e,t,n)=>{let r=v.get(e)??{key:t,sum:0,n:0};if(d){let e=n[d.name];if(!R(e))return;r.sum+=e}r.n+=1,v.set(e,r)},b=Ft(f);if(m){let e=g===-1/0?Math.min(..._.map(e=>V(e[c.name])??y),y):g;for(let t=It(e,b);t<=y;t=Lt(t,b))v.set(Rt(t,b),{key:t,sum:0,n:0});for(let e of _){let t=V(e[c.name]);if(t===void 0)continue;let n=It(t,b);ee(Rt(n,b),n,e)}}else for(let e of _){let t=e[c.name],n=t==null||t===``?`(none)`:String(t);ee(n,n,e)}let x=d?l(d):!1,te=e=>{if(!d)return e.n;let t=u===`avg`&&e.n?e.sum/e.n:e.sum;return x?Math.round(t):t},S=[...v.entries()].map(([e,t])=>({label:e,value:te(t),key:t.key}));return S=m?S.sort((e,t)=>Number(e.key)-Number(t.key)):S.sort((e,t)=>t.value-e.value||e.label.localeCompare(t.label)),{points:S.map(({label:e,value:t})=>({label:e,value:t})),format:d?x?`money`:d.type===`integer`?`integer`:`decimal`:`integer`,...x?{currency:`USD`}:{},href:L(r,i,o)}}var Vt=async(e,t)=>{let{source:n,entryIndex:r}=e;if(!n||!r)throw Error(`the planner widget context is missing`);return Promise.all(t.map(async e=>{let t=r.get(e.id??``);if(!t)return e;let i=await n.list(t.model);return{...e,count:i.filter(e=>gt(t.scope,e)).length}}))};he(N,{metric:wt,records:Nt,chart:Bt,shortcuts:Vt,shortcuts:lt(Vt)});function Ht(e){let{relations:t,viewAllHref:n}=e;if(!t)throw Error(`the record page context is missing`);return{relations:t,records:Nt,viewAllHref:n}}async function Ut(e,t){let{source:n}=P(e),r=e.record;if(!r?.id)throw Error(`line items need a record`);let{model:i}=F(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=xt(i,a,o&&s?await n.listWhere(s,o.field,r.id):[]),l=c?void 0:yt(i,a),u=te(A(i)),d=u?a[u]:void 0;return{...c?{storedTotals:c}:{},...l?{totals:l}:{},...typeof d==`string`&&d?{currency:d}:{}}}N.register(ce((e,t)=>_e(Ht(t))(e,t))),N.register(de(async(e,t)=>{let n=Ht(t),{totals:r,storedTotals:i,currency:a}=await Ut(t,n.relations);return le({...n,totals:()=>r,storedTotals:()=>i,currency:()=>a})(e,t)}));var Wt=[`shortcuts`,`metric`,`records`,`chart`,`note`],Gt={"@happyvertical/smrt-reports/svelte":async()=>({SavedReportsWidget:(await a(async()=>{let{default:e}=await import(`./_CcVkMEQ.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})},Kt=async(e,t)=>{let n=Gt[e];if(n)return(await n())[t]},qt=w.filter(e=>e.surfaces?.some(e=>e.kind===`widget`)),Jt=qt.flatMap(e=>(e.surfaces??[]).flatMap(e=>e.kind===`widget`?[e.type]:[]));Ue(N,qt,Kt);var H=new Map(Se(w).map(e=>[`section:${e.id}`,e])),Yt=g.packages.flatMap(e=>e.models.map(e=>e.id)),Xt=[...Wt,...Jt];function Zt(e){let t=H.get(e);for(let e of t?.recipes??[]){let t=Ie(e)[0];if(t)return{id:t.model.id,name:_(t.model.name)}}}function Qt(e){let t=Re(H.get(e)?.recipes[0]);if(t&&Jt.includes(t.type))return[t];let n=[{id:`shortcuts`,type:`shortcuts`,span:4,options:{}}],r=Zt(e);return r&&n.push({id:`count`,type:`metric`,span:1,options:{title:f(r.name),model:r.id,measure:`count`}},{id:`latest`,type:`records`,span:3,options:{title:`${r.name} records`,model:r.id,limit:5}}),n}var $t=new Map;function en(e){if(!ve.test(e))return;let t=$t.get(e);return t||(t=C({id:e,allowed:Xt,models:Yt,defaults:Qt(e)}),$t.set(e,t)),t}function tn(e,t){return`detail:${e}.${t}`}var nn=new Map(g.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(t=>[x(t.id),{packageId:e.id,model:t}])));function U(e){let[,t,n]=/^detail:([A-Za-z0-9_-]+)\.([A-Za-z0-9_]+)$/.exec(e)??[],r=t&&n?p(t,n):void 0;return t&&r?.exposed?{packageId:t,model:r}:nn.get(e)}var rn=new Set(g.packages.flatMap(e=>e.models.filter(e=>e.exposed).map(e=>e.id))),an=new Map;function on(e){let t=an.get(e);if(t)return t;let n=U(e);if(!n)return;let r=at(g,n.model.id,rn),i=oe(A(n.model),r,{id:e,maxMetrics:2*r.length});return t=C({...i,maxWidgets:Math.max(i.maxWidgets??24,i.defaults.length+24)}),an.set(e,t),t}function sn(e,t){let n=on(e),r=U(e);if(!n||!r)return;let i=at(g,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 C({...n,defaults:o})}function cn(e){return e.startsWith(`detail:`)?on(e):en(e)}function ln(e,t){return H.has(e)||e===`section:${je.id}`?!0:e.startsWith(`detail:`)?U(e)!==void 0:e.startsWith(`custom:`)&&ve.test(e)&&(t?.customSections??[]).some(t=>t.id===e)}var un=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function dn(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 fn(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 pn(e,t){let n=cn(e);if(!n)return{override:null,issues:[{widgetId:null,type:null,code:`malformed`,message:`not an overview id`}]};let r=ne(n,t,N);if(r.ok)return{override:r.override,issues:[]};let i=re(t),a=new Set(r.issues.flatMap(e=>e.widgetId?[e.widgetId]:[]));if(!i.override)return{override:null,issues:r.issues};let o=ne(n,fn(i.override,a),N);return o.ok?{override:o.override,issues:r.issues}:{override:null,issues:[...r.issues,...o.issues]}}function mn(e,t){if(!un(e))return null;let n=[],r=[];for(let i of Object.keys(e).sort()){if(!ln(i,t)){r.push(`Overview ${i} is not a page in this app and was dropped.`);continue}let{override:a,issues:o}=pn(i,e[i]);for(let e of o)r.push(dn(i,e));a&&n.push([i,a])}return{overviews:Object.fromEntries(n),dropped:r}}var W=b,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`||!W.includes(e.preset))return{ok:!1,error:`The theme preset must be one of ${W.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=Le(w)){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=w){let n=new Map;for(let e of t){let t=Ce(e).id;for(let r of Ie(e))r.key&&n.set(`${K}${t}:${r.packageId}:${r.model.name}:${r.label}`,ye(r.packageId,r.model.name,r.key))}let r=e=>{let t=n.get(e);if(t)return t;if(!e.startsWith(K))return e;let r=e.slice(8).split(`:`);return r.length<3||!r[1]||!r[2]?e:ye(r[1],r[2])},i=e=>[...new Set(e)],a=(e,t)=>{let n={};for(let[i,a]of Object.entries(e)){let e=r(i);e in n||(n[e]=t(a))}return n},o={...e};return e.hidden&&(o.hidden=i(e.hidden.map(r))),e.itemOrder&&(o.itemOrder=a(e.itemOrder,e=>i(e.map(r)))),e.moved&&(o.moved=a(e.moved,r)),e.items&&(o.items=a(e.items,e=>e)),o}var q=`https://s-m-r-t.dev/schemas/cookbook/v1.json`,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=>!E.has(e)),i=[...new Set([...ke(e.recipes.filter(e=>E.has(e)),E),...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=>E.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)||De(e))&&s.push(e)}let c;if(e.exposure!==void 0){if(!Y(e.exposure))return J(`The cookbook "exposure" must be an object.`);let t=[];for(let[n,r]of Object.entries(e.exposure)){if(!X(r)||!r.every(e=>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())}}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:mn})}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,...Ne(e)};t.name&&(n.name=t.name),t.description&&(n.description=t.description),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=ke(Me(n,E),E),i=new Set(r.flatMap(e=>E.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&&De(e));c(Ae(e)||n?t.taxRate:void 0),o({pricesIncludeTax:t.pricesIncludeTax,taxRounding:t.taxRounding,currency:t.currency})}var Zn=new class{#e=r();get layout(){return e(this.#e)}set layout(e){i(this.#e,e,!0)}#t=r();get name(){return e(this.#t)}set name(e){i(this.#t,e,!0)}#n=r();get description(){return e(this.#n)}set description(e){i(this.#n,e,!0)}#r=r();get theme(){return e(this.#r)}set theme(e){i(this.#r,e,!0)}#i=r({});get overviews(){return e(this.#i)}set overviews(e){i(this.#i,e)}#a=r(`unknown`);get persist(){return e(this.#a)}set persist(e){i(this.#a,e,!0)}#o=r(!1);get loaded(){return e(this.#o)}set loaded(e){i(this.#o,e,!0)}hostManaged=!1;#s=r(``);get loadNotice(){return e(this.#s)}set loadNotice(e){i(this.#s,e,!0)}saveBlocked=!1;#c=r(!1);get keepLegacyUrl(){return e(this.#c)}set keepLegacyUrl(e){i(this.#c,e,!0)}replacedBeforeLoad=!1;previousKept=!1;storage=null;timer;snapshot(){return Un(n(T.data),{layout:n(this.layout),theme:n(this.theme),overviews:n(this.overviews),name:this.name,description:this.description})}overview(e){return Object.hasOwn(this.overviews,e)?this.overviews[e]:null}setOverview(e,t){let n=Object.fromEntries(Object.entries(this.overviews).filter(([t])=>t!==e));t&&(n[e]=t),this.overviews=n}setLayout(e){this.layout=ee(e)?void 0:e}apply(e){T.load(e),this.layout=e.layout,this.theme=e.theme,this.name=e.name,this.description=e.description,this.overviews={...e.overviews??{}},$(e)}get unavailableNotice(){let e=[...T.unavailableRecipes,...T.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(){T.removeUnavailable(),this.scheduleSave()}setTheme(e){this.theme=Tn(e)}settings(){return Pe(this.snapshot())}setSettings(e){let t=Oe(this.snapshot(),e);T.rows=t.policies.map(e=>({...e})),$(t)}replace(e){this.apply(e),this.loaded||(this.replacedBeforeLoad=!0),this.saveBlocked=!1,this.keepLegacyUrl=!1}reset(){T.clear(),$({policies:[]}),this.layout=void 0,this.theme=void 0,this.name=void 0,this.description=void 0,this.overviews={};try{globalThis.localStorage?.removeItem(Xn)}catch{}this.saveBlocked=!1,this.keepLegacyUrl=!1}importText(e){let t=In(e);return t.ok&&this.replace(t.cookbook),t}hydrate(e,t=zn()){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{st as A,ht as C,pt as D,j as E,at as M,A as N,mt as O,nt as P,gt as S,ft as T,Sn as _,zn as a,en as b,q as c,gn as d,hn as f,En as g,W as h,Z as i,rt as j,dt 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,sn as v,_t as w,N as x,tn as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,B as t,Dt as n,Ft as r,G as i,H as a,L as o,Ot as s,U as c,W as l,ft as u,ht as d,mt as f,pt as p,st as m,v as h}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{t as g}from"./
|
|
1
|
+
import{$ as e,B as t,Dt as n,Ft as r,G as i,H as a,L as o,Ot as s,U as c,W as l,ft as u,ht as d,mt as f,pt as p,st as m,v as h}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{t as g}from"./38SS-Q6Y.js";import{tt as _}from"./9iVbSlQr.js";import{t as v}from"./ByKA-VaR.js";var y=i(`<li><a class="svelte-ra5apm"> </a></li> <li><a class="svelte-ra5apm"> </a></li>`,1),b=i(`<details class="menu svelte-ra5apm"><summary class="svelte-ra5apm"><!></summary> <ul class="svelte-ra5apm"></ul></details>`);function x(i,x){s(x,!0);var S=l(),C=p(S),w=e=>{v(e,{get section(){return x.groups[0].id},get label(){return x.groups[0].label},compact:!0})},T=t=>{var n=b(),i=u(n),s=u(i);_(s,{path:`M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58a.49.49 0 0 0 .12-.61l-1.92-3.32a.488.488 0 0 0-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54a.484.484 0 0 0-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 0 0-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`,size:16}),r(i);var l=d(i,2);o(l,21,()=>x.groups,e=>e.id,(t,n)=>{var i=y(),o=p(i),s=u(o),l=f(s);r(o);var _=d(o,2),v=u(_),b=f(v);r(_),m((t,r)=>{h(s,`href`,t),a(l,`${e(n).label??``} options`),h(v,`href`,r),a(b,`${e(n).label??``} help`)},[()=>g(`/recipes/${e(n).id}/`),()=>g(`/recipes/${e(n).id}/help/`)]),c(t,i)}),r(l),r(n),m(()=>{h(i,`title`,`${x.label} options and help`),h(i,`aria-label`,`${x.label} options and help`)}),c(t,n)};t(C,e=>{x.groups.length===1?e(w):x.groups.length>1&&e(T,1)}),c(i,S),n()}export{x as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,M as t,w as n}from"./
|
|
1
|
+
import{D as e,M as t,w as n}from"./38SS-Q6Y.js";import{r}from"./CzHmSbsw.js";var i=`@happyvertical/smrt-assets:Asset`,a=`@happyvertical/smrt-products:ProductAsset`,o=`assets.library`;function s(e,t,n){let r=new Map(t.map(e=>[e.id,e]));return n.filter(t=>t.productId===e).flatMap(e=>{let t=r.get(String(e.assetId)),n=t?.sourceUri;return!t||typeof n!=`string`?[]:[{id:t.id,name:String(t.name??`Product image`),sourceUri:n,mimeType:String(t.mimeType??`image/*`),description:String(t.description??``),sortOrder:Number(e.sortOrder??0)}]}).sort((e,t)=>e.sortOrder-t.sortOrder||e.name.localeCompare(t.name))}function c(e,t,n,o){return[{op:`save`,as:`asset`,model:r(i),values:{name:t.name||`Product image`,sourceUri:n,mimeType:t.type||`image/*`,description:`Image selected for this product in the browser demo.`,sourceType:`browser-demo`}},{op:`save`,model:r(a),values:{productId:e,assetId:{ref:`asset`},relationship:`gallery`,sortOrder:o}}]}function l(e,t){return t.filter(t=>t.productId===e).flatMap(e=>[{op:`delete`,model:r(a),id:e.id},{op:`delete`,model:r(i),id:String(e.assetId)}])}var u=`@happyvertical/smrt-products:Product`,d=`@happyvertical/smrt-products:ProductVariant`,f=`@happyvertical/smrt-products:Sku`,p=`@happyvertical/smrt-inventory:StockLevel`,m=`@happyvertical/smrt-profiles:ProfileType`,h=`@happyvertical/smrt-inventory:InventoryLocation`;function g(r){return{[h]:{from:[],make:()=>(t().locations??[]).map((e,t)=>({id:n(`${h}:sample:${t}`),...e,placeId:``,active:!0}))},[f]:{from:[r(u)],make:([e])=>(e??[]).map((e,t)=>({id:n(`${f}:sample:${e.id}`),productId:e.id,code:`SKU-${String(t+1).padStart(3,`0`)}`,barcode:``,name:String(e.name??``),attributes:``,parentSkuId:``,active:!0}))},[p]:{from:[r(f),r(h)],make:([r,i])=>{let a=t(),o=new Map(a.products.map(e=>[e.name,e.at]));return(r??[]).flatMap(t=>(i??[]).flatMap((r,i)=>{let a=e(`${t.id}:${r.id}`),s=o.get(String(t.name));if(s!==void 0){if(s!==i)return[]}else if(i>0&&a%3==0)return[];let c=10+a%4*5;return[{id:n(`${p}:sample:${t.id}:${r.id}`),skuId:t.id,locationId:r.id,state:`available`,qty:a%5==0?c-3:c+a%40,reorderPoint:c,reorderQuantity:c*3}]}))}}}}function _(e,t){let n=new Map(e.map(e=>[e.id,e.productId])),r=new Map;for(let e of t){let t=n.get(String(e.skuId));typeof t==`string`&&r.set(t,(r.get(t)??0)+Number(e.qty??0))}return r}function v(e,t,n,r=[]){return[...l(e,r),...t.flatMap(e=>[{op:`delete`,model:n(p),match:{skuId:e.id}},{op:`delete`,model:n(f),id:e.id}]),{op:`delete`,model:n(d),match:{productId:e}},{op:`delete`,model:n(u),id:e}]}export{d as a,g as c,a as d,c as f,p as i,i as l,m as n,v as o,s as p,f as r,_ as s,u as t,o as u};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./D7hhQvDO.js","./C7zBd-pD.js","./CA-A9Ngs.js","./uBIymjUX.js","./BBmlFBgo.js","./COiEfhsA.js","./C5qDLfXy.js","./BxyJ_Q7v.js","./CsaWd8kG.js","./DG3qFFTE.js","./xihTtKlq.js","./YUSKx8_q.js","./DK8Blf1Y.js","../assets/currency-metadata.ksbBA8-C.css","./DF-0MxNw.js","../assets/SegmentedControl.DMqHG5fn.css","../assets/forms.BRdbPdvs.css","./Dbjm4OuC.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as e}from"./COiEfhsA.js";import{t}from"./uBIymjUX.js";import{c as n,l as r,o as i,s as a,u as o}from"./
|
|
2
|
+
import{n as e}from"./COiEfhsA.js";import{t}from"./uBIymjUX.js";import{c as n,l as r,o as i,s as a,u as o}from"./9PL91wDk.js";import{M as s}from"./aDZBV4Ss.js";import{a as c,i as l,n as u,o as d,r as f,s as p,t as m}from"./C7zBd-pD.js";import{t as h}from"./D7hhQvDO.js";import"./BxyJ_Q7v.js";function g(e){return!e.type||e.type===`webllm`}function _(e){return e.type===`transformers-llm`}async function v(e={}){if(g(e)){let{WebLLMAdapter:n}=await t(async()=>{let{WebLLMAdapter:e}=await import(`./D7hhQvDO.js`);return{WebLLMAdapter:e}},__vite__mapDeps([0,1,2,3]),import.meta.url);return new n(e)}throw _(e)?new p(`transformers-llm`,[`webllm`]):new p(String(e.type),[`webllm`,`transformers-llm`])}function y(e){return!e.type||e.type===`browser-speech`}function b(e){return e.type===`whisper-local`||e.type===`whisper-wasm`||e.type===`moonshine`}function x(e){return e.type===`whisper-cpp`}async function S(e={}){if(y(e)){let{BrowserSpeechSTTAdapter:n}=await t(async()=>{let{BrowserSpeechSTTAdapter:e}=await import(`./BBmlFBgo.js`).then(e=>e.t);return{BrowserSpeechSTTAdapter:e}},__vite__mapDeps([4,5,1]),import.meta.url);return new n(e)}if(x(e)){let{WhisperCppSTTAdapter:n}=await t(async()=>{let{WhisperCppSTTAdapter:e}=await import(`./C5qDLfXy.js`).then(e=>e.t);return{WhisperCppSTTAdapter:e}},__vite__mapDeps([6,5,1,2,3]),import.meta.url);return new n(e)}if(b(e)){let{LocalSpeechSTTAdapter:n}=await t(async()=>{let{LocalSpeechSTTAdapter:e}=await import(`./BxyJ_Q7v.js`).then(e=>e.t);return{LocalSpeechSTTAdapter:e}},__vite__mapDeps([7,5,8,9,10,11,12,13,14,15,16,1,2,3]),import.meta.url);return new n(e)}throw new p(String(e.type),[`browser-speech`,`whisper-cpp`,`whisper-local`,`whisper-wasm`,`moonshine`])}function C(e={type:`browser-speech`}){let t=null;return()=>(t??=(async()=>{let t=await S(e);return t.getCapabilities().requiresDownload||await t.ensureInitialized(),t})().catch(e=>{throw t=null,e}),t)}function w(e){return!e.type||e.type===`browser-synthesis`}function T(e){return e.type===`transformers`}async function E(e={}){if(w(e)){let{BrowserSynthesisTTSAdapter:n}=await t(async()=>{let{BrowserSynthesisTTSAdapter:e}=await import(`./Dbjm4OuC.js`);return{BrowserSynthesisTTSAdapter:e}},__vite__mapDeps([17,1]),import.meta.url);return new n(e)}throw T(e)?new p(`transformers`,[`browser-synthesis`]):new p(String(e.type),[`browser-synthesis`])}var D=e({BrowserAIError:()=>m,CapabilityNotAvailableError:()=>u,InitializationError:()=>f,ModelLoadError:()=>l,ModelNotDownloadedError:()=>c,PermissionDeniedError:()=>d,RECOMMENDED_MODELS:()=>h,UnsupportedAdapterError:()=>p,WHISPER_LOCAL_DEFAULT_MODEL:()=>WHISPER_LOCAL_DEFAULT_MODEL,WHISPER_LOCAL_DEFAULT_SIZE_BYTES:()=>WHISPER_LOCAL_DEFAULT_SIZE_BYTES,canEnableSmrtMode:()=>i,detectCapabilities:()=>a,getLLM:()=>v,getSTT:()=>S,getTTS:()=>E,hasLLM:()=>n,hasSTT:()=>r,hasTTS:()=>o,probeBrowserSpeech:()=>s});export{C as n,D as t};
|
|
@@ -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{Ct as N,_t as P,bt as te,ft as F,x as I}from"./B8E24yMk.js";import{n as L}from"./DK8Blf1Y.js";import{S as ne,_ as R}from"./3_lSLC95.js";import{t as z}from"./DF-0MxNw.js";import"./CNPq2Xan.js";import"./BYU6OPE_.js";import{b as B,i as V}from"./CsaWd8kG.js";import{A as re,j as H,y as ie}from"./BcJKtq2F.js";import{b as U,et as W,t as G}from"./BrCY97j8.js";import{a as K,c as q,d as J,f as Y,h as ae,l as oe,n as se,p as X,s as Z}from"./CSH4CpXc.js";import{n as ce,t as le}from"./Dyq3fEtw.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`?H(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`?H(t,{format:`money`,currency:i,locale:r}):String(t??``);return Array.isArray(t)?t.map(n).join(`, `):n(t)},m=e.filters.filter((e,t)=>!d?.filters.includes(t)).map(e=>`${c(e.field)} ${n(`reports.operator.${e.op}`)} ${p(e.field,e.value)}`.trim()),h=e=>o?.find(t=>t.id===e)?.label??He(e);return{source:l,groupings:u,period:d,measures:f,filters:m,having:e.having.map(e=>`${h(e.measure)} ${n(`reports.operator.${e.op}`)} ${e.value}`),line:[l,u,d?.range].filter(e=>!!e).join(` · `)}}var qe=new Set([`minute`,`hour`,`day`,`week`,`month`,`quarter`,`year`]);function Je(e){let t=e.chart.x?e.columns.find(t=>t.id===e.chart.x):e.columns.find(e=>e.role===`dimension`);return t?.bucket&&qe.has(t.bucket)?t:void 0}function Ye(e){let t=e.columns.filter(e=>e.role===`measure`),n=e.chart.y??[];return[...t.filter(e=>n.includes(e.id)),...t.filter(e=>!n.includes(e.id))]}function Xe(e){return e.format===`money`?`money`:e.type===`integer`?`integer`:`decimal`}function Ze(e,t,n){let{t:r,locale:i,currency:a}=n,o=e.rows.map(e=>({row:e,value:e[t.id]})).filter(e=>typeof e.value==`number`&&Number.isFinite(e.value));if(o.length===0)return[];let s=e=>Ae(t.type===`integer`&&!Number.isInteger(e)?Math.round(e*100)/100:e,t.type===`integer`&&!Number.isInteger(e)?{...t,type:`decimal`}:t,i,a);if(!e.columns.some(e=>e.role===`dimension`)||o.length===1)return[{label:t.label,value:s(o[0].value)}];let c=o.reduce((e,t)=>e+t.value,0),l=o.reduce((e,t)=>t.value>e.value?t:e),u=Je(e),d=[];return(n.fn===`sum`||n.fn===`count`)&&d.push({label:r(`reports.figure.total`),value:s(c)}),d.push({label:u?.bucket?r(`reports.figure.average_per`,{bucket:r(`reports.bucket_unit.${u.bucket}`)}):r(`reports.figure.average`),value:s(c/o.length)}),d.push({label:r(`reports.figure.peak`),value:s(l.value),detail:n.groupLabel(l.row)}),d}function Qe(e,t,n=new Date,r){let i=new Date(e);if(Number.isNaN(i.getTime()))return e;let a=`en`;try{a=Intl.getCanonicalLocales(t)[0]??`en`}catch{}let o=Math.round((i.getTime()-n.getTime())/1e3),s=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60]],c=new Intl.RelativeTimeFormat(a,{numeric:`auto`});for(let[e,t]of s)if(Math.abs(o)>=t)return c.format(Math.round(o/t),e);return r??c.format(0,`second`)}function $e(e,t=!1){let n=!t&&/^[=+\-@\t\r]/.test(e)?`'${e}`:e;return/[",\n\r]/.test(n)?`"${n.replaceAll(`"`,`""`)}"`:n}function et(e,t){return`${[e.columns.map(e=>$e(e.label)).join(`,`),...e.rows.map(n=>e.columns.map(e=>$e(t(n[e.id],e),(e.type===`integer`||e.type===`decimal`)&&typeof n[e.id]==`number`)).join(`,`))].join(`\r
|
|
1
|
+
import{$ as e,B as t,Ct as n,Dt as r,E as i,Ft as a,G as o,H as s,J as c,L as l,Ot as u,Pt as d,R as f,U as p,W as m,a as h,bt as g,ct as _,d as v,ft as y,gt as b,ht as x,j as S,mt as C,nt as w,pt as T,r as E,st as D,v as O,vt as k,xt as A}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{i as j}from"./Bv5jGtB8.js";import{a as M,t as ee}from"./YUSKx8_q.js";import{Ct as N,_t as P,bt as te,ft as F,x as I}from"./38SS-Q6Y.js";import{n as L}from"./DK8Blf1Y.js";import{S as ne,_ as R}from"./9PL91wDk.js";import{t as z}from"./DF-0MxNw.js";import"./DDtOXC2p.js";import"./D4791-Ex.js";import{b as B,i as V}from"./CsaWd8kG.js";import{A as re,j as H,y as ie}from"./2dmW8nz3.js";import{b as U,et as W,t as G}from"./9iVbSlQr.js";import{a as K,c as q,d as J,f as Y,h as ae,l as oe,n as se,p as X,s as Z}from"./DbH3RuTE.js";import{n as ce,t as le}from"./CQFoqqzT.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`?H(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`?H(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),te=n(()=>e(A)?Je(_.result):void 0),F=n(()=>e(A)&&_.result.chart.type===`table`),I=n(()=>e(F)||b()===`table`);function ne(e,t){if(typeof e==`string`&&t?.bucket)return re(e,t.bucket,S())}function R(e,t){return typeof e==`boolean`?E($[e?`reports.yes`:`reports.no`]):ne(e,t)??Ae(e,t,S(),w())}let V=t=>e(P)?R(t[e(P).id],e(P)):e(N)?.label??``,H=n(()=>v()===`full`&&e(A)&&e(N)?Ze(_.result,e(N),{t:E,locale:S(),currency:w(),groupLabel:V,fn:_.spec?.measures.find(t=>t.as===e(N).id)?.fn}):[]),U=n(()=>e(A)&&e(N)?{points:_.result.rows.filter(t=>typeof t[e(N).id]==`number`).map(t=>({label:V(t),value:t[e(N).id]})),format:Xe(e(N)),currency:w()}:null),W=n(()=>e(N)?e(te)?.bucket?E($[`reports.dimension_bucket`],{field:e(N).label,bucket:E(`reports.bucket_unit.${e(te).bucket}`)}):e(P)?E($[`reports.dimension_bucket`],{field:e(N).label,bucket:e(P).label.toLowerCase()}):e(N).label:``),G=e=>e.type===`integer`||e.type===`decimal`,K=n(()=>e(j).map(e=>({value:e.id,label:e.label})));var q=gt(),J=y(q),Y=e=>{var t=tt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.invalid`])]),p(e,t)},ae=e=>{var t=nt(),n=C(t,!0);D(e=>s(n,e),[()=>E($[`reports.no_rows`])]),p(e,t)},oe=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`])}]);z(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(F)||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);z(t,{get label(){return e(r)},get options(){return e(K)},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);B(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(K),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(I)&&t(f)}),a(o);var h=x(o,2),g=n=>{var r=ot();l(r,21,()=>e(H),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(H).length>0&&!e(I)&&t(g)}),p(r,i)},g=t=>{var r=ct(),i=y(r);{let t=n(()=>b()===`table`);L(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(F)||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)},[()=>G(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)},[()=>G(e(r)),()=>R(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(W))),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`);ie(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(U)}})}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(I)?t(A):e(N)&&e(U)&&t(ee,1)});var P=x(w,2),te=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(te)}),p(r,o)};t(J,t=>{e(A)?_.result.rows.length===0?t(ae,1):t(oe,-1):t(Y)}),a(q),D(()=>O(q,`data-variant`,v())),p(o,q),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 te(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 F(){e(w)!==`idle`||e(N)||(k(w,`declined`),o.ondecline?.())}var I=Et(),ne=y(I),R=C(ne,!0),z=x(ne,2),B=e=>{var t=vt(),n=C(t,!0);D(e=>s(n,e),[()=>S($[`reports.invalid`])]),p(e,t)},V=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`);L(f,{variant:`secondary`,get disabled(){return e(t)},onclick:F,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`);L(m,{get disabled(){return e(t)},get"aria-busy"(){return e(r)},onclick:te,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(z,t=>{e(M)?t(V,-1):t(B)}),a(I),D((e,t)=>{O(I,`aria-label`,e),s(R,t)},[()=>S($[`reports.confirm_title`]),()=>e(M)?o.proposal.spec.title:S($[`reports.confirm_title`])]),p(i,I),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),I=g(!1),R=g(0),z=g(`chart`),B=g(!1),V=g(!1),re=g(!1),H=g(null),ie=null;_(()=>{let t=o.client,n=o.id;e(R);let r=!0;return ie!==n&&k(M,null),ie=n,k(P,null),k(F,null),k(I,!!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(I,!1)}})(),()=>{r=!1}});let U=n(()=>e(M)?l().find(t=>t.id===e(M)?.sourceId):void 0),W=n(()=>e(M)?Ke(e(M).spec,{t:E,locale:b(),currency:S(),source:e(U),columns:e(P)?.columns}):null),G=n(()=>e(M)?f()(e(M).createdByUserId):void 0),K=n(()=>{if(!e(M))return``;let t=e(M).savedAt?Qe(e(M).savedAt,b()):``;return e(G)&&t?E($[`reports.saved_by_at`],{author:e(G),time:t}):e(G)?E($[`reports.saved_by`],{author:e(G)}):t?E($[`reports.saved_at`],{time:t}):``}),q=n(()=>e(P)?.ranAt?E($[`reports.ran_at`],{time:Qe(e(P).ranAt,b(),void 0,E($[`reports.just_now`]))}):``),J=n(()=>e(M)?.status===`archived`);function Y(){e(M)&&(o.onedit?o.onedit(e(M)):k(re,!(e(H)&&ne(e(H),{prompt:E($[`reports.edit_prompt`],{title:e(M).title})}))))}function ae(){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 oe(t){if(o.client&&e(M)&&!e(V)){k(V,!0),k(F,null);try{await o.client.archive(e(M).id,t),A(R)}catch(e){k(F,Oe(e),!0)}finally{k(V,!1),k(B,!1)}}}let se=n(()=>[...e(M)&&!e(J)&&!e(F)?[{id:`rerun`,label:E($[`reports.rerun`]),disabled:e(I),onselect:()=>{A(R)}}]:[],...e(M)?.canArchive&&!e(J)?[{id:`archive`,label:E($[`reports.archive`]),disabled:e(V),onselect:()=>{k(B,!0)}}]:[]]);var X=Ht(),Z=y(X),ce=y(Z),le=y(ce),ue=y(le),de=C(ue,!0),fe=x(ue,2),pe=e=>{N(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(J)&&t(pe)}),a(le);var me=x(le,2),he=t=>{var n=Ot(),r=C(n,!0);D(()=>s(r,e(W).line)),p(t,n)};t(me,t=>{e(W)&&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=>{L(t,{variant:`primary`,get disabled(){return e(V)},onclick:()=>oe(!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=>{L(t,{variant:`primary`,get disabled(){return e(I)},onclick:()=>A(R),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));L(i,{variant:`secondary`,get disabled(){return e(t)},onclick:ae,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);L(a,{variant:`primary`,onclick:Y,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(J)?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}));te(t,{variant:`icon`,placement:`bottom-end`,get triggerLabel(){return e(i)},get items(){return e(se)},trigger:r,$$slots:{trigger:!0}})}};t(h,t=>{e(se).length&&t(g)}),a(i),p(r,i)};t(ve,t=>{o.client&&e(M)&&t(ye)}),a(Z);var be=x(Z,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(W).period.range),s(u,` · ${e(W).period.field??``}`)},[()=>E($[`reports.period`])]),p(t,n)};t(_,t=>{e(W).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(W).filters.join(`; `)]),p(t,n)};t(A,t=>{e(W).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(W).having.join(`; `)]),p(t,n)};t(M,t=>{e(W).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(K),e(q)].filter(Boolean).join(` · `)]),p(t,n)};t(N,t=>{(e(K)||e(q))&&t(P)}),a(r),D((t,n,i,a,o,l)=>{O(r,`aria-label`,t),s(c,n),s(u,e(W).source),s(m,i),s(g,a),s(w,o),s(k,l)},[()=>E($[`reports.details`]),()=>E($[`reports.source`]),()=>E($[`reports.groupings`]),()=>e(W).groupings||E($[`reports.none`]),()=>E($[`reports.measures`]),()=>e(W).measures.join(`, `)]),p(n,r)};t(i,t=>{e(W)&&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(re)&&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(I)&&!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(z)},set view(e){k(z,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(B)},get title(){return e(t)},get message(){return e(r)},get confirmLabel(){return e(i)},get cancelLabel(){return e(a)},get loading(){return e(V)},onconfirm:()=>void oe(!0),oncancel:()=>k(B,!1)})}a(X),v(X,e=>k(H,e),()=>e(H)),D((e,t)=>{O(X,`data-report-id`,o.id),O(X,`aria-label`,e),s(de,t)},[()=>e(M)?.title??E($[`reports.title`]),()=>e(M)?.title??E($[`reports.title`])]),p(i,X),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?re(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())})):[]}),I=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}),L=n(()=>f.result&&!e(k)&&f.result.columns.some(e=>e.role===`dimension`)?f.result.rows.length:0),ne=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 R=en(),z=y(R),B=y(z);S(B,()=>`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 V=x(B,2),H=e=>{N(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(V,e=>{f.report.status===`archived`&&e(H)});var U=x(V,2),W=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}));te(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(U,e=>{m().length&&e(W)}),a(z);var G=x(z,2),K=C(G,!0),q=x(G,2),J=y(q),Y=t=>{{let r=n(()=>b($[`reports.running`]));P(t,{variant:`text`,lines:2,get label(){return e(r)}})}},ae=e=>{var t=qt(),n=C(t,!0);D(e=>s(n,e),[()=>b($[`reports.run_failed`])]),p(e,t)},oe=e=>{var t=qt(),n=C(t,!0);D(e=>s(n,e),[()=>b($[`reports.no_rows`])]),p(e,t)},se=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);ie(r,{get data(){return e(I)},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(L)})]),p(t,n)};t(m,t=>{e(I)&&e(E)?t(h):e(F).length?t(g,1):e(L)>1&&t(v,2)}),D(()=>{s(o,e(M).label),s(u,e(M).value)}),p(n,r)};t(J,t=>{f.result===void 0?t(Y):f.result===null?t(ae,1):f.result.rows.length===0?t(oe,2):e(M)&&t(se,3)}),a(q);var X=x(q,2),Z=t=>{var n=$t(),r=C(n,!0);D(()=>s(r,e(ne))),p(t,n)};t(X,t=>{e(ne)&&t(Z)}),a(R),D(()=>{O(R,`data-report-id`,f.report.id),O(R,`data-archived`,f.report.status===`archived`?``:void 0),s(K,e(w).line)}),p(o,R),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`),te=h(o,`currency`,3,`USD`),{t:F}=ee(),I=g(`all`),R=g(!1),B=g(b([])),re=g(0),H=g(b({})),ie=g(!1),U=g(null),G=g(0),K=g(null),q=g(null),J=g(!1),Y=0;async function ae(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!==Y)return;k(H,{...e(H),[i]:a},!0)}};await Promise.all([a(),a(),a()])}_(()=>{let t=o.client,n={onlyMine:e(I)===`mine`,includeArchived:e(R)},r=M();e(G);let i=++Y;return k(B,[],!0),k(H,{},!0),k(U,null),k(K,null),k(ie,!!t),t&&t.list(n).then(n=>{i===Y&&(k(re,n.length,!0),k(B,n.slice(0,r),!0),ae(t,e(B),i))}).catch(e=>{i===Y&&k(U,Oe(e),!0)}).finally(()=>{i===Y&&k(ie,!1)}),()=>{++Y}});async function oe(t,n){if(!o.client||e(K)||!t.canArchive)return;let r=Y;k(K,t.id,!0),k(U,null);try{await o.client.archive(t.id,n),r===Y&&k(G,w(()=>e(G))+1)}catch(e){r===Y&&k(U,Oe(e),!0)}finally{r===Y&&k(K,null),k(q,null)}}function se(t){return t.canArchive?t.status===`archived`?[{id:`restore`,label:F($[`reports.restore`]),disabled:e(K)!==null,onselect:()=>void oe(t,!1)}]:[{id:`archive`,label:F($[`reports.archive`]),disabled:e(K)!==null,onselect:()=>{k(q,t,!0)}}]:[]}let X=g(null);function Z(){o.onnewreport?o.onnewreport():k(J,!(e(X)&&ne(e(X),{prompt:F($[`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=>{L(e,{variant:`primary`,onclick:Z,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>F($[`reports.new`])]),p(e,n)},$$slots:{default:!0}})};t(l,e=>{o.client&&e(u)}),a(n),D(e=>s(i,e),[()=>F($[`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),[()=>F($[`reports.unavailable`])]),p(e,t)},he=r=>{var i=pn(),u=T(i),h=t=>{var r=an(),i=y(r);{let t=n(()=>F($[`reports.filter_label`])),r=n(()=>[{value:`all`,label:F($[`reports.filter_all`])},{value:`mine`,label:F($[`reports.filter_mine`])}]);z(i,{get label(){return e(t)},get options(){return e(r)},get value(){return e(I)},onvaluechange:e=>k(I,e===`mine`?`mine`:`all`,!0)})}var o=x(i,2);{let t=n(()=>F($[`reports.archived`]));V(o,{get label(){return e(t)},size:`sm`,get checked(){return e(R)},set checked(e){k(R,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=>{L(e,{variant:`ghost`,size:`sm`,get href(){return o.listHref},children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>F($[`reports.view_all`])]),p(e,n)},$$slots:{default:!0}})};t(f,t=>{o.listHref&&e(re)>e(B).length&&t(m)});var h=x(f,2);L(h,{variant:`primary`,size:`sm`,onclick:Z,children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>F($[`reports.new`])]),p(e,n)},$$slots:{default:!0}}),a(u),a(r),D(e=>s(l,e),[()=>F($[`reports.hint`])]),p(n,r)};t(u,t=>{E()===`page`?t(h):e(B).length>0&&t(g,1)});var _=x(u,2),v=e=>{var t=sn(),n=C(t,!0);D(e=>s(n,e),[()=>F($[`reports.ask_where`])]),p(e,t)};t(_,t=>{e(J)&&t(v)});var b=x(_,2),S=t=>{var n=cn(),r=y(n),i=C(r,!0),o=x(r,2);L(o,{variant:`secondary`,size:`sm`,onclick:()=>A(G),children:(e,t)=>{d();var n=c();D(e=>s(n,e),[()=>F($[`reports.retry`])]),p(e,n)},$$slots:{default:!0}}),a(n),D(e=>s(i,e),[()=>F($[e(U)])]),p(t,n)};t(b,t=>{e(U)&&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),[()=>F($[`reports.loading`])]),p(e,t)},M=t=>{{let r=n(()=>F($[`reports.empty_title`])),i=n(()=>F($[`reports.empty`])),a=n(()=>F($[`reports.new`])),o=n(()=>E()===`page`?`md`:`sm`);W(t,{get title(){return e(r)},get description(){return e(i)},icon:`document`,get actionLabel(){return e(a)},onaction:Z,get size(){return e(o)}})}},ee=t=>{var r=fn();l(r,21,()=>e(B),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(H)[e(r).id]),a=n(()=>ce(e(r).sourceId)),s=n(()=>se(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 te()}})}a(i),p(t,i)}),a(r),p(t,r)};t(w,t=>{e(ie)?t(j):e(B).length===0&&!e(U)?t(M,1):e(B).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(q)!==null),r=n(()=>F($[`reports.archive_confirm_title`],{title:e(q)?.title??``})),i=n(()=>F($[`reports.archive_confirm`])),a=n(()=>F($[`reports.archive`])),o=n(()=>F($[`reports.cancel`])),s=n(()=>e(K)!==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(q)&&void oe(e(q),!0),oncancel:()=>k(q,null)})}a(ue),v(ue,e=>k(X,e),()=>e(X)),D(e=>{O(ue,`data-variant`,E()),O(ue,`aria-label`,e)},[()=>F($[`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=oe(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 J(n,a,{sources:r})}async function r(r,i=``){let a=K(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 Z)return{ok:!1,question:se(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=oe(t.spec)}catch{throw new Cn(422,`invalid_spec`)}let a=await Y(r);if(a!==t.specHash)throw new Cn(422,`spec_hash_mismatch`);try{await n(r)}catch(e){throw e instanceof Z?new Cn(422,e.code):e}let o=(await i()).find(e=>e.status===`active`&&e.createdByUserId===`planner`&&X(e.spec)===X(r));if(o)return o;let s=Tn(await e.data.create(wn(),{title:r.title,description:r.description??``,sourceId:r.source,spec:X(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(q(n,e).fields):[]}function u(){let e=t();return e.map(t=>{let n=q(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:()=>G.ids,recipes:U,now:()=>new Date(I)}),Dn.set(e,t)),t}async function kn(e){await ae.openPath?.(Sn(e.id))}async function An(e,t){try{await kn(t)}catch{}e?.isConnected&&R(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,E as r,Ft as i,G as a,Ot as o,U as s,a as c,ft as l,ht as u,st as d,v as f}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{t as p}from"./
|
|
1
|
+
import{$ as e,Ct as t,Dt as n,E as r,Ft as i,G as a,Ot as o,U as s,a as c,ft as l,ht as u,st as d,v as f}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{t as p}from"./38SS-Q6Y.js";import{tt as m}from"./9iVbSlQr.js";var h=a(`<div><a class="svelte-1fbsd8p"><!></a> <a class="svelte-1fbsd8p"><!></a></div>`);function g(a,g){o(g,!0);let _=c(g,`compact`,3,!1),v=t(()=>`${p(`/recipes/${g.section}/help/`)}${g.helpAnchor?`#${g.helpAnchor}`:``}`);var y=h();let b;var x=l(y),S=l(x);{let n=t(()=>_()?16:22);m(S,{path:`M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z`,get size(){return e(n)}})}i(x);var C=u(x,2),w=l(C);{let n=t(()=>_()?16:22);m(w,{path:`M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58a.49.49 0 0 0 .12-.61l-1.92-3.32a.488.488 0 0 0-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54a.484.484 0 0 0-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58a.49.49 0 0 0-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z`,get size(){return e(n)}})}i(C),i(y),d(t=>{b=r(y,1,`icons svelte-1fbsd8p`,null,b,{compact:_()}),f(x,`href`,e(v)),f(x,`title`,`${g.label} help`),f(x,`aria-label`,`${g.label} help`),f(x,`aria-current`,g.current===`help`?`page`:void 0),f(C,`href`,t),f(C,`title`,`${g.label} options`),f(C,`aria-label`,`${g.label} options`),f(C,`aria-current`,g.current===`options`?`page`:void 0)},[()=>p(`/recipes/${g.section}/`)]),s(a,y),n()}export{g as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{O as e,u as t}from"./
|
|
1
|
+
import{O as e,u as t}from"./38SS-Q6Y.js";import{v as n}from"./9iVbSlQr.js";import{c as r}from"./DbH3RuTE.js";var i=`@happyvertical/smrt-reports:RuntimeReport`;function a(e){switch(e.type){case`text`:return`string`;case`integer`:return`integer`;case`decimal`:return`decimal`;case`boolean`:return`boolean`;case`datetime`:return`datetime`;case`foreignKey`:case`crossPackageRef`:return`id`;default:return null}}function o(e){let t=e.replace(/([a-z\d])([A-Z])/g,`$1_$2`).toLowerCase();return/(series|species)$/.test(t)?t:/[^aeiou]y$/.test(t)?`${t.slice(0,-1)}ies`:/(s|x|z|ch|sh)$/.test(t)?`${t}es`:`${t}s`}var s=[`totalAmount`,`total`,`amount`];function c(n,i,c=o(n.name)){let l=[{name:`id`,type:`string`}];for(let r of n.fields){let n=a(r);if(!n||r.system||l.some(e=>e.name===r.name))continue;let i=e(r)?`money`:n===`datetime`&&r.ui?.format===`date`?`date`:void 0;l.push({name:r.name,type:n,label:t(r),...i?{format:i}:{},...n===`string`&&r.enum?.length?{enum:r.enum}:{}})}let u=l.filter(e=>e.format===`money`),d=s.map(e=>u.find(t=>t.name===e)).find(Boolean),f={id:c,label:i,...n.description?{description:n.description}:{},schema:l,model:n,...d?{amountField:d.name}:{}},p=r([f],c).defaultTimeField;return p?{...f,dateField:p}:f}function l(e,t){let r=new Set(e),i=new Map;for(let e of t)if(r.has(e.id))for(let t of n(e))t.model.id!==`@happyvertical/smrt-reports:RuntimeReport`&&i.set(t.model.id,[...i.get(t.model.id)??[],t]);let a=new Map,s=new Set;for(let[e,t]of i){let n=t.find(e=>!e.filter)??t[0],r=o(n.model.name);s.has(r)&&(r=`${n.packageId}.${r}`),s.add(r),a.set(e,c(n.model,n.label,r))}return[...a.values()]}export{l as n,i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./5TDxHd66.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./DG3qFFTE.js";import"./xihTtKlq.js";import"./38SS-Q6Y.js";import"./9PL91wDk.js";import"./DF-0MxNw.js";import"./DDtOXC2p.js";import"./CsaWd8kG.js";function e(){return typeof window<`u`&&typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}export{e as t};
|