@happyvertical/smrt-planner 0.57.6 → 0.57.7
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/agents/assistant.md +29 -2
- package/agents/shell.md +13 -0
- package/app/404.html +26 -29
- package/app/_app/immutable/assets/0.BaRFeYGU.css +1 -0
- package/app/_app/immutable/assets/AppShell.BkKNrxND.css +1 -0
- package/app/_app/immutable/assets/{ModelPage.FEM0ZnPM.css → ModelPage.SIoeO-AU.css} +1 -1
- package/app/_app/immutable/assets/app.BHwMQ9Zv.css +1 -0
- package/app/_app/immutable/assets/{forms.DXOeP4wZ.css → forms.BRdbPdvs.css} +1 -1
- package/app/_app/immutable/assets/icons.BDx21rPt.css +1 -0
- package/app/_app/immutable/assets/labels.Dxa6EyRI.css +1 -0
- package/app/_app/immutable/assets/planner.DOQVfcOi.css +1 -0
- package/app/_app/immutable/assets/state.C0UZEhxS.css +1 -0
- package/app/_app/immutable/chunks/{BPsie9Wr.js → B2uXaQfZ.js} +1 -1
- package/app/_app/immutable/chunks/{D2Ykv2Y3.js → BQLQsso4.js} +1 -1
- package/app/_app/immutable/chunks/BdOPgmQ_.js +11 -0
- package/app/_app/immutable/chunks/BeL8dJx9.js +4 -0
- package/app/_app/immutable/chunks/{DypPefJO.js → Bhd-3niN.js} +1 -1
- package/app/_app/immutable/chunks/{exPME6UK.js → BqEBz5Vq.js} +1 -1
- package/app/_app/immutable/chunks/{GdHEbDDH.js → BxyJ_Q7v.js} +1 -1
- package/app/_app/immutable/chunks/{Dyf3Cj8R.js → C2OYATC6.js} +1 -1
- package/app/_app/immutable/chunks/C6AANt9H.js +26 -0
- package/app/_app/immutable/chunks/{0as86J1A.js → C8FX0hli.js} +6 -6
- package/app/_app/immutable/chunks/{BSYvnYu8.js → CYhwv6d2.js} +1 -1
- package/app/_app/immutable/chunks/CdKHckEF.js +1 -0
- package/app/_app/immutable/chunks/CsaWd8kG.js +2 -0
- package/app/_app/immutable/chunks/Cwz7QFS4.js +2 -0
- package/app/_app/immutable/chunks/{CoXf-L_3.js → D3lXu_rt.js} +25 -25
- package/app/_app/immutable/chunks/{PsiVGwJV.js → D8MqcCKq.js} +1 -1
- package/app/_app/immutable/chunks/DF-0MxNw.js +1 -0
- package/app/_app/immutable/chunks/DGaFQflg.js +1 -0
- package/app/_app/immutable/chunks/DIgo5ngo.js +1 -0
- package/app/_app/immutable/chunks/{CdlkzC7D.js → Db12RzZi.js} +1 -1
- package/app/_app/immutable/chunks/{eNZ3ToP2.js → DfN2k_EX.js} +1 -1
- package/app/_app/immutable/chunks/DmHVTNcC.js +4 -0
- package/app/_app/immutable/chunks/{DrjdLb0M.js → DmdvNG82.js} +2 -2
- package/app/_app/immutable/chunks/{CwNhmq3e.js → DwIRC3h5.js} +1 -1
- package/app/_app/immutable/chunks/{Dzh-1KQR.js → FeyhlLIZ.js} +1 -1
- package/app/_app/immutable/chunks/ICDFUCZL.js +2 -0
- package/app/_app/immutable/chunks/{D31rqKs1.js → IDZmjRDr.js} +1 -1
- package/app/_app/immutable/chunks/JqlEoPqZ.js +1 -0
- package/app/_app/immutable/chunks/{D8rEUyzO.js → TcjpRcdI.js} +1 -1
- package/app/_app/immutable/chunks/Vt9hDpHd.js +1 -0
- package/app/_app/immutable/chunks/ezs6CGyc.js +1 -0
- package/app/_app/immutable/chunks/lUJaueNM.js +16 -0
- package/app/_app/immutable/entry/app.C5bxPKCP.js +2 -0
- package/app/_app/immutable/entry/start.CZvO61qD.js +1 -0
- package/app/_app/immutable/nodes/0.DFJFBCCB.js +7 -0
- package/app/_app/immutable/nodes/{1.CTatAlE5.js → 1.D_79m87b.js} +1 -1
- package/app/_app/immutable/nodes/{10.DHnK3kbB.js → 10.20u2-jxn.js} +1 -1
- package/app/_app/immutable/nodes/{11.Ck1kcQLu.js → 11.CvMq32jC.js} +1 -1
- package/app/_app/immutable/nodes/{12.oK17D56_.js → 12.Cd0cy1AC.js} +1 -1
- package/app/_app/immutable/nodes/{13.DlEsuw6F.js → 13.DYYS3YVQ.js} +1 -1
- package/app/_app/immutable/nodes/14.BEf5BJDn.js +1 -0
- package/app/_app/immutable/nodes/2.C_kLkHNl.js +24 -0
- package/app/_app/immutable/nodes/{3.DOL1VeVM.js → 3.CZw3hv8O.js} +1 -1
- package/app/_app/immutable/nodes/{4.CiKq5-ek.js → 4.WMU9NDex.js} +1 -1
- package/app/_app/immutable/nodes/{5.nKUg_W9L.js → 5.CuqxSfl4.js} +1 -1
- package/app/_app/immutable/nodes/{6.CVGw-hLa.js → 6.BXLQB7tR.js} +1 -1
- package/app/_app/immutable/nodes/{7.Clo6kG4w.js → 7.BZvxNeL2.js} +1 -1
- package/app/_app/immutable/nodes/{8.C3moca98.js → 8.Bj2O4pyx.js} +1 -1
- package/app/_app/immutable/nodes/{9.BnVJx5kW.js → 9.yeFzeUHj.js} +1 -1
- package/app/_app/version.json +1 -1
- package/app/advanced-styles/index.html +32 -33
- package/app/ai/index.html +37 -38
- package/app/blueprint/index.html +27 -30
- package/app/cookbook/index.html +27 -30
- package/app/index.html +36 -39
- package/app/m/ads/AdDeliveryTier/index.html +34 -35
- package/app/m/ads/AdEvent/index.html +34 -35
- package/app/m/ads/AdFormat/index.html +34 -35
- package/app/m/ads/AdGroup/index.html +34 -35
- package/app/m/ads/AdVariation/index.html +34 -35
- package/app/m/analytics/AnalyticsDataStream/index.html +34 -35
- package/app/m/analytics/AnalyticsEvent/index.html +34 -35
- package/app/m/analytics/AnalyticsProperty/index.html +34 -35
- package/app/m/analytics/AnalyticsReport/index.html +34 -35
- package/app/m/approvals/ApprovalEvent/index.html +34 -35
- package/app/m/approvals/ApprovalPolicy/index.html +34 -35
- package/app/m/approvals/ApprovalRequest/index.html +34 -35
- package/app/m/assets/Asset/attachments/index.html +36 -37
- package/app/m/assets/Asset/index.html +34 -35
- package/app/m/assets/AssetAssociation/index.html +35 -36
- package/app/m/assets/AssetMetafield/index.html +34 -35
- package/app/m/assets/AssetStatus/index.html +34 -35
- package/app/m/assets/AssetType/index.html +34 -35
- package/app/m/assets/Folder/index.html +34 -35
- package/app/m/chat/AgentSession/index.html +34 -35
- package/app/m/chat/ChatMessage/index.html +35 -36
- package/app/m/chat/ChatParticipant/index.html +35 -36
- package/app/m/chat/ChatReaction/index.html +34 -35
- package/app/m/chat/ChatRoom/index.html +34 -35
- package/app/m/chat/ChatThread/index.html +35 -36
- package/app/m/chat/VoiceGatewayTurn/index.html +34 -35
- package/app/m/chat/VoiceSession/index.html +34 -35
- package/app/m/commerce/Agreement/index.html +34 -35
- package/app/m/commerce/Cart/index.html +34 -35
- package/app/m/commerce/Contract/index.html +34 -35
- package/app/m/commerce/ContractLineItem/index.html +35 -36
- package/app/m/commerce/Customer/index.html +34 -35
- package/app/m/commerce/DocumentTax/index.html +34 -35
- package/app/m/commerce/Estimate/index.html +34 -35
- package/app/m/commerce/Fulfillment/index.html +34 -35
- package/app/m/commerce/FulfillmentLineItem/index.html +35 -36
- package/app/m/commerce/HistoricalCustomerFunds/index.html +34 -35
- package/app/m/commerce/HistoricalCustomerFundsAllocation/index.html +34 -35
- package/app/m/commerce/HistoricalSalesLine/index.html +34 -35
- package/app/m/commerce/Invoice/index.html +34 -35
- package/app/m/commerce/InvoiceLineItem/index.html +35 -36
- package/app/m/commerce/Lease/index.html +34 -35
- package/app/m/commerce/LicenseSale/index.html +34 -35
- package/app/m/commerce/Order/index.html +34 -35
- package/app/m/commerce/Payment/index.html +34 -35
- package/app/m/commerce/PaymentAllocation/index.html +35 -36
- package/app/m/commerce/PaymentInstrument/index.html +34 -35
- package/app/m/commerce/PaymentIntent/index.html +34 -35
- package/app/m/commerce/Payout/index.html +34 -35
- package/app/m/commerce/ProductionOrder/index.html +34 -35
- package/app/m/commerce/PurchaseContract/index.html +34 -35
- package/app/m/commerce/PurchaseOrder/index.html +34 -35
- package/app/m/commerce/SalesContract/index.html +34 -35
- package/app/m/commerce/SupplierQuote/index.html +34 -35
- package/app/m/commerce/TaxCode/index.html +34 -35
- package/app/m/commerce/TaxComponent/index.html +34 -35
- package/app/m/commerce/TaxSettings/index.html +34 -35
- package/app/m/commerce/TaxSummaryReport/index.html +34 -35
- package/app/m/commerce/Vendor/index.html +34 -35
- package/app/m/commerce/WholesaleOrder/index.html +34 -35
- package/app/m/content/Content/index.html +34 -35
- package/app/m/content/ContentContribution/index.html +34 -35
- package/app/m/content/ContentContributionAttachment/index.html +34 -35
- package/app/m/content/ContentContributionRevision/index.html +34 -35
- package/app/m/content/ContentContributionType/index.html +34 -35
- package/app/m/content/ContentContributor/index.html +34 -35
- package/app/m/content/ContentCorrection/index.html +34 -35
- package/app/m/content/ContentFeedSource/index.html +34 -35
- package/app/m/content/ContentGovernanceAssignment/index.html +34 -35
- package/app/m/content/ContentGovernancePolicy/index.html +34 -35
- package/app/m/content/ContentGovernanceProfile/index.html +34 -35
- package/app/m/content/ContentReference/index.html +34 -35
- package/app/m/content/ContentReview/index.html +34 -35
- package/app/m/content/ContentVersion/index.html +34 -35
- package/app/m/events/Event/index.html +34 -35
- package/app/m/events/EventParticipant/index.html +35 -36
- package/app/m/events/EventSeries/index.html +34 -35
- package/app/m/events/EventType/index.html +34 -35
- package/app/m/expenses/Expense/index.html +34 -35
- package/app/m/facts/Fact/index.html +34 -35
- package/app/m/facts/FactContent/index.html +34 -35
- package/app/m/facts/FactEvidence/index.html +34 -35
- package/app/m/facts/FactSource/index.html +34 -35
- package/app/m/facts/FactSubject/index.html +34 -35
- package/app/m/facts/FactTag/index.html +34 -35
- package/app/m/fields/FieldPolicy/index.html +34 -35
- package/app/m/fields/FieldPolicySuggestion/index.html +34 -35
- package/app/m/fields/FieldUsageCounter/index.html +34 -35
- package/app/m/images/Image/index.html +34 -35
- package/app/m/inventory/InventoryLocation/index.html +34 -35
- package/app/m/inventory/StockLevel/index.html +34 -35
- package/app/m/inventory/StockMovement/index.html +34 -35
- package/app/m/ledgers/Account/index.html +34 -35
- package/app/m/ledgers/Journal/index.html +34 -35
- package/app/m/ledgers/JournalEntry/index.html +35 -36
- package/app/m/ledgers/Ledger/index.html +34 -35
- package/app/m/manufacturing/Assembly/index.html +34 -35
- package/app/m/manufacturing/BillOfMaterials/index.html +34 -35
- package/app/m/manufacturing/BomLine/index.html +34 -35
- package/app/m/manufacturing/Operation/index.html +34 -35
- package/app/m/manufacturing/ProductionRun/index.html +34 -35
- package/app/m/manufacturing/ProductionRunCompletion/index.html +34 -35
- package/app/m/manufacturing/RoutingStep/index.html +34 -35
- package/app/m/marketing/Campaign/index.html +34 -35
- package/app/m/marketing/CampaignChannel/index.html +34 -35
- package/app/m/marketing/CampaignMetricSnapshot/index.html +34 -35
- package/app/m/messages/Account/index.html +34 -35
- package/app/m/messages/Attachment/index.html +34 -35
- package/app/m/messages/Blacklist/index.html +34 -35
- package/app/m/messages/Email/failed-sends/index.html +36 -37
- package/app/m/messages/Email/index.html +34 -35
- package/app/m/messages/Email/mailbox/index.html +36 -37
- package/app/m/messages/EmailAccount/index.html +34 -35
- package/app/m/messages/EmailAttachment/index.html +34 -35
- package/app/m/messages/EmailFolder/index.html +34 -35
- package/app/m/messages/Message/index.html +34 -35
- package/app/m/messages/MessagingEndpoint/index.html +34 -35
- package/app/m/messages/PersonaMessageRoute/index.html +34 -35
- package/app/m/messages/SlackAccount/index.html +34 -35
- package/app/m/messages/SlackMessage/index.html +34 -35
- package/app/m/messages/TelegramAccount/index.html +34 -35
- package/app/m/messages/Tweet/index.html +34 -35
- package/app/m/messages/TwitterAccount/index.html +34 -35
- package/app/m/messages/Whitelist/index.html +34 -35
- package/app/m/messages/ZulipAccount/index.html +34 -35
- package/app/m/places/Place/index.html +34 -35
- package/app/m/places/PlaceType/index.html +34 -35
- package/app/m/products/Category/index.html +34 -35
- package/app/m/products/Material/index.html +34 -35
- package/app/m/products/Product/index.html +34 -35
- package/app/m/products/Product/ingredients/index.html +36 -37
- package/app/m/products/ProductVariant/index.html +35 -36
- package/app/m/products/Sku/index.html +35 -36
- package/app/m/profiles/ApiKey/index.html +34 -35
- package/app/m/profiles/Bot/index.html +34 -35
- package/app/m/profiles/MagicLinkToken/index.html +34 -35
- package/app/m/profiles/NostrIdentity/index.html +34 -35
- package/app/m/profiles/OidcIdentity/index.html +34 -35
- package/app/m/profiles/Organization/index.html +34 -35
- package/app/m/profiles/Person/index.html +34 -35
- package/app/m/profiles/Profile/index.html +34 -35
- package/app/m/profiles/ProfileMetadata/index.html +34 -35
- package/app/m/profiles/ProfileMetafield/index.html +34 -35
- package/app/m/profiles/ProfileRelationship/index.html +34 -35
- package/app/m/profiles/ProfileRelationshipTerm/index.html +34 -35
- package/app/m/profiles/ProfileRelationshipType/index.html +34 -35
- package/app/m/profiles/ProfileType/index.html +34 -35
- package/app/m/projects/Comment/index.html +35 -36
- package/app/m/projects/Issue/index.html +34 -35
- package/app/m/projects/Label/index.html +34 -35
- package/app/m/projects/Project/index.html +34 -35
- package/app/m/projects/ProjectIntegration/index.html +34 -35
- package/app/m/projects/PullRequest/index.html +34 -35
- package/app/m/projects/Repository/index.html +34 -35
- package/app/m/properties/Property/index.html +34 -35
- package/app/m/properties/Zone/index.html +34 -35
- package/app/m/reports/RuntimeReport/index.html +38 -36
- package/app/m/reports/SmrtPrincipalReportRefreshTask/index.html +34 -35
- package/app/m/reports/SmrtReportLock/index.html +34 -35
- package/app/m/reports/SmrtReportRefreshTask/index.html +34 -35
- package/app/m/reports/SmrtReportRun/index.html +34 -35
- package/app/m/reports/SmrtReportSchedule/index.html +34 -35
- package/app/m/reports/SmrtReportWatermark/index.html +34 -35
- package/app/m/sales/Agreement/index.html +34 -35
- package/app/m/sales/AttributionException/index.html +34 -35
- package/app/m/sales/AttributionPolicy/index.html +34 -35
- package/app/m/sales/Commission/index.html +34 -35
- package/app/m/sales/CommissionAdjustment/index.html +34 -35
- package/app/m/sales/CommissionPayout/index.html +34 -35
- package/app/m/sales/CommissionPlan/index.html +34 -35
- package/app/m/sales/Earner/index.html +34 -35
- package/app/m/sales/EarnerSourceAttribution/index.html +34 -35
- package/app/m/sales/EarningEvent/index.html +34 -35
- package/app/m/sales/ExecutedAgreement/index.html +34 -35
- package/app/m/sales/Lead/index.html +34 -35
- package/app/m/sales/Opportunity/index.html +34 -35
- package/app/m/sales/OpportunityConversion/index.html +34 -35
- package/app/m/sales/PipelineDefinition/index.html +34 -35
- package/app/m/sales/PipelineStage/index.html +35 -36
- package/app/m/sales/Referral/index.html +34 -35
- package/app/m/sales/ReferralAgreement/index.html +34 -35
- package/app/m/sales/ReferralLink/index.html +34 -35
- package/app/m/sales/ReferralProgram/index.html +34 -35
- package/app/m/sales/ReferralTermSnapshot/index.html +34 -35
- package/app/m/sales/ReferralTouch/index.html +34 -35
- package/app/m/sales/Referrer/index.html +34 -35
- package/app/m/sales/SalesActivity/index.html +34 -35
- package/app/m/sales/SalesRepresentative/index.html +34 -35
- package/app/m/sites/Site/index.html +34 -35
- package/app/m/sites/SiteAgentBinding/index.html +34 -35
- package/app/m/social/OAuthState/index.html +34 -35
- package/app/m/social/SocialAccount/index.html +34 -35
- package/app/m/social/SocialPost/index.html +34 -35
- package/app/m/social/SocialPostAnalyticsSnapshot/index.html +34 -35
- package/app/m/subscriptions/BillingAdjustment/index.html +34 -35
- package/app/m/subscriptions/ClientCharge/index.html +34 -35
- package/app/m/subscriptions/CreditGrant/index.html +34 -35
- package/app/m/subscriptions/PricingRule/index.html +34 -35
- package/app/m/subscriptions/RetailCharge/index.html +34 -35
- package/app/m/subscriptions/SpendingPolicy/index.html +34 -35
- package/app/m/subscriptions/SubscriptionPlan/index.html +34 -35
- package/app/m/subscriptions/TenantSubscription/index.html +34 -35
- package/app/m/subscriptions/TenantUsageMetric/index.html +34 -35
- package/app/m/support/ServiceTimeEntry/index.html +34 -35
- package/app/m/support/SupportAiRun/index.html +34 -35
- package/app/m/support/SupportAvailability/index.html +34 -35
- package/app/m/support/SupportCase/index.html +34 -35
- package/app/m/support/SupportCaseEvent/index.html +34 -35
- package/app/m/support/SupportChannelBinding/index.html +34 -35
- package/app/m/support/SupportCharge/index.html +34 -35
- package/app/m/support/SupportCompensation/index.html +34 -35
- package/app/m/support/SupportCompensationPlan/index.html +34 -35
- package/app/m/support/SupportEscalation/index.html +34 -35
- package/app/m/support/SupportInteraction/index.html +34 -35
- package/app/m/support/SupportPlan/index.html +34 -35
- package/app/m/support/SupportPolicy/index.html +34 -35
- package/app/m/support/SupportQualification/index.html +34 -35
- package/app/m/support/SupportServiceTarget/index.html +34 -35
- package/app/m/support/SupportSpecialist/index.html +34 -35
- package/app/m/support/SupportWorkLink/index.html +34 -35
- package/app/m/tags/Tag/index.html +34 -35
- package/app/m/tags/TagAlias/index.html +34 -35
- package/app/m/timesheets/AttendanceBreak/index.html +34 -35
- package/app/m/timesheets/AttendancePunch/index.html +34 -35
- package/app/m/timesheets/AttendanceSegment/index.html +34 -35
- package/app/m/timesheets/ServiceChargeSnapshot/index.html +34 -35
- package/app/m/timesheets/ServiceCompensationSnapshot/index.html +34 -35
- package/app/m/timesheets/ServiceTimeEntry/index.html +34 -35
- package/app/m/users/Group/index.html +34 -35
- package/app/m/users/GroupMember/index.html +34 -35
- package/app/m/users/GroupRole/index.html +34 -35
- package/app/m/users/Membership/index.html +35 -36
- package/app/m/users/MembershipOverride/index.html +34 -35
- package/app/m/users/Permission/index.html +34 -35
- package/app/m/users/Role/index.html +34 -35
- package/app/m/users/RolePermission/index.html +34 -35
- package/app/m/users/Session/index.html +34 -35
- package/app/m/users/Tenant/index.html +34 -35
- package/app/m/users/TenantIntegration/index.html +34 -35
- package/app/m/users/TenantPermissionOverride/index.html +34 -35
- package/app/m/users/User/index.html +34 -35
- package/app/m/video/Character/index.html +34 -35
- package/app/m/video/CharacterAsset/index.html +34 -35
- package/app/m/video/CompositeJob/index.html +34 -35
- package/app/m/video/Performer/index.html +34 -35
- package/app/m/video/PerformerAsset/index.html +34 -35
- package/app/m/video/Scene/index.html +34 -35
- package/app/m/video/SceneAsset/index.html +34 -35
- package/app/m/video/VideoComposition/index.html +34 -35
- package/app/m/video/VideoCompositionAsset/index.html +34 -35
- package/app/m/video/VideoSequence/index.html +34 -35
- package/app/m/video/VideoSequenceAsset/index.html +34 -35
- package/app/m/video/VideoShot/index.html +34 -35
- package/app/m/video/VideoShotAsset/index.html +34 -35
- package/app/m/video/VideoShotCharacter/index.html +34 -35
- package/app/m/video/VideoWorkflow/index.html +34 -35
- package/app/m/voice/VoiceOutput/index.html +34 -35
- package/app/m/voice/VoiceProfile/index.html +34 -35
- package/app/m/voice/VoiceSample/index.html +34 -35
- package/app/mcp.html +2 -2
- package/app/packages/ads/index.html +29 -32
- package/app/packages/analytics/index.html +29 -32
- package/app/packages/approvals/index.html +29 -32
- package/app/packages/assets/index.html +29 -32
- package/app/packages/chat/index.html +29 -32
- package/app/packages/comments/index.html +29 -32
- package/app/packages/commerce/index.html +29 -32
- package/app/packages/content/index.html +29 -32
- package/app/packages/events/index.html +29 -32
- package/app/packages/expenses/index.html +29 -32
- package/app/packages/facts/index.html +29 -32
- package/app/packages/fields/index.html +29 -32
- package/app/packages/human-resources/index.html +29 -32
- package/app/packages/images/index.html +29 -32
- package/app/packages/index.html +28 -31
- package/app/packages/ingestion/index.html +29 -32
- package/app/packages/inventory/index.html +29 -32
- package/app/packages/ledgers/index.html +29 -32
- package/app/packages/manufacturing/index.html +29 -32
- package/app/packages/marketing/index.html +29 -32
- package/app/packages/messages/index.html +29 -32
- package/app/packages/places/index.html +29 -32
- package/app/packages/preferences/index.html +29 -32
- package/app/packages/products/index.html +29 -32
- package/app/packages/profiles/index.html +29 -32
- package/app/packages/projects/index.html +29 -32
- package/app/packages/properties/index.html +29 -32
- package/app/packages/reports/index.html +29 -32
- package/app/packages/sales/index.html +29 -32
- package/app/packages/sites/index.html +29 -32
- package/app/packages/social/index.html +29 -32
- package/app/packages/subscriptions/index.html +29 -32
- package/app/packages/support/index.html +29 -32
- package/app/packages/tags/index.html +29 -32
- package/app/packages/timesheets/index.html +29 -32
- package/app/packages/users/index.html +29 -32
- package/app/packages/video/index.html +29 -32
- package/app/packages/voice/index.html +29 -32
- package/app/packages/webhooks/index.html +29 -32
- package/app/recipes/account-access/help/index.html +30 -33
- package/app/recipes/account-access/index.html +34 -36
- package/app/recipes/activity/help/index.html +30 -33
- package/app/recipes/activity/index.html +34 -36
- package/app/recipes/agreements/help/index.html +30 -33
- package/app/recipes/agreements/index.html +34 -36
- package/app/recipes/analytics.reports/help/index.html +30 -33
- package/app/recipes/analytics.reports/index.html +34 -36
- package/app/recipes/assets/help/index.html +30 -33
- package/app/recipes/assets/index.html +34 -36
- package/app/recipes/billing/help/index.html +30 -33
- package/app/recipes/billing/index.html +34 -36
- package/app/recipes/chat.assistant/help/index.html +30 -33
- package/app/recipes/chat.assistant/index.html +34 -36
- package/app/recipes/comments/help/index.html +30 -33
- package/app/recipes/comments/index.html +34 -36
- package/app/recipes/commerce.customers/help/index.html +30 -33
- package/app/recipes/commerce.customers/index.html +34 -36
- package/app/recipes/commerce.estimates/help/index.html +30 -33
- package/app/recipes/commerce.estimates/index.html +34 -36
- package/app/recipes/commerce.purchases/help/index.html +30 -33
- package/app/recipes/commerce.purchases/index.html +34 -36
- package/app/recipes/commerce.sales/help/index.html +30 -33
- package/app/recipes/commerce.sales/index.html +34 -36
- package/app/recipes/commerce.vendors/help/index.html +30 -33
- package/app/recipes/commerce.vendors/index.html +34 -36
- package/app/recipes/commerce.wholesale/help/index.html +30 -33
- package/app/recipes/commerce.wholesale/index.html +34 -36
- package/app/recipes/events.calendar/help/index.html +30 -33
- package/app/recipes/events.calendar/index.html +34 -36
- package/app/recipes/expenses.tracking/help/index.html +30 -33
- package/app/recipes/expenses.tracking/index.html +34 -36
- package/app/recipes/fields.form-customization/help/index.html +30 -33
- package/app/recipes/fields.form-customization/index.html +34 -36
- package/app/recipes/ingestion/help/index.html +30 -33
- package/app/recipes/ingestion/index.html +34 -36
- package/app/recipes/integrations/help/index.html +30 -33
- package/app/recipes/integrations/index.html +34 -36
- package/app/recipes/inventory.stock/help/index.html +30 -33
- package/app/recipes/inventory.stock/index.html +34 -36
- package/app/recipes/ledgers.bookkeeping/help/index.html +30 -33
- package/app/recipes/ledgers.bookkeeping/index.html +34 -36
- package/app/recipes/messages/help/index.html +30 -33
- package/app/recipes/messages/index.html +34 -36
- package/app/recipes/products/help/index.html +30 -33
- package/app/recipes/products/index.html +34 -36
- package/app/recipes/projects.tracker/help/index.html +30 -33
- package/app/recipes/projects.tracker/index.html +34 -36
- package/app/recipes/reports.materialized/help/index.html +30 -33
- package/app/recipes/reports.materialized/index.html +34 -36
- package/app/recipes/reports.runtime/help/index.html +31 -34
- package/app/recipes/reports.runtime/index.html +35 -37
- package/app/recipes/sales.pipeline/help/index.html +30 -33
- package/app/recipes/sales.pipeline/index.html +34 -36
- package/app/recipes/tags.taxonomy/help/index.html +30 -33
- package/app/recipes/tags.taxonomy/index.html +34 -36
- package/app/recipes/team-collaboration/help/index.html +30 -33
- package/app/recipes/team-collaboration/index.html +34 -36
- package/app/recipes/timesheets.time-entries/help/index.html +30 -33
- package/app/recipes/timesheets.time-entries/index.html +34 -36
- package/app/s/custom-accounts/index.html +27 -30
- package/app/s/custom-appointments/index.html +27 -30
- package/app/s/custom-billing/index.html +27 -30
- package/app/s/custom-bookings/index.html +27 -30
- package/app/s/custom-buying/index.html +27 -30
- package/app/s/custom-checkout/index.html +27 -30
- package/app/s/custom-classes/index.html +27 -30
- package/app/s/custom-clients/index.html +27 -30
- package/app/s/custom-events/index.html +27 -30
- package/app/s/custom-fleet/index.html +27 -30
- package/app/s/custom-gigs/index.html +27 -30
- package/app/s/custom-giving/index.html +27 -30
- package/app/s/custom-instruments/index.html +27 -30
- package/app/s/custom-jobs/index.html +27 -30
- package/app/s/custom-kitchen/index.html +27 -30
- package/app/s/custom-lessons/index.html +27 -30
- package/app/s/custom-material/index.html +27 -30
- package/app/s/custom-meetings/index.html +27 -30
- package/app/s/custom-members/index.html +27 -30
- package/app/s/custom-merch/index.html +27 -30
- package/app/s/custom-money/index.html +27 -30
- package/app/s/custom-paint/index.html +27 -30
- package/app/s/custom-parts/index.html +27 -30
- package/app/s/custom-rentals/index.html +27 -30
- package/app/s/custom-roastery/index.html +27 -30
- package/app/s/custom-schedule/index.html +27 -30
- package/app/s/custom-shelf/index.html +27 -30
- package/app/s/custom-shop/index.html +27 -30
- package/app/s/custom-students/index.html +27 -30
- package/app/s/custom-wholesale/index.html +27 -30
- package/app/s/custom-work/index.html +27 -30
- package/app/s/custom-yard/index.html +27 -30
- package/app/s/section-access-control/index.html +27 -30
- package/app/s/section-account-security/index.html +27 -30
- package/app/s/section-accounting/index.html +27 -30
- package/app/s/section-activity/index.html +27 -30
- package/app/s/section-agreements/index.html +27 -30
- package/app/s/section-analytics/index.html +27 -30
- package/app/s/section-assets/index.html +27 -30
- package/app/s/section-billing/index.html +27 -30
- package/app/s/section-calendar/index.html +27 -30
- package/app/s/section-catalog/index.html +27 -30
- package/app/s/section-chat.assistant/index.html +27 -30
- package/app/s/section-comments/index.html +27 -30
- package/app/s/section-fields.form-customization/index.html +27 -30
- package/app/s/section-ingestion/index.html +27 -30
- package/app/s/section-integrations/index.html +27 -30
- package/app/s/section-messages/index.html +27 -30
- package/app/s/section-more/index.html +27 -30
- package/app/s/section-operations/index.html +27 -30
- package/app/s/section-projects/index.html +27 -30
- package/app/s/section-purchasing/index.html +27 -30
- package/app/s/section-reports.materialized/index.html +27 -30
- package/app/s/section-reports.runtime/index.html +27 -30
- package/app/s/section-sales/index.html +27 -30
- package/app/s/section-taxonomy/index.html +27 -30
- package/app/s/section-team/index.html +27 -30
- package/app/s/section-work/index.html +27 -30
- package/dist/assistant/change.d.ts +10 -1
- package/dist/assistant/change.d.ts.map +1 -1
- package/dist/assistant/change.js +6 -1
- package/dist/assistant/prompt.d.ts +10 -1
- package/dist/assistant/prompt.d.ts.map +1 -1
- package/dist/assistant/prompt.js +42 -7
- package/dist/assistant/session.svelte.d.ts +6 -0
- package/dist/assistant/session.svelte.d.ts.map +1 -1
- package/dist/assistant/session.svelte.js +6 -0
- package/dist/assistant/transport.d.ts +23 -3
- package/dist/assistant/transport.d.ts.map +1 -1
- package/dist/assistant/transport.js +356 -13
- package/dist/catalog/catalog.json +107 -41
- package/dist/components/BrowserAssistant.svelte +26 -0
- package/dist/components/BrowserAssistant.svelte.d.ts.map +1 -1
- package/dist/components/ModelPage.svelte +36 -4
- package/dist/components/ModelPage.svelte.d.ts.map +1 -1
- package/dist/components/PlannerReports.svelte +61 -0
- package/dist/components/PlannerReports.svelte.d.ts +10 -0
- package/dist/components/PlannerReports.svelte.d.ts.map +1 -0
- package/dist/components/PlannerSavedReportsWidget.svelte +38 -0
- package/dist/components/PlannerSavedReportsWidget.svelte.d.ts +9 -0
- package/dist/components/PlannerSavedReportsWidget.svelte.d.ts.map +1 -0
- package/dist/components/ReportProposalCard.svelte +63 -0
- package/dist/components/ReportProposalCard.svelte.d.ts +17 -0
- package/dist/components/ReportProposalCard.svelte.d.ts.map +1 -0
- package/dist/components/SectionOverview.svelte +22 -1
- package/dist/components/SectionOverview.svelte.d.ts.map +1 -1
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +7 -1
- package/dist/core/reply.d.ts +6 -0
- package/dist/core/reply.d.ts.map +1 -1
- package/dist/core/reply.js +11 -0
- package/dist/data/planner-source.d.ts.map +1 -1
- package/dist/data/planner-source.js +4 -1
- package/dist/overviews/definitions.d.ts.map +1 -1
- package/dist/overviews/definitions.js +6 -1
- package/dist/overviews/registry.d.ts.map +1 -1
- package/dist/overviews/registry.js +9 -5
- package/dist/planner/Planner.svelte +17 -0
- package/dist/planner/Planner.svelte.d.ts.map +1 -1
- package/dist/planner/instance.d.ts +6 -0
- package/dist/planner/instance.d.ts.map +1 -1
- package/dist/planner/shell.d.ts.map +1 -1
- package/dist/planner/shell.js +3 -1
- package/dist/reports/intent.d.ts +106 -0
- package/dist/reports/intent.d.ts.map +1 -0
- package/dist/reports/intent.js +667 -0
- package/dist/reports/planner.d.ts +33 -0
- package/dist/reports/planner.d.ts.map +1 -0
- package/dist/reports/planner.js +60 -0
- package/dist/reports/sources.d.ts +36 -0
- package/dist/reports/sources.d.ts.map +1 -0
- package/dist/reports/sources.js +125 -0
- package/dist/reports/store.d.ts +64 -0
- package/dist/reports/store.d.ts.map +1 -0
- package/dist/reports/store.js +214 -0
- package/dist/smrt-version.d.ts +1 -1
- package/dist/smrt-version.js +1 -1
- package/package.json +54 -54
- package/app/_app/immutable/assets/0.C8CwV4Fz.css +0 -1
- package/app/_app/immutable/assets/AppShell.DrL8T9I9.css +0 -1
- package/app/_app/immutable/assets/app.4ScdTV_S.css +0 -1
- package/app/_app/immutable/assets/labels.AVmg4hBz.css +0 -1
- package/app/_app/immutable/assets/state.CkVocVUJ.css +0 -1
- package/app/_app/immutable/chunks/B7d7dGCP.js +0 -1
- package/app/_app/immutable/chunks/C3nKLKKd.js +0 -1
- package/app/_app/immutable/chunks/CXKa_xdk.js +0 -4
- package/app/_app/immutable/chunks/CdBvpdnq.js +0 -4
- package/app/_app/immutable/chunks/DBp81N-t.js +0 -24
- package/app/_app/immutable/chunks/DzRTyOpH.js +0 -1
- package/app/_app/immutable/chunks/GVQNHDp5.js +0 -1
- package/app/_app/immutable/chunks/M-CuJzQN.js +0 -1
- package/app/_app/immutable/chunks/ORlJSBRk.js +0 -1
- package/app/_app/immutable/chunks/gMSmS-_y.js +0 -2
- package/app/_app/immutable/chunks/jol435F5.js +0 -11
- package/app/_app/immutable/entry/app.C_C191oT.js +0 -2
- package/app/_app/immutable/entry/start.C01jT-Kj.js +0 -1
- package/app/_app/immutable/nodes/0._tbUx7Ky.js +0 -9
- package/app/_app/immutable/nodes/14.sDZ3z4Zh.js +0 -1
- package/app/_app/immutable/nodes/2.GYBHfqdI.js +0 -24
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,bt as t,ct as n,gt as r,nt as i,ot as a,vt as o}from"./DG3qFFTE.js";import{F as s,lt as c}from"./D3lXu_rt.js";import{g as l}from"./BeL8dJx9.js";import{a as u,c as d,h as f,n as p,o as m}from"./Cwz7QFS4.js";import{b as h,c as g,o as _,r as v}from"./lUJaueNM.js";import{n as y}from"./FeyhlLIZ.js";var b=[`material`,`glass`,`studio`,`smrt`,`happyvertical`],x=`@happyvertical/smrt-commerce:`,S={currency:[`Order`,`PurchaseOrder`,`WholesaleOrder`,`Estimate`,`Invoice`,`Agreement`].map(e=>({model:`${x}${e}`,field:`currency`})),taxRate:[`InvoiceLineItem`,`ContractLineItem`].map(e=>({model:`${x}${e}`,field:`taxRate`})),pricesIncludeTax:[`Invoice`,`Contract`].map(e=>({model:`${x}${e}`,field:`lineAmountType`})),taxRounding:[`Invoice`,`Contract`].map(e=>({model:`${x}${e}`,field:`taxRoundingScope`})),paymentTerms:[...[`Order`,`WholesaleOrder`,`Estimate`,`Invoice`,`Agreement`].map(e=>({model:`${x}${e}`,field:`terms`})),{model:`${x}Customer`,field:`paymentTerms`}]},C={id:`more`,label:`More`},w=/^@[^/]+\/(?:smrt-)?([^:]+):(.+)$/;function T(e,t){let n=e.models.find(e=>e.id===t);if(n)return{packageId:n.packageId,name:n.name};let r=w.exec(t);return r?{packageId:r[1],name:r[2]}:{packageId:`unknown`,name:t}}var E=(e,t,n)=>`item:${e}:${t}${n?`:${n}`:``}`,D=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase()),O=(e,t)=>D(T(e,t).name);function ee(e,t){let n=new Map(e.recipes.map(e=>[e.id,e])),r=new Map;for(let i of[...t.recipes].sort()){let t=n.get(i);if(!t)continue;let a=t.section??{id:t.group?.id??t.id,label:t.group?.label??t.label},o=`section:${a.id}`,s=r.get(o)??{id:o,label:a.label,items:[]};for(let n of t.nav){let{packageId:t,name:r}=T(e,n.model),i=E(t,r,n.key);s.items.some(e=>e.id===i)||s.items.push({id:i,label:n.label})}r.set(o,s)}let i=[...r.values()].filter(e=>e.items.length>0),a=new Set(e.models.filter(e=>e.exposed!==!1).map(e=>e.id)),o=t.features.filter(e=>a.has(e));return o.length&&i.push({id:`section:${C.id}`,label:C.label,items:o.map(t=>{let{packageId:n,name:r}=T(e,t);return{id:E(n,r),label:D(r)}})}),i}var k=(e,t)=>{if(!t?.length)return e;let n=e=>{let n=t.indexOf(e);return n<0?2**53-1:n};return[...e].sort((e,t)=>n(e.id)-n(t.id))};function te(e,t){let n=t.layout,r=ee(e,t).map(e=>({id:e.id,label:e.label,defaultLabel:e.label,custom:!1,hidden:!1,items:e.items.map(e=>({id:e.id,label:e.label,defaultLabel:e.label,hidden:!1}))}));for(let e of n?.customSections??[])r.some(t=>t.id===e.id)||r.push({id:e.id,label:e.label,defaultLabel:e.label,custom:!0,hidden:!1,items:[]});for(let[e,t]of Object.entries(n?.moved??{})){let n=r.find(e=>e.id===t);if(n)for(let t of r){let r=t.items.findIndex(t=>t.id===e);r>=0&&t!==n&&n.items.push(...t.items.splice(r,1))}}let i=new Set(n?.hidden??[]);for(let e of r){let t=n?.sections?.[e.id]?.label?.trim();t&&!e.custom&&(e.label=t),e.hidden=i.has(e.id),e.items=k(e.items,n?.itemOrder?.[e.id]);for(let t of e.items){let e=n?.items?.[t.id]?.label?.trim();e&&(t.label=e),t.hidden=i.has(t.id)}}return k(r.filter(e=>e.custom||e.items.length>0),n?.sectionOrder)}var A=(e,t)=>e.models.find(e=>e.id===t),ne=e=>{let t={...e};for(let e of[`hidden`,`customSections`,`sectionOrder`])t[e]?.length||delete t[e];for(let e of[`sections`,`items`,`itemOrder`,`moved`,`panels`,`placements`])t[e]&&Object.keys(t[e]).length===0&&delete t[e];return Object.keys(t).length>1?t:void 0};function re(e,t,n){let r=e?structuredClone(e):{version:1},i=n.trim();if(t.custom)return i?(r.customSections=r.customSections?.map(e=>e.id===t.id?{...e,label:i}:e),ne(r)):e;let a={...r.sections??{}},o={...a[t.id]??{}};return!i||i===t.defaultLabel?delete o.label:o.label=i,Object.keys(o).length?a[t.id]=o:delete a[t.id],r.sections=a,ne(r)}function ie(e,t,n){let r=e?structuredClone(e):{version:1},i=n?.trim()??``,a={...r.items??{}},o={...a[t.id]??{}};return!i||i===t.defaultLabel?delete o.label:o.label=i,Object.keys(o).length?a[t.id]=o:delete a[t.id],r.items=a,ne(r)}function ae(e,t,n){let r=e?structuredClone(e):{version:1},i=(r.hidden??[]).filter(e=>e!==t);return r.hidden=n?[...i,t]:i,ne(r)}var oe=`https://s-m-r-t.dev/schemas/cookbook/v1.json`,se=new Set([`basic`,`advanced`,`hidden`]),ce=new Set([`api`,`mcp`,`cli`]),le=new Set([`light`,`dark`,`system`]),ue={borderRadius:[`none`,`sm`,`md`,`lg`,`xl`,`full`],density:[`comfortable`,`touch`],contrast:[`auto`,`standard`,`more`]},de=new Set([`header.start`,`header.center`,`header.end`,`footer.start`,`footer.center`,`footer.end`,`leftSidebar.header`,`leftSidebar.footer`,`rightSidebar.header`,`rightSidebar.footer`]),j=e=>typeof e==`object`&&!!e&&!Array.isArray(e),M=e=>Array.isArray(e)&&e.every(e=>typeof e==`string`),fe=(e,t)=>j(e)&&!Object.hasOwn(e,`__proto__`)&&Object.values(e).every(t),pe=(e,t,n,r,i)=>{e.push({severity:t,code:n,path:r,message:i})},N=(e,t,n,r)=>pe(e,`error`,t,n,r),P=(e,t,n,r)=>pe(e,`warning`,t,n,r);function me(e,t,n){if(!j(e))return N(n,`invalid_type`,t,`${t} must be an object`);for(let r of[`objectRef`,`fieldName`])(typeof e[r]!=`string`||!e[r])&&N(n,`invalid_value`,`${t}.${r}`,`${t}.${r} must be a non-empty string`);e.scopeType!==`app`&&N(n,`invalid_value`,`${t}.scopeType`,`${t}.scopeType must be "app"`);for(let r of[`defaultValue`,`help`,`label`]){let i=e[r];i!=null&&typeof i!=`string`&&N(n,`invalid_type`,`${t}.${r}`,`${t}.${r} must be a string or null`)}let r=e.visibility;r!=null&&!(typeof r==`string`&&se.has(r))&&N(n,`invalid_value`,`${t}.visibility`,`${t}.visibility must be basic, advanced or hidden`);let i=e.displayOrder;i!=null&&!(typeof i==`number`&&Number.isFinite(i))&&N(n,`invalid_value`,`${t}.displayOrder`,`${t}.displayOrder must be a finite number`),e.locked!=null&&typeof e.locked!=`boolean`&&N(n,`invalid_type`,`${t}.locked`,`${t}.locked must be a boolean`)}function he(e,t){if(!j(e)||e.version!==1)return N(t,`invalid_value`,`layout`,`layout must be an object with version 1`);for(let n of[`sectionOrder`,`hidden`])e[n]!==void 0&&!M(e[n])&&N(t,`invalid_type`,`layout.${n}`,`layout.${n} must be a list of strings`);for(let n of[`itemOrder`,`moved`,`placements`]){let r=e[n];r!==void 0&&((n===`itemOrder`?fe(r,M):fe(r,e=>typeof e==`string`))||N(t,`invalid_type`,`layout.${n}`,n===`itemOrder`?`layout.itemOrder must map ids to lists of strings`:`layout.${n} must map ids to strings`))}if(j(e.placements))for(let[n,r]of Object.entries(e.placements))typeof r==`string`&&!de.has(r)&&N(t,`unknown_layout_slot`,`layout.placements.${n}`,`Unknown shell slot "${r}".`);for(let n of[`sections`,`items`,`panels`])e[n]!==void 0&&!fe(e[n],e=>j(e))&&N(t,`invalid_type`,`layout.${n}`,`layout.${n} must map ids to objects`);let n=e.customSections;n!==void 0&&!(Array.isArray(n)&&n.every(e=>j(e)&&typeof e.id==`string`&&typeof e.label==`string`))&&N(t,`invalid_type`,`layout.customSections`,`layout.customSections must be a list of { id, label }`)}function ge(e,t){if(!j(e))return N(t,`invalid_type`,`theme`,`theme must be an object`);e.preset!==void 0&&typeof e.preset!=`string`&&N(t,`invalid_type`,`theme.preset`,`theme.preset must be a string`),e.fontFamily!==void 0&&(typeof e.fontFamily!=`string`||!e.fontFamily)&&N(t,`invalid_value`,`theme.fontFamily`,`theme.fontFamily must be a non-empty string`),e.customCss!==void 0&&(typeof e.customCss==`string`?Array.from(e.customCss).length>65536&&N(t,`invalid_value`,`theme.customCss`,`theme.customCss must be at most 65,536 characters`):N(t,`invalid_type`,`theme.customCss`,`theme.customCss must be a string`)),e.colorScheme!==void 0&&!(typeof e.colorScheme==`string`&&le.has(e.colorScheme))&&N(t,`invalid_value`,`theme.colorScheme`,`theme.colorScheme must be light, dark or system`);for(let n of[`borderRadius`,`density`,`contrast`]){let r=ue[n],i=e[n];i!==void 0&&!(typeof i==`string`&&r.includes(i))&&N(t,`invalid_value`,`theme.${n}`,`theme.${n} must be one of ${r.join(`, `)}`)}let n=e.custom;n!==void 0&&(!j(n)||typeof n.primary!=`string`?N(t,`invalid_value`,`theme.custom`,`theme.custom must be an object with a string primary`):/^#[0-9a-fA-F]{6}$/.test(n.primary)?n.fontFamily!==void 0&&typeof n.fontFamily!=`string`&&N(t,`invalid_type`,`theme.custom.fontFamily`,`theme.custom.fontFamily must be a string`):N(t,`invalid_value`,`theme.custom.primary`,`theme.custom.primary must be a hex colour like #c2410c`))}var _e=/^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$/,ve=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/,ye=/^[a-z][a-z0-9-]{0,31}$/,be=e=>e===null||typeof e==`string`||typeof e==`number`&&Number.isFinite(e)||typeof e==`boolean`;function xe(e,t,n){return j(e)?[typeof e.id==`string`&&ve.test(e.id),typeof e.type==`string`&&ye.test(e.type),typeof e.span==`number`&&Number.isInteger(e.span)&&e.span>=1&&e.span<=4,j(e.options)&&Object.values(e.options).every(be),e.version===void 0||typeof e.version==`number`&&Number.isInteger(e.version)&&e.version>=1].every(Boolean)?e:(P(n,`malformed_overview_widget`,t,`${t} was dropped because it is not a valid overview widget`),null):(P(n,`malformed_overview_widget`,t,`${t} was dropped`),null)}function Se(e,t,n){return j(e)?(e.span===void 0||typeof e.span==`number`&&Number.isInteger(e.span)&&e.span>=1&&e.span<=4)&&(e.options===void 0||j(e.options)&&Object.values(e.options).every(be))&&(e.version===void 0||typeof e.version==`number`&&Number.isInteger(e.version)&&e.version>=1)?e:(P(n,`malformed_overview_change`,t,`${t} was dropped because it is not a valid widget change`),null):(P(n,`malformed_overview_change`,t,`${t} was dropped`),null)}function Ce(e,t,n){if(!j(e)||e.version!==1)return P(n,`malformed_overview`,t,`${t} was dropped because it must be an object with version 1`),null;let r={...e,version:1};for(let i of[`order`,`removed`])e[i]!==void 0&&!M(e[i])?(P(n,`malformed_overview_list`,`${t}.${i}`,`${t}.${i} was dropped because it must be a list of strings`),delete r[i]):e[i]!==void 0&&(r[i]=[...new Set(e[i])]);if(e.added!==void 0){if(!Array.isArray(e.added))P(n,`malformed_overview_widgets`,`${t}.added`,`${t}.added was dropped because it must be a list of widgets`),delete r.added;else{let i=e.added.flatMap((e,r)=>{let i=xe(e,`${t}.added[${r}]`,n);return i?[i]:[]});i.length?r.added=i:delete r.added}}if(e.changed!==void 0){if(!j(e.changed)||Object.hasOwn(e.changed,`__proto__`))P(n,`malformed_overview_changes`,`${t}.changed`,`${t}.changed was dropped because it must map widget ids to objects`),delete r.changed;else{let i={};for(let[r,a]of Object.entries(e.changed)){if(!ve.test(r)){P(n,`malformed_overview_change`,`${t}.changed.${r}`,`${t}.changed.${r} was dropped because its widget id is invalid`);continue}let e=Se(a,`${t}.changed.${r}`,n);e&&(i[r]=e)}Object.keys(i).length?r.changed=i:delete r.changed}}return r}function we(e,t={}){let n=[];if(!j(e))return N(n,`invalid_type`,``,`expected a JSON object`),{ok:!1,errors:[`expected a JSON object`],diagnostics:n};let{$schema:r,version:i}=e;r!==void 0&&r!==`https://s-m-r-t.dev/schemas/cookbook/v1.json`&&r!==`https://s-m-r-t.dev/schemas/blueprint/v1.json`&&N(n,`invalid_schema`,`$schema`,`$schema must be ${oe}`),i===void 0?N(n,`missing_field`,`version`,`version is required`):typeof i!=`number`||!Number.isInteger(i)?N(n,`invalid_type`,`version`,`version must be a whole number`):i>1?N(n,`unsupported_version`,`version`,`version ${i} is newer than this reader understands (1)`):i!==1&&N(n,`unsupported_version`,`version`,`version ${i} is not supported`),r===`https://s-m-r-t.dev/schemas/blueprint/v1.json`&&P(n,`migrated_schema`,`$schema`,`$schema uses the legacy blueprint URL; migrated`);for(let t of[`name`,`description`])e[t]!==void 0&&typeof e[t]!=`string`&&N(n,`invalid_type`,t,`${t} must be a string`);let a=[];if(!M(e.recipes))N(n,`invalid_type`,`recipes`,`recipes must be a list of recipe ids`);else if(a=[...new Set(e.recipes)].sort(),t.recipes){let r=new Set(t.recipes);for(let t of a)r.has(t)||N(n,`unknown_recipe`,`recipes[${e.recipes.indexOf(t)}]`,`recipes: unknown recipe "${t}"`)}let o=[];e.features!==void 0&&(M(e.features)?(o=[...new Set(e.features)].sort(),o.length!==e.features.length&&P(n,`duplicate_value`,`features`,`features listed a model more than once; deduplicated`)):N(n,`invalid_type`,`features`,`features must be a list of model names`));let s=[];if(!Array.isArray(e.policies))N(n,`invalid_type`,`policies`,`policies must be a list`);else for(let[t,r]of e.policies.entries())me(r,`policies[${t}]`,n),s.push(r);if(e.exposure!==void 0&&(fe(e.exposure,e=>M(e)&&e.every(e=>ce.has(e)))||N(n,`invalid_value`,`exposure`,`exposure must map model names to lists of api, mcp or cli`)),e.layout!==void 0&&he(e.layout,n),e.theme!==void 0&&ge(e.theme,n),j(e.theme)&&typeof e.theme.preset==`string`){let r=t.themePresets?new Set(t.themePresets):void 0;r&&!r.has(e.theme.preset)&&N(n,`unknown_theme_preset`,`theme.preset`,`Unknown theme preset "${e.theme.preset}".`)}if(j(e.layout)&&e.layout.version===1&&t.layout){let r=t.layout.sections?new Set(t.layout.sections):void 0,i=t.layout.items?new Set(t.layout.items):void 0,a=t.layout.placementItems?new Set(t.layout.placementItems):void 0;if(r&&Array.isArray(e.layout.customSections))for(let t of e.layout.customSections)j(t)&&typeof t.id==`string`&&r.add(t.id);let o=(e,t)=>t===`section`?r?.has(e)!==!1:t===`item`?i?.has(e)!==!1:r?.has(e)===!0||i?.has(e)===!0||!r&&!i,s=(e,t,r)=>{typeof e==`string`&&!o(e,r)&&N(n,`unknown_layout_id`,t,`Unknown layout ${r===`either`?`section or item`:r} "${e}".`)};if(M(e.layout.sectionOrder)&&e.layout.sectionOrder.forEach((e,t)=>{s(e,`layout.sectionOrder[${t}]`,`section`)}),M(e.layout.hidden)&&e.layout.hidden.forEach((e,t)=>{s(e,`layout.hidden[${t}]`,`either`)}),j(e.layout.itemOrder))for(let[t,n]of Object.entries(e.layout.itemOrder))s(t,`layout.itemOrder.${t}`,`section`),M(n)&&n.forEach((e,n)=>{s(e,`layout.itemOrder.${t}[${n}]`,`item`)});if(j(e.layout.moved))for(let[t,n]of Object.entries(e.layout.moved))s(t,`layout.moved.${t}`,`item`),s(n,`layout.moved.${t}`,`section`);for(let t of[`sections`,`items`])if(j(e.layout[t]))for(let n of Object.keys(e.layout[t]))s(n,`layout.${t}.${n}`,t===`sections`?`section`:`item`);if(j(e.layout.placements))for(let t of Object.keys(e.layout.placements))a&&!a.has(t)&&N(n,`unknown_layout_id`,`layout.placements.${t}`,`Unknown layout placement item "${t}".`)}let c={};if(e.overviews!==void 0){if(!j(e.overviews)||Object.hasOwn(e.overviews,`__proto__`))N(n,`invalid_type`,`overviews`,`overviews must map overview ids to overrides`);else{let r=t.overviewIds?new Set(t.overviewIds):void 0;for(let[i,a]of Object.entries(e.overviews)){let e=`overviews.${i}`;if(!_e.test(i)){P(n,`invalid_overview_id`,e,`${e} was dropped because its overview id is invalid`);continue}if(r&&!r.has(i)){P(n,`unknown_overview`,e,`Unknown overview "${i}" was dropped.`);continue}let o=Ce(a,e,n);if(!o)continue;if(!t.validateOverview){c[i]=o;continue}let s;try{s=t.validateOverview(i,o)}catch{P(n,`overview_validation_failed`,e,`Overview "${i}" was dropped because its host validator failed.`);continue}for(let t of s.diagnostics??[])P(n,t.code,t.path||e,t.message);!s.ok&&s.diagnostics.length===0&&P(n,`overview_rejected`,e,`Overview "${i}" was rejected by its host validator and dropped.`),s.ok&&s.override&&(c[i]=s.override)}}}let l=n.filter(e=>e.severity===`error`).map(e=>e.message);if(l.length)return{ok:!1,errors:l,diagnostics:n};let u={...e,$schema:oe,version:1,recipes:a,features:o,policies:s};return e.exposure!==void 0&&(u.exposure=e.exposure),e.layout!==void 0&&(u.layout=e.layout),e.theme!==void 0&&(u.theme=e.theme),delete u.overviews,Object.keys(c).length&&(u.overviews=c),{ok:!0,cookbook:u,warnings:n.filter(e=>e.severity===`warning`).map(e=>e.message),diagnostics:n}}var F=e=>e===void 0?e:structuredClone(e),Te=(e,t)=>JSON.stringify(e??null)===JSON.stringify(t??null),Ee=()=>({$schema:oe,version:1,recipes:[],features:[],policies:[]});function De(e){return!e.recipes.length&&!e.features.length&&!e.policies.length&&!Object.keys(e.exposure??{}).length&&!e.layout&&!e.theme&&!Object.keys(e.overviews??{}).length}var Oe=e=>[...new Set(e)].sort();function ke(e){let t=new Set([`$schema`,`version`,`name`,`description`,`recipes`,`features`,`policies`,`exposure`,`layout`,`theme`,`overviews`]),n={$schema:oe,version:1,...e.name?{name:e.name}:{},...e.description?{description:e.description}:{},recipes:Oe(e.recipes),features:Oe(e.features),policies:[...e.policies].sort((e,t)=>e.objectRef.localeCompare(t.objectRef)||e.fieldName.localeCompare(t.fieldName)).map(e=>({...e}))},r=Object.fromEntries(Object.keys(e.exposure??{}).sort().filter(t=>e.exposure?.[t]?.length).map(t=>[t,[...e.exposure?.[t]??[]].sort()]));Object.keys(r).length&&(n.exposure=r),e.layout&&(n.layout=F(e.layout));let i=Xe(e.theme);i&&(n.theme=i);let a=Object.entries(e.overviews??{}).sort(([e],[t])=>e<t?-1:+(e>t));a.length&&(n.overviews=Object.fromEntries(a.map(([e,t])=>[e,F(t)])));for(let[r,i]of Object.entries(e))t.has(r)||(n[r]=F(i));return n}var I=e=>new Map(e.recipes.map(e=>[e.id,e]));function Ae(e,t){let n=new Set,r=e=>{let i=t.get(e);if(i&&!n.has(e)){n.add(e);for(let e of i.requires)r(e)}};for(let t of e)r(t);let i=!0;for(;i;){i=!1;for(let e of[...n])for(let a of t.get(e)?.requiresAny??[]){if(a.some(e=>n.has(e)))continue;let e=a.find(e=>t.has(e));e&&(r(e),i=!0)}}return Oe(n)}function je(e,t){let n=I(e);return new Set([...t.recipes.flatMap(e=>n.get(e)?.models??[]),...t.features])}function Me(e){return e.settingTargets??S}function Ne(e,t){return Object.values(Me(e)).some(e=>e.some(e=>e.model===t.objectRef&&e.field===t.fieldName))}function Pe(e,t){let n=je(e,t),r={...t,policies:t.policies.filter(t=>n.has(t.objectRef)||Ne(e,t))};if(t.exposure){let e=Object.fromEntries(Object.entries(t.exposure).filter(([e])=>n.has(e)));Object.keys(e).length?r.exposure=e:delete r.exposure}return r}var Fe=(e,t)=>{let n=I(e);return t.recipes.filter(e=>n.has(e))},Ie=(e,t)=>{let n=I(e);return t.recipes.filter(e=>!n.has(e))};function Le(e,t){let n=new Set(e),r=new Set(t);return{added:t.filter(e=>!n.has(e)),removed:e.filter(e=>!r.has(e))}}function Re(e,t,n){let r=I(e),i=Fe(e,t),a=Ae([...i,...n],r);return{doc:{...t,recipes:Oe([...a,...Ie(e,t)])},changes:{...Le(i,a),kept:[]}}}function ze(e,t,n){let r=I(e),i=Fe(e,t),a=new Set(n),o=Ae(i.filter(e=>!a.has(e)),r),s=Pe(e,{...t,recipes:Oe([...o,...Ie(e,t)])}),{added:c,removed:l}=Le(i,o);return{doc:s,changes:{added:c,removed:l,kept:n.filter(e=>o.includes(e)&&i.includes(e))}}}function Be(e,t,n,r){let i=new Set(t.features);for(let e of n)r?i.add(e):i.delete(e);let a=[...i].sort(),o={...t,features:a};return r||(o=Pe(e,o)),{doc:o,changes:{...Le(t.features,a),kept:[]}}}var Ve=(e,t)=>({added:[...e.added,...t.added],removed:[...e.removed,...t.removed],kept:[...e.kept,...t.kept]}),He={currency:`USD`,taxRate:0,paymentTerms:``,pricesIncludeTax:!1,taxRounding:`line`},Ue=[`currency`,`taxRate`,`paymentTerms`,`pricesIncludeTax`,`taxRounding`];function We(e){if(e?.defaultValue!==void 0&&e.defaultValue!==null)try{return JSON.parse(e.defaultValue)}catch{return}}var Ge=(e,t,n)=>e.find(e=>e.scopeType===`app`&&e.objectRef===t&&e.fieldName===n);function Ke(e,t){let n=Me(e),r={...He},i=(e,r)=>{for(let{model:i,field:a}of n[e]){let e=We(Ge(t.policies,i,a));if(typeof e===r)return e}},a=i(`currency`,`string`),o=i(`taxRate`,`number`),s=i(`paymentTerms`,`string`),c=i(`pricesIncludeTax`,`string`),l=i(`taxRounding`,`string`);return typeof a==`string`&&(r.currency=a),typeof o==`number`&&(r.taxRate=o),typeof s==`string`&&(r.paymentTerms=s),(c===`inclusive`||c===`exclusive`)&&(r.pricesIncludeTax=c===`inclusive`),(l===`line`||l===`document`)&&(r.taxRounding=l),r}var qe=e=>e==null||e===``;function Je(e,t,n,r){let i=I(e);for(let e of t.recipes){let t=i.get(e)?.options?.[n]?.fields?.[r];if(t&&`default`in t)return t.default}return A(e,n)?.fields?.find(e=>e.name===r)?.default}function Ye(e,t,n){let r=Me(e),i=t.policies.map(e=>({...e}));for(let a of Ue){let o=n[a],s=a===`paymentTerms`?String(o).trim():a===`currency`?String(o).trim().toUpperCase():a===`pricesIncludeTax`?o?`inclusive`:`exclusive`:o;for(let{model:n,field:o}of r[a]){let r=Je(e,t,n,o),c=!qe(s)&&!(!qe(r)&&r===s)&&!(qe(r)&&a===`taxRate`&&s===0),l=Ge(i,n,o);if(c){let e=JSON.stringify(s);l?l.defaultValue=e:i.push({objectRef:n,fieldName:o,scopeType:`app`,defaultValue:e})}else l&&(delete l.defaultValue,Object.keys(l).length<=3&&(i=i.filter(e=>e!==l)))}}return{...t,policies:i}}function Xe(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 Ze(e){let t=e?.colorScheme??`system`,n=e?.custom?`brand colour ${e.custom.primary}`:e?.preset??`smrt`;return t===`system`?n:`${n}, ${t}`}function Qe(e,t){let n={...e.theme??{}};t.preset&&(n.preset=t.preset,delete n.custom),t.primary&&(n.custom={primary:t.primary.toLowerCase(),...e.theme?.custom?.fontFamily?{fontFamily:e.theme.custom.fontFamily}:{}}),t.colorScheme&&(n.colorScheme=t.colorScheme),t.borderRadius&&(n.borderRadius=t.borderRadius),t.density&&(n.density=t.density),t.contrast&&(n.contrast=t.contrast),t.fontFamily===null?(delete n.fontFamily,n.custom?.fontFamily&&(n.custom={primary:n.custom.primary})):t.fontFamily!==void 0&&(n.fontFamily=t.fontFamily);let r=Xe(n),i={...e};return r?i.theme=r:delete i.theme,i}function $e(e,t){let n=[],r=(e,t,r,i)=>n.push({severity:e,code:t,path:r,message:i}),i=we(t);if(!i.ok){for(let e of i.diagnostics.filter(e=>e.severity===`error`))r(`error`,`invalid_document`,e.path,e.message);return n}for(let e of i.diagnostics)r(e.severity,e.code===`migrated_schema`?`migrated`:e.code,e.path,e.message);let a=i.cookbook,o=I(e),s=te(e,{...a,layout:void 0}),c=we(a,{themePresets:e.themePresets??b,layout:{sections:s.map(e=>e.id),items:s.flatMap(e=>e.items.map(e=>e.id)),...e.placementItems?{placementItems:e.placementItems}:{}},overviewIds:[...s.map(e=>e.id),...(a.layout?.customSections??[]).map(e=>e.id)]});for(let e of c.diagnostics)(e.code===`unknown_theme_preset`||e.code===`unknown_layout_id`||e.code===`unknown_overview`)&&r(e.code===`unknown_layout_id`&&!e.path.startsWith(`layout.placements.`)?`warning`:e.severity,e.code===`unknown_theme_preset`?`unknown_preset`:e.code,e.path,e.message);for(let[e,t]of a.recipes.entries())o.has(t)||r(`error`,`unknown_recipe`,`recipes[${e}]`,`Unknown recipe "${t}".`);let l=new Set(Ae(a.recipes,o));for(let e of l)a.recipes.includes(e)||r(`error`,`missing_requirement`,`recipes`,`A recipe needs "${e}", which is not listed.`);for(let[t,n]of a.features.entries()){let i=A(e,n);i?i.exposed===!1&&r(`error`,`model_not_exposed`,`features[${t}]`,`${n} cannot be added as a feature.`):r(`error`,`unknown_model`,`features[${t}]`,`Unknown model "${n}".`)}let u=je(e,a);for(let[t,n]of a.policies.entries()){let i=`policies[${t}]`,a=A(e,n.objectRef);a?(a.fields&&!a.fields.some(e=>e.name===n.fieldName&&!e.system)&&r(`error`,`unknown_field`,`${i}.fieldName`,`${a.name} has no field "${n.fieldName}".`),!u.has(n.objectRef)&&!Ne(e,n)&&r(`warning`,`policy_not_covered`,i,`${a.name} is not in the app, so this row has no effect.`)):r(`error`,`unknown_model`,`${i}.objectRef`,`Unknown model "${n.objectRef}".`)}for(let t of Object.keys(a.exposure??{}))A(e,t)||r(`error`,`unknown_model`,`exposure.${t}`,`Unknown model "${t}".`);return n}var L=(e,t,n={})=>({ok:!1,error:{code:e,message:t,...n}}),R=(e,t=``,n={})=>({ok:!0,state:e,summary:t,...n}),et=`This replaces the recipes, options, menu and look. Send replace: true to confirm.`,z=e=>e.join(`, `);function tt(e){return`${(e??``).normalize(`NFD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`my-app`}.cookbook.json`}var nt=e=>`${JSON.stringify(e,null,2)}\n`;function rt(e,t){let n=new Map(e.recipes.map(e=>[e.id,e])),r=t.recipes.filter(e=>n.has(e)),i=t.recipes.filter(e=>!n.has(e));return ke(Pe(e,{...F(t),recipes:[...Ae(r,n),...i]}))}function it(e,t){return t?e.cookbooks?.find(e=>e.id===t)?.name:void 0}var at=(e,t)=>{let n=t=>e.recipes.find(e=>e.id===t)?.label??t;return[t.added.length?`Added ${z(t.added.map(n))}.`:``,t.removed.length?`Removed ${z(t.removed.map(n))}.`:``,t.kept.length?`Kept ${z(t.kept.map(n))} (needed).`:``].filter(Boolean).join(` `)},ot=(e,t)=>[t.added.length?`Added ${z(t.added.map(t=>O(e,t)))}.`:``,t.removed.length?`Removed ${z(t.removed.map(t=>O(e,t)))}.`:``].filter(Boolean).join(` `),st=e=>`${Number((e*100).toFixed(4))}%`,B=(e,t)=>({...e,doc:ke(t)});function ct(e,t){let n=te(e,t);return{sections:n,section:e=>n.find(t=>t.id===e),item:e=>n.flatMap(e=>e.items).find(t=>t.id===e)}}var lt=(e,t)=>{let n={...e};return t?n.layout=t:delete n.layout,n},ut={add_recipes(e,t,{ids:n}){let r=n.filter(t=>!e.recipes.some(e=>e.id===t));if(r.length)return L(`not_found`,`No such recipe: ${z(r)}.`,{path:`input.ids`});let{doc:i,changes:a}=Re(e,t.doc,n);return R(B(t,i),at(e,a),{changes:a})},remove_recipes(e,t,{ids:n}){let{doc:r,changes:i}=ze(e,t.doc,n);return R(B(t,r),at(e,i),{changes:i})},add_features(e,t,{ids:n}){let r=n.filter(t=>!A(e,t)?.exposed);if(r.length)return L(`not_found`,`No such model to add: ${z(r)}.`,{path:`input.ids`});let{doc:i,changes:a}=Be(e,t.doc,n,!0);return R(B(t,i),ot(e,a),{changes:a})},remove_features(e,t,{ids:n}){let{doc:r,changes:i}=Be(e,t.doc,n,!1);return R(B(t,r),ot(e,i),{changes:i})},add_cookbook(e,t,{id:n}){let r=e.cookbooks?.find(e=>e.id===n);if(!r)return L(`not_found`,`No cookbook "${n}".`,{path:`input.id`});let i=Re(e,t.doc,r.document.recipes),a=Be(e,i.doc,r.document.features.filter(t=>A(e,t)?.exposed),!0),o=Ve(i.changes,a.changes);return R(B(t,a.doc),o.added.length?`Added the ${r.name} cookbook.`:``,{changes:o})},remove_cookbook(e,t,{id:n}){let r=e.cookbooks?.find(e=>e.id===n);if(!r)return L(`not_found`,`No cookbook "${n}".`,{path:`input.id`});let i=ze(e,t.doc,r.document.recipes),a=Be(e,i.doc,r.document.features,!1),o=Ve(i.changes,a.changes);return R(B(t,a.doc),[at(e,i.changes),ot(e,a.changes)].filter(Boolean).join(` `),{changes:o})},apply_cookbook(e,t,{id:n,replace:r}){let i=e.cookbooks?.find(e=>e.id===n);return i?!r&&!De(t.doc)?L(`confirmation_required`,et):R({doc:rt(e,i.document),applied:n},`${i.name} set up.`):L(`not_found`,`No cookbook "${n}".`,{path:`input.id`})},import_cookbook(e,t,{document:n,replace:r}){let i=we(n);if(!i.ok)return L(`invalid_input`,i.errors[0]??`Not a cookbook.`,{path:`input.document`,details:{errors:i.errors}});if(!r&&!De(t.doc))return L(`confirmation_required`,et);let a=i.cookbook.recipes.length;return R({doc:rt(e,i.cookbook),applied:null},`Imported ${a} ${a===1?`recipe`:`recipes`}.`,i.warnings.length?{warnings:i.warnings}:{})},set_settings(e,t,n){let r=Ke(e,t.doc),i={...r},a=[];if(n.currency!==void 0){let t=n.currency.trim().toUpperCase();if(e.currencies&&!e.currencies.includes(t))return L(`invalid_input`,`${t} is not a known currency.`,{path:`input.currency`});if(!/^[A-Z]{3}$/.test(t))return L(`invalid_input`,`currency must be a three-letter code.`,{path:`input.currency`});t!==r.currency&&(i.currency=t,a.push(`currency ${t}`))}if(n.taxRate!==void 0){let e=Number((n.taxRate/100).toFixed(6));e!==r.taxRate&&(i.taxRate=e,a.push(`tax ${st(e)}`))}if(n.paymentTerms!==void 0){let e=[...n.paymentTerms].map(e=>e.charCodeAt(0)<32||e.charCodeAt(0)===127?` `:e).join(``).trim();if(!e)return L(`invalid_input`,`paymentTerms must not be empty.`,{path:`input.paymentTerms`});e!==r.paymentTerms&&(i.paymentTerms=e,a.push(`terms ${e}`))}if(n.pricesIncludeTax!==void 0&&n.pricesIncludeTax!==r.pricesIncludeTax&&(i.pricesIncludeTax=n.pricesIncludeTax,a.push(n.pricesIncludeTax?`prices include tax`:`prices exclude tax`)),n.taxRounding!==void 0&&n.taxRounding!==r.taxRounding&&(i.taxRounding=n.taxRounding,a.push(`${n.taxRounding} tax rounding`)),!a.length)return R(t);let o=a.join(`, `);return R(B(t,Ye(e,t.doc,i)),`${o[0].toUpperCase()}${o.slice(1)}.`)},set_policy(e,t,n){let r=A(e,n.model);if(!r)return L(`not_found`,`No such model: ${n.model}.`,{path:`input.model`});if(r.fields){let e=r.fields.find(e=>e.name===n.field);if(!e||e.system)return L(`not_found`,`${r.name} has no field ${n.field}.`,{path:`input.field`})}if(!je(e,t.doc).has(r.id))return L(`not_found`,`${D(r.name)} is not in the app yet; add its recipe or feature first.`,{path:`input.model`});if(t.doc.recipes.some(t=>e.recipes.find(e=>e.id===t)?.options?.[r.id]?.fields?.[n.field]?.locked))return L(`failed`,`${n.field} is locked by its recipe.`,{path:`input.field`});let i=t.doc.policies.map(e=>({...e})),a=i.find(e=>e.objectRef===r.id&&e.fieldName===n.field),o=a??{objectRef:r.id,fieldName:n.field,scopeType:`app`},s=JSON.stringify(o);for(let e of[`visibility`,`label`,`help`]){let t=n[e];t!==void 0&&(t===null?delete o[e]:o[e]=t)}if(n.defaultValue!==void 0){if(n.defaultValue===null)delete o.defaultValue;else{let e=JSON.stringify(n.defaultValue);if(e===void 0)return L(`invalid_input`,`defaultValue is not a JSON value.`,{path:`input.defaultValue`});o.defaultValue=e}}let c=Object.keys(o).length<=3;if(JSON.stringify(o)===s||c&&!a)return R(t);let l=i.filter(e=>e!==a);return R(B(t,{...t.doc,policies:c?l:[...l,o]}),`Updated ${D(r.name)} ${n.field}.`)},set_theme(e,t,n){let r=Qe(t.doc,n);return JSON.stringify(ke(r).theme??null)===JSON.stringify(t.doc.theme??null)?R(t):R(B(t,r),`Theme: ${Ze(ke(r).theme)}.`)},reset_theme(e,t){if(!t.doc.theme)return R(t);let n={...t.doc};return delete n.theme,R(B(t,n),`Theme: default.`)},set_name(e,t,n){let r={...t.doc};for(let e of[`name`,`description`]){let t=n[e];if(t===void 0)continue;let i=t?.trim();i?r[e]=i:delete r[e]}return JSON.stringify(ke(r))===JSON.stringify(t.doc)?R(t):R(B(t,r),n.name?`Named the app ${n.name.trim()}.`:`Updated the app details.`)},rename_section(e,t,{id:n,label:r}){let i=ct(e,t.doc).section(n);if(!i)return L(`not_found`,`No menu section "${n}".`,{path:`input.id`});let a=re(t.doc.layout,i,r);return JSON.stringify(a??null)===JSON.stringify(t.doc.layout??null)?R(t):R(B(t,lt(t.doc,a)),`Renamed the section to ${r.trim()}.`)},rename_item(e,t,{id:n,label:r}){let i=ct(e,t.doc).item(n);if(!i)return L(`not_found`,`No menu entry "${n}".`,{path:`input.id`});let a=ie(t.doc.layout,i,r);return JSON.stringify(a??null)===JSON.stringify(t.doc.layout??null)?R(t):R(B(t,lt(t.doc,a)),r?`Renamed the entry to ${r.trim()}.`:`Entry name restored.`)},hide(e,t,{id:n}){let r=ct(e,t.doc);return r.section(n)??r.item(n)?t.doc.layout?.hidden?.includes(n)?R(t):R(B(t,lt(t.doc,ae(t.doc.layout,n,!0))),`Hidden.`):L(`not_found`,`No menu section or entry "${n}".`,{path:`input.id`})},show(e,t,{id:n}){let r=ct(e,t.doc);return!r.section(n)&&!r.item(n)?L(`not_found`,`No menu section or entry "${n}".`,{path:`input.id`}):t.doc.layout?.hidden?.includes(n)?R(B(t,lt(t.doc,ae(t.doc.layout,n,!1))),`Shown.`):R(t)},validate(e,t){let n=$e(e,t.doc);return R(t,``,{data:{ok:!n.some(e=>e.severity===`error`),diagnostics:n}})},export_cookbook(e,t,{name:n}){return R(t,``,{data:{fileName:tt(n??t.doc.name??it(e,t.applied)),text:nt(t.doc),cookbook:F(t.doc)}})}};function dt(e,t,n,r){let i=ut[n];return i?i(e,t,r):L(`unknown_command`,`No command "${n}".`)}var ft=(e,t)=>({type:`array`,description:e,minItems:1,maxItems:50,items:t?.length?{type:`string`,enum:[...t]}:{type:`string`,minLength:1}}),pt=(e,t={})=>({type:`string`,description:e,minLength:1,maxLength:200,...t}),V=(e,t=[])=>({type:`object`,properties:e,...t.length?{required:t}:{},additionalProperties:!1});function mt(e){let t=e.recipes.map(e=>e.id),n=(e.cookbooks??[]).map(e=>e.id),r=e.themePresets??b,i=e=>({type:`string`,description:e,...n.length?{enum:[...n]}:{minLength:1}}),a=e=>pt(`The id of ${e}, as the plan snapshot's "sections" lists it.`),o={type:`boolean`,description:`Confirm replacing what is there.`};return[{name:`add_recipes`,description:`Switch recipes on. Recipes they require come along. Returns what was added.`,inputSchema:V({ids:ft(`Recipe ids to add.`,t)},[`ids`])},{name:`remove_recipes`,description:`Switch recipes off. A recipe another one needs is kept and reported.`,inputSchema:V({ids:ft(`Recipe ids to remove.`,t)},[`ids`])},{name:`add_features`,description:"Add single models no recipe covers, by qualified name (`@scope/pkg:Class`).",inputSchema:V({ids:ft(`Qualified model names to add.`)},[`ids`])},{name:`remove_features`,description:`Remove single models added with add_features.`,inputSchema:V({ids:ft(`Qualified model names to remove.`)},[`ids`])},{name:`add_cookbook`,description:`Add the recipes and features of a ready-made cookbook to the current app. Nothing is replaced.`,inputSchema:V({id:i(`The cookbook to add.`)},[`id`])},{name:`remove_cookbook`,description:`Remove the recipes and features a ready-made cookbook adds. Ones another recipe needs are kept.`,inputSchema:V({id:i(`The cookbook to remove.`)},[`id`])},{name:`apply_cookbook`,description:`Select a ready-made cookbook: replace the whole app (recipes, options, menu, theme) with it. When the app has anything in it, replace must be true.`,inputSchema:V({id:i(`The cookbook to set up.`),replace:o},[`id`])},{name:`import_cookbook`,description:`Replace the whole app with a cookbook document (version 1). Checked strictly; nothing is applied if it is invalid. When the app has anything in it, replace must be true.`,inputSchema:V({document:{type:`object`,description:`A cookbook document, version 1.`},replace:o},[`document`])},{name:`set_settings`,description:`Change app settings: currency, default tax rate (percent), default payment terms. Applies to new records only.`,inputSchema:V({currency:e.currencies?.length?{type:`string`,description:`ISO 4217 code, e.g. CAD.`,enum:[...e.currencies]}:{type:`string`,description:`ISO 4217 code, e.g. CAD.`,pattern:`^[A-Z]{3}$`},taxRate:{type:`number`,description:`Default tax rate in percent, 0 to 100.`,minimum:0,maximum:100},paymentTerms:{type:`string`,description:`Default payment terms, e.g. "Net 30".`,minLength:1,maxLength:40},pricesIncludeTax:{type:`boolean`,description:`Whether new document prices include tax.`},taxRounding:{enum:[`line`,`document`],description:`Whether tax rounds per line or per document.`}})},{name:`set_policy`,description:`Set one field's policy: default value, visibility, label or help. The model must be covered by a recipe or feature that is on. null clears a part.`,inputSchema:V({model:pt(`Qualified model name, e.g. @happyvertical/smrt-commerce:Order.`),field:pt(`The model field name.`),defaultValue:{description:`The default as a JSON value (a string, number or boolean). null clears it.`},visibility:{enum:[`basic`,`advanced`,`hidden`,null],description:`Whether the field shows in forms and lists.`},label:{type:[`string`,`null`],description:`A different label.`,maxLength:120},help:{type:[`string`,`null`],description:`Help text under the field.`,maxLength:400}},[`model`,`field`])},{name:`set_theme`,description:`Change the look: a preset, a brand colour, light or dark. A preset replaces a brand colour.`,inputSchema:V({preset:{enum:[...r],description:`A built-in theme.`},primary:{type:`string`,description:`Brand colour as #rrggbb.`,pattern:`^#[0-9a-fA-F]{6}$`},colorScheme:{enum:[`light`,`dark`,`system`],description:`Light, dark or follow the device.`},fontFamily:{type:[`string`,`null`],minLength:1,description:`Font key. Null restores the preset font.`},borderRadius:{enum:[`none`,`sm`,`md`,`lg`,`xl`,`full`],description:`Corner roundness.`},density:{enum:[`comfortable`,`touch`],description:`Control size: comfortable, or larger touch targets.`},contrast:{enum:[`auto`,`standard`,`more`],description:`Contrast: auto follows the device, or force standard or more.`}})},{name:`reset_theme`,description:`Go back to the default look.`,inputSchema:V({})},{name:`set_name`,description:`Name and describe the app. null clears a part.`,inputSchema:V({name:{type:[`string`,`null`],minLength:1,maxLength:60},description:{type:[`string`,`null`],minLength:1,maxLength:400}})},{name:`rename_section`,description:`Rename a menu section.`,inputSchema:V({id:a(`the section`),label:pt(`The new name.`,{maxLength:60})},[`id`,`label`])},{name:`rename_item`,description:`Rename a menu entry. A null label restores its own name.`,inputSchema:V({id:a(`the entry`),label:{type:[`string`,`null`],minLength:1,maxLength:60}},[`id`,`label`])},{name:`hide`,description:`Hide a menu section or entry. Nothing is deleted.`,inputSchema:V({id:a(`the section or entry`)},[`id`])},{name:`show`,description:`Show a hidden menu section or entry again.`,inputSchema:V({id:a(`the section or entry`)},[`id`])},{name:`validate`,description:`Check the current cookbook against the catalog and report typed diagnostics. Changes nothing.`,inputSchema:V({})},{name:`export_cookbook`,description:`The cookbook as a <name>.cookbook.json file (text in the result). Changes nothing.`,inputSchema:V({name:pt(`A name for the file.`,{maxLength:60})})},{name:`undo`,description:`Undo an earlier change by the undoId its receipt carried. Refused with a conflict when the plan changed since, unless force is true.`,inputSchema:V({undoId:pt(`The undoId from a receipt.`),force:{type:`boolean`,description:`Undo even after later edits.`}},[`undoId`])}]}function ht(e){return{name:`run_batch`,description:`Run several commands as one atomic batch: all apply or none does. A failure names the command and leaves the plan unchanged.`,inputSchema:{type:`object`,properties:{id:{type:`string`,minLength:1,maxLength:200},expectedRevision:{type:`integer`,minimum:0},commands:{type:`array`,minItems:1,maxItems:50,items:{oneOf:mt(e).map(e=>({type:`object`,properties:{name:{const:e.name},input:e.inputSchema},required:[`name`],additionalProperties:!1}))}}},required:[`commands`],additionalProperties:!1}}}var gt=e=>e===null?`null`:Array.isArray(e)?`array`:Number.isInteger(e)?`integer`:typeof e;function _t(e,t){let n=gt(t);return n===e||e===`number`&&n===`integer`}function vt(e,t,n=`input`){let r=e=>({path:n,message:`${n} ${e}`}),i=e.type;if(i){let e=Array.isArray(i)?i:[i];if(!e.some(e=>_t(e,t)))return r(`must be ${e.join(` or `)}`)}let a=e.enum;if(a&&!a.includes(t))return r(a.length>12?`is not a known value`:`must be one of ${a.map(e=>JSON.stringify(e)).join(`, `)}`);if(typeof t==`string`){let{minLength:n,maxLength:i,pattern:a}=e;if(n!==void 0&&t.length<n)return r(`must not be empty`);if(i!==void 0&&t.length>i)return r(`must be at most ${i} characters`);if(a&&!new RegExp(a).test(t))return r(`has the wrong format`)}if(typeof t==`number`){let{minimum:n,maximum:i}=e;if(!Number.isFinite(t))return r(`must be a finite number`);if(n!==void 0&&t<n)return r(`must be at least ${n}`);if(i!==void 0&&t>i)return r(`must be at most ${i}`)}if(Array.isArray(t)){let{minItems:i,maxItems:a,items:o}=e;if(i!==void 0&&t.length<i)return r(`needs at least ${i} item${i===1?``:`s`}`);if(a!==void 0&&t.length>a)return r(`takes at most ${a} items`);if(o)for(let[e,r]of t.entries()){let t=vt(o,r,`${n}[${e}]`);if(t)return t}}if(gt(t)===`object`){let r=t,{properties:i,required:a,additionalProperties:o}=e;for(let e of a??[])if(r[e]===void 0)return{path:`${n}.${e}`,message:`${n}.${e} is required`};for(let[e,t]of Object.entries(r)){let r=i?.[e];if(!r){if(o===!1)return{path:`${n}.${e}`,message:`${n}.${e} is not an option of this command`};continue}if(t===void 0)continue;let a=vt(r,t,`${n}.${e}`);if(a)return a}}return null}function yt(e){return Object.fromEntries(mt(e).map(e=>[e.name,e.inputSchema]))}var H=(e,t,n={})=>({code:e,message:t,...n}),bt=e=>Array.isArray(e)?e.map(bt):e&&typeof e==`object`?Object.fromEntries(Object.keys(e).sort().map(t=>[t,bt(e[t])])):e,xt=e=>{try{return JSON.stringify(bt(e))??`undefined`}catch{return`unserializable`}};function St(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return{ok:!1,error:H(`unknown_command`,`A command is an object: { name, input }.`)};let r=e,{name:i,input:a={}}=r;if(typeof i!=`string`||!Object.hasOwn(t,i))return{ok:!1,error:H(`unknown_command`,`Unknown command ${JSON.stringify(i)}.`)};for(let e of Object.keys(r))if(e!==`name`&&e!==`input`&&!n.includes(e))return{ok:!1,error:H(`invalid_input`,`${e} is not part of a command.`,{path:e})};let o=vt(t[i],a);return o?{ok:!1,error:H(`invalid_input`,o.message,{path:o.path})}:{ok:!0,name:i,input:a}}var Ct=e=>e===void 0||typeof e==`string`&&e.length>0&&e.length<=200?null:H(`invalid_input`,`id must be a non-empty string of at most 200 characters.`,{path:`id`}),wt=e=>e===void 0||Number.isInteger(e)&&e>=0?null:H(`invalid_input`,`expectedRevision must be a whole number.`,{path:`expectedRevision`});function Tt(e){let{catalog:t}=e,n=yt(t),r=mt(t),i=ht(t),a=e.maxJournal??500,o=e.maxUndo??20,s,c=0,l=new Map;if(e.state){let n=e.state,r=we(n.cookbook);if(!r.ok)throw Error(`Invalid saved cookbook: ${r.errors.join(`; `)}`);if(!Number.isInteger(n.revision)||n.revision<0)throw Error(`Invalid saved revision.`);s={doc:rt(t,r.cookbook),applied:n.applied??null},c=n.revision;for(let e of n.journal??[])l.set(e.id,F(e))}else if(e.cookbook!==void 0){let n=we(e.cookbook);if(!n.ok)throw Error(`Invalid cookbook: ${n.errors.join(`; `)}`);s={doc:rt(t,n.cookbook),applied:null}}else s={doc:rt(t,Ee()),applied:null};let u=new Map,d=[],f=0,p=new Map;function m(e,n){let{doc:r}=e,i=new Map(t.recipes.map(e=>[e.id,e])),a=Ke(t,r),o=new Set(t.models.filter(e=>e.exposed!==!1).map(e=>e.id));return{version:1,revision:n,app:{name:r.name??it(t,e.applied)??`my-app`,description:r.description??null,cookbook:e.applied},recipes:r.recipes.flatMap(e=>{let t=i.get(e);return t?[{id:e,label:t.label}]:[]}),features:r.features.filter(e=>o.has(e)),unavailable:[...r.recipes.filter(e=>!i.has(e)),...r.features.filter(e=>!o.has(e))],settings:{currency:a.currency,taxRate:Number((a.taxRate*100).toFixed(4)),paymentTerms:a.paymentTerms,pricesIncludeTax:a.pricesIncludeTax,taxRounding:a.taxRounding},theme:{text:Ze(r.theme),preset:r.theme?.preset??null,primary:r.theme?.custom?.primary??null,colorScheme:r.theme?.colorScheme??`system`,borderRadius:r.theme?.borderRadius??null,density:r.theme?.density??null,contrast:r.theme?.contrast??null},sections:te(t,r).map(e=>({id:e.id,label:e.label,hidden:e.hidden,items:e.items.map(e=>({id:e.id,label:e.label,hidden:e.hidden}))})),policies:r.policies.length,undo:[...d]}}let h=()=>m(s,c);function g(){for(let[e,t]of p)t!==c&&(p.set(e,c),e(h()))}function _(e,t,n){if(e!==void 0)for(l.set(e,{id:e,fingerprint:t,result:F(n)});l.size>a;){let e=l.keys().next().value;if(e===void 0)break;l.delete(e)}}function v(e,t){if(e===void 0)return null;let n=l.get(e);return n?n.fingerprint===t?{...F(n.result),replayed:!0}:{ok:!1,id:e,error:H(`id_reuse`,`The id "${e}" was already used for a different command.`,{path:`id`})}:null}function y(t,n){let r=`${e.undoPrefix??`undo`}-${++f}`;u.set(r,{before:F(t),after:F(n)}),d=[...d,r].slice(-o);for(let e of[...u.keys()])d.includes(e)||u.delete(e);return r}let b=(e,t)=>e.applied!==t.applied||!Te(e.doc,t.doc);function x(e,t,n,r,i,a,o){return{ok:!0,...e===void 0?{}:{id:e},snapshot:a,receipt:{name:t,...e===void 0?{}:{id:e},summary:i===r?``:n.summary,changed:i!==r,revisionBefore:r,revisionAfter:i,...o?{undoId:o}:{},...n.changes?{changes:n.changes}:{},...n.warnings?{warnings:n.warnings}:{}},...n.data===void 0?{}:{data:n.data}}}function S(e,t){let n=u.get(t.undoId);if(!n)return{ok:!1,...e===void 0?{}:{id:e},error:H(`not_found`,`Nothing to undo for "${t.undoId}".`,{path:`input.undoId`})};if(!t.force&&b(s,n.after))return{ok:!1,...e===void 0?{}:{id:e},error:H(`conflict`,`The plan changed since; send force: true to undo anyway.`,{details:{currentRevision:c}})};let r=c,i=F(n.before),a=b(s,i);s=i,a&&(c+=1),u.delete(t.undoId),d=d.filter(e=>e!==t.undoId);let o=x(e,`undo`,{ok:!0,state:s,summary:`Undone.`},r,c,h());return g(),o}function C(e,r={}){try{let i=e&&typeof e==`object`&&!Array.isArray(e)?e:void 0,a=i?.id,o=Ct(a);if(o)return{ok:!1,error:o};let l=i?.expectedRevision??r.expectedRevision,u=wt(l);if(u)return{ok:!1,...a===void 0?{}:{id:a},error:u};let d=xt({name:i?.name,input:i?.input??{},expectedRevision:l}),f=v(a,d);if(f)return f;let p=e=>(_(a,d,e),e),m=e=>({ok:!1,...a===void 0?{}:{id:a},error:e}),C=St(e,n,[`id`,`expectedRevision`]);if(!C.ok)return p(m(C.error));if(l!==void 0&&l!==c)return p(m(H(`conflict`,`The plan is at revision ${c}, not ${l}. Read the snapshot and try again.`,{details:{expectedRevision:l,currentRevision:c}})));if(C.name===`undo`)return p(S(a,C.input));let w=s,T=dt(t,w,C.name,C.input);if(!T.ok)return p(m(T.error));let E=c,D=b(w,T.state),O;D&&(s=T.state,c+=1,O=y(w,T.state));let ee=p(x(a,C.name,T,E,c,h(),O));return g(),ee}catch(e){return{ok:!1,error:H(`failed`,e instanceof Error?e.message:String(e))}}}function w(e){let r=(e,t)=>({ok:!1,...t===void 0?{}:{id:t},error:e,snapshot:h()});try{if(!e||typeof e!=`object`||Array.isArray(e))return r(H(`invalid_input`,`A batch is an object: { commands }.`));let i=e,a=i.id,o=Ct(a);if(o)return r(o);let l=wt(i.expectedRevision);if(l)return r(l,a);let u=xt({commands:i.commands,expectedRevision:i.expectedRevision}),d=v(a,u);if(d)return`results`in d||`snapshot`in d?d:r(d.error,a);let f=e=>(_(a,u,e),e),p=i.commands;if(!Array.isArray(p)||p.length===0||p.length>50)return f(r(H(`invalid_input`,`commands must be a list of 1 to 50 commands.`,{path:`commands`}),a));let S=i.expectedRevision;if(S!==void 0&&S!==c)return f(r(H(`conflict`,`The plan is at revision ${c}, not ${S}. Read the snapshot and try again.`,{details:{expectedRevision:S,currentRevision:c}}),a));let C=(e,t,n)=>f(r(H(`batch_failed`,`Command ${e+1} (${String(t)}) failed: ${n.message}`,{path:`commands[${e}]`,details:{index:e,cause:n}}),a)),w=s,T=c,E=w,D=T,O=[];for(let[e,r]of p.entries()){let i=St(r,n,[]);if(!i.ok)return C(e,r?.name,i.error);if(i.name===`undo`)return C(e,`undo`,H(`invalid_input`,`undo cannot run inside a batch.`));let a=dt(t,E,i.name,i.input);if(!a.ok)return C(e,i.name,a.error);let o=D;b(E,a.state)&&(D+=1),E=a.state,O.push(x(void 0,i.name,a,o,D,m(E,D)))}let ee=D!==T,k;if(ee){s=E,c=D,k=y(w,E);for(let e of O)e.receipt.changed&&delete e.receipt.undoId}let te=f({ok:!0,...a===void 0?{}:{id:a},snapshot:h(),receipt:{...a===void 0?{}:{id:a},count:O.length,changed:ee,revisionBefore:T,revisionAfter:D,...k?{undoId:k}:{}},results:O});return g(),te}catch(e){return r(H(`failed`,e instanceof Error?e.message:String(e)))}}return{run:C,batch:w,snapshot:h,cookbook:()=>F(s.doc),state:()=>({version:1,revision:c,applied:s.applied,cookbook:F(s.doc),journal:[...l.values()].map(e=>F(e))}),subscribe(e){return p.set(e,c),e(h()),()=>{p.delete(e)}},tools:r,batchTool:i}}var Et=new Set(`AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD BIF BMD BND BOB BRL BSD BTN BWP BYN BZD CAD CDF CHF CLP CNY COP CRC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB EUR FJD FKP GBP GEL GHS GIP GMD GNF GTQ GYD HKD HNL HTG HUF IDR ILS INR IQD IRR ISK JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LYD MAD MDL MGA MKD MMK MNT MOP MRU MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLE SOS SRD SSP STN SYP SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD UYU UZS VES VND VUV WST XAF XCD XOF XPF YER ZAR ZMW ZWG`.split(` `));function Dt(){let e=c.packages.flatMap(e=>e.models.map(t=>({id:t.id,name:t.name,packageId:e.id,...t.description?{description:t.description}:{},exposed:t.exposed,fields:t.fields.map(e=>({name:e.name,...e.system?{system:!0}:{},...e.default===void 0?{}:{default:e.default}}))})));return{recipes:h,models:e,cookbooks:y.map(e=>({id:e.id,name:e.name,document:e.document})),themePresets:f,currencies:[...Et],settingTargets:v}}var Ot;function kt(){return Ot??=Dt(),Ot}var At=[`cookbooks`,`recipes`,`features`,`layout`,`theme`,`settings`,`export`],jt={name:`focus`,description:`Move the planner's view to a tab and/or a menu section. Navigation only; it changes nothing in the plan.`,inputSchema:{type:`object`,properties:{tab:{enum:[...At],description:`The tab to open.`},section:{type:`string`,minLength:1,maxLength:200,description:`The id of a menu section, as the plan snapshot's "sections" lists it.`}},additionalProperties:!1}};function Mt(e){return[...mt(e),jt]}function Nt(e,t){return Mt({...kt(),recipes:e.map(e=>({id:e,label:e,models:[],nav:[],requires:[]})),cookbooks:t.map(e=>({id:e,name:e,document:{}}))})}var Pt=Nt(h.map(e=>e.id),y.map(e=>e.id));Object.fromEntries(Pt.map(e=>[e.name,e.inputSchema])),Pt.map(e=>e.name);function Ft(e,t,n=`input`){return vt(e,t,n)?.message??null}function It(e){let t=e;return{get:()=>t,set:e=>{t=e}}}var U=(e,t,n={})=>({code:e,message:t,...n}),W=(e,t)=>({ok:!1,...t===void 0?{}:{id:t},error:e}),G=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Lt=new Set([`apply_cookbook`,`import_cookbook`]),Rt=e=>e instanceof Error?e.message:String(e);function zt(e,t){if(!G(e))return JSON.stringify([t,e??null]);let{overviews:n,...r}=e;return JSON.stringify([t,r])}function Bt(e){let{catalog:t,port:n,options:r={},env:i={}}=e,a=i.section??It(null),o=i.tab??It(null),s=Mt(t),c=e=>s.find(t=>t.name===e)?.inputSchema,l=c(`focus`),u=c(`undo`),d,f=``,p=null,m=new Map,h=new Map,g=0,_=new Map,v=()=>n?.applied?.()??null,y=()=>r.navigation?.getTab()??o.get();function b(){if(!n?.read){d=Tt(e.cookbook===void 0?{catalog:t}:{catalog:t,state:{version:1,revision:0,applied:null,cookbook:e.cookbook,journal:[]}});return}let r=n.read();f=zt(r,v());try{d=Tt({catalog:t,state:{version:1,revision:0,applied:v(),cookbook:r,journal:[]}})}catch(e){d=Tt({catalog:t}),p=Rt(e)}}b();function x(e,n){let r=d.state();try{d=Tt({catalog:t,state:{version:1,revision:r.revision+1,applied:v(),cookbook:e,journal:r.journal}}),p=null}catch(e){p=Rt(e)}m=new Map,h=new Map,f=n}function S(){if(n?.read)try{let e=n.read(),t=zt(e,v());if(t===f)return;x(e,t)}catch(e){p=Rt(e)}}let C=()=>U(`failed`,`The app's document is not one the planner can read (${p}). Fix it or reset the cookbook, then try again.`),w=e=>W(C(),e);function T(e){if(!e)return;let t=m.get(e);return t||(t=`undo-${++g}`,m.set(e,t),h.set(t,e)),t}function E(e){let t=new Set(e);for(let[e,n]of m)t.has(e)||(m.delete(e),h.delete(n))}let D=e=>({...e,undo:e.undo.map(e=>T(e)),focus:{tab:y(),section:a.get()}});function O(){let e=d.snapshot();return E(e.undo),D(e)}function ee(e){if(!n?.read)return e;try{let t=n.read(),r=G(t)?t.overviews:void 0,{overviews:i,...a}=e;return ke(G(r)&&Object.keys(r).length?{...a,overviews:r}:a)}catch{return e}}function k(e){if(!e.ok)return e;let{receipt:t}=e,n=e.replayed?void 0:T(t.undoId),{undoId:r,...i}=t,a=e.data;if(t.name===`export_cookbook`&&G(a)&&!e.replayed){let e=ee(a.cookbook);a={...a,cookbook:e,text:`${JSON.stringify(e,null,2)}\n`}}return{...e,...a===void 0?{}:{data:a},snapshot:O(),receipt:{...i,...n?{undoId:n}:{}}}}function te(e,t){if(!n?.write)return;let i=d.snapshot().app.cookbook,a=e.includes(`apply_cookbook`)||i!==null&&i!==t;n.write(d.cookbook(),{commands:e,replaced:e.some(e=>Lt.has(e)),applied:i,libraryApplied:a}),n.read&&(f=zt(n.read(),v())),a&&r.onReplaced?.()}function A(){if(!_.size)return;S();let e=O(),t=JSON.stringify(e);for(let[n,r]of _)r!==t&&(_.set(n,t),n(e))}function ne(e,t){for(let t of Object.keys(e))if(![`name`,`input`,`id`,`expectedRevision`].includes(t))return U(`invalid_input`,`${t} is not part of a command.`,{path:t});let{id:n}=e;if(n!==void 0&&!(typeof n==`string`&&n.length>0&&n.length<=200))return U(`invalid_input`,`id must be a non-empty string of at most 200 characters.`,{path:`id`});let r=e.expectedRevision??t.expectedRevision;return r!==void 0&&!(Number.isInteger(r)&&r>=0)?U(`invalid_input`,`expectedRevision must be a whole number.`,{path:`expectedRevision`}):null}function re(e,t){let n=ne(e,t),i=typeof e.id==`string`?e.id:void 0;if(n)return W(n,i);let s=e.expectedRevision??t.expectedRevision,c=e.input??{},u=Ft(l,c);if(u)return W(U(`invalid_input`,u,{path:`input`}),i);let f=d.snapshot().revision;if(s!==void 0&&s!==f)return W(U(`conflict`,`The plan is at revision ${f}, not ${s}. Read the snapshot and try again.`,{details:{expectedRevision:s,currentRevision:f}}),i);if(c.section!==void 0&&!O().sections.some(e=>e.id===c.section))return W(U(`not_found`,`No menu section "${c.section}".`,{path:`input.section`}),i);let p=!1;c.tab&&At.includes(c.tab)&&(p||=y()!==c.tab,o.set(c.tab),r.navigation?.setTab(c.tab)),c.section!==void 0&&(p||=a.get()!==c.section,a.set(c.section),r.navigation?.setSection?.(c.section));let m={ok:!0,...i===void 0?{}:{id:i},snapshot:O(),receipt:{name:`focus`,...i===void 0?{}:{id:i},summary:``,changed:p,revisionBefore:f,revisionAfter:f}};return A(),m}function ie(e){let t=e.input;if(!n?.prepareImport||!G(t))return{raw:e};let r=n.prepareImport(t.document);return r.ok?{raw:{...e,input:{...t,document:r.cookbook}},dropped:r.dropped}:W(U(`invalid_input`,r.error,{path:`input.document`}),e.id)}function ae(e){if(n?.read&&e.some(e=>typeof e==`string`&&Lt.has(e)))try{let e=n.read();if(De(d.cookbook())&&!De(e)){let n=d.state();d=Tt({catalog:t,state:{version:1,revision:n.revision,applied:v(),cookbook:e,journal:n.journal}}),m=new Map,h=new Map,f=zt(e,v())}}catch(e){p=Rt(e)}}function oe(e,t={}){try{if(S(),p)return w(G(e)&&typeof e.id==`string`?e.id:void 0);if(!G(e))return k(d.run(e,t));if(e.name===`focus`)return re(e,t);if(ae([e.name]),p)return w(typeof e.id==`string`?e.id:void 0);let n=e,r;if(e.name===`import_cookbook`){let t=ie(e);if(`ok`in t)return t;n=t.raw,r=t.dropped}let i=d.snapshot().app.cookbook,a=se(n),o=a?ce(n,t,a):k(d.run(n,t));if(!o.ok)return o;!o.replayed&&o.receipt.changed&&te([String(n.name)],i);let s=o;return r?.length&&(s={...o,receipt:{...o.receipt,warnings:[...o.receipt.warnings??[],...r.map(e=>`Not imported: ${e}`)]}}),A(),s.ok?{...s,snapshot:O()}:s}catch(e){return W(U(`failed`,Rt(e)))}}function se(e){let n=e.input;if(e.name!==`apply_cookbook`||!G(n))return;let r=t.cookbooks?.find(e=>e.id===n.id);if(!r)return;let i=d.cookbook().theme;if(!i)return;let a=r.document.theme;if(a)return a.colorScheme||!i.colorScheme?void 0:{colorScheme:i.colorScheme};let o={};return i.preset&&(o.preset=i.preset),i.custom?.primary&&(o.primary=i.custom.primary),i.colorScheme&&(o.colorScheme=i.colorScheme),i.borderRadius&&(o.borderRadius=i.borderRadius),i.density&&(o.density=i.density),i.contrast&&(o.contrast=i.contrast),Object.keys(o).length?o:void 0}function ce(e,t,n){let r=d.batch({...e.id===void 0?{}:{id:e.id},expectedRevision:e.expectedRevision??t.expectedRevision,commands:[e,{name:`set_theme`,input:n}].map(({id:e,expectedRevision:t,...n})=>n)});if(!r.ok){let t=r.error.details?.cause;return W(r.error.code===`batch_failed`&&t?t:r.error,e.id)}let i=r.results[0],a=r.replayed?void 0:T(r.receipt.undoId);return{...i,...r.id===void 0?{}:{id:r.id},...r.replayed?{replayed:!0}:{},snapshot:O(),receipt:{...i.receipt,...r.id===void 0?{}:{id:r.id},revisionBefore:r.receipt.revisionBefore,revisionAfter:r.receipt.revisionAfter,changed:r.receipt.changed,...a?{undoId:a}:{}}}}function le(e){try{if(S(),p)return{ok:!1,error:C(),snapshot:O()};let t=G(e)&&Array.isArray(e.commands)?e.commands:[];if(ae(t.map(e=>G(e)?e.name:void 0)),p)return{ok:!1,error:C(),snapshot:O()};let n=d.snapshot().app.cookbook,r=d.batch(e);if(!r.ok)return{...r,snapshot:O()};!r.replayed&&r.receipt.changed&&te(t.map(e=>String(e?.name)),n);let i=r.replayed?void 0:T(r.receipt.undoId),{undoId:a,...o}=r.receipt,s=O(),c={...r,snapshot:s,receipt:{...o,...i?{undoId:i}:{}},results:r.results.map(e=>({...e,snapshot:r.replayed?s:D(e.snapshot)}))};return A(),c}catch(e){return{ok:!1,error:U(`failed`,Rt(e)),snapshot:O()}}}function ue(e){if(!G(e)||e.name!==`undo`||!G(e.input))return e;let t=e.input.undoId;return typeof t==`string`?{...e,input:{...e.input,undoId:h.get(t)??``}}:e}function de(e,t){if(e.ok||e.error.code!==`not_found`)return e;let n=h.get(t);return n?{...e,error:{...e.error,message:e.error.message.replace(`"${n}"`,`"${t}"`)}}:e}let j=(e,t)=>{if(G(e)&&e.name===`undo`&&G(e.input)){let n=e.input.undoId;if(typeof n==`string`&&Ft(u,e.input)===null)return S(),O(),h.has(n)?de(oe(ue(e),t),n):W(U(`not_found`,`Nothing to undo for "${n}".`,{path:`input.undoId`}),e.id)}return oe(ue(e),t)};return{run:j,batch:le,snapshot(){return S(),O()},cookbook(){return S(),ee(d.cookbook())},undo(){S();let e=O().undo.at(-1);return e?j({name:`undo`,input:{undoId:e}}):W(U(`not_found`,`Nothing to undo.`))},state:()=>d.state(),get tools(){return s},get batchTool(){return d.batchTool},observe(){return S(),JSON.stringify(O())},deliver:A,subscribe(e){i.watch?.start(),S();let t=O();return _.set(e,JSON.stringify(t)),e(t),()=>{_.delete(e),_.size||i.watch?.stop()}}}}function Vt(e){return e.recipes.length===0&&e.features.length===0&&e.policies.length===0&&Object.keys(e.exposure??{}).length===0&&e.theme===void 0&&l(e.layout)}function Ht(e){if(!e.theme?.colorScheme)return e;let{colorScheme:t,...n}=e.theme;return{...e,theme:Object.keys(n).length?n:void 0}}function Ut(e){return JSON.stringify(Ht(e))}function Wt(e,t){let n=Ht(e);return Vt(n)?!1:t===null||JSON.stringify(n)!==t}function Gt(e,t,n){return t(n?g(structuredClone(e.document),n):e.document)}var Kt=`smrt-planner:cookbook`,qt=`smrt-planner:cookbook-applied`,Jt=new class{#e=t(null);get active(){return e(this.#e)}set active(e){o(this.#e,e,!0)}#t=t(null);get appliedWork(){return e(this.#t)}set appliedWork(e){o(this.#t,e,!0)}load(e=u()){try{this.active=e?.getItem(`smrt-planner:cookbook`)??null,this.appliedWork=e?.getItem(`smrt-planner:cookbook-applied`)??null}catch{this.active=null,this.appliedWork=null}s(this.active)}select(e,t=null,n=u()){this.active=e,this.appliedWork=t;try{n?.setItem(Kt,e),t===null?n?.removeItem(qt):n?.setItem(qt,t)}catch{}}};function Yt(n){let i=t(r(n));return{get:()=>e(i),set:e=>{o(i,e,!0)}}}function Xt(e){return{read:()=>e.snapshot(),applied:()=>Jt.active,prepareImport:e=>m(e),write(t,{replaced:n,applied:r,libraryApplied:i}){let a=n?t:{...t,overviews:e.snapshot().overviews};n?e.replace(a):e.apply(a),i&&r&&(Jt.select(r,Ut(e.snapshot())),s(r))}}}function Zt(e=p,t={}){let r,o=Bt({catalog:kt(),port:Xt(e),options:t,env:{section:Yt(null),tab:Yt(null),watch:{start(){r||=a(()=>{n(()=>{o.observe(),i(o.deliver)})})},stop(){r?.(),r=void 0}}}});return o}var Qt=()=>({$schema:d,version:1,recipes:[],features:[],policies:[]});function $t(e){let{store:t,settings:n,theme:r}=e;return{read(){let e={...Qt(),recipes:[...t.ids].sort()};n&&(e=g(e,n.read()));let i=r?.read();return i?{...e,theme:i}:e},write(e){let i=new Set(e.recipes),a=new Set(t.ids),o=[...a].filter(e=>!i.has(e));o.length&&t.remove(...o);let s=[...i].filter(e=>!a.has(e));s.length&&t.add(...s),n&&n.write(_(e)),r?.write(e.theme)}}}function en(e,t={}){return Bt({catalog:kt(),port:$t(e),options:t})}var tn=[`cookbooks`,`recipes`,`features`,`layout`,`theme`,`settings`,`export`];function nn(e,t=`cookbooks`){let n=new URLSearchParams(e).get(`tab`);return tn.find(e=>e===n)??t}var rn=new class{#e=t(`cookbooks`);get active(){return e(this.#e)}set active(e){o(this.#e,e,!0)}fromSearch(e,t=`cookbooks`){this.active=nn(e,t)}leaveExport(e=`cookbooks`){this.active===`export`&&(this.active=e)}},an={},on=Zt(p,{navigation:{getTab:()=>rn.active,setTab:e=>{rn.active=e},setSection:e=>an.openSection?.(e)},onReplaced:()=>an.onReplaced?.()}),sn=class extends Error{code;category;details;cause;constructor(e,t,n,r,i){super(e),this.name=this.constructor.name,this.code=t,this.category=n,this.details=r,this.cause=i,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,message:this.message,code:this.code,category:this.category,details:this.details,stack:this.stack,cause:this.cause?{name:this.cause.name,message:this.cause.message,stack:this.cause.stack}:void 0}}},K=Object.freeze({maxTitleLength:120,maxDescriptionLength:500,maxDimensions:4,maxMeasures:6,maxFilters:12,maxHaving:4,maxSort:3,maxInValues:100,maxStringValueLength:256,defaultRowLimit:100,maxRowLimit:1e3,maxAliasLength:40,maxFieldNameLength:64,maxSourceIdLength:120}),cn=[`minute`,`hour`,`day`,`week`,`month`,`quarter`,`year`],ln=[`count`,`countDistinct`,`sum`,`avg`,`min`,`max`],un=[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`notIn`,`contains`,`isNull`,`isNotNull`],dn=[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`],fn=[`table`,`bar`,`line`,`pie`,`stat`],q=class extends sn{code;path;status;constructor(e,t,n){super(t?`${t}: ${n}`:n,e,`validation`),this.name=`RuntimeReportError`,this.code=e,this.path=t,this.status=e===`tenant_required`||e===`confirmation_required`?403:e===`invalid_result`?500:422}};function J(e,t){throw new q(`invalid_spec`,e,t)}var pn=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(`.`)),mn=/^[a-z][a-z0-9_]*$/,hn=/^[A-Za-z][A-Za-z0-9_]*$/,gn=/^[A-Za-z@][A-Za-z0-9_@./:-]*$/;function _n(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null)}function Y(e,t,n){_n(e)||J(t,`must be an object`);for(let r of Object.keys(e))n.includes(r)||J(`${t}.${r}`,`is not a known key`);return e}function X(e,t,n,r=0){return e===void 0?[]:(Array.isArray(e)||J(t,`must be an array`),e.length>n&&J(t,`must have at most ${n} entries`),e.length<r&&J(t,`must have at least ${r} entries`),e)}function vn(e,t,n,r={}){if(typeof e!=`string`){if(r.optional&&e===void 0)return``;J(t,`must be a string`)}let i=e.trim();return i.length===0&&!r.optional&&J(t,`must not be empty`),i.length>n&&J(t,`must be at most ${n} characters`),/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/.test(i)&&J(t,`must not contain control characters`),i}function yn(e,t,n){return(typeof e!=`string`||!n.includes(e))&&J(t,`must be one of: ${n.join(`, `)}`),e}function bn(e,t){return typeof e!=`string`&&J(t,`must be a string`),(e.length===0||e.length>K.maxFieldNameLength||!hn.test(e))&&J(t,`must be a plain field name (letters, digits, underscore)`),e}function Z(e,t){return typeof e!=`string`&&J(t,`must be a string`),(e.length===0||e.length>K.maxAliasLength||!mn.test(e))&&J(t,`must be a lowercase identifier of at most ${K.maxAliasLength} characters (a-z, 0-9, underscore)`),pn.has(e)&&J(t,`'${e}' is a reserved word`),e}function xn(e,t){return typeof e==`string`?(e.length>K.maxStringValueLength&&J(t,`must be at most ${K.maxStringValueLength} characters`),e.includes(`\0`)&&J(t,`must not contain NUL`),e):typeof e==`number`?(Number.isFinite(e)||J(t,`must be a finite number`),e):typeof e==`boolean`?e:J(t,`must be a string, number or boolean`)}function Sn(e){return e.replace(/([a-z\d])([A-Z])/g,`$1_$2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1_$2`).toLowerCase()}function Cn(e,t){let n=Y(e,t,[`field`,`as`,`bucket`]),r=bn(n.field,`${t}.field`),i=n.bucket===void 0?void 0:yn(n.bucket,`${t}.bucket`,cn);return{field:r,as:n.as===void 0?Z(i?`${Sn(r)}_${i}`:Sn(r),`${t}.as`):Z(n.as,`${t}.as`),...i?{bucket:i}:{}}}function wn(e,t){let n=Y(e,t,[`fn`,`field`,`as`]),r=yn(n.fn,`${t}.fn`,ln),i=n.field===void 0?void 0:bn(n.field,`${t}.field`);!i&&r!==`count`&&J(`${t}.field`,`is required for ${r}`);let a=n.as===void 0?Z(i?`${Sn(r)}_${Sn(i)}`:`row_count`,`${t}.as`):Z(n.as,`${t}.as`);return{fn:r,...i?{field:i}:{},as:a}}function Tn(e,t){let n=Y(e,t,[`field`,`op`,`value`]),r=bn(n.field,`${t}.field`),i=yn(n.op,`${t}.op`,un);if(i===`isNull`||i===`isNotNull`)return n.value!==void 0&&J(`${t}.value`,`must be omitted for ${i}`),{field:r,op:i};if(n.value===void 0&&J(`${t}.value`,`is required for ${i}`),i===`in`||i===`notIn`)return{field:r,op:i,value:X(n.value,`${t}.value`,K.maxInValues,1).map((e,n)=>xn(e,`${t}.value[${n}]`))};Array.isArray(n.value)&&J(`${t}.value`,`must be a scalar for ${i}`);let a=xn(n.value,`${t}.value`);return i===`contains`&&typeof a!=`string`&&J(`${t}.value`,`must be a string for contains`),{field:r,op:i,value:a}}function En(e,t){let n=Y(e,t,[`measure`,`op`,`value`]),r=Z(n.measure,`${t}.measure`),i=yn(n.op,`${t}.op`,dn);return(typeof n.value!=`number`||!Number.isFinite(n.value))&&J(`${t}.value`,`must be a finite number`),{measure:r,op:i,value:n.value}}function Dn(e,t){let n=Y(e,t,[`by`,`direction`]);return{by:Z(n.by,`${t}.by`),direction:n.direction===void 0?`asc`:yn(n.direction,`${t}.direction`,[`asc`,`desc`])}}function On(e){let t=e;if(typeof e==`string`){e.length>65536&&J(``,`spec JSON is too large`);try{t=JSON.parse(e)}catch{J(``,`spec is not valid JSON`)}}let n=Y(t,`spec`,[`version`,`title`,`description`,`source`,`dimensions`,`measures`,`filters`,`having`,`sort`,`limit`,`chart`]);n.version!==void 0&&n.version!==1&&J(`spec.version`,`unsupported version (expected 1)`);let r=vn(n.title,`spec.title`,K.maxTitleLength),i=vn(n.description,`spec.description`,K.maxDescriptionLength,{optional:!0});(typeof n.source!=`string`||n.source.length===0||n.source.length>K.maxSourceIdLength||!gn.test(n.source))&&J(`spec.source`,`must be a source id`);let a=X(n.dimensions,`spec.dimensions`,K.maxDimensions).map((e,t)=>Cn(e,`spec.dimensions[${t}]`)),o=X(n.measures,`spec.measures`,K.maxMeasures,1).map((e,t)=>wn(e,`spec.measures[${t}]`)),s=X(n.filters,`spec.filters`,K.maxFilters).map((e,t)=>Tn(e,`spec.filters[${t}]`)),c=X(n.having,`spec.having`,K.maxHaving).map((e,t)=>En(e,`spec.having[${t}]`)),l=X(n.sort,`spec.sort`,K.maxSort).map((e,t)=>Dn(e,`spec.sort[${t}]`)),u=new Set,d=new Set,f=new Set;for(let[e,t]of a.entries())f.has(t.as)&&J(`spec.dimensions[${e}].as`,`duplicate alias '${t.as}'`),f.add(t.as),u.add(t.as);for(let[e,t]of o.entries())f.has(t.as)&&J(`spec.measures[${e}].as`,`duplicate alias '${t.as}'`),f.add(t.as),d.add(t.as);for(let[e,t]of c.entries())d.has(t.measure)||J(`spec.having[${e}].measure`,`must be a declared measure alias`);for(let[e,t]of l.entries())f.has(t.by)||J(`spec.sort[${e}].by`,`must be a declared dimension or measure alias`);let p=K.defaultRowLimit;n.limit!==void 0&&((typeof n.limit!=`number`||!Number.isSafeInteger(n.limit)||n.limit<1||n.limit>K.maxRowLimit)&&J(`spec.limit`,`must be an integer between 1 and ${K.maxRowLimit}`),p=n.limit);let m={type:`table`};if(n.chart!==void 0){let e=Y(n.chart,`spec.chart`,[`type`,`x`,`y`]),t=yn(e.type,`spec.chart.type`,fn),r=e.x===void 0?void 0:Z(e.x,`spec.chart.x`);r!==void 0&&!u.has(r)&&J(`spec.chart.x`,`must be a declared dimension alias`);let i=X(e.y,`spec.chart.y`,K.maxMeasures).map((e,t)=>Z(e,`spec.chart.y[${t}]`));for(let[e,t]of i.entries())d.has(t)||J(`spec.chart.y[${e}]`,`must be a declared measure alias`);m={type:t,...r?{x:r}:{},...i.length>0?{y:i}:{}}}return{version:1,title:r,...i?{description:i}:{},source:n.source,dimensions:a,measures:o,filters:s,having:c,sort:l,limit:p,chart:m}}function kn(e){return Array.isArray(e)?e.map(kn):_n(e)?Object.fromEntries(Object.keys(e).sort().map(t=>[t,kn(e[t])])):e}function An(e){return JSON.stringify(kn(e))}async function jn(e){let t=globalThis.crypto?.subtle;if(!t)throw Error(`runtimeReportSpecDigest needs Web Crypto (crypto.subtle), which browsers offer only in a secure context`);let n=new TextEncoder().encode(An(e)),r=new Uint8Array(await t.digest(`SHA-256`,n));return Array.from(r,e=>e.toString(16).padStart(2,`0`)).join(``)}var Mn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Nn(e){return e.replace(/([a-z\d])([A-Z])/g,`$1 $2`).replace(/[_-]+/g,` `).replace(/^./,e=>e.toUpperCase())}function Pn(e,t){throw new q(`unknown_field`,e,`'${t}' is not a field available on this source`)}function Fn(e,t){throw new q(`invalid_operation`,e,t)}function In(e,t){throw new q(`invalid_value`,e,t)}var Ln={string:[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`notIn`,`contains`,`isNull`,`isNotNull`],integer:[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`notIn`,`isNull`,`isNotNull`],decimal:[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`notIn`,`isNull`,`isNotNull`],datetime:[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`in`,`notIn`,`isNull`,`isNotNull`],boolean:[`eq`,`ne`,`isNull`,`isNotNull`],id:[`eq`,`ne`,`in`,`notIn`,`isNull`,`isNotNull`]};function Rn(e){return e===`integer`||e===`decimal`?[`count`,`countDistinct`,`sum`,`avg`,`min`,`max`]:e===`datetime`?[`count`,`countDistinct`,`min`,`max`]:[`count`,`countDistinct`]}function zn(e,t,n){Ln[t].includes(e.op)||Fn(`${n}.op`,`'${e.op}' is not valid for ${t} fields`)}function Bn(e,t,n){switch(e){case`string`:return typeof t!=`string`&&In(n,`must be a string`),t;case`integer`:return(typeof t!=`number`||!Number.isSafeInteger(t))&&In(n,`must be a safe integer`),t;case`decimal`:return(typeof t!=`number`||!Number.isFinite(t))&&In(n,`must be a finite number`),t;case`boolean`:return typeof t!=`boolean`&&In(n,`must be true or false`),t;case`datetime`:{typeof t!=`string`&&In(n,`must be an ISO-8601 string`);let e=new Date(t);return(Number.isNaN(e.getTime())||!/^\d{4}-\d{2}-\d{2}/.test(t))&&In(n,`must be an ISO-8601 date or timestamp`),e}case`id`:return(typeof t!=`string`||!Mn.test(t))&&In(n,`must be a UUID`),t.toLowerCase()}}function Vn(e,t){let n=n=>{let r=e[n];if(r!==void 0){if(!Array.isArray(r)||Array.from(r).some(e=>typeof e!=`string`||!t.has(e)))throw new q(`unsupported_source`,`source.${n}`,`${n} must contain canonical field names declared on the source`);return new Set(r)}},r=n(`fields`),i=n(`excludeFields`);if(n(`dimensions`),e.timeField!==void 0&&(typeof e.timeField!=`string`||!t.has(e.timeField)))throw new q(`unsupported_source`,`source.timeField`,`timeField must be a canonical field name declared on the source`);return{...r?{included:r}:{},...i?{excluded:i}:{}}}function Hn(e,t){return e===`count`||e===`countDistinct`?`integer`:e===`avg`?`decimal`:t?.type??`decimal`}function Un(e,t){let n=(e,n)=>{let r=t.get(e);return r||Pn(n,e),r},r=[];for(let[t,i]of e.dimensions.entries()){let e=`spec.dimensions[${t}]`,a=n(i.field,`${e}.field`);i.bucket&&a.type!==`datetime`&&Fn(`${e}.bucket`,`buckets are only valid on datetime fields`),r.push({id:i.as,label:Nn(i.as),role:`dimension`,type:i.bucket?`datetime`:a.type,field:a.name,...i.bucket?{bucket:i.bucket}:{},...a.format&&!i.bucket?{format:a.format}:{}})}for(let[t,i]of e.measures.entries()){let e=`spec.measures[${t}]`,a=i.field?n(i.field,`${e}.field`):void 0;(i.fn===`sum`||i.fn===`avg`)&&a?.type!==`integer`&&a?.type!==`decimal`&&Fn(`${e}.fn`,`${i.fn} requires a numeric field`),(i.fn===`min`||i.fn===`max`)&&a?.type!==`integer`&&a?.type!==`decimal`&&a?.type!==`datetime`&&Fn(`${e}.fn`,`${i.fn} requires a numeric or datetime field`);let o=a?.format&&(i.fn===`sum`||i.fn===`min`||i.fn===`max`||i.fn===`avg`);r.push({id:i.as,label:Nn(i.as),role:`measure`,type:Hn(i.fn,a),...a?{field:a.name}:{},fn:i.fn,...o?{format:a?.format}:{}})}return r}function Wn(e,t){if(t==null)return null;if(t instanceof Date)return t.toISOString();if(typeof t==`bigint`){let n=Number(t);if(!Number.isSafeInteger(n))throw new q(`invalid_result`,e.id,`integer result exceeds the JavaScript safe range`);return n}if(e.type===`boolean`){if(t===1||t===`1`||t===`true`||t===!0)return!0;if(t===0||t===`0`||t===`false`||t===!1)return!1}if(e.type===`integer`||e.type===`decimal`){let n=typeof t==`number`?t:Number(t);if(!Number.isFinite(n))throw new q(`invalid_result`,e.id,`numeric result is not finite`);if(e.type===`integer`&&!Number.isSafeInteger(n))throw new q(`invalid_result`,e.id,`integer result exceeds the JavaScript safe range`);return n}return typeof t==`string`||typeof t==`number`||typeof t==`boolean`?t:String(t)}var Gn=/^(?:id|_.*)$|(?:Hash|Json|Token|Secret|Signature|Authority|Snapshot|Checksum|Cursor|Etag)$|^(?:external|historical)[A-Z]/,Kn=/^(?:created|updated|deleted|synced|archived)At$|^last[A-Z]\w*At$/,qn=/^(?:status|state)$|(?:Status|State)$/,Jn=/^(?:kind|type|category|method|channel|stage|priority|segment|tier|source)$|(?:Kind|Type|Category|Method|Channel|Stage|Priority|Segment|Tier)$/,Yn=/^(?:customer|vendor|supplier|client|member|employee|owner|assignee|product|location|project|account|contact)Id$/,Xn=50;function Zn(e){if(e.type===`datetime`)return e.name===`deletedAt`?void 0:`time`;if(!Gn.test(e.name)){if(e.type===`boolean`||e.type===`string`&&e.enum&&e.enum.length>0&&e.enum.length<=Xn)return`category`;if(e.type===`id`&&/Id$/.test(e.name))return`relation`}}function Qn(e){return e.type===`boolean`?10:e.type===`id`?Yn.test(e.name)?70:30:qn.test(e.name)?100:Jn.test(e.name)?80:50}function $n(e,t={}){let n=[...e.values()],r=new Map;for(let e of n){let t=Zn(e);t&&r.set(e.name,t)}let i=n.filter(e=>r.get(e.name)===`time`),a=(t.timeField&&e.get(t.timeField)?.type===`datetime`?t.timeField:void 0)??i.find(e=>e.businessDate)?.name??i.find(e=>!Kn.test(e.name))?.name??i.find(e=>e.name===`createdAt`)?.name??i[0]?.name,o=[...a?[a]:[],...i.map(e=>e.name).filter(e=>e!==a)],s;if(t.dimensions){s=t.dimensions.filter(t=>e.has(t)&&e.get(t)?.type!==`datetime`);for(let t of s)r.has(t)||r.set(t,e.get(t)?.type===`id`?`relation`:`category`);for(let[e,t]of[...r])t!==`time`&&!s.includes(e)&&r.delete(e)}else s=n.filter(e=>{let t=r.get(e.name);return t===`category`||t===`relation`}).map((e,t)=>({field:e,index:t})).sort((e,t)=>Qn(t.field)-Qn(e.field)||e.index-t.index).map(({field:e})=>e.name);return{kinds:r,timeFields:o,...a?{defaultTimeField:a}:{},dimensions:s}}function er(e,t={}){let n=$n(e,t);return{fields:[...e.values()].map(e=>{let t=n.kinds.get(e.name);return{name:e.name,label:e.label,type:e.type,...e.format?{format:e.format}:{},...e.enum?{enum:e.enum}:{},...t?{dimension:t}:{},filterOperators:Ln[e.type],aggregates:Rn(e.type)}}),timeFields:n.timeFields,...n.defaultTimeField?{defaultTimeField:n.defaultTimeField}:{},dimensions:n.dimensions}}var tr=new Set([`tenantId`,`tenant_id`]);function nr(e,t){let n=e.find(e=>e.id===t);if(!n)throw new q(`unknown_source`,`spec.source`,`'${t}' is not an available report source`);return n}function rr(e){let{included:t,excluded:n}=Vn(e,new Set(e.schema.map(e=>e.name))),r=new Map;for(let i of e.schema)i.name.startsWith(`_`)||tr.has(i.name)||n?.has(i.name)||t&&!t.has(i.name)||r.has(i.name)||r.set(i.name,{name:i.name,type:i.type,...i.format?{format:i.format}:{},...i.type===`string`&&i.enum?.length?{enum:i.enum}:{},...i.type===`datetime`&&i.format===`date`?{businessDate:!0}:{},label:i.label??Nn(i.name)});return r}function ir(e,t){let n=nr(e,t);return{id:n.id,label:n.label??Nn(n.id),...n.description?{description:n.description}:{},...er(rr(n),n)}}function ar(e){if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e==`string`||typeof e==`number`){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}return null}function or(e,t){let n=e[t.name];if(n==null)return null;switch(t.type){case`integer`:case`decimal`:{if(typeof n==`bigint`){if(n>BigInt(2**53-1)||n<BigInt(-(2**53-1)))throw new q(`invalid_result`,t.name,`integer value exceeds the JavaScript safe range`);return Number(n)}let e=typeof n==`number`?n:typeof n==`string`&&n.trim()!==``?Number(n):NaN;return Number.isFinite(e)?e:null}case`boolean`:return n===!0||n===1||n===`1`||n===`true`?!0:n===!1||n===0||n===`0`||n===`false`?!1:null;case`datetime`:return ar(n);default:return typeof n==`string`?n:String(n)}}function sr(e,t){let n=e instanceof Date?e.getTime():e,r=t instanceof Date?t.getTime():t;return typeof n==`boolean`||typeof r==`boolean`?Number(n)-Number(r):n<r?-1:+(n>r)}function cr(e,t,n){zn(e,t.type,n);let r=e=>or(e,t);switch(e.op){case`isNull`:return e=>r(e)===null;case`isNotNull`:return e=>r(e)!==null;case`in`:case`notIn`:{let i=e.value.map((e,r)=>Bn(t.type,e,`${n}.value[${r}]`)),a=e=>i.some(t=>sr(e,t)===0);return e.op===`in`?e=>{let t=r(e);return t!==null&&a(t)}:e=>{let t=r(e);return t!==null&&!a(t)}}case`contains`:{let i=Bn(t.type,e.value,`${n}.value`);return e=>{let t=r(e);return typeof t==`string`&&t.includes(i)}}default:{let i=Bn(t.type,e.value,`${n}.value`),a={eq:e=>e===0,ne:e=>e!==0,gt:e=>e>0,gte:e=>e>=0,lt:e=>e<0,lte:e=>e<=0}[e.op];return e=>{let t=r(e);return t!==null&&a(sr(t,i))}}}}function lr(e,t){let n=e.getUTCFullYear(),r=e.getUTCMonth(),i=e.getUTCDate();switch(t){case`minute`:return new Date(Date.UTC(n,r,i,e.getUTCHours(),e.getUTCMinutes()));case`hour`:return new Date(Date.UTC(n,r,i,e.getUTCHours()));case`day`:return new Date(Date.UTC(n,r,i));case`week`:{let t=(e.getUTCDay()+6)%7;return new Date(Date.UTC(n,r,i-t))}case`month`:return new Date(Date.UTC(n,r,1));case`quarter`:return new Date(Date.UTC(n,Math.floor(r/3)*3,1));case`year`:return new Date(Date.UTC(n,0,1))}}function ur(e){return e===null?`n`:e instanceof Date?`d${e.getTime()}`:`${typeof e}:${String(e)}`}function dr(e,t,n){if(t===null)return n;let r=t.filter(e=>e!==null);switch(e){case`count`:return r.length;case`countDistinct`:return new Set(r.map(ur)).size;case`sum`:return r.length===0?null:r.reduce((e,t)=>e+t,0);case`avg`:return r.length===0?null:r.reduce((e,t)=>e+t,0)/r.length;case`min`:case`max`:{if(r.length===0)return null;let t=r[0];for(let n of r.slice(1)){let r=sr(n,t);(e===`min`?r<0:r>0)&&(t=n)}return t}default:return null}}function fr(e,t){if(typeof t!=`number`)return!1;switch(e.op){case`eq`:return t===e.value;case`ne`:return t!==e.value;case`gt`:return t>e.value;case`gte`:return t>=e.value;case`lt`:return t<e.value;case`lte`:return t<=e.value}}function pr(e,t,n){let r;return r=e===null&&t===null?0:e===null?-1:t===null?1:sr(e,t),n===`desc`?-r:r}async function mr(e,t,n){let r=On(e),i=nr(n.sources,r.source),a=rr(i),o=Un(r,a),s=(e,t)=>{let n=a.get(e);return n||Pn(t,e),n},c=[];i.schema.some(e=>e.name===`deletedAt`)&&c.push(e=>e.deletedAt===null||e.deletedAt===void 0);for(let[e,t]of r.filters.entries()){let n=`spec.filters[${e}]`;c.push(cr(t,s(t.field,`${n}.field`),n))}let l=t.filter(e=>c.every(t=>t(e))),u=r.dimensions.map(e=>{let t=a.get(e.field);return n=>{let r=or(n,t);return e.bucket&&r instanceof Date?lr(r,e.bucket):r}}),d=new Map;if(r.dimensions.length===0)d.set(``,{key:[],rows:l});else for(let e of l){let t=u.map(t=>t(e)),n=JSON.stringify(t.map(ur)),r=d.get(n);r?r.rows.push(e):d.set(n,{key:t,rows:[e]})}let f=r.measures.map(e=>e.field?a.get(e.field):null),p=[...d.values()].map(e=>{let t={};return r.dimensions.forEach((n,r)=>{t[n.as]=e.key[r]}),r.measures.forEach((n,r)=>{let i=f[r];t[n.as]=dr(n.fn,i?e.rows.map(e=>or(e,i)):null,e.rows.length)}),t});r.having.length>0&&(p=p.filter(e=>r.having.every(t=>fr(t,e[t.measure]))));let m=r.sort.length>0?r.sort:r.dimensions.length>0?[{by:r.dimensions[0].as,direction:`asc`}]:[];m.length>0&&(p=p.map((e,t)=>({values:e,index:t})).sort((e,t)=>{for(let n of m){let r=pr(e.values[n.by],t.values[n.by],n.direction);if(r!==0)return r}return e.index-t.index}).map(({values:e})=>e));let h=Math.min(r.limit,n.maxRows??K.maxRowLimit),g=p.length>h,_=p.slice(0,h).map(e=>{let t={};for(let n of o)t[n.id]=Wn(n,e[n.id]);return t});return{version:1,specHash:await jn(r),title:r.title,columns:o,rows:_,rowCount:_.length,truncated:g,ranAt:(n.now?.()??new Date).toISOString(),chart:r.chart}}var Q=864e5,hr=e=>new Date(e).toISOString().slice(0,10),gr=[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`],_r={first:1,second:2,third:3,fourth:4},vr=[[`minute`,/\b(?:minutely|(?:per|by|each|every|a) minute|minute by minute)\b/],[`hour`,/\b(?:hourly|(?:per|by|each|every|an?) hour|hour by hour)\b/],[`day`,/\b(?:daily|(?:per|by|each|every|a) day|day by day)\b/],[`week`,/\b(?:weekly|(?:per|by|each|every|a) week|week by week|week over week)\b/],[`month`,/\b(?:monthly|(?:per|by|each|every|a) month|month by month|month over month)\b/],[`quarter`,/\b(?:quarterly|(?:per|by|each|every|a) quarter|quarter by quarter|quarter over quarter)\b/],[`year`,/\b(?:yearly|annually|annual|(?:per|by|each|every|a) year|year by year|year over year)\b/]],yr=/\b(?:over time|trends?|trending|timeline|history)\b/;function br(e){return e===null?`month`:e<=31?`day`:e<=92?`week`:e<=1098?`month`:`quarter`}function xr(e){return Math.round((Date.parse(`${e.to}T00:00:00Z`)-Date.parse(`${e.from}T00:00:00Z`))/Q)}function Sr(e,t){let n=e.toLowerCase().replace(/[_-]+/g,` `).replace(/\s+/g,` `),r=t.getUTCFullYear(),i=t.getUTCMonth(),a=Date.UTC(r,i,t.getUTCDate()),o=a+Q,s=a-(t.getUTCDay()+6)%7*Q,c=Math.floor(i/3)*3,l=(e,t,n)=>({from:hr(e),to:hr(t),label:n}),u=/\b(?:last|past|previous|trailing)\s+(\d{1,4})\s+(day|week|month|year)s?\b/.exec(n);if(u){let e=Number(u[1]),n=u[2];if(e>0)return l(n===`day`?o-e*Q:n===`week`?o-e*7*Q:n===`month`?Date.UTC(r,i-e,t.getUTCDate()+1):Date.UTC(r-e,i,t.getUTCDate()+1),o,`last ${e} ${n}${e===1?``:`s`}`)}let d=/\bq([1-4])(?:\s*(?:of\s*)?((?:19|20)\d{2}))?\b/.exec(n)??/\b(first|second|third|fourth) quarter(?: (?:of )?((?:19|20)\d{2}))?\b/.exec(n);if(d){let e=/^\d$/.test(d[1])?Number(d[1]):_r[d[1]],t=(e-1)*3,n=d[2]?Number(d[2]):Date.UTC(r,t,1)<=a?r:r-1;return l(Date.UTC(n,t,1),Date.UTC(n,t+3,1),`Q${e} ${n}`)}if(/\b(?:year to date|ytd)\b/.test(n))return l(Date.UTC(r,0,1),o,`year to date`);if(/\b(?:month to date|mtd)\b/.test(n))return l(Date.UTC(r,i,1),o,`month to date`);if(/\btoday\b/.test(n))return l(a,o,`today`);if(/\byesterday\b/.test(n))return l(a-Q,a,`yesterday`);let f=/\b(this|current|last|previous|past) (week|month|quarter|year)\b/.exec(n);if(f){let e=f[1]!==`this`&&f[1]!==`current`,t=f[2],n=`${e?`last`:`this`} ${t}`;switch(t){case`week`:return e?l(s-7*Q,s,n):l(s,s+7*Q,n);case`month`:return e?l(Date.UTC(r,i-1,1),Date.UTC(r,i,1),n):l(Date.UTC(r,i,1),Date.UTC(r,i+1,1),n);case`quarter`:return e?l(Date.UTC(r,c-3,1),Date.UTC(r,c,1),n):l(Date.UTC(r,c,1),Date.UTC(r,c+3,1),n);default:return e?l(Date.UTC(r-1,0,1),Date.UTC(r,0,1),n):l(Date.UTC(r,0,1),Date.UTC(r+1,0,1),n)}}let p=RegExp(`\\b(${gr.join(`|`)})(?: ((?:19|20)\\d{2}))?\\b`).exec(n);if(p&&(p[1]!==`may`||p[2])){let e=p,t=gr.indexOf(e[1]),n=e[2]?Number(e[2]):Date.UTC(r,t,1)<=a?r:r-1,i=e[1].charAt(0).toUpperCase()+e[1].slice(1);return l(Date.UTC(n,t,1),Date.UTC(n,t+1,1),`${i} ${n}`)}let m=/\b(?:in|for|during)\s+((?:19|20)\d{2})\b/.exec(n)??/^\s*((?:19|20)\d{2})\s*$/.exec(n);if(m){let e=Number(m[1]);return l(Date.UTC(e,0,1),Date.UTC(e+1,0,1),String(e))}return null}function Cr(e,t){let n=e.toLowerCase(),r=Sr(n,t)??void 0,i=vr.find(([,e])=>e.test(n))?.[0],a=yr.test(n);!i&&a&&(i=br(r?xr(r):null));let o=!!(i||r||a)||/\b(?:date|dates|time|when|minute|hour|day|week|month|quarter|year)s?\b/.test(n);return{...i?{bucket:i}:{},...r?{range:r}:{},mentionsTime:o}}var wr=[`today`,`yesterday`,`this_week`,`last_week`,`this_month`,`last_month`,`this_quarter`,`last_quarter`,`this_year`,`last_year`,`all_time`],Tr=[`minute`,`hour`,`day`,`week`,`month`,`quarter`,`year`],Er=[`count`,`sum`,`avg`,`min`,`max`],Dr=[`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`contains`],Or=4,kr=3,Ar=64,jr=8;function Mr(e){let t={type:`string`,maxLength:Ar};return{type:[`object`,`null`],properties:{source:e.length?{enum:[...e]}:{type:`string`,maxLength:K.maxSourceIdLength},measures:{type:`array`,maxItems:Or,items:{type:`object`,properties:{fn:{enum:[...Er]},field:t},required:[`fn`],additionalProperties:!1}},groupBy:t,bucket:{enum:[...Tr]},period:{enum:[...wr]},range:{type:`string`,maxLength:40},dateField:t,filters:{type:`array`,maxItems:kr,items:{type:`object`,properties:{field:t,op:{enum:[...Dr]},value:{type:[`string`,`number`,`boolean`]}},required:[`field`,`op`,`value`],additionalProperties:!1}},title:{type:`string`,maxLength:K.maxTitleLength}},required:[`source`],additionalProperties:!1}}var Nr=(e,t)=>typeof e==`string`&&t.includes(e)?e:void 0,Pr=(e,t=Ar)=>typeof e==`string`&&e.trim()&&e.trim().length<=t?e.trim():void 0;function Fr(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=Pr(t.source,K.maxSourceIdLength);if(!n)return null;let r=e=>t[e]!==void 0&&t[e]!==null,i=Array.isArray(t.unreadable)?t.unreadable.filter(e=>typeof e==`string`&&e.trim().length>0).slice(0,jr).map(e=>e.trim().slice(0,Ar)):[];r(`measures`)&&!Array.isArray(t.measures)&&i.push(`the measures`),r(`filters`)&&!Array.isArray(t.filters)&&i.push(`the filters`);let a=Array.isArray(t.measures)?t.measures.slice(0,Or).flatMap(e=>{let t=e&&typeof e==`object`?e:{},n=Nr(t.fn,Er);if(!n)return i.push(`a measure`),[];let r=Pr(t.field);return[{fn:n,...r?{field:r}:{}}]}):[],o=Array.isArray(t.filters)?t.filters.slice(0,kr).flatMap(e=>{let t=e&&typeof e==`object`?e:{},n=Pr(t.field),r=Nr(t.op,Dr),a=t.value;return!n||!r||!(typeof a==`string`&&a.length<=256||typeof a==`number`&&Number.isFinite(a)||typeof a==`boolean`)?(i.push(n?`the ${n} filter`:`a filter`),[]):[{field:n,op:r,value:a}]}):[];Array.isArray(t.measures)&&t.measures.length>Or&&i.push(`more than ${Or} measures`),Array.isArray(t.filters)&&t.filters.length>kr&&i.push(`more than ${kr} filters`);let s=Pr(t.groupBy),c=Nr(t.bucket,Tr),l=Nr(t.period,wr),u=Pr(t.dateField),d=Pr(t.range,40),f=Pr(t.title,K.maxTitleLength);return r(`range`)&&!d&&i.push(`the period`),r(`groupBy`)&&!s&&i.push(`the grouping`),r(`bucket`)&&!c&&i.push(`the time grouping`),r(`period`)&&!l&&i.push(`the period`),r(`dateField`)&&!u&&i.push(`the date`),{source:n,...a.length?{measures:a}:{},...s?{groupBy:s}:{},...c?{bucket:c}:{},...l?{period:l}:{},...d?{range:d}:{},...u?{dateField:u}:{},...o.length?{filters:o}:{},...f?{title:f}:{},...i.length?{unreadable:i}:{}}}var Ir=e=>e.toLowerCase().replace(/[^a-z0-9]/g,``);function Lr(e,t,n=()=>!0){let r=Ir(e),i=t.filter(n);return i.find(t=>t.name===e)??i.find(e=>Ir(e.name)===r)??i.find(e=>Ir(e.label)===r)}function Rr(e){let t=e.slice(0,6),n=e.length>t.length?`, …`:``;return t.length<=1?`${t.join(``)}${n}`:`${t.slice(0,-1).join(`, `)}${n} or ${t[t.length-1]}`}var $=e=>({ok:!1,question:e}),zr=e=>e.options.length?{ok:!1,question:e.prompt,followUp:{...e,default:e.options[0].value}}:{ok:!1,question:e.prompt.replace(/…$/,` what?`)},Br=8;function Vr(e){let t=e=>(e.amountField?2:0)+ +!!e.dateField;return[...e].sort((e,n)=>t(n)-t(e))}function Hr(e){let t=Vr(e).slice(0,Br);return t.length?{field:`source`,label:`Records`,prompt:`Which records should the report cover?`,options:t.map(e=>({value:e.id,label:e.label,apply:{source:e.id}})),default:t[0].id}:null}function Ur(e){return e.length?`Which records should the report cover?`:`Which records should the report cover? Add a recipe with records first, such as invoicing?`}var Wr={minute:`minute`,minutely:`minute`,hour:`hour`,hourly:`hour`,day:`day`,daily:`day`,week:`week`,weekly:`week`,month:`month`,monthly:`month`,quarter:`quarter`,quarterly:`quarter`,year:`year`,yearly:`year`,annual:`year`,annually:`year`},Gr=new Set([`by`,`per`,`the`,`each`,`every`,`a`,`over`,`time`,`date`,`dates`,`in`]);function Kr(e){let t=e.replace(/([a-z])([A-Z])/g,`$1 $2`).toLowerCase().split(/[^a-z0-9]+/).filter(Boolean),n,r=!1,i=[];for(let e of t){let t=e.endsWith(`s`)?e.slice(0,-1):e,a=Wr[e]??Wr[t];a?(n??=a,r=!0):Gr.has(e)?(e===`date`||e===`dates`||e===`time`)&&(r=!0):i.push(e)}return{...n?{bucket:n}:{},rest:i.join(` `),time:r}}var qr=[{value:`this month`,label:`This month`},{value:`last month`,label:`Last month`},{value:`this quarter`,label:`This quarter`},{value:`last quarter`,label:`Last quarter`},{value:`this year`,label:`This year`},{value:`last year`,label:`Last year`},{value:`all time`,label:`All time`}];function Jr(e,t,n){let r=e=>e.replace(/([a-z\d])([A-Z])/g,`$1_$2`).toLowerCase().replace(/[^a-z0-9_]+/g,`_`);return(e===`count`||!t?`number_of_${r(n)}`:e===`sum`?r(t).startsWith(`total`)?r(t):`total_${r(t)}`:`${{avg:`average`,min:`lowest`,max:`highest`}[e]}_${r(t)}`).slice(0,K.maxAliasLength).replace(/_+$/,``)}var Yr={eq:`is`,ne:`is not`,gt:`over`,gte:`at least`,lt:`under`,lte:`at most`,contains:`contains`},Xr=/^-?\s*[$€£¥]?\s*-?(\d{1,3}(,\d{3})+|\d+)(\.\d{1,2})?$/;function Zr(e){if(typeof e==`number`)return Number.isFinite(e)?Math.round(e*100):null;if(typeof e!=`string`)return null;let t=e.trim();if(!Xr.test(t))return null;let n=Number(t.replace(/[^0-9.-]/g,``));return Number.isFinite(n)?Math.round(n*100):null}var Qr=e=>e.type===`integer`||e.type===`decimal`;function $r(e,t,n,r=``){let i=t.find(t=>t.id===e.source);if(!i){let e=Hr(t);return e?{ok:!1,question:e.prompt,followUp:e}:$(Ur(t))}let a=ir(t,i.id),{fields:o}=a,s=i.label,c=e=>o.find(t=>t.name===e)?.label??e;if(e.unreadable?.length)return $(`I could not read ${Rr(e.unreadable).replace(/ or ([^,]+)$/,` and $1`)} for the ${s} report. Can you say that again?`);let l=Cr(r,n),u=e.measures?.length?e.measures:[{fn:`count`},...i.amountField?[{fn:`sum`,field:i.amountField}]:[]],d=[];for(let[e,t]of u.entries()){if(t.fn===`count`){d.some(e=>e.fn===`count`)||d.push({fn:`count`,as:Jr(`count`,void 0,i.id)});continue}let n=t.field??i.amountField,r=n?Lr(n,o,e=>t.fn===`min`||t.fn===`max`?Qr(e)||e.type===`datetime`:Qr(e)):void 0;if(!r){let n=o.filter(e=>Qr(e)&&e.name!==`id`);if(!n.length)return $(`${s} have no amounts to total. Should I count them instead?`);let r=[...n.filter(e=>e.name===i.amountField),...n.filter(e=>e.format===`money`&&e.name!==i.amountField),...n.filter(e=>e.format!==`money`)].slice(0,Br);return zr({field:`measure`,label:t.fn===`sum`?`Total`:`Amount`,prompt:`Which amount on ${s} should I ${t.fn===`sum`?`total`:`take the ${t.fn} of`}?`,options:r.map(n=>({value:n.name,label:n.label,apply:{measures:u.map((r,i)=>i===e?{fn:t.fn,field:n.name}:r)}}))})}d.push({fn:t.fn,field:r.name,as:Jr(t.fn,r.name,i.id)})}let f=e.groupBy,p=e.dateField,m=e.bucket;if(f){let e=Kr(f),t=Lr(f,o,e=>e.type===`datetime`);if(t)p??=t.name,m??=`month`,f=void 0;else if(e.time){let t=e.rest?Lr(e.rest,o,e=>e.type===`datetime`):void 0;(!e.rest||t)&&(t&&(p??=t.name),m??=e.bucket??l.bucket??`month`,f=void 0)}}m??=l.bucket;let h=null;if(e.range){if(h=Sr(e.range,n),!h&&!/\ball\s*time\b|\bever\b/i.test(e.range))return zr({field:`period`,label:`Period`,prompt:`Which period should the ${s} report cover?`,options:qr.map(e=>({...e,apply:{range:e.value,period:void 0}}))})}else e.period&&e.period!==`all_time`?h=Sr(e.period,n):e.period||(h=l.range??null);let g;if((m||h)&&(g=p?Lr(p,o,e=>e.type===`datetime`):a.defaultTimeField?o.find(e=>e.name===a.defaultTimeField):void 0,!g)){let e=a.timeFields.slice(0,Br);return e.length?zr({field:`dateField`,label:`Date`,prompt:`Which date on ${s} should the report use?`,options:e.map(e=>({value:e,label:c(e),apply:{dateField:e}}))}):$(`${s} have no date to group or filter by. Should the report cover all of them?`)}let _=[];if(f){let e=new Set(a.dimensions),t=Lr(f,o,t=>e.has(t.name))??Lr(f,o,e=>e.type!==`datetime`);if(t)_.push({field:t.name});else if(!(m&&g))return zr(ei(a,s,c,l.mentionsTime))}m&&g&&_.push({field:g.name,bucket:m});let v=[];h&&g&&(v.push({field:g.name,op:`gte`,value:h.from}),v.push({field:g.name,op:`lt`,value:h.to}));let y=[];for(let t of e.filters??[]){let e=Lr(t.field,o);if(!e)return $(`Which field on ${s} should "${t.field}" filter: ${Rr(o.map(e=>e.label))}?`);if(e.format===`money`){let n=Zr(t.value);if(n===null)return $(`What amount should ${e.label} be compared with?`);v.push({field:e.name,op:t.op,value:n}),y.push(`${e.label} ${Yr[t.op]} ${(n/100).toFixed(2)}`)}else v.push({field:e.name,op:t.op,value:t.value}),y.push(`${e.label} ${Yr[t.op]} ${String(t.value)}`)}let b=e.title??[[s,..._.map(e=>e.bucket?`by ${e.bucket}`:`by ${c(e.field).toLowerCase()}`)].join(` `),h?.label??``].filter(Boolean).join(`, `),x=y.join(`; `)||void 0,S=e=>e.measures.map(e=>e.as);try{let e=On({title:b,...x?{description:x}:{},source:i.id,dimensions:_,measures:d,filters:v}),t=e.measures.filter(e=>e.fn!==`count`),n=(t[0]??e.measures[0]).as,r=e.dimensions.find(e=>e.bucket),a=e.dimensions.find(e=>!e.bucket);return{ok:!0,spec:On({...e,sort:a&&!r?[{by:n,direction:`desc`}]:[],chart:e.dimensions.length?{type:r&&!a?`line`:`bar`,x:(a??r)?.as,y:t.length?t.map(e=>e.as):S(e)}:{type:`stat`,y:S(e)}}),source:i}}catch(e){if(e instanceof q)return $(`I could not build that report (${e.message}). What should it show?`);throw e}}function ei(e,t,n,r){let i=e.defaultTimeField,a=i?[`month`,`week`,`quarter`].map(e=>({value:`${i}:${e}`,label:`${n(i)} by ${e}`,keywords:[`${e}ly`,`date`,`time`,`per`,e],apply:{groupBy:void 0,bucket:e,dateField:i}})):[],o=e.dimensions.map(e=>({value:e,label:n(e),apply:{groupBy:e}})),s=r?[...a,...o]:[...o.slice(0,4),...a.slice(0,1),...o.slice(4),...a.slice(1)];return{field:`groupBy`,label:`Group by`,prompt:`Group ${t} by…`,options:s.slice(0,Br)}}function ti(e,t){return e.code===`invalid_value`?`That value does not fit ${t.label} (${e.message}). What value did you mean?`:e.code===`invalid_operation`?`I cannot use that on ${t.label} (${e.message}). What should the report show instead?`:`I could not build that report (${e.message}). What should it show?`}export{Et as C,At as S,en as _,$r as a,Ut as b,ir as c,mr as d,jn as f,rn as g,an as h,Hr as i,On as l,on as m,ti as n,Ur as o,An as p,Mr as r,q as s,Fr as t,Sr as u,Jt as v,Wt as x,Gt as y};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$ as e,B as t,Ct as n,D as r,Dt as i,E as a,Et as o,F as s,Ft as c,G as l,H as u,J as d,L as f,Lt as p,Ot as m,Pt as h,R as g,U as _,W as v,X as y,Y as b,Z as x,_ as S,a as C,b as w,bt as T,ct as E,d as D,ft as O,g as k,gt as A,h as j,ht as M,kt as N,m as P,mt as F,n as I,nt as L,o as R,p as ee,pt as z,q as B,s as V,st as H,tt as U,v as W,vt as G,wt as K,x as q,y as J}from"./DG3qFFTE.js";import"./xihTtKlq.js";import{i as Y,t as te}from"./YUSKx8_q.js";import{n as X,t as ne}from"./DK8Blf1Y.js";import{_ as re,a as ie,b as ae,c as oe,d as se,f as ce,g as le,h as ue,i as de,l as fe,m as pe,n as Z,o as me,p as he,s as ge,u as _e,v as ve,x as ye,y as be}from"./DF-0MxNw.js";var xe=[`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`,`audio/ogg;codecs=opus`],Q=class extends Error{dictationKind;code;constructor(e,t,n){super(t),this.name=`DictationError`,this.dictationKind=e,this.code=n??e}},Se=3e3;function Ce(e,t){return new Q(e,t)}function we(){return typeof MediaRecorder<`u`&&typeof navigator<`u`&&typeof navigator.mediaDevices?.getUserMedia==`function`}function Te(e=xe){if(typeof MediaRecorder>`u`)return``;let t=typeof MediaRecorder.isTypeSupported==`function`?e=>MediaRecorder.isTypeSupported(e):()=>!1;return e.find(e=>t(e))??``}var Ee=(e={})=>{let t=e.maxDurationMs??12e4,n=e.maxBytes??10485760,r=new Set,i=null,a=null,o=[],s=0,c=0,l=0,u=null,d=!1,f=!1,p=!1,m=null,h=null,g=e=>{for(let t of r)try{t(e)}catch{}},_=()=>{u&&clearTimeout(u),u=null;for(let e of i?.getTracks()??[])e.stop();i=null},v=()=>{if(l||=Date.now(),a&&a.state!==`inactive`)try{a.stop()}catch{h?.()}else h?.();_()};return{async start(){if(!we())throw Ce(`unsupported`,`This browser cannot record audio (no MediaRecorder).`);if(i=await navigator.mediaDevices.getUserMedia(e.constraints??{audio:!0}),p){_();return}let r=Te(e.mimeTypes);try{a=r?new MediaRecorder(i,{mimeType:r}):new MediaRecorder(i)}catch(e){throw _(),e}m=new Promise(e=>{h=e}),a.addEventListener(`dataavailable`,e=>{e.data&&e.data.size!==0&&!p&&(o.push(e.data),s+=e.data.size,s>n&&!f&&(f=!0,o=[],g(`size`),v()))}),a.addEventListener(`stop`,()=>h?.()),a.addEventListener(`error`,()=>v()),a.start(1e3),c=Date.now(),u=setTimeout(()=>{d=!0,g(`time`),v()},t)},async stop(){if(!a)throw _(),Ce(`unsupported`,`Recording never started.`);v();let t;await Promise.race([m,new Promise(e=>{t=setTimeout(e,Se)})]),t&&clearTimeout(t);let r=a.mimeType||Te(e.mimeTypes),i={audio:new Blob(o,r?{type:r}:void 0),mimeType:r||`audio/webm`,durationMs:Math.max(0,(l||Date.now())-c),reachedTimeLimit:d};if(o=[],f||i.audio.size>n)throw Ce(`too-long`,`The recording is too large to send.`);return i},cancel(){p=!0,o=[],v()},onLimit(e){return r.add(e),()=>r.delete(e)}}};b([`click`,`change`]);var De=l(`<span class="required svelte-5fecqg" aria-hidden="true">*</span>`),Oe=l(`<label class="smrt-field-label svelte-5fecqg" data-smrt-component="FieldLabel"> <!></label>`),ke=l(`<span class="smrt-field-label svelte-5fecqg" data-smrt-component="FieldLabel"> <!></span>`);function Ae(e,n){let r=C(n,`required`,3,!1);var i=v(),a=z(i),o=e=>{var i=Oe(),a=O(i,!0),o=M(a),s=e=>{var t=De();_(e,t)};t(o,e=>{r()&&e(s)}),c(i),H(()=>{W(i,`id`,n.id),W(i,`for`,n.for),u(a,n.label)}),_(e,i)},s=e=>{var i=ke(),a=O(i,!0),o=M(a),s=e=>{var t=De();_(e,t)};t(o,e=>{r()&&e(s)}),c(i),H(()=>{W(i,`id`,n.id),u(a,n.label)}),_(e,i)};t(a,e=>{n.for?e(o):e(s,-1)}),_(e,i)}var je=l(`<input type="hidden" class="svelte-jccarb"/>`),Me=l(`<button type="button" role="option"><!></button>`),Ne=l(`<div class="options svelte-jccarb" role="listbox"></div>`),Pe=l(`<div class="options empty svelte-jccarb" aria-hidden="true"> </div>`),Fe=l(`<div class="sr-status svelte-jccarb" role="status" aria-live="polite"> </div>`),Ie=l(`<div data-smrt-component="Combobox"><!> <!> <input role="combobox" autocomplete="off" aria-autocomplete="list" class="svelte-jccarb"/> <!> <!></div>`);function Le(r,o){let l=B();m(o,!0);let p=C(o,`value`,15,``),h=C(o,`disabled`,3,!1),g=C(o,`required`,3,!1),b=C(o,`allowCustom`,3,!1),k=C(o,`filter`,3,!0),j=C(o,`busy`,3,!1),N=C(o,`invalid`,3,!1),P=C(o,`class`,3,``),I=`smrt-combobox-${l}`,R=`${I}-list`,ee=ve(),V=T(null),U=T(null),K=T(!1),q=L(()=>p());function J(e){if(!e)return``;let t=o.options.find(t=>String(t.value)===e);return t?t.label:o.valueLabel?o.valueLabel:b()?e:``}let Y=T(A(L(()=>J(p())))),te=T(!1),X=T(0),ne=n(()=>e(te)&&k()?o.options.filter(t=>t.label.toLowerCase().includes(e(Y).toLowerCase())):o.options),re=n(()=>o.interaction===!1?void 0:o.interaction?.id??o.name??I);function ie(t,n=!1){if(t.disabled||h())return;let r=String(t.value)!==p();p(String(t.value)),G(Y,t.label,!0),G(te,!1),G(K,!1),o.onvaluechange?.(p()),n&&r&&(le(ee,e(re),o.interaction===!1?void 0:o.interaction?.subject),e(V)&&be(e(V)))}function oe(e){let t=String(e??``),n=ge(o.options,t,!0);n?ie(n):b()&&(p(t),G(Y,t,!0),G(te,!1),o.onvaluechange?.(t))}function se(e){let t=_e(e),n=ge(o.options,t,!0);return n?String(n.value):(b(),t)}function ce(){if(e(K))return;G(K,!0),G(te,!1);let t=o.options.findIndex(e=>String(e.value)===p());G(X,t>=0?t:0,!0),o.onquery?.(``)}function de(){G(K,!1),G(te,!1)}function fe(t){G(Y,t.currentTarget.value,!0),G(te,!0),G(K,!0),G(X,0),o.onquery?.(e(Y)),b()&&(p(e(Y)),o.onvaluechange?.(p()))}function pe(t){if(t.key===`ArrowDown`){if(t.preventDefault(),!e(K)){ce();return}let n=e(ne).map((e,t)=>e.disabled?-1:t).filter(e=>e>=0),r=n.indexOf(e(X));G(X,n[(r+1)%n.length]??0,!0)}else if(t.key===`ArrowUp`){t.preventDefault();let n=e(ne).map((e,t)=>e.disabled?-1:t).filter(e=>e>=0),r=n.indexOf(e(X));G(X,n[(r-1+n.length)%n.length]??0,!0)}else t.key===`Enter`&&e(K)&&e(ne)[e(X)]?(t.preventDefault(),ie(e(ne)[e(X)],!0)):t.key===`Escape`&&de()}E(()=>{e(X)>=e(ne).length&&G(X,0)}),E(()=>{let t=e(U)?.form;if(!t)return;let n=!1,r=new Set,i=t=>{let i=p(),a=e(Y),s=setTimeout(()=>{r.delete(s),!(n||t.defaultPrevented||p()!==i||e(Y)!==a)&&(p(q),G(Y,J(q),!0),G(te,!1),G(K,!1),le(ee,e(re),o.interaction===!1?void 0:o.interaction?.subject),o.onvaluechange?.(p()))});r.add(s)};return t.addEventListener(`reset`,i),()=>{n=!0,t.removeEventListener(`reset`,i);for(let e of r)clearTimeout(e)}}),E(()=>{if(!e(K))return;let t=t=>{e(V)&&!e(V).contains(t.target)&&de()},n=t=>{e(V)&&!e(V).contains(t.target)&&de()};return document.addEventListener(`pointerdown`,t,!0),document.addEventListener(`focusin`,n,!0),()=>{document.removeEventListener(`pointerdown`,t,!0),document.removeEventListener(`focusin`,n,!0)}}),E(()=>{let t=J(p());e(te)||G(Y,t,!0)}),E(()=>{e(U)&&e(U).setCustomValidity(g()&&!h()&&!p()&&e(Y).trim()!==``?`Choose an option from the list.`:``)}),ue(()=>{let t=e(V),n=e(U);return!t||!n||o.interaction===!1?!1:{controlId:e(re),subject:o.interaction?.subject,metadata:{kind:`combobox`,label:o.label,description:o.interaction?.description,sensitivity:o.interaction?.sensitivity??`public`,readable:o.interaction?.readable,writable:o.interaction?.writable,constraints:{required:g()},options:o.options},getValue:()=>p(),prepareValue:se,setValue:oe,clear:()=>(p(``),G(Y,``),o.onvaluechange?.(``),!0),focus:()=>n.focus(),reveal:()=>ye(t),highlight:e=>ae(t,e),validate:()=>n.reportValidity(),validateValue:e=>{let t=String(e??``),n=ge(o.options,t,!0);return n?n.disabled!==!0:b()&&(!g()||t.length>0)},getState:()=>({disabled:n.matches(`:disabled`),valid:n.validity.valid,validationMessage:n.validationMessage||void 0})}});var Z=Ie(),me=O(Z);Ae(me,{get for(){return I},get label(){return o.label},get required(){return g()}});var he=M(me,2),xe=e=>{var t=je();S(t),H(()=>{W(t,`name`,o.name),w(t,p()),t.disabled=h()}),_(e,t)};t(he,e=>{o.name&&e(xe)});var Q=M(he,2);S(Q),D(Q,e=>G(U,e),()=>e(U));var Se=M(Q,2),Ce=n=>{var r=Ne();f(r,23,()=>e(ne),e=>e.value,(n,r,i)=>{var l=Me();let f;var m=O(l),h=t=>{var n=v(),i=z(n);s(i,()=>o.optionContent,()=>e(r)),_(t,n)},g=t=>{var n=d();H(()=>u(n,e(r).label)),_(t,n)};t(m,e=>{o.optionContent?e(h):e(g,-1)}),c(l),H(t=>{W(l,`id`,`${R}-${e(i)}`),W(l,`aria-selected`,t),l.disabled=e(r).disabled,f=a(l,1,`svelte-jccarb`,null,f,{active:e(i)===e(X)})},[()=>String(e(r).value)===p()]),y(`pointerdown`,l,e=>e.preventDefault()),y(`click`,l,()=>ie(e(r),!0)),_(n,l)}),c(r),H(()=>W(r,`id`,R)),_(n,r)},we=e=>{var t=Pe(),n=F(t,!0);H(()=>u(n,o.status)),_(e,t)};t(Se,t=>{e(K)&&e(ne).length?t(Ce):e(K)&&o.status&&t(we,1)});var Te=M(Se,2),Ee=t=>{var n=Fe(),r=F(n,!0);H(()=>u(r,e(K)?o.status:``)),_(t,n)};t(Te,e=>{o.status!==void 0&&e(Ee)}),c(Z),D(Z,e=>G(V,e),()=>e(V)),H(()=>{a(Z,1,`combobox ${P()??``}`,`svelte-jccarb`),W(Z,`data-smrt-control`,e(re)),W(Z,`data-smrt-form`,ee?.formId),W(Z,`data-smrt-subject-type`,o.interaction===!1?void 0:o.interaction?.subject?.type),W(Z,`data-smrt-subject-id`,o.interaction===!1?void 0:o.interaction?.subject?.id),W(Q,`id`,I),W(Q,`placeholder`,o.placeholder),Q.disabled=h(),Q.required=g()&&!p(),W(Q,`aria-required`,g()?`true`:void 0),w(Q,e(Y)),W(Q,`aria-expanded`,e(K)),W(Q,`aria-controls`,R),W(Q,`aria-busy`,j()?`true`:void 0),W(Q,`aria-invalid`,N()?`true`:void 0),W(Q,`aria-describedby`,o.describedby),W(Q,`aria-activedescendant`,e(K)&&e(ne)[e(X)]?`${R}-${e(X)}`:void 0)}),x(`focus`,Q,ce),y(`click`,Q,ce),y(`input`,Q,fe),y(`keydown`,Q,pe),_(r,Z),i()}b([`click`,`input`,`keydown`,`pointerdown`]);var Re=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`value`,`disabled`,`required`,`name`,`class`,`interaction`,`children`,`aria-label`,`aria-describedby`,`aria-invalid`,`density`]),ze=l(`<select><!></select>`);function Be(t,r){m(r,!0);let a=C(r,`value`,15,``),o=C(r,`disabled`,3,!1),c=C(r,`required`,3,!1),l=C(r,`class`,3,``),u=R(r,Re),d=ie(),f=ve(),p=T(null),h=n(()=>r.id??d?.().inputId),g=n(()=>r[`aria-describedby`]??d?.().describedBy),y=n(()=>r[`aria-invalid`]??(d?.().invalid?`true`:void 0)),b=n(()=>{let e=d?.().interaction;return r.interaction===!1||e===!1?!1:{...e??{},...r.interaction??{}}}),x=n(()=>e(b)===!1?void 0:e(b).id??r.name??e(h));function S(t){a(String(t??``)),e(p)&&be(e(p))}function w(e){return e.disabled||e.closest(`optgroup`)?.disabled===!0}function E(t){let n=e(p);if(!n)return!0;let r=String(t??``);return r===``?!c():Array.from(n.options).some(e=>e.value===r&&!w(e))}ue(()=>{let t=e(p),n=e(x),i=e(b);return!t||!n||i===!1?!1:{controlId:n,subject:i.subject,metadata:{kind:`select`,label:d?.().label??r[`aria-label`]??void 0,description:i.description??d?.().description,sensitivity:i.sensitivity??`public`,readable:i.readable,writable:i.writable,constraints:{required:c()===!0},options:Array.from(t.options).map(e=>({value:e.value,label:e.label,disabled:w(e)}))},getValue:()=>a(),prepareValue:_e,setValue:S,clear:()=>(S(``),!0),focus:()=>t.focus(),reveal:()=>ye(t),highlight:e=>ae(t,e),validate:()=>t.reportValidity(),validateValue:E,getState:()=>({disabled:t.matches(`:disabled`),valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});function A(){e(p)?.focus()}function j(){return e(p)}var M={focus:A,getElement:j},N=ze();return k(N,()=>({id:e(h),disabled:o(),required:c(),name:r.name,"aria-label":r[`aria-label`],"aria-describedby":e(g),"aria-invalid":e(y),"data-density":r.density,class:`smrt-select__root ${l()??``}`,"data-smrt-control":e(x),"data-smrt-form":f?.formId,"data-smrt-subject-type":e(b)===!1?void 0:e(b).subject?.type,"data-smrt-subject-id":e(b)===!1?void 0:e(b).subject?.id,...u,"data-smrt-component":`Select`}),void 0,void 0,void 0,`svelte-vy6n12`),P(N,()=>{var e=O(N),t=v(),n=z(t);s(n,()=>r.children),_(e,t)}),D(N,e=>G(p,e),()=>e(p)),q(N,a),_(t,N),i(M)}var Ve=new Set([`$$slots`,`$$events`,`$$legacy`,`value`,`options`,`placeholder`,`readOnly`,`disabled`,`freeText`,`locale`,`name`,`form`,`label`,`id`,`required`]),He=l(`<option> </option>`),Ue=l(`<option> </option> <!> <!>`,1),We=l(`<!> <!> <!>`,1);function Ge(r,a){let o=B();m(a,!0);let s=C(a,`value`,15,``),c=C(a,`options`,19,()=>[]),l=C(a,`placeholder`,3,`—`),d=C(a,`readOnly`,3,!1),p=C(a,`disabled`,3,!1),h=C(a,`freeText`,3,!1),v=R(a,Ve),y=`${o}-label`,b=n(()=>a.id??`${o}-control`),x=n(()=>a.label?{id:e(b),"aria-labelledby":y}:{id:a.id}),S=T(void 0),w=T(void 0),E=n(()=>c().filter(e=>e.value!==``)),O=n(()=>s()!==``&&!e(E).some(e=>e.value===s())),k=n(()=>v);function A(){(h()?e(w):e(S))?.focus()}function j(){return(h()?e(w):e(S))?.getElement()??null}var N={focus:A,getElement:j},P=We(),I=z(P),L=t=>{Ae(t,{get id(){return y},get for(){return e(b)},get label(){return a.label},get required(){return a.required}})};t(I,e=>{a.label&&e(L)});var ee=M(I,2),U=t=>{{let r=n(()=>p()||d());D(Z(t,V(()=>e(k),()=>e(x),{get required(){return a.required},type:`text`,get name(){return a.name},get form(){return a.form},get placeholder(){return l()},get disabled(){return e(r)},get value(){return s()},set value(e){s(e)}})),e=>G(w,e,!0),()=>e(w))}},W=r=>{{let i=n(()=>p()||d());D(Be(r,V(()=>v,()=>e(x),{get required(){return a.required},get name(){return a.name},get form(){return a.form},get disabled(){return e(i)},get value(){return s()},set value(e){s(e)},children:(n,r)=>{var i=Ue(),a=z(i),o=F(a,!0);a.value=a.__value=``;var c=M(a,2),d=e=>{var t=He(),n=F(t,!0),r={};H(()=>{u(n,s()),r!==(r=s())&&(t.value=(t.__value=r)??``)}),_(e,t)};t(c,t=>{e(O)&&t(d)});var p=M(c,2);f(p,17,()=>e(E),g,(t,n)=>{var r=He(),i=F(r,!0),a={};H(()=>{r.disabled=e(n).disabled,u(i,e(n).label??e(n).value),a!==(a=e(n).value)&&(r.value=(r.__value=a)??``)}),_(t,r)}),H(()=>u(o,l())),_(n,i)},$$slots:{default:!0}})),e=>G(S,e,!0),()=>e(S))}};t(ee,e=>{h()?e(U):e(W,-1)});var K=M(ee,2),q=e=>{Z(e,{get id(){return o},type:`hidden`,get name(){return a.name},get form(){return a.form},get value(){return s()},get disabled(){return p()},interaction:!1})};return t(K,e=>{d()&&e(q)}),_(r,P),i(N)}`AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW`.split(` `);function Ke(e,t){try{return new Intl.DisplayNames(e,{type:t})}catch{return new Intl.DisplayNames(`en`,{type:t})}}var qe=new Set([`BOV`,`CHE`,`CHW`,`CLF`,`COU`,`MXV`,`USN`,`USS`,`UYI`,`UYW`,`XAG`,`XAU`,`XPD`,`XPT`,`XBA`,`XBB`,`XBC`,`XBD`,`XDR`,`XSU`,`XUA`,`XTS`,`XXX`]);function Je(e){let t=Ke(e,`currency`);return[...ne.keys()].filter(e=>!qe.has(e)).sort().flatMap(e=>{let n=t.of(e);return!n||n===e?[]:[{value:e,label:`${e} — ${n}`}]})}var Ye=new Set([`$$slots`,`$$events`,`$$legacy`,`value`,`options`,`locale`]);function Xe(t,r){m(r,!0);let a=C(r,`value`,15,``),o=C(r,`locale`,3,`en`),s=R(r,Ye),c=T(void 0),l=n(()=>r.options??Je(o()));function u(){e(c)?.focus()}function d(){return e(c)?.getElement()??null}var f={focus:u,getElement:d};return D(Ge(t,V(()=>s,{get options(){return e(l)},get value(){return a()},set value(e){a(e)}})),e=>G(c,e,!0),()=>e(c)),i(f)}var Ze=new WeakMap,Qe=Symbol(`smrt.localGestureBatchExecutor`),$e=new WeakMap,et=typeof Event>`u`?void 0:Object.getOwnPropertyDescriptor(Event.prototype,`isTrusted`)?.get,tt=typeof Event>`u`?void 0:Object.getOwnPropertyDescriptor(Event.prototype,`eventPhase`)?.get;function nt(e){let t=Object.getOwnPropertyDescriptor(e,`isTrusted`);if(!(!tt||Object.hasOwn(e,`eventPhase`)||et&&t||!et&&(!t||t.configurable||t.writable)))try{return{isTrusted:et?!!et.call(e):!!(t&&`get`in t?t.get?.call(e):t?.value),eventPhase:Number(tt.call(e))}}catch{return}}function rt(e){let t=`stage`,n={formId:``,controlId:``};try{t=e.action}catch{}try{let t=e.identity;n={formId:t.formId,controlId:t.controlId,...t.subject?{subject:{type:t.subject.type,id:t.subject.id,...t.subject.label===void 0?{}:{label:t.subject.label}}}:{}}}catch{}return{ok:!1,action:t,identity:n,reason:`command_failed`}}function it(e){try{return $(e)}catch{return}}function at(e,t,n){return ot(e,[t],n).then(e=>e.results[0])}async function ot(e,t,n){let r=it(t);if(!r)return{ok:!1,results:t.map(rt)};let i=Ze.get(e)??e[Qe];if(!i){let t=$e.get(e)??new WeakSet;$e.set(e,t);let i=nt(n);if(!i?.isTrusted||i.eventPhase===0||t.has(n))return{ok:!1,results:r.map(e=>({ok:!1,action:e.action,identity:$(e.identity),reason:`local_gesture_required`}))};t.add(n);let a=[];for(let t of r)a.push(await e.execute(t,{source:`user`,confirmed:!0,localGesture:!0}));return{ok:a.every(e=>e.ok),results:a}}return i(e,r,n)}function st(e){return JSON.stringify([e.formId,e.controlId,e.subject?.type??null,e.subject?.id??null])}function ct(e){return[`stage`,`apply`,`discard`,`clear`,`undo`].includes(e)}function lt(e){return e.metadata.sensitivity===`secret`}function ut(e){return!!(e.setValueWithContext||e.setValue)}function dt(e,t,n){return e.setValueWithContext?e.setValueWithContext(t,n):e.setValue?.(t)}function ft(e){let t=e.metadata.capabilities,n=t?[...t]:[];return t||(n.push(`explain`),e.getValue&&e.metadata.readable!==!1&&n.push(`read`),e.focus&&n.push(`focus`),e.reveal&&n.push(`reveal`),e.highlight&&n.push(`highlight`),e.validate&&n.push(`validate`),ut(e)&&(n.push(`discard`),e.metadata.writable!==!1&&n.push(`stage`,`apply`,`undo`)),(e.clear||ut(e))&&e.metadata.writable!==!1&&n.push(`clear`)),n.filter(t=>t===`read`?!lt(e):t===`discard`||!ct(t)||!lt(e)&&e.metadata.writable!==!1)}function pt(e){return lt(e)||e.metadata.sensitivity===`sensitive`||e.metadata.readable===!1}function mt(e,t,n,r){if(!ct(e.action))return{allowed:!0};if(e.action!==`discard`){if(n.metadata.sensitivity===`secret`)return{allowed:!1,reason:`sensitive_control`};if(n.metadata.writable===!1)return{allowed:!1,reason:`control_not_writable`};if(n.state.disabled||n.state.readonly)return{allowed:!1,reason:`control_not_editable`}}return t.source===`agent`&&e.action!==`stage`?{allowed:!1,reason:`human_confirmation_required`}:[`apply`,`discard`,`clear`,`undo`].includes(e.action)&&!r?{allowed:!1,reason:`local_gesture_required`}:e.action!==`stage`&&!t.confirmed?{allowed:!1,reason:`consent_required`}:{allowed:!0}}function $(e){try{return structuredClone(e)}catch{if(e===void 0)return e;let t=JSON.stringify(e,(e,t)=>{if(typeof t==`function`||typeof t==`symbol`||typeof t==`bigint`)throw new DOMException(`Value is not cloneable`,`DataCloneError`);return t});if(t===void 0)throw new DOMException(`Value is not cloneable`,`DataCloneError`);return JSON.parse(t)}}function ht(e){try{return $(e)}catch{return}}function gt(e,t){if(Object.is(e,t))return!0;try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}}function _t(e,t){if(!t)return!1;let n=e.getUserEditSnapshot?.();return n!==void 0&&n.revision!==t.revision}async function vt(e,t,n,r){let i=$(e.getUserEditSnapshot?.())??null,a=n&&i&&i.revision!==n.revision?$(i.value):t;for(let t=0;t<8;t+=1){e.restoreValue?await r(t=>e.restoreValue?.(a,t)):await r(t=>dt(e,a,t));let n=$(e.getUserEditSnapshot?.())??null;if(!i||!n||n.revision===i.revision)return;if(i=n,a=$(n.value),t===7){e.restoreValue?await r(t=>e.restoreValue?.(a,t)):ut(e)&&await r(t=>dt(e,a,t));return}}}function yt(e){return[`stale_revision`,`staged_value_stale`,`no_staged_value`,`staged_value_invalid`,`staged_value_rejected`,`nothing_to_undo`,`sensitive_control`].includes(e)?e:`command_failed`}async function bt(e,t,n){if(!e.validateValue)return{};let r=await e.validateValue($(t),n);return typeof r==`boolean`?{valid:r}:typeof r==`string`?{valid:!1,validationMessage:r}:{valid:r.valid,validationMessage:r.message}}function xt(e={}){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=new WeakMap,s=new Map,c=new Set,l=e.now??Date.now,u=new WeakMap,d=new WeakSet,f=new WeakSet,p=new Map,m=new Map,h=0,g=(e,t)=>({...t,getUserEditSnapshot:()=>t.getUserEditSnapshot?.()??a.get(e)??{revision:0,value:t.getValue?.()}}),_=(e,n)=>{m.set(e,(m.get(e)??0)+1);let r=t=>{let n=(t.get(e)??1)-1;n===0?t.delete(e):t.set(e,n)},i={execute(n,r={source:`agent`}){if(ct(n.action)&&st(n.identity)===e){let r=t.get(e);return Promise.resolve(C(n,!1,r,r&&pt(r)?`command_failed`:`reentrant_mutation`))}return w.execute(n,r)}},a;try{a=n(i)}catch(e){throw r(m),e}return r(m),a},v=async(e,r,i)=>{let a=t.get(e),s=n.get(e);if(!a||!s||s===r)return!1;let c=g(e,a),l=o.get(s)??{value:i,userEdit:{revision:0,value:$(i)}};return await vt(c,$(l.value),$(l.userEdit),t=>_(e,t)),!0},y=(e,t)=>{let n=(p.get(e)??Promise.resolve()).catch(()=>void 0).then(t),r=n.then(()=>void 0,()=>void 0);return p.set(e,r),r.finally(()=>{p.get(e)===r&&p.delete(e)}),n},b=async(e,t,n,r,i,a)=>{let o={registration:t,generation:n,previousValue:$(r),immediateValue:$(r),previousUserEdit:$(i)};try{s.set(e,o);let n=_(e,a);return o.immediateValue=$(t.getValue?.()),await n}finally{s.get(e)===o&&s.delete(e)}},x=e=>{let t={...e,timestamp:l()};for(let e of c)try{e($(t))}catch{}},S=e=>{let t=st(e.identity),n=pt(e),i=r.get(t),a=i?!gt(i.baseValue,e.getValue?.()):!1,o=e.getState?.(),s=i&&!lt(e)&&e.metadata.writable!==!1?{value:n?void 0:$(i.value),valueRedacted:n,provenance:{...i.provenance},stagedAt:i.stagedAt,revision:i.revision,stale:a,valid:i.valid,validationMessage:n?void 0:i.validationMessage}:void 0,c=n?void 0:e.getValue?.(),l=n?void 0:ht(c);return{identity:$(e.identity),metadata:{...e.metadata,capabilities:ft(e),constraints:e.metadata.constraints?{...e.metadata.constraints}:void 0,options:e.metadata.options?.map(e=>({...e})),...e.metadata.valueSchema?{valueSchema:$(e.metadata.valueSchema)}:{}},state:{...o,validationMessage:n?void 0:o?.validationMessage,value:l,valueRedacted:n||c!==void 0&&l===void 0,...s?{stagedValue:s.value,stagedValueRedacted:s.valueRedacted,staged:s}:{}}}},C=(e,t,n,r)=>{let i;try{i=n?S(n):void 0}catch{}return{ok:t,action:e.action,identity:$(e.identity),snapshot:i,reason:r}},w={register(e){let c=st(e.identity),l={};return L(()=>{try{let t=$(e.getValue?.()),r=s.get(c),i=$(e.getUserEditSnapshot?.()??a.get(c)),u=r&&i&&(!r.previousUserEdit||i.revision!==r.previousUserEdit.revision),d=r&&n.get(c)===r.generation&&(e===r.registration||gt(t,r.immediateValue))&&!u?$(r.previousValue):t;o.set(l,{value:d,userEdit:i??{revision:0,value:$(d)}})}catch{}}),t.set(c,e),n.set(c,l),x({type:`registered`,identity:e.identity}),()=>{n.get(c)===l&&(t.delete(c),n.delete(c),r.delete(c),i.delete(c),a.delete(c),x({type:`unregistered`,identity:e.identity}))}},unregister(e){let o=st(e);t.delete(o)&&(n.delete(o),r.delete(o),i.delete(o),a.delete(o),x({type:`unregistered`,identity:e}))},recordUserEdit(e){let n=st(e),r=t.get(n);if(!r)return;let i=a.get(n);a.set(n,{revision:(i?.revision??0)+1,value:$(r.getValue?.())})},list(e){return[...t.values()].filter(t=>!e||t.identity.formId===e).map(S)},get(e){let n=t.get(st(e));return n?S(n):void 0},refresh(e){for(let n of t.values())e&&n.identity.formId!==e||x({type:`refreshed`,identity:n.identity})},async execute(a,o={source:`user`,confirmed:!0}){let s=a,c=u.get(o);if(c&&u.delete(o),!d.has(o))try{a=$(a)}catch{return rt(a)}let f=st(a.identity);if(ct(a.action)&&(m.get(f)??0)>0){let e=t.get(f);return C(a,!1,e,e&&pt(e)?`command_failed`:`reentrant_mutation`)}let p=!!(c&&c.command===s&>(c.snapshot,a)&&c.generation===n.get(f));if(ct(a.action)&&!d.has(o)){let e={...o};d.add(e);let t=a;return p&&u.set(e,{command:t,snapshot:$(t),generation:c?.generation}),await y(f,()=>this.execute(t,e))}let w=t.get(f);if(!w)return C(a,!1,void 0,`not_found`);let T=n.get(f);if(!T)return C(a,!1,void 0,`not_found`);let E=g(f,w),D=async(e,t)=>{await v(f,T,e)||await vt(E,e,t,e=>_(f,e))},O=pt(w)&&(a.action===`stage`||a.action===`apply`)?$({...a,value:void 0}):$(a),k={source:o.source,confirmed:o.confirmed,localGesture:p,actorId:o.actorId,sessionId:o.sessionId},A=e.policy;try{let e=S(w),t,s,c=a.action===`apply`||a.action===`clear`||a.action===`undo`?$(E.getUserEditSnapshot?.())??null:null,u=mt(a,k,e,k.localGesture===!0),d=u;if(u.allowed&&a.action===`stage`)for(let r=0;r<8;r+=1){if(s=$(w.getValue?.()),t=$(w.prepareValue?_(f,()=>w.prepareValue?.(a.value)):a.value),e=S(w),O=pt(w)?$({...a,value:void 0}):$({...a,value:t}),d=A?await _(f,t=>A($(O),$(k),$(e),t)):u,n.get(f)!==T)throw Error(`staged_value_stale`);if(u=mt(a,k,S(w),k.localGesture===!0),!u.allowed)throw Error(u.reason??`denied`);if(gt(s,w.getValue?.()))break;if(r===7)throw Error(`staged_value_stale`)}else u.allowed&&A&&(d=await _(f,t=>A($(O),$(k),$(e),t)));if(n.get(f)!==T||c&&_t(E,c))throw Error(`staged_value_stale`);let m=mt(a,k,S(w),k.localGesture===!0);if(!m.allowed)throw Error(m.reason??`denied`);if(!d.allowed){let e=pt(w)?yt(d.reason??`denied`):d.reason??`denied`,t=C(a,!1,w,e);return x({type:`command`,identity:a.identity,command:O,context:k,result:t}),t}if(!ft(w).includes(a.action)){let e=C(a,!1,w,`unsupported`);return x({type:`command`,identity:a.identity,command:O,context:k,result:e}),e}switch(a.action){case`focus`:o.source===`agent`?(await w.reveal?.(),await w.highlight?.()):await w.focus?.();break;case`reveal`:await w.reveal?.();break;case`highlight`:await w.highlight?.(a.durationMs);break;case`explain`:break;case`validate`:await _(f,e=>w.validate?.(e));break;case`stage`:h+=1;{let e=h,i=t,c={value:$(i),baseValue:$(s),provenance:{source:o.source,actorId:o.actorId,sessionId:o.sessionId},stagedAt:l(),revision:e},u=r.get(f);r.set(f,c);try{let e=await _(f,e=>bt(w,i,e));if(n.get(f)!==T||r.get(f)!==c)throw Error(`stale_revision`);let t={identity:$(w.identity),metadata:{...w.metadata,capabilities:ft(w)},state:{...w.getState?.(),valueRedacted:pt(w)}},o=mt(a,k,t,k.localGesture===!0);if(!o.allowed)throw Error(o.reason??`denied`);if(!ft(w).includes(`stage`))throw Error(`unsupported`);Object.assign(c,e);let s=S(w),l={ok:!0,action:a.action,identity:{...a.identity},snapshot:s};return x({type:`staged`,identity:a.identity,command:O,context:k,staged:s.state.staged}),x({type:`command`,identity:a.identity,command:O,context:k,result:l}),l}catch(e){throw r.get(f)===c&&(u?r.set(f,u):r.delete(f)),e}}case`apply`:{let e=r.get(f);if(a.revision!==void 0&&e?.revision!==a.revision)throw Error(`stale_revision`);if(e&&!gt(e.baseValue,w.getValue?.()))throw Error(`staged_value_stale`);let t=`value`in a&&a.value!==void 0,o=t&&e!==void 0&>(a.value,e.value),s=t&&e!==void 0&&a.reviewedValueIsCanonical===!0&&p,l=o?e.value:s?w.prepareReviewedValue?_(f,()=>w.prepareReviewedValue?.(a.value)):w.prepareValue?_(f,()=>w.prepareValue?.(a.value)):a.value:t?w.prepareValue?_(f,()=>w.prepareValue?.(a.value)):a.value:e?.value;if(l===void 0&&!e)throw Error(`no_staged_value`);let u=$(l),d=await _(f,e=>bt(w,u,e));if(n.get(f)!==T||c&&_t(E,c))throw Error(`staged_value_stale`);if(e&&(r.get(f)!==e||!gt(e.baseValue,w.getValue?.())))throw Error(`stale_revision`);if(d.valid===!1)throw e&&Object.assign(e,d),Error(pt(w)?`staged_value_invalid`:d.validationMessage??`staged_value_invalid`);let m=mt(a,k,S(w),k.localGesture===!0);if(!m.allowed)throw Error(m.reason??`denied`);let h=$(w.getValue?.()),g=i.get(f)??[],v=c;try{await b(f,w,T,h,v,e=>dt(w,$(u),e))}catch(e){try{await D(h,v)}catch{}throw e}if(n.get(f)!==T||_t(E,v))throw await D(h,v),Error(`staged_value_stale`);let y=$(w.getValue?.());if(!gt(y,u)){try{await D(h,v)}catch{}throw Error(`staged_value_rejected`)}try{let t=await _(f,e=>w.validate?.(e));if(n.get(f)!==T||_t(E,v)||!gt(w.getValue?.(),y))throw Error(`staged_value_stale`);if(t===!1)throw e&&(e.valid=!1,e.validationMessage=w.getState?.().validationMessage??`staged_value_invalid`),Error(`staged_value_invalid`)}catch(e){let t;try{t=w.getValue?.()}catch{}if(gt(t,y))try{await D(h,v)}catch{}throw e}g.push({previousValue:h,appliedValue:y}),i.set(f,g),(!e||r.get(f)===e)&&r.delete(f);break}case`discard`:{let e=r.get(f);if(!e)throw Error(`no_staged_value`);if(a.revision!==void 0&&e.revision!==a.revision)throw Error(`stale_revision`);r.delete(f);break}case`clear`:{let e=$(w.getValue?.()),t,a=c;try{let n=await b(f,w,T,e,a,e=>w.clear?w.clear(e):dt(w,``,e));t=n===!0||n!==!1&&void 0}catch(t){try{await D(e,a)}catch{}throw t}if(n.get(f)!==T||_t(E,a))throw await D(e,a),Error(`staged_value_stale`);let o=w.getValue?.();if(t===!1||t!==!0&>(o,e)&&e!==``&&e!=null&&e!==!1&&!(Array.isArray(e)&&e.length===0)){try{await D(e,a)}catch{}throw Error(`staged_value_rejected`)}let s=i.get(f)??[];s.push({previousValue:e,appliedValue:$(o)}),i.set(f,s),r.delete(f);break}case`undo`:{let e=i.get(f)??[];if(e.length===0)throw Error(`nothing_to_undo`);let t=e.at(-1);if(!t)throw Error(`nothing_to_undo`);let r=$(w.getValue?.()),a=$(t.previousValue),o=c;if(!gt(r,t.appliedValue))throw Error(`staged_value_stale`);try{await b(f,w,T,r,o,e=>dt(w,$(a),e))}catch(e){try{await D(r,o)}catch{}throw e}if(n.get(f)!==T||_t(E,o))throw await D(r,o),Error(`staged_value_stale`);if(!gt(w.getValue?.(),a)){try{await D(r,o)}catch{}throw Error(`staged_value_rejected`)}e.pop(),i.set(f,e);break}}let g=C(a,!0,w);return x({type:`command`,identity:a.identity,command:O,context:k,result:g}),g}catch(e){let t=e instanceof Error?e.message:`command_failed`,n=C(a,!1,w,pt(w)?yt(t):t);return x({type:`command`,identity:a.identity,command:O,context:k,result:n}),n}},async executeBatch(e,t={source:`user`,confirmed:!0}){let n=it(e);if(!n)return{ok:!1,results:e.map(rt)};let r;try{r=$(t)}catch{return{ok:!1,results:n.map(rt)}}let i=[];for(let e of n)i.push(await this.execute(e,r));return{ok:i.every(e=>e.ok),results:i}},subscribe(e){return c.add(e),()=>c.delete(e)}},T=async(r,i,a)=>{let o=nt(a),s=e.isLocalGesture??(()=>o?.isTrusted);if(!o||!s(a)||o.eventPhase===0||f.has(a))return{ok:!1,results:i.map(e=>C(e,!1,t.get(st(e.identity)),`local_gesture_required`))};f.add(a);let c=i.map(e=>n.get(st(e.identity))),l=[];for(let[e,t]of i.entries()){let n={source:`user`,confirmed:!0};u.set(n,{command:t,snapshot:$(t),generation:c[e]});try{l.push(await r.execute(t,n))}finally{u.delete(n)}}return{ok:l.every(e=>e.ok),results:l}};return Ze.set(w,T),Object.defineProperty(w,Qe,{value:T,enumerable:!0}),w}var St=null;function Ct(){if(typeof window>`u`)return null;let e=window;return e.AudioContext??e.webkitAudioContext??null}function wt(){if(St)return St;let e=Ct();if(!e)return null;try{St=new e}catch{St=null}return St}function Tt(){let e=wt();e&&e.state===`suspended`&&e.resume().catch(()=>void 0)}async function Et(e={}){let t=wt();if(!t)return!1;try{t.state===`suspended`&&await t.resume()}catch{return!1}if(t.state!==`running`)return!1;let n=Math.max(0,Math.min(1,e.volume??.12)),r=t.currentTime+.01;for(let[e,i]of[[660,0],[990,.1]]){let a=t.createOscillator(),o=t.createGain();a.type=`sine`,a.frequency.value=e,o.gain.setValueAtTime(0,r+i),o.gain.linearRampToValueAtTime(n,r+i+.01),o.gain.exponentialRampToValueAtTime(1e-4,r+i+.09),a.connect(o),o.connect(t.destination),a.start(r+i),a.stop(r+i+.1)}return!0}var Dt=l(`<span class="smrt-dictation-dot svelte-7xgg87" aria-hidden="true"></span>`),Ot=l(`<span class="smrt-dictation-writing svelte-7xgg87" aria-hidden="true"></span>`),kt=l(`<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="svelte-7xgg87"><rect x="9" y="2" width="6" height="12" rx="3" class="svelte-7xgg87"></rect><path d="M5 10a7 7 0 0 0 14 0" class="svelte-7xgg87"></path><path d="M12 17v4" class="svelte-7xgg87"></path></svg> <!> <!>`,1),At=l(`<span class="smrt-dictation-help svelte-7xgg87" data-smrt-component="DictationButton"> </span>`),jt=l(`<!> <!>`,1);function Mt(r,a){let o=B();m(a,!0);let s=C(a,`disabled`,3,!1),c=C(a,`class`,3,``),{t:l}=te(),d=n(()=>a.dictation.active),f=n(()=>a.dictation.handsFree),p=n(()=>e(d)&&e(f)&&a.dictation.suspended),h=n(()=>e(d)&&e(f)&&a.dictation.speaking&&!e(p)),g=n(()=>e(f)&&a.dictation.queued>0),v=n(()=>a.dictation.state===`transcribing`),y=n(()=>e(d)?a.stopLabel??l(Y[`ui.dictation.stop`]):a.label??l(Y[`ui.dictation.start`])),b=`smrt-dictation-help-${o}`,x=n(()=>e(d)?e(f)?e(p)?l(Y[`ui.dictation.paused_speaking`]):l(Y[`ui.dictation.listening_hands_free`]):e(y):a.title??l(a.dictation.wantsHandsFree?Y[`ui.dictation.start_hands_free`]:Y[`ui.dictation.start_hint`]));function S(){Tt(),a.dictation.unlock(),a.dictation.toggle()}var w=jt(),T=z(w);{let r=n(()=>`smrt-dictation-button${e(d)?` smrt-dictation-button--listening`:``}${e(d)&&e(f)?` smrt-dictation-button--hands-free`:``}${e(h)?` smrt-dictation-button--speaking`:``}${e(p)?` smrt-dictation-button--paused`:``} ${c()}`.trim()),i=n(()=>e(v)||void 0),o=n(()=>e(x)===e(y)?void 0:b),l=n(()=>s()||e(v)),u=n(()=>e(f)?`hands-free`:void 0),m=n(()=>e(h)||void 0),C=n(()=>e(p)||void 0),w=n(()=>e(h)?`--smrt-dictation-level: ${a.dictation.level}`:void 0);X(T,{type:`button`,variant:`ghost`,size:`sm`,get class(){return e(r)},get"aria-label"(){return e(y)},get"aria-pressed"(){return e(d)},get"aria-busy"(){return e(i)},get title(){return e(x)},get"aria-describedby"(){return e(o)},get disabled(){return e(l)},onclick:S,get"data-dictation-state"(){return a.dictation.state},get"data-dictation-mode"(){return e(u)},get"data-dictation-speaking"(){return e(m)},get"data-dictation-paused"(){return e(C)},get style(){return e(w)},children:(n,r)=>{var i=kt(),o=M(z(i),2),s=e=>{var t=Dt();_(e,t)};t(o,t=>{e(d)&&t(s)});var c=M(o,2),l=e=>{var t=Ot();_(e,t)};t(c,t=>{(e(g)||e(f)&&a.dictation.state===`transcribing`)&&t(l)}),_(n,i)},$$slots:{default:!0}})}var E=M(T,2),D=t=>{var n=At(),r=F(n,!0);H(()=>{W(n,`id`,b),u(r,e(x))}),_(t,n)};t(E,t=>{e(x)!==e(y)&&t(D)}),_(r,w),i()}var Nt=l(`<span class="smrt-dictation-status-interim svelte-321zm9"> </span>`),Pt=l(`<span class="smrt-dictation-status-dot svelte-321zm9" aria-hidden="true"></span> <!>`,1),Ft=l(`<span class="smrt-dictation-status-spinner svelte-321zm9" aria-hidden="true"></span> `,1),It=l(`<div data-smrt-component="DictationStatus"><p role="status" aria-live="polite"><!></p> <p role="alert"><!></p></div>`);function Lt(o,s){m(s,!0);let l=C(s,`sending`,3,!1),f=C(s,`class`,3,``),{t:p}=te(),h=n(()=>l()||s.dictation.state===`starting`||s.dictation.state===`listening`||s.dictation.state===`stopping`||s.dictation.state===`transcribing`),g=n(()=>!l()&&s.dictation.handsFree&&s.dictation.state===`listening`);function y(e){switch(e){case`unsupported`:return p(Y[`ui.dictation.unsupported`]);case`denied`:return p(Y[`ui.dictation.denied`]);case`no-speech`:return p(Y[`ui.dictation.no_speech`]);case`microphone`:return p(Y[`ui.dictation.microphone`]);case`interrupted`:return p(Y[`ui.dictation.interrupted`]);case`too-long`:return p(Y[`ui.dictation.too_long`]);case`not-transcribed`:return p(Y[`ui.dictation.not_transcribed`]);case`unavailable`:return p(Y[`ui.dictation.unavailable`]);case`model-missing`:return p(Y[`ui.dictation.model_missing`]);case`forbidden`:return p(Y[`ui.dictation.forbidden`]);default:return p(Y[`ui.dictation.failed`])}}var b=It(),x=O(b);let S;var w=O(x),T=e=>{var t=d();H(e=>u(t,e),[()=>p(Y[`ui.dictation.sending`])]),_(e,t)},E=e=>{var t=d();H(e=>u(t,e),[()=>p(Y[`ui.dictation.starting`])]),_(e,t)},D=e=>{var n=v(),r=z(n),i=e=>{var t=d();H(e=>u(t,e),[()=>p(Y[`ui.dictation.paused_speaking`])]),_(e,t)},a=e=>{var t=d();H(e=>u(t,e),[()=>p(Y[`ui.dictation.transcribing`])]),_(e,t)},o=e=>{var t=d();H(e=>u(t,e),[()=>p(Y[`ui.dictation.hearing`])]),_(e,t)},c=e=>{var t=d();H(e=>u(t,e),[()=>p(Y[`ui.dictation.listening_short`])]),_(e,t)};t(r,e=>{s.dictation.suspended?e(i):s.dictation.queued>0?e(a,1):s.dictation.speaking?e(o,2):e(c,-1)}),_(e,n)},k=e=>{var n=Pt(),r=M(z(n)),i=M(r),a=e=>{var t=Nt(),n=F(t);H(()=>u(n,`“${s.dictation.interim??``}”`)),_(e,t)};t(i,e=>{s.dictation.interim&&e(a)}),H(e=>u(r,` ${e??``} `),[()=>p(Y[`ui.dictation.listening`])]),_(e,n)},A=e=>{var t=Ft(),n=M(z(t));H(e=>u(n,` ${e??``}`),[()=>p(Y[`ui.dictation.transcribing`])]),_(e,t)};t(w,e=>{l()?e(T):s.dictation.state===`starting`?e(E,1):s.dictation.handsFree&&s.dictation.state===`listening`?e(D,2):s.dictation.state===`listening`||s.dictation.state===`stopping`?e(k,3):s.dictation.state===`transcribing`&&e(A,4)}),c(x);var j=M(x,2);let N;var P=O(j),I=e=>{var t=d();H(e=>u(t,e),[()=>y(s.dictation.errorKind)]),_(e,t)};t(P,e=>{s.dictation.state===`error`&&e(I)}),c(j),c(b),H(t=>{a(b,1,t,`svelte-321zm9`),S=a(x,1,`smrt-dictation-status-line svelte-321zm9`,null,S,{"smrt-dictation-status--empty":!e(h)||e(g)}),N=a(j,1,`smrt-dictation-status-error svelte-321zm9`,null,N,{"smrt-dictation-status--empty":s.dictation.state!==`error`}),W(j,`data-dictation-error`,s.dictation.state===`error`?s.dictation.errorCode??s.dictation.errorKind:void 0)},[()=>r(`smrt-dictation-status ${f()}`.trim())]),_(o,b),i()}var Rt=new Set([`unsupported`,`denied`,`no-speech`,`microphone`,`interrupted`,`too-long`,`not-transcribed`,`unavailable`,`model-missing`,`forbidden`,`failed`]),zt=new Set([`too-long`,`not-transcribed`,`unavailable`,`forbidden`,`no-speech`]),Bt={network:`unsupported`,"service-not-allowed":`unsupported`,"language-not-supported":`unsupported`,"not-allowed":`denied`,"no-speech":`no-speech`,"audio-capture":`microphone`,aborted:`interrupted`};function Vt(e){if(e instanceof Q)return e.code;let t=e??{};return typeof t.speechError==`string`?t.speechError:typeof t.error==`string`?t.error:typeof t.code==`string`?t.code:typeof t.name==`string`&&t.name!==`Error`?t.name:null}function Ht(e){let t=e?.dictationKind;if(typeof t==`string`&&Rt.has(t))return t;let n=e??{},r=typeof n.speechError==`string`?n.speechError:typeof n.error==`string`?n.error:``;if(r&&Bt[r])return Bt[r];let i=typeof n.code==`string`?n.code:``,a=typeof n.name==`string`?n.name:``,o=typeof n.message==`string`?n.message.toLowerCase():String(e??``).toLowerCase();return i===`PERMISSION_DENIED`||a===`PermissionDeniedError`||a===`NotAllowedError`||/not-allowed|service-not-allowed|permission denied/.test(o)?`denied`:i===`CAPABILITY_NOT_AVAILABLE`||i===`UNSUPPORTED_ADAPTER`||a===`CapabilityNotAvailableError`||a===`NotSupportedError`||/not available|not supported|unsupported/.test(o)?`unsupported`:a===`NotFoundError`||a===`NotReadableError`||a===`OverconstrainedError`||/audio capture|audio-capture/.test(o)?`microphone`:/no speech|no-speech/.test(o)?`no-speech`:/network/.test(o)?`unsupported`:/aborted/.test(o)?`interrupted`:`failed`}function Ut(){if(typeof document<`u`){let e=document.documentElement.getAttribute(`lang`);if(e)return e}return`en-US`}function Wt(e){console.warn(`[dictation] stopped (${e.kind}) at ${e.stage}`+(e.code?` [${e.code}]`:``)+`: ${e.message}`+(e.fallback===`recording`?` (recording instead)`:``))}var Gt=class{#e=T(`idle`);get state(){return e(this.#e)}set state(e){G(this.#e,e,!0)}#t=T(null);get errorKind(){return e(this.#t)}set errorKind(e){G(this.#t,e,!0)}#n=T(null);get errorCode(){return e(this.#n)}set errorCode(e){G(this.#n,e,!0)}#r=T(``);get interim(){return e(this.#r)}set interim(e){G(this.#r,e,!0)}#i=T(!1);get beepPending(){return e(this.#i)}set beepPending(e){G(this.#i,e,!0)}#a=T(!1);get recording(){return e(this.#a)}set recording(e){G(this.#a,e,!0)}#o=T(!1);get handsFree(){return e(this.#o)}set handsFree(e){G(this.#o,e,!0)}#s=T(!1);get speaking(){return e(this.#s)}set speaking(e){G(this.#s,e,!0)}#c=T(!1);get suspended(){return e(this.#c)}set suspended(e){G(this.#c,e,!0)}#l=!1;#u=T(0);get level(){return e(this.#u)}set level(e){G(this.#u,e,!0)}#d=T(0);get queued(){return e(this.#d)}set queued(e){G(this.#d,e,!0)}#f;#p=null;#m=null;#h=[];#g=0;#_=null;#v=!1;#y=!1;#b=0;#x=!1;#S=!1;#C=null;#w=!1;#T=null;#E=null;#D=null;#O=Promise.resolve();#k=!1;constructor(e){this.#f=e}get available(){return!!(this.#f.source||this.#f.transcribe)}get wantsHandsFree(){return this.#f.mode===`hands-free`&&!!this.#f.handsFreeCapture}get active(){return this.state===`starting`||this.state===`listening`}setOptions(e){this.#f={...this.#f,...e}}async start(){if(this.#v||this.active||this.state===`stopping`||this.state===`transcribing`)return;this.errorKind=null,this.errorCode=null,this.interim=``,this.#x=!1,this.#b=0,this.recording=!1,this.state=`starting`;let e=++this.#g,t=this.#f.source;if(this.#j()&&(this.#S||!t)){await this.#F(e);return}if(!t){this.#Q(`unsupported`,null,`No speech source`,`source`);return}let n;try{n=await this.#G(t)}catch(t){e===this.#g&&this.#N(t,`source`,e);return}if(!(e!==this.#g||this.#v)){if(this.#L(n))await this.#R(e,n);else{try{await this.#W()}catch(t){e===this.#g&&this.#X(t,`microphone`);return}if(!(e!==this.#g||this.#v||this.state!==`starting`)){try{await n.start({language:this.#A(),continuous:!0,interimResults:!0})}catch(t){e===this.#g&&this.#N(t,`start`,e);return}e!==this.#g||this.recording||!n.onStart&&this.state===`starting`&&this.#q()}}}}async stop(){if(!this.active)return;if(this.recording){await this.#I();return}if(this.handsFree){this.#B();return}this.state=`stopping`;let e=this.#g;this.#$(),this.#_=setTimeout(()=>{e===this.#g&&this.state===`stopping`&&this.#Y()},this.#p?.stopTimeoutMs??this.#f.stopTimeoutMs??1500);try{await this.#p?.stop()}catch{e===this.#g&&this.#Y()}}suspend(){this.#l=!0,this.handsFree&&!this.suspended&&(this.#D?.suspend?.(),this.suspended=!0,this.speaking=!1,this.level=0)}resume(){this.#l=!1,this.suspended&&=(this.#D?.resume?.(),!1)}async toggle(){this.active?await this.stop():await this.start()}clearError(){this.state===`error`&&(this.state=`idle`,this.errorKind=null,this.errorCode=null)}async unlock(){this.beepPending&&await this.#J()&&(this.beepPending=!1)}dispose(){this.#v=!0,this.#g++,this.#$(),this.active&&!this.recording&&!this.handsFree&&this.#p?.stop().catch(()=>void 0),this.#U(!0),this.#V(),this.#E?.abort(),this.#E=null;for(let e of this.#h)e();this.#h=[],this.state=`idle`,this.recording=!1,this.#H()}#A(){return this.#f.language??Ut()}#j(){return!!(this.#f.transcribe&&(this.#f.capture||we()))}#M(e,t){return!this.#j()||this.#x?!1:e===`unsupported`||e===`interrupted`&&t===`end`}#N(e,t,n){let r=Ht(e);this.#M(r,t)?(this.#Z(r,Vt(e),Kt(e),t,!0),this.#P(n)):this.#X(e,t)}async#P(e){this.#S=!0,this.interim=``,this.#$();let t=this.#p;this.recording=!0,t&&t.stop().catch(()=>void 0),await this.#F(e)}async#F(e){this.recording=!0;let t=this.#f.capture??Ee,n;try{n=t({maxDurationMs:this.#f.maxDurationMs,maxBytes:this.#f.maxBytes})}catch(t){e===this.#g&&this.#X(t,`record`);return}this.#U(!0),this.#C=n,this.#T=n.onLimit(()=>{e===this.#g&&this.state===`listening`&&this.#I()});try{await n.start(),this.#C===n&&(this.#w=!0)}catch(t){e===this.#g&&this.#C===n?(this.#U(!0),this.#X(t,`record`)):n.cancel();return}e!==this.#g||this.#v||this.#C!==n||!this.active?this.#C===n?this.#U(!0):n.cancel():this.state===`starting`&&this.#q()}async#I(){let e=this.#g,t=this.#C;if(!t||!this.#w){this.#U(!0),this.#g++,this.#Y();return}this.#U(!1),this.state=`transcribing`,this.interim=``,this.beepPending=!1;let n;try{n=await t.stop()}catch(t){e===this.#g&&this.#X(t,`record`);return}if(e!==this.#g||this.#v)return;if(n.audio.size===0){this.#Q(`no-speech`,null,`The recording is empty`,`record`);return}let r=this.#f.transcribe;if(!r){this.#Q(`unavailable`,null,`No transcribe function`,`transcribe`);return}let i=new AbortController;this.#E=i;let a=!1,o=setTimeout(()=>{a=!0,i.abort()},this.#f.transcribeTimeoutMs??6e4),s=``;try{let e=await r(n.audio,{mimeType:n.mimeType,language:this.#A(),durationMs:n.durationMs,signal:i.signal});s=(typeof e==`string`?e:e?.text??``).trim()}catch(t){if(e!==this.#g||this.#v)return;if(a)this.#Q(`not-transcribed`,`timeout`,`Writing the recording down took too long`,`transcribe`);else{let e=Ht(t);this.#Q(zt.has(e)?e:`not-transcribed`,Vt(t),Kt(t),`transcribe`)}return}finally{clearTimeout(o),this.#E===i&&(this.#E=null)}e!==this.#g||this.#v||(s?(this.#Y(),this.#f.onText(s)):this.#Q(`no-speech`,null,`Nothing was written down`,`transcribe`))}#L(e){return!!(this.#f.mode===`hands-free`&&this.#f.handsFreeCapture&&typeof e.transcribePcm==`function`)}async#R(e,t){let n=this.#f.handsFreeCapture;if(!n)return;try{await t.prepare?.()}catch(t){e===this.#g&&this.#X(t,`source`);return}if(e!==this.#g||this.#v)return;this.#H(),this.handsFree=!0;let r;try{r=n({vad:this.#f.vad,onUtterance:n=>{this.suspended||this.#z(e,t,n)},onSpeaking:t=>{e===this.#g&&this.handsFree&&!this.suspended&&(this.speaking=t)},onLevel:t=>{if(e!==this.#g||!this.handsFree)return;let n=Math.round(Math.min(1,Math.max(0,t))*20)/20;n!==this.level&&(this.level=n)},onError:t=>{e===this.#g&&this.#X(t,`hands-free`)}})}catch(t){e===this.#g&&this.#X(t,`hands-free`);return}this.#D=r,this.#l&&(r.suspend?.(),this.suspended=!0);try{await r.start()}catch(t){this.#D===r&&(this.#D=null),e===this.#g&&this.#X(t,`microphone`);return}e!==this.#g||this.#v||this.#D!==r||!this.active?(this.#D===r&&(this.#D=null),r.cancel()):this.state===`starting`&&this.#q()}#z(e,t,n){if(this.#v||e!==this.#g)return;this.queued+=1;let r=this.#A();this.#O=this.#O.then(async()=>{if(this.#v||e!==this.#g)return;let i=``;try{i=(await t.transcribePcm?.(n.pcm,{language:r})??``).trim()}catch(t){if(e===this.#g){let e=Ht(t);this.#Q(zt.has(e)?e:`not-transcribed`,Vt(t),Kt(t),`transcribe`)}return}this.#v||e!==this.#g||(this.queued=Math.max(0,this.queued-1),i&&!/^[[(].*[\])]$/.test(i)&&this.#f.onText(i),this.#k&&this.queued===0&&this.#Y())})}async whenSettled(){await this.#O}#B(){let e=this.#D;this.#D=null,this.speaking=!1,this.suspended=!1,this.level=0,this.beepPending=!1,e?.stop(),this.queued>0?(this.#k=!0,this.state=`transcribing`):this.#Y()}#V(){let e=this.#D;this.#D=null,e?.cancel()}#H(){this.handsFree=!1,this.suspended=!1,this.speaking=!1,this.level=0,this.queued=0,this.#k=!1,this.#O=Promise.resolve()}#U(e){this.#T?.(),this.#T=null,e&&this.#C?.cancel(),this.#C=null,this.#w=!1}async#W(){if(this.#y||this.#f.requestMicrophone===!1)return;let e=typeof navigator<`u`?navigator.mediaDevices:void 0;if(!e||typeof e.getUserMedia!=`function`)return;let t=await e.getUserMedia({audio:!0});for(let e of t.getTracks())e.stop();this.#y=!0}async#G(e){if(this.#p)return this.#p;this.#m??=Promise.resolve().then(e);try{let e=await this.#m;return this.#p||(this.#p=e,this.#K(e)),e}catch(e){throw this.#m=null,e}}#K(e){this.#h.push(e.onResult(e=>{if(!(this.#v||this.recording)&&(this.active||this.state===`stopping`)){if(this.#x=!0,e.isFinal){this.interim=``,this.#f.onInterim?.(``);let t=e.text.trim();t&&this.#f.onText(t)}else this.interim=e.text,this.#f.onInterim?.(e.text)}}),e.onError(e=>{this.#v||this.recording||this.state!==`idle`&&this.state!==`error`&&(this.state!==`stopping`||Ht(e)!==`interrupted`)&&(this.active?this.#N(e,`error`,this.#g):this.#X(e,`error`))}),e.onEnd(()=>{if(this.#v||this.recording||this.state===`error`||this.state===`idle`)return;if(this.state===`stopping`){this.#Y();return}let e=this.#f.earlyEndMs??1e3;if(this.state===`starting`||e>0&&!this.#x&&Date.now()-this.#b<e){let e=`Speech recognition ended straight away`;if(this.#M(`interrupted`,`end`)){this.#Z(`interrupted`,null,e,`end`,!0),this.#P(this.#g);return}this.#Q(`interrupted`,null,e,`end`)}else this.#Y()})),e.onStart&&this.#h.push(e.onStart(()=>{this.recording||(!this.#v&&this.state===`starting`?this.#q():(this.#v||this.state!==`listening`)&&e.stop().catch(()=>void 0))}))}#q(){this.state=`listening`,this.#b=Date.now(),this.#J().then(e=>{this.beepPending=!e&&this.state===`listening`})}async#J(){let e=this.#f.beep??!0;if(e===!1)return!0;try{return e===!0?await Et():!!await e()}catch{return!1}}#Y(){this.#$(),this.state=`idle`,this.interim=``,this.beepPending=!1,this.recording=!1,this.#H()}#X(e,t){this.#Q(Ht(e),Vt(e),Kt(e),t)}#Z(e,t,n,r,i=!1){let a=this.#f.log??Wt;try{a({kind:e,code:t,message:n,stage:r,...i?{fallback:`recording`}:{}})}catch{}}#Q(e,t,n,r){this.#$(),this.#U(!0),this.handsFree&&(this.#g++,this.#V()),this.#Z(e,t,n,r),this.errorKind=e,this.errorCode=t,this.state=`error`,this.interim=``,this.beepPending=!1,this.recording=!1,this.#H()}#$(){this.#_&&clearTimeout(this.#_),this.#_=null}};function Kt(e){return e instanceof Error?e.message:String(e??`unknown`)}b([`click`]);var qt=new Set([`$$slots`,`$$events`,`$$legacy`,`legend`,`description`,`error`,`stack`,`class`,`children`]),Jt=l(`<p class="description svelte-ptc7pm"> </p>`),Yt=l(`<p class="error svelte-ptc7pm" role="alert"> </p>`),Xt=l(`<fieldset><legend class="svelte-ptc7pm"> </legend><!><div><!></div><!></fieldset>`);function Zt(r,o){let l=B();m(o,!0);let d=C(o,`stack`,3,!1),f=C(o,`class`,3,``),p=R(o,qt),h=n(()=>o.description?`fieldset-${l}-description`:void 0),g=n(()=>o.error?`fieldset-${l}-error`:void 0);var v=Xt();k(v,e=>({class:`fieldset ${f()??``}`,"aria-describedby":e,...p,"data-smrt-component":`Fieldset`}),[()=>[e(h),e(g)].filter(Boolean).join(` `)||void 0],void 0,void 0,`svelte-ptc7pm`);var y=O(v),b=F(y,!0),x=M(y),S=t=>{var n=Jt(),r=F(n,!0);H(()=>{W(n,`id`,e(h)),u(r,o.description)}),_(t,n)};t(x,e=>{o.description&&e(S)});var w=M(x);let T;var E=O(w);s(E,()=>o.children),c(w);var D=M(w),A=t=>{var n=Yt(),r=F(n,!0);H(()=>{W(n,`id`,e(g)),u(r,o.error)}),_(t,n)};t(D,e=>{o.error&&e(A)}),c(v),H(()=>{u(b,o.legend),T=a(w,1,`content svelte-ptc7pm`,null,T,{"content--stack":d()})}),_(r,v),i()}var Qt=new Set([`$$slots`,`$$events`,`$$legacy`,`files`,`label`,`description`,`dropzone`,`id`,`name`,`accept`,`multiple`,`disabled`,`required`,`class`,`interaction`,`onchange`,`onchangefiles`]),$t=l(`<label data-smrt-component="FilePicker"><input/> <span class="label svelte-1q9rqbm"> </span><span class="description svelte-1q9rqbm"> </span></label>`);function en(t,r){let o=B();m(r,!0);let s=C(r,`files`,31,()=>A([])),l=C(r,`label`,3,`Choose files`),d=C(r,`description`,3,`Drop files here or browse`),f=C(r,`dropzone`,3,!1),p=C(r,`multiple`,3,!1),h=C(r,`disabled`,3,!1),g=C(r,`required`,3,!1),v=C(r,`class`,3,``),y=R(r,Qt),b=ve(),S=T(null),w=T(null),E=n(()=>r.id??`smrt-file-${o}`),j=n(()=>r.interaction===!1?void 0:r.interaction?.id??r.name??e(E)),N=T(!1);function P(t,n=!0){if(s(Array.from(t).slice(0,p()?void 0:1)),n&&e(S)&&typeof DataTransfer<`u`){let t=new DataTransfer;for(let e of s())t.items.add(e);e(S).files=t.files}r.onchangefiles?.(s())}function I(e){P(e.currentTarget.files??[],!1),r.onchange?.(e)}function L(e){e.preventDefault(),G(N,!1),!h()&&e.dataTransfer?.files&&P(e.dataTransfer.files)}function ee(){h()||e(S)?.click()}function z(){s([]),e(S)&&(e(S).value=``),r.onchangefiles?.([])}function V(){return e(S)}ue(()=>{let t=e(S),n=e(w);return!t||!n||r.interaction===!1?!1:{controlId:e(j),subject:r.interaction?.subject,metadata:{kind:`file`,label:l(),description:r.interaction?.description??d(),sensitivity:r.interaction?.sensitivity??`sensitive`,readable:!1,writable:!1,constraints:{required:g()===!0},capabilities:[`focus`,`reveal`,`highlight`,`explain`,`validate`]},focus:()=>t.focus(),reveal:()=>ye(n),highlight:e=>ae(n,e),validate:()=>t.reportValidity(),getState:()=>({disabled:t.matches(`:disabled`),valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});var U={open:ee,clear:z,getElement:V},K=$t();let q;var J=O(K);k(J,()=>({id:e(E),type:`file`,name:r.name,accept:r.accept,multiple:p(),disabled:h(),required:g(),onchange:I,...y}),void 0,void 0,void 0,`svelte-1q9rqbm`,!0),D(J,e=>G(S,e),()=>e(S));var Y=M(J,2),te=F(Y,!0),X=M(Y),ne=F(X,!0);return c(K),D(K,e=>G(w,e),()=>e(w)),H(()=>{W(K,`for`,e(E)),q=a(K,1,`file-picker ${v()??``}`,`svelte-1q9rqbm`,q,{dropzone:f(),dragging:e(N),disabled:h()}),W(K,`data-smrt-control`,e(j)),W(K,`data-smrt-form`,b?.formId),W(K,`data-smrt-subject-type`,r.interaction===!1?void 0:r.interaction?.subject?.type),W(K,`data-smrt-subject-id`,r.interaction===!1?void 0:r.interaction?.subject?.id),u(te,l()),u(ne,s().length?`${s().length} file${s().length===1?``:`s`} selected`:d())}),x(`dragenter`,K,e=>{e.preventDefault(),G(N,!0)}),x(`dragover`,K,e=>e.preventDefault()),x(`dragleave`,K,()=>G(N,!1)),x(`drop`,K,L),_(t,K),i(U)}var tn=l(`<span class="subject svelte-1wpxa95"> </span>`),nn=l(`<input type="checkbox" class="svelte-1wpxa95"/>`),rn=l(`<textarea class="svelte-1wpxa95"></textarea>`),an=l(`<input class="svelte-1wpxa95"/>`),on=l(`<p class="problem svelte-1wpxa95" role="alert"> </p>`),sn=l(`<li data-staged-review-item=""><div class="proposal-heading svelte-1wpxa95"><div><strong class="svelte-1wpxa95"> </strong><!></div> <span class="svelte-1wpxa95"> </span></div> <dl class="svelte-1wpxa95"><div><dt class="svelte-1wpxa95"> </dt><dd class="svelte-1wpxa95"> </dd></div> <div><dt class="svelte-1wpxa95"> </dt> <dd class="svelte-1wpxa95"><!></dd></div></dl> <!> <!> <!> <div class="item-actions svelte-1wpxa95"><button type="button" class="svelte-1wpxa95"> </button> <button type="button" class="secondary svelte-1wpxa95"> </button></div></li>`),cn=l(`<section class="staged-review svelte-1wpxa95" data-staged-control-review="" data-smrt-component="StagedControlReview"><header class="svelte-1wpxa95"><div><h2 class="svelte-1wpxa95"> </h2> <p class="svelte-1wpxa95"> </p></div> <div class="batch-actions svelte-1wpxa95"><button type="button" class="svelte-1wpxa95"> </button> <button type="button" class="secondary svelte-1wpxa95"> </button></div></header> <ul class="svelte-1wpxa95"></ul></section>`),ln=l(`<p class="status visually-hidden svelte-1wpxa95" role="status" aria-live="polite" aria-atomic="true" data-smrt-component="StagedControlReview"> </p>`),un=l(`<!> <!>`,1);function dn(r,o){m(o,!0);let{t:s}=te(),l=C(o,`formElement`,3,null),p=C(o,`summary`,3,!0),h=n(()=>({region:s(Y[`ui.staged_control_review.region`]),heading:s(Y[`ui.staged_control_review.heading`]),description:s(Y[`ui.staged_control_review.description`]),proposedBy:s(Y[`ui.staged_control_review.proposed_by`]),stagedAt:s(Y[`ui.staged_control_review.staged_at`]),before:s(Y[`ui.staged_control_review.before`]),after:s(Y[`ui.staged_control_review.after`]),redacted:s(Y[`ui.staged_control_review.redacted`]),stale:s(Y[`ui.staged_control_review.stale`]),invalid:s(Y[`ui.staged_control_review.invalid`]),apply:s(Y[`ui.staged_control_review.apply`]),discard:s(Y[`ui.staged_control_review.discard`]),applyAll:s(Y[`ui.staged_control_review.apply_all`]),discardAll:s(Y[`ui.staged_control_review.discard_all`]),edit:s(Y[`ui.staged_control_review.edit`]),appliedStatus:s(Y[`ui.staged_control_review.applied_status`]),discardedStatus:s(Y[`ui.staged_control_review.discarded_status`]),batchStatus:s(Y[`ui.staged_control_review.batch_status`]),...o.labels})),g=T(A([])),v=T(A({})),b=T(A({})),x=T(``),k=T(!1),j=T(null),N=e=>JSON.stringify([e.identity.formId,e.identity.controlId,e.identity.subject?.type??null,e.identity.subject?.id??null]),P=e=>JSON.stringify([N(e),e.state.staged?.revision??null]);function I(e){if(e===void 0)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function R(e){let t=e.metadata.label?.trim();if(t)return t;let n=e.identity.controlId.split(`/`).at(-1)??``,r=n.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[-_.:]+/g,` `).trim().toLowerCase();return r?r[0].toUpperCase()+r.slice(1):n}function ee(t){let n=R(t);if(e(g).filter(e=>R(e)===n).length<2)return n;let r=t.identity.subject;return`${n} ${r?.label?r.label:r?`${r.type}:${r.id}`:t.identity.controlId} [identity:${N(t)}]`}function B(){let t=o.registry.list(o.formId).filter(e=>e.state.staged!==void 0);t.length>0&&G(k,!0);let n={...L(()=>e(v))};for(let e of t){let t=P(e);!(t in n)&&!e.state.staged?.valueRedacted&&(n[t]=I(e.state.staged?.value))}let r=new Set(t.map(P));for(let e of Object.keys(n))r.has(e)||delete n[e];let i={...L(()=>e(b))};for(let e of Object.keys(i))r.has(e)||delete i[e];G(g,t,!0),G(v,n,!0),G(b,i,!0)}E(()=>(B(),o.registry.subscribe(()=>B()))),E(()=>{if(!l())return;let e=l(),t=()=>L(B),n=()=>queueMicrotask(B),r=t=>{let n=t.target;if(!(n instanceof Element))return;let r=n.closest(`button[type="reset"], input[type="reset"]`);if(!r||!e.contains(r))return;let i=o.registry.list(o.formId).filter(e=>e.state.staged).map(e=>({action:`discard`,identity:e.identity,revision:e.state.staged?.revision}));ot(o.registry,i,t)};return e.addEventListener(`input`,t),e.addEventListener(`change`,t),e.addEventListener(`reset`,n),e.addEventListener(`click`,r,!0),()=>{e.removeEventListener(`input`,t),e.removeEventListener(`change`,t),e.removeEventListener(`reset`,n),e.removeEventListener(`click`,r,!0)}}),E(()=>{let e=l(),t=e?.ownerDocument.defaultView?.MutationObserver;if(!e||!t)return;let n=new t(e=>{e.some(({target:e})=>e instanceof Element&&!e.closest(`[data-staged-control-review]`))&&o.registry.refresh?.(o.formId)});n.observe(e,{attributes:!0,subtree:!0,attributeFilter:[`disabled`,`readonly`]});for(let t=e.parentElement;t;t=t.parentElement)t instanceof HTMLFieldSetElement&&n.observe(t,{attributes:!0,attributeFilter:[`disabled`]});return()=>n.disconnect()}),E(()=>{if(!l())return;let t=new Set(e(g).map(e=>JSON.stringify([e.identity.controlId,e.identity.subject?.type??null,e.identity.subject?.id??null]))),n=l().querySelectorAll(`[data-smrt-control]`);return n.forEach(e=>{let n=JSON.stringify([e.dataset.smrtControl??``,e.dataset.smrtSubjectType??null,e.dataset.smrtSubjectId??null]);t.has(n)?e.dataset.smrtStaged=`true`:delete e.dataset.smrtStaged}),()=>{n.forEach(e=>{delete e.dataset.smrtStaged})}});function V(t){let n=t.state.staged;if(!n||n.valueRedacted)return n?.value;let r=e(v)[P(t)]??``,i=n.value;if(typeof i==`number`){if(r.trim().length===0)throw Error(`invalid_number`);let e=Number(r);if(!Number.isFinite(e))throw Error(`invalid_number`);return e}if(typeof i==`boolean`){if(r!==`true`&&r!==`false`)throw Error(`invalid_boolean`);return r===`true`}return i===null||typeof i==`object`&&i?JSON.parse(r):r}function q(t){return t===`staged_value_stale`||t===`stale_revision`?e(h).stale:e(h).invalid}function X(t,n){G(b,{...e(b),[P(t)]:n},!0)}function ne(t){let n=P(t);if(!(n in e(b)))return;let r={...e(b)};delete r[n],G(b,r,!0)}function re(e,t){let n=e.state.staged?.revision;return t===`discard`?{action:t,identity:e.identity,revision:n}:{action:t,identity:e.identity,revision:n,value:V(e),reviewedValueIsCanonical:!0}}function ie(e){return Array.from(l()?.querySelectorAll(`[data-smrt-control]`)??[]).find(t=>t.dataset.smrtControl===e.identity.controlId&&(t.dataset.smrtSubjectType??void 0)===e.identity.subject?.type&&(t.dataset.smrtSubjectId??void 0)===e.identity.subject?.id)}async function ae(t,n){let r=ie(t);await U();let i=async()=>{if((await o.registry.execute({action:`focus`,identity:t.identity},{source:`user`})).ok&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&l()?.contains(document.activeElement)===!0&&e(j)?.contains(document.activeElement)!==!0)return;let n=r&&!r.matches(`:disabled`)&&r.matches(`button, input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])`)?r:void 0,i=`button:not(:disabled), input:not([type="hidden"]):not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])`,a=[...n?[n]:[],...Array.from(r?.querySelectorAll(i)??[]),...Array.from(l()?.querySelectorAll(i)??[])];for(let e of a)if(e.focus(),document.activeElement===e||e.contains(document.activeElement))return};if(!o.registry.list(o.formId).some(e=>e.state.staged!==void 0)){await i();return}let a=e(j)?.querySelectorAll(`[data-staged-review-item]`),s=(a?.[Math.min(n,Math.max(0,a.length-1))])?.querySelector(`button:not(:disabled)`),c=e(j)?.querySelector(`.batch-actions button:not(:disabled)`);s??c?(s??c)?.focus():await i()}async function oe(t,n){let r=e(g).findIndex(e=>N(e)===N(t));try{let i=await at(o.registry,re(t,`apply`),n);G(x,i.ok?e(h).appliedStatus:q(i.reason),!0),i.ok?(ne(t),await ae(t,r)):X(t,q(i.reason))}catch{G(x,e(h).invalid,!0),X(t,e(h).invalid)}}async function se(t,n){let r=e(g).findIndex(e=>N(e)===N(t)),i=await at(o.registry,re(t,`discard`),n);G(x,i.ok?e(h).discardedStatus:q(i.reason),!0),i.ok?(ne(t),await ae(t,r)):X(t,q(i.reason))}async function ce(t){let n=e(g).length,r=[],i=[];for(let t of e(g))if(t.state.disabled||t.state.readonly||t.state.staged?.stale)X(t,t.state.staged?.stale?e(h).stale:e(h).invalid);else if(t.state.staged?.valid===!1)X(t,e(h).invalid);else try{r.push(re(t,`apply`)),i.push(t)}catch{X(t,e(h).invalid)}let a=await ot(o.registry,r,t),s=[];for(let[e,t]of a.results.entries()){let n=i[e];n&&(t.ok?(ne(n),s.push(n)):X(n,q(t.reason)))}let c=a.results.filter(e=>e.ok).length;G(x,e(h).batchStatus.replace(`{completed}`,String(c)).replace(`{total}`,String(n)),!0),s[0]&&await ae(s[0],0)}async function le(t){let n=e(g).length,r=[];for(let t of e(g))t.state.staged?.stale?X(t,e(h).stale):t.state.staged?.valid===!1?X(t,e(h).invalid):r.push(t);let i=await ot(o.registry,r.map(e=>re(e,`discard`)),t),a=[];for(let[e,t]of i.results.entries()){let n=r[e];n&&(t.ok?(ne(n),a.push(n)):X(n,q(t.reason)))}let s=i.results.filter(e=>e.ok).length;G(x,e(h).batchStatus.replace(`{completed}`,String(s)).replace(`{total}`,String(n)),!0),a[0]&&await ae(a[0],0)}var ue=un(),de=z(ue),fe=r=>{var i=cn(),o=O(i),s=O(o),l=O(s),p=F(l,!0),m=M(l,2),x=F(m,!0);c(s);var C=M(s,2),T=O(C),E=F(T,!0),k=M(T,2),A=F(k,!0);c(C),c(o);var L=M(o,2);f(L,21,()=>e(g),e=>N(e),(r,i)=>{let o=n(()=>e(i).state.staged),s=n(()=>R(e(i))),l=n(()=>ee(e(i)));var f=sn();let p;var m=O(f),g=O(m),x=O(g),C=F(x,!0),T=M(x),E=t=>{var n=tn(),r=F(n,!0);H(()=>u(r,e(i).identity.subject.label)),_(t,n)};t(T,t=>{e(i).identity.subject?.label&&t(E)}),c(g);var D=M(g,2),k=F(D);c(m);var A=M(m,2),j=O(A),N=O(j),L=F(N,!0),z=M(N),B=F(z,!0);c(j);var V=M(j,2),U=O(V),q=F(U,!0),Y=M(U,2),te=O(Y),X=t=>{var n=d();H(()=>u(n,e(h).redacted)),_(t,n)},ne=t=>{var n=nn();S(n),H(t=>{W(n,`aria-label`,`${e(h).edit} ${e(l)}`),J(n,t)},[()=>(e(v)[P(e(i))]??`false`)===`true`]),y(`change`,n,t=>{G(v,{...e(v),[P(e(i))]:String(t.currentTarget.checked)},!0)}),y(`keydown`,n,e=>{e.key===`Enter`&&e.preventDefault()}),_(t,n)},re=t=>{var n=rn();K(n),H(t=>{W(n,`aria-label`,`${e(h).edit} ${e(l)}`),w(n,t)},[()=>e(v)[P(e(i))]??``]),y(`input`,n,t=>{G(v,{...e(v),[P(e(i))]:t.currentTarget.value},!0)}),_(t,n)},ie=n(()=>typeof e(o)?.value==`string`&&e(o).value.includes(`
|
|
2
|
+
`)),ae=t=>{var n=an();S(n),H(t=>{W(n,`aria-label`,`${e(h).edit} ${e(l)}`),w(n,t)},[()=>e(v)[P(e(i))]??``]),y(`input`,n,t=>{G(v,{...e(v),[P(e(i))]:t.currentTarget.value},!0)}),y(`keydown`,n,e=>{e.key===`Enter`&&e.preventDefault()}),_(t,n)};t(te,t=>{e(o)?.valueRedacted?t(X):typeof e(o)?.value==`boolean`?t(ne,1):e(ie)?t(re,2):t(ae,-1)}),c(Y),c(V),c(A);var ce=M(A,2),le=t=>{var n=on(),r=F(n,!0);H(()=>u(r,e(h).stale)),_(t,n)};t(ce,t=>{e(o)?.stale&&t(le)});var ue=M(ce,2),de=t=>{var n=on(),r=F(n,!0);H(()=>u(r,e(h).invalid)),_(t,n)};t(ue,t=>{e(o)?.valid===!1&&t(de)});var fe=M(ue,2),pe=t=>{var n=on(),r=F(n,!0);H(e=>u(r,e),[()=>e(b)[P(e(i))]]),_(t,n)},Z=n(()=>e(b)[P(e(i))]);t(fe,t=>{e(Z)&&t(pe)});var me=M(fe,2),he=O(me),ge=F(he,!0),_e=M(he,2),ve=F(_e,!0);c(me),c(f),H((t,n)=>{p=a(f,1,`svelte-1wpxa95`,null,p,{stale:e(o)?.stale,invalid:e(o)?.valid===!1}),u(C,e(s)),u(k,`${e(h).proposedBy??``} ${e(o)?.provenance.actorId??e(o)?.provenance.source??``} · ${e(h).stagedAt??``} ${t??``}`),u(L,e(h).before),u(B,n),u(q,e(h).after),W(he,`aria-label`,`${e(h).apply} ${e(l)}`),he.disabled=e(o)?.stale||e(i).state.disabled||e(i).state.readonly,u(ge,e(h).apply),W(_e,`aria-label`,`${e(h).discard} ${e(l)}`),u(ve,e(h).discard)},[()=>e(o)?new Date(e(o).stagedAt).toLocaleString():``,()=>e(i).state.valueRedacted?e(h).redacted:I(e(i).state.value)]),y(`click`,he,t=>oe(e(i),t)),y(`click`,_e,t=>se(e(i),t)),_(r,f)}),c(L),c(i),D(i,e=>G(j,e),()=>e(j)),H(()=>{W(i,`aria-label`,e(h).region),u(p,e(h).heading),u(x,e(h).description),u(E,e(h).applyAll),u(A,e(h).discardAll)}),y(`click`,T,ce),y(`click`,k,le),_(r,i)};t(de,t=>{p()&&e(g).length>0&&t(fe)});var pe=M(de,2),Z=t=>{var n=ln(),r=F(n,!0);H(()=>u(r,e(x))),_(t,n)};t(pe,t=>{p()&&e(k)&&t(Z)}),_(r,ue),i()}b([`click`,`change`,`keydown`,`input`]);var fn=new Set([`$$slots`,`$$events`,`$$legacy`,`class`,`preventDefault`,`formId`,`interactionRegistry`,`oninteraction`,`stagedReview`,`id`,`name`,`onsubmit`,`onclick`,`oninput`,`onchange`,`children`]),pn=l(`<form><!> <!></form>`);function mn(t,r){let a=B();m(r,!0);let o=C(r,`class`,3,``),l=C(r,`preventDefault`,3,!0),u=C(r,`stagedReview`,3,!0),d=R(r,fn),f=`smrt-form-${a}`,p=xt(),h=n(()=>r.formId??r.id??r.name??f),g=n(()=>r.interactionRegistry??p),v=T(null);re({get formId(){return e(h)},get registry(){return e(g)}}),E(()=>{if(r.oninteraction)return e(g).subscribe(r.oninteraction)});function y(){return e(g)}function b(){return e(h)}function x(){return e(v)}function S(e){l()&&e.preventDefault(),r.onsubmit?.(e)}function w(t){if(!t.isTrusted)return;let n=t.target;if(!(n instanceof Element))return;let r=n.closest(`[data-smrt-control]`),i=r?.dataset.smrtControl;i&&e(g).recordUserEdit?.({formId:e(h),controlId:i,subject:r.dataset.smrtSubjectType&&r.dataset.smrtSubjectId?{type:r.dataset.smrtSubjectType,id:r.dataset.smrtSubjectId}:void 0})}function A(e){try{r.oninput?.(e)}finally{w(e)}}function j(e){try{r.onchange?.(e)}finally{w(e)}}var N={getInteractionRegistry:y,getFormId:b,getFormElement:x},P=pn();k(P,()=>({id:r.id,name:r.name,class:`form ${o()??``}`,"data-smrt-form":e(h),onsubmit:S,onclick:r.onclick,oninput:A,onchange:j,...d,"data-smrt-component":`Form`}));var F=O(P);return s(F,()=>r.children),dn(M(F,2),{get registry(){return e(g)},get formId(){return e(h)},get formElement(){return e(v)},get summary(){return u()}}),c(P),D(P,e=>G(v,e),()=>e(v)),_(t,P),i(N)}var hn=l(`<div role="group" data-form-action-bar="" data-testid="form-action-bar" data-smrt-component="FormActionBar"><!></div>`);function gn(e,t){m(t,!0);let n=C(t,`plain`,3,!1),{t:r}=te();var o=hn();let l;var u=O(o);s(u,()=>t.children),c(o),H(e=>{l=a(o,1,`form-action-bar svelte-1yzbc7r`,null,l,{plain:n()}),W(o,`aria-label`,e)},[()=>t.label??r(Y[`ui.form_action_bar.label`])]),_(e,o),i()}var _n=l(`<p class="form-hint svelte-1qtoaaj"> </p>`),vn=l(`<p class="form-error svelte-1qtoaaj" role="alert"> </p>`),yn=l(`<div class="form-group svelte-1qtoaaj" data-smrt-component="FormGroup"><!> <!> <!> <!></div>`);function bn(r,a){let o=B();m(a,!0);let l=C(a,`required`,3,!1),d=`smrt-field-${o}`,f=n(()=>a.id??d),p=n(()=>a.hint&&!a.error?`${e(f)}-hint`:void 0),h=n(()=>a.error?`${e(f)}-error`:void 0),g=n(()=>[e(p),e(h)].filter(Boolean).join(` `)||void 0);de(()=>({inputId:e(f),describedBy:e(g),invalid:!!a.error,label:a.label,description:a.hint,required:l(),error:a.error,interaction:a.interaction}));var v=yn(),y=O(v);Ae(y,{get for(){return e(f)},get label(){return a.label},get required(){return l()}});var b=M(y,2);s(b,()=>a.children);var x=M(b,2),S=t=>{var n=_n(),r=F(n,!0);H(()=>{W(n,`id`,e(p)),u(r,a.hint)}),_(t,n)};t(x,t=>{e(p)&&t(S)});var w=M(x,2),T=t=>{var n=vn(),r=F(n,!0);H(()=>{W(n,`id`,e(h)),u(r,a.error)}),_(t,n)};t(w,t=>{e(h)&&t(T)}),c(v),_(r,v),i()}b([`keydown`,`click`]),b([`click`,`keydown`]);var xn=Symbol(`smrt-radio-group`);function Sn(e){N(xn,e)}function Cn(){let e=o(xn);if(!e)throw Error(`<Radio> must be rendered inside <RadioGroup>.`);return e}var wn=new Set([`$$slots`,`$$events`,`$$legacy`,`value`,`label`,`disabled`,`id`,`onchange`]),Tn=l(`<label data-smrt-hit-target="" data-smrt-component="Radio"><input/> <span class="radio__mark svelte-1i18691" aria-hidden="true"></span><span class="radio__label svelte-1i18691"> </span></label>`);function En(t,r){let o=B();m(r,!0);let s=C(r,`disabled`,3,!1),l=R(r,wn),d=Cn(),f=n(()=>r.id??`smrt-radio-${o}`);E(()=>d.registerOption({value:r.value,label:r.label,disabled:s()}));function p(e){e.currentTarget.checked&&d.setValue(r.value),r.onchange?.(e)}var h=Tn();let g;var v=O(h);k(v,()=>({id:e(f),type:`radio`,name:d.name,value:r.value,disabled:s()||d.disabled,required:d.required,checked:d.value===r.value,onchange:p,...l}),void 0,void 0,void 0,`svelte-1i18691`,!0);var y=M(v,3),b=F(y,!0);c(h),H(()=>{g=a(h,1,`radio svelte-1i18691`,null,g,{disabled:s()||d.disabled}),u(b,r.label)}),_(t,h),i()}var Dn=l(`<span aria-hidden="true">*</span>`),On=l(`<legend class="svelte-1xvjki8"> <!></legend>`),kn=l(`<p class="description svelte-1xvjki8"> </p>`),An=l(`<p class="error svelte-1xvjki8" role="alert"> </p>`),jn=l(`<fieldset data-smrt-component="RadioGroup"><!> <!> <div class="options svelte-1xvjki8"><!></div> <!></fieldset>`);function Mn(r,o){m(o,!0);let l=C(o,`value`,15,``),d=C(o,`disabled`,3,!1),f=C(o,`required`,3,!1),p=C(o,`class`,3,``),h=ve(),g=T(null),v=T(A([]));function y(e){l(e),o.onvaluechange?.(e)}Sn({get name(){return o.name},get value(){return l()},get disabled(){return d()},get required(){return f()},setValue:y,registerOption(t){return L(()=>(G(v,[...e(v).filter(e=>e.value!==t.value),t],!0),()=>{L(()=>{G(v,e(v).filter(e=>e.value!==t.value),!0)})}))}});let b=n(()=>o.interaction===!1?void 0:o.interaction?.id??o.name);ue(()=>{let t=e(g);return!t||o.interaction===!1?!1:{controlId:e(b),subject:o.interaction?.subject,metadata:{kind:`radio-group`,label:o.label,description:o.interaction?.description??o.description,sensitivity:o.interaction?.sensitivity??`public`,readable:o.interaction?.readable,writable:o.interaction?.writable,constraints:{required:f()},options:e(v)},getValue:()=>l(),prepareValue:t=>String(fe(e(v),t)),setValue:t=>{let n=String(t);e(v).some(e=>String(e.value)===n&&!e.disabled)&&y(n)},clear:()=>(y(``),!0),focus:()=>t.querySelector(`input:not(:disabled)`)?.focus(),reveal:()=>ye(t),highlight:e=>ae(t,e),validate:()=>t.reportValidity(),validateValue:t=>he(e(v),t),getState:()=>({disabled:t.matches(`:disabled`),valid:!f()||!!l(),validationMessage:o.error})}});var x=jn(),S=O(x),w=e=>{var n=On(),r=O(n,!0),i=M(r),a=e=>{var t=Dn();_(e,t)};t(i,e=>{f()&&e(a)}),c(n),H(()=>u(r,o.label)),_(e,n)};t(S,e=>{o.label&&e(w)});var E=M(S,2),k=e=>{var t=kn(),n=F(t,!0);H(()=>{W(t,`id`,`${o.name}-description`),u(n,o.description)}),_(e,t)};t(E,e=>{o.description&&e(k)});var j=M(E,2),N=O(j);s(N,()=>o.children),c(j);var P=M(j,2),I=e=>{var t=An(),n=F(t,!0);H(()=>u(n,o.error)),_(e,t)};t(P,e=>{o.error&&e(I)}),c(x),D(x,e=>G(g,e),()=>e(g)),H(()=>{W(x,`data-density`,o.density),a(x,1,`radio-group ${p()??``}`,`svelte-1xvjki8`),x.disabled=d(),W(x,`aria-describedby`,o.description?`${o.name}-description`:void 0),W(x,`data-smrt-control`,e(b)),W(x,`data-smrt-form`,h?.formId),W(x,`data-smrt-subject-type`,o.interaction===!1?void 0:o.interaction?.subject?.type),W(x,`data-smrt-subject-id`,o.interaction===!1?void 0:o.interaction?.subject?.id)}),_(r,x),i()}b([`input`,`change`]);var Nn=l(`<span class="option-detail svelte-639852"> </span>`),Pn=l(`<span class="option-label svelte-639852"> </span> <!>`,1),Fn=l(`<p class="hint svelte-639852"> </p>`),In=l(`<p class="error svelte-639852" role="alert"> </p>`),Ln=l(`<div class="relation-input svelte-639852" data-smrt-component="RelationInput"><div class="field svelte-639852"><!> <!></div> <!> <!> <!></div>`);function Rn(r,a){let o=B();m(a,!0);let s=C(a,`value`,15,``),l=C(a,`required`,3,!1),f=C(a,`disabled`,3,!1),g=C(a,`debounceMs`,3,250),v=C(a,`loadingText`,3,`Searching…`),y=C(a,`emptyText`,3,`No matches`),b=C(a,`errorText`,3,`Search failed. Try again.`),x=C(a,`resultsText`,3,e=>`${e} ${e===1?`result`:`results`} available`),S=`${o}-error`,w=`${o}-hint`,k=ve(),j=T(null),N=T(A([])),P=T(!1),I=T(!1),R=T(``),ee=T(!1),V=``,U=``,K=0,q=``,J,Y=n(()=>e(N).map(e=>({value:e.id,label:e.label}))),te=n(()=>new Map(e(N).map(e=>[e.id,e.detail]))),ne=n(()=>e(P)?v():e(I)?b():e(N).length===0?y():x()(e(N).length)),re=n(()=>[a.error?S:``,a.description?w:``].filter(Boolean).join(` `)||void 0),ie=n(()=>a.interaction===!1?void 0:a.interaction?.id??a.name),ae=n(()=>!l()&&!f()&&s()!==``),oe=n(()=>a.createLabel??`New ${a.label.toLowerCase()}`);async function se(e){let t=++K;G(P,!0),G(I,!1);try{let n=await a.search(e);if(t!==K)return;G(N,n,!0)}catch(e){if(t!==K)return;G(N,[],!0),G(I,!0),console.warn(`[smrt-ui] RelationInput search failed`,{error:String(e)})}finally{t===K&&G(P,!1)}}function ce(e){clearTimeout(J),q=e,e===``?se(``):(K++,G(P,!0),G(I,!1),G(N,[],!0),J=setTimeout(()=>void se(e),g()))}function ue(t){q=``;let n=e(N).find(e=>e.id===t);n&&(G(R,n.label,!0),V=t),a.onchange?.(t)}function de(){e(j)?.querySelector(`input[role="combobox"]`)?.focus()}function fe(){e(ae)&&(s(``),G(R,``),V=``,q=``,a.onchange?.(``),le(k,e(ie),a.interaction===!1?void 0:a.interaction?.subject),e(j)&&be(e(j)),de())}async function pe(){if(!a.onCreate||e(ee)||f())return;let t=q;G(ee,!0);try{let n=await a.onCreate(t);n&&typeof n==`object`&&(G(N,[n,...e(N).filter(e=>e.id!==n.id)],!0),G(R,n.label,!0),V=n.id,s(n.id),a.onchange?.(n.id),le(k,e(ie),a.interaction===!1?void 0:a.interaction?.subject),e(j)&&be(e(j)))}catch(e){console.warn(`[smrt-ui] RelationInput onCreate failed`,{error:String(e)})}finally{G(ee,!1)}}E(()=>{let t=s(),n=e(N).find(e=>e.id===t);L(()=>{t?t!==V&&(n?(G(R,n.label,!0),V=t):(G(R,``),V=``,a.resolve&&U!==t&&(U=t,a.resolve(t).then(e=>{s()===t&&e&&(G(R,e.label,!0),V=t)}).catch(e=>{console.warn(`[smrt-ui] RelationInput resolve failed`,{error:String(e)})}).finally(()=>{U===t&&(U=``)})))):(G(R,``),V=``)})}),E(()=>()=>clearTimeout(J));var Z=Ln(),me=O(Z),he=O(me);{let r=(r,i=p)=>{var a=Pn(),o=z(a),s=F(o,!0),c=M(o,2),l=t=>{var n=Nn(),r=F(n,!0);H(e=>u(r,e),[()=>e(te).get(String(i().value))]),_(t,n)},d=n(()=>e(te).get(String(i().value)));t(c,t=>{e(d)&&t(l)}),H(()=>u(s,i().label)),_(r,a)},i=n(()=>!!a.error);Le(he,{get name(){return a.name},get label(){return a.label},get options(){return e(Y)},get placeholder(){return a.placeholder},get disabled(){return f()},get required(){return l()},get interaction(){return a.interaction},get status(){return e(ne)},get describedby(){return e(re)},get valueLabel(){return e(R)},filter:!1,get busy(){return e(P)},get invalid(){return e(i)},onquery:ce,onvaluechange:ue,get value(){return s()},set value(e){s(e)},optionContent:r,$$slots:{optionContent:!0}})}var ge=M(he,2),_e=t=>{{let r=n(()=>a.clearLabel??`Clear ${a.label}`);X(t,{variant:`ghost`,size:`sm`,class:`clear`,get"aria-label"(){return e(r)},onclick:fe,children:(e,t)=>{h();var n=d(`×`);_(e,n)},$$slots:{default:!0}})}};t(ge,t=>{e(ae)&&t(_e)}),c(me);var ye=M(me,2),xe=e=>{var t=Fn(),n=F(t,!0);H(()=>{W(t,`id`,w),u(n,a.description)}),_(e,t)};t(ye,e=>{a.description&&e(xe)});var Q=M(ye,2),Se=t=>{{let r=n(()=>f()||e(ee));X(t,{variant:`ghost`,size:`sm`,class:`create`,get disabled(){return e(r)},onclick:pe,children:(t,n)=>{h();var r=d();H(()=>u(r,`+ ${e(oe)??``}`)),_(t,r)},$$slots:{default:!0}})}};t(Q,e=>{a.onCreate&&e(Se)});var Ce=M(Q,2),we=e=>{var t=In(),n=F(t,!0);H(()=>{W(t,`id`,S),u(n,a.error)}),_(e,t)};t(Ce,e=>{a.error&&e(we)}),c(Z),D(Z,e=>G(j,e),()=>e(j)),_(r,Z),i()}var zn=l(`<button type="button" class="search-input__clear svelte-1gxducu"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button>`),Bn=l(`<div role="search" data-smrt-component="SearchInput"><label class="search-input__label svelte-1gxducu"> </label> <span class="search-input__icon svelte-1gxducu" aria-hidden="true"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"></circle><path d="m20 20-3.5-3.5"></path></svg></span> <!> <!></div>`);function Vn(n,r){let o=B();m(r,!0);let s=C(r,`placeholder`,3,`Search`),l=C(r,`label`,3,`Search`),d=C(r,`clearLabel`,3,`Clear search`),f=C(r,`debounceMs`,3,300),p=C(r,`name`,3,`q`),h=C(r,`class`,3,``),g=`smrt-search-${o}`,v=T(``),b=null,x=null;E(()=>{let e=r.value;x!==null&&e===x?x=null:(x=null,G(v,e,!0))});function S(e){return e.replace(/\s+/g,` `).trim()}function w(){b&&clearTimeout(b),b=null}function D(e){w();let t=S(e);if(t===S(r.value))return;x=t;let n=()=>{x===t&&(x=null)};try{Promise.resolve(r.onsearch(t)).catch(n)}catch{n()}}function k(){w(),b=setTimeout(()=>D(e(v)),f())}function A(t){t.key!==`Enter`||t.isComposing||(t.preventDefault(),D(e(v)))}function j(){G(v,``),D(``),document.getElementById(g)?.focus()}I(w);var N=Bn(),P=O(N),L=F(P,!0),R=M(P,4);Z(R,{get id(){return g},type:`search`,get name(){return p()},get placeholder(){return s()},enterkeyhint:`search`,autocomplete:`off`,class:`search-input__field`,oninput:k,onkeydown:A,get value(){return e(v)},set value(e){G(v,e,!0)}});var ee=M(R,2),z=e=>{var t=zn();H(()=>W(t,`aria-label`,d())),y(`click`,t,j),_(e,t)};t(ee,t=>{e(v)&&t(z)}),c(N),H(()=>{a(N,1,`search-input ${h()??``}`,`svelte-1gxducu`),W(P,`for`,g),u(L,l())}),_(n,N),i()}b([`click`]),b([`pointerdown`,`pointermove`,`pointerup`,`click`]),b([`change`]);var Hn=new Set([`$$slots`,`$$events`,`$$legacy`,`checked`,`label`,`labelPosition`,`size`,`id`,`name`,`value`,`disabled`,`required`,`class`,`interaction`,`onchange`,`aria-label`,`density`]),Un=l(`<span class="smrt-switch__label svelte-1kh2dfy" data-smrt-part="label"> </span>`),Wn=l(`<label data-smrt-hit-target="" data-smrt-component="Switch"><!> <span class="smrt-switch__control svelte-1kh2dfy" data-smrt-part="control"><input/> <span class="smrt-switch__track svelte-1kh2dfy" data-smrt-part="track" aria-hidden="true"><span class="smrt-switch__thumb svelte-1kh2dfy" data-smrt-part="thumb"></span></span></span> <!></label>`);function Gn(r,o){let s=B();m(o,!0);let l=C(o,`checked`,15,!1),d=C(o,`labelPosition`,3,`right`),f=C(o,`size`,3,`md`),p=C(o,`disabled`,3,!1),g=C(o,`required`,3,!1),v=C(o,`class`,3,``),y=R(o,Hn),b=ie(),x=ve(),S=T(null),w=n(()=>o.id??b?.().inputId??`smrt-switch-${s}`),E=n(()=>{let e=b?.().interaction;return o.interaction===!1||e===!1?!1:{...e??{},...o.interaction??{}}}),A=n(()=>e(E)===!1?void 0:e(E).id??o.name??e(w));function j(t){l(me(t)),e(S)&&be(e(S))}function N(e){l(e.currentTarget.checked),o.onchange?.(e)}ue(()=>{let t=e(S),n=e(E);return!t||n===!1?!1:{controlId:e(A),subject:n.subject,metadata:{kind:`switch`,label:b?.().label??o.label??o[`aria-label`]??void 0,description:n.description??b?.().description,sensitivity:n.sensitivity??`public`,readable:n.readable,writable:n.writable,constraints:{required:g()===!0}},getValue:()=>l(),prepareValue:oe,setValue:j,clear:()=>(j(!1),!0),focus:()=>t.focus(),reveal:()=>ye(t),highlight:e=>ae(t.closest(`label`)??t,e),validate:()=>t.reportValidity(),validateValue:e=>se(t,e),getState:()=>({disabled:t.matches(`:disabled`),valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});var P=Wn();let I;var L=O(P),ee=e=>{var t=Un(),n=F(t,!0);H(()=>u(n,o.label)),_(e,t)};t(L,e=>{o.label&&d()===`left`&&e(ee)});var z=M(L,2),V=O(z);k(V,(t,n,r)=>({id:e(w),type:`checkbox`,role:`switch`,name:o.name,value:o.value,disabled:p(),required:g(),checked:l(),"aria-label":t,"aria-describedby":n,"aria-invalid":r,onchange:N,...y,"data-smrt-part":`input`}),[()=>o[`aria-label`]??o.label??b?.().label,()=>b?.().describedBy,()=>b?.().invalid?`true`:void 0],void 0,void 0,`svelte-1kh2dfy`,!0),D(V,e=>G(S,e),()=>e(S)),h(2),c(z);var U=M(z,2),K=e=>{var t=Un(),n=F(t,!0);H(()=>u(n,o.label)),_(e,t)};t(U,e=>{o.label&&d()===`right`&&e(K)}),c(P),H(()=>{W(P,`data-density`,o.density),I=a(P,1,`smrt-switch__root smrt-switch__${f()??``} ${v()??``}`,`svelte-1kh2dfy`,I,{"smrt-switch__disabled":p()}),W(P,`data-smrt-control`,e(A)),W(P,`data-smrt-form`,x?.formId),W(P,`data-smrt-subject-type`,e(E)===!1?void 0:e(E).subject?.type),W(P,`data-smrt-subject-id`,e(E)===!1?void 0:e(E).subject?.id)}),_(r,P),i()}var Kn=l(`<span class="tag svelte-dpy1rl"> <button type="button" class="svelte-dpy1rl">×</button><input type="hidden"/></span>`),qn=l(`<div data-smrt-component="TagsInput"><label class="svelte-dpy1rl"> </label><div class="tags svelte-dpy1rl"><!> <input class="svelte-dpy1rl"/></div></div>`);function Jn(t,r){let o=B();m(r,!0);let s=C(r,`values`,31,()=>A([])),l=C(r,`placeholder`,3,`Add a tag`),d=C(r,`disabled`,3,!1),p=C(r,`allowDuplicates`,3,!1),h=C(r,`class`,3,``),v=`smrt-tags-${o}`,b=ve(),E=T(null),k=T(null),j=T(``),N=n(()=>r.interaction===!1?void 0:r.interaction?.id??r.name??v);function P(t){let n=t.trim();!n||d()||r.maxTags!==void 0&&s().length>=r.maxTags||!p()&&s().includes(n)||(s([...s(),n]),G(j,``),r.onvalueschange?.(s()),le(b,e(N),r.interaction===!1?void 0:r.interaction?.subject),e(E)&&be(e(E)))}function I(t){t<0||t>=s().length||(s(s().filter((e,n)=>n!==t)),r.onvalueschange?.(s()),le(b,e(N),r.interaction===!1?void 0:r.interaction?.subject),e(E)&&be(e(E)))}function L(e){if(!Array.isArray(e))return;let t=e.map(String).filter((e,t,n)=>p()||n.indexOf(e)===t);s(r.maxTags===void 0?t:t.slice(0,r.maxTags)),r.onvalueschange?.(s())}function R(t){t.key===`Enter`||t.key===`,`?(t.preventDefault(),P(e(j))):t.key===`Backspace`&&!e(j)&&s().length&&I(s().length-1)}ue(()=>{let t=e(E),n=e(k);return!t||!n||r.interaction===!1?!1:{controlId:e(N),subject:r.interaction?.subject,metadata:{kind:`tags-input`,label:r.label,description:r.interaction?.description,sensitivity:r.interaction?.sensitivity??`public`,readable:r.interaction?.readable,writable:r.interaction?.writable},getValue:()=>[...s()],setValue:L,clear:()=>(L([]),!0),focus:()=>n.focus(),reveal:()=>ye(t),highlight:e=>ae(t,e),validateValue:e=>pe(e,r.maxTags,p()),getState:()=>({disabled:n.matches(`:disabled`)})}});var z=qn(),V=O(z),U=F(V,!0),K=M(V),q=O(K);f(q,17,s,g,(t,n,i)=>{var a=Kn(),o=O(a,!0),s=M(o),l=M(s);S(l),c(a),H(()=>{u(o,e(n)),s.disabled=d(),W(s,`aria-label`,`Remove ${e(n)}`),W(l,`name`,r.name?`${r.name}[]`:void 0),w(l,e(n))}),y(`click`,s,()=>I(i)),_(t,a)});var J=M(q,2);S(J),D(J,e=>G(k,e),()=>e(k)),c(K),D(K,e=>G(E,e),()=>e(E)),c(z),H(()=>{a(z,1,`tags-field ${h()??``}`,`svelte-dpy1rl`),W(V,`for`,v),u(U,r.label),W(K,`data-smrt-control`,e(N)),W(K,`data-smrt-form`,b?.formId),W(K,`data-smrt-subject-type`,r.interaction===!1?void 0:r.interaction?.subject?.type),W(K,`data-smrt-subject-id`,r.interaction===!1?void 0:r.interaction?.subject?.id),W(J,`id`,v),W(J,`placeholder`,l()),J.disabled=d()}),y(`keydown`,J,R),x(`blur`,J,()=>P(e(j))),ee(J,()=>e(j),e=>G(j,e)),_(t,z),i()}b([`click`,`keydown`]);var Yn=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`value`,`placeholder`,`disabled`,`readonly`,`required`,`name`,`rows`,`class`,`interaction`,`aria-label`,`aria-describedby`,`aria-invalid`,`density`]),Xn=l(`<textarea></textarea>`);function Zn(t,r){m(r,!0);let a=C(r,`value`,15,``),o=C(r,`disabled`,3,!1),s=C(r,`readonly`,3,!1),c=C(r,`required`,3,!1),l=C(r,`rows`,3,4),u=C(r,`class`,3,``),d=R(r,Yn),f=ie(),p=ve(),h=T(null),g=n(()=>r.id??f?.().inputId),v=n(()=>r[`aria-describedby`]??f?.().describedBy),y=n(()=>r[`aria-invalid`]??(f?.().invalid?`true`:void 0)),b=n(()=>{let e=f?.().interaction;return r.interaction===!1||e===!1?!1:{...e??{},...r.interaction??{}}}),x=n(()=>e(b)===!1?void 0:e(b).id??r.name??e(g));function S(t){a(String(t??``)),e(h)&&be(e(h))}ue(()=>{let t=e(h),n=e(x),i=e(b);return!t||!n||i===!1?!1:{controlId:n,subject:i.subject,metadata:{kind:`textarea`,label:f?.().label??r[`aria-label`]??void 0,description:i.description??f?.().description,sensitivity:i.sensitivity??`public`,readable:i.readable,writable:i.writable,constraints:{required:c()===!0,minLength:t.minLength>=0?t.minLength:void 0,maxLength:t.maxLength>=0?t.maxLength:void 0}},getValue:()=>a(),prepareValue:_e,setValue:S,clear:()=>(S(``),!0),focus:()=>t.focus(),reveal:()=>ye(t),highlight:e=>ae(t,e),validate:()=>t.reportValidity(),validateValue:e=>ce(t,e),getState:()=>({disabled:t.matches(`:disabled`),readonly:t.readOnly,valid:t.validity.valid,validationMessage:t.validationMessage||void 0})}});function w(){e(h)?.focus()}function E(){return e(h)}var O={focus:w,getElement:E},A=Xn();return K(A),k(A,()=>({id:e(g),placeholder:r.placeholder,disabled:o(),readonly:s(),required:c(),name:r.name,"aria-label":r[`aria-label`],rows:l(),"aria-describedby":e(v),"aria-invalid":e(y),"data-density":r.density,class:`textarea ${u()??``}`,"data-smrt-control":e(x),"data-smrt-form":p?.formId,"data-smrt-subject-type":e(b)===!1?void 0:e(b).subject?.type,"data-smrt-subject-id":e(b)===!1?void 0:e(b).subject?.id,...d,"data-smrt-component":`Textarea`}),void 0,void 0,void 0,`svelte-5xfgxc`),D(A,e=>G(h,e),()=>e(h)),ee(A,a),_(t,A),i(O)}b([`change`]);var Qn=new Set([`$$slots`,`$$events`,`$$legacy`,`pressed`,`id`,`name`,`disabled`,`class`,`interaction`,`children`,`onclick`,`aria-label`]),$n=l(`<button><!></button>`);function er(t,r){let a=B();m(r,!0);let o=C(r,`pressed`,15,!1),l=C(r,`disabled`,3,!1),u=C(r,`class`,3,``),d=R(r,Qn),f=ve(),h=T(null),g=n(()=>r.id??`smrt-toggle-button-${a}`),v=n(()=>r.interaction===!1?void 0:r.interaction?.id??r.name??e(g));function y(t){o(!!t),e(h)&&be(e(h))}function b(t){o(!o()),le(f,e(v),r.interaction===!1?void 0:r.interaction?.subject),e(h)&&be(e(h)),r.onclick?.(t)}ue(()=>{let t=e(h);return!t||r.interaction===!1?!1:{controlId:e(v),subject:r.interaction?.subject,metadata:{kind:`toggle-button`,label:r[`aria-label`]??(t.textContent?.trim()||void 0),description:r.interaction?.description,sensitivity:r.interaction?.sensitivity??`public`,readable:r.interaction?.readable,writable:r.interaction?.writable},getValue:()=>o(),prepareValue:oe,setValue:y,clear:()=>(y(!1),!0),focus:()=>t.focus(),reveal:()=>ye(t),highlight:e=>ae(t,e),validateValue:e=>typeof e==`boolean`,getState:()=>({disabled:t.matches(`:disabled`)})}});var x=$n();k(x,()=>({id:e(g),type:`button`,name:r.name,disabled:l(),class:`toggle-button ${u()??``}`,"aria-pressed":o(),"aria-label":r[`aria-label`],"data-smrt-control":e(v),"data-smrt-form":f?.formId,"data-smrt-subject-type":r.interaction===!1?void 0:r.interaction?.subject?.type,"data-smrt-subject-id":r.interaction===!1?void 0:r.interaction?.subject?.id,onclick:b,...d,"data-smrt-component":`ToggleButton`,[j]:{pressed:o()}}),void 0,void 0,void 0,`svelte-1ihepq`);var S=O(x);s(S,()=>r.children??p),c(x),D(x,e=>G(h,e),()=>e(h)),_(t,x),i()}export{Ee as S,Tt as _,Vn as a,Be as b,En as c,mn as d,en as f,Mt as g,Lt as h,Gn as i,bn as l,Gt as m,Zn as n,Rn as o,Zt as p,Jn as r,Mn as s,er as t,gn as u,xt as v,Ae as x,Xe as y};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./JqlEoPqZ.js","./DG3qFFTE.js","./COiEfhsA.js","./xihTtKlq.js","./D3lXu_rt.js","./YUSKx8_q.js","./DK8Blf1Y.js","../assets/currency-metadata.ksbBA8-C.css","../assets/app.BHwMQ9Zv.css","./ICDFUCZL.js","./Bv5jGtB8.js","../assets/feedback.qFktqYFY.css","./BeL8dJx9.js","./uBIymjUX.js","./DF-0MxNw.js","../assets/SegmentedControl.DMqHG5fn.css","./DIE02RSm.js","../assets/webmcp-ui-context.hO24Ni5w.css","./DfN2k_EX.js","../assets/data.CVlX_W0i.css","./CUyVrfsu.js","./CsaWd8kG.js","../assets/forms.BRdbPdvs.css","./BYcBM-fh.js","../assets/AppShell.BkKNrxND.css","./BQLQsso4.js","../assets/workspace.C40zM0Mb.css","./DmHVTNcC.js","./lUJaueNM.js","../assets/state.C0UZEhxS.css","../assets/labels.Dxa6EyRI.css","./CdKHckEF.js","./FeyhlLIZ.js","./DIgo5ngo.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"./D3lXu_rt.js";import{g as ee}from"./BeL8dJx9.js";import"./DF-0MxNw.js";import"./DIE02RSm.js";import{u as b}from"./DfN2k_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"./DmHVTNcC.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"./lUJaueNM.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(`./JqlEoPqZ.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};
|